From c16b144d2ba0ef1f35f93740853a2a8f90e139a3 Mon Sep 17 00:00:00 2001 From: milesj Date: Mon, 30 Oct 2023 17:08:27 +0000 Subject: [PATCH] deploy: f92ac8b02a388bc582201c68359923e009a4914d --- 404.html | 8 +++--- api.html | 8 +++--- api/report.html | 8 +++--- api/report/function/formatDuration.html | 8 +++--- api/report/function/formatTime.html | 8 +++--- api/report/function/getDurationInMillis.html | 8 +++--- api/report/function/getIconForStatus.html | 8 +++--- api/report/function/hasFailed.html | 8 +++--- api/report/function/hasPassed.html | 8 +++--- api/report/function/isFlaky.html | 8 +++--- api/report/function/isSlow.html | 8 +++--- api/report/function/prepareReportActions.html | 8 +++--- api/report/function/sortReport.html | 8 +++--- api/report/interface/PreparedAction.html | 8 +++--- api/runtime.html | 8 +++--- api/runtime/function/getContext.html | 8 +++--- api/runtime/interface/RuntimeContext.html | 8 +++--- api/types.html | 8 +++--- api/types/interface/Action.html | 8 +++--- api/types/interface/ActionContext.html | 8 +++--- .../interface/ActionNodeInstallDeps.html | 8 +++--- .../ActionNodeInstallProjectDeps.html | 8 +++--- api/types/interface/ActionNodeRunTask.html | 8 +++--- api/types/interface/ActionNodeSetupTool.html | 8 +++--- .../interface/ActionNodeSyncProject.html | 8 +++--- .../interface/ActionNodeSyncWorkspace.html | 8 +++--- api/types/interface/Attempt.html | 8 +++--- api/types/interface/BinConfig.html | 8 +++--- api/types/interface/BunpmConfig.html | 8 +++--- api/types/interface/CodeownersConfig.html | 8 +++--- api/types/interface/ConstraintsConfig.html | 8 +++--- api/types/interface/DenoConfig.html | 8 +++--- api/types/interface/DependencyConfig.html | 8 +++--- api/types/interface/Duration.html | 8 +++--- api/types/interface/EventActionFinished.html | 8 +++--- api/types/interface/EventActionStarted.html | 8 +++--- .../interface/EventDependenciesInstalled.html | 8 +++--- .../EventDependenciesInstalling.html | 8 +++--- api/types/interface/EventPipelineAborted.html | 8 +++--- .../interface/EventPipelineFinished.html | 8 +++--- api/types/interface/EventPipelineStarted.html | 8 +++--- api/types/interface/EventProjectSynced.html | 8 +++--- api/types/interface/EventProjectSyncing.html | 8 +++--- .../interface/EventTargetOutputArchived.html | 8 +++--- .../interface/EventTargetOutputArchiving.html | 8 +++--- .../EventTargetOutputCacheCheck.html | 8 +++--- .../interface/EventTargetOutputHydrated.html | 8 +++--- .../interface/EventTargetOutputHydrating.html | 8 +++--- api/types/interface/EventTargetRan.html | 8 +++--- api/types/interface/EventTargetRunning.html | 8 +++--- api/types/interface/EventToolInstalled.html | 8 +++--- api/types/interface/EventToolInstalling.html | 8 +++--- api/types/interface/EventWorkspaceSynced.html | 8 +++--- api/types/interface/ExperimentsConfig.html | 8 +++--- api/types/interface/FileGroup.html | 8 +++--- api/types/interface/GeneratorConfig.html | 8 +++--- api/types/interface/HasherConfig.html | 8 +++--- api/types/interface/InheritedTasksConfig.html | 8 +++--- api/types/interface/NodeConfig.html | 8 +++--- api/types/interface/NotifierConfig.html | 8 +++--- api/types/interface/NpmConfig.html | 8 +++--- api/types/interface/OwnersConfig.html | 8 +++--- api/types/interface/PartialBinConfig.html | 8 +++--- api/types/interface/PartialBunpmConfig.html | 8 +++--- .../interface/PartialCodeownersConfig.html | 8 +++--- .../interface/PartialConstraintsConfig.html | 8 +++--- api/types/interface/PartialDenoConfig.html | 8 +++--- .../interface/PartialDependencyConfig.html | 8 +++--- .../interface/PartialExperimentsConfig.html | 8 +++--- .../interface/PartialGeneratorConfig.html | 8 +++--- api/types/interface/PartialHasherConfig.html | 8 +++--- .../PartialInheritedTasksConfig.html | 8 +++--- api/types/interface/PartialNodeConfig.html | 8 +++--- .../interface/PartialNotifierConfig.html | 8 +++--- api/types/interface/PartialNpmConfig.html | 8 +++--- api/types/interface/PartialOwnersConfig.html | 8 +++--- api/types/interface/PartialPnpmConfig.html | 8 +++--- api/types/interface/PartialProjectConfig.html | 8 +++--- .../PartialProjectMetadataConfig.html | 8 +++--- ...rtialProjectToolchainCommonToolConfig.html | 8 +++--- .../PartialProjectToolchainConfig.html | 8 +++--- ...rtialProjectToolchainTypeScriptConfig.html | 8 +++--- .../PartialProjectWorkspaceConfig.html | 8 +++--- ...lProjectWorkspaceInheritedTasksConfig.html | 8 +++--- api/types/interface/PartialRunnerConfig.html | 8 +++--- api/types/interface/PartialRustConfig.html | 8 +++--- api/types/interface/PartialTaskConfig.html | 8 +++--- .../interface/PartialTaskOptionsConfig.html | 8 +++--- .../interface/PartialTemplateConfig.html | 8 +++--- .../PartialTemplateFrontmatterConfig.html | 8 +++--- .../PartialTemplateVariableBoolSetting.html | 8 +++--- .../PartialTemplateVariableEnumSetting.html | 8 +++--- ...artialTemplateVariableEnumValueConfig.html | 8 +++--- .../PartialTemplateVariableNumberSetting.html | 8 +++--- .../PartialTemplateVariableStringSetting.html | 8 +++--- .../interface/PartialToolchainConfig.html | 8 +++--- .../interface/PartialTypeScriptConfig.html | 8 +++--- api/types/interface/PartialVcsConfig.html | 8 +++--- .../interface/PartialWorkspaceConfig.html | 8 +++--- .../PartialWorkspaceProjectsConfig.html | 8 +++--- api/types/interface/PartialYarnConfig.html | 8 +++--- api/types/interface/PnpmConfig.html | 8 +++--- api/types/interface/Project.html | 8 +++--- api/types/interface/ProjectConfig.html | 8 +++--- .../interface/ProjectMetadataConfig.html | 8 +++--- .../ProjectToolchainCommonToolConfig.html | 8 +++--- .../interface/ProjectToolchainConfig.html | 8 +++--- .../ProjectToolchainTypeScriptConfig.html | 8 +++--- .../interface/ProjectWorkspaceConfig.html | 8 +++--- .../ProjectWorkspaceInheritedTasksConfig.html | 8 +++--- api/types/interface/ProviderEnvironment.html | 8 +++--- api/types/interface/RunReport.html | 8 +++--- api/types/interface/RunnerConfig.html | 8 +++--- api/types/interface/Runtime.html | 8 +++--- api/types/interface/RustConfig.html | 8 +++--- api/types/interface/TargetState.html | 8 +++--- api/types/interface/Task.html | 8 +++--- api/types/interface/TaskConfig.html | 8 +++--- api/types/interface/TaskOptions.html | 8 +++--- api/types/interface/TaskOptionsConfig.html | 8 +++--- api/types/interface/TemplateConfig.html | 8 +++--- .../interface/TemplateFrontmatterConfig.html | 8 +++--- .../TemplateVariableBoolSetting.html | 8 +++--- .../TemplateVariableEnumSetting.html | 8 +++--- .../TemplateVariableEnumValueConfig.html | 8 +++--- .../TemplateVariableNumberSetting.html | 8 +++--- .../TemplateVariableStringSetting.html | 8 +++--- api/types/interface/ToolchainConfig.html | 8 +++--- api/types/interface/TypeScriptConfig.html | 8 +++--- api/types/interface/VcsConfig.html | 8 +++--- api/types/interface/WebhookPayload.html | 8 +++--- api/types/interface/WorkspaceConfig.html | 8 +++--- .../interface/WorkspaceProjectsConfig.html | 8 +++--- api/types/interface/YarnConfig.html | 8 +++--- ...v1.16-cd59c941a2ddc0f63435db79a3c420eb.png | Bin 0 -> 1022594 bytes assets/js/0abe3c97.445691db.js | 1 + assets/js/429b21e2.5da96da1.js | 1 - assets/js/429b21e2.6abca5dc.js | 1 + assets/js/4bd5fd33.9de51b37.js | 1 + assets/js/50bf3dcb.178e71c3.js | 1 + assets/js/7dbcf43b.43780a8e.js | 1 + assets/js/7dbcf43b.f08dedf2.js | 1 - assets/js/92e5465c.8e042506.js | 1 + assets/js/a7023ddc.4ef95c10.js | 1 + assets/js/a7023ddc.f9829b91.js | 1 - assets/js/b2f554cd.4b404dd9.js | 1 - assets/js/b2f554cd.dd71ae46.js | 1 + assets/js/cc2086a7.8f5f6a56.js | 1 + assets/js/d5075c4a.42e3484a.js | 1 + assets/js/main.15cf5edb.js | 2 ++ ...CENSE.txt => main.15cf5edb.js.LICENSE.txt} | 0 assets/js/main.fe537ba2.js | 2 -- assets/js/runtime~main.96282c2a.js | 1 + assets/js/runtime~main.ee0b61b6.js | 1 - blog.html | 12 ++++---- blog/2023-roadmap.html | 8 +++--- blog/archive.html | 8 +++--- blog/atom.xml | 3 ++ blog/moon-v1.0.html | 8 +++--- blog/moon-v1.1.html | 8 +++--- blog/moon-v1.10.html | 8 +++--- blog/moon-v1.11.html | 8 +++--- blog/moon-v1.12.html | 8 +++--- blog/moon-v1.13.html | 8 +++--- blog/moon-v1.14.html | 8 +++--- blog/moon-v1.15.html | 8 +++--- blog/moon-v1.16.html | 14 +++++----- blog/moon-v1.2.html | 8 +++--- blog/moon-v1.3.html | 8 +++--- blog/moon-v1.4.html | 8 +++--- blog/moon-v1.5.html | 8 +++--- blog/moon-v1.6.html | 8 +++--- blog/moon-v1.7.html | 8 +++--- blog/moon-v1.8.html | 8 +++--- blog/moon-v1.9.html | 8 +++--- blog/moonbase.html | 8 +++--- blog/page/2.html | 8 +++--- blog/page/3.html | 8 +++--- blog/page/4.html | 8 +++--- blog/page/5.html | 8 +++--- blog/page/6.html | 8 +++--- blog/proto-v0.11.html | 8 +++--- blog/proto-v0.12.html | 8 +++--- blog/proto-v0.13.html | 8 +++--- blog/proto-v0.14.html | 8 +++--- blog/proto-v0.15.html | 8 +++--- blog/proto-v0.16.html | 8 +++--- blog/proto-v0.17.html | 8 +++--- blog/proto-v0.18.html | 8 +++--- blog/proto-v0.19.html | 8 +++--- blog/proto-v0.20.html | 8 +++--- blog/proto-v0.21.html | 8 +++--- blog/proto-v0.3.html | 8 +++--- blog/proto-v0.4.html | 8 +++--- blog/proto-v0.5.html | 8 +++--- blog/proto-v0.6.html | 8 +++--- blog/proto-v0.7.html | 8 +++--- blog/proto-v0.8.html | 8 +++--- blog/proto-v0.9.html | 8 +++--- blog/proto.html | 8 +++--- blog/rss.xml | 3 ++ blog/tags.html | 10 +++---- blog/tags/action.html | 8 +++--- blog/tags/affected.html | 8 +++--- blog/tags/alias.html | 8 +++--- blog/tags/automation.html | 26 ++++++++++++++++++ blog/tags/bin.html | 8 +++--- blog/tags/bun.html | 12 ++++---- blog/tags/cache.html | 8 +++--- blog/tags/canary.html | 8 +++--- blog/tags/checksum.html | 8 +++--- blog/tags/ci.html | 8 +++--- blog/tags/clean.html | 8 +++--- blog/tags/code.html | 8 +++--- blog/tags/config.html | 8 +++--- blog/tags/constraints.html | 8 +++--- blog/tags/debug.html | 8 +++--- blog/tags/deno.html | 8 +++--- blog/tags/dep-graph.html | 8 +++--- blog/tags/dependency.html | 8 +++--- blog/tags/detect.html | 8 +++--- blog/tags/docker.html | 8 +++--- blog/tags/editors.html | 8 +++--- blog/tags/env-vars.html | 8 +++--- blog/tags/errors.html | 8 +++--- blog/tags/generator.html | 8 +++--- blog/tags/git.html | 8 +++--- blog/tags/github.html | 8 +++--- blog/tags/global.html | 8 +++--- blog/tags/globals.html | 8 +++--- blog/tags/go.html | 8 +++--- blog/tags/graph.html | 8 +++--- blog/tags/hash.html | 8 +++--- blog/tags/hasher.html | 8 +++--- blog/tags/hooks.html | 8 +++--- blog/tags/http.html | 8 +++--- blog/tags/hydration.html | 8 +++--- blog/tags/ignore.html | 8 +++--- blog/tags/index.html | 8 +++--- blog/tags/inheritance.html | 8 +++--- blog/tags/init.html | 8 +++--- blog/tags/lang.html | 8 +++--- blog/tags/language.html | 8 +++--- blog/tags/life.html | 8 +++--- blog/tags/linux.html | 8 +++--- blog/tags/local.html | 8 +++--- blog/tags/log.html | 8 +++--- blog/tags/logging.html | 8 +++--- blog/tags/manager.html | 26 ++++++++++++++++++ blog/tags/migrate.html | 8 +++--- blog/tags/monorepo.html | 8 +++--- blog/tags/moonbase.html | 8 +++--- blog/tags/musl.html | 8 +++--- blog/tags/node.html | 8 +++--- blog/tags/notifier.html | 8 +++--- blog/tags/npm.html | 8 +++--- blog/tags/offline.html | 8 +++--- blog/tags/outdated.html | 8 +++--- blog/tags/owners.html | 8 +++--- blog/tags/ownership.html | 8 +++--- blog/tags/package.html | 26 ++++++++++++++++++ blog/tags/pin.html | 8 +++--- blog/tags/pipeline.html | 8 +++--- blog/tags/platform.html | 8 +++--- blog/tags/plugin.html | 8 +++--- blog/tags/plugins.html | 8 +++--- blog/tags/project-graph.html | 8 +++--- blog/tags/project.html | 8 +++--- blog/tags/projects.html | 8 +++--- blog/tags/proto.html | 8 +++--- blog/tags/proto/page/2.html | 8 +++--- blog/tags/proto/page/3.html | 8 +++--- blog/tags/python.html | 8 +++--- blog/tags/qol.html | 8 +++--- blog/tags/quality.html | 8 +++--- blog/tags/query.html | 8 +++--- blog/tags/railway.html | 8 +++--- blog/tags/registry.html | 8 +++--- blog/tags/remote-cache.html | 8 +++--- blog/tags/rfc.html | 8 +++--- blog/tags/roadmap.html | 8 +++--- blog/tags/run.html | 8 +++--- blog/tags/runner.html | 8 +++--- blog/tags/rust.html | 12 ++++---- blog/tags/schema.html | 8 +++--- blog/tags/shim.html | 8 +++--- blog/tags/shorthand.html | 8 +++--- blog/tags/source.html | 8 +++--- blog/tags/survey.html | 8 +++--- blog/tags/tag.html | 8 +++--- blog/tags/tags.html | 8 +++--- blog/tags/target.html | 8 +++--- blog/tags/task.html | 8 +++--- blog/tags/tasks.html | 8 +++--- blog/tags/tier.html | 8 +++--- blog/tags/tokens.html | 8 +++--- blog/tags/toml.html | 8 +++--- blog/tags/tool.html | 8 +++--- blog/tags/toolchain.html | 12 ++++---- blog/tags/typescript.html | 8 +++--- blog/tags/vcs.html | 8 +++--- blog/tags/version.html | 8 +++--- blog/tags/vscode.html | 8 +++--- blog/tags/wasm.html | 8 +++--- blog/typescript-monorepo.html | 8 +++--- blog/v0.13.html | 8 +++--- blog/v0.14.html | 8 +++--- blog/v0.15.html | 8 +++--- blog/v0.16.html | 8 +++--- blog/v0.17.html | 8 +++--- blog/v0.18.html | 8 +++--- blog/v0.19.html | 8 +++--- blog/v0.20.html | 8 +++--- blog/v0.21.html | 8 +++--- blog/v0.22.html | 8 +++--- blog/v0.23.html | 8 +++--- blog/v0.24.html | 8 +++--- blog/v0.25.html | 8 +++--- blog/v0.26.html | 8 +++--- blog/vscode-extension.html | 8 +++--- docs.html | 8 +++--- docs/cheat-sheet.html | 8 +++--- docs/commands.html | 8 +++--- docs/commands/action-graph.html | 8 +++--- docs/commands/bin.html | 8 +++--- docs/commands/check.html | 8 +++--- docs/commands/ci.html | 8 +++--- docs/commands/clean.html | 8 +++--- docs/commands/completions.html | 8 +++--- docs/commands/docker.html | 8 +++--- docs/commands/docker/prune.html | 8 +++--- docs/commands/docker/scaffold.html | 8 +++--- docs/commands/docker/setup.html | 8 +++--- docs/commands/generate.html | 8 +++--- docs/commands/init.html | 8 +++--- docs/commands/migrate.html | 8 +++--- docs/commands/migrate/from-package-json.html | 8 +++--- docs/commands/migrate/from-turborepo.html | 8 +++--- docs/commands/overview.html | 8 +++--- docs/commands/project-graph.html | 8 +++--- docs/commands/project.html | 8 +++--- docs/commands/query.html | 8 +++--- docs/commands/query/hash-diff.html | 8 +++--- docs/commands/query/hash.html | 8 +++--- docs/commands/query/projects.html | 8 +++--- docs/commands/query/tasks.html | 8 +++--- docs/commands/query/touched-files.html | 8 +++--- docs/commands/run.html | 8 +++--- docs/commands/setup.html | 8 +++--- docs/commands/sync.html | 8 +++--- docs/commands/sync/codeowners.html | 8 +++--- docs/commands/sync/hooks.html | 8 +++--- docs/commands/sync/projects.html | 8 +++--- docs/commands/task.html | 8 +++--- docs/commands/teardown.html | 8 +++--- docs/commands/upgrade.html | 8 +++--- docs/comparison.html | 8 +++--- docs/concepts.html | 8 +++--- docs/concepts/cache.html | 8 +++--- docs/concepts/file-group.html | 8 +++--- docs/concepts/file-pattern.html | 8 +++--- docs/concepts/project.html | 8 +++--- docs/concepts/query-lang.html | 8 +++--- docs/concepts/target.html | 8 +++--- docs/concepts/task-inheritance.html | 8 +++--- docs/concepts/task.html | 8 +++--- docs/concepts/token.html | 8 +++--- docs/concepts/toolchain.html | 8 +++--- docs/concepts/workspace.html | 8 +++--- docs/config.html | 8 +++--- docs/config/project.html | 8 +++--- docs/config/tasks.html | 8 +++--- docs/config/template.html | 8 +++--- docs/config/toolchain.html | 8 +++--- docs/config/workspace.html | 8 +++--- docs/create-project.html | 8 +++--- docs/create-task.html | 8 +++--- docs/editors.html | 8 +++--- docs/editors/vscode.html | 8 +++--- docs/faq.html | 8 +++--- docs/guides/ci.html | 8 +++--- docs/guides/codegen.html | 8 +++--- docs/guides/codeowners.html | 8 +++--- docs/guides/debug-task.html | 8 +++--- docs/guides/docker.html | 8 +++--- docs/guides/examples/angular.html | 8 +++--- docs/guides/examples/astro.html | 8 +++--- docs/guides/examples/eslint.html | 8 +++--- docs/guides/examples/jest.html | 8 +++--- docs/guides/examples/nest.html | 8 +++--- docs/guides/examples/next.html | 8 +++--- docs/guides/examples/nuxt.html | 8 +++--- docs/guides/examples/packemon.html | 8 +++--- docs/guides/examples/prettier.html | 8 +++--- docs/guides/examples/react.html | 8 +++--- docs/guides/examples/remix.html | 8 +++--- docs/guides/examples/solid.html | 8 +++--- docs/guides/examples/storybook.html | 8 +++--- docs/guides/examples/sveltekit.html | 8 +++--- docs/guides/examples/typescript.html | 8 +++--- docs/guides/examples/vite.html | 8 +++--- docs/guides/examples/vue.html | 8 +++--- docs/guides/javascript/deno-handbook.html | 8 +++--- docs/guides/javascript/node-handbook.html | 8 +++--- docs/guides/javascript/typescript-eslint.html | 8 +++--- .../javascript/typescript-project-refs.html | 8 +++--- docs/guides/node/examples.html | 8 +++--- docs/guides/offline-mode.html | 8 +++--- docs/guides/open-source.html | 8 +++--- docs/guides/profile.html | 8 +++--- docs/guides/remote-cache.html | 8 +++--- docs/guides/root-project.html | 8 +++--- docs/guides/rust/handbook.html | 8 +++--- docs/guides/sharing-config.html | 8 +++--- docs/guides/vcs-hooks.html | 8 +++--- docs/guides/webhooks.html | 8 +++--- docs/how-it-works.html | 8 +++--- docs/how-it-works/action-graph.html | 8 +++--- docs/how-it-works/languages.html | 8 +++--- docs/how-it-works/project-graph.html | 8 +++--- docs/install.html | 8 +++--- docs/migrate-to-moon.html | 8 +++--- docs/proto.html | 8 +++--- docs/proto/commands/add-plugin.html | 8 +++--- docs/proto/commands/alias.html | 8 +++--- docs/proto/commands/bin.html | 8 +++--- docs/proto/commands/clean.html | 8 +++--- docs/proto/commands/completions.html | 8 +++--- docs/proto/commands/install-global.html | 8 +++--- docs/proto/commands/install.html | 8 +++--- docs/proto/commands/list-global.html | 8 +++--- docs/proto/commands/list-remote.html | 8 +++--- docs/proto/commands/list.html | 8 +++--- docs/proto/commands/outdated.html | 8 +++--- docs/proto/commands/pin.html | 8 +++--- docs/proto/commands/plugins.html | 8 +++--- docs/proto/commands/remove-plugin.html | 8 +++--- docs/proto/commands/run.html | 8 +++--- docs/proto/commands/setup.html | 8 +++--- docs/proto/commands/tools.html | 8 +++--- docs/proto/commands/unalias.html | 8 +++--- docs/proto/commands/uninstall-global.html | 8 +++--- docs/proto/commands/uninstall.html | 8 +++--- docs/proto/commands/upgrade.html | 8 +++--- docs/proto/commands/use.html | 8 +++--- docs/proto/config.html | 8 +++--- docs/proto/detection.html | 8 +++--- docs/proto/faq.html | 8 +++--- docs/proto/install.html | 8 +++--- docs/proto/plugins.html | 8 +++--- docs/proto/toml-plugin.html | 8 +++--- docs/proto/tools.html | 8 +++--- docs/proto/wasm-plugin.html | 8 +++--- docs/run-task.html | 8 +++--- docs/setup-toolchain.html | 8 +++--- docs/setup-workspace.html | 8 +++--- docs/tags.html | 8 +++--- docs/tags/code.html | 8 +++--- docs/tags/codegen.html | 8 +++--- docs/tags/codeowners.html | 8 +++--- docs/tags/generator.html | 8 +++--- docs/tags/git-hooks.html | 8 +++--- docs/tags/git.html | 8 +++--- docs/tags/hooks.html | 8 +++--- docs/tags/lang.html | 8 +++--- docs/tags/mql.html | 8 +++--- docs/tags/owners.html | 8 +++--- docs/tags/query.html | 8 +++--- docs/tags/scaffold.html | 8 +++--- docs/tags/solid.html | 8 +++--- docs/tags/solidjs.html | 8 +++--- docs/tags/template.html | 8 +++--- docs/tags/vcs.html | 8 +++--- docs/terminology.html | 8 +++--- index.html | 8 +++--- moon.html | 8 +++--- moonbase.html | 8 +++--- proto.html | 10 +++---- search.html | 8 +++--- sitemap.xml | 2 +- 480 files changed, 1927 insertions(+), 1837 deletions(-) create mode 100644 assets/images/v1.16-cd59c941a2ddc0f63435db79a3c420eb.png create mode 100644 assets/js/0abe3c97.445691db.js delete mode 100644 assets/js/429b21e2.5da96da1.js create mode 100644 assets/js/429b21e2.6abca5dc.js create mode 100644 assets/js/4bd5fd33.9de51b37.js create mode 100644 assets/js/50bf3dcb.178e71c3.js create mode 100644 assets/js/7dbcf43b.43780a8e.js delete mode 100644 assets/js/7dbcf43b.f08dedf2.js create mode 100644 assets/js/92e5465c.8e042506.js create mode 100644 assets/js/a7023ddc.4ef95c10.js delete mode 100644 assets/js/a7023ddc.f9829b91.js delete mode 100644 assets/js/b2f554cd.4b404dd9.js create mode 100644 assets/js/b2f554cd.dd71ae46.js create mode 100644 assets/js/cc2086a7.8f5f6a56.js create mode 100644 assets/js/d5075c4a.42e3484a.js create mode 100644 assets/js/main.15cf5edb.js rename assets/js/{main.fe537ba2.js.LICENSE.txt => main.15cf5edb.js.LICENSE.txt} (100%) delete mode 100644 assets/js/main.fe537ba2.js create mode 100644 assets/js/runtime~main.96282c2a.js delete mode 100644 assets/js/runtime~main.ee0b61b6.js create mode 100644 blog/tags/automation.html create mode 100644 blog/tags/manager.html create mode 100644 blog/tags/package.html diff --git a/404.html b/404.html index 9987eb5e342..cc0f7641c2c 100644 --- a/404.html +++ b/404.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/api.html b/api.html index d5ce969f914..e5b8d8138d4 100644 --- a/api.html +++ b/api.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report.html b/api/report.html index bab09d12bca..0ffb86c7e29 100644 --- a/api/report.html +++ b/api/report.html @@ -13,15 +13,15 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/formatDuration.html b/api/report/function/formatDuration.html index a74b0350a3d..f629675b9d5 100644 --- a/api/report/function/formatDuration.html +++ b/api/report/function/formatDuration.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/formatTime.html b/api/report/function/formatTime.html index 0257ea0c117..2369f139130 100644 --- a/api/report/function/formatTime.html +++ b/api/report/function/formatTime.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/getDurationInMillis.html b/api/report/function/getDurationInMillis.html index 4fe47649940..df09c4e32f4 100644 --- a/api/report/function/getDurationInMillis.html +++ b/api/report/function/getDurationInMillis.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/getIconForStatus.html b/api/report/function/getIconForStatus.html index a7c40e280fc..bea0d77fc37 100644 --- a/api/report/function/getIconForStatus.html +++ b/api/report/function/getIconForStatus.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/hasFailed.html b/api/report/function/hasFailed.html index 56564851a83..e12fc68eb9c 100644 --- a/api/report/function/hasFailed.html +++ b/api/report/function/hasFailed.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/hasPassed.html b/api/report/function/hasPassed.html index 387c2992302..dd772e99594 100644 --- a/api/report/function/hasPassed.html +++ b/api/report/function/hasPassed.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/isFlaky.html b/api/report/function/isFlaky.html index 8f7fecee3a5..14b0a5c4b2a 100644 --- a/api/report/function/isFlaky.html +++ b/api/report/function/isFlaky.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/isSlow.html b/api/report/function/isSlow.html index 71e4cb08b83..3ee0f65bc6d 100644 --- a/api/report/function/isSlow.html +++ b/api/report/function/isSlow.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/prepareReportActions.html b/api/report/function/prepareReportActions.html index 24d39eda432..8682dfca71d 100644 --- a/api/report/function/prepareReportActions.html +++ b/api/report/function/prepareReportActions.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/function/sortReport.html b/api/report/function/sortReport.html index c0d50e204d2..0da8b66a325 100644 --- a/api/report/function/sortReport.html +++ b/api/report/function/sortReport.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/report/interface/PreparedAction.html b/api/report/interface/PreparedAction.html index f8a7e6048c3..0675298e7a8 100644 --- a/api/report/interface/PreparedAction.html +++ b/api/report/interface/PreparedAction.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/runtime.html b/api/runtime.html index df041982613..d7107ae4679 100644 --- a/api/runtime.html +++ b/api/runtime.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/runtime/function/getContext.html b/api/runtime/function/getContext.html index 8cca890f08a..39a2cfe48de 100644 --- a/api/runtime/function/getContext.html +++ b/api/runtime/function/getContext.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/api/runtime/interface/RuntimeContext.html b/api/runtime/interface/RuntimeContext.html index e4ef395c705..6f7c81f3c12 100644 --- a/api/runtime/interface/RuntimeContext.html +++ b/api/runtime/interface/RuntimeContext.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types.html b/api/types.html index 32a96d2b14d..7746b65102b 100644 --- a/api/types.html +++ b/api/types.html @@ -13,15 +13,15 @@ - - + +
Skip to main content

@moonrepo/types

build status npm version npm license

Reusable TypeScript types for moon projects, tasks, and configurations.

Index

Interfaces

Type Aliases

Type Aliases

ActionNode

ActionStatus

ActionStatus: cached-from-remote | cached | failed-and-abort | failed | invalid | passed | running | skipped

BinEntry

BinEntry: string | BinConfig

CodeownersOrderBy

CodeownersOrderBy: file-source | project-name

DependencyScope

DependencyScope: build | development | peer | production | root

DependencySource

DependencySource: explicit | implicit

EventType

EventType: action.finished | action.started | dependencies.installed | dependencies.installing | pipeline.aborted | pipeline.finished | pipeline.started | project.synced | project.syncing | target-output.archived | target-output.archiving | target-output.cache-check | target-output.hydrated | target-output.hydrating | target.ran | target.running | tool.installed | tool.installing | workspace.synced | workspace.syncing

HasherOptimization

HasherOptimization: accuracy | performance

HasherWalkStrategy

HasherWalkStrategy: glob | vcs

LanguageType

LanguageType: bash | batch | go | javascript | php | python | ruby | rust | typescript | unknown

NodePackageManager

NodePackageManager: bun | npm | pnpm | yarn

NodeProjectAliasFormat

NodeProjectAliasFormat: name-and-scope | name-only

NodeVersionFormat

NodeVersionFormat: file | link | star | version | version-caret | version-tilde | workspace | workspace-caret | workspace-tilde

NodeVersionManager

NodeVersionManager: nodenv | nvm

Nullable

Nullable<T>: { [ K in keyof T ]: T[K] | null }

Type parameters

  • T

OwnersPaths

OwnersPaths: string[] | Record<string, string[]>

PartialBinEntry

PartialBinEntry: string | PartialBinConfig

PartialOwnersPaths

PartialOwnersPaths: string[] | Record<string, string[]>

PartialProjectDependsOn

PartialProjectDependsOn: string | PartialDependencyConfig

PartialTaskCommandArgs

PartialTaskCommandArgs: null | string | string[]

PartialTemplateVariable

PartialTemplateVariableEnumValue

PartialTemplateVariableEnumValue: string | PartialTemplateVariableEnumValueConfig

PartialWorkspaceProjects

PartialWorkspaceProjects: PartialWorkspaceProjectsConfig | string[] | Record<string, string>

PayloadActionFinished

PayloadActionFinished: WebhookPayload<action.finished, EventActionFinished>

PayloadActionStarted

PayloadActionStarted: WebhookPayload<action.started, EventActionStarted>

PayloadDependenciesInstalled

PayloadDependenciesInstalled: WebhookPayload<dependencies.installed, EventDependenciesInstalled>

PayloadDependenciesInstalling

PayloadDependenciesInstalling: WebhookPayload<dependencies.installing, EventDependenciesInstalling>

PayloadPipelineAborted

PayloadPipelineAborted: WebhookPayload<pipeline.aborted, EventPipelineAborted>

PayloadPipelineFinished

PayloadPipelineFinished: WebhookPayload<pipeline.finished, EventPipelineFinished>

PayloadPipelineStarted

PayloadPipelineStarted: WebhookPayload<pipeline.started, EventPipelineStarted>

PayloadProjectSynced

PayloadProjectSynced: WebhookPayload<project.synced, EventProjectSynced>

PayloadProjectSyncing

PayloadProjectSyncing: WebhookPayload<project.syncing, EventProjectSyncing>

PayloadTargetOutputArchived

PayloadTargetOutputArchived: WebhookPayload<target-output.archived, EventTargetOutputArchived>

PayloadTargetOutputArchiving

PayloadTargetOutputArchiving: WebhookPayload<target-output.archiving, EventTargetOutputArchiving>

PayloadTargetOutputCacheCheck

PayloadTargetOutputCacheCheck: WebhookPayload<target-output.cache-check, EventTargetOutputCacheCheck>

PayloadTargetOutputHydrated

PayloadTargetOutputHydrated: WebhookPayload<target-output.hydrated, EventTargetOutputHydrated>

PayloadTargetOutputHydrating

PayloadTargetOutputHydrating: WebhookPayload<target-output.hydrating, EventTargetOutputHydrating>

PayloadTargetRan

PayloadTargetRan: WebhookPayload<target.ran, EventTargetRan>

PayloadTargetRunning

PayloadTargetRunning: WebhookPayload<target.running, EventTargetRunning>

PayloadToolInstalled

PayloadToolInstalled: WebhookPayload<tool.installed, EventToolInstalled>

PayloadToolInstalling

PayloadToolInstalling: WebhookPayload<tool.installing, EventToolInstalling>

PayloadWorkspaceSynced

PayloadWorkspaceSynced: WebhookPayload<workspace.synced, EventWorkspaceSynced>

PayloadWorkspaceSyncing

PayloadWorkspaceSyncing: WebhookPayload<workspace.syncing, {}>

PlatformType

PlatformType: deno | node | rust | system | unknown

ProjectDependsOn

ProjectDependsOn: string | DependencyConfig

ProjectType

ProjectType: application | automation | library | tool | unknown

TaskCommandArgs

TaskCommandArgs: null | string | string[]

TaskMergeStrategy

TaskMergeStrategy: append | prepend | replace

TaskOptionAffectedFiles

TaskOptionAffectedFiles: boolean | args | env

TaskOptionEnvFile

TaskOptionEnvFile: boolean | string

TaskOutputStyle

TaskOutputStyle: buffer | buffer-only-failure | hash | none | stream

TaskType

TaskType: build | run | test

TemplateVariable

TemplateVariableEnumValue

TemplateVariableEnumValue: string | TemplateVariableEnumValueConfig

VcsManager

VcsManager: git

VcsProvider

VcsProvider: bitbucket | github | gitlab | other

WorkspaceProjects

WorkspaceProjects: WorkspaceProjectsConfig | string[] | Record<string, string>
- - + + \ No newline at end of file diff --git a/api/types/interface/Action.html b/api/types/interface/Action.html index 95e1b572713..d476e783f2c 100644 --- a/api/types/interface/Action.html +++ b/api/types/interface/Action.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

Action

Index

Properties

optionalallowFailure

allowFailure?: boolean

attempts

attempts: null | Attempt[]

createdAt

createdAt: string

duration

duration: null | Duration

error

error: null | string

finishedAt

finishedAt: null | string

flaky

flaky: boolean

label

label: null | string

nodeIndex

nodeIndex: number

startedAt

startedAt: null | string

status

status: ActionStatus
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionContext.html b/api/types/interface/ActionContext.html index dfa214b34f0..1ac7f078ba0 100644 --- a/api/types/interface/ActionContext.html +++ b/api/types/interface/ActionContext.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

ActionContext

Index

Properties

affectedOnly

affectedOnly: boolean

initialTargets

initialTargets: string[]

passthroughArgs

passthroughArgs: string[]

primaryTargets

primaryTargets: string[]

profile

profile: null | cpu | heap

targetStates

targetStates: Record<string, TargetState>

touchedFiles

touchedFiles: string[]

workspaceRoot

workspaceRoot: string
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeInstallDeps.html b/api/types/interface/ActionNodeInstallDeps.html index 60e50970b58..7c013e31bdd 100644 --- a/api/types/interface/ActionNodeInstallDeps.html +++ b/api/types/interface/ActionNodeInstallDeps.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeInstallProjectDeps.html b/api/types/interface/ActionNodeInstallProjectDeps.html index a928927e567..9e53a280066 100644 --- a/api/types/interface/ActionNodeInstallProjectDeps.html +++ b/api/types/interface/ActionNodeInstallProjectDeps.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeRunTask.html b/api/types/interface/ActionNodeRunTask.html index 9d4762c270c..5bf04494784 100644 --- a/api/types/interface/ActionNodeRunTask.html +++ b/api/types/interface/ActionNodeRunTask.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeSetupTool.html b/api/types/interface/ActionNodeSetupTool.html index fdb8e2eaf3c..e6b88d42c2f 100644 --- a/api/types/interface/ActionNodeSetupTool.html +++ b/api/types/interface/ActionNodeSetupTool.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeSyncProject.html b/api/types/interface/ActionNodeSyncProject.html index 7469ca41de3..28448f36c92 100644 --- a/api/types/interface/ActionNodeSyncProject.html +++ b/api/types/interface/ActionNodeSyncProject.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeSyncWorkspace.html b/api/types/interface/ActionNodeSyncWorkspace.html index ee35df60fc6..2369f6a1147 100644 --- a/api/types/interface/ActionNodeSyncWorkspace.html +++ b/api/types/interface/ActionNodeSyncWorkspace.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/Attempt.html b/api/types/interface/Attempt.html index 567f8e503ae..e299f649050 100644 --- a/api/types/interface/Attempt.html +++ b/api/types/interface/Attempt.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/BinConfig.html b/api/types/interface/BinConfig.html index b6047e9c902..4d1ee547d5d 100644 --- a/api/types/interface/BinConfig.html +++ b/api/types/interface/BinConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/BunpmConfig.html b/api/types/interface/BunpmConfig.html index 1f11ce28a86..99329570111 100644 --- a/api/types/interface/BunpmConfig.html +++ b/api/types/interface/BunpmConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/CodeownersConfig.html b/api/types/interface/CodeownersConfig.html index ac3ea5a2a4b..c38e83f00b2 100644 --- a/api/types/interface/CodeownersConfig.html +++ b/api/types/interface/CodeownersConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ConstraintsConfig.html b/api/types/interface/ConstraintsConfig.html index 8bf68cdbc47..b7f22c88edf 100644 --- a/api/types/interface/ConstraintsConfig.html +++ b/api/types/interface/ConstraintsConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/DenoConfig.html b/api/types/interface/DenoConfig.html index 7706e51e576..f44b8acf6c0 100644 --- a/api/types/interface/DenoConfig.html +++ b/api/types/interface/DenoConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/DependencyConfig.html b/api/types/interface/DependencyConfig.html index de2b235e43e..ce34299274e 100644 --- a/api/types/interface/DependencyConfig.html +++ b/api/types/interface/DependencyConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/Duration.html b/api/types/interface/Duration.html index 70acfb16c89..794653138f3 100644 --- a/api/types/interface/Duration.html +++ b/api/types/interface/Duration.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventActionFinished.html b/api/types/interface/EventActionFinished.html index bf29860daad..f66a2e97bcd 100644 --- a/api/types/interface/EventActionFinished.html +++ b/api/types/interface/EventActionFinished.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventActionStarted.html b/api/types/interface/EventActionStarted.html index f30f6595377..27d480993ef 100644 --- a/api/types/interface/EventActionStarted.html +++ b/api/types/interface/EventActionStarted.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventDependenciesInstalled.html b/api/types/interface/EventDependenciesInstalled.html index e2048be3e94..10b9b9423b6 100644 --- a/api/types/interface/EventDependenciesInstalled.html +++ b/api/types/interface/EventDependenciesInstalled.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventDependenciesInstalling.html b/api/types/interface/EventDependenciesInstalling.html index 3aff3a8990e..97c83947ed2 100644 --- a/api/types/interface/EventDependenciesInstalling.html +++ b/api/types/interface/EventDependenciesInstalling.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventPipelineAborted.html b/api/types/interface/EventPipelineAborted.html index 1787b5df926..d26b825f590 100644 --- a/api/types/interface/EventPipelineAborted.html +++ b/api/types/interface/EventPipelineAborted.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventPipelineFinished.html b/api/types/interface/EventPipelineFinished.html index b68f39bf436..6e86d13f76b 100644 --- a/api/types/interface/EventPipelineFinished.html +++ b/api/types/interface/EventPipelineFinished.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventPipelineStarted.html b/api/types/interface/EventPipelineStarted.html index 46aff9eb83f..2fce8ab91db 100644 --- a/api/types/interface/EventPipelineStarted.html +++ b/api/types/interface/EventPipelineStarted.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventProjectSynced.html b/api/types/interface/EventProjectSynced.html index 440a3712fe8..bf97298a9a8 100644 --- a/api/types/interface/EventProjectSynced.html +++ b/api/types/interface/EventProjectSynced.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventProjectSyncing.html b/api/types/interface/EventProjectSyncing.html index f43c9719aa2..0c1e2c63be4 100644 --- a/api/types/interface/EventProjectSyncing.html +++ b/api/types/interface/EventProjectSyncing.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetOutputArchived.html b/api/types/interface/EventTargetOutputArchived.html index 7ecd4be70c0..33a41bdbf46 100644 --- a/api/types/interface/EventTargetOutputArchived.html +++ b/api/types/interface/EventTargetOutputArchived.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetOutputArchiving.html b/api/types/interface/EventTargetOutputArchiving.html index 1f34341324a..f955bb555d0 100644 --- a/api/types/interface/EventTargetOutputArchiving.html +++ b/api/types/interface/EventTargetOutputArchiving.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetOutputCacheCheck.html b/api/types/interface/EventTargetOutputCacheCheck.html index add674cdc11..974d4d205eb 100644 --- a/api/types/interface/EventTargetOutputCacheCheck.html +++ b/api/types/interface/EventTargetOutputCacheCheck.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetOutputHydrated.html b/api/types/interface/EventTargetOutputHydrated.html index 1a4daf20c81..7c1d284a2f0 100644 --- a/api/types/interface/EventTargetOutputHydrated.html +++ b/api/types/interface/EventTargetOutputHydrated.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetOutputHydrating.html b/api/types/interface/EventTargetOutputHydrating.html index aeb5b1e0905..0ab23b013fb 100644 --- a/api/types/interface/EventTargetOutputHydrating.html +++ b/api/types/interface/EventTargetOutputHydrating.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetRan.html b/api/types/interface/EventTargetRan.html index 9c5679bd919..2dc62696b97 100644 --- a/api/types/interface/EventTargetRan.html +++ b/api/types/interface/EventTargetRan.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventTargetRunning.html b/api/types/interface/EventTargetRunning.html index 8ac7ca694b3..30cee2a8055 100644 --- a/api/types/interface/EventTargetRunning.html +++ b/api/types/interface/EventTargetRunning.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventToolInstalled.html b/api/types/interface/EventToolInstalled.html index 4eb8be30a03..1d1e82a2c16 100644 --- a/api/types/interface/EventToolInstalled.html +++ b/api/types/interface/EventToolInstalled.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventToolInstalling.html b/api/types/interface/EventToolInstalling.html index b57af9d4196..d47e03e64b5 100644 --- a/api/types/interface/EventToolInstalling.html +++ b/api/types/interface/EventToolInstalling.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/EventWorkspaceSynced.html b/api/types/interface/EventWorkspaceSynced.html index 3697d8221f3..42e89195ae0 100644 --- a/api/types/interface/EventWorkspaceSynced.html +++ b/api/types/interface/EventWorkspaceSynced.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ExperimentsConfig.html b/api/types/interface/ExperimentsConfig.html index a23efa1ef0d..e32e8a902cb 100644 --- a/api/types/interface/ExperimentsConfig.html +++ b/api/types/interface/ExperimentsConfig.html @@ -13,8 +13,8 @@ - - + +
@@ -23,7 +23,7 @@ ```

taskOutputBoundaries

taskOutputBoundaries: boolean = ```ts true ```
- - + + \ No newline at end of file diff --git a/api/types/interface/FileGroup.html b/api/types/interface/FileGroup.html index 56546ceb97d..afed793621a 100644 --- a/api/types/interface/FileGroup.html +++ b/api/types/interface/FileGroup.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/GeneratorConfig.html b/api/types/interface/GeneratorConfig.html index 334ef4b2846..2c9f4d05e7b 100644 --- a/api/types/interface/GeneratorConfig.html +++ b/api/types/interface/GeneratorConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/HasherConfig.html b/api/types/interface/HasherConfig.html index c8adb308642..4d73c4dd164 100644 --- a/api/types/interface/HasherConfig.html +++ b/api/types/interface/HasherConfig.html @@ -13,8 +13,8 @@ - - + +
@@ -23,7 +23,7 @@ ```

ignoreMissingPatterns

ignoreMissingPatterns: string[]

ignorePatterns

ignorePatterns: string[]

optimization

optimization: HasherOptimization

walkStrategy

walkStrategy: HasherWalkStrategy

warnOnMissingInputs

warnOnMissingInputs: boolean = ```ts true ```
- - + + \ No newline at end of file diff --git a/api/types/interface/InheritedTasksConfig.html b/api/types/interface/InheritedTasksConfig.html index 9a6819e4906..89bcd89707c 100644 --- a/api/types/interface/InheritedTasksConfig.html +++ b/api/types/interface/InheritedTasksConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content

InheritedTasksConfig

Index

Properties

$schema

$schema: string = ```ts 'https://moonrepo.dev/schemas/tasks.json' ```

extends

extends: null | string

fileGroups

fileGroups: Record<string, string[]>

implicitDeps

implicitDeps: string[]

implicitInputs

implicitInputs: string[]

tasks

tasks: Record<string, TaskConfig>
- - + + \ No newline at end of file diff --git a/api/types/interface/NodeConfig.html b/api/types/interface/NodeConfig.html index fe67c2c780c..f8389ffc020 100644 --- a/api/types/interface/NodeConfig.html +++ b/api/types/interface/NodeConfig.html @@ -13,8 +13,8 @@ - - + +
@@ -25,7 +25,7 @@ ```

dependencyVersionFormat

dependencyVersionFormat: NodeVersionFormat

inferTasksFromScripts

inferTasksFromScripts: boolean

npm

packageManager

packageManager: NodePackageManager

plugin

plugin: null | string

pnpm

pnpm: null | PnpmConfig

syncProjectWorkspaceDependencies

syncProjectWorkspaceDependencies: boolean = ```ts true ```

syncVersionManagerConfig

syncVersionManagerConfig: null | NodeVersionManager

version

version: null | string

yarn

yarn: null | YarnConfig
- - + + \ No newline at end of file diff --git a/api/types/interface/NotifierConfig.html b/api/types/interface/NotifierConfig.html index c08b64c6cf8..2f2ac034957 100644 --- a/api/types/interface/NotifierConfig.html +++ b/api/types/interface/NotifierConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/NpmConfig.html b/api/types/interface/NpmConfig.html index ba259f23a80..e768cf4dfab 100644 --- a/api/types/interface/NpmConfig.html +++ b/api/types/interface/NpmConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/OwnersConfig.html b/api/types/interface/OwnersConfig.html index 266b2d62e0a..8c33c8b7c99 100644 --- a/api/types/interface/OwnersConfig.html +++ b/api/types/interface/OwnersConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialBinConfig.html b/api/types/interface/PartialBinConfig.html index e5c06fb3165..5f78bfdb137 100644 --- a/api/types/interface/PartialBinConfig.html +++ b/api/types/interface/PartialBinConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialBunpmConfig.html b/api/types/interface/PartialBunpmConfig.html index 2e32a4c210f..ecbdf39a56e 100644 --- a/api/types/interface/PartialBunpmConfig.html +++ b/api/types/interface/PartialBunpmConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialCodeownersConfig.html b/api/types/interface/PartialCodeownersConfig.html index 7da31d71d1c..08c0501cfb9 100644 --- a/api/types/interface/PartialCodeownersConfig.html +++ b/api/types/interface/PartialCodeownersConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialConstraintsConfig.html b/api/types/interface/PartialConstraintsConfig.html index 02ef5ed3b13..0e5bd38861a 100644 --- a/api/types/interface/PartialConstraintsConfig.html +++ b/api/types/interface/PartialConstraintsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialDenoConfig.html b/api/types/interface/PartialDenoConfig.html index e8c4ff50716..5c8cecb5504 100644 --- a/api/types/interface/PartialDenoConfig.html +++ b/api/types/interface/PartialDenoConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialDependencyConfig.html b/api/types/interface/PartialDependencyConfig.html index f2a701d8cd6..5980c9913fd 100644 --- a/api/types/interface/PartialDependencyConfig.html +++ b/api/types/interface/PartialDependencyConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialExperimentsConfig.html b/api/types/interface/PartialExperimentsConfig.html index 0ad391c00c1..cd829f0a5dd 100644 --- a/api/types/interface/PartialExperimentsConfig.html +++ b/api/types/interface/PartialExperimentsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialGeneratorConfig.html b/api/types/interface/PartialGeneratorConfig.html index 4e8dc6744ae..5f2ce6cf1c0 100644 --- a/api/types/interface/PartialGeneratorConfig.html +++ b/api/types/interface/PartialGeneratorConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialHasherConfig.html b/api/types/interface/PartialHasherConfig.html index 1f79ed65227..ac36e94e02e 100644 --- a/api/types/interface/PartialHasherConfig.html +++ b/api/types/interface/PartialHasherConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialHasherConfig

Index

Properties

optionalbatchSize

batchSize?: null | number = null | number

optionalignoreMissingPatterns

ignoreMissingPatterns?: null | string[]

optionalignorePatterns

ignorePatterns?: null | string[]

optionaloptimization

optimization?: null | HasherOptimization

optionalwalkStrategy

walkStrategy?: null | HasherWalkStrategy

optionalwarnOnMissingInputs

warnOnMissingInputs?: null | boolean = null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialInheritedTasksConfig.html b/api/types/interface/PartialInheritedTasksConfig.html index 78cb9143eb3..007cd94525e 100644 --- a/api/types/interface/PartialInheritedTasksConfig.html +++ b/api/types/interface/PartialInheritedTasksConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialInheritedTasksConfig

Index

Properties

optional$schema

$schema?: null | string = null | string

optionalextends

extends?: null | string

optionalfileGroups

fileGroups?: null | Record<string, string[]>

optionalimplicitDeps

implicitDeps?: null | string[]

optionalimplicitInputs

implicitInputs?: null | string[]

optionaltasks

tasks?: null | Record<string, PartialTaskConfig>
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialNodeConfig.html b/api/types/interface/PartialNodeConfig.html index 62932eef559..8a9b3f02f40 100644 --- a/api/types/interface/PartialNodeConfig.html +++ b/api/types/interface/PartialNodeConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialNodeConfig

Index

Properties

optionaladdEnginesConstraint

addEnginesConstraint?: null | boolean = null | boolean

optionalaliasPackageNames

aliasPackageNames?: null | NodeProjectAliasFormat

optionalbinExecArgs

binExecArgs?: null | string[]

optionalbun

bun?: null | PartialBunpmConfig

optionaldedupeOnLockfileChange

dedupeOnLockfileChange?: null | boolean = null | boolean

optionaldependencyVersionFormat

dependencyVersionFormat?: null | NodeVersionFormat

optionalinferTasksFromScripts

inferTasksFromScripts?: null | boolean

optionalnpm

npm?: null | PartialNpmConfig

optionalpackageManager

packageManager?: null | NodePackageManager

optionalplugin

plugin?: null | string

optionalpnpm

pnpm?: null | PartialPnpmConfig

optionalsyncProjectWorkspaceDependencies

syncProjectWorkspaceDependencies?: null | boolean = null | boolean

optionalsyncVersionManagerConfig

syncVersionManagerConfig?: null | NodeVersionManager

optionalversion

version?: null | string

optionalyarn

yarn?: null | PartialYarnConfig
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialNotifierConfig.html b/api/types/interface/PartialNotifierConfig.html index f4b6c30c314..dcf2be28d09 100644 --- a/api/types/interface/PartialNotifierConfig.html +++ b/api/types/interface/PartialNotifierConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialNpmConfig.html b/api/types/interface/PartialNpmConfig.html index 68649b5792a..bce2dfc23d3 100644 --- a/api/types/interface/PartialNpmConfig.html +++ b/api/types/interface/PartialNpmConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialOwnersConfig.html b/api/types/interface/PartialOwnersConfig.html index 560cd5d0d43..8bdbefd7232 100644 --- a/api/types/interface/PartialOwnersConfig.html +++ b/api/types/interface/PartialOwnersConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialPnpmConfig.html b/api/types/interface/PartialPnpmConfig.html index 96d9208f187..c8a57a462c8 100644 --- a/api/types/interface/PartialPnpmConfig.html +++ b/api/types/interface/PartialPnpmConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectConfig.html b/api/types/interface/PartialProjectConfig.html index 420e7b61ba5..be2ebdbad90 100644 --- a/api/types/interface/PartialProjectConfig.html +++ b/api/types/interface/PartialProjectConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialProjectConfig

Index

Properties

optional$schema

$schema?: null | string = null | string

optionaldependsOn

dependsOn?: null | PartialProjectDependsOn[]

optionalenv

env?: null | Record<string, string>

optionalfileGroups

fileGroups?: null | Record<string, string[]>

optionallanguage

language?: null | LanguageType

optionalowners

owners?: null | PartialOwnersConfig

optionalplatform

platform?: null | PlatformType

optionalproject

optionaltags

tags?: null | string[]

optionaltasks

tasks?: null | Record<string, PartialTaskConfig>

optionaltoolchain

optionaltype

type?: null | ProjectType

optionalworkspace

- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectMetadataConfig.html b/api/types/interface/PartialProjectMetadataConfig.html index 619c3b0e199..f96cf794c9a 100644 --- a/api/types/interface/PartialProjectMetadataConfig.html +++ b/api/types/interface/PartialProjectMetadataConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectToolchainCommonToolConfig.html b/api/types/interface/PartialProjectToolchainCommonToolConfig.html index 3a25835845f..784e11e6349 100644 --- a/api/types/interface/PartialProjectToolchainCommonToolConfig.html +++ b/api/types/interface/PartialProjectToolchainCommonToolConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectToolchainConfig.html b/api/types/interface/PartialProjectToolchainConfig.html index 28b131131e1..29b177f3469 100644 --- a/api/types/interface/PartialProjectToolchainConfig.html +++ b/api/types/interface/PartialProjectToolchainConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectToolchainTypeScriptConfig.html b/api/types/interface/PartialProjectToolchainTypeScriptConfig.html index 62770237dc4..cab2eb2e5f3 100644 --- a/api/types/interface/PartialProjectToolchainTypeScriptConfig.html +++ b/api/types/interface/PartialProjectToolchainTypeScriptConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialProjectToolchainTypeScriptConfig

Index

Properties

optionaldisabled

disabled?: null | boolean

optionalrouteOutDirToCache

routeOutDirToCache?: null | boolean

optionalsyncProjectReferences

syncProjectReferences?: null | boolean

optionalsyncProjectReferencesToPaths

syncProjectReferencesToPaths?: null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectWorkspaceConfig.html b/api/types/interface/PartialProjectWorkspaceConfig.html index 9f1929b2916..44967c40936 100644 --- a/api/types/interface/PartialProjectWorkspaceConfig.html +++ b/api/types/interface/PartialProjectWorkspaceConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html b/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html index 9be71f76f73..80745d7ad26 100644 --- a/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html +++ b/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialRunnerConfig.html b/api/types/interface/PartialRunnerConfig.html index 6854972eb24..361343fdcae 100644 --- a/api/types/interface/PartialRunnerConfig.html +++ b/api/types/interface/PartialRunnerConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialRunnerConfig

Index

Properties

optionalarchivableTargets

archivableTargets?: null | string[]

optionalcacheLifetime

cacheLifetime?: null | string = null | string

optionalinheritColorsForPipedTasks

inheritColorsForPipedTasks?: null | boolean = null | boolean

optionallogRunningCommand

logRunningCommand?: null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialRustConfig.html b/api/types/interface/PartialRustConfig.html index 42f3c1c88b4..fd355828086 100644 --- a/api/types/interface/PartialRustConfig.html +++ b/api/types/interface/PartialRustConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialRustConfig

Index

Properties

optionalbins

bins?: null | PartialBinEntry[]

optionalcomponents

components?: null | string[]

optionalplugin

plugin?: null | string

optionalsyncToolchainConfig

syncToolchainConfig?: null | boolean

optionaltargets

targets?: null | string[]

optionalversion

version?: null | string
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTaskConfig.html b/api/types/interface/PartialTaskConfig.html index 3c6d73dd436..c5ab9ddee7d 100644 --- a/api/types/interface/PartialTaskConfig.html +++ b/api/types/interface/PartialTaskConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialTaskConfig

Index

Properties

optionalargs

optionalcommand

optionaldeps

deps?: null | string[]

optionalenv

env?: null | Record<string, string>

optionalextends

extends?: null | string

optionalinputs

inputs?: null | string[]

optionallocal

local?: null | boolean

optionaloptions

options?: null | PartialTaskOptionsConfig

optionaloutputs

outputs?: null | string[]

optionalplatform

platform?: null | PlatformType

optionaltype

type?: null | TaskType
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTaskOptionsConfig.html b/api/types/interface/PartialTaskOptionsConfig.html index 76126763840..6623e2f9f11 100644 --- a/api/types/interface/PartialTaskOptionsConfig.html +++ b/api/types/interface/PartialTaskOptionsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialTaskOptionsConfig

Index

Properties

optionalaffectedFiles

affectedFiles?: null | TaskOptionAffectedFiles

optionalallowFailure

allowFailure?: null | boolean

optionalcache

cache?: null | boolean

optionalenvFile

envFile?: null | TaskOptionEnvFile

optionalinteractive

interactive?: null | boolean

optionalmergeArgs

mergeArgs?: null | TaskMergeStrategy

optionalmergeDeps

mergeDeps?: null | TaskMergeStrategy

optionalmergeEnv

mergeEnv?: null | TaskMergeStrategy

optionalmergeInputs

mergeInputs?: null | TaskMergeStrategy

optionalmergeOutputs

mergeOutputs?: null | TaskMergeStrategy

optionaloutputStyle

outputStyle?: null | TaskOutputStyle

optionalpersistent

persistent?: null | boolean

optionalretryCount

retryCount?: null | number

optionalrunDepsInParallel

runDepsInParallel?: null | boolean

optionalrunFromWorkspaceRoot

runFromWorkspaceRoot?: null | boolean

optionalrunInCI

runInCI?: null | boolean

optionalshell

shell?: null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateConfig.html b/api/types/interface/PartialTemplateConfig.html index 0af50627eaa..5359b0f421f 100644 --- a/api/types/interface/PartialTemplateConfig.html +++ b/api/types/interface/PartialTemplateConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateFrontmatterConfig.html b/api/types/interface/PartialTemplateFrontmatterConfig.html index 36cbd5643a8..cee93f1e32c 100644 --- a/api/types/interface/PartialTemplateFrontmatterConfig.html +++ b/api/types/interface/PartialTemplateFrontmatterConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateVariableBoolSetting.html b/api/types/interface/PartialTemplateVariableBoolSetting.html index 1cbc915828c..eadfceb59b4 100644 --- a/api/types/interface/PartialTemplateVariableBoolSetting.html +++ b/api/types/interface/PartialTemplateVariableBoolSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateVariableEnumSetting.html b/api/types/interface/PartialTemplateVariableEnumSetting.html index 2e4e3010d57..37f5fbe62fa 100644 --- a/api/types/interface/PartialTemplateVariableEnumSetting.html +++ b/api/types/interface/PartialTemplateVariableEnumSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateVariableEnumValueConfig.html b/api/types/interface/PartialTemplateVariableEnumValueConfig.html index b90454f5330..dce83f0aead 100644 --- a/api/types/interface/PartialTemplateVariableEnumValueConfig.html +++ b/api/types/interface/PartialTemplateVariableEnumValueConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateVariableNumberSetting.html b/api/types/interface/PartialTemplateVariableNumberSetting.html index 84de059a56b..b0eedd335a9 100644 --- a/api/types/interface/PartialTemplateVariableNumberSetting.html +++ b/api/types/interface/PartialTemplateVariableNumberSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTemplateVariableStringSetting.html b/api/types/interface/PartialTemplateVariableStringSetting.html index 546e4b1ad47..2bd6fbd2e70 100644 --- a/api/types/interface/PartialTemplateVariableStringSetting.html +++ b/api/types/interface/PartialTemplateVariableStringSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialToolchainConfig.html b/api/types/interface/PartialToolchainConfig.html index 717c369ab76..62985a7613e 100644 --- a/api/types/interface/PartialToolchainConfig.html +++ b/api/types/interface/PartialToolchainConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialToolchainConfig

Index

Properties

optional$schema

$schema?: null | string = null | string

optionaldeno

deno?: null | PartialDenoConfig

optionalextends

extends?: null | string

optionalnode

node?: null | PartialNodeConfig

optionalrust

rust?: null | PartialRustConfig

optionaltypescript

typescript?: null | PartialTypeScriptConfig
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTypeScriptConfig.html b/api/types/interface/PartialTypeScriptConfig.html index 83cc76d1bd1..f90ef231b3b 100644 --- a/api/types/interface/PartialTypeScriptConfig.html +++ b/api/types/interface/PartialTypeScriptConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialTypeScriptConfig

Index

Properties

optionalcreateMissingConfig

createMissingConfig?: null | boolean = null | boolean

optionalprojectConfigFileName

projectConfigFileName?: null | string = null | string

optionalrootConfigFileName

rootConfigFileName?: null | string = null | string

optionalrootOptionsConfigFileName

rootOptionsConfigFileName?: null | string = null | string

optionalrouteOutDirToCache

routeOutDirToCache?: null | boolean

optionalsyncProjectReferences

syncProjectReferences?: null | boolean = null | boolean

optionalsyncProjectReferencesToPaths

syncProjectReferencesToPaths?: null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialVcsConfig.html b/api/types/interface/PartialVcsConfig.html index df4dbb1c1c0..7df9115c0be 100644 --- a/api/types/interface/PartialVcsConfig.html +++ b/api/types/interface/PartialVcsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialVcsConfig

Index

Properties

optionaldefaultBranch

defaultBranch?: null | string = null | string

optionalhooks

hooks?: null | Record<string, string[]>

optionalmanager

manager?: null | git

optionalprovider

provider?: null | VcsProvider

optionalremoteCandidates

remoteCandidates?: null | string[]

optionalsyncHooks

syncHooks?: null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialWorkspaceConfig.html b/api/types/interface/PartialWorkspaceConfig.html index d746ff5bb9b..e244a736ce9 100644 --- a/api/types/interface/PartialWorkspaceConfig.html +++ b/api/types/interface/PartialWorkspaceConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

PartialWorkspaceConfig

Index

Properties

optional$schema

$schema?: null | string = null | string

optionalcodeowners

codeowners?: null | PartialCodeownersConfig

optionalconstraints

constraints?: null | PartialConstraintsConfig

optionalexperiments

experiments?: null | PartialExperimentsConfig

optionalextends

extends?: null | string

optionalgenerator

generator?: null | PartialGeneratorConfig

optionalhasher

hasher?: null | PartialHasherConfig

optionalnotifier

notifier?: null | PartialNotifierConfig

optionalprojects

projects?: null | PartialWorkspaceProjects

optionalrunner

runner?: null | PartialRunnerConfig

optionaltelemetry

telemetry?: null | boolean = null | boolean

optionalvcs

vcs?: null | PartialVcsConfig

optionalversionConstraint

versionConstraint?: null | string
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialWorkspaceProjectsConfig.html b/api/types/interface/PartialWorkspaceProjectsConfig.html index ac76196d41f..705bec59082 100644 --- a/api/types/interface/PartialWorkspaceProjectsConfig.html +++ b/api/types/interface/PartialWorkspaceProjectsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialYarnConfig.html b/api/types/interface/PartialYarnConfig.html index 14c7a5e39c5..c0b3a31dff9 100644 --- a/api/types/interface/PartialYarnConfig.html +++ b/api/types/interface/PartialYarnConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PnpmConfig.html b/api/types/interface/PnpmConfig.html index 39d7476a8a7..f15d0f7610d 100644 --- a/api/types/interface/PnpmConfig.html +++ b/api/types/interface/PnpmConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/Project.html b/api/types/interface/Project.html index 03420b48d9d..110cc6012a4 100644 --- a/api/types/interface/Project.html +++ b/api/types/interface/Project.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

Project

Index

Properties

alias

alias: null | string

config

dependencies

dependencies: Record<string, DependencyConfig>

fileGroups

fileGroups: Record<string, FileGroup>

id

id: string

inherited

inherited: { config: InheritedTasksConfig; layers: Record<string, PartialInheritedTasksConfig>; order: string[] }

language

language: LanguageType

platform

platform: PlatformType

root

root: string

source

source: string

tasks

tasks: Record<string, Task>

type

- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectConfig.html b/api/types/interface/ProjectConfig.html index 5dca0fc46cf..3a6946403ad 100644 --- a/api/types/interface/ProjectConfig.html +++ b/api/types/interface/ProjectConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content

ProjectConfig

Index

Properties

$schema

$schema: string = ```ts 'https://moonrepo.dev/schemas/project.json' ```

dependsOn

dependsOn: ProjectDependsOn[]

env

env: Record<string, string>

fileGroups

fileGroups: Record<string, string[]>

language

language: LanguageType

owners

owners: OwnersConfig

platform

platform: null | PlatformType

project

project: null | ProjectMetadataConfig

tags

tags: string[]

tasks

tasks: Record<string, TaskConfig>

toolchain

type

workspace

- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectMetadataConfig.html b/api/types/interface/ProjectMetadataConfig.html index 6f164bdfb26..17304ce60d2 100644 --- a/api/types/interface/ProjectMetadataConfig.html +++ b/api/types/interface/ProjectMetadataConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectToolchainCommonToolConfig.html b/api/types/interface/ProjectToolchainCommonToolConfig.html index 7df090b9c05..9bdcd9882b2 100644 --- a/api/types/interface/ProjectToolchainCommonToolConfig.html +++ b/api/types/interface/ProjectToolchainCommonToolConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectToolchainConfig.html b/api/types/interface/ProjectToolchainConfig.html index 93672743840..3d8b7a52553 100644 --- a/api/types/interface/ProjectToolchainConfig.html +++ b/api/types/interface/ProjectToolchainConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectToolchainTypeScriptConfig.html b/api/types/interface/ProjectToolchainTypeScriptConfig.html index d1e0fa6be0a..902281770b1 100644 --- a/api/types/interface/ProjectToolchainTypeScriptConfig.html +++ b/api/types/interface/ProjectToolchainTypeScriptConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectWorkspaceConfig.html b/api/types/interface/ProjectWorkspaceConfig.html index 77be6ad685c..b3996edf0d7 100644 --- a/api/types/interface/ProjectWorkspaceConfig.html +++ b/api/types/interface/ProjectWorkspaceConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html b/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html index c6107cf61a5..312965db4ed 100644 --- a/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html +++ b/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ProviderEnvironment.html b/api/types/interface/ProviderEnvironment.html index e43734d05e6..e70d2ef4a82 100644 --- a/api/types/interface/ProviderEnvironment.html +++ b/api/types/interface/ProviderEnvironment.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/RunReport.html b/api/types/interface/RunReport.html index d539c2ef861..39f28f1784e 100644 --- a/api/types/interface/RunReport.html +++ b/api/types/interface/RunReport.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

RunReport

Index

Properties

actions

actions: Action[]

comparisonEstimate

comparisonEstimate: { duration: Duration; gain: null | Duration; loss: null | Duration; percent: number; tasks: Record<string, { count: number; total: Duration }> }

context

context: ActionContext

duration

duration: Duration

optionalestimatedSavings

estimatedSavings?: null | Duration

optionalprojectedDuration

projectedDuration?: Duration
- - + + \ No newline at end of file diff --git a/api/types/interface/RunnerConfig.html b/api/types/interface/RunnerConfig.html index f3352551674..36f5fb1b352 100644 --- a/api/types/interface/RunnerConfig.html +++ b/api/types/interface/RunnerConfig.html @@ -13,8 +13,8 @@ - - + +
@@ -23,7 +23,7 @@ ```

inheritColorsForPipedTasks

inheritColorsForPipedTasks: boolean = ```ts true ```

logRunningCommand

logRunningCommand: boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/Runtime.html b/api/types/interface/Runtime.html index 56482151d8e..80e3cae9dfa 100644 --- a/api/types/interface/Runtime.html +++ b/api/types/interface/Runtime.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/RustConfig.html b/api/types/interface/RustConfig.html index 6b2cdd5b010..ebd39b6f116 100644 --- a/api/types/interface/RustConfig.html +++ b/api/types/interface/RustConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TargetState.html b/api/types/interface/TargetState.html index 0a4992cb7df..51361884be0 100644 --- a/api/types/interface/TargetState.html +++ b/api/types/interface/TargetState.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/Task.html b/api/types/interface/Task.html index 2c29204c2dc..68170ef572b 100644 --- a/api/types/interface/Task.html +++ b/api/types/interface/Task.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

Task

Index

Properties

args

args: string[]

command

command: string

deps

deps: string[]

env

env: Record<string, string>

id

id: string

inputFiles

inputFiles: string[]

inputGlobs

inputGlobs: string[]

inputVars

inputVars: string[]

inputs

inputs: string[]

options

options: TaskOptions

outputFiles

outputFiles: string[]

outputGlobs

outputGlobs: string[]

outputs

outputs: string[]

platform

platform: PlatformType

target

target: string

type

type: TaskType
- - + + \ No newline at end of file diff --git a/api/types/interface/TaskConfig.html b/api/types/interface/TaskConfig.html index dd5a5cd348d..caf5e90a65d 100644 --- a/api/types/interface/TaskConfig.html +++ b/api/types/interface/TaskConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

TaskConfig

Index

Properties

args

command

deps

deps: string[]

env

env: Record<string, string>

extends

extends: null | string

inputs

inputs: null | string[]

local

local: null | boolean

options

outputs

outputs: null | string[]

platform

platform: PlatformType

type

type: null | TaskType
- - + + \ No newline at end of file diff --git a/api/types/interface/TaskOptions.html b/api/types/interface/TaskOptions.html index 4835ec0852a..90f2a591aab 100644 --- a/api/types/interface/TaskOptions.html +++ b/api/types/interface/TaskOptions.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

TaskOptions

Index

Properties

affectedFiles

affectedFiles: boolean | args | env

cache

cache: boolean

envFile

envFile: null | string

mergeArgs

mergeDeps

mergeEnv

mergeInputs

mergeInputs: TaskMergeStrategy

mergeOutputs

mergeOutputs: TaskMergeStrategy

outputStyle

outputStyle: null | TaskOutputStyle

persistent

persistent: boolean

retryCount

retryCount: number

runDepsInParallel

runDepsInParallel: boolean

runFromWorkspaceRoot

runFromWorkspaceRoot: boolean

runInCI

runInCI: boolean

shell

shell: boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/TaskOptionsConfig.html b/api/types/interface/TaskOptionsConfig.html index 681762073d3..c9fde4543d6 100644 --- a/api/types/interface/TaskOptionsConfig.html +++ b/api/types/interface/TaskOptionsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content

TaskOptionsConfig

Index

Properties

affectedFiles

affectedFiles: null | TaskOptionAffectedFiles

allowFailure

allowFailure: null | boolean

cache

cache: null | boolean

envFile

envFile: null | TaskOptionEnvFile

interactive

interactive: null | boolean

mergeArgs

mergeArgs: null | TaskMergeStrategy

mergeDeps

mergeDeps: null | TaskMergeStrategy

mergeEnv

mergeEnv: null | TaskMergeStrategy

mergeInputs

mergeInputs: null | TaskMergeStrategy

mergeOutputs

mergeOutputs: null | TaskMergeStrategy

outputStyle

outputStyle: null | TaskOutputStyle

persistent

persistent: null | boolean

retryCount

retryCount: null | number

runDepsInParallel

runDepsInParallel: null | boolean

runFromWorkspaceRoot

runFromWorkspaceRoot: null | boolean

runInCI

runInCI: null | boolean

shell

shell: null | boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateConfig.html b/api/types/interface/TemplateConfig.html index c298bd950b3..4b7ec7d67a7 100644 --- a/api/types/interface/TemplateConfig.html +++ b/api/types/interface/TemplateConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateFrontmatterConfig.html b/api/types/interface/TemplateFrontmatterConfig.html index 5bbcaf6f285..631b759b0fc 100644 --- a/api/types/interface/TemplateFrontmatterConfig.html +++ b/api/types/interface/TemplateFrontmatterConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateVariableBoolSetting.html b/api/types/interface/TemplateVariableBoolSetting.html index 84995c50a87..418001c652b 100644 --- a/api/types/interface/TemplateVariableBoolSetting.html +++ b/api/types/interface/TemplateVariableBoolSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateVariableEnumSetting.html b/api/types/interface/TemplateVariableEnumSetting.html index 21f4064e80f..d6d62324d07 100644 --- a/api/types/interface/TemplateVariableEnumSetting.html +++ b/api/types/interface/TemplateVariableEnumSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateVariableEnumValueConfig.html b/api/types/interface/TemplateVariableEnumValueConfig.html index ad6b87dad32..f70c73f3bed 100644 --- a/api/types/interface/TemplateVariableEnumValueConfig.html +++ b/api/types/interface/TemplateVariableEnumValueConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateVariableNumberSetting.html b/api/types/interface/TemplateVariableNumberSetting.html index 38bb00c49a9..420b7fe5f5e 100644 --- a/api/types/interface/TemplateVariableNumberSetting.html +++ b/api/types/interface/TemplateVariableNumberSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TemplateVariableStringSetting.html b/api/types/interface/TemplateVariableStringSetting.html index cdadb2ad74e..85107f6fc2a 100644 --- a/api/types/interface/TemplateVariableStringSetting.html +++ b/api/types/interface/TemplateVariableStringSetting.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ToolchainConfig.html b/api/types/interface/ToolchainConfig.html index 45faf7dde04..6b5495ecd32 100644 --- a/api/types/interface/ToolchainConfig.html +++ b/api/types/interface/ToolchainConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/TypeScriptConfig.html b/api/types/interface/TypeScriptConfig.html index 84570cd220c..4bb5a55f385 100644 --- a/api/types/interface/TypeScriptConfig.html +++ b/api/types/interface/TypeScriptConfig.html @@ -13,8 +13,8 @@ - - + +
@@ -29,7 +29,7 @@ ```

routeOutDirToCache

routeOutDirToCache: boolean

syncProjectReferences

syncProjectReferences: boolean = ```ts true ```

syncProjectReferencesToPaths

syncProjectReferencesToPaths: boolean
- - + + \ No newline at end of file diff --git a/api/types/interface/VcsConfig.html b/api/types/interface/VcsConfig.html index 1837def1ba5..6b22cbd6ed9 100644 --- a/api/types/interface/VcsConfig.html +++ b/api/types/interface/VcsConfig.html @@ -13,15 +13,15 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/WebhookPayload.html b/api/types/interface/WebhookPayload.html index de8a6590a98..a29c9046520 100644 --- a/api/types/interface/WebhookPayload.html +++ b/api/types/interface/WebhookPayload.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/WorkspaceConfig.html b/api/types/interface/WorkspaceConfig.html index e880ddf9fb9..6092b409694 100644 --- a/api/types/interface/WorkspaceConfig.html +++ b/api/types/interface/WorkspaceConfig.html @@ -13,8 +13,8 @@ - - + +
@@ -23,7 +23,7 @@ ```

codeowners

codeowners: CodeownersConfig

constraints

constraints: ConstraintsConfig

experiments

experiments: ExperimentsConfig

extends

extends: null | string

generator

generator: GeneratorConfig

hasher

hasher: HasherConfig

notifier

notifier: NotifierConfig

projects

runner

runner: RunnerConfig

telemetry

telemetry: boolean = ```ts true ```

vcs

versionConstraint

versionConstraint: null | string
- - + + \ No newline at end of file diff --git a/api/types/interface/WorkspaceProjectsConfig.html b/api/types/interface/WorkspaceProjectsConfig.html index 8a551b4b3e7..ac2014cf785 100644 --- a/api/types/interface/WorkspaceProjectsConfig.html +++ b/api/types/interface/WorkspaceProjectsConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/YarnConfig.html b/api/types/interface/YarnConfig.html index b20f6a8a344..2394b6ec6d5 100644 --- a/api/types/interface/YarnConfig.html +++ b/api/types/interface/YarnConfig.html @@ -13,13 +13,13 @@ - - + +
Skip to main content
- - + + \ No newline at end of file diff --git a/assets/images/v1.16-cd59c941a2ddc0f63435db79a3c420eb.png b/assets/images/v1.16-cd59c941a2ddc0f63435db79a3c420eb.png new file mode 100644 index 0000000000000000000000000000000000000000..e4828410dce0e52a6a8cd64aaaaf657d2f8fa687 GIT binary patch literal 1022594 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

GRMMJbli*VpSb7MRbhGd}NZ&#slES4wW51P|}hY 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

vzNMwI^kD2oG$7W+wSov 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 _# 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ⓈfR@^+# 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.exports=JSON.parse('{"permalink":"/blog/tags/automation","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/429b21e2.5da96da1.js b/assets/js/429b21e2.5da96da1.js deleted file mode 100644 index 993f8475cbc..00000000000 --- a/assets/js/429b21e2.5da96da1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[40459],{35318:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>d});var a=t(27378);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(t),d=o,h=c["".concat(s,".").concat(d)]||c[d]||m[d]||r;return t?a.createElement(h,i(i({ref:n},u),{},{components:t})):a.createElement(h,i({ref:n},u))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=c;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var p=2;p{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var a=t(25773),o=(t(27378),t(35318));const r={slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain"],image:"./img/moon/v1.15.png"},i=void 0,l={permalink:"/blog/moon-v1.16",editUrl:"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-30_moon-v1.16.mdx",source:"@site/blog/2023-10-30_moon-v1.16.mdx",title:"moon v1.16 - Bun support, Rust improvements, and more!",description:"With this release, we've focused on requests from the community, instead of internal migration work",date:"2023-10-30T00:00:00.000Z",formattedDate:"October 30, 2023",tags:[{label:"bun",permalink:"/blog/tags/bun"},{label:"rust",permalink:"/blog/tags/rust"},{label:"toolchain",permalink:"/blog/tags/toolchain"}],readingTime:2.95,hasTruncateMarker:!0,authors:[{name:"Miles Johnson",title:"Founder, developer",url:"https://github.com/milesj",imageURL:"/img/authors/miles.jpg",key:"milesj"}],frontMatter:{slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain"],image:"./img/moon/v1.15.png"},nextItem:{title:"proto v0.21 - Linux x64 musl support",permalink:"/blog/proto-v0.21"}},s={image:t(2985).Z,authorsImageUrls:[void 0]},p=[{value:"Bun as a package manager",id:"bun-as-a-package-manager",level:2},{value:"Configure Rust components and targets",id:"configure-rust-components-and-targets",level:2},{value:"Force toolchain to use global binaries",id:"force-toolchain-to-use-global-binaries",level:2},{value:"Other changes",id:"other-changes",level:2}],u={toc:p};function m(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"With this release, we've focused on requests from the community, instead of internal migration work\nor new features."),(0,o.kt)("h2",{id:"bun-as-a-package-manager"},"Bun as a package manager"),(0,o.kt)("p",null,"Now that ",(0,o.kt)("a",{parentName:"p",href:"https://bun.sh/blog/bun-v1.0"},"Bun v1 has officially released")," and our\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/bun-plugin"},"bun-plugin")," for proto has stabilized, we can start slowly\nintegrating Bun support into moon. The first step in this series is adding Bun as a supported\npackage manager for Node.js. Seems odd as they are conflicting runtimes... right? While true, a lot\nof users are interested in using Bun purely as a package manager, as it can install dependencies\nincredibly fast. So why not support it?"),(0,o.kt)("p",null,"In this release, you can now install dependencies with Bun by configuring\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#packagemanager"},(0,o.kt)("inlineCode",{parentName:"a"},"node.packageManager"))," and\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#npm-pnpm-yarn"},(0,o.kt)("inlineCode",{parentName:"a"},"node.bun"))," in your toolchain."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title=".moon/toolchain.yml"',title:'".moon/toolchain.yml"'},"node:\n packageManager: 'bun'\n bun:\n version: '1.0.0'\n")),(0,o.kt)("p",null,"Additionally, you can now execute Bun commands within tasks! However, ensure the task's platform is\nstill set to ",(0,o.kt)("inlineCode",{parentName:"p"},"node")," though, as this is using Bun as a package manager within Node.js, not as a\nseparate runtime."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="moon.yml"',title:'"moon.yml"'},"tasks:\n test:\n command: 'bun test'\n platform: 'node'\n")),(0,o.kt)("p",null,"When using Bun, the following integrations are applied:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Will automatically download and install Bun for the configured version."),(0,o.kt)("li",{parentName:"ul"},"Will install dependencies using ",(0,o.kt)("inlineCode",{parentName:"li"},"bun install")," (deduping currently not supported)."),(0,o.kt)("li",{parentName:"ul"},"Will parse ",(0,o.kt)("inlineCode",{parentName:"li"},"bun.lockb")," for dependency resolution and task hashing."),(0,o.kt)("li",{parentName:"ul"},"Will use ",(0,o.kt)("inlineCode",{parentName:"li"},"bunx")," instead of ",(0,o.kt)("inlineCode",{parentName:"li"},"npx")," for one-off package executions."),(0,o.kt)("li",{parentName:"ul"},"Can execute ",(0,o.kt)("inlineCode",{parentName:"li"},"bun")," commands within tasks.")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"This change ",(0,o.kt)("em",{parentName:"p"},"only")," adds support for Bun as a package manager for Node.js. It does not add Bun as a\nsupported language/platform in the toolchain, but it does pave the way for this to happen! Also\nnote that Bun ",(0,o.kt)("em",{parentName:"p"},"is not supported on Windows"),"!")),(0,o.kt)("h2",{id:"configure-rust-components-and-targets"},"Configure Rust components and targets"),(0,o.kt)("p",null,"We've had Rust tier 2 and 3 support for quite a while now, but there was a big missing piece: the\nability to configure and install additional\n",(0,o.kt)("a",{parentName:"p",href:"https://rust-lang.github.io/rustup/concepts/components.html"},"components")," and\n",(0,o.kt)("a",{parentName:"p",href:"https://doc.rust-lang.org/nightly/rustc/platform-support.html"},"targets")," for the current toolchain.\nIn this release, we've added support for both!"),(0,o.kt)("p",null,"Simply configure the ",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#components"},(0,o.kt)("inlineCode",{parentName:"a"},"rust.components"))," or\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#targets"},(0,o.kt)("inlineCode",{parentName:"a"},"rust.targets"))," settings in\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain"},(0,o.kt)("inlineCode",{parentName:"a"},".moon/toolchain.yml")),", and moon will automatically install them when the\npipeline is ran. This functionality uses the same hashing implementation as\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#bins-1"},(0,o.kt)("inlineCode",{parentName:"a"},"rust.bins")),", so will only install the first time, and again if the\nconfiguration changes (or the cache is removed)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title=".moon/toolchain.yml"',title:'".moon/toolchain.yml"'},"rust:\n version: '1.73.0'\n components:\n - 'clippy'\n - 'rust-analyzer'\n targets:\n - 'wasm32-wasi'\n")),(0,o.kt)("h2",{id:"force-toolchain-to-use-global-binaries"},"Force toolchain to use global binaries"),(0,o.kt)("p",null,"Our ",(0,o.kt)("a",{parentName:"p",href:"/docs/concepts/toolchain"},"toolchain")," is great for local development, as it ensures all\ndevelopers and machines are running the exact versions of tools required for the workspace. However,\nit becomes overkill for other environments like CI and Docker where the environment has been\npre-configured."),(0,o.kt)("p",null,"To avoid the unnecessary overhead of download and installing tools in the toolchain, we're\nintroducing the ",(0,o.kt)("inlineCode",{parentName:"p"},"MOON_TOOLCHAIN_FORCE_GLOBALS")," environment variable. When provided, this will:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Disable downloading and installing tools (will still download the WASM plugins)."),(0,o.kt)("li",{parentName:"ul"},"Execute all tool commands using the global binary available on ",(0,o.kt)("inlineCode",{parentName:"li"},"PATH"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"MOON_TOOLCHAIN_FORCE_GLOBALS=true moon ci\n")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"We're looking into ways to automate this process, but for now, this is the best solution.")),(0,o.kt)("h2",{id:"other-changes"},"Other changes"),(0,o.kt)("p",null,"View the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/moon/releases/tag/v1.16.0"},"official release")," for a full list\nof changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Added an improved task inheritance chain resolver. To fallback to the previous behavior, set\n",(0,o.kt)("inlineCode",{parentName:"li"},"experiments.interweavedTaskInheritance: false")," in ",(0,o.kt)("inlineCode",{parentName:"li"},".moon/workspace.yml"),"."),(0,o.kt)("li",{parentName:"ul"},"Added a new ",(0,o.kt)("a",{parentName:"li",href:"/docs/config/project#type"},"project type ",(0,o.kt)("inlineCode",{parentName:"a"},"automation")),", for projects like E2E and\nintegration testing."),(0,o.kt)("li",{parentName:"ul"},"Updated action graph cycle detection to list all nodes in the cycle (when detectable)."),(0,o.kt)("li",{parentName:"ul"},"Updated all npx calls to use a package manager equivalent. For example: ",(0,o.kt)("inlineCode",{parentName:"li"},"yarn dlx"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"pnpm dlx"),",\n",(0,o.kt)("inlineCode",{parentName:"li"},"bunx"),"."),(0,o.kt)("li",{parentName:"ul"},"Updated to support Yarn v4.")))}m.isMDXComponent=!0},2985:(e,n,t)=>{t.d(n,{Z:()=>a});const a=t.p+"assets/images/v1.15-24f6509aa7bcbfaf9ac48f4d63883483.png"}}]); \ No newline at end of file diff --git a/assets/js/429b21e2.6abca5dc.js b/assets/js/429b21e2.6abca5dc.js new file mode 100644 index 00000000000..6400d5e34d7 --- /dev/null +++ b/assets/js/429b21e2.6abca5dc.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[40459],{35318:(e,n,t)=>{t.d(n,{Zo:()=>u,kt:()=>d});var a=t(27378);function o(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function r(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function i(e){for(var n=1;n=0||(o[t]=e[t]);return o}(e,n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(o[t]=e[t])}return o}var s=a.createContext({}),p=function(e){var n=a.useContext(s),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},u=function(e){var n=p(e.components);return a.createElement(s.Provider,{value:n},e.children)},m={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},c=a.forwardRef((function(e,n){var t=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=p(t),d=o,g=c["".concat(s,".").concat(d)]||c[d]||m[d]||r;return t?a.createElement(g,i(i({ref:n},u),{},{components:t})):a.createElement(g,i({ref:n},u))}));function d(e,n){var t=arguments,o=n&&n.mdxType;if("string"==typeof e||o){var r=t.length,i=new Array(r);i[0]=c;var l={};for(var s in n)hasOwnProperty.call(n,s)&&(l[s]=n[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var p=2;p{t.r(n),t.d(n,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>r,metadata:()=>l,toc:()=>p});var a=t(25773),o=(t(27378),t(35318));const r={slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain","automation","package","manager"],image:"./img/moon/v1.16.png"},i=void 0,l={permalink:"/blog/moon-v1.16",editUrl:"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-30_moon-v1.16.mdx",source:"@site/blog/2023-10-30_moon-v1.16.mdx",title:"moon v1.16 - Bun support, Rust improvements, and more!",description:"With this release, we've focused on requests from the community, instead of internal migration work",date:"2023-10-30T00:00:00.000Z",formattedDate:"October 30, 2023",tags:[{label:"bun",permalink:"/blog/tags/bun"},{label:"rust",permalink:"/blog/tags/rust"},{label:"toolchain",permalink:"/blog/tags/toolchain"},{label:"automation",permalink:"/blog/tags/automation"},{label:"package",permalink:"/blog/tags/package"},{label:"manager",permalink:"/blog/tags/manager"}],readingTime:2.95,hasTruncateMarker:!0,authors:[{name:"Miles Johnson",title:"Founder, developer",url:"https://github.com/milesj",imageURL:"/img/authors/miles.jpg",key:"milesj"}],frontMatter:{slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain","automation","package","manager"],image:"./img/moon/v1.16.png"},nextItem:{title:"proto v0.21 - Linux x64 musl support",permalink:"/blog/proto-v0.21"}},s={image:t(68703).Z,authorsImageUrls:[void 0]},p=[{value:"Bun as a package manager",id:"bun-as-a-package-manager",level:2},{value:"Configure Rust components and targets",id:"configure-rust-components-and-targets",level:2},{value:"Force toolchain to use global binaries",id:"force-toolchain-to-use-global-binaries",level:2},{value:"Other changes",id:"other-changes",level:2}],u={toc:p};function m(e){let{components:n,...t}=e;return(0,o.kt)("wrapper",(0,a.Z)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"With this release, we've focused on requests from the community, instead of internal migration work\nor new features."),(0,o.kt)("h2",{id:"bun-as-a-package-manager"},"Bun as a package manager"),(0,o.kt)("p",null,"Now that ",(0,o.kt)("a",{parentName:"p",href:"https://bun.sh/blog/bun-v1.0"},"Bun v1 has officially released")," and our\n",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/bun-plugin"},"bun-plugin")," for proto has stabilized, we can start slowly\nintegrating Bun support into moon. The first step in this series is adding Bun as a supported\npackage manager for Node.js. Seems odd as they are conflicting runtimes... right? While true, a lot\nof users are interested in using Bun purely as a package manager, as it can install dependencies\nincredibly fast. So why not support it?"),(0,o.kt)("p",null,"In this release, you can now install dependencies with Bun by configuring\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#packagemanager"},(0,o.kt)("inlineCode",{parentName:"a"},"node.packageManager"))," and\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#npm-pnpm-yarn"},(0,o.kt)("inlineCode",{parentName:"a"},"node.bun"))," in your toolchain."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title=".moon/toolchain.yml"',title:'".moon/toolchain.yml"'},"node:\n packageManager: 'bun'\n bun:\n version: '1.0.0'\n")),(0,o.kt)("p",null,"Additionally, you can now execute Bun commands within tasks! However, ensure the task's platform is\nstill set to ",(0,o.kt)("inlineCode",{parentName:"p"},"node")," though, as this is using Bun as a package manager within Node.js, not as a\nseparate runtime."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title="moon.yml"',title:'"moon.yml"'},"tasks:\n test:\n command: 'bun test'\n platform: 'node'\n")),(0,o.kt)("p",null,"When using Bun, the following integrations are applied:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Will automatically download and install Bun for the configured version."),(0,o.kt)("li",{parentName:"ul"},"Will install dependencies using ",(0,o.kt)("inlineCode",{parentName:"li"},"bun install")," (deduping currently not supported)."),(0,o.kt)("li",{parentName:"ul"},"Will parse ",(0,o.kt)("inlineCode",{parentName:"li"},"bun.lockb")," for dependency resolution and task hashing."),(0,o.kt)("li",{parentName:"ul"},"Will use ",(0,o.kt)("inlineCode",{parentName:"li"},"bunx")," instead of ",(0,o.kt)("inlineCode",{parentName:"li"},"npx")," for one-off package executions."),(0,o.kt)("li",{parentName:"ul"},"Can execute ",(0,o.kt)("inlineCode",{parentName:"li"},"bun")," commands within tasks.")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"This change ",(0,o.kt)("em",{parentName:"p"},"only")," adds support for Bun as a package manager for Node.js. It does not add Bun as a\nsupported language/platform in the toolchain, but it does pave the way for this to happen! Also\nnote that Bun ",(0,o.kt)("em",{parentName:"p"},"is not supported on Windows"),"!")),(0,o.kt)("h2",{id:"configure-rust-components-and-targets"},"Configure Rust components and targets"),(0,o.kt)("p",null,"We've had Rust tier 2 and 3 support for quite a while now, but there was a big missing piece: the\nability to configure and install additional\n",(0,o.kt)("a",{parentName:"p",href:"https://rust-lang.github.io/rustup/concepts/components.html"},"components")," and\n",(0,o.kt)("a",{parentName:"p",href:"https://doc.rust-lang.org/nightly/rustc/platform-support.html"},"targets")," for the current toolchain.\nIn this release, we've added support for both!"),(0,o.kt)("p",null,"Simply configure the ",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#components"},(0,o.kt)("inlineCode",{parentName:"a"},"rust.components"))," or\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#targets"},(0,o.kt)("inlineCode",{parentName:"a"},"rust.targets"))," settings in\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain"},(0,o.kt)("inlineCode",{parentName:"a"},".moon/toolchain.yml")),", and moon will automatically install them when the\npipeline is ran. This functionality uses the same hashing implementation as\n",(0,o.kt)("a",{parentName:"p",href:"/docs/config/toolchain#bins-1"},(0,o.kt)("inlineCode",{parentName:"a"},"rust.bins")),", so will only install the first time, and again if the\nconfiguration changes (or the cache is removed)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title=".moon/toolchain.yml"',title:'".moon/toolchain.yml"'},"rust:\n version: '1.73.0'\n components:\n - 'clippy'\n - 'rust-analyzer'\n targets:\n - 'wasm32-wasi'\n")),(0,o.kt)("h2",{id:"force-toolchain-to-use-global-binaries"},"Force toolchain to use global binaries"),(0,o.kt)("p",null,"Our ",(0,o.kt)("a",{parentName:"p",href:"/docs/concepts/toolchain"},"toolchain")," is great for local development, as it ensures all\ndevelopers and machines are running the exact versions of tools required for the workspace. However,\nit becomes overkill for other environments like CI and Docker where the environment has been\npre-configured."),(0,o.kt)("p",null,"To avoid the unnecessary overhead of download and installing tools in the toolchain, we're\nintroducing the ",(0,o.kt)("inlineCode",{parentName:"p"},"MOON_TOOLCHAIN_FORCE_GLOBALS")," environment variable. When provided, this will:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Disable downloading and installing tools (will still download the WASM plugins)."),(0,o.kt)("li",{parentName:"ul"},"Execute all tool commands using the global binary available on ",(0,o.kt)("inlineCode",{parentName:"li"},"PATH"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"MOON_TOOLCHAIN_FORCE_GLOBALS=true moon ci\n")),(0,o.kt)("blockquote",null,(0,o.kt)("p",{parentName:"blockquote"},"We're looking into ways to automate this process, but for now, this is the best solution.")),(0,o.kt)("h2",{id:"other-changes"},"Other changes"),(0,o.kt)("p",null,"View the ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/moon/releases/tag/v1.16.0"},"official release")," for a full list\nof changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Added an improved task inheritance chain resolver. To fallback to the previous behavior, set\n",(0,o.kt)("inlineCode",{parentName:"li"},"experiments.interweavedTaskInheritance: false")," in ",(0,o.kt)("inlineCode",{parentName:"li"},".moon/workspace.yml"),"."),(0,o.kt)("li",{parentName:"ul"},"Added a new ",(0,o.kt)("a",{parentName:"li",href:"/docs/config/project#type"},"project type ",(0,o.kt)("inlineCode",{parentName:"a"},"automation")),", for projects like E2E and\nintegration testing."),(0,o.kt)("li",{parentName:"ul"},"Updated action graph cycle detection to list all nodes in the cycle (when detectable)."),(0,o.kt)("li",{parentName:"ul"},"Updated all npx calls to use a package manager equivalent. For example: ",(0,o.kt)("inlineCode",{parentName:"li"},"yarn dlx"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"pnpm dlx"),",\n",(0,o.kt)("inlineCode",{parentName:"li"},"bunx"),"."),(0,o.kt)("li",{parentName:"ul"},"Updated to support Yarn v4.")))}m.isMDXComponent=!0},68703:(e,n,t)=>{t.d(n,{Z:()=>a});const a=t.p+"assets/images/v1.16-cd59c941a2ddc0f63435db79a3c420eb.png"}}]); \ No newline at end of file diff --git a/assets/js/4bd5fd33.9de51b37.js b/assets/js/4bd5fd33.9de51b37.js new file mode 100644 index 00000000000..efed5ebc369 --- /dev/null +++ b/assets/js/4bd5fd33.9de51b37.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[56560],{20404:a=>{a.exports=JSON.parse('{"label":"automation","permalink":"/blog/tags/automation","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/50bf3dcb.178e71c3.js b/assets/js/50bf3dcb.178e71c3.js new file mode 100644 index 00000000000..ff4f4460011 --- /dev/null +++ b/assets/js/50bf3dcb.178e71c3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[41314],{73520:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/manager","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/7dbcf43b.43780a8e.js b/assets/js/7dbcf43b.43780a8e.js new file mode 100644 index 00000000000..511ec2b4cc0 --- /dev/null +++ b/assets/js/7dbcf43b.43780a8e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[76569],{35318:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>g});var n=r(27378);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var s=n.createContext({}),m=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},u=function(e){var t=m(e.components);return n.createElement(s.Provider,{value:t},e.children)},p={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),c=m(r),g=o,b=c["".concat(s,".").concat(g)]||c[g]||p[g]||a;return r?n.createElement(b,i(i({ref:t},u),{},{components:r})):n.createElement(b,i({ref:t},u))}));function g(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=c;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var m=2;m{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>p,frontMatter:()=>a,metadata:()=>l,toc:()=>m});var n=r(25773),o=(r(27378),r(35318));const a={slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain","automation","package","manager"],image:"./img/moon/v1.16.png"},i=void 0,l={permalink:"/blog/moon-v1.16",editUrl:"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-30_moon-v1.16.mdx",source:"@site/blog/2023-10-30_moon-v1.16.mdx",title:"moon v1.16 - Bun support, Rust improvements, and more!",description:"With this release, we've focused on requests from the community, instead of internal migration work",date:"2023-10-30T00:00:00.000Z",formattedDate:"October 30, 2023",tags:[{label:"bun",permalink:"/blog/tags/bun"},{label:"rust",permalink:"/blog/tags/rust"},{label:"toolchain",permalink:"/blog/tags/toolchain"},{label:"automation",permalink:"/blog/tags/automation"},{label:"package",permalink:"/blog/tags/package"},{label:"manager",permalink:"/blog/tags/manager"}],readingTime:2.95,hasTruncateMarker:!0,authors:[{name:"Miles Johnson",title:"Founder, developer",url:"https://github.com/milesj",imageURL:"/img/authors/miles.jpg",key:"milesj"}],frontMatter:{slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain","automation","package","manager"],image:"./img/moon/v1.16.png"},nextItem:{title:"proto v0.21 - Linux x64 musl support",permalink:"/blog/proto-v0.21"}},s={image:r(68703).Z,authorsImageUrls:[void 0]},m=[],u={toc:m};function p(e){let{components:t,...r}=e;return(0,o.kt)("wrapper",(0,n.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"With this release, we've focused on requests from the community, instead of internal migration work\nor new features."))}p.isMDXComponent=!0},68703:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/v1.16-cd59c941a2ddc0f63435db79a3c420eb.png"}}]); \ No newline at end of file diff --git a/assets/js/7dbcf43b.f08dedf2.js b/assets/js/7dbcf43b.f08dedf2.js deleted file mode 100644 index 91313cf2566..00000000000 --- a/assets/js/7dbcf43b.f08dedf2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[76569],{35318:(e,t,r)=>{r.d(t,{Zo:()=>m,kt:()=>f});var n=r(27378);function o(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function a(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function i(e){for(var t=1;t=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}var l=n.createContext({}),u=function(e){var t=n.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},m=function(e){var t=u(e.components);return n.createElement(l.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},p=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,l=e.parentName,m=s(e,["components","mdxType","originalType","parentName"]),p=u(r),f=o,g=p["".concat(l,".").concat(f)]||p[f]||c[f]||a;return r?n.createElement(g,i(i({ref:t},m),{},{components:r})):n.createElement(g,i({ref:t},m))}));function f(e,t){var r=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var a=r.length,i=new Array(a);i[0]=p;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:o,i[1]=s;for(var u=2;u{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>s,toc:()=>u});var n=r(25773),o=(r(27378),r(35318));const a={slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain"],image:"./img/moon/v1.15.png"},i=void 0,s={permalink:"/blog/moon-v1.16",editUrl:"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-30_moon-v1.16.mdx",source:"@site/blog/2023-10-30_moon-v1.16.mdx",title:"moon v1.16 - Bun support, Rust improvements, and more!",description:"With this release, we've focused on requests from the community, instead of internal migration work",date:"2023-10-30T00:00:00.000Z",formattedDate:"October 30, 2023",tags:[{label:"bun",permalink:"/blog/tags/bun"},{label:"rust",permalink:"/blog/tags/rust"},{label:"toolchain",permalink:"/blog/tags/toolchain"}],readingTime:2.95,hasTruncateMarker:!0,authors:[{name:"Miles Johnson",title:"Founder, developer",url:"https://github.com/milesj",imageURL:"/img/authors/miles.jpg",key:"milesj"}],frontMatter:{slug:"moon-v1.16",title:"moon v1.16 - Bun support, Rust improvements, and more!",authors:["milesj"],tags:["bun","rust","toolchain"],image:"./img/moon/v1.15.png"},nextItem:{title:"proto v0.21 - Linux x64 musl support",permalink:"/blog/proto-v0.21"}},l={image:r(2985).Z,authorsImageUrls:[void 0]},u=[],m={toc:u};function c(e){let{components:t,...r}=e;return(0,o.kt)("wrapper",(0,n.Z)({},m,r,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"With this release, we've focused on requests from the community, instead of internal migration work\nor new features."))}c.isMDXComponent=!0},2985:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/v1.15-24f6509aa7bcbfaf9ac48f4d63883483.png"}}]); \ No newline at end of file diff --git a/assets/js/92e5465c.8e042506.js b/assets/js/92e5465c.8e042506.js new file mode 100644 index 00000000000..1ef08aa54ef --- /dev/null +++ b/assets/js/92e5465c.8e042506.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[86633],{73906:e=>{e.exports=JSON.parse('{"label":"manager","permalink":"/blog/tags/manager","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.4ef95c10.js b/assets/js/a7023ddc.4ef95c10.js new file mode 100644 index 00000000000..6279b2edac0 --- /dev/null +++ b/assets/js/a7023ddc.4ef95c10.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[11713],{53457:l=>{l.exports=JSON.parse('[{"label":"bun","permalink":"/blog/tags/bun","count":1},{"label":"rust","permalink":"/blog/tags/rust","count":3},{"label":"toolchain","permalink":"/blog/tags/toolchain","count":8},{"label":"automation","permalink":"/blog/tags/automation","count":1},{"label":"package","permalink":"/blog/tags/package","count":1},{"label":"manager","permalink":"/blog/tags/manager","count":1},{"label":"proto","permalink":"/blog/tags/proto","count":23},{"label":"linux","permalink":"/blog/tags/linux","count":1},{"label":"musl","permalink":"/blog/tags/musl","count":1},{"label":"bin","permalink":"/blog/tags/bin","count":1},{"label":"shim","permalink":"/blog/tags/shim","count":2},{"label":"checksum","permalink":"/blog/tags/checksum","count":1},{"label":"action","permalink":"/blog/tags/action","count":2},{"label":"dependency","permalink":"/blog/tags/dependency","count":1},{"label":"graph","permalink":"/blog/tags/graph","count":3},{"label":"pipeline","permalink":"/blog/tags/pipeline","count":2},{"label":"railway","permalink":"/blog/tags/railway","count":1},{"label":"pin","permalink":"/blog/tags/pin","count":1},{"label":"global","permalink":"/blog/tags/global","count":2},{"label":"local","permalink":"/blog/tags/local","count":1},{"label":"outdated","permalink":"/blog/tags/outdated","count":1},{"label":"run","permalink":"/blog/tags/run","count":1},{"label":"target","permalink":"/blog/tags/target","count":2},{"label":"version","permalink":"/blog/tags/version","count":1},{"label":"ci","permalink":"/blog/tags/ci","count":3},{"label":"shorthand","permalink":"/blog/tags/shorthand","count":1},{"label":"http","permalink":"/blog/tags/http","count":1},{"label":"registry","permalink":"/blog/tags/registry","count":1},{"label":"index","permalink":"/blog/tags/index","count":1},{"label":"plugin","permalink":"/blog/tags/plugin","count":6},{"label":"tool","permalink":"/blog/tags/tool","count":1},{"label":"canary","permalink":"/blog/tags/canary","count":1},{"label":"python","permalink":"/blog/tags/python","count":1},{"label":"tasks","permalink":"/blog/tags/tasks","count":6},{"label":"wasm","permalink":"/blog/tags/wasm","count":5},{"label":"inheritance","permalink":"/blog/tags/inheritance","count":2},{"label":"project-graph","permalink":"/blog/tags/project-graph","count":2},{"label":"project","permalink":"/blog/tags/project","count":3},{"label":"quality","permalink":"/blog/tags/quality","count":1},{"label":"life","permalink":"/blog/tags/life","count":1},{"label":"qol","permalink":"/blog/tags/qol","count":1},{"label":"ignore","permalink":"/blog/tags/ignore","count":1},{"label":"hasher","permalink":"/blog/tags/hasher","count":3},{"label":"vcs","permalink":"/blog/tags/vcs","count":2},{"label":"debug","permalink":"/blog/tags/debug","count":1},{"label":"git","permalink":"/blog/tags/git","count":1},{"label":"hooks","permalink":"/blog/tags/hooks","count":1},{"label":"task","permalink":"/blog/tags/task","count":1},{"label":"logging","permalink":"/blog/tags/logging","count":1},{"label":"source","permalink":"/blog/tags/source","count":1},{"label":"code","permalink":"/blog/tags/code","count":1},{"label":"owners","permalink":"/blog/tags/owners","count":1},{"label":"ownership","permalink":"/blog/tags/ownership","count":1},{"label":"config","permalink":"/blog/tags/config","count":4},{"label":"errors","permalink":"/blog/tags/errors","count":2},{"label":"github","permalink":"/blog/tags/github","count":2},{"label":"rfc","permalink":"/blog/tags/rfc","count":1},{"label":"log","permalink":"/blog/tags/log","count":1},{"label":"lang","permalink":"/blog/tags/lang","count":3},{"label":"tier","permalink":"/blog/tags/tier","count":1},{"label":"query","permalink":"/blog/tags/query","count":3},{"label":"tag","permalink":"/blog/tags/tag","count":1},{"label":"alias","permalink":"/blog/tags/alias","count":2},{"label":"detect","permalink":"/blog/tags/detect","count":1},{"label":"schema","permalink":"/blog/tags/schema","count":1},{"label":"toml","permalink":"/blog/tags/toml","count":1},{"label":"plugins","permalink":"/blog/tags/plugins","count":1},{"label":"tags","permalink":"/blog/tags/tags","count":2},{"label":"globals","permalink":"/blog/tags/globals","count":2},{"label":"clean","permalink":"/blog/tags/clean","count":1},{"label":"tokens","permalink":"/blog/tags/tokens","count":2},{"label":"projects","permalink":"/blog/tags/projects","count":2},{"label":"constraints","permalink":"/blog/tags/constraints","count":1},{"label":"env-vars","permalink":"/blog/tags/env-vars","count":1},{"label":"npm","permalink":"/blog/tags/npm","count":1},{"label":"go","permalink":"/blog/tags/go","count":1},{"label":"docker","permalink":"/blog/tags/docker","count":2},{"label":"hash","permalink":"/blog/tags/hash","count":1},{"label":"deno","permalink":"/blog/tags/deno","count":1},{"label":"moonbase","permalink":"/blog/tags/moonbase","count":4},{"label":"offline","permalink":"/blog/tags/offline","count":1},{"label":"platform","permalink":"/blog/tags/platform","count":2},{"label":"remote-cache","permalink":"/blog/tags/remote-cache","count":3},{"label":"survey","permalink":"/blog/tags/survey","count":1},{"label":"migrate","permalink":"/blog/tags/migrate","count":1},{"label":"roadmap","permalink":"/blog/tags/roadmap","count":1},{"label":"runner","permalink":"/blog/tags/runner","count":4},{"label":"language","permalink":"/blog/tags/language","count":1},{"label":"cache","permalink":"/blog/tags/cache","count":1},{"label":"hydration","permalink":"/blog/tags/hydration","count":1},{"label":"generator","permalink":"/blog/tags/generator","count":4},{"label":"typescript","permalink":"/blog/tags/typescript","count":2},{"label":"monorepo","permalink":"/blog/tags/monorepo","count":1},{"label":"affected","permalink":"/blog/tags/affected","count":1},{"label":"dep-graph","permalink":"/blog/tags/dep-graph","count":1},{"label":"init","permalink":"/blog/tags/init","count":1},{"label":"node","permalink":"/blog/tags/node","count":2},{"label":"notifier","permalink":"/blog/tags/notifier","count":1},{"label":"editors","permalink":"/blog/tags/editors","count":2},{"label":"vscode","permalink":"/blog/tags/vscode","count":2}]')}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.f9829b91.js b/assets/js/a7023ddc.f9829b91.js deleted file mode 100644 index 09a1adc40a1..00000000000 --- a/assets/js/a7023ddc.f9829b91.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[11713],{53457:l=>{l.exports=JSON.parse('[{"label":"bun","permalink":"/blog/tags/bun","count":1},{"label":"rust","permalink":"/blog/tags/rust","count":3},{"label":"toolchain","permalink":"/blog/tags/toolchain","count":8},{"label":"proto","permalink":"/blog/tags/proto","count":23},{"label":"linux","permalink":"/blog/tags/linux","count":1},{"label":"musl","permalink":"/blog/tags/musl","count":1},{"label":"bin","permalink":"/blog/tags/bin","count":1},{"label":"shim","permalink":"/blog/tags/shim","count":2},{"label":"checksum","permalink":"/blog/tags/checksum","count":1},{"label":"action","permalink":"/blog/tags/action","count":2},{"label":"dependency","permalink":"/blog/tags/dependency","count":1},{"label":"graph","permalink":"/blog/tags/graph","count":3},{"label":"pipeline","permalink":"/blog/tags/pipeline","count":2},{"label":"railway","permalink":"/blog/tags/railway","count":1},{"label":"pin","permalink":"/blog/tags/pin","count":1},{"label":"global","permalink":"/blog/tags/global","count":2},{"label":"local","permalink":"/blog/tags/local","count":1},{"label":"outdated","permalink":"/blog/tags/outdated","count":1},{"label":"run","permalink":"/blog/tags/run","count":1},{"label":"target","permalink":"/blog/tags/target","count":2},{"label":"version","permalink":"/blog/tags/version","count":1},{"label":"ci","permalink":"/blog/tags/ci","count":3},{"label":"shorthand","permalink":"/blog/tags/shorthand","count":1},{"label":"http","permalink":"/blog/tags/http","count":1},{"label":"registry","permalink":"/blog/tags/registry","count":1},{"label":"index","permalink":"/blog/tags/index","count":1},{"label":"plugin","permalink":"/blog/tags/plugin","count":6},{"label":"tool","permalink":"/blog/tags/tool","count":1},{"label":"canary","permalink":"/blog/tags/canary","count":1},{"label":"python","permalink":"/blog/tags/python","count":1},{"label":"tasks","permalink":"/blog/tags/tasks","count":6},{"label":"wasm","permalink":"/blog/tags/wasm","count":5},{"label":"inheritance","permalink":"/blog/tags/inheritance","count":2},{"label":"project-graph","permalink":"/blog/tags/project-graph","count":2},{"label":"project","permalink":"/blog/tags/project","count":3},{"label":"quality","permalink":"/blog/tags/quality","count":1},{"label":"life","permalink":"/blog/tags/life","count":1},{"label":"qol","permalink":"/blog/tags/qol","count":1},{"label":"ignore","permalink":"/blog/tags/ignore","count":1},{"label":"hasher","permalink":"/blog/tags/hasher","count":3},{"label":"vcs","permalink":"/blog/tags/vcs","count":2},{"label":"debug","permalink":"/blog/tags/debug","count":1},{"label":"git","permalink":"/blog/tags/git","count":1},{"label":"hooks","permalink":"/blog/tags/hooks","count":1},{"label":"task","permalink":"/blog/tags/task","count":1},{"label":"logging","permalink":"/blog/tags/logging","count":1},{"label":"source","permalink":"/blog/tags/source","count":1},{"label":"code","permalink":"/blog/tags/code","count":1},{"label":"owners","permalink":"/blog/tags/owners","count":1},{"label":"ownership","permalink":"/blog/tags/ownership","count":1},{"label":"config","permalink":"/blog/tags/config","count":4},{"label":"errors","permalink":"/blog/tags/errors","count":2},{"label":"github","permalink":"/blog/tags/github","count":2},{"label":"rfc","permalink":"/blog/tags/rfc","count":1},{"label":"log","permalink":"/blog/tags/log","count":1},{"label":"lang","permalink":"/blog/tags/lang","count":3},{"label":"tier","permalink":"/blog/tags/tier","count":1},{"label":"query","permalink":"/blog/tags/query","count":3},{"label":"tag","permalink":"/blog/tags/tag","count":1},{"label":"alias","permalink":"/blog/tags/alias","count":2},{"label":"detect","permalink":"/blog/tags/detect","count":1},{"label":"schema","permalink":"/blog/tags/schema","count":1},{"label":"toml","permalink":"/blog/tags/toml","count":1},{"label":"plugins","permalink":"/blog/tags/plugins","count":1},{"label":"tags","permalink":"/blog/tags/tags","count":2},{"label":"globals","permalink":"/blog/tags/globals","count":2},{"label":"clean","permalink":"/blog/tags/clean","count":1},{"label":"tokens","permalink":"/blog/tags/tokens","count":2},{"label":"projects","permalink":"/blog/tags/projects","count":2},{"label":"constraints","permalink":"/blog/tags/constraints","count":1},{"label":"env-vars","permalink":"/blog/tags/env-vars","count":1},{"label":"npm","permalink":"/blog/tags/npm","count":1},{"label":"go","permalink":"/blog/tags/go","count":1},{"label":"docker","permalink":"/blog/tags/docker","count":2},{"label":"hash","permalink":"/blog/tags/hash","count":1},{"label":"deno","permalink":"/blog/tags/deno","count":1},{"label":"moonbase","permalink":"/blog/tags/moonbase","count":4},{"label":"offline","permalink":"/blog/tags/offline","count":1},{"label":"platform","permalink":"/blog/tags/platform","count":2},{"label":"remote-cache","permalink":"/blog/tags/remote-cache","count":3},{"label":"survey","permalink":"/blog/tags/survey","count":1},{"label":"migrate","permalink":"/blog/tags/migrate","count":1},{"label":"roadmap","permalink":"/blog/tags/roadmap","count":1},{"label":"runner","permalink":"/blog/tags/runner","count":4},{"label":"language","permalink":"/blog/tags/language","count":1},{"label":"cache","permalink":"/blog/tags/cache","count":1},{"label":"hydration","permalink":"/blog/tags/hydration","count":1},{"label":"generator","permalink":"/blog/tags/generator","count":4},{"label":"typescript","permalink":"/blog/tags/typescript","count":2},{"label":"monorepo","permalink":"/blog/tags/monorepo","count":1},{"label":"affected","permalink":"/blog/tags/affected","count":1},{"label":"dep-graph","permalink":"/blog/tags/dep-graph","count":1},{"label":"init","permalink":"/blog/tags/init","count":1},{"label":"node","permalink":"/blog/tags/node","count":2},{"label":"notifier","permalink":"/blog/tags/notifier","count":1},{"label":"editors","permalink":"/blog/tags/editors","count":2},{"label":"vscode","permalink":"/blog/tags/vscode","count":2}]')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.4b404dd9.js b/assets/js/b2f554cd.4b404dd9.js deleted file mode 100644 index fe1ea349508..00000000000 --- a/assets/js/b2f554cd.4b404dd9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[11477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"moon-v1.16","metadata":{"permalink":"/blog/moon-v1.16","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-30_moon-v1.16.mdx","source":"@site/blog/2023-10-30_moon-v1.16.mdx","title":"moon v1.16 - Bun support, Rust improvements, and more!","description":"With this release, we\'ve focused on requests from the community, instead of internal migration work","date":"2023-10-30T00:00:00.000Z","formattedDate":"October 30, 2023","tags":[{"label":"bun","permalink":"/blog/tags/bun"},{"label":"rust","permalink":"/blog/tags/rust"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":2.95,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.16","title":"moon v1.16 - Bun support, Rust improvements, and more!","authors":["milesj"],"tags":["bun","rust","toolchain"],"image":"./img/moon/v1.15.png"},"nextItem":{"title":"proto v0.21 - Linux x64 musl support","permalink":"/blog/proto-v0.21"}},"content":"With this release, we\'ve focused on requests from the community, instead of internal migration work\\nor new features.\\n\\n\x3c!--truncate--\x3e\\n\\n## Bun as a package manager\\n\\nNow that [Bun v1 has officially released](https://bun.sh/blog/bun-v1.0) and our\\n[bun-plugin](https://github.com/moonrepo/bun-plugin) for proto has stabilized, we can start slowly\\nintegrating Bun support into moon. The first step in this series is adding Bun as a supported\\npackage manager for Node.js. Seems odd as they are conflicting runtimes... right? While true, a lot\\nof users are interested in using Bun purely as a package manager, as it can install dependencies\\nincredibly fast. So why not support it?\\n\\nIn this release, you can now install dependencies with Bun by configuring\\n[`node.packageManager`](/docs/config/toolchain#packagemanager) and\\n[`node.bun`](/docs/config/toolchain#npm-pnpm-yarn) in your toolchain.\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nnode:\\n packageManager: \'bun\'\\n bun:\\n version: \'1.0.0\'\\n```\\n\\nAdditionally, you can now execute Bun commands within tasks! However, ensure the task\'s platform is\\nstill set to `node` though, as this is using Bun as a package manager within Node.js, not as a\\nseparate runtime.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n test:\\n command: \'bun test\'\\n platform: \'node\'\\n```\\n\\nWhen using Bun, the following integrations are applied:\\n\\n- Will automatically download and install Bun for the configured version.\\n- Will install dependencies using `bun install` (deduping currently not supported).\\n- Will parse `bun.lockb` for dependency resolution and task hashing.\\n- Will use `bunx` instead of `npx` for one-off package executions.\\n- Can execute `bun` commands within tasks.\\n\\n> This change _only_ adds support for Bun as a package manager for Node.js. It does not add Bun as a\\n> supported language/platform in the toolchain, but it does pave the way for this to happen! Also\\n> note that Bun _is not supported on Windows_!\\n\\n## Configure Rust components and targets\\n\\nWe\'ve had Rust tier 2 and 3 support for quite a while now, but there was a big missing piece: the\\nability to configure and install additional\\n[components](https://rust-lang.github.io/rustup/concepts/components.html) and\\n[targets](https://doc.rust-lang.org/nightly/rustc/platform-support.html) for the current toolchain.\\nIn this release, we\'ve added support for both!\\n\\nSimply configure the [`rust.components`](/docs/config/toolchain#components) or\\n[`rust.targets`](/docs/config/toolchain#targets) settings in\\n[`.moon/toolchain.yml`](/docs/config/toolchain), and moon will automatically install them when the\\npipeline is ran. This functionality uses the same hashing implementation as\\n[`rust.bins`](/docs/config/toolchain#bins-1), so will only install the first time, and again if the\\nconfiguration changes (or the cache is removed).\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nrust:\\n version: \'1.73.0\'\\n components:\\n - \'clippy\'\\n - \'rust-analyzer\'\\n targets:\\n - \'wasm32-wasi\'\\n```\\n\\n## Force toolchain to use global binaries\\n\\nOur [toolchain](/docs/concepts/toolchain) is great for local development, as it ensures all\\ndevelopers and machines are running the exact versions of tools required for the workspace. However,\\nit becomes overkill for other environments like CI and Docker where the environment has been\\npre-configured.\\n\\nTo avoid the unnecessary overhead of download and installing tools in the toolchain, we\'re\\nintroducing the `MOON_TOOLCHAIN_FORCE_GLOBALS` environment variable. When provided, this will:\\n\\n- Disable downloading and installing tools (will still download the WASM plugins).\\n- Execute all tool commands using the global binary available on `PATH`.\\n\\n```shell\\nMOON_TOOLCHAIN_FORCE_GLOBALS=true moon ci\\n```\\n\\n> We\'re looking into ways to automate this process, but for now, this is the best solution.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.16.0) for a full list\\nof changes.\\n\\n- Added an improved task inheritance chain resolver. To fallback to the previous behavior, set\\n `experiments.interweavedTaskInheritance: false` in `.moon/workspace.yml`.\\n- Added a new [project type `automation`](/docs/config/project#type), for projects like E2E and\\n integration testing.\\n- Updated action graph cycle detection to list all nodes in the cycle (when detectable).\\n- Updated all npx calls to use a package manager equivalent. For example: `yarn dlx`, `pnpm dlx`,\\n `bunx`.\\n- Updated to support Yarn v4."},{"id":"proto-v0.21","metadata":{"permalink":"/blog/proto-v0.21","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-27_proto-v0.21.mdx","source":"@site/blog/2023-10-27_proto-v0.21.mdx","title":"proto v0.21 - Linux x64 musl support","description":"This is a very small release that primarily adds support for the Linux x64 musl target.","date":"2023-10-27T00:00:00.000Z","formattedDate":"October 27, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"linux","permalink":"/blog/tags/linux"},{"label":"musl","permalink":"/blog/tags/musl"}],"readingTime":0.67,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.21","title":"proto v0.21 - Linux x64 musl support","authors":["milesj"],"tags":["proto","linux","musl"]},"prevItem":{"title":"moon v1.16 - Bun support, Rust improvements, and more!","permalink":"/blog/moon-v1.16"},"nextItem":{"title":"proto v0.20 - New shims and binaries management","permalink":"/blog/proto-v0.20"}},"content":"This is a very small release that primarily adds support for the Linux x64 musl target.\\n\\n\x3c!--truncate--\x3e\\n\\nThanks to [cargo-dist](https://github.com/axodotdev/cargo-dist), we can now build and distribute\\nmusl binaries with relative ease. When building the binary, libraries are statically linked to\\nensure that the binary can run on any Linux distribution.\\n\\nYou can download the binary from the official\\n[GitHub release](https://github.com/moonrepo/proto/releases/tag/v0.21.0) or by running the\\n[Bash installation script](/docs/proto/install#linux-macos-wsl). In the future, we plan to support\\narm64 builds for both Linux gnu and musl.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.21.0) for a full list\\nof changes.\\n\\n- Improved file and directory locking. Will now work correctly across processes and signals,\\n especially for those killed/dropped.\\n- Updated WASM functions to use explicit Rust enum types for versions to properly handle all\\n variations (version, alias, requirement, range)."},{"id":"proto-v0.20","metadata":{"permalink":"/blog/proto-v0.20","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-20_proto-v0.20.mdx","source":"@site/blog/2023-10-20_proto-v0.20.mdx","title":"proto v0.20 - New shims and binaries management","description":"In this release, we\'re reworking how shims and binaries work.","date":"2023-10-20T00:00:00.000Z","formattedDate":"October 20, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"bin","permalink":"/blog/tags/bin"},{"label":"shim","permalink":"/blog/tags/shim"},{"label":"checksum","permalink":"/blog/tags/checksum"}],"readingTime":3,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.20","title":"proto v0.20 - New shims and binaries management","authors":["milesj"],"tags":["proto","bin","shim","checksum"]},"prevItem":{"title":"proto v0.21 - Linux x64 musl support","permalink":"/blog/proto-v0.21"},"nextItem":{"title":"moon v1.15 - Next-generation action graph","permalink":"/blog/moon-v1.15"}},"content":"In this release, we\'re reworking how shims and binaries work.\\n\\n\x3c!--truncate--\x3e\\n\\n## Shims _and_ Binaries (breaking)\\n\\nSince proto\'s inception, we\'ve used shims as a way to execute installed tools. This allowed us to\\nwrap the underlying tool binary to provide additional functionality, such as automatic version\\ndetection, runtime hooks, and more. However, this approach has some limitations, such as:\\n\\n- Shims are forced onto you and there\'s no way to use proto without shims.\\n- Shims are slower than executing the native binary, upwards of 10x slower. While this equates in\\n milliseconds, it can be noticeable dependending on the tool.\\n- For Windows, our shim files are `.cmd` _and not_ `.exe`. This causes a lot of weird and unexpected\\n problems when an environment expects a real executable, or uses a hard-coded `.exe` extension.\\n\\nTo remedy this, we\'re introducing both a shim and non-shim approach, which has resulted in a pretty\\nbig breaking change. Shims are now generated in `~/.proto/shims` (instead of `~/.proto/bin`), while\\n`~/.proto/bin` will now store symlinks to native binaries. To migrate to this new pattern, we\'re\\nintroducing a new `proto migrate` command (this only needs to be ran once).\\n\\n```shell\\n$ proto upgrade\\n$ proto migrate v0.20 --log debug\\n```\\n\\n### How it works\\n\\nWhen installing proto for the first time, or running the `proto migrate` command, we prepend `PATH`\\nwith `$PROTO_HOME/shims:$PROTO_HOME/bin`. This allows shims to be executed _first_ and fallthrough\\nto native binaries if a shim does not exist (for example, `.exe` on Windows).\\n\\nFurthermore, if you\'d prefer to _only use_ shims, or _only use_ binaries, you can update `PATH` and\\nremove the unwanted directory path.\\n\\nAnd lastly, if shims are causing problems, you can now easily reference the native binaries\\ndirectly. This was rather complicated before.\\n\\n### Comparison\\n\\n| | Shims | Binaries |\\n| -------------------- | -------------------------------------------------- | ----------------------------------------------------------------------- |\\n| **Location** | `~/.proto/shims` | `~/.proto/bin` |\\n| **Created as** | Scripts that run `proto run` | Symlinks to the native binary |\\n| **Version executed** | Detects version at runtime | Last version that was installed + pinned |\\n| **Supported for** | All tools | Only tools that support native execution (may not work for `.js` files) |\\n| **Additional files** | Creates extra files (like `bunx`, `node-gyp`, etc) | Only links the primary binary |\\n\\n## Support for minisign checksums\\n\\nWhen proto installs a tool, it runs a process known as checksum verification, where we ensure the\\ndownload hasn\'t been modified maliciously in anyway. Historically we only supported SHA256\\nchecksums, but now, we also support the new [minisign](https://jedisct1.github.io/minisign/) tool,\\nused by popular tools like [Zig](https://ziglang.org/).\\n\\nIf you\'re building a plugin for a tool that uses minisign, you can use the new\\n[`checksum_public_key`](/docs/proto/wasm-plugin#downloading-pre-builts) (WASM) or\\n[`install.checksum-public-key`](/docs/proto/toml-plugin#downloading-and-installing) (TOML) field to\\nprovide the public key for use in verification.\\n\\nWhen the checksum URL ends in a `.minisig` extension, proto will automatically use minisign for\\nchecksum verification!\\n\\n```toml\\n[install]\\nchecksum-url = \\"https://domain.com/some/path/to/checksum.minisig\\"\\nchecksum-public-key = \\"untrusted comment: ...\\"\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.20.0) for a full list\\nof changes.\\n\\n- Updated `proto use` to install tools in parallel.\\n- Updated `proto plugins` and `proto tools` to load plugins in parallel.\\n- Updated `proto run` to error when the tool attempts to self-upgrade outside of proto.\\n- Rust plugin\\n - Will now attempt to install `rustup` if it does not exist on the current machine.\\n - Will now respect the `RUSTUP_HOME` environment variable when locating the `.rustup` store.\\n- Schema plugin\\n - Added `install.checksum_public_key` for defining the public key used to verify checksums.\\n - Added `metadata.self_upgrade_commands` for defining which sub-commands should be blocked for\\n self-upgrades."},{"id":"moon-v1.15","metadata":{"permalink":"/blog/moon-v1.15","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-09_moon-v1.15.mdx","source":"@site/blog/2023-10-09_moon-v1.15.mdx","title":"moon v1.15 - Next-generation action graph","description":"In this release, we\'ve taken the next step in modernizing our action pipeline, by rewriting the","date":"2023-10-09T00:00:00.000Z","formattedDate":"October 9, 2023","tags":[{"label":"action","permalink":"/blog/tags/action"},{"label":"dependency","permalink":"/blog/tags/dependency"},{"label":"graph","permalink":"/blog/tags/graph"},{"label":"pipeline","permalink":"/blog/tags/pipeline"},{"label":"railway","permalink":"/blog/tags/railway"}],"readingTime":4.62,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.15","title":"moon v1.15 - Next-generation action graph","authors":["milesj"],"tags":["action","dependency","graph","pipeline","railway"],"image":"./img/moon/v1.15.png"},"prevItem":{"title":"proto v0.20 - New shims and binaries management","permalink":"/blog/proto-v0.20"},"nextItem":{"title":"proto v0.19 - Version pinning and outdated checks","permalink":"/blog/proto-v0.19"}},"content":"In this release, we\'ve taken the next step in modernizing our action pipeline, by rewriting the\\ndependency graph.\\n\\n\x3c!--truncate--\x3e\\n\\n## Hello action graph, goodbye dependency graph\\n\\nFor the past few months, we\'ve been working on a rewrite of our action pipeline, which consists of\\nthe project graph, dependency graph, task executor, process pipeline, and more. It\'s a slow process,\\nwith many different pieces that must land in sequence, but we\'re almost done. The next step in this\\nprocess is the [introduction of the new action graph](/docs/how-it-works/action-graph), which\\nreplaces the previous dependency graph.\\n\\nFor the most part, the graphs work in a similar fashion, but since we rewrote it from the ground up,\\nwe were able to resolve any discrepancies and performance issues. The biggest changes between the\\nnew and old graphs are:\\n\\n- All actions now depend on the `SyncWorkspace` action, instead of this action running arbitrarily.\\n- Cleaned up dependency chains between actions, greatly reducing the number of nodes in the graph.\\n- Renamed `RunTarget` to `RunTask`, including interactive and persistent variants.\\n- And lastly, we ditched our batched task approach for a ready queue. Continue reading for more\\n information!\\n\\n### A new performant thread pool\\n\\nIn the old dependency graph, when we\'d execute a task, we\'d order the graph topologically and then\\ngroup actions into batches (or buckets) based on their dependency chains. Batches would then be\\nexecuted in order within the thread pool. This approach worked well, but had one major flaw: it\\nwasn\'t as performant as could be. For example, if our thread pool size was 12, and a batch only had\\n2 tasks in it, what were the other 10 threads doing? Absolutely nothing. They were sitting idly,\\nwaiting for a task.\\n\\nAnd now with the new action graph, we take full advantage of all threads in the pool. Instead of the\\nbatched approach above, we now use a topological task-ready queue, where a thread without work (or\\nis waiting for work) can poll the graph for a new task to run. A task is considered ready to run if\\nit either has no dependencies, or all of its dependencies (in the chain) have been ran.\\n\\nFor large graphs, this should result in a significant performance improvement!\\n\\n### Automatic dependency linking (breaking)\\n\\nBecause of these graph changes, we do have a minor \\"breaking change\\". Tasks that depend (via `deps`)\\non other tasks from arbitrary projects (the parent project doesn\'t implicitly or explicitly depend\\non the other project), not including the root-level project, will now automatically mark that other\\nproject as a \\"peer\\" dependency (if not already configured with `dependsOn`). For example, \\"b\\"\\nbecomes a peer dependency for \\"a\\".\\n\\n```yaml title=\\"a/moon.yml\\"\\ntasks:\\n build:\\n deps: [\'b:build\']\\n```\\n\\nNow internally becomes:\\n\\n```yaml title=\\"a/moon.yml\\"\\ndependsOn:\\n - id: \'b\'\\n scope: \'peer\'\\n\\ntasks:\\n build:\\n deps: [\'b:build\']\\n```\\n\\nIf you\'d prefer this dependency to _not be_ a peer, you can explicitly configure it with a different\\nscope. For Node.js projects, the \\"build\\" scope can be used as a no-op replacement.\\n\\n```yaml title=\\"a/moon.yml\\"\\ndependsOn:\\n - id: \'b\'\\n scope: \'build\' # production, development\\n\\ntasks:\\n build:\\n deps: [\'b:build\']\\n```\\n\\nWe\'re marking this as a breaking change as this could subtly introduce cycles in the project graph\\nthat weren\'t present before, and for Node.js projects, this may inject `peerDependencies`. However,\\nthis change was necessary to ensure accurate dependency chains in the graph.\\n\\n## New `moonrepo/setup-toolchain` GitHub action\\n\\nWe\'ve begun a process to deprecate the\\n[moonrepo/setup-moon-action](https://github.com/moonrepo/setup-moon-action) and\\n[moonrepo/setup-proto](https://github.com/moonrepo/setup-proto) GitHub actions, and instead, combine\\nand replace them with a new [moonrepo/setup-toolchain](https://github.com/moonrepo/setup-toolchain)\\naction. Why a new action instead of fixing the others?\\n\\nThe biggest problem was that both previous actions shared about 90% of the same code, but were\\nslightly different in how they installed the binaries and cached the toolchain. It was was also\\nconfusing for consumers to understand and know which action to use (because they shouldn\'t be used\\ntogether).\\n\\nTo remedy this, we\'re prototyping the new\\n[moonrepo/setup-toolchain](https://github.com/moonrepo/setup-toolchain) action, which has been\\nworking quite well. It aims to solve the following:\\n\\n- Installs `proto` globally so that installed tools can also be executed globally.\\n- Conditionally installs `moon` globally if the repository is using moon (attempts to detect a\\n `.moon` directory).\\n- Caches the toolchain (`~/.proto`) so subsequent runs are faster.\\n- Hashes `.prototools` and `.moon/toolchain.yml` files to generate a unique cache key.\\n- Cleans the toolchain before caching to remove unused or stale tools.\\n- Can auto-install tools when used.\\n\\n```diff\\n# ...\\njobs:\\n ci:\\n name: CI\\n runs-on: ubuntu-latest\\n steps:\\n - uses: actions/checkout@v4\\n with:\\n fetch-depth: 0\\n- - uses: moonrepo/setup-moon-action@v1\\n+ - uses: moonrepo/setup-toolchain@v0\\n```\\n\\n## Now supported in Railway\\n\\nIf you\'re a big fan of [Railway](https://railway.app/) (like we are), and you\'re deploying a Node.js\\nbacked application, then you\'ll be happy to hear that Railway now officially and natively supports\\nmoon! We spent some time over the past month\\n[integrating moon support into their Nixpacks architecture](https://nixpacks.com/docs/providers/node).\\n\\nTo make use of this, set the `NIXPACKS_MOON_APP_NAME` environment variable to the name of your moon\\nproject that you want to be deployed. This will then automatically run `moon run :build` and\\n`moon run :start` respectively. To customize the task names, you can set the\\n`NIXPACKS_MOON_BUILD_TASK` and `NIXPACKS_MOON_START_TASK` environment variables.\\n\\n:::info\\n\\nThis is currently only supported for Node.js projects, but will be expanded to other languages in\\nthe future!\\n\\n:::\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.15.0) for a full list\\nof changes.\\n\\n- Added a `moon action-graph` command.\\n- Added a `--dependents` argument to `moon action-graph`.\\n- Added the ability to skip non-`RunTask` actions using environment variables.\\n- Deprecated the `moon dep-graph` command."},{"id":"proto-v0.19","metadata":{"permalink":"/blog/proto-v0.19","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-29_proto-v0.19.mdx","source":"@site/blog/2023-09-29_proto-v0.19.mdx","title":"proto v0.19 - Version pinning and outdated checks","description":"In this release, we\'re improving version pinning and introducing a new command to check for outdated","date":"2023-09-29T00:00:00.000Z","formattedDate":"September 29, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"pin","permalink":"/blog/tags/pin"},{"label":"global","permalink":"/blog/tags/global"},{"label":"local","permalink":"/blog/tags/local"},{"label":"outdated","permalink":"/blog/tags/outdated"}],"readingTime":1.92,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.19","title":"proto v0.19 - Version pinning and outdated checks","authors":["milesj"],"tags":["proto","pin","global","local","outdated"],"image":"./img/proto/v0.19.png"},"prevItem":{"title":"moon v1.15 - Next-generation action graph","permalink":"/blog/moon-v1.15"},"nextItem":{"title":"moon v1.14 - Improvements to running targets and toolchain versions","permalink":"/blog/moon-v1.14"}},"content":"In this release, we\'re improving version pinning and introducing a new command to check for outdated\\nversions.\\n\\n\x3c!--truncate--\x3e\\n\\n## New `proto pin` command (breaking)\\n\\nBefore our official v1 release, which is relatively soon, we\'ll be making some breaking changes with\\nthe proto APIs. The first is the introduction of the new [`proto pin`](/docs/proto/commands/pin)\\ncommand, which replaces the previous `proto local` and `proto global` commands. We felt this was a\\nmuch cleaner change, and far easier to understand than the previous command names.\\n\\n```shell\\n# v0.18\\n$ proto local go 1.20\\n$ proto global node 20\\n\\n# v0.19+\\n$ proto pin go 1.20\\n$ proto pin node 20 --global\\n```\\n\\n## New `pin-latest` setting\\n\\nWhile we\'re on the subject of pinning versions, we\'ve also introduced a new\\n[`pin-latest`](/docs/proto/config#pin-latest) setting. Do you want the latest version to always be\\npinned? Do you forgot to pass `--pin` when installing? Do you forget to run the `proto global` or\\n`proto local` commands (now `proto pin`)? If you answered yes to any of these questions, then this\\nsetting is for you.\\n\\nWhen enabled, and a tool is installed with the \\"latest\\" version, the resolved version will\\nautomatically be pinned to the configuration of your choice. For example, say we have the following\\nuser config:\\n\\n```toml title=\\"~/.proto/config.toml\\"\\npin-latest = \\"local\\"\\n```\\n\\nAnd we run one of the following commands:\\n\\n```shell\\n$ proto install go\\n$ proto install node latest\\n```\\n\\nThen the resolved version of the tool will automatically be set to the `.prototools` file in the\\ncurrent directory. Handy right?\\n\\n## New `proto outdated` command\\n\\nBy request of the community, we\'re introducing yet another new command,\\n[`proto outdated`](/docs/proto/commands/outdated). If you\'re familiar with package managers, you can\\nprobably guess what this command does! It\'ll check for newer available versions, for all tools\\nconfigured in the closest `.prototools` file. Very handy for keeping your tools up to date.\\n\\n```\\n$ proto outdated\\n\\ngo - current version 1.20.2 (via ~1.20), newer version 1.20.8, update available!\\nnode - current version 20.7.0 (via 20.7.0), latest version 20.8.0, update available!\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.19.0) for a full list\\nof changes.\\n\\n- Added `PROTO_WASM_LOG` environment variable to toggle the logging of messages from Extism and WASM\\n plugins. Useful for debugging.\\n- Updated `proto install` to auto-clean stale plugins after a successful installation."},{"id":"moon-v1.14","metadata":{"permalink":"/blog/moon-v1.14","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-25_moon-v1.14.mdx","source":"@site/blog/2023-09-25_moon-v1.14.mdx","title":"moon v1.14 - Improvements to running targets and toolchain versions","description":"In this release, we\'ve focused on loosening restrictions to improve the overall developer","date":"2023-09-25T00:00:00.000Z","formattedDate":"September 25, 2023","tags":[{"label":"run","permalink":"/blog/tags/run"},{"label":"target","permalink":"/blog/tags/target"},{"label":"toolchain","permalink":"/blog/tags/toolchain"},{"label":"version","permalink":"/blog/tags/version"},{"label":"ci","permalink":"/blog/tags/ci"},{"label":"shorthand","permalink":"/blog/tags/shorthand"}],"readingTime":2.665,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.14","title":"moon v1.14 - Improvements to running targets and toolchain versions","authors":["milesj"],"tags":["run","target","toolchain","version","ci","shorthand"],"image":"./img/moon/v1.14.png"},"prevItem":{"title":"proto v0.19 - Version pinning and outdated checks","permalink":"/blog/proto-v0.19"},"nextItem":{"title":"proto v0.18 - List installed tools and configure HTTP client","permalink":"/blog/proto-v0.18"}},"content":"In this release, we\'ve focused on loosening restrictions to improve the overall developer\\nexperience.\\n\\n\x3c!--truncate--\x3e\\n\\n## Shorthand for `moon run`\\n\\nThis has been a long requested feature and we\'re happy to finally deliver it! You can now omit the\\n\\"run\\" keyword for the [`moon run`](/docs/commands/run) command, just so long as the first non-option\\nargument is a target (must contain a `:`).\\n\\n```shell\\n# v1.13\\n$ moon run app:build\\n\\n# v1.14+\\n$ moon app:build\\n```\\n\\n## Choose targets for `moon ci`\\n\\nWhen we initially built [`moon ci`](/docs/commands/ci), we wanted a solution that simply ran\\neverything in CI that _should be ran_, taking care of all the complicated logic to determine\\naffected tasks, comparing Git branches, gathering targets, partitioning across jobs, etc... And it\\ndoes just that, and it does it well!\\n\\nHowever, one major caveat to using `moon ci` is that it runs _every task_ in the workspace (assuming\\nthey\'re affected). This has been quite a blocker for adoption as teams may want fine-grained control\\nof their CI. For example, running build tasks in one job, lint tasks in another, so on and so forth.\\n\\nIn this release, we\'ve made the necessary changes to allow these workflows, by supporting a list of\\ntargets for `moon ci`, similar to how `moon run` works. If no targets are provide, the existing \\"run\\neverything\\" logic will be used.\\n\\n```shell\\n# v1.13\\n$ moon ci\\n\\n# v1.14+\\n$ moon ci :build :lint :etc\\n```\\n\\nSplitting targets across jobs is demonstrated with the following GitHub Action workflow:\\n\\n```yaml title=\\".github/workflows/ci.yml\\"\\nname: \'CI\'\\non:\\n push:\\n branches:\\n - \'master\'\\n pull_request:\\njobs:\\n build:\\n name: \'Build\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n with:\\n fetch-depth: 0\\n - uses: \'moonrepo/setup-moon-action@v1\'\\n - run: \'moon ci :build\'\\n format-lint:\\n name: \'Format + Lint\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n with:\\n fetch-depth: 0\\n - uses: \'moonrepo/setup-moon-action@v1\'\\n - run: \'moon ci :format :lint\'\\n test:\\n name: \'Test\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n with:\\n fetch-depth: 0\\n - uses: \'moonrepo/setup-moon-action@v1\'\\n - run: \'moon ci :test\'\\n```\\n\\n## Configure partial toolchain versions\\n\\nSince moon\'s inception, our [integrated toolchain](/docs/concepts/toolchain) required fully\\nqualified semantic versions (major.minor.patch) for tools. This was by design to ensure that we\\ncould provide a consistent, reliable, and deterministic experience for all users. This solved the\\nproblem of \\"Is X using the correct version of Y?\\".\\n\\nHowever, this also meant that we were unable to support partial versions (major.minor) of tools,\\nwhich is a common use case and request for many users. Over the last few months, we\'ve made immense\\nprogress in [proto](/proto) on how it parses, resolves, and evaluates versions, known as the\\n[version specification](https://crates.io/crates/version_spec).\\n\\nWe felt the time was right to pull these changes into moon, and as such, all `version` fields in\\n[`.moon/toolchain.yml`](/docs/config/toolchain) now support partial versions, version\\nrequirements/ranges, and even aliases!\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nnode:\\n version: \'20.7\' # ~20.7\\n npm:\\n version: \'^9\'\\n\\nrust:\\n version: \'stable\'\\n```\\n\\n:::info\\n\\nLearn more about how this works under the hood in the\\n[official version specification documentation](/docs/concepts/toolchain#version-specification).\\n\\n:::\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.14.0) for a full list\\nof changes.\\n\\n- Added `packemon`, `sveltekit`, `vite`, `vitest` to\\n [moonrepo/moon-configs](https://github.com/moonrepo/moon-configs).\\n- Updated `.moon/tasks` to support nested folders, for better organization of task files.\\n- Improved handling of certificates and proxies.\\n- Updated to proto v0.18."},{"id":"proto-v0.18","metadata":{"permalink":"/blog/proto-v0.18","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-18_proto-v0.18.mdx","source":"@site/blog/2023-09-18_proto-v0.18.mdx","title":"proto v0.18 - List installed tools and configure HTTP client","description":"Today we\'ve got a small release that includes some helpful features.","date":"2023-09-18T00:00:00.000Z","formattedDate":"September 18, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"http","permalink":"/blog/tags/http"},{"label":"registry","permalink":"/blog/tags/registry"},{"label":"index","permalink":"/blog/tags/index"}],"readingTime":1.83,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.18","title":"proto v0.18 - List installed tools and configure HTTP client","authors":["milesj"],"tags":["proto","http","registry","index"],"image":"./img/proto/v0.18.png"},"prevItem":{"title":"moon v1.14 - Improvements to running targets and toolchain versions","permalink":"/blog/moon-v1.14"},"nextItem":{"title":"proto v0.17 - Experimental Python support and canary releases","permalink":"/blog/proto-v0.17"}},"content":"Today we\'ve got a small release that includes some helpful features.\\n\\n\x3c!--truncate--\x3e\\n\\n## New `proto tools` command\\n\\nAre you curious what tools you have installed? And more specifically, which versions? What about\\nconfigured aliases? Until now, you had to manually check the `~/.proto/tools` directory for this\\ninformation, but now, you can simply run [`proto tools`](/docs/proto/commands/tools) to get a list\\nof all installed tools.\\n\\nThis command will list all tools that have been installed, along with their installed versions,\\nrelevant timestamps, available aliases, and store location.\\n\\n```shell\\n$ proto tools\\ngo - Go\\n Store: ~/.proto/tools/go\\n Versions:\\n 1.20.0 - installed 08/24/23, last used 09/18/23\\n 1.20.2 - installed 01/01/70, last used 09/18/23, default version\\n\\nnode - Node.js\\n Store: ~/.proto/tools/node\\n Aliases:\\n ~20 = stable\\n Versions:\\n 18.0.0 - installed 09/03/23, last used 09/18/23, default version\\n 18.14.0 - installed 09/04/23, last used 09/04/23\\n 18.17.1 - installed 09/04/23, last used 09/04/23\\n 19.0.0 - installed 09/03/23\\n 20.0.0 - installed 09/03/23\\n 20.6.0 - installed 09/04/23, last used 09/18/23\\n```\\n\\n> This information can also be represented as JSON by passing the `--json` flag.\\n\\n## New `[http]` user settings\\n\\nFurthermore, we\'ve added a new [`[http]` setting to `~/.proto/config.toml`](/docs/proto/config#http)\\nthat allows you to configure aspects of the HTTP client, which is primarily used for downloading\\ntools.\\n\\nThis may useful if you\'re behind a proxy, a VPN, or corporate network, and certain requests and\\ncertificates are blocked.\\n\\n```toml title=\\"~/.proto/config.toml\\"\\n[http]\\nproxies = [\\"http://intra.net/proxy\\"]\\nroot-cert = \\"/path/to/root/cert.pem\\"\\n```\\n\\n## Index for third-party tools\\n\\nNow that our TOML and WASM plugins have stabilized, we felt the time was right to start working on a\\nthird-party index, a registry of all available tools. We\'ve updated the official\\n[Supported tools](/docs/proto/tools) documentation to now include third-party tools.\\n\\nAt this time, the list of tools is powered by a JS/JSON object,\\n[which can be found here](https://github.com/moonrepo/moon/blob/master/website/src/data/proto-tools.tsx).\\nIn the future, we may move this to a database, add filtering, sorting, and everything else necessary\\nfor showcasing tools maintained by the community!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.18.0) for a full list\\nof changes.\\n\\n- For TOML plugins, we updated the schema internally to be represented as JSON instead of TOML,\\n which may cause breakages depending on a version mismatch between proto and the plugin."},{"id":"proto-v0.17","metadata":{"permalink":"/blog/proto-v0.17","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-11_proto-v0.17.mdx","source":"@site/blog/2023-09-11_proto-v0.17.mdx","title":"proto v0.17 - Experimental Python support and canary releases","description":"This release implements two long requested features, Python language support and canary releases.","date":"2023-09-11T00:00:00.000Z","formattedDate":"September 11, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"plugin","permalink":"/blog/tags/plugin"},{"label":"tool","permalink":"/blog/tags/tool"},{"label":"canary","permalink":"/blog/tags/canary"},{"label":"python","permalink":"/blog/tags/python"}],"readingTime":2.39,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.17","title":"proto v0.17 - Experimental Python support and canary releases","authors":["milesj"],"tags":["proto","plugin","tool","canary","python"],"image":"./img/proto/v0.17.png"},"prevItem":{"title":"proto v0.18 - List installed tools and configure HTTP client","permalink":"/blog/proto-v0.18"},"nextItem":{"title":"moon v1.13 - Toolchain now uses WASM plugins","permalink":"/blog/moon-v1.13"}},"content":"This release implements two long requested features, Python language support and canary releases.\\n\\n\x3c!--truncate--\x3e\\n\\n## Experimental Python support\\n\\nIt\'s been quite a while since we\'ve introduced a new language into proto, and we\'re excited to\\nannounce the highly requested language, Python! Since Python is now an\\n[officially supported language](https://github.com/moonrepo/python-plugin), installing Python (and\\npip) is as simple as:\\n\\n```shell\\n$ proto install python\\n```\\n\\nHowever, we\'re marking language support as experimental for the time being. We expect our\\nimplementation to work for modern Python versions, but may not work for older versions, especially\\nPython 2. The reasons for this are as follows:\\n\\n- proto will install pre-built binaries from\\n [indygreg/python-build-standalone](https://github.com/indygreg/python-build-standalone). This is\\n an unofficial project, and _does not_ support all Python versions.\\n- If [`python-build`](https://github.com/pyenv/pyenv/blob/master/plugins/python-build/README.md) is\\n available, we\'ll attempt to use it to build + install Python. This currently requires `pyenv` to\\n be installed, and _does not_ work on Windows.\\n- Furthermore, we only support `cpython` at the moment, and do not support `pypy`, `jython`, or\\n other Python implementations. It\'s unknown whether this functionality should be in the core Python\\n plugin, or another plugin entirely.\\n\\nIn a future proto version, we want to support a true \\"build from source\\" approach for all tools.\\nOnce that functionality has landed, we can properly support Python on all platforms, but until then,\\nlet us know how this works for you!\\n\\n## Install canary releases\\n\\nA canary release is a mechanism for rolling out new features and changes to a small subset of users,\\nwithout it being an official release on an official channel. This allows users to opt-in and test\\nfunctionality if they so choose. Canary releases are not meant to be used in production, and may\\ncontain bugs or breaking changes. A canary is similar to a nightly (or weekly) release, depending on\\nthe tool.\\n\\nWe now support this workflow in proto. To install a canary release, simply use the\\n[`--canary` flag when installing a tool](/docs/proto/commands/install):\\n\\n```shell\\n$ proto install --canary\\n```\\n\\nThis will install the latest canary release to `~/.proto/tools//canary`, and _only_ the latest\\nrelease can be used. Re-installing with `--canary` will overwrite the previous canary installation.\\n\\nHowever, because we [detect a version to run with at runtime](/docs/proto/detection), how should you\\nactually run canary? The easiest way is to prefix the shim with an environment variable:\\n\\n```shell\\n$ PROTO_BUN_VERSION=canary bun ./index.ts\\n```\\n\\nOr to explicitly configure the version in [`.prototools`](/docs/proto/config):\\n\\n```toml\\nbun = \\"canary\\"\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.17.0) for a full list\\nof changes.\\n\\n- Added colors to command line `--help` menus.\\n- Updated the following locations to support partial versions and aliases:\\n - Tool versions in `.prototools`.\\n - Pinning a default version with `proto install --pin`.\\n - Setting global version with `proto global`.\\n - Setting local version with `proto local`.\\n- Node, npm, pnpm, and yarn will again extract a version from `package.json` engines."},{"id":"moon-v1.13","metadata":{"permalink":"/blog/moon-v1.13","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-05_moon-v1.13.mdx","source":"@site/blog/2023-09-05_moon-v1.13.mdx","title":"moon v1.13 - Toolchain now uses WASM plugins","description":"This is a light release that focused primarily on upgrading to the WASM based proto implementation.","date":"2023-09-05T00:00:00.000Z","formattedDate":"September 5, 2023","tags":[{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"}],"readingTime":2.76,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.13","title":"moon v1.13 - Toolchain now uses WASM plugins","authors":["milesj"],"tags":["tasks","proto","wasm"],"image":"./img/moon/v1.13.png"},"prevItem":{"title":"proto v0.17 - Experimental Python support and canary releases","permalink":"/blog/proto-v0.17"},"nextItem":{"title":"proto v0.16 - Add, remove, and purge plugins","permalink":"/blog/proto-v0.16"}},"content":"This is a light release that focused primarily on upgrading to the WASM based proto implementation.\\n\\n\x3c!--truncate--\x3e\\n\\n## proto upgrade and WASM plugins\\n\\nOver the last few months, we\'ve made immense strides on [proto](/proto), our multi-language\\ntoolchain. For those of you unaware, moon\'s toolchain is built on top of proto, and we accomplish\\nthis by utilizing the same Rust code between both tools.\\n\\nHowever, moon has been locked to [proto v0.12](/blog/proto-v0.12), which was a purely Rust based\\nimplementation. With the release of [proto v0.13](/blog/proto-v0.13) and onward, proto has moved to\\na WASM based plugin architecture (with the core still in Rust), which allows us to support more\\nlanguages, and enables developers to write plugins in non-Rust languages.\\n\\nAnd since our WASM plugins have stabilized by [proto v0.16](/blog/proto-v0.16), we felt it was time\\nto finally upgrade moon\'s implementation to the latest and greatest. So what does this mean exactly?\\nA few things:\\n\\n- If you\'re using moon\'s [toolchain](/docs/config/toolchain) (like `node`), we will now download the\\n [Node.js WASM plugins](https://github.com/moonrepo/node-plugin) in the background (to\\n `~/.proto/plugins`).\\n- These plugins are in charge of downloading and installing the Node.js, npm, pnpm, or yarn version\\n specified in your toolchain configuration.\\n- The entire plugin flow is now logged to the console, so you can see what\'s happening behind the\\n scenes.\\n- In the future (most likely moon v2), our platform and language integration will also be powered by\\n WASM plugins. This enables you to build your own custom plugins!\\n\\n:::info\\n\\nThis entire process should be transparent to all users, and you should not notice any changes.\\nHowever, in case this upgrade causes issues, we wanted to isolate it from other changes, hence the\\nlight release!\\n\\n:::\\n\\n## Allow tasks to fail\\n\\n\\"Allow tasks to fail?\\" You ask yourself. \\"Doesn\'t that defeat the point of a task runner?\\" You\\nquestion further. \\"You\'re not wrong!\\" We reply. These questions assume a perfect repository state,\\nwhere all tasks either pass or fail, and there\'s no middle ground. In reality, very rarely is that\\ntrue, and we want to support those stuck in the middle, such as:\\n\\n- In a heavy migration and it\'s known that a task is currently broken.\\n- The task is flaky but you\'ve been unable to find the root cause.\\n- Upstream dependencies have published a backwards incompatible change, and you\'re waiting on a fix.\\n- And of course, in the middle of adopting moon!\\n\\nFor situations where a task consistently or sometimes fails, but you don\'t want it to fail the\\nentire pipeline (especially in CI), you can enable the new\\n[`allowFailure` task option](/docs/config/project#allowfailure).\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n typecheck:\\n command: \'tsc --build\'\\n options:\\n allowFailure: true\\n```\\n\\nWhen enabled, failing tasks will no longer bail [`moon run`](/docs/commands/run) early, nor will it\\nexit [`moon ci`](/docs/commands/ci) with a non-zero exit code. However, we still built guard rails\\naround this feature, as we don\'t want to encourage bad practices, and one of these guard rails is\\nthat tasks that enable `allowFailure` _cannot_ be depended on by other tasks, as we cannot guarantee\\nthat it\'s side-effect free.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.13.0) for a full list\\nof changes.\\n\\n- Added colors to command line `--help` menus.\\n- Updated `runner.archivableTargets` to support tag scoped targets.\\n- Updated `moon query tasks --affected` to filter based on affected task, instead of affected\\n project."},{"id":"proto-v0.16","metadata":{"permalink":"/blog/proto-v0.16","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-04_proto-v0.16.mdx","source":"@site/blog/2023-09-04_proto-v0.16.mdx","title":"proto v0.16 - Add, remove, and purge plugins","description":"This release adds functionality for managing plugins and purging the proto store.","date":"2023-09-04T00:00:00.000Z","formattedDate":"September 4, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":1.445,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.16","title":"proto v0.16 - Add, remove, and purge plugins","authors":["milesj"],"tags":["proto","plugin"]},"prevItem":{"title":"moon v1.13 - Toolchain now uses WASM plugins","permalink":"/blog/moon-v1.13"},"nextItem":{"title":"proto v0.15 - Install and uninstall globals","permalink":"/blog/proto-v0.15"}},"content":"This release adds functionality for managing plugins and purging the proto store.\\n\\n\x3c!--truncate--\x3e\\n\\n## Add and remove plugins\\n\\nNow that proto has fully embraced a plugin based architecture, we thought it\'d be nice to support\\nthe management of these plugins through the CLI. This release adds two new commands:\\n[`proto add-plugin`](/docs/proto/commands/add-plugin) and\\n[`proto remove-plugin`](/docs/proto/commands/remove-plugin).\\n\\nAdding a plugin requires a unique ID and what we call a locator, which is a string that dictates\\nwhere to locate and download the plugin from. Here\'s an example for Node.js, but this isn\'t\\nnecessary as it\'s built-in:\\n\\n```shell\\n$ proto add-plugin node source:https://github.com/moonrepo/node-plugin/releases/latest/download/node_plugin.wasm\\n```\\n\\nAdditionally, removing a plugin is even easier.\\n\\n```shell\\n$ proto remove-plugin node\\n```\\n\\n## Purge tools and plugins\\n\\nproto has supported cleaning for quite some time through the\\n[`proto clean`](/docs/proto/commands/clean) command (and the\\n[`auto-clean` setting](/docs/proto/config#user-configuration)), which would automatically delete\\ninstalled tool versions and temporary files that are older then a specific timeframe. This helps to\\nfree up disk space for unused or rarely used tools.\\n\\nIn this release, we\'re expanding the `clean` command\'s functionality with a concept known as\\npurging, which will \\"delete entirely\\". The first being the new `--purge` option, which will delete a\\ntool, its manifest, _all_ installed versions, and the entire `~/.proto/tools/` directory.\\n\\n```shell\\n# Delete all traces of Node.js\\n$ proto clean --purge node\\n```\\n\\nAdditionaly, a new `--purge-plugins` option can be used to delete all downloaded plugins (the\\n`~/.proto/plugins` directory). Useful for house keeping or if you want to start fresh.\\n\\n```shell\\n$ proto clean --purge-plugins\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.16.0) for a full list\\nof changes.\\n\\n- Added folder locking during tool installation to avoid colliding processes.\\n- Renamed `PROTO_ROOT` to `PROTO_HOME`, but we\'ll support `PROTO_ROOT` for the time being."},{"id":"proto-v0.15","metadata":{"permalink":"/blog/proto-v0.15","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-08-23_proto-v0.15.mdx","source":"@site/blog/2023-08-23_proto-v0.15.mdx","title":"proto v0.15 - Install and uninstall globals","description":"This is a small release that adds support for uninstalling globals, and improves our WASM APIs.","date":"2023-08-23T00:00:00.000Z","formattedDate":"August 23, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"},{"label":"global","permalink":"/blog/tags/global"}],"readingTime":1.48,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.15","title":"proto v0.15 - Install and uninstall globals","authors":["milesj"],"tags":["proto","wasm","plugin","global"]},"prevItem":{"title":"proto v0.16 - Add, remove, and purge plugins","permalink":"/blog/proto-v0.16"},"nextItem":{"title":"moon v1.12 - Task improvements: extending, interactive, and more","permalink":"/blog/moon-v1.12"}},"content":"This is a small release that adds support for uninstalling globals, and improves our WASM APIs.\\n\\n\x3c!--truncate--\x3e\\n\\n## Uninstall global dependencies\\n\\nproto has supported [installing globals since v0.5](./proto-v0.5), but there\'s been no way to\\nuninstall an existing global, until now! In this release, we\'re introducing the\\n[`proto uninstall-global`](/docs/proto/commands/uninstall-global) command, which will do just that!\\nThe API is exactly the same as its installation counter-part.\\n\\n```shell\\nproto install-global node prettier\\n\\n# On second thought, nevermind...\\nproto uninstall-global node prettier\\n```\\n\\n### WASM functions\\n\\nImplementing this command was rather straight forward, but most of the work went into supporting\\n[`install_global` and `uninstall_global`](/docs/proto/wasm-plugin#installing-and-uninstalling-globals)\\nfunctions for WASM plugins, and then updating all existing plugins! For those of you writing your\\nown plugins, here\'s an example of what the Rust code looks like:\\n\\n```rust\\n#[plugin_fn]\\npub fn install_global(\\n Json(input): Json,\\n) -> FnResult> {\\n let result = exec_command!(inherit, \\"npm\\", [\\"install\\", \\"--global\\", &input.dependency]);\\n\\n Ok(Json(InstallGlobalOutput::from_exec_command(result)))\\n}\\n```\\n\\n### TOML setting\\n\\nWe\'ve also updated our TOML plugins to support uninstalling globals through the new\\n[`globals.uninstall-args`](/docs/proto/toml-plugin#global-packages) setting. Hopefully the name is\\nself explanatory, but it\'s a list of arguments passed to the tool\'s binary, that\'ll uninstall the\\nglobal.\\n\\n```toml\\n# ...\\n\\n[globals]\\ninstall-args = [\\"install\\", \\"--global\\", \\"{dependency}\\"]\\nuninstall-args = [\\"uninstall\\", \\"--global\\", \\"{dependency}\\"]\\n```\\n\\n## Improved WASM documentation\\n\\nWith each release we\'re slowly stabilizing the WASM and TOML APIs for an official v1 release (which\\nis soon), and with this, it requires more documentation. As part of this release, we\'ve done a giant\\npolish pass on our WASM documentation, and have included the following sections:\\n\\n- [Virtual paths](/docs/proto/wasm-plugin#virtual-paths)\\n- [Host environment](/docs/proto/wasm-plugin#host-environment)\\n- [Host functions](/docs/proto/wasm-plugin#host-functions)\\n- [Tool ID and context](/docs/proto/wasm-plugin#tool-id-and-context)\\n- [Installing and uninstalling globals](/docs/proto/wasm-plugin#installing-and-uninstalling-globals)\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.15.0) for a full list\\nof changes.\\n\\n- Major WASM API improvements, including backwards incompatible changes."},{"id":"moon-v1.12","metadata":{"permalink":"/blog/moon-v1.12","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-08-21_moon-v1.12.mdx","source":"@site/blog/2023-08-21_moon-v1.12.mdx","title":"moon v1.12 - Task improvements: extending, interactive, and more","description":"In this release, we focused heavily on improving tasks, its configuration, and related systems.","date":"2023-08-21T00:00:00.000Z","formattedDate":"August 21, 2023","tags":[{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"inheritance","permalink":"/blog/tags/inheritance"}],"readingTime":3.32,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.12","title":"moon v1.12 - Task improvements: extending, interactive, and more","authors":["milesj"],"tags":["tasks","inheritance"],"image":"./img/moon/v1.12.png"},"prevItem":{"title":"proto v0.15 - Install and uninstall globals","permalink":"/blog/proto-v0.15"},"nextItem":{"title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","permalink":"/blog/proto-v0.14"}},"content":"In this release, we focused heavily on improving tasks, its configuration, and related systems.\\n\\n\x3c!--truncate--\x3e\\n\\n## Extending sibling or inherited tasks\\n\\nThree months ago, we posted an\\n[RFC on how to support task extending / task variants](https://github.com/moonrepo/moon/issues/849).\\nOn paper this doesn\'t sound like a hard problem to solve, but internally it would of been an uphill\\nbattle to implement. Thanks to previous releases from the past few months, and the rewrite of the\\nproject graph, task builder, and more, this implementation was a breeze. To finalize the RFC, we\\nwent with option 2, by adding a new `extends` field to task configurations.\\n\\nWith this new addition, we can now rewrite this old configuration, which was needlessly\\nrepetitive...\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n lint:\\n command: \'eslint .\'\\n inputs:\\n - \'@globs(sources)\'\\n - \'@globs(tests)\'\\n - \'*.js\'\\n - \'.eslintrc.js\'\\n - \'tsconfig.json\'\\n - \'/.eslintignore\'\\n - \'/.eslintrc.js\'\\n - \'/tsconfig.eslint.json\'\\n - \'/tsconfig.options.json\'\\n\\n lint-fix:\\n command: \'eslint . --fix\'\\n local: true\\n inputs:\\n - \'@globs(sources)\'\\n - \'@globs(tests)\'\\n - \'*.js\'\\n - \'.eslintrc.js\'\\n - \'tsconfig.json\'\\n - \'/.eslintignore\'\\n - \'/.eslintrc.js\'\\n - \'/tsconfig.eslint.json\'\\n - \'/tsconfig.options.json\'\\n```\\n\\nInto the following configuration.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n lint:\\n command: \'eslint .\'\\n inputs:\\n - \'@globs(sources)\'\\n - \'@globs(tests)\'\\n - \'*.js\'\\n - \'.eslintrc.js\'\\n - \'tsconfig.json\'\\n - \'/.eslintignore\'\\n - \'/.eslintrc.js\'\\n - \'/tsconfig.eslint.json\'\\n - \'/tsconfig.options.json\'\\n\\n lint-fix:\\n extends: \'lint\'\\n args: \'--fix\'\\n local: true\\n```\\n\\nWe\'re very happy with this solution, as it\'s far more readable, maintainable, and doesn\'t introduce\\nyet another paradigm to learn. Our goal was to be as familiar as possible, while providing extensive\\nfunctionality behind the scenes, which we believe to have achieved.\\n\\nSome other interesting facts around task extending:\\n\\n- When extending a task, [merge strategies](/docs/concepts/task-inheritance#merge-strategies) are\\n applied in a similar fashion to inheritance.\\n- Inherited tasks can be extended from by project-level tasks.\\n- It\'s possible to create multiple extended chains.\\n\\n## Configure tasks as interactive\\n\\nSix months ago, we added support for [interactive tasks in v0.24](./v0.24#interactive-tasks), but\\nonly if certain conditions were met: if only 1 target is running, they are considered interactive,\\nor if the `--interactive` option was passed to [`moon run`](/docs/commands/run). However, we believe\\nit nice to support interactive tasks through task configuration directly, but it required some\\nthought into how this would work within the dependency graph and pipeline, as only 1 task can\\ninteract with stdin at a time.\\n\\nWe solved this problem by reworking our dependency graph so that interactive tasks are isolated from\\nother actions in the graph, and are not run in parallel with other actions. This will result in\\nlonger dependency chains, but results in a working stdin solution.\\n\\nTo mark a task as interactive, enable the [`options.interactive`](/docs/config/project#interactive)\\nsetting.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n init:\\n command: \'init-app\'\\n options:\\n interactive: true\\n```\\n\\n## Tokens in enviroment variables\\n\\nUp until now, [token functions and variables](/docs/concepts/token) were only supported in task\\ncommands, args, inputs, and outputs, but not environment variables... why? Honestly, there was no\\nreal reason they weren\'t supported, it simply never crossed our mind! But thanks to requests from\\nthe community, both token functions and variables are now supported in task\\n[`env`](/docs/config/project#env-1).\\n\\nThis is great for propagating moon values to other systems. For example, say you want to use moon\\nproject names for Sentry, keeping a 1:1 mapping.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n start:\\n command: \'run-server\'\\n env:\\n SENTRY_PROJECT: \'$project\'\\n```\\n\\nIf you\'re familiar with tokens, you may be asking yourself, \\"How do token functions work since they\\nexpand to a list of paths?\\" That\'s a great question! When token functions are used in an environment\\nvariable, like `@group(sources)`, the list of paths will be joined with a comma (`,`).\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n build:\\n # ...\\n env:\\n SRCS: \'@group(sources)\'\\n```\\n\\nSince the environment variable is simply a string, you could parse it with your language of choice\\nto extract the list of paths.\\n\\n```js\\nconst paths = process.env.SRCS.split(\',\');\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.12.0) for a full list\\nof changes.\\n\\n- Added git worktree support.\\n- Updated task `outputs` to support negated globs.\\n- Will now log a warning to the console if a configuration file uses the `.yaml` extension."},{"id":"proto-v0.14","metadata":{"permalink":"/blog/proto-v0.14","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-08-11_proto-v0.14.mdx","source":"@site/blog/2023-08-11_proto-v0.14.mdx","title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","description":"With this release, we\'ve finished our migration to a WASM based plugin architecture.","date":"2023-08-11T00:00:00.000Z","formattedDate":"August 11, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":2,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.14","title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","authors":["milesj"],"tags":["proto","wasm","plugin"]},"prevItem":{"title":"moon v1.12 - Task improvements: extending, interactive, and more","permalink":"/blog/moon-v1.12"},"nextItem":{"title":"moon v1.11 - Next-generation project graph","permalink":"/blog/moon-v1.11"}},"content":"With this release, we\'ve finished our migration to a WASM based plugin architecture.\\n\\n\x3c!--truncate--\x3e\\n\\n## Full migration to WASM\\n\\nIn [our last release](./proto-v0.13), we migrated the Bun, Deno, and Go plugins to WASM. In this\\nrelease, we\'re excited to announce that we have completed our WASM migration by also converting\\nNode.js (and npm, etc) and Rust to WASM plugins. We\'ve also updated our TOML plugin layer to use\\nWASM under the hood.\\n\\nWith this, 100% of our tools are now powered by WASM, and the APIs are stable enough for you, the\\nconsumers, to build your own plugins! We have plans for additional APIs in the next release,\\nprimarily installing and uninstall globals, and a hooks system, so look forward to that! To learn\\nmore about our official plugins, check out the their repositories!\\n\\n- [Bun](https://github.com/moonrepo/bun-plugin)\\n- [Deno](https://github.com/moonrepo/deno-plugin)\\n- [Go](https://github.com/moonrepo/go-plugin)\\n- [Node](https://github.com/moonrepo/node-plugin)\\n- [Rust](https://github.com/moonrepo/rust-plugin)\\n- [Schema](https://github.com/moonrepo/schema-plugin)\\n\\nThis release may seem light, but we\\n[rewrote the entire core](https://github.com/moonrepo/proto/pull/161) from the ground up to support\\na pure plugin based architecture. This was a lot of work, but our implementation is far easier to\\nwork with, and more robust. As part of this process, we improved version and range handling, archive\\nunpacking, and much more!\\n\\n> Because of the rewrite, we may have introduced a few bugs. Please report any issues!\\n\\n## Breaking changes for TOML plugins\\n\\nIn preparation for the next release, and as clean up during the rewrite, we\'ve made a few breaking\\nchanges to the TOML schema, primarily around global handling. To start, this old code:\\n\\n```toml\\n[install]\\nglobals-dir = [\\"$PROTOSTAR_HOME/bin\\", \\"$HOME/.protostar/bin\\"]\\nglobal-args = [\\"install\\", \\"--force\\", \\"{dependency}\\"]\\n```\\n\\nCan now be rewritten as:\\n\\n```toml\\n[globals]\\nlookup-dirs = [\\"$PROTOSTAR_HOME/bin\\", \\"$HOME/.protostar/bin\\"]\\ninstall-args = [\\"install\\", \\"--force\\", \\"{dependency}\\"]\\n```\\n\\nAnd lastly, the `install.unpack` setting has been removed. We believe our installation layer is\\nsmart enough to unpack or move files automatically.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.14.0) for a full list\\nof changes.\\n\\n- Versions defined in `.prototools` must be fully-qualified semantic versions. Partial versions\\n (missing patch or minor) are no longer supported. This may change in the future based on feedback.\\n- Tool and plugin names must now be in kebab-case.\\n- Node\\n - Yarn 2+ is now installed using `@yarnpkg/cli-dist`. We no longer downgrade to the latest v1.\\n - Will no longer detect a version from `engines` in `package.json`.\\n- Rust\\n - Will now detect a version/channel from `rust-toolchain.toml` and `rust-toolchain`."},{"id":"moon-v1.11","metadata":{"permalink":"/blog/moon-v1.11","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-31_moon-v1.11.mdx","source":"@site/blog/2023-07-31_moon-v1.11.mdx","title":"moon v1.11 - Next-generation project graph","description":"With this release, we\'ve focused heavily on rewriting our project graph for the next-generation of","date":"2023-07-31T00:00:00.000Z","formattedDate":"July 31, 2023","tags":[{"label":"project-graph","permalink":"/blog/tags/project-graph"},{"label":"project","permalink":"/blog/tags/project"}],"readingTime":4.095,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.11","title":"moon v1.11 - Next-generation project graph","authors":["milesj"],"tags":["project-graph","project"],"image":"./img/moon/v1.11.png"},"prevItem":{"title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","permalink":"/blog/proto-v0.14"},"nextItem":{"title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","permalink":"/blog/proto-v0.13"}},"content":"With this release, we\'ve focused heavily on rewriting our project graph for the next-generation of\\nmoon.\\n\\n\x3c!--truncate--\x3e\\n\\n## New project graph\\n\\nOne of the first features that was built for moon was the project graph, as this was required to\\ndetermine relationships between tasks and projects. Its initial implementation was rather simple, as\\nit was a basic directed acyclic graph (DAG). However, as moon grew in complexity, so did the project\\ngraph, and overtime, it has accrued a lot of cruft and technical debt.\\n\\nOne of the biggest pain points has been the project graph cache, and correctly invalidating the\\ncache for all necessary scenarios. If you\'ve been using moon for a long time, you\'re probably aware\\nof all the hot fixes and patches that have been released. Another problem with the cache, is that it\\nincluded hard-coded [file system paths](https://github.com/moonrepo/moon/issues/937) and\\n[environment variables](https://github.com/moonrepo/moon/issues/896), both of which would not\\ninvalidate the cache when changed.\\n\\nWe felt it was time to rebuild the project graph from the ground up. Some of this work has already\\nlanded in [previous releases](./moon-v1.9#rewritten-task-inheritance).\\n\\n### Old implementation\\n\\nFor those of you who are interested in the technical details, here\'s a quick overview of how the old\\nproject graph worked. To start, the graph was composed around the following phases:\\n\\n- **Build** - Projects are loaded into the graph (nodes), relationships are linked (edges),\\n configurations are read, tasks are inherited, and platform/language rules are applied.\\n- **Expand** - In all tasks, token variables and functions are expanded/substituted, dependencies\\n are expanded (`^:deps`, etc), `.env` files are read (when applicable), so on and so forth.\\n- **Validate** - Enforces project and task boundaries and constraints.\\n\\nThis is quite a lot of work, and it was all done in _a single pass_. What this means is that for\\neach project loaded into the graph, we would recursively build -> expand -> validate, until all\\nprojects have been loaded, synchronously at once in the same thread. Because this is a rather\\nexpensive operation, the project graph cache was introduced to avoid having to do this work on every\\nrun.\\n\\nMakes sense, right? For the most part yes, but there is a core problem with the solution above, and\\nif you\'ve noticed it already, amazing! The problem is that out of these 3 phases, only the build\\nphase is truly cacheable, as the expand and validate phases are far too dynamic and dependent on the\\nenvironment. This means that the cache is only partially effective, and in some cases, entirely\\nbroken.\\n\\nAnother unrelated problem with this solution, is that because everything is built in a single pass,\\nadvanced functionality that requires multiple passes is not possible and has been stuck on the\\nbacklog.\\n\\n### New implementation\\n\\nFor backwards compatibility, the new project graph works in a similar manner, but has none of the\\nshortcomings of the old implementation (hopefully). To start, the new project graph still has the\\nsame 3 phases, but they are _no longer processed in a single pass_, instead...\\n\\nThe build phase is now asynchronous, enabling deeper interoperability with the rest of the\\nasync-aware codebase. However, the critical change is that the project graph cache is now written\\n_after_ the build phase (and read _before_), instead of after the entire graph being generated.\\n\\n> The new cache file is `.moon/cache/states/partialProjectGraph.json`, and is named partial because\\n> tasks have not been expanded. Use `moon project-graph --json` for a fully expanded graph.\\n\\nThe expand phase has changed quite a bit. Instead of expanding everything at once, projects and\\ntasks are only expanded when they are needed. For example, if only running a single target, we\'ll\\nnow only expand that project and task, instead of _everything_ in the graph. With this change, you\\nshould potentially see performance increases, unless you\'re using `moon ci` or `moon check --all`.\\n\\nAnd lastly, validation is still the same, but has been reworked so that we can easily extend it with\\nmore validation rules in the future.\\n\\n### Unlocked features\\n\\nWith these changes to building and expanding, we\'ve unlocked a few new features that were not\\npossible before.\\n\\n- Task dependencies can now reference tag based targets. For example, say we want to build all React\\n projects before starting our application.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'next dev\'\\n deps:\\n - \'#react:build\'\\n```\\n\\n- Task commands and arguments will now substitute environment variables, by first checking `env`,\\n then those from the system.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n build:\\n command: \'docker build --build-arg pkg=$PKG_NAME\'\\n env:\\n PKG_NAME: \'foo-bar\'\\n```\\n\\n- Project dependencies can now mark relationships as `build`. This is only applicable for languages\\n that support build dependencies, like Rust.\\n\\n```yaml title=\\"moon.yml\\"\\ndependsOn:\\n - id: \'foo\'\\n scope: \'build\'\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.11.0) for a full list\\nof changes.\\n\\n- Identifiers (project names, file groups, etc) can now be prefixed with underscores (`_`).\\n- Added Poetry detection support for Python projects.\\n- Added an `experiments` setting to `.moon/workspace.yml`."},{"id":"proto-v0.13","metadata":{"permalink":"/blog/proto-v0.13","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-21_proto-v0.13.mdx","source":"@site/blog/2023-07-21_proto-v0.13.mdx","title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","description":"With this release, we\'re embracing WASM even further.","date":"2023-07-21T00:00:00.000Z","formattedDate":"July 21, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":2.195,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.13","title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","authors":["milesj"],"tags":["proto","wasm","plugin"]},"prevItem":{"title":"moon v1.11 - Next-generation project graph","permalink":"/blog/moon-v1.11"},"nextItem":{"title":"moon v1.10 - Mid-year quality of life improvements","permalink":"/blog/moon-v1.10"}},"content":"With this release, we\'re embracing WASM even further.\\n\\n\x3c!--truncate--\x3e\\n\\n## Core migration to WASM\\n\\nNow that WASM plugin support is up and running, we\'ve hit a non-ideal situation where we have\\nmultiple competing implementations for \\"tools\\" in proto. We currently have 3 different approaches:\\n\\n- Tools implemented in Rust and built into proto\'s core.\\n- TOML based plugins, with a simple Rust based wrapper.\\n- WASM based plugins.\\n\\nThis is far too many implementations to support, and makes it extremely difficult to add new\\nfeatures for tools, as it affects all 3. To remedy this situation, we\'ve decided to migrate all core\\ntools to WASM plugins, and remove the Rust based implementations. The core of proto and its CLI will\\nstill be Rust, but will be slowly migrated into a truly pluggable architecture.\\n\\nTo test drive and experiment with this solution, we\'ve migrated\\n[Bun](https://github.com/moonrepo/bun-plugin), [Deno](https://github.com/moonrepo/deno-plugin), and\\n[Go](https://github.com/moonrepo/go-plugin) into WASM plugins, and starting with this release, they\\nare purely powered by WASM and have been removed entirely from the Rust implementation.\\n\\nIn the next release, we hope to migrate Node.js and Rust as well. And in a future release, the TOML\\nplugins will be compiled into\\n[`.wat` files](https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format)\\nand loaded as WASM plugins. From here, we will have a single tool implementation, and can implement\\nsome really exciting features!\\n\\n## New `github:` plugin configuration\\n\\nAlongside the `source:` configuration strategy, plugins can now be configured with the `github:`\\nstrategy to locate WASM files from GitHub releases. For example, the `bun_plugin.wasm` file will be\\ndownloaded from our\\n[`bun-plugin`\'s latest release](https://github.com/moonrepo/bun-plugin/releases).\\n\\n[Learn more about this new locator scope!](/docs/proto/plugins#github)\\n\\n```toml title=\\".prototools\\"\\n[plugins]\\nbun = \\"github:moonrepo/bun-plugin\\"\\n```\\n\\n> Bun support is built into proto, there is merely an example!\\n\\n## New `proto plugins` commands\\n\\nWith the advent of plugins, we thought it would be nice to know which plugins are actually\\nconfigured and in use, without having to manually search config files across the file system, and as\\nsuch, have added a new [`proto plugins`](/docs/proto/commands/plugins) command.\\n\\nThis command is simple. It will list all plugins that are currently configured for the current\\nproject, by loading all `.prototools` files up the tree, and loading the user\\n`~/.proto/config.toml`.\\n\\n```shell\\n$ proto plugins\\nbun - Bun\\n GitHub: moonrepo/bun-plugin\\n Tag: latest\\n\\ndeno - Deno\\n GitHub: moonrepo/deno-plugin\\n Tag: latest\\n\\ngo - Go\\n GitHub: moonrepo/go-plugin\\n Tag: latest\\n```\\n\\n[Learn more about this new command!](/docs/proto/commands/plugins)\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.13.0) for a full list\\nof changes.\\n\\n- Added documentation for writing [unit tests for WASM plugins](/docs/proto/wasm-plugin#unit-tests).\\n- Updated `proto clean` and `proto use` to load and merge all `.prototools` from the current\\n directory and upwards.\\n- Many WASM API improvements."},{"id":"moon-v1.10","metadata":{"permalink":"/blog/moon-v1.10","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-10_moon-v1.10.mdx","source":"@site/blog/2023-07-10_moon-v1.10.mdx","title":"moon v1.10 - Mid-year quality of life improvements","description":"Instead of launching a large feature this release, we\'re focusing on quality of life and developer","date":"2023-07-10T00:00:00.000Z","formattedDate":"July 10, 2023","tags":[{"label":"quality","permalink":"/blog/tags/quality"},{"label":"life","permalink":"/blog/tags/life"},{"label":"qol","permalink":"/blog/tags/qol"},{"label":"ignore","permalink":"/blog/tags/ignore"},{"label":"hasher","permalink":"/blog/tags/hasher"},{"label":"vcs","permalink":"/blog/tags/vcs"},{"label":"ci","permalink":"/blog/tags/ci"},{"label":"debug","permalink":"/blog/tags/debug"}],"readingTime":3.6,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.10","title":"moon v1.10 - Mid-year quality of life improvements","authors":["milesj"],"tags":["quality","life","qol","ignore","hasher","vcs","ci","debug"],"image":"./img/moon/v1.10.png"},"prevItem":{"title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","permalink":"/blog/proto-v0.13"},"nextItem":{"title":"proto v0.12 - Experimental WASM plugins","permalink":"/blog/proto-v0.12"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nInstead of launching a large feature this release, we\'re focusing on quality of life and developer\\nexperience improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Quality improvements\\n\\nIn the past 6 months, we\'ve released over 16 versions of moon, with our official v1.0 release among\\nthem. This is extremely impressive and we\'re very proud of the progress we\'ve made. To continue this\\ntrend, we\'ll be starting a new initiative that will land quality of life improvements (instead of\\nmajor features) every 6 months, starting with this release!\\n\\n### Potential breaking changes\\n\\nWhile APIs haven\'t changed, we have introduced some fixes for edge case that could be considered\\nbreaking, but for the most part, these changes probably won\'t affect you. With that being said...\\n\\nThe first fix is that tasks configured with the same `outputs` location (including glob overlap)\\nwill now error. This is extremely problematic for caching and hydration, as multiple tasks all\\nwriting to the same output will inflate the tarball, and cause unwanted side effects. To demonstrate\\nthis, the following is now an error:\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n build:\\n command: \'foo build\'\\n outputs:\\n - \'dist\'\\n\\n compile:\\n command: \'bar compile\'\\n outputs:\\n - \'dist\'\\n```\\n\\nThe other fix, which primarily applies to [`moon ci`][ci] and [`moon check`](/docs/commands/check),\\nis that a target will be skipped if one of its dependencies failed or has also been skipped.\\nPreviously the target would attempt to run and most likely fail since it relied on artifacts from\\nits dependencies (which don\'t exist). Another benefit of this change is that runs should be much\\nfaster, as we\'re not wasting time running targets that we know will fail, which is great for CI.\\n\\n### Ignore hashing input files\\n\\nWe\'re introducing 2 new settings to [`.moon/workspace.yml`](/docs/config/workspace) that\'ll provide\\nmore control over the hashing flow, [`hasher.ignorePatterns`](/docs/config/workspace#ignorepatterns)\\nand [`hasher.ignoreMissingPatterns`](/docs/config/workspace#ignoremissingpatterns).\\n\\nThe `ignorePatterns` setting can be used to entirely ignore a file (using glob patterns) from being\\nhashed, and in turn, exclude it as an input source. For example, say we want to ignore all image\\nfiles.\\n\\n```yml title=\\".moon/workspace.yml\\"\\nhasher:\\n ignorePatterns:\\n - \'**/*.{png,svg}\'\\n```\\n\\nThe `ignoreMissingPatterns` setting pairs with\\n[`hasher.warnOnMissingInputs`](/docs/config/workspace#warnonmissinginputs). When enabled, moon will\\nlog a warning to the terminal that an input is missing. This is useful for uncovering\\nmisconfigurations, but can be quite noisy when inputs are truly optional. This new setting can be\\nused to filter these warnings.\\n\\n```yml title=\\".moon/workspace.yml\\"\\nhasher:\\n warnOnMissingInputs: true\\n ignoreMissingPatterns:\\n - \'**/.eslintrc.*\'\\n - \'**/*.config.*\'\\n```\\n\\n### Customize base and head revision\\n\\nThe [`moon ci`][ci] command has always supported customizing the Git base and head revisions through\\nthe `--base` and `--head` options respectively. This was a requirement for running CI effectively,\\nby comparing across branches or commits. However, the [`moon run`][run] did not support this, as\\nthis command was designed to primarily be run locally, but it turns out, y\'all are using it in CI\\ntoo!\\n\\nTo improve the effectiveness of `moon run` in CI, we\'ve made the following improvements, all of\\nwhich require the `--remote` option to be passed.\\n\\n- Added support for `MOON_BASE` and `MOON_HEAD` environment variables, for customizing the base and\\n head revisions respectively (also supported in `moon ci`). If not defined, will use the default\\n branch and `HEAD`.\\n- When the current branch is the default branch, the base revision will be the previous commit.\\n Useful for commits landing on master/main.\\n\\n## New debugging a task guide\\n\\nRunning tasks is the most common way to interact with moon, so what do you do when your task isn\'t\\nworking as expected? Diagnose it of course! However, diagnosing the root cause of a broken task can\\nbe quite daunting:\\n\\n- Is configuration wrong?\\n- What about inheritance? Or merging?\\n- Is the task platform correct?\\n- Were tokens expanded correctly?\\n- What about variable substitution?\\n- So on and so forth...\\n\\nTo help answer these questions, we\'re excited to publish an\\n[in-depth guide for debugging a task](/docs/guides/debug-task)! These steps are the same steps we\\nuse internally to diagnose reported issues, or help the Discord community. We hope you find this\\nguide extremely beneficial!\\n\\n
    \\n
    \\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.10.0) for a full list\\nof changes.\\n\\n- Updated [`moon ci`][ci] to include a summary of all failed actions.\\n- Updated the run report to include stderr/stdout for all attempts.\\n\\n[ci]: /docs/commands/ci\\n[run]: /docs/commands/run"},{"id":"proto-v0.12","metadata":{"permalink":"/blog/proto-v0.12","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-07_proto-v0.12.mdx","source":"@site/blog/2023-07-07_proto-v0.12.mdx","title":"proto v0.12 - Experimental WASM plugins","description":"After months of hard work, we\'re excited to release our first iteration of WASM plugins for proto.","date":"2023-07-07T00:00:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":1.885,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.12","title":"proto v0.12 - Experimental WASM plugins","authors":["milesj"],"tags":["proto","wasm","plugin"]},"prevItem":{"title":"moon v1.10 - Mid-year quality of life improvements","permalink":"/blog/moon-v1.10"},"nextItem":{"title":"moon v1.9 - VCS hooks management and improved task inheritance","permalink":"/blog/moon-v1.9"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nAfter months of hard work, we\'re excited to release our first iteration of WASM plugins for proto.\\n\\n\x3c!--truncate--\x3e\\n\\n## WASM plugins\\n\\nThree months ago, we [published an RFC](https://github.com/moonrepo/proto/issues/73) for supporting\\nplugins in proto. Plugins are a must, as they allow consumers to easily extend proto with additional\\ntools, instead of them being built into proto core (which is very time consuming).\\n\\nTwo months ago, we released support for [TOML plugins](/docs/proto/toml-plugin). These are very\\nsimple plugins powered by static configuration files. They\'re great for simple tools like CLIs and\\npre-built languages, as everything is powered by static HTTP URLs and file names. However, sometimes\\nyou need dynamic control...\\n\\nAnd after 2 months of development, and help from the [Extism team](https://extism.org/), we\'re\\nexcited to announce initial support for WASM plugins. WASM is a portable binary format, with\\nsandboxed access to the file system (via WASI), and the ability to execute processes and fetch URLs.\\nThis means that plugins can be written in any language that compiles to WASM, like Rust, C, C++, Go,\\nTypeScript, and more. This removes the requirement of writing Rust and contributing to proto\\ndirectly!\\n\\n
    \\n
    \\n\\n### Using WASM plugins\\n\\nOnce the `.wasm` file is publicly available for download, we can configure it as a plugin in\\n[`.prototools`](/docs/proto/config).\\n\\n```toml\\n[plugins]\\nmy-plugin = \\"source:https://domain.com/path/to/wasm/plugin.wasm\\"\\n```\\n\\nAnd execute all `proto` commands using the configured plugin identifier.\\n\\n```shell\\nproto install my-plugin\\n```\\n\\n### Example implementation\\n\\nThe official guide above walks you through creating a plugin, but to demonstrate the power of WASM\\nplugins, here\'s an example function that defines parameters for downloading and installing Node.js.\\nThis is written in Rust and using Extism\'s official PDK.\\n\\n```rust\\n#[plugin_fn]\\npub fn download_prebuilt(\\n Json(input): Json,\\n) -> FnResult> {\\n let version = input.env.version;\\n let arch = input.env.arch;\\n\\n let prefix = match input.env.os {\\n HostOS::Linux => format!(\\"node-v{version}-linux-{arch}\\"),\\n HostOS::MacOS => format!(\\"node-v{version}-darwin-{arch}\\"),\\n HostOS::Windows => format!(\\"node-v{version}-win-{arch}\\"),\\n other => {\\n return Err(PluginError::UnsupportedPlatform {\\n tool: NAME.into(),\\n platform: format!(\\"{:?}\\", other),\\n })?;\\n }\\n };\\n\\n let filename = if input.env.os == HostOS::Windows {\\n format!(\\"{prefix}.zip\\")\\n } else {\\n format!(\\"{prefix}.tar.xz\\")\\n };\\n\\n Ok(Json(DownloadPrebuiltOutput {\\n archive_prefix: Some(prefix),\\n download_url: format!(\\"https://nodejs.org/dist/v{version}/{filename}\\"),\\n download_name: Some(filename),\\n checksum_url: Some(format!(\\"https://nodejs.org/dist/v{version}/SHASUMS256.txt\\")),\\n ..DownloadPrebuiltOutput::default()\\n }))\\n}\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.12.0) for a full list\\nof changes."},{"id":"moon-v1.9","metadata":{"permalink":"/blog/moon-v1.9","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-06-26_moon-v1.9.mdx","source":"@site/blog/2023-06-26_moon-v1.9.mdx","title":"moon v1.9 - VCS hooks management and improved task inheritance","description":"In this release, we\'re introducing a long requested feature, VCS hooks! As well as a complete","date":"2023-06-26T00:00:00.000Z","formattedDate":"June 26, 2023","tags":[{"label":"vcs","permalink":"/blog/tags/vcs"},{"label":"git","permalink":"/blog/tags/git"},{"label":"hooks","permalink":"/blog/tags/hooks"},{"label":"task","permalink":"/blog/tags/task"},{"label":"inheritance","permalink":"/blog/tags/inheritance"}],"readingTime":2.625,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.9","title":"moon v1.9 - VCS hooks management and improved task inheritance","authors":["milesj"],"tags":["vcs","git","hooks","task","inheritance"],"image":"./img/moon/v1.9.png"},"prevItem":{"title":"proto v0.12 - Experimental WASM plugins","permalink":"/blog/proto-v0.12"},"nextItem":{"title":"proto v0.11 - New shims and better logging","permalink":"/blog/proto-v0.11"}},"content":"In this release, we\'re introducing a long requested feature, VCS hooks! As well as a complete\\nrewrite of our task inheritance layer.\\n\\n\x3c!--truncate--\x3e\\n\\n## Support for VCS hooks\\n\\nIn our last release, we added support for [code ownership](./moon-v1.8), to better help teams manage\\ntheir code review and approval workflows. To continue this trend of \\"features all companies require\\nbut don\'t have a good solution for\\", we\'re adding support for VCS hooks,\\n[starting with Git](https://git-scm.com/docs/githooks).\\n\\nIf you\'re unfamiliar with Git hooks, they\'re a mechanism for running scripts before or after certain\\nGit events. For example, before a commit is added, before pushing, or after merging. Hooks can be\\nused for such situations as:\\n\\n- Ensuring commit messages abide by a certain format.\\n- Ensuring affected project\'s source code pass linting and formatting checks.\\n- Validating configuration files.\\n- And much more!\\n\\n:::info\\n\\nFor more information, view our official in-depth [VCS hooks guide](/docs/guides/vcs-hooks)!\\n\\n:::\\n\\n### New `vcs` settings\\n\\nTo support hooks, we\'re introducing the `vcs.hooks` and `vcs.syncHooks` settings to\\n[`.moon/workspace.yml`](/docs/config/workspace). The former is where you configure the list of\\ncommands to run, grouped by hook type.\\n\\n```yaml title=\\".moon/workspace.yml\\"\\nvcs:\\n hooks:\\n pre-commit:\\n - \'pre-commit run\'\\n - \'moon run :lint --affected\'\\n```\\n\\nThe latter will automatically create and sync hooks with the local VCS checkout, enabling them going\\nforward. [Learn more about enabling hooks](/docs/guides/vcs-hooks#enabling-hooks), and choosing the\\napproach that works best for you or your team!\\n\\n### New `moon sync hooks` command\\n\\nAlthough moon can [automatically create](/docs/config/workspace#synchooksonrun) hooks when running a\\ntarget, this may be undesirable or abrasive for some developers. Instead, we also support an opt-in\\nsolution through the [`moon sync hooks`](/docs/commands/sync/hooks) command, which will manually\\ncreate the hooks.\\n\\n```shell\\n$ moon sync hooks\\n```\\n\\n## Rewritten task inheritance\\n\\nOne of the most complicated systems in moon is the task inheritance layer. On the surface, it sounds\\nrather simple, but internally it was very complicated. For common use cases, it worked very well,\\nbut for advanced use cases, how a task was \\"inherited and merged\\" was sometimes undefined behavior.\\n\\nOver the past year, we\'ve introduced many new features, such as\\n[implicit dependencies and inputs](./v0.23), [tag-based task inheritance](./moon-v1.2),\\n[project-level environment variables](./v0.23#project-level-environment-variables),\\n[custom languages](./v0.25#custom-project-language) and\\n[platforms](./v0.24#project-level-task-platform), and so much more. Each of these new features would\\nthrow yet another facet to be aware of during the task inheritance model, and over the past year, it\\nhas become rather unwieldy.\\n\\nTo rectify this situation before it becomes worse, we rewrote our\\n[project, task](https://github.com/moonrepo/moon/pull/921), and\\n[task inheritance](https://github.com/moonrepo/moon/pull/939) layers from the ground-up using a new\\nbuilder pattern, including writing all new unit tests, to properly and efficiently account for all\\nedge cases.\\n\\nGoing forward, tasks should be far more accurate and deterministic. If you encounter any weirdness,\\nit\'s either a bug/edge case that was rectified (and is no longer allowed), or a bug/edge case not\\naccounted for in our current unit test suite. Please report them either way!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.9.0) for a full list of\\nchanges.\\n\\n- Added `--clean` and `--force` flags to `moon sync codeowners` command.\\n- Updated `moon init` to detect VCS providers and resolve fully-qualified tool versions.\\n- Improved VCS file handling, caching, and performance."},{"id":"proto-v0.11","metadata":{"permalink":"/blog/proto-v0.11","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-06-25_proto-v0.11.mdx","source":"@site/blog/2023-06-25_proto-v0.11.mdx","title":"proto v0.11 - New shims and better logging","description":"This is a small release that improves shims and logs.","date":"2023-06-25T00:00:00.000Z","formattedDate":"June 25, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"shim","permalink":"/blog/tags/shim"},{"label":"logging","permalink":"/blog/tags/logging"}],"readingTime":1.04,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.11","title":"proto v0.11 - New shims and better logging","authors":["milesj"],"tags":["proto","shim","logging"]},"prevItem":{"title":"moon v1.9 - VCS hooks management and improved task inheritance","permalink":"/blog/moon-v1.9"},"nextItem":{"title":"moon v1.8 - Code owners and shared configuration","permalink":"/blog/moon-v1.8"}},"content":"This is a small release that improves shims and logs.\\n\\n\x3c!--truncate--\x3e\\n\\n## New and improved shims\\n\\nThe core facet of proto is our shims found at `~/.proto/bin`. They exist purely to re-route tool\\nexecutions internally to proto, so that we can detect the correct version of these tools to run.\\nHowever, maintaining and creating these shims has historically been very complicated. So we chose to\\nrewrite them from the ground-up!\\n\\nAll tools should continue to function exactly as they did before, if not better. Furthermore,\\nbecause of this new shim layer, we\'re now able to create what we call \\"secondary shims\\", like\\n[`bunx` for Bun](https://bun.sh/docs/cli/bunx), `pnpx` for pnpm, and `yarnpkg` for Yarn.\\n\\n## Better logging\\n\\nproto has supported logging since its initial release behind the `PROTO_LOG` environment variable.\\nHowever, this variable wasn\'t heavily documented, nor easily discoverable. So as an alternative, we\\nnow support a global `--log` option, which can be passed to any `proto` command.\\n\\n```shell\\n$ proto install node --log trace\\n```\\n\\nOn top of this, we also ran an audit of all our log calls, to improve messaging, include additional\\ninformation, rework applicable levels, and more. They should be far more readable!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.11.0) for a full list\\nof changes."},{"id":"moon-v1.8","metadata":{"permalink":"/blog/moon-v1.8","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-06-12_moon-v1.8.mdx","source":"@site/blog/2023-06-12_moon-v1.8.mdx","title":"moon v1.8 - Code owners and shared configuration","description":"With this release, we\'ve focused on a critical facet of managing a large codebase, source code","date":"2023-06-12T00:00:00.000Z","formattedDate":"June 12, 2023","tags":[{"label":"source","permalink":"/blog/tags/source"},{"label":"code","permalink":"/blog/tags/code"},{"label":"owners","permalink":"/blog/tags/owners"},{"label":"ownership","permalink":"/blog/tags/ownership"}],"readingTime":3.265,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.8","title":"moon v1.8 - Code owners and shared configuration","authors":["milesj"],"tags":["source","code","owners","ownership"],"image":"./img/moon/v1.8.png"},"prevItem":{"title":"proto v0.11 - New shims and better logging","permalink":"/blog/proto-v0.11"},"nextItem":{"title":"moon v1.7 - Next-generation configuration and errors","permalink":"/blog/moon-v1.7"}},"content":"With this release, we\'ve focused on a critical facet of managing a large codebase, source code\\nownership, and sharing task configuration.\\n\\n\x3c!--truncate--\x3e\\n\\n## Support for code ownership\\n\\nAn important workflow for companies of any size is reviewing code, and ensuring the right people are\\nreviewing and approving that code. This is especially true for large companies with hundreds of\\ndevelopers, or many distinct teams working in a single codebase.\\n\\nPopular VCS providers like [GitHub](https://github.com/), [GitLab](https://about.gitlab.com/), and\\n[Bitbucket](https://bitbucket.org/product/) provide built-in features to handle such workflows,\\naptly named code owners. They all achieve this through a similar mechanism, a single `CODEOWNERS`\\nfile that maps file system paths to owners (users, teams, groups, etc). These owners are then\\nrequired to approve a pull/merge request because it can be merged into the base branch.\\n\\n:::info\\n\\nFor more information, view our official in-depth [code owners guide](/docs/guides/codeowners)!\\n\\n:::\\n\\n### Generate a `CODEOWNERS`\\n\\nManaging the `CODEOWNERS` file manually can be a tedious task, especially when you have hundreds of\\nprojects. To help with this, moon can generate the `CODEOWNERS` file for you,\\n[based on project owners](#new-project-owners-setting), formatted to your VCS provider of choice.\\nThis helps to avoid an out-of-date ownership file!\\n\\nWe\'re introducing a few new workspace settings to handle this, the first is\\n[`codeowners`](/docs/config/workspace#codeowners), which enables and configure code ownership as a\\nwhole, and the second is [`vcs.provider`](/docs/config/workspace#provider), which determines the VCS\\nprovider to generate the file for (and unlocks future features).\\n\\n```yaml title=\\".moon/workspace.yml\\"\\ncodeowners:\\n syncOnRun: true\\n globalPaths:\\n \'*\': [\'@admins\']\\n\\nvcs:\\n manager: \'git\'\\n provider: \'github\'\\n```\\n\\nThe settings above will generate the following file:\\n\\n```shell title=\\".github/CODEOWNERS\\"\\n# (workspace)\\n* @admins\\n```\\n\\nWhile this looks very simple, it really shines once projects start adding their own granular code\\nownership. Continue reading for more information!\\n\\n### New project `owners` setting\\n\\nTo make use of code owners, you\'ll need to define an [`owners`](/docs/config/project#owners) setting\\nin a project\'s [`moon.yml`](/docs/config/project) file. This setting requires a list/map of owners\\n(contributors required to review) associated to file paths/patterns, relative from the current\\nproject\'s root.\\n\\n```yaml title=\\"packages/components/moon.yml\\"\\nowners:\\n paths:\\n \'src/\': [\'@frontend\', \'@design-system\']\\n \'*.config.js\': [\'@frontend-infra\']\\n \'*.json\': [\'@frontend-infra\']\\n```\\n\\nThese paths will then be prefixed with the project source when\\n[generating the `CODEOWNERS`](#generate-a-codeowners) file.\\n\\n```shell title=\\".github/CODEOWNERS\\"\\n# components\\n/packages/components/src/ @frontend @design-system\\n/packages/components/*.config.js @frontend-infra\\n/packages/components/*.json @frontend-infra\\n```\\n\\n### New `moon sync codeowners` command\\n\\nAlthough moon can [automatically generate](/docs/config/workspace#synconrun) the `CODEOWNERS` file\\nwhen running a target, there may be situations where this is disabled, or teams/developers would\\nlike to generate the file manually. To handle this, we\'re providing the\\n[`moon sync codeowners`](/docs/commands/sync/codeowners) command, which will trigger the generation\\nprocess.\\n\\n```shell\\n$ moon sync codeowners\\n```\\n\\n## Community-driven task configuration\\n\\nA powerful but often overlooked feature of moon is the ability to\\n[share and extend task configuration](/docs/guides/sharing-config) from remote sources. This is\\nextremely useful in...\\n\\n- Providing a single source of truth for configuration.\\n- Reducing task duplication across projects.\\n- Ensuring tasks are battle-tested and ready for use.\\n\\nThe other upside of this approach is that configuration can be _community-driven_! To support this\\nas a first-class feature, we\'re launching the\\n[`moon-configs` repository](https://github.com/moonrepo/moon-configs), a collection of task\\nconfigurations for popular programming languages, frameworks, libraries, and more! As of now, the\\nrepository is kind of empty, but we\'re hoping to grow it over time, so feel free to contribute!\\n\\nIf you\'re curious how this works in practice, we\'ll use our Rust configuration as an example. The\\nentire system is based around [tag inheritance](/docs/concepts/task-inheritance), where a project\\ncan inherit tasks from a remote source, and then extend or override them as needed. For example,\\ncreate the tag-based config:\\n\\n```yaml title=\\".moon/tasks/tag-rust.yml\\"\\nextends: \'https://raw.githubusercontent.com/moonrepo/moon-configs/master/rust/tasks-workspace.yml\'\\n```\\n\\nAnd then in Rust projects that you\'d like to inherit these tasks, add the following tags:\\n\\n```yaml title=\\"/moon.yml\\"\\ntags: [\'rust\']\\n```\\n\\nIt\'s as simple as that!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.8.0) for a full list of\\nchanges.\\n\\n- Added a new action to the graph, `SyncWorkspace`, that\'ll be used for workspace-level checks.\\n- Added `MOON_OUTPUT_STYLE` and `MOON_RETRY_COUNT` environment variables."},{"id":"moon-v1.7","metadata":{"permalink":"/blog/moon-v1.7","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-30_moon-v1.7.mdx","source":"@site/blog/2023-05-30_moon-v1.7.mdx","title":"moon v1.7 - Next-generation configuration and errors","description":"With this release, we\'ve rewritten configuration from the ground up, improved error messages, and","date":"2023-05-30T00:00:00.000Z","formattedDate":"May 30, 2023","tags":[{"label":"config","permalink":"/blog/tags/config"},{"label":"errors","permalink":"/blog/tags/errors"}],"readingTime":2.43,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.7","title":"moon v1.7 - Next-generation configuration and errors","authors":["milesj"],"tags":["config","errors"],"image":"./img/moon/v1.7.png"},"prevItem":{"title":"moon v1.8 - Code owners and shared configuration","permalink":"/blog/moon-v1.8"},"nextItem":{"title":"proto v0.9 - New GitHub action, plugin unpacking, and more","permalink":"/blog/proto-v0.9"}},"content":"import Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'ve rewritten configuration from the ground up, improved error messages, and\\nstarted work on diagnostics!\\n\\n\x3c!--truncate--\x3e\\n\\n## Configuration rewrite\\n\\nIf you\'ve ever written Rust before, you may be familiar with the state of configuration crates in\\nthe ecosystem. There\'s only 2 viable choices to choose from, and we\'ve been using 1 of them.\\nHowever, it\'s been a constant source of friction for our use cases, and didn\'t support features that\\nwe\'ve needed (built-in validation, file extending, and more).\\n\\nAfter researching our options, and attempting to contribute upstream, we decided to build our own\\nconfiguration solution, unique to moonrepo\'s projects. As such, we\'re excited to announce\\n[schematic](https://github.com/moonrepo/schematic), the most powerful configuration crate in the\\nRust ecosystem, with built-in features like:\\n\\n- Strict parsing with serde (serilization, deserialization).\\n- Code frames in errors (when applicable).\\n- Source file/URL extending.\\n- Partial file parsing and merging.\\n- Field-level merge strategies.\\n- Recursive validation.\\n- Dynamic default and env var values.\\n- And much more!\\n\\nWe\'ve spent the last few weeks building this crate from the ground up, and migrating the moon\\ncodebase to it. It\'s been quite a feat, but we\'re very excited for what it has to offer already, and\\nwhat\'s to come!\\n\\n### Strict parsing\\n\\nWhen we fail to parse a configuration file, we now include a descriptive message of the failure, and\\nthe file that failed to parse. Typically this will be for unknown fields and invalid value types.\\n\\n\\n\\n\\n> We hope this bubbles up typos and incorrectly nested settings!\\n\\n### Recursive validation\\n\\nPreviously when validation would fail, we\'d return on the first error and ignore subsequent errors.\\nThis is a non-ideal experience as you\'d have to constantly run `moon` commands until all validation\\nissues have been resolved.\\n\\nNow we aggregate all validation errors, even from deeply nested fields, and present them together.\\n\\n\\n\\n### What\'s next?\\n\\nSince [schematic](https://github.com/moonrepo/schematic) is very young, and it hasn\'t been tested\\nheavily in the ecosystem, we expect bugs and weird edge cases to popup. If you encounter any issues,\\nplease report them immediately so that we can fix them as soon as possible!\\n\\nWith that being said, we\'ll continue to improve parsing, error messages, and unique functionality,\\nlike code frames within errors. Here\'s an example for a basic JSON file.\\n\\n\\n\\n## Better errors\\n\\nYou may have noticed the errors in the screenshots above look quite different than what we\'ve\\nrendered until now, and you are correct. Going forward, all errors will be rendered by the wonderful\\nRust crate, [miette](https://crates.io/crates/miette).\\n\\nWe\'ve introduced this crate to handle _all_ errors and diagnostics within moon, not just\\nconfiguration. So expect a much better developer experience moving forward!\\n\\n\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.7.0) for a full list of\\nchanges.\\n\\n- Added support for npm lockfile v3 format."},{"id":"proto-v0.9","metadata":{"permalink":"/blog/proto-v0.9","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-23_proto-v0.9.mdx","source":"@site/blog/2023-05-23_proto-v0.9.mdx","title":"proto v0.9 - New GitHub action, plugin unpacking, and more","description":"This is a small release that provides many internal improvements.","date":"2023-05-23T00:00:00.000Z","formattedDate":"May 23, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"action","permalink":"/blog/tags/action"},{"label":"github","permalink":"/blog/tags/github"}],"readingTime":1.68,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.9","title":"proto v0.9 - New GitHub action, plugin unpacking, and more","authors":["milesj"],"tags":["proto","action","github"],"image":"./img/proto/v0.9.png"},"prevItem":{"title":"moon v1.7 - Next-generation configuration and errors","permalink":"/blog/moon-v1.7"},"nextItem":{"title":"moon v1.6 - Persistent tasks and task extending RFC","permalink":"/blog/moon-v1.6"}},"content":"This is a small release that provides many internal improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## New `moonrepo/setup-proto` GitHub action\\n\\nIf you\'re using proto in GitHub Actions and would love to automate the workflow as much as possible,\\nwell look no further, as we\'re introducing the\\n[moonrepo/setup-proto](https://github.com/moonrepo/setup-proto) action. Thanks to\\n[Tom Davidson](https://github.com/tomdavidson) for the initial spike of work!\\n\\nThis action will automatically install the `proto` binary globally, and cache the toolchain at\\n`~/.proto` (be sure to run `proto use` to download and install tools).\\n\\n```yaml\\n# ...\\njobs:\\n ci:\\n name: \'CI\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n - uses: \'moonrepo/setup-proto@v0\'\\n - run: \'proto use\'\\n```\\n\\n> If you\'re using moon, be sure to use\\n> [moonrepo/setup-moon](https://github.com/moonrepo/setup-moon-action) instead.\\n\\n## Added `install.unpack` to TOML plugin\\n\\nOur [TOML plugins](./proto-v0.7#toml-plugins) have been quite popular, and the community has been\\nusing them to much success. However, the plugin assumed that all downloaded files are archives (tar,\\nzip) and will attempt to unpack them based on file extension. This is not always the case, as some\\ndownloads are just raw executables.\\n\\nBecause of this, unpacking would sometimes fail, or we\'d be unable to extract the correct file\\nextension. To work around this limitation, we\'re introducing a new setting, `install.unpack`, that\\ncontrols whether the downloaded file should be unpacked or not. By default this setting is `true`.\\n\\nHere\'s an example using [moon](/moon).\\n\\n```toml\\n# ...\\n\\n[platform.linux]\\ndownload-file = \\"moon-{arch}-unknown-linux-{libc}\\"\\n\\n[platform.macos]\\ndownload-file = \\"moon-{arch}-apple-darwin\\"\\n\\n[platform.windows]\\ndownload-file = \\"moon-{arch}-pc-windows-msvc.exe\\"\\n\\n[install]\\ndownload-url = \\"https://github.com/moonrepo/moon/releases/download/v{version}/{download_file}\\"\\nunpack = false\\n```\\n\\n## Initial support for `node-gyp`\\n\\nThe [`node-gyp` binary](https://github.com/nodejs/node-gyp) is required for building Node.js native\\naddons, and was previously not supported in proto. We will now create a `node-gyp` binary in\\n`~/.proto/bin` when the `npm` tool is installed. Why npm? Because `node-gyp` comes packaged with npm\\ninstead of Node.js... for some reason.\\n\\nWith that being said, this is currently experimental, as we haven\'t tested it thoroughly, and are\\nunaware of all the possible edge cases. So keep that in mind!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.9.0) for a full list\\nof changes."},{"id":"moon-v1.6","metadata":{"permalink":"/blog/moon-v1.6","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-15_moon-v1.6.mdx","source":"@site/blog/2023-05-15_moon-v1.6.mdx","title":"moon v1.6 - Persistent tasks and task extending RFC","description":"In this release, we\'re introducing a new feature called persistent tasks, and an RFC for extending","date":"2023-05-15T00:00:00.000Z","formattedDate":"May 15, 2023","tags":[{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"rfc","permalink":"/blog/tags/rfc"},{"label":"log","permalink":"/blog/tags/log"}],"readingTime":3.155,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.6","title":"moon v1.6 - Persistent tasks and task extending RFC","authors":["milesj"],"tags":["tasks","rfc","log"],"image":"./img/moon/v1.6.png"},"prevItem":{"title":"proto v0.9 - New GitHub action, plugin unpacking, and more","permalink":"/blog/proto-v0.9"},"nextItem":{"title":"moon v1.5 - Rust tier 2 and 3 support","permalink":"/blog/moon-v1.5"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nIn this release, we\'re introducing a new feature called persistent tasks, and an RFC for extending\\ntasks.\\n\\n\x3c!--truncate--\x3e\\n\\n## RFC: Task extending/variants\\n\\nBefore we dive into this release, we want to briefly talk about a new RFC that we\'re looking for\\nfeedback on, [task extending/variants](https://github.com/moonrepo/moon/issues/849). This is a\\nfeature that has been top-of-mind since moon\'s inception, but we haven\'t had the foundation in place\\nto support it, nor what the API should look like.\\n\\nThe gist of the RFC is that we want to support tasks that extend other tasks with additional\\narguments. This is a common workflow with npm scripts:\\n\\n```json\\n{\\n \\"scripts\\": {\\n \\"lint\\": \\"eslint .\\",\\n \\"lint:fix\\": \\"npm run lint --fix\\"\\n }\\n}\\n```\\n\\nAs consumers of moon, we\'d appreciate any feedback on the RFC before we move forward!\\n\\n
    \\n
    \\n\\n## Persistent tasks\\n\\nTasks that never complete, like servers and watchers, are known as persistent tasks. Historically we\\nhad support for these kinds of tasks through the [`local`](/docs/config/project#local) setting in\\n[`moon.yml`](/docs/config/project). This setting would modify the task for continuous execution by\\ndisabling caching, streaming output, and not running in CI.\\n\\nWhile this worked for the most part, there was one scenario that was still problematic, and that was\\nrunning multiple persistent tasks in parallel. Depending on the task dependency chain, sometimes\\nthese tasks would _not_ run in parallel, some may never start (blocked on another tasks), or the\\norder of nodes in the graph is non-ideal. A great example of this can be found in this\\n[discussion thread](https://github.com/moonrepo/moon/discussions/830).\\n\\nTo mitigate this problem, we\'re introducing a new task option,\\n[`persistent`](/docs/config/project#persistent) (which is also enabled by the `local` setting). When\\na task is marked as persistent, it will always _run last and in parallel_ within the dependency\\ngraph, after all dependencies (from all other persistent tasks) have completed.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'next dev\'\\n local: true\\n # OR\\n options:\\n persistent: true\\n```\\n\\nThis is a perfect solution to running multiple development servers and tools in watch mode:\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'noop\'\\n deps:\\n - \'frontend:dev\'\\n - \'backend:dev\'\\n - \'database:start\'\\n - \'tailwind:watch\'\\n```\\n\\n## Logging migration\\n\\nThis is more of a heads up than anything, but we\'ve started an internal Rust migration from the old\\n[log](https://crates.io/crates/log) crate to the new [tracing](https://crates.io/crates/tracing)\\ncrate. Tracing provides is with far more information, metrics, and instrumentation, which we hope to\\ntake advantage of in the future.\\n\\nThis will be an ongoing migration that will last for many releases, and during this time while we\\nsupport both `log` and `tracing` in unison, the logs will be a bit noisy. We\'ll be working to clean\\nup the logs as we gradually convert the codebase.\\n\\nAnd lastly, the move to `tracing` has also caused the log output to change. For example, in the log\\nexcerpt below, all messages with \\"log\\" after the date are the old `log` crate, while the others with\\ndistinct module names are the new `tracing` crate.\\n\\n```log\\n[DEBUG 14:44:19] moon_process::command_inspector Running command git status --porcelain --untracked-files -z env_vars={} working_dir=\\"~/Projects/moon\\"\\n[DEBUG 14:44:19] log Filtering based on touched status \\"all\\" log.target=\\"moon:query:touched-files\\" log.module_path=\\"moon_cli::queries::touched_files\\" log.file=\\"crates/cli/src/queries/touched_files.rs\\" log.line=85\\n[DEBUG 14:44:19] log Creating dependency graph log.target=\\"moon:dep-graph\\" log.module_path=\\"moon_dep_graph::dep_builder\\" log.file=\\"crates/core/dep-graph/src/dep_builder.rs\\" log.line=35\\n[DEBUG 14:44:19] log Running 32 actions across 5 batches log.target=\\"moon:action-pipeline\\" log.module_path=\\"moon_action_pipeline::pipeline\\" log.file=\\"crates/core/action-pipeline/src/pipeline.rs\\" log.line=93\\n[DEBUG 14:44:19] log Setting up Node.js 20.0.0 toolchain log.target=\\"moon:action:setup-tool\\" log.module_path=\\"moon_action_pipeline::actions::setup_tool\\" log.file=\\"crates/core/action-pipeline/src/actions/setup_tool.rs\\" log.line=26\\n[DEBUG 14:44:19] proto_node::resolve Resolving a semantic version for \\"20.0.0\\"\\n[DEBUG 14:44:19] proto_core::resolver:load_versions_manifest Loading versions manifest from local cache cache_file=~/.proto/temp/3d16d1693e83828f98bae178f181d5a01103b7f222db27cdeaec9b4950e951d7.json\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.6.0) for a full list of\\nchanges.\\n\\n- Updated long running processes to log a checkpoint indicating it\'s still running.\\n- Reworked file groups to use workspace relative paths, instead of project relative.\\n- Reworked processes to better handle command line arguments, shells, and piped stdin input."},{"id":"moon-v1.5","metadata":{"permalink":"/blog/moon-v1.5","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-08_moon-v1.5.mdx","source":"@site/blog/2023-05-08_moon-v1.5.mdx","title":"moon v1.5 - Rust tier 2 and 3 support","description":"With this release, we\'re announcing not just tier 2, but also tier 3 support for the Rust language.","date":"2023-05-08T00:00:00.000Z","formattedDate":"May 8, 2023","tags":[{"label":"rust","permalink":"/blog/tags/rust"},{"label":"lang","permalink":"/blog/tags/lang"},{"label":"tier","permalink":"/blog/tags/tier"}],"readingTime":2.765,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.5","title":"moon v1.5 - Rust tier 2 and 3 support","authors":["milesj"],"tags":["rust","lang","tier"],"image":"./img/moon/v1.5.png"},"prevItem":{"title":"moon v1.6 - Persistent tasks and task extending RFC","permalink":"/blog/moon-v1.6"},"nextItem":{"title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","permalink":"/blog/moon-v1.4"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nWith this release, we\'re announcing not just tier 2, but also tier 3 support for the Rust language.\\n\\n\x3c!--truncate--\x3e\\n\\nAs big fans of Rust (moon is written in it), we\'re stoked to finally add full language support, and\\nto integrate our first non-JavaScript language! This release is rather massive, and required a ton\\nof internal work, most of which we\'ll skip over.\\n\\nInstead we\'ll only talk about the key features that you, the consumers, will actually care about. To\\nstart, we\'ve started working on a Rust handbook, that outlines how to enable Rust, what kind of\\nintegrations we support, and a handful of common questions.\\n\\n
    \\n
    \\n\\n## New `rust` configurations\\n\\nLanguages in\\n[moon are enabled through configuration](/docs/how-it-works/languages#enabling-a-language) blocks in\\n[`.moon/toolchain.yml`](/docs/config/toolchain), and Rust is no different. We now support a\\n[`rust`](/docs/config/toolchain#rust) toolchain setting\\n([view all available settings](/docs/config/toolchain#rust)).\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nrust:\\n\\tversion: \'1.69.0\'\\n```\\n\\nWhen the `rust` setting is defined, it will enable the language and\\n[deep platform integration](/docs/how-it-works/languages#tier-2--platform), and when the `version`\\nfield is defined, it will further enable\\n[toolchain support](/docs/how-it-works/languages#tier-3--toolchain). Both of these features provide\\nheavy automation, improving the overall developer experience.\\n\\nThis is fantastic, but what if another Rust project in the monorepo requires a different toolchain\\nchannel/version? If so, they can use the new [`toolchain.rust`](/docs/config/project#rust) setting\\nin [`moon.yml`](/docs/config/project) to define project-level overrides.\\n\\n```yaml title=\\"/moon.yml\\"\\ntoolchain:\\n\\trust:\\n\\t\\tversion: \'1.58.0\'\\n```\\n\\n## New `rust` task platform\\n\\nThe main benefit of Rust language support is that tasks can be ran within the context of our\\n[Rust platform integration](/docs/how-it-works/languages#tier-2--platform). This can easily be done\\nby setting the project\'s [`language`](/docs/config/project#language) to \\"rust\\" in\\n[`moon.yml`](/docs/config/project).\\n\\nThis will set the [`platform`](/docs/config/project#platform-1) of all tasks within the project to\\n\\"rust\\", unless they have been explicitly configured to something else.\\n\\n```yaml title=\\"/moon.yml\\"\\nlanguage: \'rust\'\\ntype: \'application\'\\n```\\n\\nIf you\'re mixing languages within a single project, and can\'t use the `language` setting above, you\\ncan define `platform` on the task directly.\\n\\n```yaml title=\\"/moon.yml\\"\\ntasks:\\n\\tbuild:\\n\\t\\tcommand: \'cargo build\'\\n\\t\\tplatform: \'rust\'\\n```\\n\\n> We also attempt to detect this automatially by comparing command names and checking for the\\n> existence of files like `Cargo.toml`.\\n\\n## Updated `moon init` command\\n\\nAs part of this release, we\'ve also updated the [`moon init`](/docs/commands/init) command to\\nsupport initializing Rust. By default, the command will prompt you on whether to install Rust or\\nnot, otherwise, when `--yes` is passed, the language will be installed if a `Cargo.toml` file is\\ndetected in the destination directory.\\n\\nIf you already have a moon workspace, you can pass `--tool rust` to install Rust into the workspace.\\n\\n```shell\\n$ moon init --tool rust\\n```\\n\\n## Updated `moon docker` commands\\n\\nAnd lastly, we also want to provide a great [`Dockerfile` experience](/docs/guides/docker) when\\nusing Rust. The [`moon docker scaffold`](/docs/commands/docker/scaffold) command has been updated to\\ncopy `Cargo.toml`, `Cargo.lock`, `rust-toolchain.toml`, and other Rust/Cargo related files. When\\nusing Cargo workspaces, nested `Cargo.toml` files are also scaffolded.\\n\\n```docker\\nRUN moon docker scaffold rust-app\\n```\\n\\nFurthermore, we\'ve also updated the [`moon docker prune`](/docs/commands/docker/scaffold) command to\\nremove the entire `target` directory, greatly reducing the size of the image. Pruning makes the\\nassumption that it\'s being ran _after_ a release profile has been built.\\n\\n```docker\\nRUN moon run rust-app:build-release\\nRUN moon docker prune\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.5.0) for a full list of\\nchanges."},{"id":"moon-v1.4","metadata":{"permalink":"/blog/moon-v1.4","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-01_moon-v1.4.mdx","source":"@site/blog/2023-05-01_moon-v1.4.mdx","title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","description":"With this release, we\'re bringing further improvements to tags and MQL.","date":"2023-05-01T00:00:00.000Z","formattedDate":"May 1, 2023","tags":[{"label":"query","permalink":"/blog/tags/query"},{"label":"lang","permalink":"/blog/tags/lang"},{"label":"tag","permalink":"/blog/tags/tag"},{"label":"alias","permalink":"/blog/tags/alias"}],"readingTime":1.73,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.4","title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","authors":["milesj"],"tags":["query","lang","tag","alias"],"image":"./img/moon/v1.4.png"},"prevItem":{"title":"moon v1.5 - Rust tier 2 and 3 support","permalink":"/blog/moon-v1.5"},"nextItem":{"title":"proto v0.8 - Version detection and installation improvements","permalink":"/blog/proto-v0.8"}},"content":"With this release, we\'re bringing further improvements to tags and MQL.\\n\\n\x3c!--truncate--\x3e\\n\\n## Run targets by tag with `#tag:task`\\n\\nWe love our community, as you all continuously suggest new and awesome features that haven\'t crossed\\nour minds. One such feature was the ability to run tasks for all projects with a tag,\\n[suggested by @theoephraim](https://github.com/moonrepo/moon/issues/803), which is now possible with\\nthe new [tag scope](/docs/concepts/target#by-tag), `#tag:task`.\\n\\nAs an example, we can easily lint all projects that have the `frontend` tag.\\n\\n```shell\\n$ moon run \'#frontend:lint\'\\n```\\n\\n> Because `#` is special syntax and denotes a comment, the target will need to be quoted to work\\n> correctly!\\n\\n## Updated `moon query` commands to support MQL\\n\\nLast week we announced [MQL](./moon-v1.3#run-targets-based-on-a-query), a custom query language for\\napplying filters to moon\'s project graph, primarily through the [`moon run`](/docs/commands/run)\\ncommand. We plan to slowly integrate MQL throughout moon as it provides an easy to use API, and an\\noverall better developer experience.\\n\\nAs such, we\'ve updated both [`moon query projects`](/docs/commands/query/projects) and\\n[`moon query tasks`](/docs/commands/query/tasks) to support MQL statements as an optional first\\nargument. Totally makes sense that query commands would support MQL!\\n\\n```shell\\n# Find all projects with a `lint` or `build` task\\n$ moon query projects \\"task=[lint,build]\\"\\n\\n# Find all tasks with an id that starts with \\"dev\\"\\n$ moon query tasks \\"task~dev-*\\"\\n```\\n\\n## Deprecated `node.aliasPackageNames` setting\\n\\nmoon project\'s support the [concept of aliasing](/docs/concepts/project#aliases), where\\nlanguage/ecosystem specific names are used alongside moon\'s. For example, the `name` field from\\n`package.json`. However, aliasing was off by default for Node.js projects and had to be explicitly\\nenabled with the `node.aliasPackageNames` setting.\\n\\nIn an effort to streamline moon adoption for Node.js codebases, we\'re deprecating that setting, and\\ninstead will now always inherit the `package.json` name as an alias. For example, if you\'re package\\nname was `@company/utils`, you can now run a target like so:\\n\\n```shell\\n$ moon run @company/utils:build\\n```\\n\\n> This setting is now a no-op and can be removed from your configuration.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.4.0) for a full list of\\nchanges.\\n\\n- Upgraded to proto v0.8."},{"id":"proto-v0.8","metadata":{"permalink":"/blog/proto-v0.8","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-28_proto-v0.8.mdx","source":"@site/blog/2023-04-28_proto-v0.8.mdx","title":"proto v0.8 - Version detection and installation improvements","description":"In this release, we\'re dropping some quality of life workflow improvements.","date":"2023-04-28T00:00:00.000Z","formattedDate":"April 28, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"detect","permalink":"/blog/tags/detect"}],"readingTime":1.295,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.8","title":"proto v0.8 - Version detection and installation improvements","authors":["milesj"],"tags":["proto","detect"],"image":"./img/proto/v0.8.png"},"prevItem":{"title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","permalink":"/blog/moon-v1.4"},"nextItem":{"title":"moon v1.3 - Advanced run targeting and an official proto plugin","permalink":"/blog/moon-v1.3"}},"content":"In this release, we\'re dropping some quality of life workflow improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Built-in detection for `proto use`\\n\\nThe [`proto use`](/docs/proto/commands/use) command is extremely useful for bootstrapping your\\ndevelopment environment with all necessary tooling, but it had a hard requirement on the\\n[`.prototools`](/docs/proto/config) configuration file. But what if you\'re already using non-proto\\nversion files, like `.nvmrc` or `.dvmrc`? Or maybe manifest settings, like `packageManager` or\\n`engines` in `package.json`?\\n\\nGreat questions, and we agree! As such, we\'ve updated `proto use` to _also_ detect a version from\\nthe environment for the current working directory. We suggest using `.prototools`, but feel free to\\nconfigure your environments as you so choose!\\n\\n```shell\\n# Install all the things!\\n$ proto use\\n```\\n\\n## Smarter version detection\\n\\nOne of proto\'s best features is its [contextual version detection](/docs/proto/detection), but it\\ndid have 1 shortcoming. When we detected a partial version, like `1.2`, we\'d resolve to a fully\\nqualified version with the latest patch version (e.g. `1.2.3`). While this worked in most cases,\\neverytime a new patch was released upstream (e.g. `1.2.4`), proto would error and require a manual\\ninstall of this new version. This was pretty annoying as `1.2.3` and `1.2.4` are likely to be\\ncompatible, and both satisfy the `1.2` version constraint.\\n\\nTo mitigate this scenario, we\'ve updated the version detection to scan the locally installed\\nversions _first_ when encountering a partial version. This solves the problem above by allowing\\n`1.2.3` to satisfy the requirement, instead of forcing an install of `1.2.4`.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.8.0) for a full list\\nof changes."},{"id":"moon-v1.3","metadata":{"permalink":"/blog/moon-v1.3","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-24_moon-v1.3.mdx","source":"@site/blog/2023-04-24_moon-v1.3.mdx","title":"moon v1.3 - Advanced run targeting and an official proto plugin","description":"After many months of design and development, we\'re finally introducing MQL, our own unique query","date":"2023-04-24T00:00:00.000Z","formattedDate":"April 24, 2023","tags":[{"label":"query","permalink":"/blog/tags/query"},{"label":"lang","permalink":"/blog/tags/lang"},{"label":"proto","permalink":"/blog/tags/proto"},{"label":"schema","permalink":"/blog/tags/schema"},{"label":"toml","permalink":"/blog/tags/toml"},{"label":"target","permalink":"/blog/tags/target"}],"readingTime":2.35,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.3","title":"moon v1.3 - Advanced run targeting and an official proto plugin","authors":["milesj"],"tags":["query","lang","proto","schema","toml","target"],"image":"./img/moon/v1.3.png"},"prevItem":{"title":"proto v0.8 - Version detection and installation improvements","permalink":"/blog/proto-v0.8"},"nextItem":{"title":"proto v0.7 - First step towards plugins","permalink":"/blog/proto-v0.7"}},"content":"After many months of design and development, we\'re finally introducing MQL, our own unique query\\nlanguage!\\n\\n\x3c!--truncate--\x3e\\n\\n## Run targets based on a query\\n\\nOur [`moon run`](/docs/commands/run) command is pretty powerful. It allows you to run targets in\\none, many, or all projects. It also supports running multiple targets in parallel. However, it\\nwasn\'t powerful enough, as it couldn\'t run the following types of scenarios:\\n\\n- Run a target in projects of a specific language.\\n- Run a target in libraries or applications.\\n- Run a target based on project file system path.\\n- Run a target in projects with a matching tag.\\n- Run a target in projects that match a keyword.\\n- Run a target in projects based on AND or OR conditions.\\n- Or a combination of these.\\n- And many more!\\n\\nSupporting all of these scenarios through CLI arguments just feels like bad design, and would result\\nin a poor developer experience. There had to be a better way to support this! So we set out to solve\\nthis problem, and after much thought, we\'re stoked to introduce\\n[MQL, a query language unique to moon](/docs/concepts/query-lang).\\n\\nWith MQL, you can now run scenarios like \\"I want to build all Node.js libraries\\", or \\"I want to lint\\nand test all Rust projects\\". Simply pass an unscoped target and a query to the `run` command:\\n\\n```shell\\n$ moon run :build --query \\"taskPlatform=node && projectType=library\\"\\n\\n$ moon run :lint :test --query \\"language=rust\\"\\n```\\n\\nThis is only the first iteration of MQL and it\'s already quite powerful. Expect additional fields,\\nfeatures, and functionality in the future!\\n\\n## Plugin support for proto\\n\\nEarlier this week we announced [plugin support for proto](./proto-v0.7), starting with a TOML based\\nplugin. This is great as it allows _any_ kind of versioned tool to be managed in proto\'s toolchain,\\nso why not moon? Starting with this release, you can now install and manage moon _from_ proto, using\\nour officially maintained TOML plugin.\\n\\nIn your `.prototools` or `~/.proto/config.toml` file, add the following snippet:\\n\\n```toml title=\\".prototools\\"\\n[plugins]\\nmoon = \\"source:https://raw.githubusercontent.com/moonrepo/moon/master/proto-plugin.toml\\"\\n```\\n\\nAnd as easy as that, you can now use `moon` as a tool within any `proto` command. For example:\\n\\n```shell\\n$ proto install moon 1.3.0\\n$ proto list-remote moon\\n$ proto bin moon\\n```\\n\\nFurthermore, with proto, we can now pin the version of moon on a per-project basis. Perfect for\\nenforcing the same version for all developers on your team!\\n\\n```toml title=\\".prototools\\"\\nmoon = \\"1.3.0\\"\\n```\\n\\n> When using this approach, be sure `~/proto/.bin` is in your `PATH`, and takes precedence over\\n> `~/.moon/bin`.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.3.0) for a full list of\\nchanges.\\n\\n- Upgraded to proto v0.7.\\n- Improved accuracy of our globbing utilities, especially around dotfiles/dotfolders.\\n- Updated config loading to be strict and error on unknown fields for non-root fields."},{"id":"proto-v0.7","metadata":{"permalink":"/blog/proto-v0.7","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-21_proto-v0.7.mdx","source":"@site/blog/2023-04-21_proto-v0.7.mdx","title":"proto v0.7 - First step towards plugins","description":"With this release, we\'re very excited to announce our initial support for plugins in proto!","date":"2023-04-21T00:00:00.000Z","formattedDate":"April 21, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"plugins","permalink":"/blog/tags/plugins"}],"readingTime":2.36,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.7","title":"proto v0.7 - First step towards plugins","authors":["milesj"],"tags":["proto","plugins"],"image":"./img/proto/v0.7.png"},"prevItem":{"title":"moon v1.3 - Advanced run targeting and an official proto plugin","permalink":"/blog/moon-v1.3"},"nextItem":{"title":"moon v1.2 - Tag based task inheritance","permalink":"/blog/moon-v1.2"}},"content":"With this release, we\'re very excited to announce our initial support for plugins in proto!\\n\\n\x3c!--truncate--\x3e\\n\\n## Initial plugins architecture\\n\\nLast week we posted an [RFC for a new plugins architecture](./proto-v0.6#rfc-plugins-system) for\\nproto. We believe plugins will unlock an array of capabilities for proto, will enable the community\\nto add their own custom integrations, and the ability for tools to be managed within proto\'s\\ntoolchain.\\n\\nWe were very excited for this RFC, and couldn\'t wait, so we spent the last week prototyping\\nimplementations. We got the basics of downloading, installing, and enabling a plugin at _runtime_\\nworking incredibly fast. However, implementing the entire RFC in 1 release would have taken too\\nlong, and we wanted to avoid dropping such a large feature in a single release. Because of this,\\nwe\'ve only implemented [TOML plugins](/docs/proto/plugins#toml-plugin) in this release, and will\\nimplement WASM plugins in a future release.\\n\\n### TOML plugins\\n\\nYou may be asking yourself, aren\'t plugins typically code? For the most part, yes, but after\\nbuilding a \\"version manager\\" for multiple languages, we\'ve come to the realization that many tools\\ncan simply be supported through a basic configuration file.\\n\\nAt minimum, tools require the following pieces to be managed:\\n\\n- Where and how to download the tool\\n- How to install/unpack the tool\\n- How to resolve available versions to install\\n- How to execute the tool\'s binary\\n\\nAll 4 of these pieces can be solved with a configuration file, and as such, we opted to support a\\n[TOML schema based plugin](/docs/proto/plugins#toml-plugin) as an alternative to a code based\\nplugin. The other benefits of a schema is that it\'s _easy to write, read, and maintain_, doesn\'t\\nrequire any code, and doesn\'t force you into a specific programming language.\\n\\nTo demonstate how this plugin works, here\'s an example of a [moon](/moon) TOML schema.\\n\\n```toml title=\\"moon-schema.toml\\"\\nname = \\"moon\\"\\ntype = \\"cli\\"\\n\\n[platform.linux]\\ndownload-file = \\"moon-{arch}-unknown-linux-{libc}\\"\\n\\n[platform.macos]\\ndownload-file = \\"moon-{arch}-apple-darwin\\"\\n\\n[platform.windows]\\ndownload-file = \\"moon-{arch}-pc-windows-msvc.exe\\"\\n\\n[install]\\ndownload-url = \\"https://github.com/moonrepo/moon/releases/download/v{version}/{download_file}\\"\\n\\n[resolve]\\ngit-url = \\"https://github.com/moonrepo/moon\\"\\n```\\n\\nVery simple right? With this, you can now configure moon as a plugin within proto.\\n\\n```toml title=\\".prototools\\"\\nmoon = \\"1.2.0\\"\\n\\n[plugins]\\nmoon = \\"source:./path/to/moon-schema.toml\\"\\n```\\n\\nAnd ultimately manage every version of moon through proto! Because moon is now a plugin, every\\ncommand in proto that accepts a `` argument, will now accept `moon` as a valid tool.\\n\\n```shell\\n$ proto install moon 1.2.0\\n$ proto list-remote moon\\n$ proto use\\n```\\n\\nLearn more about [TOML plugins in the official docs](/docs/proto/plugins#toml-plugin)!\\n\\n## Cleaning improvements\\n\\nLast week we introduced the [`proto clean`](/docs/proto/commands/clean) command that will\\nautomatically delete stale and unused tools from the toolchain. This week we\'ve implemented a few\\nimprovements to the cleaning process:\\n\\n- Added a `--yes` option to [`proto clean`](/docs/proto/commands/clean), allowing prompts to be\\n bypassed.\\n- Added a `auto-clean` setting to `~/.proto/config.toml`, enabling automatic cleaning when\\n [`proto use`](/docs/proto/commands/use) is ran."},{"id":"moon-v1.2","metadata":{"permalink":"/blog/moon-v1.2","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-17_moon-v1.2.mdx","source":"@site/blog/2023-04-17_moon-v1.2.mdx","title":"moon v1.2 - Tag based task inheritance","description":"In this small release, we\'re improving our task inheritance and performance.","date":"2023-04-17T00:00:00.000Z","formattedDate":"April 17, 2023","tags":[{"label":"tags","permalink":"/blog/tags/tags"},{"label":"tasks","permalink":"/blog/tags/tasks"}],"readingTime":1.265,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.2","title":"moon v1.2 - Tag based task inheritance","authors":["milesj"],"tags":["tags","tasks"],"image":"./img/moon/v1.2.png"},"prevItem":{"title":"proto v0.7 - First step towards plugins","permalink":"/blog/proto-v0.7"},"nextItem":{"title":"proto v0.6 - Unused cleaning and improved global binaries","permalink":"/blog/proto-v0.6"}},"content":"In this small release, we\'re improving our task inheritance and performance.\\n\\n\x3c!--truncate--\x3e\\n\\n## Task inheritance based on project tags\\n\\nIn v0.23 we introduced [scoped task inheritance](/blog/v0.23#improved-task-inheritance-model) by\\nproject type/language, and in v1.0 we introduced [project tagging](/blog/moon-v1.0#project-tagging),\\nbut what if we combined both of these features? In this release, you can now define workspace-level\\ntasks _by tag_ that\'ll be inherited by all projects with that tag.\\n\\nTo demonstrate this, say you have a monorepo composed of multiple [Astro](https://astro.build)\\napplications, each duplicating the same Astro tasks. Instead of duplicating, define an `astro` tag\\nin each project\'s [`moon.yml`](/docs/config/project#tags).\\n\\n```yaml title=\\"/moon.yml\\"\\nlanguage: \'typescript\'\\ntype: \'application\'\\ntags: [\'astro\']\\n```\\n\\nAnd then create a new tasks configuration at `.moon/tasks/tag-astro.yml` with the following\\ncontents:\\n\\n```yaml title=\\".moon/tasks/tag-astro.yml\\"\\nfileGroups:\\n\\tastro:\\n\\t\\t- \'public/**/*\'\\n\\t\\t- \'src/**/*\'\\n\\t\\t- \'astro.config.*\'\\n\\t\\t- \'tsconfig.json\'\\n\\ntasks:\\n\\tastro:\\n\\t\\tcommand: \'astro\'\\n\\t\\tlocal: true\\n\\n\\t# Development server\\n\\tdev:\\n\\t\\tcommand: \'astro dev\'\\n\\t\\tlocal: true\\n\\n\\t# Production build\\n\\tbuild:\\n\\t\\tcommand: \'astro build\'\\n\\t\\tinputs: [\'@group(astro)\']\\n\\t\\toutputs: [\'dist\']\\n\\n\\t# Check .astro files\\n\\tcheck:\\n\\t\\tcommand: \'astro check\'\\n\\t\\tinputs: [\'@group(astro)\']\\n\\t\\tdeps: [\'typecheck\']\\n\\n\\t# Preview production build locally\\n\\tpreview:\\n\\t\\tcommand: \'astro preview\'\\n\\t\\tdeps: [\'build\']\\n\\t\\tlocal: true\\n```\\n\\nEach of these Astro applications will now inherit all 5 tasks and the file group automatically! This\\nhelps to greatly reduce maintenance overhead and help enforce consistency across projects. Jump to\\nthe official [task inheritance docs](/docs/concepts/task-inheritance) for more information on tag\\nbased inheritance.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.2.0) for a full list of\\nchanges.\\n\\n- Upgraded to proto v0.6.\\n- Improvements to file system operations.\\n- Minor improvements to performance."},{"id":"proto-v0.6","metadata":{"permalink":"/blog/proto-v0.6","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-13_proto-v0.6.mdx","source":"@site/blog/2023-04-13_proto-v0.6.mdx","title":"proto v0.6 - Unused cleaning and improved global binaries","description":"With this release, we\'re expanding on our global binary support and providing quality of life","date":"2023-04-13T00:00:00.000Z","formattedDate":"April 13, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"globals","permalink":"/blog/tags/globals"},{"label":"clean","permalink":"/blog/tags/clean"},{"label":"errors","permalink":"/blog/tags/errors"}],"readingTime":2.42,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.6","title":"proto v0.6 - Unused cleaning and improved global binaries","authors":["milesj"],"tags":["proto","globals","clean","errors"],"image":"./img/proto/v0.6.png"},"prevItem":{"title":"moon v1.2 - Tag based task inheritance","permalink":"/blog/moon-v1.2"},"nextItem":{"title":"proto v0.5 - Version aliasing and global binaries","permalink":"/blog/proto-v0.5"}},"content":"import Button from \'@site/src/ui/Button\';\\nimport Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'re expanding on our global binary support and providing quality of life\\nimprovements.\\n\\n\x3c!--truncate--\x3e\\n\\n## RFC: Plugins system\\n\\nSince proto\'s inception, plugins have been top of mind, but runtime based plugins in Rust are\\n_difficult_. The only viable solution to this problem is WASM, but most developers have never used\\nWASM before, nor are they familiar with WASM tooling (myself included).\\n\\nHowever, we\'re at a point in proto\'s life-cycle where the core is rather stable, and it\'s time to\\nstart investigating plugin support. To this end, we\'ve introduced a small RFC outlining how plugins\\nwill be used, enabled, and implemented. It\'s not very in-depth as we want to avoid implementation\\ndetails, but from a consumers perspective, we want to ensure that it makes sense.\\n\\nWe\'d very much appreciate it if you could take a look at the RFC and provide feedback. If you have\\nany experience in Rust runtime plugins, we\'d love to hear your thoughts as well.\\n\\n
    \\n
    \\n\\n## Cleaning stale and unused tools\\n\\nIs your `~/.proto` installation growing out of control? Are there old versions of tools that you\\ndon\'t use anymore? Or versions you never used? Unsure if you\'re using a tool at all or still need\\nit?\\n\\nTo help avoid these questions and problems, we\'re introducing a new command that will uninstall\\nstale and unused tools, [`proto clean`](/docs/proto/commands/clean). When ran, the command will\\nlaunch an interactive session and scan the file system for old tools, prompting you to remove them.\\n\\n```shell\\n$ proto clean\\n```\\n\\nBy default the command will uninstall tools that haven\'t been used in over 30 days, but this can be\\ncustomized with the `--days` option.\\n\\n:::info\\n\\nTools installed before v0.6 will most likely be considered stale, as we weren\'t tracking install and\\nlast used timestamps. However, everything will work as intended after running a tool or simply\\nmoving forward from this point.\\n\\n:::\\n\\n## Global binary improvements\\n\\nIn our [previous release](./proto-v0.5), we announced the\\n[`proto install-global`](/docs/proto/commands/install-global) command for installing global\\ndependencies that are unique per tool. Thanks to the community, this command has been updated to\\nsupport installing multiple globals at once!\\n\\n```shell\\n$ proto install-global node typescript webpack-cli\\n```\\n\\nOn top of this, we\'re also introducing another command that was requested by the community,\\n[`proto list-global`](/docs/proto/commands/list-global), that can be used to list all currently\\ninstalled globals.\\n\\n```shell\\n$ proto list-global node\\ntsc - ~/.proto/tools/node/globals/lib/node_modules/typescript/bin/tsc\\ntsserver - ~/.proto/tools/node/globals/lib/node_modules/typescript/bin/tsserver\\n```\\n\\n## Better error messages\\n\\nWe\'ve spent most of the past week working on a new internal architecture called\\n[Starbase](https://github.com/moonrepo/starbase), which will be the new foundation for proto and\\nmoon moving forward. One of the major benefits of this new architecture is a rewritten error system\\nthat provides more context and better error messages.\\n\\nHere\'s an example of this, albeit with a contrived situation:\\n\\n"},{"id":"proto-v0.5","metadata":{"permalink":"/blog/proto-v0.5","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-06_proto-v0.5.mdx","source":"@site/blog/2023-04-06_proto-v0.5.mdx","title":"proto v0.5 - Version aliasing and global binaries","description":"With this release, we\'re providing solutions for installing globals and using aliases.","date":"2023-04-06T00:00:00.000Z","formattedDate":"April 6, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"alias","permalink":"/blog/tags/alias"},{"label":"globals","permalink":"/blog/tags/globals"}],"readingTime":1.89,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.5","title":"proto v0.5 - Version aliasing and global binaries","authors":["milesj"],"tags":["proto","alias","globals"],"image":"./img/proto/v0.5.png"},"prevItem":{"title":"proto v0.6 - Unused cleaning and improved global binaries","permalink":"/blog/proto-v0.6"},"nextItem":{"title":"moon v1.1 - Task debugging and improvements","permalink":"/blog/moon-v1.1"}},"content":"With this release, we\'re providing solutions for installing globals and using aliases.\\n\\n\x3c!--truncate--\x3e\\n\\n## Install global binaries\\n\\nInstalling global binaries (packages, modules, etc) is a common task for developers, and proto now\\nprovides a solution for this workflow with the\\n[`proto install-global`](/docs/proto/commands/install-global) command. Continue reading for more\\ninformation.\\n\\n:::info\\n\\nGlobal install directories will need to be added manually to your `PATH` from your shell.\\n\\n:::\\n\\n### Bun, Deno, Go, Rust\\n\\nAll of these languages provide a built-in solution for installing global binaries to a shared\\nlocation, regardless of the language\'s current version. Because of this, proto will simply call\\ntheir install commands under the hood.\\n\\n```shell\\n$ proto install-global rust cargo-release\\n\\n# Same as\\n$ cargo install cargo-release --force\\n```\\n\\nGlobals will be installed to the following locations:\\n\\n- **Bun**: `~/.bun/bin`\\n- **Deno**: `~/.deno/bin`\\n- **Go**: `~/go/bin`\\n- **Rust**: `~/.cargo/bin`\\n\\n### Node.js, npm, pnpm, yarn\\n\\nUnfortunately, the Node.js ecosystem is pretty fractured when it comes to installing global\\nbinaries. Each package manager provides their own solution for installing globals, and each has\\ntheir own quirks. The problem is further exacerbated by the fact that globals are tied to Node.js\\nversion, so if you switch versions, you lose all your previous globals!\\n\\nTo work around this, proto standardizes the global installation process for Node.js, but requires\\nall globals to be installed through proto. You can no longer use `npm install -g`, `pnpm add -g`, so\\non and so forth, and must use:\\n\\n```shell\\n$ proto install-global node webpack-cli\\n```\\n\\nGlobals will be installed to a shared location, `~/.proto/tools/node/globals/bin`, and will persist\\nacross versions!\\n\\n## Custom version aliases\\n\\nWe are excited to announce 2 new commands that enable you to define custom version aliases,\\n[`proto alias`](/docs/proto/commands/alias) and [`proto unalias`](/docs/proto/commands/unalias).\\nAliasing of versions is a feature that allows you to assign a custom name or label to a specific\\nversion of a tool.\\n\\nFor example, instead of using the version number, you can assign a label such as \\"work\\" or\\n\\"personal\\" to a version. This makes it easier to remember and manage different versions.\\n\\n```shell\\n$ proto alias node work 16.16\\n$ proto alias node personal 18\\n```\\n\\nAliases can be used anywhere a version is accepted, for example:\\n\\n```shell\\n$ proto bin node work\\n$ proto install node personal\\n```"},{"id":"moon-v1.1","metadata":{"permalink":"/blog/moon-v1.1","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-03_moon-v1.1.mdx","source":"@site/blog/2023-04-03_moon-v1.1.mdx","title":"moon v1.1 - Task debugging and improvements","description":"With this release, we\'re introducing some quality of life task improvements.","date":"2023-04-03T00:00:00.000Z","formattedDate":"April 3, 2023","tags":[{"label":"tokens","permalink":"/blog/tags/tokens"},{"label":"tasks","permalink":"/blog/tags/tasks"}],"readingTime":1.775,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.1","title":"moon v1.1 - Task debugging and improvements","authors":["milesj"],"tags":["tokens","tasks"],"image":"./img/moon/v1.1.png"},"prevItem":{"title":"proto v0.5 - Version aliasing and global binaries","permalink":"/blog/proto-v0.5"},"nextItem":{"title":"proto v0.4 - Rust support, user configs, and more","permalink":"/blog/proto-v0.4"}},"content":"With this release, we\'re introducing some quality of life task improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Token variable support in task commands\\n\\nmoon supports a concept known as [tokens](/docs/concepts/token) where values are injected into tasks\\nduring project graph creation. This allows for dynamic values in your tasks, such as the current\\nproject language, or the current task name, and is crucial for task inheritance to work.\\n\\nHowever, tokens were only supported by task args, inputs, and outputs, but not commands... until\\nnow. Commands can now use token variables (but not token functions). For example, this is useful for\\nreferencing shared scripts from the workspace root.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n\\tprecheck:\\n\\t\\tcommand: \'$workspaceRoot/scripts/precheck.sh\'\\n```\\n\\n## Run targets in closest project\\n\\nThe [`moon run`](/docs/commands/run) command can run targets in an array of different formats, but\\nwas unable to run targets based on the current working directory. Well no more! You can now run\\ntasks from the closest project based on file path by omitting `:` from the target name.\\n\\n```shell\\n$ cd packages/components\\n\\n# Runs `components:build` internally\\n$ moon run build\\n```\\n\\n## View resolved task information\\n\\nDebugging task issues can be a quite a pain, as there can be many points of failure. Are inputs too\\ngreedy? Are outputs not being created? Does it exist at all? To help with this, you can now view\\ntask information by running [`moon task `](/docs/commands/task).\\n\\n```shell\\n$ moon task app:build\\n```\\n\\nThis command will display _resolved_ information, including inherited settings, and path resolved\\ninputs and outputs. Here\'s an example:\\n\\n```\\nRUNTIME:BUILD\\n\\nID: build\\nProject: runtime\\nPlatform: node\\nType: build\\n\\nPROCESS\\n\\nCommand: packemon build --addFiles --addExports --declaration\\nEnvironment variables:\\n - NODE_ENV = production\\nWorking directory: /Projects/moon/packages/runtime\\nRuns dependencies: Concurrently\\nRuns in CI: Yes\\n\\nDEPENDS ON\\n\\n - types:build\\n\\nINPUTS\\n\\n - .moon/*.yml\\n - packages/runtime/src/**/*\\n - packages/runtime/tsconfig.*.json\\n - packages/runtime/types/**/*\\n - packages/runtime/package.json\\n - packages/runtime/tsconfig.json\\n - tsconfig.options.json\\n\\nOUTPUTS\\n\\n - packages/runtime/cjs\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.1.0) for a full list of\\nchanges.\\n\\n- Support pnpm v8\'s new lockfile format.\\n- Better handling for task\'s that execute the `moon` binary.\\n- Updated `noop` tasks to be cacheable, so that they can be used for cache hit early returns."},{"id":"proto-v0.4","metadata":{"permalink":"/blog/proto-v0.4","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-31_proto-v0.4.mdx","source":"@site/blog/2023-03-31_proto-v0.4.mdx","title":"proto v0.4 - Rust support, user configs, and more","description":"With this release, we\'ve added Rust language support, user configs, and a few other improvements.","date":"2023-03-31T00:00:00.000Z","formattedDate":"March 31, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"rust","permalink":"/blog/tags/rust"},{"label":"config","permalink":"/blog/tags/config"}],"readingTime":1.43,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.4","title":"proto v0.4 - Rust support, user configs, and more","authors":["milesj"],"tags":["proto","rust","config"],"image":"./img/proto/v0.4.png"},"prevItem":{"title":"moon v1.1 - Task debugging and improvements","permalink":"/blog/moon-v1.1"},"nextItem":{"title":"moon v1.0 - Official release! Project constraints, tagging, and more!","permalink":"/blog/moon-v1.0"}},"content":"With this release, we\'ve added Rust language support, user configs, and a few other improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Rust language support\\n\\nWe\'re very excited to announce support for the [Rust language](https://www.rust-lang.org/) in proto.\\nThis is our first language addition since the initial release, and we\'re very happy with how it\\nturned out.\\n\\n```shell\\n$ proto install rust stable\\n```\\n\\nFor those of you unfamiliar with Rust, Rust provides its own toolchain manager through\\n[`rustup`](https://rustup.rs/) \u2014 a very powerful one at that. We don\'t want to reinvent the wheel\\nhere, so instead of downloading and installing Rust into proto\'s toolchain, we chose to call\\n`rustup` commands under the hood. Because of this, Rust support in proto requires Rust/Cargo to be\\npre-installed on your system. Jump to the [docs for more information](/docs/proto/tools#rust).\\n\\nAll in all, the cool thing about supporting Rust in proto is that you can standardize all your tools\\nin a single config for [`proto use`](/docs/proto/commands/use).\\n\\n```toml title=\\".prototools\\"\\nnode = \\"18.2.0\\"\\nrust = \\"1.68.0\\"\\n```\\n\\n## New user configuration\\n\\nWe have a long list of ideas and features that would be cool to support in proto, but not as the\\ndefault functionality. Because of this, we required a way for users to opt-in to this functionality,\\nand have landed on a new user configuration located at `~/.proto/config.toml`.\\n\\n```toml title=\\"~/.proto/config.toml\\"\\nauto-install = true\\n```\\n\\nThis new configuration only supports a single setting (for now), `auto-install`, that when enabled,\\nwill automatically install a missing tool for the detected version when running\\n[`proto run`](/docs/proto/commands/run) (or a shim).\\n\\n## New `proto upgrade` command\\n\\nWe now provide a [`proto upgrade`](/docs/proto/commands/upgrade) command for upgrading proto itself.\\nThis will download the latest version and replace the binary at `~/.proto/bin/proto`.\\n\\n```shell\\n$ proto upgrade\\n```"},{"id":"moon-v1.0","metadata":{"permalink":"/blog/moon-v1.0","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-27_moon-v1.0.mdx","source":"@site/blog/2023-03-27_moon-v1.0.mdx","title":"moon v1.0 - Official release! Project constraints, tagging, and more!","description":"\ud83c\udf89 It\'s finally here! After almost a year of development, a handful of breaking changes, we\'ve","date":"2023-03-27T00:00:00.000Z","formattedDate":"March 27, 2023","tags":[{"label":"projects","permalink":"/blog/tags/projects"},{"label":"constraints","permalink":"/blog/tags/constraints"},{"label":"tags","permalink":"/blog/tags/tags"},{"label":"env-vars","permalink":"/blog/tags/env-vars"},{"label":"tokens","permalink":"/blog/tags/tokens"}],"readingTime":4.745,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.0","title":"moon v1.0 - Official release! Project constraints, tagging, and more!","authors":["milesj"],"tags":["projects","constraints","tags","env-vars","tokens"],"image":"./img/moon/v1.0.png"},"prevItem":{"title":"proto v0.4 - Rust support, user configs, and more","permalink":"/blog/proto-v0.4"},"nextItem":{"title":"proto v0.3 - Improved npm, go, and version requirement support","permalink":"/blog/proto-v0.3"}},"content":"\ud83c\udf89 It\'s finally here! After almost a year of development, a handful of breaking changes, we\'ve\\nofficially reached a stable v1 of moon! This release is feature packed with quality of life\\nimprovements.\\n\\n\x3c!--truncate--\x3e\\n\\n## The road to v1\\n\\nIt\'s been 10 months since moon launched publicly, and since that time we have landed 501 pull\\nrequests, fixed 100\'s of bugs, made 16 breaking changes, released 26 versions, and have been used by\\ncompanies like Ikea, SumUp, Depot, and Gallery. It\'s been a wild ride, and we\'re excited to finally\\nreach a stable v1 release.\\n\\n## Project boundaries with constraints\\n\\nOne feature that moon has not supported, but is critical for large monorepos, is project boundaries.\\nA project boundary is a concept that enforces a strict relationship between projects, and is a\\ncommon pattern in monorepos. For example, a project may only be allowed to depend on projects with a\\n[specific tag](#enforce-relationships-with-tags), or a project of a specific type.\\n\\nmoon now supports this functionality through the new\\n[`constraints`](/docs/config/workspace#constraints) setting in\\n[`.moon/workspace.yml`](/docs/config/workspace). The primary constraint we\'re introducing is\\n[`enforceProjectTypeRelationships`](/docs/config/workspace#enforceprojecttyperelationships), which\\nenforces relationships between projects based on their [`type`](/docs/config/project#type) field.\\n\\nFor example, an application can only depend on library or tool based projects, but _not_ other\\napplications (this is a code smell). This setting is enabled by default!\\n\\n```yaml title=\\".moon/workspace.yml\\"\\nconstraints:\\n enforceProjectTypeRelationships: true\\n```\\n\\nAnd that\'s not all, continue reading for more information on tag based constraints!\\n\\n## Project tagging\\n\\nEveryone is familiar with the concept of tagging, and moon\'s implementation is no different. Tags\\nare a simple mechanism for categorizing projects, and can be defined through the\\n[`tags`](/docs/config/project#tags) setting in [`moon.yml`](/docs/config/project).\\n\\n```yaml title=\\"moon.yml\\"\\ntags:\\n - \'react\'\\n - \'prisma\'\\n```\\n\\nTags can be used to group projects together for easier querying, enforcing of project boundaries,\\napplying constraints, and more in the future. Tags will become a staple for maintaining repositories\\nat scale. Continue reading for more information!\\n\\n### Querying projects by tag\\n\\nThe first integration with tags is project querying. You can now query for projects by tag using the\\nnew `--tags` option in the [`moon query projects`](/docs/commands/query/projects) command. For\\nexample, say you want to find all projects that are tagged with `vue` or `trpc`:\\n\\n```shell\\n$ moon query projects --tags \'vue|trpc\'\\n```\\n\\n### Enforce relationships with tags\\n\\nAnother feature of tags is enforcing relationships between projects using our new\\n[`constraints`](#project-constraints) setting. When a tagged constraint is defined, it requires all\\n[dependencies](/docs/concepts/project#dependencies) of a tagged project to require 1 of the\\nconfigured tags, otherwise an error is thrown during project graph creation.\\n\\nTo demonstrate this, take the following configuration:\\n\\n```yaml title=\\".moon/workspace.yml\\" {2,3}\\nconstraints:\\n tagRelationships:\\n next: [\'react\', \'trpc\']\\n```\\n\\nThis dictates that all dependencies of a project with the `next` tag, must declare either `react`,\\n`trpc`, or `next` in their own tags. This is great for crafting a monorepo with strict project\\nboundaries!\\n\\n## Shells for system tasks\\n\\nUp until now, all executed tasks would not be wrapped in a shell for 1 reason, to ensure tasks are\\ndeterministic. A major goal for moon is that tasks are deterministic and easily reproducible across\\nall machines. Shells break this guarantee, as they can introduce subtle bugs that are difficult to\\ndiagnose, and may differ wildly between developers and machines.\\n\\nHowever in practice, not supporting shells has been a major pain point for many users, and for the\\nmost part, most system tasks typically run common commands or execute pre-defined scripts. The\\nchance of a non-deterministic build is very small. As such, we\'ve decided to make a compromise, and\\nallow shells for [system tasks](/docs/config/project#platform-1), but not for language based tasks.\\n\\nFor example, the following tasks:\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n example:\\n command: \'echo $PWD\'\\n platform: \'system\'\\n global:\\n command: \'bin-on-path\'\\n platform: \'system\'\\n```\\n\\nWould now be executed as `/bin/sh -c \'echo $PWD\'` and `/bin/sh -c \'bin-on-path\'` on Unix platforms\\nrespectively. On Windows, we execute tasks with `pwsh.exe -c` and pass arguments via stdin.\\n\\nWe\'re also taking this a step further, by introducing a new task option called\\n[`shell`](/docs/config/project#shell), that can be used to toggle the shell wrapping on or off. When\\nturned off, this allows you to customize and execute the shell as you please.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n example:\\n command: \'bash -c \\"echo $PWD\\"\'\\n platform: \'system\'\\n options:\\n shell: false\\n```\\n\\n## Environment variable substitution\\n\\nmoon supports granular environment variables through the project-level\\n[`env`](/docs/config/project#env) setting, task-level [`env`](/docs/config/project#env-1) setting,\\nand the task [`envFile`](/docs/config/project#envfile) option. We\'re expanding their functionality\\nwith variable substitution, allowing the value of another environment variable to be interpolated\\nusing the syntax `${VAR_NAME}`. This is especially useful for composing complex environment\\nvariables.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'app start\'\\n env:\\n APP_TARGET: \'${REGION}-${ENVIRONMENT}\'\\n```\\n\\nThe same substitution syntax can also be used within `.env` files.\\n\\n```toml title=\\".env\\"\\nAPP_TARGET=\\"${REGION}-${ENVIRONMENT}\\"\\n```\\n\\n## Date/time token variables\\n\\n[Tokens](/docs/concepts/token) are a mechanism used in task configuration for dynamically injecting\\nvalues from the current project or task, especially when task inheritance is involved. Tokens have\\nexisted since moon\'s inception, without much change... until now.\\n\\nWe\'re excited to introduce a new set of tokens for referencing the\\n[current date or time](/docs/concepts/token#datetime): `$date`, `$time`, `$datetime`, and\\n`$timestamp`. With these new tokens, you\'re now able to implement clever or unusual solutions, like\\ngrouping builds or deploys based on the current timestamp.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n deploy:\\n command: \'app deploy --output ./build/$timestamp\'\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.0.0) for a full list of\\nchanges.\\n\\n- Added a `hasher.warnOnMissingInputs` setting to `.moon/workspace.yml`.\\n- Added a `$projectAlias` task token.\\n- Added a `telemetry` setting to `.moon/workspace.yml`.\\n- Updated the new version check to only run on the `check`, `ci`, `run`, and `sync` commands.\\n\\n## What\'s next?\\n\\nExpect the following in the v1.1 release!\\n\\n- Polish and stability initiatives.\\n- Task inheritance based on tags.\\n- Deno tier 3 support."},{"id":"proto-v0.3","metadata":{"permalink":"/blog/proto-v0.3","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-15_proto-v0.3.mdx","source":"@site/blog/2023-03-15_proto-v0.3.mdx","title":"proto v0.3 - Improved npm, go, and version requirement support","description":"With this release, we\'re improving some workflows and version detection logic based on initial","date":"2023-03-15T00:00:00.000Z","formattedDate":"March 15, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"npm","permalink":"/blog/tags/npm"},{"label":"go","permalink":"/blog/tags/go"}],"readingTime":1.395,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.3","title":"proto v0.3 - Improved npm, go, and version requirement support","authors":["milesj"],"tags":["proto","npm","go"],"image":"./img/proto/v0.3.png"},"prevItem":{"title":"moon v1.0 - Official release! Project constraints, tagging, and more!","permalink":"/blog/moon-v1.0"},"nextItem":{"title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","permalink":"/blog/v0.26"}},"content":"With this release, we\'re improving some workflows and version detection logic based on initial\\nfeedback.\\n\\n\x3c!--truncate--\x3e\\n\\n## Bundled npm support\\n\\nAfter Node.js is installed, the version of npm that came bundled with that Node.js version will also\\nbe installed into proto. This functionality can be skipped by passing `--no-bundled-npm` during\\ninstallation.\\n\\n```shell\\n$ proto install node -- --no-bundled-npm\\n```\\n\\nTo further expand upon this, `bundled` is now considered a built-in alias, and will be used during\\nversion detection. When encountered, we\'ll first detect the version of Node.js running, and infer\\nthe npm version from there.\\n\\n```shell\\n$ proto global npm bundled\\n```\\n\\n> Only supported by proto, not moon.\\n\\n## Automatic `GOBIN` setup\\n\\nAfter Go is installed, we\'ll now inject a `GOBIN` environment variable into your shell, pointing to\\n`~/go/bin`, if it doesn\'t already exist. This variable will be used to locate Go binaries across all\\ninstalled versions, and help to avoid binary not found errors.\\n\\nThis functionality can be skipped by passing `--no-gobin` during installation.\\n\\n```shell\\n$ proto install go -- --no-gobin\\n```\\n\\n> Only supported by proto, not moon.\\n\\n## Better version requirement detection\\n\\nPreviously when proto encounted a version requirement (`^`, `~`, `>=`, etc) during version\\ndetection, we would attempt to resolve a version that satisfied the requirement based on versions\\navailable in the remote manifest (what\'s been officially released). While this worked, it would\\nresult in far too many local installs as that satisfied version constantly changed.\\n\\nInstead, we now satisfy the version requirement based on versions that have been installed locally\\nto `~/.proto/tools`. If no version matches, detection will simply move on to the next case, and\\neventually fallback to the global default version."},{"id":"v0.26","metadata":{"permalink":"/blog/v0.26","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-13_v0.26.mdx","source":"@site/blog/2023-03-13_v0.26.mdx","title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","description":"With this release, we\'re providing deeper integration with our new proto toolchain","date":"2023-03-13T00:00:00.000Z","formattedDate":"March 13, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"docker","permalink":"/blog/tags/docker"},{"label":"query","permalink":"/blog/tags/query"},{"label":"hash","permalink":"/blog/tags/hash"}],"readingTime":3.29,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.26","title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","authors":["milesj"],"tags":["proto","docker","query","hash"],"image":"./img/v0.26.png"},"prevItem":{"title":"proto v0.3 - Improved npm, go, and version requirement support","permalink":"/blog/proto-v0.3"},"nextItem":{"title":"Introducing proto, a next-generation toolchain manager!","permalink":"/blog/proto"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\nimport Logo from \'../static/brand/proto/logo.svg\';\\n\\nWith this release, we\'re providing deeper integration with our new [proto](/proto) toolchain\\nmanager, better Docker support, and new query commands for debugging.\\n\\n\x3c!--truncate--\x3e\\n\\n## Full proto toolchain integration\\n\\n
    \\n \\n
    \\n\\nEarlier this week we announced [proto](/proto), our own toolchain manager, and an attempt at a next\\ngeneration version manager for multiple languages. proto was originally moon\'s toolchain layer, but\\nwe felt it best to extract it out into a stand-alone tool for everyone to use, especially those not\\nusing moon!\\n\\nNow that proto has been released, we\'ve updated moon\'s Rust internals to utilize proto\'s latest Rust\\ncrates. For the most part, everything will continue to work the same. However, the biggest change is\\nthat the toolchain has moved from `~/.moon` to `~/.proto`, and will result in tools being\\nre-downloaded and installed. Feel free to delete the old `~/.moon` directory manually.\\n\\nFurthermore, we\'ve added first-class support for the new [`.prototools`](/docs/proto/config)\\nconfiguration file. If this file is found in the workspace root, we\'ll automatically enable the\\ntools in our toolchain, and inject the versions (when not defined in `.moon/toolchain.yml`).\\n\\n```toml title=\\".prototools\\"\\nnode = \\"18.0.0\\"\\npnpm = \\"7.29.0\\"\\n```\\n\\n## New `moon docker setup` command\\n\\nmoon has provided [built-in `Dockerfile` support](/docs/guides/docker) since v0.15 (11 versions\\nago!) and we\'ve always encouraged the use of the [`moon setup`](/docs/commands/setup) command to\\nsetup the toolchain and install project dependencies. Here\'s an example of a moon powered\\n`Dockerfile`:\\n\\n```docker\\nFROM node:latest\\nWORKDIR /app\\n\\n# Install moon binary\\nRUN npm install -g @moonrepo/cli\\n\\n# Copy workspace skeleton\\nCOPY ./.moon/docker/workspace .\\n\\n# Install toolchain and dependencies\\nRUN moon setup\\n\\n# Copy source files\\nCOPY ./.moon/docker/sources .\\n\\n# Build something\\nRUN moon run app:build\\n\\n# Prune workspace\\nRUN moon docker prune\\n\\nCMD [\\"moon\\", \\"run\\", \\"app:start\\"]\\n```\\n\\nHowever, over the course of these 11 releases since v0.15, we refactored the `moon setup` command to\\nonly setup the toolchain, and _no longer_ install project dependencies. We inadvertently broke our\\nDocker integration. This was an oversight on our part.\\n\\nTo rectify this situation, we\'re introducing a new\\n[`moon docker setup`](/docs/commands/docker/setup) command that will efficiently install\\ndependencies for projects focused/affected within the `Dockerfile`. This is a much better solution\\nthan before, and you should see improved Docker layer caching!\\n\\n```diff\\n-RUN moon setup\\n+RUN moon docker setup\\n```\\n\\n## New `moon query hash` command\\n\\nWhen moon runs a task, we generate a unique hash representing the state of that run. When something\\ngoes wrong however, and the hash is different than what you expect, debugging why is rather\\nnon-trivial and requires a lot of internal knowledge. We\'re looking to reduce this burden, by\\nintroducing the new [`moon query hash`](/docs/commands/query/hash) command.\\n\\n```shell\\n$ moon query hash 0b55b234\\n```\\n\\nThis command will print the contents of the hash manifest, which is all inputs and sources used to\\ngenerate the unique hash. From here you can use this output to investigate what\'s actually\\nhappening.\\n\\n```json\\n{\\n \\"command\\": \\"build\\",\\n \\"args\\": [\\"./build\\"]\\n // ...\\n}\\n```\\n\\n## New `moon query hash-diff` command\\n\\nExpanding on the new command above, we\'re also introducing the\\n[`moon query hash-diff`](/docs/commands/query/hash-diff) command, which can be used to compute the\\ndifference between 2 hashes. Perfect in understanding what has changed between ran tasks.\\n\\n```shell\\n$ moon query hash-diff 0b55b234 2388552f\\n```\\n\\nWhen ran, the command will print out the differences as highlighted lines. If you use `git diff`,\\nthis will feel familiar to you.\\n\\n```diff\\n{\\n\\t\\"command\\": \\"build\\",\\n\\t\\"args\\": [\\n+\\t\\t\\"./dist\\"\\n-\\t\\t\\"./build\\"\\n\\t],\\n\\t...\\n}\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.26.0) for a\\nfull list of changes.\\n\\n- A handful of critical bug fixes.\\n- Targets that generate an empty hash are now considered a failure, as they may be an edge case not\\n accounted for.\\n\\n## What\'s next?\\n\\nExpect the following in the v1 release!\\n\\n- Officially release a v1!\\n- Project tagging and constraints."},{"id":"proto","metadata":{"permalink":"/blog/proto","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-09_proto.mdx","source":"@site/blog/2023-03-09_proto.mdx","title":"Introducing proto, a next-generation toolchain manager!","description":"We are proud to announce the launch of proto, a next-generation toolchain manager for all","date":"2023-03-09T00:00:00.000Z","formattedDate":"March 9, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":1.89,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto","title":"Introducing proto, a next-generation toolchain manager!","authors":["milesj"],"tags":["proto","toolchain"],"image":"./img/proto/v0.png"},"prevItem":{"title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","permalink":"/blog/v0.26"},"nextItem":{"title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","permalink":"/blog/v0.25"}},"content":"import Button from \'@site/src/ui/Button\';\\nimport Logo from \'../static/brand/proto/logo.svg\';\\n\\nWe are proud to announce the launch of [proto](/proto), a next-generation toolchain manager for all\\nof your favorite programming languages.\\n\\n\x3c!--truncate--\x3e\\n\\n
    \\n \\n
    \\n\\n[proto](/proto) is a Rust based multi-language toolchain manager that will download and install\\ntools by version, and immediately make them available on `PATH`. proto is launching with initial\\nsupport for [Bun](https://bun.sh), [Deno](https://deno.land), [Node.js](https://nodejs.org) (and\\nnpm, pnpm, yarn), and [Go](https://go.dev), with more languages on the way!\\n\\n```shell\\nproto install node 18\\nproto install go 1.20\\nproto install deno 1.30\\n```\\n\\nUnlike other version managers that pin their global binary to a default version, proto will\\n[contextually detect an applicable version](/docs/proto/detection) from the environment or the\\nlanguage\'s ecosystem (like `package.json`), ensuring the correct tool is always being ran.\\n\\n```shell\\n# Will detect a version before running\\nbun run ./script.ts\\n```\\n\\nFurthermore, with proto\'s [`.prototools`](/docs/proto/config) file, you can pin versions of all\\nrequired tools on a per-project or per-repository basis, allowing for near instant setup of\\ndeveloper environments. Perfect for onboarding new developers!\\n\\n```toml title=\\".prototools\\"\\nnode = \\"18.12.0\\"\\nyarn = \\"3.3.0\\"\\n```\\n\\n```shell\\n# Install all the things!\\nproto use\\n```\\n\\nAnd lastly, [moon](/moon)\'s toolchain is built on proto, so if you\'re using moon, you might as well\\nuse proto. This will enable a single toolchain for both tools (in v0.26)!\\n\\n
    \\n
    \\n\\n## How to get started?\\n\\nIn a terminal that supports Bash, run:\\n\\n```\\ncurl -fsSL https://moonrepo.dev/install/proto.sh | bash\\n```\\n\\nIn Powershell or Windows Terminal, run:\\n\\n```\\nirm https://moonrepo.dev/install/proto.ps1 | iex\\n```\\n\\nJump to the [documentation](/docs/proto) for more information on getting started and available\\ncommands!\\n\\n## Why another version manager?\\n\\nTo start, proto powers [moon\'s](/moon) toolchain and integrated developer environment. We believed\\nthat moon\'s toolchain would be extremely beneficial for developers as a whole, and so we extracted\\nproto out into a standalone Rust CLI and Rust crates that moon inherits.\\n\\nFurthermore, we believe that requiring multiple ad-hoc version managers for all your languages, each\\nwith different workflows, CLI commands, and configuration files, is a poor developer experience.\\n\\nOur goal is to unify all of these into a single performant interface. A toolchain manager is the\\nnext step in the version manager evolution."},{"id":"v0.25","metadata":{"permalink":"/blog/v0.25","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-02-27_v0.25.mdx","source":"@site/blog/2023-02-27_v0.25.mdx","title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","description":"With this release, we\'re landing Deno, our first supported language besides Node.js, and improving","date":"2023-02-27T00:00:00.000Z","formattedDate":"February 27, 2023","tags":[{"label":"deno","permalink":"/blog/tags/deno"},{"label":"toolchain","permalink":"/blog/tags/toolchain"},{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"offline","permalink":"/blog/tags/offline"},{"label":"github","permalink":"/blog/tags/github"}],"readingTime":4.475,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.25","title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","authors":["milesj"],"tags":["deno","toolchain","moonbase","offline","github"],"image":"./img/v0.25.png"},"prevItem":{"title":"Introducing proto, a next-generation toolchain manager!","permalink":"/blog/proto"},"nextItem":{"title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","permalink":"/blog/v0.24"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\nimport Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'re landing Deno, our first supported language besides Node.js, and improving\\ninteroperability of languages as a whole.\\n\\n\x3c!--truncate--\x3e\\n\\n## Deno tier 2 support (experimental)\\n\\nThree months ago we announced our [new tiered support structure](./v0.21) for languages, and as of\\ntoday, we\'re happy to announce that our second language to reach tier 2 is\\n[Deno](https://deno.land)! With tier 2 support, we now analyze Deno specific configuration files\\n(like `deno.json`) to infer dependencies and relationships, as well as utilize this information for\\ninputs and hashing purposes. With that being said, we\'re marking this release as experimental until\\nwe fine tune the implementation, and iron out all the bugs.\\n\\nTo get started with using Deno, enable the new [`deno`](/docs/config/toolchain#deno) setting in\\n[`.moon/toolchain.yml`](/docs/config/toolchain). At this time, we don\'t have many settings to\\nconfigure, so simply defining an empty object is enough to enable the Deno platform! Learn more\\nabout this in our [Deno handbook](/docs/guides/javascript/deno-handbook).\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\ndeno: {}\\n```\\n\\nOnce enabled, you can start using `deno` commands in your moon tasks. moon will automatically set\\nthe [`platform`](/docs/config/project#platform-1) to \\"deno\\" when using a deno command.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'deno fmt\'\\n```\\n\\n:::info\\n\\nBecause this is only tier 2 support, moon _does not_ download and install Deno into its toolchain.\\nmoon expects the `deno` binary to exist in the current environment.\\n\\n:::\\n\\nFurthermore, if you\'re working a project that is composed of multiple JavaScript runtimes, like\\nDeno, Bun, or Node.js, you can set the default `platform` for all tasks at the project-level.\\n\\n```yaml title=\\"moon.yml\\"\\nplatform: \'deno\'\\nlanguage: \'typescript\'\\ntype: \'application\'\\n```\\n\\nWe\'re very excited for this release as it paves the way for future language integrations, and\\nenables additional JavaScript runtimes!\\n\\n## CI insights in moonbase\\n\\nWe\'ve spent the last few weeks implementing a new [moonbase](https://moonrepo.app) feature called CI\\ninsights, where we track all CI runs (via [`moon ci`](/docs/commands/ci)), and all actions (tasks)\\nthat have ran based on affected files. In the future these insights will help catch regressions,\\nalert on flakiness, provide granular metrics, and help monitor the health of your CI pipeline and\\nrepositories.\\n\\n\\n\\nWith this initial release, we track touched files, which targets are affected based on those files,\\nan estimation on how much time was saved or lost, the actions that ran and their final status,\\noutlined as a timeline.\\n\\n\\n\\nInsights are enabled by default if you\'re using moonbase in your CI pipeline, and start using moon\\nv0.25! You can disable insights gathering from your\\n[organization settings page](https://moonrepo.app).\\n\\n## Offline mode\\n\\nmoon assumes that an internet connection is always available, as we download and install tools into\\nthe toolchain, resolve versions against upstream manifests, and automatically install dependencies.\\nWhile this is useful, having a constant internet connection isn\'t always viable.\\n\\nIn this release, we now check for an active internet connection and bypass certain workflows when\\napplicable.\\n[Jump to the official guide on offline mode for more information](/docs/guides/offline-mode)!\\n\\n## Custom project `language`\\n\\nProject\'s have always been able to define a [`language`](/docs/config/project#language) in\\n[`moon.yml`](/docs/config/project) that denotes the primary programming language for the project.\\nHistorically this has been a strict enum of supported values, and could _not_ be customized for\\nother languages. With the introduction of\\n[language driven task inheritance](./v0.23#new-scoped-tasks-with-moontasksyml), we felt like\\nrevisiting this setting, and as such, you\'re now able to define _any_ language in this setting,\\nwhich also feeds into the task inheritance system.\\n\\n```yaml title=\\"moon.yml\\"\\nlanguage: \'kotlin\'\\n```\\n\\nWith this change, `.moon/tasks/kotlin-application.yml`, `.moon/tasks/dotnet.yml`, and other\\nvariations are now possible! However, besides task inheritance, other functionality like platform\\ndetection, and Dockerfile support are not enabled.\\n\\n## Project-level TypeScript settings (breaking)\\n\\nOur TypeScript integration supports many automated workflows, like syncing project references, and\\nrouting `outDir` to our shared cache. This is wonderful for the majority, but for the handful of\\nprojects where these settings were not viable, there was no simple way to disable or opt out of the\\nfunctionality.\\n\\nWell no more, projects can now override the workspace-level TypeScript settings\\n`routeOutDirToCache`, `syncProjectReferences`, and `syncProjectReferencesToPaths` through the\\n[`toolchain.typescript`](/docs/config/project#typescript) setting in\\n[`moon.yml`](/docs/config/project).\\n\\n```yaml title=\\"moon.yml\\"\\ntoolchain:\\n\\ttypescript:\\n\\t\\trouteOutDirToCache: false\\n```\\n\\nBecause this setting was changed from a boolean to an object, the old pattern of disabling\\nTypescript must now use the `disabled` setting.\\n\\n```yaml title=\\"moon.yml\\"\\n# Old\\ntoolchain:\\n\\ttypescript: false\\n\\n# new\\ntoolchain:\\n\\ttypescript:\\n\\t\\tdisabled: true\\n```\\n\\n## New `moonrepo/setup-moon-action` GitHub action\\n\\nIf you\'re using GitHub Actions as your CI pipeline, we\'ve introducing a new action called\\n[moonrepo/setup-moon-action](https://github.com/moonrepo/setup-moon-action), that will install the\\n`moon` binary globally, and will cache (and restore) the moon toolchain.\\n\\nWith this new action, let moon handle all the heavy lifting, and avoid all the unnecessary steps\\naround setting up Node.js, and install dependencies.\\n\\n```yaml\\njobs:\\n ci:\\n name: \'CI\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: actions/checkout@v4\\n with:\\n fetch-depth: 0\\n - uses: moonrepo/setup-moon-action@v1\\n - run: moon ci\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.25.0) for a\\nfull list of changes.\\n\\n- Updated project, task, and target identifiers to support periods (`.`).\\n- Refactored glob matching to use workspace relative paths instead of absolute. Please report an\\n issue if hashing or affected detection is now inaccurate.\\n- We now build against older operating systems in an attempt to solve GLIBC version errors.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.26 release!\\n\\n- Officially release proto!\\n- Improved Deno interoperability."},{"id":"v0.24","metadata":{"permalink":"/blog/v0.24","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-02-13_v0.24.mdx","source":"@site/blog/2023-02-13_v0.24.mdx","title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","description":"With this release, we\'ve polished our CLI experience and improved task interoperability.","date":"2023-02-13T00:00:00.000Z","formattedDate":"February 13, 2023","tags":[{"label":"project","permalink":"/blog/tags/project"},{"label":"platform","permalink":"/blog/tags/platform"},{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"remote-cache","permalink":"/blog/tags/remote-cache"}],"readingTime":4.28,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"},{"name":"James Pozdena","title":"Founder, developer","url":"https://github.com/jpoz","imageURL":"/img/authors/james.jpg","key":"jpoz"}],"frontMatter":{"slug":"v0.24","title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","authors":["milesj","jpoz"],"tags":["project","platform","moonbase","remote-cache"],"image":"./img/v0.24.png"},"prevItem":{"title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","permalink":"/blog/v0.25"},"nextItem":{"title":"Remote caching is now publicly available through moonbase","permalink":"/blog/moonbase"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\n\\nWith this release, we\'ve polished our CLI experience and improved task interoperability.\\n\\n\x3c!--truncate--\x3e\\n\\n## Remote caching now available\\n\\nIf you missed our announcement earlier this week,\\n[remote caching is now publicly available through our new service moonbase](/blog/moonbase)! If\\nyou\'re looking to speed up your CI pipelines and share build artifacts between runs, moonbase can\\nhelp.\\n\\n
    \\n
    \\n\\n## Project-level task platform\\n\\nIn our previous release, [v0.23](./v0.23#project-level-environment-variables), we added support for\\nproject-level environment variables. This is great as it helps to reduce duplication for projects\\nwith many tasks. On that note, we wondered which configuration field we could apply similar\\ntreatment, and as such, we\'ve added a project-level [`platform`](/docs/config/project#platform)\\nsetting.\\n\\nWhen this setting is defined, all task\'s within the current project that have _not explicitly_\\nconfigured their `platform`, will inherit the project-level platform. If neither settings are\\ndefined, we\'ll attempt to detect the correct platform based on the state of the project.\\n\\n```yaml title=\\"/moon.yml\\"\\n# Will set non-explicit task\'s platform to node\\nplatform: \'node\'\\n\\ntasks:\\n\\t# Will be node\\n dev: # ...\\n\\n\\t# Will be node\\n build: # ...\\n\\n\\t# Will be system\\n serve:\\n # ...\\n platform: \'system\'\\n```\\n\\n> This setting is _extremely useful_ for projects that contain multiple languages. Even more so once\\n> we land Bun and Deno support, as we\'ll need a way to differentiate JavaScript/TypeScript projects!\\n\\n## Interactive tasks\\n\\nWhen moon executes a task, it streams both stdout and stderr to the terminal _and_ captures the\\noutput for later use. We do this for 2 reasons:\\n\\n- We store stdout.log and stderr.log files in a tarball archive.\\n- We replay this captured output when executing a task that has been cached.\\n\\nWhile this works, our approach is non-standard. Streams are either piped or inherited, not both!\\nBecause of our custom abstraction around streams and output capturing, it disrupts stdin, breaking\\nall interactive commands. If you tried to run a task that prompted you with a question and were\\nunable to answer it, this is why!\\n\\nTo remedy this shortcoming, we\'re approaching this from 2 angles. The first is that all tasks marked\\nas [`local`](/docs/config/project#local) (or have caching disabled) will no longer capture streamed\\noutput, and will instead stream natively, allowing interactivity out of the box, but only when\\nthey\'re the only task being ran. This will cover the majority of use cases.\\n\\nFor the remaining use cases, we\'re introducing a new `--interactive` flag for\\n[`moon run`](/docs/commands/run). When this flag is provided, it will force the target into an\\ninteractive mode.\\n\\n```shell\\n$ moon run app:new --interactive\\n```\\n\\n## Improved `moon query` commands (breaking)\\n\\nThe [`moon query projects`](/docs/commands/query/projects) and\\n[`moon query touched-files`](/docs/commands/query/touched-files) commands are useful for building\\ncustom solutions and integrations on top of moon, but they weren\'t developer friendly as they output\\nlarge JSON blobs. To remedy this, we\'ve updated both commands to output a simple human readable\\nformat by default, and moved the JSON output behind a `--json` flag.\\n\\nFor example, `moon query touched-files` now outputs a list of absolute file paths separated by new\\nlines.\\n\\n```\\n$ moon query touched-files\\n/moon/website/docs/commands/query/projects.mdx\\n/moon/crates/cli/tests/query_test.rs\\n/moon/crates/cli/src/commands/query.rs\\n/moon/website/blog/2023-02-13_v0.24.mdx\\n```\\n\\nWhile `moon query projects` now outputs a list of project separated by new lines, where each line\\ncontains the project name, source, type, and language.\\n\\n```\\n$ moon query projects\\nreport | packages/report | library | typescript\\nruntime | packages/runtime | library | typescript\\ntypes | packages/types | library | typescript\\nvisualizer | packages/visualizer | library | typescript\\nwebsite | website | application | typescript\\n```\\n\\nWe had 2 goals in mind for this change, the first was to make it easily readable, and the second was\\nfor the default output to be easily parseable. We believe we\'ve accomplished these goals!\\n\\n## New `moon query tasks` command\\n\\nTo expand on the query improvements above, we wanted to provide a way to also query for tasks,\\nanswering the question of \\"What tasks exists and for what projects?\\". And with this, we\'re\\nintroducing a new [`moon query tasks`](/docs/commands/query/tasks) command!\\n\\n```\\n$ moon query tasks\\ntypes\\n\\t:build | packemon\\n\\t:format | prettier\\n\\t:lint | eslint\\n\\t:test | jest\\n\\t:typecheck | tsc\\nreport\\n\\t:build | packemon\\n\\t:format | prettier\\n\\t:lint | eslint\\n\\t:test | jest\\n\\t:typecheck | tsc\\n...\\n```\\n\\n## Shell completions\\n\\nAuto-completion in your terminal increases productivity, which we\'re a massive fan of. To help\\nsupport this, we\'re introducing the [`moon completions`](/docs/commands/completions) command, which\\ngenerates the appropriate command completions for your current shell.\\n\\nThis command writes to stdout, which can then be redirected to a file of your choice. Be sure to\\nconfigure your shell profile to load the completions!\\n\\n```shell\\n$ moon completions > ~/.bash_completion.d/moon.sh\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.24.0) for a\\nfull list of changes.\\n\\n- Added [TypeScript v5](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/)\\n support.\\n- Added a `hasher.walkStrategy` setting to `.moon/workspace.yml`.\\n- Updated task `outputs` to support token functions (`@group`, `@globs`, etc).\\n- Reworked our comparison/baseline estimations calcuations.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.25 release!\\n\\n- Deno tier 2 support.\\n- CI insights and metrics within moonbase.\\n- Project-level TypeScript settings."},{"id":"moonbase","metadata":{"permalink":"/blog/moonbase","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-02-08_moonbase.mdx","source":"@site/blog/2023-02-08_moonbase.mdx","title":"Remote caching is now publicly available through moonbase","description":"We are proud to announce the launch of moonbase remote caching \u2013 a new solution that","date":"2023-02-08T00:00:00.000Z","formattedDate":"February 8, 2023","tags":[{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"remote-cache","permalink":"/blog/tags/remote-cache"}],"readingTime":1.74,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"},{"name":"James Pozdena","title":"Founder, developer","url":"https://github.com/jpoz","imageURL":"/img/authors/james.jpg","key":"jpoz"}],"frontMatter":{"slug":"moonbase","title":"Remote caching is now publicly available through moonbase","authors":["milesj","jpoz"],"tags":["moonbase","remote-cache"]},"prevItem":{"title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","permalink":"/blog/v0.24"},"nextItem":{"title":"moon v0.23 - Scoped task inheritance, and project config updates","permalink":"/blog/v0.23"}},"content":"import Button from \'@site/src/ui/Button\';\\nimport Image from \'@site/src/components/Image\';\\nimport Logo from \'../static/brand/moonbase/logo.svg\';\\n\\nWe are proud to announce the launch of [moonbase](/moonbase) remote caching \u2013 a new solution that\\nhelps moon developers streamline their build processes and save time.\\n\\n\x3c!--truncate--\x3e\\n\\n
    \\n \\n
    \\n\\nRemote caching allows developers to cache artifacts across builds, improving the efficiency of their\\nContinuous Integration (CI) pipelines. This is accomplished by automatically caching build artifacts\\nwhen moon is run with moonbase [remote caching enabled](/docs/guides/remote-cache). In the event\\nthat a CI run is executed with identical code, the cached artifacts are automatically pulled down,\\nreducing the time required to complete the build. In our tests, we have seen significant\\nimprovements in CI times, upwards of 90%.\\n\\n## What is moonbase?\\n\\nYou may be asking yourself, what is moonbase? [moonbase](/moonbase) is a new cloud service that\\nwe\'ve been working on to solve an array of problems in regards to repository and continous\\nintegration health.\\n\\n\\n\\nThe first problem on this list is [remote caching](/docs/guides/remote-cache), which has been in a\\nbeta program for the past few months. We want to thank all the beta participants for testing our\\nsystems!\\n\\nWe\'ll also be launching CI insights in the next few weeks. This is a system where we track all your\\nCI runs (via `moon ci`), and all moon tasks (actions) that ran within each job. We use this\\ninformation to track the health of your pipelines, catch regressions, alert on flakiness, and more!\\nBut don\'t worry, this feature is opt-in.\\n\\nWe\'re very excited for moonbase! We have a massive roadmap ahead of us, but we\'re sure y\'all will\\nenjoy everything that it has to offer.\\n\\n
    \\n
    \\n\\n## New homepage and product pages\\n\\nAs part of this release, we\'ve updated our homepage, and added new product pages for both\\n[moon](/moon) and [moonbase](/moonbase). This includes new logos and typography, which we\'re very\\nexcited for! This is only the beginning, as we\'re also working on additional behind the scenes\\nproducts. Stay tuned!"},{"id":"v0.23","metadata":{"permalink":"/blog/v0.23","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-01-30_v0.23.mdx","source":"@site/blog/2023-01-30_v0.23.mdx","title":"moon v0.23 - Scoped task inheritance, and project config updates","description":"With this release, we\'re launching the next iteration of our task inheritance model, as well as","date":"2023-01-30T00:00:00.000Z","formattedDate":"January 30, 2023","tags":[{"label":"survey","permalink":"/blog/tags/survey"},{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"projects","permalink":"/blog/tags/projects"}],"readingTime":5.74,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.23","title":"moon v0.23 - Scoped task inheritance, and project config updates","authors":["milesj"],"tags":["survey","tasks","projects"],"image":"./img/v0.23.png"},"prevItem":{"title":"Remote caching is now publicly available through moonbase","permalink":"/blog/moonbase"},"nextItem":{"title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","permalink":"/blog/v0.22"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\n\\nWith this release, we\'re launching the next iteration of our task inheritance model, as well as\\nquality of life improvements for project configuration.\\n\\n\x3c!--truncate--\x3e\\n\\n## Developer survey\\n\\nBefore we dive into this new release, we have a quick survey for everyone. We know how everyone\\nfeels about surveys, but this one is real quick, only a few minutes, and is mostly multiple choice\\nquestions.\\n\\nWe\'re looking for feedback on moon itself, what features you\'re looking for, what you currently do\\nnot like, how you\'re currently using monorepos, your development workflows, so on and so forth. We\'d\\nvery much appreciate it if you could engage with this survey!\\n\\n
    \\n \\n
    \\n\\n## Improved task inheritance model\\n\\nOne of the guiding principles behind moon is to simplify repository maintenance, with task\\nmanagement being top of list. We weren\'t happy with the current state of things, as every build\\nsystem and task runner that exists always opted for per-project task management, which is a massive\\namount of overhead and tech debt in the long run. To combat this, moon was designed from the\\nground-up using a task inheritance model, where \\"global\\" tasks were defined in\\n[`.moon/project.yml`](/docs/config/tasks), with per-project tasks still being an option with\\n[`moon.yml`](/docs/config/project).\\n\\nWhile inheritance worked great, it did have some shortcomings, such as:\\n\\n- With the addition of [new programming languages](/blog/v0.21), there\'s no way to easily define\\n tasks for specific languages, that should only be inherited by specific projects.\\n- There\'s no way to differentiate tasks between applications or libraries, as they typically have\\n different build/compilation systems.\\n- All of the problems above can be \\"solved\\" with\\n [`workspace.inheritedTasks`](/docs/config/project#inheritedtasks) in all projects, but it\'s a\\n maintenance headache.\\n\\nWe\'ve been documenting a solution to these problems for many months now, and we\'re very excited to\\nfinally release our new and improved task inheritance model that solves all of the problems above,\\nand opens the doors for future enhancements! Keep reading for more information.\\n\\n### New `.moon/tasks.yml` (breaking)\\n\\nTo start, we renamed `.moon/project.yml` to `.moon/tasks.yml` as we want to emphasize that this\\nconfiguration file is for task inheritance functionality only. However, the semantics of this file\\nhas _not_ changed, and is still \\"tasks to be inherited by _all_ projects\\".\\n\\n```yaml title=\\".moon/tasks.yml\\"\\n$schema: \'https://moonrepo.dev/schemas/tasks.json\'\\n\\ntasks:\\n # ...\\n```\\n\\n> We\'ll automatically rename this file for you when running a `moon` command!\\n\\n### New scoped tasks with `.moon/tasks/*.yml`\\n\\nThe biggest change to task inheritance is that tasks can now be scoped by a project\'s\\n[`language`](/docs/config/project#language) or [`type`](/docs/config/project#type) using the new\\n`.moon/tasks/.yml` or `.moon/tasks/-.yml` configuration files! Jump to the\\n[official documentation on task inheritance](/docs/concepts/task-inheritance) for more information\\non how scoping works, the lookup order of files, and much more.\\n\\nAs a demonstration, you can scope tasks to Node.js projects with `.moon/tasks/node.yml`, Rust\\napplications with `.moon/tasks/rust-application.yml`, Go libraries with\\n`.moon/tasks/go-library.yml`, Ruby scripts with `.moon/tasks/ruby-tool.yml`, so on and so forth!\\n\\nWe\'re very excited for this feature, as it\'s something we personally needed, and we\'re sure you all\\ndo as well. It also future proofs moon for new programming languages, additional implicit scenarios\\nto handle, and yet to be discovered functionality.\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/node.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'prettier --write .\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/go.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'go fmt\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/php.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'phpcbf .\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/python.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'pylint .\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/ruby.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'rubocop -l\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/rust.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'cargo fmt --all --check\'\\n```\\n\\n\\n\\n\\n### Moved `implicitDeps` and `implicitInputs` (breaking)\\n\\nTo standardize inheritance and expansion related functionality, we\'ve moved the\\n`runner.implicitDeps` and `runner.implicitInputs` settings from `.moon/workspace.yml` to\\n[`.moon/tasks.yml`](/docs/config/tasks#implicitdeps) and\\n[`.moon/tasks/*.yml`](/docs/config/tasks#implicitinputs) and removed the `runner` prefix.\\n\\nThis allows for implicits to also be scoped accordingly and granularly. For example, projects can\\nnow inherit dependency manager related files as implicit inputs on a per-language basis:\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/node.yml\\"\\nimplicitInputs:\\n\\t- \'package.json\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/go.yml\\"\\nimplicitInputs:\\n\\t- \'go.mod\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/php.yml\\"\\nimplicitInputs:\\n\\t- \'composer.json\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/python.yml\\"\\nimplicitInputs:\\n\\t- \'pyproject.toml\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/ruby.yml\\"\\nimplicitInputs:\\n\\t- \'Gemfile\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/rust.yml\\"\\nimplicitInputs:\\n\\t- \'Cargo.toml\'\\n```\\n\\n\\n\\n\\n## Project-level environment variables\\n\\nSince moon\'s inception, tasks can be configured with pre-defined environment variables using the\\n[`env`](/docs/config/project#env-1) setting. These variables would then be passed to the command\\nduring execution. This works perfectly for encapsulation, but becomes tedious when the same\\nvariables are repeated for multiple tasks.\\n\\nTo remedy this, environment variables can now be defined at the top of\\n[`moon.yml`](/docs/config/project) using the top-level [`env`](/docs/config/project#env) setting.\\nVariables defined at the top-level will be inherited by all tasks in the current project, but will\\nnot override task-level variables of the same name.\\n\\nTo demonstrate this, the following config:\\n\\n```yaml title=\\"/moon.yml\\"\\ntasks:\\n dev:\\n # ...\\n env:\\n TARGET_ENV: \'development\'\\n\\n build:\\n # ...\\n env:\\n TARGET_ENV: \'development\'\\n\\n serve:\\n # ...\\n env:\\n TARGET_ENV: \'development\'\\n```\\n\\nCan be rewritten as:\\n\\n```yaml title=\\"/moon.yml\\"\\nenv:\\n TARGET_ENV: \'development\'\\n\\ntasks:\\n dev:\\n # ...\\n\\n build:\\n # ...\\n\\n serve:\\n # ...\\n```\\n\\n## Globs in task outputs\\n\\nAnother feature that\'s been around since moon\'s inception is task\\n[`outputs`](/docs/config/project#outputs), which only supported relative files and folders. For\\nhistorical reasons, it was the easiest solution at the time, but in practice, supporting more\\ngranular control is better.\\n\\nAs such, task `outputs` now support glob patterns as well! This is perfect for restricting and\\nfiltering down which files are cached in the artifact. However, be aware that during hydration (a\\ncache hit), all files _not matching the glob_ will be deleted, so ensure that critical files _do_\\nmatch.\\n\\nTo demonstrate this, if building a JavaScript project, you may want to include `.js` and `.css`\\nfiles, but exclude everything else (`.map`, etc).\\n\\n```yaml title=\\"moon.yml\\" {4,5}\\ntasks:\\n build:\\n command: \'webpack\'\\n outputs:\\n - \'build/**/*.{js,css}\'\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.23.0) for a\\nfull list of changes.\\n\\n- Updated `moon migrate from-turborepo` to preserve globs in outputs.\\n- Updated project graph to no longer cache when there\'s no VCS root.\\n- Updated pnpm to use the new `pnpm dedupe` command when the version is >= 7.26.0.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.24 release!\\n\\n- New `moon query tasks` command.\\n- New per-project `platform` setting.\\n- Token support in task `outputs`.\\n- TypeScript v5 support."},{"id":"v0.22","metadata":{"permalink":"/blog/v0.22","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-01-16_v0.22.mdx","source":"@site/blog/2023-01-16_v0.22.mdx","title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","description":"It\'s the first release of the year, and with this release, we\'re landing some quality of life","date":"2023-01-16T00:00:00.000Z","formattedDate":"January 16, 2023","tags":[{"label":"graph","permalink":"/blog/tags/graph"},{"label":"pipeline","permalink":"/blog/tags/pipeline"},{"label":"hasher","permalink":"/blog/tags/hasher"},{"label":"migrate","permalink":"/blog/tags/migrate"}],"readingTime":2.805,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.22","title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","authors":["milesj"],"tags":["graph","pipeline","hasher","migrate"],"image":"./img/v0.22.png"},"prevItem":{"title":"moon v0.23 - Scoped task inheritance, and project config updates","permalink":"/blog/v0.23"},"nextItem":{"title":"What\'s in store for 2023","permalink":"/blog/2023-roadmap"}},"content":"import Label from \'@site/src/ui/typography/Label\';\\nimport Image from \'@site/src/components/Image\';\\n\\nIt\'s the first release of the year, and with this release, we\'re landing some quality of life\\ninfrastructure and workflow improvements!\\n\\n\x3c!--truncate--\x3e\\n\\n## New action pipeline\\n\\nWhen running targets, we generate a graph of actions to execute in order within the action runner.\\nAn action is one of \\"setup toolchain\\", \\"install dependencies\\", \\"run target\\", so on and so forth. Our\\naction runner would then spawn threads for every action using the [Tokio](https://tokio.rs/)\\nruntime. While this worked great, concurrency was entirely abstracted away from us.\\n\\nTo mitigate this problem, we\'ve implemented a new system for executing actions known as the action\\npipeline (or simply pipeline), which implements a dynamically scaling thread pool on top of Tokio.\\nThis provides us with more control over concurrency, starting with the new `--concurrency` option,\\nwhich restricts the number of threads (or CPU cores).\\n\\n```shell\\n$ moon run :build --concurrency 2\\n```\\n\\n## Expanded hashing functionality\\n\\nWhen we run targets in the pipeline, we hash a collection of inputs to calculate whether to continue\\nrunning or to exit early. This functionality has been extremely beneficial for optimizing the\\npipeline, and so, we\'ve expanded the hasher for other use cases. To start, the following 2 workflows\\nnow utilize the hasher:\\n\\n- When determining to auto-install dependencies (`npm install`, etc), we now hash all production,\\n development, and peer dependencies from applicable manifests (`package.json`). This has resulted\\n in more accurate installs, as we\'re no longer inadvertently installing when a non-dependency field\\n is modified in a manifest. On top of this, will still take into account lockfile modified\\n timestamps.\\n- When generating the project graph, we now hash all sources, aliases, and configuration files, to\\n determine whether to load the project graph from the local cache.\\n\\n## Project graph is now cached\\n\\nBecause of the hashing improvements above, we\'re now able to cache the entirety of the project graph\\ninto local cache. Depending on how many projects are in your workspace, you may see performance\\nimprovements on subsequent runs as we\'re no longer re-building the project graph over and over\\neverytime the `moon` binary is ran.\\n\\n## Migrate from Turborepo\\n\\nTurborepo is a popular task runner for Node.js based monorepos, but doesn\'t support all the\\nfunctionality that moon does. If you\'re looking to prototype moon, or migrate from Turborepo to moon\\nholistically, we now support a new command\\n[`moon migrate from-turborepo`](/docs/commands/migrate/from-turborepo).\\n\\nThis command will migrate the `turbo.json` file to moon applicable configuration files!\\n\\n```shell\\n$ moon migrate from-turborepo\\n```\\n\\n## Breaking changes\\n\\n### Renamed events\\n\\nBecause of the runner -> pipeline changes above, the `runner.*` [webhook](/docs/guides/webhooks)\\nevents were renamed to `pipeline.*`.\\n\\n### Updated CLI options\\n\\nRenamed the `--upstream` option to `--remote`, to better align with Git terminology, and removed the\\n`--report` option from `moon check` and `moon run` commands. Reports are now always created.\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.22.0) for a\\nfull list of changes.\\n\\n- Added Bun as a tier 1 language (doesn\'t do much at the moment).\\n- Added a [`versionConstraint` setting](/docs/config/workspace#versionconstraint) in\\n `.moon/workspace.yml` that enforces a requirement on the running moon binary.\\n- Updated the [`project` fields](/docs/config/project#project) in `moon.yml` to be optional,\\n excluding `description`.\\n- Internal improvements to remote caching and artifact uploading.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.23 release!\\n\\n- Improved task inheritance workflow.\\n- Glob support in task `outputs`.\\n- Project-level environment variables."},{"id":"2023-roadmap","metadata":{"permalink":"/blog/2023-roadmap","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-01-04_2023-roadmap.mdx","source":"@site/blog/2023-01-04_2023-roadmap.mdx","title":"What\'s in store for 2023","description":"Happy new year! Let\'s start 2023 by reflecting on last year and diving into our tentative year long","date":"2023-01-04T00:00:00.000Z","formattedDate":"January 4, 2023","tags":[{"label":"roadmap","permalink":"/blog/tags/roadmap"},{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"proto","permalink":"/blog/tags/proto"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":5.42,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"2023-roadmap","title":"What\'s in store for 2023","authors":["milesj"],"tags":["roadmap","moonbase","proto","toolchain"]},"prevItem":{"title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","permalink":"/blog/v0.22"},"nextItem":{"title":"moon v0.21 - Tiered language support with initial Go, PHP, Python, Ruby, and Rust","permalink":"/blog/v0.21"}},"content":"Happy new year! Let\'s start 2023 by reflecting on last year and diving into our tentative year long\\nroadmap.\\n\\n\x3c!--truncate--\x3e\\n\\n## Year 2022 in review\\n\\nThe original concept and\\n[first commit of moon](https://github.com/moonrepo/moon/commit/62267e3ccda7a45c2e9355fcbddba577ae54403d)\\n(codenamed monolith) landed October 23rd, 2021. Eight months later, we\\n[launched an alpha of moon](https://twitter.com/tothemoonrepo/status/1527467865200136192) to the\\npublic on May 19th, 2022. Since then, we\'ve landed 21 amazing releases based on feedback from the\\ncommunity and our long-term vision, with some such features as:\\n\\n- Linux musl, macOS silicon, and ARM support\\n- Full Node.js/JavaScript ecosystem support\\n- End-to-end caching and hashing of build artifacts\\n- Streamlined configuration\\n- Improved developer experience\\n- Massive performance improvements\\n- Automatic cache cleaning\\n- Code generation / scaffolding\\n- Dockerfile integration\\n- Remote caching\\n- New langauage agnostic toolchain\\n- Onboarding of 5 new languages: Rust, Go, PHP, Python, Ruby\\n- Rewritten project and dependency graphs\\n- Project-level toolchain overrides\\n- Project specific caching\\n- VSCode extension\\n- 2 GitHub actions\\n- ...and so much more!\\n\\nWe\'re very proud with the quality and amount of features we\'ve released in a 7 month timeframe. On\\ntop of this, our [GitHub stars](https://github.com/moonrepo/moon/stargazers) have steadily passed\\nthe 1k mark, [npm](https://www.npmjs.com/package/@moonrepo/cli) downloads are 500 a week and\\ngrowing, and our [Twitter](https://twitter.com/tothemoonrepo) isn\'t doing too bad. This is only the\\nstart, and we\'re not planning to go anywhere!\\n\\n## Path to an official v1 release\\n\\nA common question we receive is \\"When is v1 going to be released?\\", as some consumers are weary of\\nusing a \\"beta\\" tool. We definitely understand, and as such, have posted a\\n[high-level overview](https://github.com/moonrepo/moon/issues/491) of what we\'re hoping to land\\nbefore we tag an official v1 release. It basically boils down to landing breaking changes (mainly\\naround configuration) before v1, so that we avoid bumping to a v2 or v3 unnecessarily. We also want\\nto land our [toolchain changes](#proto) and [remote caching](#moonbase) improvements before then.\\n\\nOur current timeframe is by end of Q1, if not, early Q2.\\n\\n## Launching moonbase\\n\\nWe haven\'t mentioned this name publicly yet, but now seems like the perfect time! For the past 6\\nmonths we\'ve been working a new web application and service called moonbase, which pairs nicely with\\nmoon, as it provides additional functionality that can only be achieved by persisting information\\nacross runs.\\n\\nTo start, this service provides [remote caching](/docs/guides/remote-cache), which we\'re already\\nusing in production. At this point in time, objects are stored in our moonrepo S3 buckets, but one\\nof our major goals is to support storing objects in your private buckets, supporting additional\\ncloud providers like Google Cloud and Azure, and in the long-term, a self-hosted / on-premises\\nsolution.\\n\\nBut that\'s not all! moonbase will integrate deeply with [continuous integration](/docs/guides/ci)\\npipelines to generate insights, capture metrics, and provide near real-time dashboards. Our goal is\\nto provide a holistic overview of your entire repository.\\n\\nmoonbase with publicly available remote caching is slated for end of Q1. CI integration is\\ntentatively slated for Q2. We have even more features that we\'ll reveal in the future, so stay\\ntuned!\\n\\n## Launching proto\\n\\nAnother tool we haven\'t mentioned yet is proto (name still in flux). proto is a standardized version\\nmanager for programming languages and dependency managers. We\'ve basically extracted our\\n[toolchain](/docs/concepts/toolchain) into a standalone library, as it\'s super beneficial for\\nprojects and developers not using moon. It provides all the functionality you\'d expect from a\\nversion manager:\\n\\n- Downloading and installing specific versions\\n- Automatic version detection\\n- Updating PATH with the applicable version\\n- Generating shims\\n- Pinning shell, local, and global versions\\n\\nSo how\'s this different from existing version managers like nvm or volta? To start, it\'s written in\\nRust so it\'s _fast_ and doesn\'t suffer from being Bash only. Because of this, it\'s also\\nmulti-platform and will work on Windows. But the biggest different is that proto is language\\nagnostic and will support multiple languages. To start, it supports Node.js and Deno, but will be\\nexpanded to support our other toolchain languages like Bun, PHP, Ruby, and Python. Another cool\\nfeature is that it also manages versions of dependency managers like npm, yarn, and pnpm!\\n\\nWe\'re planning to launch proto at the start of Q2.\\n\\n## Expanding language support\\n\\nOur initial goal for moon was to provide a first-class build system for the frontend ecosystem that\\nfocused heavily on automation and the developer experience. We believe we\'ve accomplished this goal,\\nbut of course, nothing is ever actually complete, and so JavaScript, TypeScript, and Node.js support\\nwill continually be improved.\\n\\nHowever, that\'s not the entirety of the frontend ecosystem, as [Deno](https://deno.land/) and\\n[Bun](https://bun.sh/) have been gaining traction this past year, and of course, moon will support\\nboth of them as first-class platforms by end of year.\\n\\nFuthermore, we recently landed tier 1 support for 5 new languages: Rust, Ruby, PHP, Python, and Go.\\nOur end of year goal for these languages is to provide full tier 2 support. Tier 3 support is still\\nan unknown, as we need to investigate the best possible way to integrate these languages into the\\ntoolchain (this work is ongoing). We\'ll also add new languages based on demand.\\n\\nWith all that being said, this is our tenative timeline around\\n[language support](/docs#supported-languages) (which may shift at any time):\\n\\n- **Q1**\\n - Tier 1 support for Bun.\\n - Tier 2 support for Deno.\\n- **Q2**\\n - Tier 2 support for Bun, PHP.\\n - Tier 3 support for Deno.\\n- **Q3**\\n - Tier 2 support for Ruby, Python.\\n - Tier 3 support for Bun.\\n- **Q4**\\n - Tier 2 support for Rust, Go.\\n\\n## Supporting release workflows\\n\\nmoon currently excels at organizing projects, running tasks, and building artifacts, but it has no\\nsupport for release workflows. This is everything from capturing changes, bumping versions,\\ngenerating changelogs, and publishing to upstream registries. If you use\\n[Lerna](https://github.com/lerna/lerna) or [changesets](https://github.com/changesets/changesets),\\nyou should be very familiar with this workflow.\\n\\nSince moon supports monorepos and has in-depth knowledge of the project graph, we can support\\nrelease workflows with ease. Our goal is to support this workflow (for all languages) from start to\\nfinish by end of year, ideally much sooner than that!\\n\\n## More repository management tooling\\n\\nThe other aspect of moon is that it\'s a repository management tool as well as a build system. We\\nwant to embrace this even further by providing explicit functionality or automation when applicable.\\nSome examples of this are in-repository secrets management, git hooks management, code ownership and\\nquality tooling, code review helpers, repository/configuration linting, a moon DSL, and much much\\nmore."},{"id":"v0.21","metadata":{"permalink":"/blog/v0.21","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2022-12-19_v0.21.mdx","source":"@site/blog/2022-12-19_v0.21.mdx","title":"moon v0.21 - Tiered language support with initial Go, PHP, Python, Ruby, and Rust","description":"Happy Holidays \ud83c\udf84\u2603\ufe0f! With our last release of the year, we\'re very excited to announce our tiered","date":"2022-12-19T00:00:00.000Z","formattedDate":"December 19, 2022","tags":[{"label":"runner","permalink":"/blog/tags/runner"},{"label":"language","permalink":"/blog/tags/language"},{"label":"platform","permalink":"/blog/tags/platform"},{"label":"cache","permalink":"/blog/tags/cache"},{"label":"graph","permalink":"/blog/tags/graph"}],"readingTime":4.255,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.21","title":"moon v0.21 - Tiered language support with initial Go, PHP, Python, Ruby, and Rust","authors":["milesj"],"tags":["runner","language","platform","cache","graph"],"image":"./img/v0.21.png"},"prevItem":{"title":"What\'s in store for 2023","permalink":"/blog/2023-roadmap"},"nextItem":{"title":"moon v0.20 - Toolchain, caching, and hydration improvements","permalink":"/blog/v0.20"}},"content":"import Label from \'@site/src/ui/typography/Label\';\\nimport Image from \'@site/src/components/Image\';\\n\\nHappy Holidays \ud83c\udf84\u2603\ufe0f! With our last release of the year, we\'re very excited to announce our tiered\\nlanguage support structure, which lays the foundation for turning moon into a multi-language build\\nsystem! On top of this, we\'ve worked heavily on bug fixing, optimizations, and overall quality of\\nlife improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## New tiered language support\\n\\nThe most common question we receive is whether we plan to support additional languages besides\\nNode.js, with Rust, Deno, and Bun being top of that list. Adding new languages is non-trivial, as we\\nneed to build abstractions that support and integrate with the language\'s ecosystem, primarily\\ndependency managers and resolution algorithms.\\n\\nThis is a very large upfront cost, with a huge time and resource commitment. To reduce this burden,\\nwe\'re introducing a tiered support structure, so that languages can be incrementally integrated into\\nmoon and adopted by consumers.\\n\\nThe tiers break down as follows:\\n\\n-  
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.1.html b/blog/moon-v1.1.html index 767312f4413..6bd7d256de7 100644 --- a/blog/moon-v1.1.html +++ b/blog/moon-v1.1.html @@ -13,8 +13,8 @@ - - + +
    @@ -29,7 +29,7 @@ task information by running moon task <target>.

    $ moon task app:build

    This command will display resolved information, including inherited settings, and path resolved inputs and outputs. Here's an example:

    RUNTIME:BUILD

    ID: build
    Project: runtime
    Platform: node
    Type: build

    PROCESS

    Command: packemon build --addFiles --addExports --declaration
    Environment variables:
    - NODE_ENV = production
    Working directory: /Projects/moon/packages/runtime
    Runs dependencies: Concurrently
    Runs in CI: Yes

    DEPENDS ON

    - types:build

    INPUTS

    - .moon/*.yml
    - packages/runtime/src/**/*
    - packages/runtime/tsconfig.*.json
    - packages/runtime/types/**/*
    - packages/runtime/package.json
    - packages/runtime/tsconfig.json
    - tsconfig.options.json

    OUTPUTS

    - packages/runtime/cjs

    Other changes

    View the official release for a full list of changes.

    • Support pnpm v8's new lockfile format.
    • Better handling for task's that execute the moon binary.
    • Updated noop tasks to be cacheable, so that they can be used for cache hit early returns.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.10.html b/blog/moon-v1.10.html index da15fb3ca6f..a8bf73f0b6f 100644 --- a/blog/moon-v1.10.html +++ b/blog/moon-v1.10.html @@ -13,8 +13,8 @@ - - + +
    @@ -53,7 +53,7 @@ use internally to diagnose reported issues, or help the Discord community. We hope you find this guide extremely beneficial!

    Other changes

    View the official release for a full list of changes.

    • Updated moon ci to include a summary of all failed actions.
    • Updated the run report to include stderr/stdout for all attempts.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.11.html b/blog/moon-v1.11.html index b846ee9666d..669fe87350c 100644 --- a/blog/moon-v1.11.html +++ b/blog/moon-v1.11.html @@ -13,8 +13,8 @@ - - + +
    @@ -56,7 +56,7 @@ then those from the system.
    moon.yml
    tasks:
    build:
    command: 'docker build --build-arg pkg=$PKG_NAME'
    env:
    PKG_NAME: 'foo-bar'
    • Project dependencies can now mark relationships as build. This is only applicable for languages that support build dependencies, like Rust.
    moon.yml
    dependsOn:
    - id: 'foo'
    scope: 'build'

    Other changes

    View the official release for a full list of changes.

    • Identifiers (project names, file groups, etc) can now be prefixed with underscores (_).
    • Added Poetry detection support for Python projects.
    • Added an experiments setting to .moon/workspace.yml.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.12.html b/blog/moon-v1.12.html index 27f98956472..9036887fc42 100644 --- a/blog/moon-v1.12.html +++ b/blog/moon-v1.12.html @@ -13,8 +13,8 @@ - - + +
    @@ -45,7 +45,7 @@ variable, like @group(sources), the list of paths will be joined with a comma (,).

    moon.yml
    tasks:
    build:
    # ...
    env:
    SRCS: '@group(sources)'

    Since the environment variable is simply a string, you could parse it with your language of choice to extract the list of paths.

    const paths = process.env.SRCS.split(',');

    Other changes

    View the official release for a full list of changes.

    • Added git worktree support.
    • Updated task outputs to support negated globs.
    • Will now log a warning to the console if a configuration file uses the .yaml extension.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.13.html b/blog/moon-v1.13.html index d46ba359acb..b2679ed84ae 100644 --- a/blog/moon-v1.13.html +++ b/blog/moon-v1.13.html @@ -13,8 +13,8 @@ - - + +
    @@ -44,7 +44,7 @@ that it's side-effect free.

    Other changes

    View the official release for a full list of changes.

    • Added colors to command line --help menus.
    • Updated runner.archivableTargets to support tag scoped targets.
    • Updated moon query tasks --affected to filter based on affected task, instead of affected project.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.14.html b/blog/moon-v1.14.html index e34a35a30d9..7a5daf83aff 100644 --- a/blog/moon-v1.14.html +++ b/blog/moon-v1.14.html @@ -13,8 +13,8 @@ - - + +

    Other changes

    View the official release for a full list of changes.

    • Added packemon, sveltekit, vite, vitest to moonrepo/moon-configs.
    • Updated .moon/tasks to support nested folders, for better organization of task files.
    • Improved handling of certificates and proxies.
    • Updated to proto v0.18.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.15.html b/blog/moon-v1.15.html index f4b83a307e0..9810da5991d 100644 --- a/blog/moon-v1.15.html +++ b/blog/moon-v1.15.html @@ -13,8 +13,8 @@ - - + +
    @@ -60,7 +60,7 @@ NIXPACKS_MOON_BUILD_TASK and NIXPACKS_MOON_START_TASK environment variables.

    info

    This is currently only supported for Node.js projects, but will be expanded to other languages in the future!

    Other changes

    View the official release for a full list of changes.

    • Added a moon action-graph command.
    • Added a --dependents argument to moon action-graph.
    • Added the ability to skip non-RunTask actions using environment variables.
    • Deprecated the moon dep-graph command.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.16.html b/blog/moon-v1.16.html index c1d72ffb423..52d8849608f 100644 --- a/blog/moon-v1.16.html +++ b/blog/moon-v1.16.html @@ -3,7 +3,7 @@ -moon v1.16 - Bun support, Rust improvements, and more! | moonrepo +moon v1.16 - Bun support, Rust improvements, and more! | moonrepo @@ -13,12 +13,12 @@ - - + +
    -

    moon v1.16 - Bun support, Rust improvements, and more!

    · 3 min read
    Miles Johnson

    With this release, we've focused on requests from the community, instead of internal migration work +

    moon v1.16 - Bun support, Rust improvements, and more!

    · 3 min read
    Miles Johnson

    With this release, we've focused on requests from the community, instead of internal migration work or new features.

    Bun as a package manager

    Now that Bun v1 has officially released and our bun-plugin for proto has stabilized, we can start slowly integrating Bun support into moon. The first step in this series is adding Bun as a supported @@ -47,8 +47,8 @@ of changes.

    • Added an improved task inheritance chain resolver. To fallback to the previous behavior, set experiments.interweavedTaskInheritance: false in .moon/workspace.yml.
    • Added a new project type automation, for projects like E2E and integration testing.
    • Updated action graph cycle detection to list all nodes in the cycle (when detectable).
    • Updated all npx calls to use a package manager equivalent. For example: yarn dlx, pnpm dlx, -bunx.
    • Updated to support Yarn v4.
    - - +bunx.
  1. Updated to support Yarn v4.
  2. + + \ No newline at end of file diff --git a/blog/moon-v1.2.html b/blog/moon-v1.2.html index d77b3a45e6d..9666ed69043 100644 --- a/blog/moon-v1.2.html +++ b/blog/moon-v1.2.html @@ -13,8 +13,8 @@ - - + +
    @@ -29,7 +29,7 @@ the official task inheritance docs for more information on tag based inheritance.

    Other changes

    View the official release for a full list of changes.

    • Upgraded to proto v0.6.
    • Improvements to file system operations.
    • Minor improvements to performance.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.3.html b/blog/moon-v1.3.html index 74b7765f1df..a644beba19d 100644 --- a/blog/moon-v1.3.html +++ b/blog/moon-v1.3.html @@ -13,8 +13,8 @@ - - + +
    @@ -33,7 +33,7 @@ enforcing the same version for all developers on your team!

    .prototools
    moon = "1.3.0"

    When using this approach, be sure ~/proto/.bin is in your PATH, and takes precedence over ~/.moon/bin.

    Other changes

    View the official release for a full list of changes.

    • Upgraded to proto v0.7.
    • Improved accuracy of our globbing utilities, especially around dotfiles/dotfolders.
    • Updated config loading to be strict and error on unknown fields for non-root fields.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.4.html b/blog/moon-v1.4.html index dd6f9f61753..b2ed2a811c3 100644 --- a/blog/moon-v1.4.html +++ b/blog/moon-v1.4.html @@ -13,8 +13,8 @@ - - + +
    @@ -34,7 +34,7 @@ instead will now always inherit the package.json name as an alias. For example, if you're package name was @company/utils, you can now run a target like so:

    $ moon run @company/utils:build

    This setting is now a no-op and can be removed from your configuration.

    Other changes

    View the official release for a full list of changes.

    • Upgraded to proto v0.8.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.5.html b/blog/moon-v1.5.html index 951958c61c8..fb49a2d84e2 100644 --- a/blog/moon-v1.5.html +++ b/blog/moon-v1.5.html @@ -13,8 +13,8 @@ - - + +
    @@ -48,7 +48,7 @@ remove the entire target directory, greatly reducing the size of the image. Pruning makes the assumption that it's being ran after a release profile has been built.

    RUN moon run rust-app:build-release
    RUN moon docker prune

    Other changes

    View the official release for a full list of changes.

    - - + + \ No newline at end of file diff --git a/blog/moon-v1.6.html b/blog/moon-v1.6.html index 5826b87f564..b561a8e1881 100644 --- a/blog/moon-v1.6.html +++ b/blog/moon-v1.6.html @@ -13,8 +13,8 @@ - - + +
    @@ -42,7 +42,7 @@ excerpt below, all messages with "log" after the date are the old log crate, while the others with distinct module names are the new tracing crate.

    [DEBUG 14:44:19] moon_process::command_inspector  Running command git status --porcelain --untracked-files -z  env_vars={} working_dir="~/Projects/moon"
    [DEBUG 14:44:19] log Filtering based on touched status "all" log.target="moon:query:touched-files" log.module_path="moon_cli::queries::touched_files" log.file="crates/cli/src/queries/touched_files.rs" log.line=85
    [DEBUG 14:44:19] log Creating dependency graph log.target="moon:dep-graph" log.module_path="moon_dep_graph::dep_builder" log.file="crates/core/dep-graph/src/dep_builder.rs" log.line=35
    [DEBUG 14:44:19] log Running 32 actions across 5 batches log.target="moon:action-pipeline" log.module_path="moon_action_pipeline::pipeline" log.file="crates/core/action-pipeline/src/pipeline.rs" log.line=93
    [DEBUG 14:44:19] log Setting up Node.js 20.0.0 toolchain log.target="moon:action:setup-tool" log.module_path="moon_action_pipeline::actions::setup_tool" log.file="crates/core/action-pipeline/src/actions/setup_tool.rs" log.line=26
    [DEBUG 14:44:19] proto_node::resolve Resolving a semantic version for "20.0.0"
    [DEBUG 14:44:19] proto_core::resolver:load_versions_manifest Loading versions manifest from local cache cache_file=~/.proto/temp/3d16d1693e83828f98bae178f181d5a01103b7f222db27cdeaec9b4950e951d7.json

    Other changes

    View the official release for a full list of changes.

    • Updated long running processes to log a checkpoint indicating it's still running.
    • Reworked file groups to use workspace relative paths, instead of project relative.
    • Reworked processes to better handle command line arguments, shells, and piped stdin input.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.7.html b/blog/moon-v1.7.html index 05ed982cd00..169deb1790b 100644 --- a/blog/moon-v1.7.html +++ b/blog/moon-v1.7.html @@ -13,8 +13,8 @@ - - + +
    @@ -38,7 +38,7 @@ Rust crate, miette.

    We've introduced this crate to handle all errors and diagnostics within moon, not just configuration. So expect a much better developer experience moving forward!

    Other changes

    View the official release for a full list of changes.

    • Added support for npm lockfile v3 format.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.8.html b/blog/moon-v1.8.html index 7f26190f4c7..2a41a24000a 100644 --- a/blog/moon-v1.8.html +++ b/blog/moon-v1.8.html @@ -13,8 +13,8 @@ - - + +
    @@ -51,7 +51,7 @@ can inherit tasks from a remote source, and then extend or override them as needed. For example, create the tag-based config:

    .moon/tasks/tag-rust.yml
    extends: 'https://raw.githubusercontent.com/moonrepo/moon-configs/master/rust/tasks-workspace.yml'

    And then in Rust projects that you'd like to inherit these tasks, add the following tags:

    <project>/moon.yml
    tags: ['rust']

    It's as simple as that!

    Other changes

    View the official release for a full list of changes.

    • Added a new action to the graph, SyncWorkspace, that'll be used for workspace-level checks.
    • Added MOON_OUTPUT_STYLE and MOON_RETRY_COUNT environment variables.
    - - + + \ No newline at end of file diff --git a/blog/moon-v1.9.html b/blog/moon-v1.9.html index 748e7607f42..aa691db81a9 100644 --- a/blog/moon-v1.9.html +++ b/blog/moon-v1.9.html @@ -13,8 +13,8 @@ - - + +
    @@ -47,7 +47,7 @@ it's either a bug/edge case that was rectified (and is no longer allowed), or a bug/edge case not accounted for in our current unit test suite. Please report them either way!

    Other changes

    View the official release for a full list of changes.

    • Added --clean and --force flags to moon sync codeowners command.
    • Updated moon init to detect VCS providers and resolve fully-qualified tool versions.
    • Improved VCS file handling, caching, and performance.
    - - + + \ No newline at end of file diff --git a/blog/moonbase.html b/blog/moonbase.html index 030f7cb269e..c9485d15e5d 100644 --- a/blog/moonbase.html +++ b/blog/moonbase.html @@ -13,8 +13,8 @@ - - + +
    @@ -36,7 +36,7 @@ moon and moonbase. This includes new logos and typography, which we're very excited for! This is only the beginning, as we're also working on additional behind the scenes products. Stay tuned!

    - - + + \ No newline at end of file diff --git a/blog/page/2.html b/blog/page/2.html index 93f1bb54d35..3a3316994c0 100644 --- a/blog/page/2.html +++ b/blog/page/2.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ experience improvements.

    - - + + \ No newline at end of file diff --git a/blog/page/3.html b/blog/page/3.html index 6b3a379c822..c08c7fe77e3 100644 --- a/blog/page/3.html +++ b/blog/page/3.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ tasks.

    - - + + \ No newline at end of file diff --git a/blog/page/4.html b/blog/page/4.html index f52d33966aa..3dfc180a50e 100644 --- a/blog/page/4.html +++ b/blog/page/4.html @@ -13,8 +13,8 @@ - - + +
    @@ -26,7 +26,7 @@ of your favorite programming languages.

    - - + + \ No newline at end of file diff --git a/blog/page/5.html b/blog/page/5.html index abac365692a..d288cc2a8e1 100644 --- a/blog/page/5.html +++ b/blog/page/5.html @@ -13,8 +13,8 @@ - - + +
    @@ -32,7 +32,7 @@ benchmarking performance metrics, so it's rather light on new features, but we still have some to show!

    - - + + \ No newline at end of file diff --git a/blog/page/6.html b/blog/page/6.html index 21704d7cd62..7ec8eda55e3 100644 --- a/blog/page/6.html +++ b/blog/page/6.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ launch. A code generation and template scaffolding layer, as well as implicit dependency scanning for the project graph!

    - - + + \ No newline at end of file diff --git a/blog/proto-v0.11.html b/blog/proto-v0.11.html index 3ad40e9cf3a..834b36f2ecf 100644 --- a/blog/proto-v0.11.html +++ b/blog/proto-v0.11.html @@ -13,8 +13,8 @@ - - + +
    @@ -28,7 +28,7 @@ now support a global --log option, which can be passed to any proto command.

    $ proto install node --log trace

    On top of this, we also ran an audit of all our log calls, to improve messaging, include additional information, rework applicable levels, and more. They should be far more readable!

    Other changes

    View the official release for a full list of changes.

    - - + + \ No newline at end of file diff --git a/blog/proto-v0.12.html b/blog/proto-v0.12.html index 7ebfcd5c5ec..6a056d49c80 100644 --- a/blog/proto-v0.12.html +++ b/blog/proto-v0.12.html @@ -13,8 +13,8 @@ - - + +
    @@ -33,7 +33,7 @@ plugins, here's an example function that defines parameters for downloading and installing Node.js. This is written in Rust and using Extism's official PDK.

    #[plugin_fn]
    pub fn download_prebuilt(
    Json(input): Json<DownloadPrebuiltInput>,
    ) -> FnResult<Json<DownloadPrebuiltOutput>> {
    let version = input.env.version;
    let arch = input.env.arch;

    let prefix = match input.env.os {
    HostOS::Linux => format!("node-v{version}-linux-{arch}"),
    HostOS::MacOS => format!("node-v{version}-darwin-{arch}"),
    HostOS::Windows => format!("node-v{version}-win-{arch}"),
    other => {
    return Err(PluginError::UnsupportedPlatform {
    tool: NAME.into(),
    platform: format!("{:?}", other),
    })?;
    }
    };

    let filename = if input.env.os == HostOS::Windows {
    format!("{prefix}.zip")
    } else {
    format!("{prefix}.tar.xz")
    };

    Ok(Json(DownloadPrebuiltOutput {
    archive_prefix: Some(prefix),
    download_url: format!("https://nodejs.org/dist/v{version}/{filename}"),
    download_name: Some(filename),
    checksum_url: Some(format!("https://nodejs.org/dist/v{version}/SHASUMS256.txt")),
    ..DownloadPrebuiltOutput::default()
    }))
    }

    Other changes

    View the official release for a full list of changes.

    - - + + \ No newline at end of file diff --git a/blog/proto-v0.13.html b/blog/proto-v0.13.html index 4878d26bb00..d5036ba5026 100644 --- a/blog/proto-v0.13.html +++ b/blog/proto-v0.13.html @@ -13,8 +13,8 @@ - - + +
    @@ -39,7 +39,7 @@ ~/.proto/config.toml.

    $ proto plugins
    bun - Bun
    GitHub: moonrepo/bun-plugin
    Tag: latest

    deno - Deno
    GitHub: moonrepo/deno-plugin
    Tag: latest

    go - Go
    GitHub: moonrepo/go-plugin
    Tag: latest

    Learn more about this new command!

    Other changes

    View the official release for a full list of changes.

    • Added documentation for writing unit tests for WASM plugins.
    • Updated proto clean and proto use to load and merge all .prototools from the current directory and upwards.
    • Many WASM API improvements.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.14.html b/blog/proto-v0.14.html index 67a57c54ed1..2ea973740c0 100644 --- a/blog/proto-v0.14.html +++ b/blog/proto-v0.14.html @@ -13,8 +13,8 @@ - - + +
    @@ -33,7 +33,7 @@ smart enough to unpack or move files automatically.

    Other changes

    View the official release for a full list of changes.

    • Versions defined in .prototools must be fully-qualified semantic versions. Partial versions (missing patch or minor) are no longer supported. This may change in the future based on feedback.
    • Tool and plugin names must now be in kebab-case.
    • Node
      • Yarn 2+ is now installed using @yarnpkg/cli-dist. We no longer downgrade to the latest v1.
      • Will no longer detect a version from engines in package.json.
    • Rust
      • Will now detect a version/channel from rust-toolchain.toml and rust-toolchain.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.15.html b/blog/proto-v0.15.html index 65d8fbceeba..4f7aacb5dcd 100644 --- a/blog/proto-v0.15.html +++ b/blog/proto-v0.15.html @@ -13,8 +13,8 @@ - - + +
    @@ -31,7 +31,7 @@ is soon), and with this, it requires more documentation. As part of this release, we've done a giant polish pass on our WASM documentation, and have included the following sections:

    Other changes

    View the official release for a full list of changes.

    • Major WASM API improvements, including backwards incompatible changes.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.16.html b/blog/proto-v0.16.html index 9b09a259016..36c231f93c1 100644 --- a/blog/proto-v0.16.html +++ b/blog/proto-v0.16.html @@ -13,8 +13,8 @@ - - + +
    @@ -32,7 +32,7 @@ tool, its manifest, all installed versions, and the entire ~/.proto/tools/<id> directory.

    # Delete all traces of Node.js
    $ proto clean --purge node

    Additionaly, a new --purge-plugins option can be used to delete all downloaded plugins (the ~/.proto/plugins directory). Useful for house keeping or if you want to start fresh.

    $ proto clean --purge-plugins

    Other changes

    View the official release for a full list of changes.

    • Added folder locking during tool installation to avoid colliding processes.
    • Renamed PROTO_ROOT to PROTO_HOME, but we'll support PROTO_ROOT for the time being.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.17.html b/blog/proto-v0.17.html index f32a532474e..28ef3ac6dcf 100644 --- a/blog/proto-v0.17.html +++ b/blog/proto-v0.17.html @@ -13,8 +13,8 @@ - - + +
    @@ -40,7 +40,7 @@ release can be used. Re-installing with --canary will overwrite the previous canary installation.

    However, because we detect a version to run with at runtime, how should you actually run canary? The easiest way is to prefix the shim with an environment variable:

    $ PROTO_BUN_VERSION=canary bun ./index.ts

    Or to explicitly configure the version in .prototools:

    bun = "canary"

    Other changes

    View the official release for a full list of changes.

    • Added colors to command line --help menus.
    • Updated the following locations to support partial versions and aliases:
      • Tool versions in .prototools.
      • Pinning a default version with proto install --pin.
      • Setting global version with proto global.
      • Setting local version with proto local.
    • Node, npm, pnpm, and yarn will again extract a version from package.json engines.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.18.html b/blog/proto-v0.18.html index c45f1ab09f9..ac54d29e1a8 100644 --- a/blog/proto-v0.18.html +++ b/blog/proto-v0.18.html @@ -13,8 +13,8 @@ - - + +
    @@ -33,7 +33,7 @@ for showcasing tools maintained by the community!

    Other changes

    View the official release for a full list of changes.

    • For TOML plugins, we updated the schema internally to be represented as JSON instead of TOML, which may cause breakages depending on a version mismatch between proto and the plugin.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.19.html b/blog/proto-v0.19.html index 81de6b3e13e..cc287cdce3a 100644 --- a/blog/proto-v0.19.html +++ b/blog/proto-v0.19.html @@ -13,8 +13,8 @@ - - + +
    @@ -35,7 +35,7 @@ configured in the closest .prototools file. Very handy for keeping your tools up to date.

    $ proto outdated

    go - current version 1.20.2 (via ~1.20), newer version 1.20.8, update available!
    node - current version 20.7.0 (via 20.7.0), latest version 20.8.0, update available!

    Other changes

    View the official release for a full list of changes.

    • Added PROTO_WASM_LOG environment variable to toggle the logging of messages from Extism and WASM plugins. Useful for debugging.
    • Updated proto install to auto-clean stale plugins after a successful installation.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.20.html b/blog/proto-v0.20.html index 95e3f7af470..a484fa9fd79 100644 --- a/blog/proto-v0.20.html +++ b/blog/proto-v0.20.html @@ -13,8 +13,8 @@ - - + +
    @@ -39,7 +39,7 @@ checksum verification!

    [install]
    checksum-url = "https://domain.com/some/path/to/checksum.minisig"
    checksum-public-key = "untrusted comment: ..."

    Other changes

    View the official release for a full list of changes.

    • Updated proto use to install tools in parallel.
    • Updated proto plugins and proto tools to load plugins in parallel.
    • Updated proto run to error when the tool attempts to self-upgrade outside of proto.
    • Rust plugin
      • Will now attempt to install rustup if it does not exist on the current machine.
      • Will now respect the RUSTUP_HOME environment variable when locating the .rustup store.
    • Schema plugin
      • Added install.checksum_public_key for defining the public key used to verify checksums.
      • Added metadata.self_upgrade_commands for defining which sub-commands should be blocked for self-upgrades.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.21.html b/blog/proto-v0.21.html index d5e90563c5a..9a1e74ad9bd 100644 --- a/blog/proto-v0.21.html +++ b/blog/proto-v0.21.html @@ -13,8 +13,8 @@ - - + +
    @@ -27,7 +27,7 @@ of changes.

    • Improved file and directory locking. Will now work correctly across processes and signals, especially for those killed/dropped.
    • Updated WASM functions to use explicit Rust enum types for versions to properly handle all variations (version, alias, requirement, range).
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.3.html b/blog/proto-v0.3.html index a4ae9bd6a4f..ae6d25d9b92 100644 --- a/blog/proto-v0.3.html +++ b/blog/proto-v0.3.html @@ -13,8 +13,8 @@ - - + +
    @@ -31,7 +31,7 @@ result in far too many local installs as that satisfied version constantly changed.

    Instead, we now satisfy the version requirement based on versions that have been installed locally to ~/.proto/tools. If no version matches, detection will simply move on to the next case, and eventually fallback to the global default version.

    - - + + \ No newline at end of file diff --git a/blog/proto-v0.4.html b/blog/proto-v0.4.html index 328cd9be9b8..960dce69e73 100644 --- a/blog/proto-v0.4.html +++ b/blog/proto-v0.4.html @@ -13,8 +13,8 @@ - - + +
    @@ -31,7 +31,7 @@ will automatically install a missing tool for the detected version when running proto run (or a shim).

    New proto upgrade command

    We now provide a proto upgrade command for upgrading proto itself. This will download the latest version and replace the binary at ~/.proto/bin/proto.

    $ proto upgrade
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.5.html b/blog/proto-v0.5.html index e6ee151233a..bf7bd9cdbc3 100644 --- a/blog/proto-v0.5.html +++ b/blog/proto-v0.5.html @@ -13,8 +13,8 @@ - - + +
    @@ -34,7 +34,7 @@ Aliasing of versions is a feature that allows you to assign a custom name or label to a specific version of a tool.

    For example, instead of using the version number, you can assign a label such as "work" or "personal" to a version. This makes it easier to remember and manage different versions.

    $ proto alias node work 16.16
    $ proto alias node personal 18

    Aliases can be used anywhere a version is accepted, for example:

    $ proto bin node work
    $ proto install node personal
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.6.html b/blog/proto-v0.6.html index 491192a558b..17c29f3fd8a 100644 --- a/blog/proto-v0.6.html +++ b/blog/proto-v0.6.html @@ -13,8 +13,8 @@ - - + +
    @@ -41,7 +41,7 @@ Starbase, which will be the new foundation for proto and moon moving forward. One of the major benefits of this new architecture is a rewritten error system that provides more context and better error messages.

    Here's an example of this, albeit with a contrived situation:

    - - + + \ No newline at end of file diff --git a/blog/proto-v0.7.html b/blog/proto-v0.7.html index beec03180f2..cc0b267cba1 100644 --- a/blog/proto-v0.7.html +++ b/blog/proto-v0.7.html @@ -13,8 +13,8 @@ - - + +
    @@ -37,7 +37,7 @@ improvements to the cleaning process:

    • Added a --yes option to proto clean, allowing prompts to be bypassed.
    • Added a auto-clean setting to ~/.proto/config.toml, enabling automatic cleaning when proto use is ran.
    - - + + \ No newline at end of file diff --git a/blog/proto-v0.8.html b/blog/proto-v0.8.html index 07b7befa882..88a044b8529 100644 --- a/blog/proto-v0.8.html +++ b/blog/proto-v0.8.html @@ -13,8 +13,8 @@ - - + +
    @@ -33,7 +33,7 @@ versions first when encountering a partial version. This solves the problem above by allowing 1.2.3 to satisfy the requirement, instead of forcing an install of 1.2.4.

    Other changes

    View the official release for a full list of changes.

    - - + + \ No newline at end of file diff --git a/blog/proto-v0.9.html b/blog/proto-v0.9.html index d33c8636e08..e7140bdccf8 100644 --- a/blog/proto-v0.9.html +++ b/blog/proto-v0.9.html @@ -13,8 +13,8 @@ - - + +
    @@ -34,7 +34,7 @@ instead of Node.js... for some reason.

    With that being said, this is currently experimental, as we haven't tested it thoroughly, and are unaware of all the possible edge cases. So keep that in mind!

    Other changes

    View the official release for a full list of changes.

    - - + + \ No newline at end of file diff --git a/blog/proto.html b/blog/proto.html index 811d3d35797..4548d8663c0 100644 --- a/blog/proto.html +++ b/blog/proto.html @@ -13,8 +13,8 @@ - - + +
    @@ -33,7 +33,7 @@ proto out into a standalone Rust CLI and Rust crates that moon inherits.

    Furthermore, we believe that requiring multiple ad-hoc version managers for all your languages, each with different workflows, CLI commands, and configuration files, is a poor developer experience.

    Our goal is to unify all of these into a single performant interface. A toolchain manager is the next step in the version manager evolution.

    - - + + \ No newline at end of file diff --git a/blog/rss.xml b/blog/rss.xml index 6aa90389d79..12d8b2e4f00 100644 --- a/blog/rss.xml +++ b/blog/rss.xml @@ -47,6 +47,9 @@ integration testing.
  3. Updated action graph cycle detection to list all no bun rust toolchain + automation + package + manager <![CDATA[proto v0.21 - Linux x64 musl support]]> diff --git a/blog/tags.html b/blog/tags.html index 2bfc98416c1..466126f4c41 100644 --- a/blog/tags.html +++ b/blog/tags.html @@ -13,13 +13,13 @@ - - + +
    -
    - - + + + \ No newline at end of file diff --git a/blog/tags/action.html b/blog/tags/action.html index 6fc06084692..046609eb950 100644 --- a/blog/tags/action.html +++ b/blog/tags/action.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "action"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/affected.html b/blog/tags/affected.html index 5436e87a2aa..bde110e2b9c 100644 --- a/blog/tags/affected.html +++ b/blog/tags/affected.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "affected"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/alias.html b/blog/tags/alias.html index 45d9b4823ee..910a1583cac 100644 --- a/blog/tags/alias.html +++ b/blog/tags/alias.html @@ -13,13 +13,13 @@ - - + +
    - - + + \ No newline at end of file diff --git a/blog/tags/automation.html b/blog/tags/automation.html new file mode 100644 index 00000000000..1bcd082b607 --- /dev/null +++ b/blog/tags/automation.html @@ -0,0 +1,26 @@ + + + + + +One post tagged with "automation" | moonrepo + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/tags/bin.html b/blog/tags/bin.html index 3ea37dfebca..c0283a5132a 100644 --- a/blog/tags/bin.html +++ b/blog/tags/bin.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/bun.html b/blog/tags/bun.html index 32208e0ca7a..5bc3df95ae7 100644 --- a/blog/tags/bun.html +++ b/blog/tags/bun.html @@ -13,14 +13,14 @@ - - + +
    -
    - - + + + \ No newline at end of file diff --git a/blog/tags/cache.html b/blog/tags/cache.html index 51902d72a49..6a2a861406b 100644 --- a/blog/tags/cache.html +++ b/blog/tags/cache.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ language support structure, which lays the foundation for turning moon into a multi-language build system! On top of this, we've worked heavily on bug fixing, optimizations, and overall quality of life improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/canary.html b/blog/tags/canary.html index dd0d3948771..c6d64ebf4fe 100644 --- a/blog/tags/canary.html +++ b/blog/tags/canary.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/checksum.html b/blog/tags/checksum.html index 6a211633a84..9c2299b092f 100644 --- a/blog/tags/checksum.html +++ b/blog/tags/checksum.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/ci.html b/blog/tags/ci.html index 701807760df..b547eb58600 100644 --- a/blog/tags/ci.html +++ b/blog/tags/ci.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ experience improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/clean.html b/blog/tags/clean.html index df5f0058d77..3e47dcd2cfc 100644 --- a/blog/tags/clean.html +++ b/blog/tags/clean.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/code.html b/blog/tags/code.html index 3503d59ea5c..fca4460638d 100644 --- a/blog/tags/code.html +++ b/blog/tags/code.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "code"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/config.html b/blog/tags/config.html index 2156f15abd7..9c4cdd663af 100644 --- a/blog/tags/config.html +++ b/blog/tags/config.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ benchmarking performance metrics, so it's rather light on new features, but we still have some to show!

    - - + + \ No newline at end of file diff --git a/blog/tags/constraints.html b/blog/tags/constraints.html index e0b35a26966..7f93bffc585 100644 --- a/blog/tags/constraints.html +++ b/blog/tags/constraints.html @@ -13,15 +13,15 @@ - - + +

    One post tagged with "constraints"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/debug.html b/blog/tags/debug.html index 9dcb34c60bc..e7a47c0a0ac 100644 --- a/blog/tags/debug.html +++ b/blog/tags/debug.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/deno.html b/blog/tags/deno.html index c593bcfb482..5cd6850bdb6 100644 --- a/blog/tags/deno.html +++ b/blog/tags/deno.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/dep-graph.html b/blog/tags/dep-graph.html index 06ba0e6a770..e5eb87288d0 100644 --- a/blog/tags/dep-graph.html +++ b/blog/tags/dep-graph.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "dep-graph"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/dependency.html b/blog/tags/dependency.html index 699ccfff80a..bcd120d5a15 100644 --- a/blog/tags/dependency.html +++ b/blog/tags/dependency.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/detect.html b/blog/tags/detect.html index 45357503b9e..59e9cea4a25 100644 --- a/blog/tags/detect.html +++ b/blog/tags/detect.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/docker.html b/blog/tags/docker.html index 92589d1bb88..4a0eeb839f2 100644 --- a/blog/tags/docker.html +++ b/blog/tags/docker.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "docker"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/editors.html b/blog/tags/editors.html index 6f2a6cb9f4f..8b0130faf33 100644 --- a/blog/tags/editors.html +++ b/blog/tags/editors.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "editors"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/env-vars.html b/blog/tags/env-vars.html index 056030ccdf4..ecf84bbbeca 100644 --- a/blog/tags/env-vars.html +++ b/blog/tags/env-vars.html @@ -13,15 +13,15 @@ - - + +

    One post tagged with "env-vars"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/errors.html b/blog/tags/errors.html index a48986be705..b1dd6ec6515 100644 --- a/blog/tags/errors.html +++ b/blog/tags/errors.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "errors"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/generator.html b/blog/tags/generator.html index d31e81f6bd3..cc8e214f90a 100644 --- a/blog/tags/generator.html +++ b/blog/tags/generator.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ workflow, as well as some minor quality of life improvements for template files and run reports.

    - - + + \ No newline at end of file diff --git a/blog/tags/git.html b/blog/tags/git.html index bef60fb020a..aeeb207404b 100644 --- a/blog/tags/git.html +++ b/blog/tags/git.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/github.html b/blog/tags/github.html index a4106be8266..0eb5e39e5d9 100644 --- a/blog/tags/github.html +++ b/blog/tags/github.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "github"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/global.html b/blog/tags/global.html index a6094bbd380..4b86479901e 100644 --- a/blog/tags/global.html +++ b/blog/tags/global.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "global"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/globals.html b/blog/tags/globals.html index 6a9538638fe..20e5a1ab56d 100644 --- a/blog/tags/globals.html +++ b/blog/tags/globals.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "globals"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/go.html b/blog/tags/go.html index c59ae3941e7..ca4e7bde51b 100644 --- a/blog/tags/go.html +++ b/blog/tags/go.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/graph.html b/blog/tags/graph.html index 1fb8e5cbb4a..c092d24cd4f 100644 --- a/blog/tags/graph.html +++ b/blog/tags/graph.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ language support structure, which lays the foundation for turning moon into a multi-language build system! On top of this, we've worked heavily on bug fixing, optimizations, and overall quality of life improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/hash.html b/blog/tags/hash.html index bbdcc21dcf7..40d32dbc677 100644 --- a/blog/tags/hash.html +++ b/blog/tags/hash.html @@ -13,14 +13,14 @@ - - + +
    - - + + \ No newline at end of file diff --git a/blog/tags/hasher.html b/blog/tags/hasher.html index 5440c09ef7c..2b48996aa72 100644 --- a/blog/tags/hasher.html +++ b/blog/tags/hasher.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ experience improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/hooks.html b/blog/tags/hooks.html index 1ac80d7cb5e..07412b6f04f 100644 --- a/blog/tags/hooks.html +++ b/blog/tags/hooks.html @@ -13,14 +13,14 @@ - - + +
    - - + + \ No newline at end of file diff --git a/blog/tags/http.html b/blog/tags/http.html index abc98793f82..b21790b6a89 100644 --- a/blog/tags/http.html +++ b/blog/tags/http.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/hydration.html b/blog/tags/hydration.html index 4fa9bdd6f88..d67a3d6f0dc 100644 --- a/blog/tags/hydration.html +++ b/blog/tags/hydration.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "hydration"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/ignore.html b/blog/tags/ignore.html index 502944552cf..19c14adcdab 100644 --- a/blog/tags/ignore.html +++ b/blog/tags/ignore.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/index.html b/blog/tags/index.html index f533f2a004b..c5b559b3258 100644 --- a/blog/tags/index.html +++ b/blog/tags/index.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/inheritance.html b/blog/tags/inheritance.html index 0242c6af9b6..e37f50c2233 100644 --- a/blog/tags/inheritance.html +++ b/blog/tags/inheritance.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "inheritance"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/init.html b/blog/tags/init.html index 47d4a7a98b0..0733e9e63a2 100644 --- a/blog/tags/init.html +++ b/blog/tags/init.html @@ -13,15 +13,15 @@ - - + +

    One post tagged with "init"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/lang.html b/blog/tags/lang.html index e376e99c7ad..a0682c674eb 100644 --- a/blog/tags/lang.html +++ b/blog/tags/lang.html @@ -13,14 +13,14 @@ - - + +

    3 posts tagged with "lang"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/language.html b/blog/tags/language.html index c3a7c1db1e3..700dd6defcb 100644 --- a/blog/tags/language.html +++ b/blog/tags/language.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ language support structure, which lays the foundation for turning moon into a multi-language build system! On top of this, we've worked heavily on bug fixing, optimizations, and overall quality of life improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/life.html b/blog/tags/life.html index 8bcd6137a5d..b2c9367fdac 100644 --- a/blog/tags/life.html +++ b/blog/tags/life.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/linux.html b/blog/tags/linux.html index 1541f7f5054..85667794854 100644 --- a/blog/tags/linux.html +++ b/blog/tags/linux.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/local.html b/blog/tags/local.html index 36511c54bae..205328e4e97 100644 --- a/blog/tags/local.html +++ b/blog/tags/local.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/log.html b/blog/tags/log.html index 55c656d9012..6adf59eba02 100644 --- a/blog/tags/log.html +++ b/blog/tags/log.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/logging.html b/blog/tags/logging.html index 88d175a2c09..0b488e128a4 100644 --- a/blog/tags/logging.html +++ b/blog/tags/logging.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/manager.html b/blog/tags/manager.html new file mode 100644 index 00000000000..c20df2ac239 --- /dev/null +++ b/blog/tags/manager.html @@ -0,0 +1,26 @@ + + + + + +One post tagged with "manager" | moonrepo + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/tags/migrate.html b/blog/tags/migrate.html index 0aa6840bed5..7b2fbb3fd75 100644 --- a/blog/tags/migrate.html +++ b/blog/tags/migrate.html @@ -13,14 +13,14 @@ - - + +
    - - + + \ No newline at end of file diff --git a/blog/tags/monorepo.html b/blog/tags/monorepo.html index 8f7083d431c..710d4fda9a6 100644 --- a/blog/tags/monorepo.html +++ b/blog/tags/monorepo.html @@ -13,15 +13,15 @@ - - + +

    One post tagged with "monorepo"

    View All Tags

    · One min read
    Miles Johnson

    A common question in the JavaScript ecosystem is how to integrate TypeScript in a monorepo. This is a fair question, as there's no in-depth source of truth, or one perfect way of doing it. However, we took it upon ourselves to answer this question!

    - - + + \ No newline at end of file diff --git a/blog/tags/moonbase.html b/blog/tags/moonbase.html index 8b9f42fe2c2..fd23cc69c78 100644 --- a/blog/tags/moonbase.html +++ b/blog/tags/moonbase.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ interoperability of languages as a whole.

    - - + + \ No newline at end of file diff --git a/blog/tags/musl.html b/blog/tags/musl.html index 0459449a28a..753b7321369 100644 --- a/blog/tags/musl.html +++ b/blog/tags/musl.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/node.html b/blog/tags/node.html index 95489969072..1898b1ff980 100644 --- a/blog/tags/node.html +++ b/blog/tags/node.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ benchmarking performance metrics, so it's rather light on new features, but we still have some to show!

    - - + + \ No newline at end of file diff --git a/blog/tags/notifier.html b/blog/tags/notifier.html index 118d627d258..44490ebb3e8 100644 --- a/blog/tags/notifier.html +++ b/blog/tags/notifier.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "notifier"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/npm.html b/blog/tags/npm.html index e545808be2f..3994ba982a2 100644 --- a/blog/tags/npm.html +++ b/blog/tags/npm.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/offline.html b/blog/tags/offline.html index 870dc5254eb..b357acf34fb 100644 --- a/blog/tags/offline.html +++ b/blog/tags/offline.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/outdated.html b/blog/tags/outdated.html index a8ba73cdeba..b00b5b93e53 100644 --- a/blog/tags/outdated.html +++ b/blog/tags/outdated.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/owners.html b/blog/tags/owners.html index 0e6a1052d2b..d6edb9b53eb 100644 --- a/blog/tags/owners.html +++ b/blog/tags/owners.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "owners"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/ownership.html b/blog/tags/ownership.html index 05f38fc7a6b..00885a5e017 100644 --- a/blog/tags/ownership.html +++ b/blog/tags/ownership.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "ownership"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/package.html b/blog/tags/package.html new file mode 100644 index 00000000000..73f6ab02ee4 --- /dev/null +++ b/blog/tags/package.html @@ -0,0 +1,26 @@ + + + + + +One post tagged with "package" | moonrepo + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/blog/tags/pin.html b/blog/tags/pin.html index cc2eeaab00e..84c610682a9 100644 --- a/blog/tags/pin.html +++ b/blog/tags/pin.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/pipeline.html b/blog/tags/pipeline.html index 3659ec01440..1dd93f8327e 100644 --- a/blog/tags/pipeline.html +++ b/blog/tags/pipeline.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "pipeline"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/platform.html b/blog/tags/platform.html index 83235399d4d..06994277137 100644 --- a/blog/tags/platform.html +++ b/blog/tags/platform.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ language support structure, which lays the foundation for turning moon into a multi-language build system! On top of this, we've worked heavily on bug fixing, optimizations, and overall quality of life improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/plugin.html b/blog/tags/plugin.html index ea2d002d378..cd7730b973f 100644 --- a/blog/tags/plugin.html +++ b/blog/tags/plugin.html @@ -13,13 +13,13 @@ - - + +

    6 posts tagged with "plugin"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/plugins.html b/blog/tags/plugins.html index 7ef6eff5089..e4681534c7e 100644 --- a/blog/tags/plugins.html +++ b/blog/tags/plugins.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/project-graph.html b/blog/tags/project-graph.html index 20e63c3763d..8958595ee43 100644 --- a/blog/tags/project-graph.html +++ b/blog/tags/project-graph.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ moon.

    - - + + \ No newline at end of file diff --git a/blog/tags/project.html b/blog/tags/project.html index eca288cb6ba..0a9d783e7f7 100644 --- a/blog/tags/project.html +++ b/blog/tags/project.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ moon.

    - - + + \ No newline at end of file diff --git a/blog/tags/projects.html b/blog/tags/projects.html index a34da8617da..b463ac9510f 100644 --- a/blog/tags/projects.html +++ b/blog/tags/projects.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ officially reached a stable v1 of moon! This release is feature packed with quality of life improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/proto.html b/blog/tags/proto.html index 8a256238ea0..c4293d947ad 100644 --- a/blog/tags/proto.html +++ b/blog/tags/proto.html @@ -13,14 +13,14 @@ - - + +

    23 posts tagged with "proto"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/proto/page/2.html b/blog/tags/proto/page/2.html index 372aa194f2e..cccedcbc169 100644 --- a/blog/tags/proto/page/2.html +++ b/blog/tags/proto/page/2.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ language!

    - - + + \ No newline at end of file diff --git a/blog/tags/proto/page/3.html b/blog/tags/proto/page/3.html index e449a858217..a48cc53abe1 100644 --- a/blog/tags/proto/page/3.html +++ b/blog/tags/proto/page/3.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ manager, better Docker support, and new query commands for debugging.

    - - + + \ No newline at end of file diff --git a/blog/tags/python.html b/blog/tags/python.html index 4270ffa702c..f60fbfc7580 100644 --- a/blog/tags/python.html +++ b/blog/tags/python.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/qol.html b/blog/tags/qol.html index 74f3a616c6a..211423d5488 100644 --- a/blog/tags/qol.html +++ b/blog/tags/qol.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/quality.html b/blog/tags/quality.html index 2dc31b98f3a..ab8a5be10f9 100644 --- a/blog/tags/quality.html +++ b/blog/tags/quality.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/query.html b/blog/tags/query.html index 0707501bfe4..2245fc7f82d 100644 --- a/blog/tags/query.html +++ b/blog/tags/query.html @@ -13,15 +13,15 @@ - - + +

    3 posts tagged with "query"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/railway.html b/blog/tags/railway.html index 1706f629cfd..ccd56fb0d66 100644 --- a/blog/tags/railway.html +++ b/blog/tags/railway.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/registry.html b/blog/tags/registry.html index 994a7c19ebd..ca78d9d4d06 100644 --- a/blog/tags/registry.html +++ b/blog/tags/registry.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/remote-cache.html b/blog/tags/remote-cache.html index a0a56e031c7..daddbe238d4 100644 --- a/blog/tags/remote-cache.html +++ b/blog/tags/remote-cache.html @@ -13,15 +13,15 @@ - - + +

    3 posts tagged with "remote-cache"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/rfc.html b/blog/tags/rfc.html index 68b56f4941f..8bdd4b5573e 100644 --- a/blog/tags/rfc.html +++ b/blog/tags/rfc.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/roadmap.html b/blog/tags/roadmap.html index 0166e136083..75807657723 100644 --- a/blog/tags/roadmap.html +++ b/blog/tags/roadmap.html @@ -13,14 +13,14 @@ - - + +
    - - + + \ No newline at end of file diff --git a/blog/tags/run.html b/blog/tags/run.html index d2ba7ba6df1..c3ef9a88c43 100644 --- a/blog/tags/run.html +++ b/blog/tags/run.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/runner.html b/blog/tags/runner.html index e84488e351e..ea97294f39e 100644 --- a/blog/tags/runner.html +++ b/blog/tags/runner.html @@ -13,8 +13,8 @@ - - + +
    @@ -25,7 +25,7 @@ moon. We've also landed a handful of quality of life improvements.

    - - + + \ No newline at end of file diff --git a/blog/tags/rust.html b/blog/tags/rust.html index 8d14a351afc..94d53d83350 100644 --- a/blog/tags/rust.html +++ b/blog/tags/rust.html @@ -13,14 +13,14 @@ - - + +
    -

    3 posts tagged with "rust"

    View All Tags
    - - +

    3 posts tagged with "rust"

    View All Tags
    + + \ No newline at end of file diff --git a/blog/tags/schema.html b/blog/tags/schema.html index 52d9518754e..aa029c56604 100644 --- a/blog/tags/schema.html +++ b/blog/tags/schema.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/shim.html b/blog/tags/shim.html index e7fe154d87a..8d2636e8214 100644 --- a/blog/tags/shim.html +++ b/blog/tags/shim.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/shorthand.html b/blog/tags/shorthand.html index fbcd525dc93..9f17a78a9f6 100644 --- a/blog/tags/shorthand.html +++ b/blog/tags/shorthand.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/source.html b/blog/tags/source.html index 6795309bf10..75ec8c44458 100644 --- a/blog/tags/source.html +++ b/blog/tags/source.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "source"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/survey.html b/blog/tags/survey.html index e1728b6ee3b..188256742a7 100644 --- a/blog/tags/survey.html +++ b/blog/tags/survey.html @@ -13,14 +13,14 @@ - - + +

    One post tagged with "survey"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/tag.html b/blog/tags/tag.html index 9d9a4845ac2..7188cf6ba7e 100644 --- a/blog/tags/tag.html +++ b/blog/tags/tag.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/tags.html b/blog/tags/tags.html index a26139f74cf..d931e4efb6a 100644 --- a/blog/tags/tags.html +++ b/blog/tags/tags.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "tags"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/target.html b/blog/tags/target.html index b6cebc629d5..45e43fe7e02 100644 --- a/blog/tags/target.html +++ b/blog/tags/target.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "target"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/task.html b/blog/tags/task.html index ea019fc1359..0c19f082bae 100644 --- a/blog/tags/task.html +++ b/blog/tags/task.html @@ -13,14 +13,14 @@ - - + +
    - - + + \ No newline at end of file diff --git a/blog/tags/tasks.html b/blog/tags/tasks.html index 2dda5de6579..e60fcb04638 100644 --- a/blog/tags/tasks.html +++ b/blog/tags/tasks.html @@ -13,15 +13,15 @@ - - + +

    6 posts tagged with "tasks"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/tier.html b/blog/tags/tier.html index 5bd6eed249c..68b5dc0a994 100644 --- a/blog/tags/tier.html +++ b/blog/tags/tier.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/tokens.html b/blog/tags/tokens.html index d99a171f19f..b24a0c6204d 100644 --- a/blog/tags/tokens.html +++ b/blog/tags/tokens.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "tokens"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/toml.html b/blog/tags/toml.html index d9e3b07f1ea..6aae90ebdc0 100644 --- a/blog/tags/toml.html +++ b/blog/tags/toml.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/tool.html b/blog/tags/tool.html index 8b409868404..c329355bc87 100644 --- a/blog/tags/tool.html +++ b/blog/tags/tool.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/toolchain.html b/blog/tags/toolchain.html index dec47bf74f5..0f04ab94e0d 100644 --- a/blog/tags/toolchain.html +++ b/blog/tags/toolchain.html @@ -13,13 +13,13 @@ - - + +
    -

    8 posts tagged with "toolchain"

    View All Tags

    · 3 min read
    Miles Johnson

    In this release, we've focused on loosening restrictions to improve the overall developer +

    8 posts tagged with "toolchain"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/typescript.html b/blog/tags/typescript.html index d261d4256a1..3af3411a4e7 100644 --- a/blog/tags/typescript.html +++ b/blog/tags/typescript.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ a fair question, as there's no in-depth source of truth, or one perfect way of doing it. However, we took it upon ourselves to answer this question!

    - - + + \ No newline at end of file diff --git a/blog/tags/vcs.html b/blog/tags/vcs.html index aeb70945b08..a96d39b7c23 100644 --- a/blog/tags/vcs.html +++ b/blog/tags/vcs.html @@ -13,15 +13,15 @@ - - + +

    2 posts tagged with "vcs"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/version.html b/blog/tags/version.html index f7ac393129a..dd4b1022be4 100644 --- a/blog/tags/version.html +++ b/blog/tags/version.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/blog/tags/vscode.html b/blog/tags/vscode.html index 13578b3feb1..390b76e828a 100644 --- a/blog/tags/vscode.html +++ b/blog/tags/vscode.html @@ -13,14 +13,14 @@ - - + +

    2 posts tagged with "vscode"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/tags/wasm.html b/blog/tags/wasm.html index bda38996a85..4692d202707 100644 --- a/blog/tags/wasm.html +++ b/blog/tags/wasm.html @@ -13,13 +13,13 @@ - - + +

    5 posts tagged with "wasm"

    View All Tags
    - - + + \ No newline at end of file diff --git a/blog/typescript-monorepo.html b/blog/typescript-monorepo.html index 59f6cc3751b..804d793885d 100644 --- a/blog/typescript-monorepo.html +++ b/blog/typescript-monorepo.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ companies like Airbnb and Coinbase, we're happy to announce an in-depth guide on using TypeScript project references in a monorepo!

    We hope you find this guide useful, and if you have any questions, feel free to discuss them in our Discord community!

    - - + + \ No newline at end of file diff --git a/blog/v0.13.html b/blog/v0.13.html index d62d5d322c6..85bb3371b5b 100644 --- a/blog/v0.13.html +++ b/blog/v0.13.html @@ -13,8 +13,8 @@ - - + +
    @@ -53,7 +53,7 @@ runner.
  4. What's next?

    Expect the following in the v0.14 release!

    • A moon generate command to generate new projects, files, scaffolding, and more from pre-defined templates.
    • Implicit dependency discovery. moon will now scan manifest files and determine project relationships.
    - - + + \ No newline at end of file diff --git a/blog/v0.14.html b/blog/v0.14.html index 9f0985c465f..82efe3e9e1a 100644 --- a/blog/v0.14.html +++ b/blog/v0.14.html @@ -13,8 +13,8 @@ - - + +
    @@ -40,7 +40,7 @@ official release for a full list of changes.

    • When running in a Docker container, caching is disabled in an effort to greatly reduce the size of the image.
    • Updated moon setup to also install Node.js dependencies.

    What's next?

    Expect the following in the v0.15 release!

    • Major Docker workflow improvements!
    • Frontmatter configuration within template files.
    - - + + \ No newline at end of file diff --git a/blog/v0.15.html b/blog/v0.15.html index afb7cd25cef..c0c4a6e8936 100644 --- a/blog/v0.15.html +++ b/blog/v0.15.html @@ -13,8 +13,8 @@ - - + +
    @@ -43,7 +43,7 @@ full list of changes.

    • Run reports (via --report) now include additional information, like the total duration, and estimated time savings.
    • Improved pnpm integration for Go/Rust binaries shipped in node modules.

    What's next?

    Expect the following in the v0.16 release!

    • Quality of life improvements for TypeScript.
    • Per-project overrides for language/tool versions.
    - - + + \ No newline at end of file diff --git a/blog/v0.16.html b/blog/v0.16.html index 97fdf269eab..012f668451d 100644 --- a/blog/v0.16.html +++ b/blog/v0.16.html @@ -13,8 +13,8 @@ - - + +
    @@ -52,7 +52,7 @@ full list of changes.

    • Template files can now be suffixed with .tera or .twig for syntax highlighting.
    • We now display more commands and information when running tasks.
    • Declare implicit task dependencies with a new runner.implicitDeps setting.

    What's next?

    Expect the following in the v0.17 release!

    • Webhooks for important pipeline events (for real this time)!
    • YAML anchors and references in config files.
    • And many more...
    - - + + \ No newline at end of file diff --git a/blog/v0.17.html b/blog/v0.17.html index b11689cc09f..c440d9e0a10 100644 --- a/blog/v0.17.html +++ b/blog/v0.17.html @@ -13,8 +13,8 @@ - - + +
    @@ -38,7 +38,7 @@ official release for a full list of changes.

    • Increased runtime performance and reduced memory consumption.
    • Template enum variables can now define objects for their values.
    • Task deps can now omit the ~: prefix for tasks within the current project.
    • The moon check command can now use the --report option.

    What's next?

    Expect the following in the v0.18 release!

    • Workflow improvements for moon init.
    • Benchmarks and performance tuning.
    • Individual stdout/stderr log files when running tasks.
    - - + + \ No newline at end of file diff --git a/blog/v0.18.html b/blog/v0.18.html index 75fb34a8c09..1d164c07502 100644 --- a/blog/v0.18.html +++ b/blog/v0.18.html @@ -13,8 +13,8 @@ - - + +
    @@ -38,7 +38,7 @@ Boost module loader!

    Other changes

    View the official release for a full list of changes.

    • Default Node.js version has been updated to v18.12 (the new LTS) from v16.17.
    • Updated the moon check command to support an --all flag.
    • Improvements to how we store stdout/stderr logs for ran targets.
    • Work tree dirty checks when running migration commands.

    What's next?

    Expect the following in the v0.19 release!

    • Laying the groundwork for remote caching!
    • An in-repo secrets management layer.
    • Performance and affected improvements.
    - - + + \ No newline at end of file diff --git a/blog/v0.19.html b/blog/v0.19.html index 6152a105e12..d923e622f04 100644 --- a/blog/v0.19.html +++ b/blog/v0.19.html @@ -13,8 +13,8 @@ - - + +
    @@ -45,7 +45,7 @@ a 5-10% increase in performance!

    Other changes

    View the official release for a full list of changes.

    • Package managers in the toolchain are now installed in isolation, instead of through Node.js.
    • JSON files will now respect the closest .editorconfig file.
    • Webhook payloads now include information about the running CI/CD environment.
    • Generator can now merge JSON/YAML template files.

    What's next?

    Expect the following in the v0.20 release!

    • Continuation of remote caching work!
    • Performance improvements for output hydration.
    • Toolchain improvements.
    - - + + \ No newline at end of file diff --git a/blog/v0.20.html b/blog/v0.20.html index 4d81d21b3d7..9c9482394cc 100644 --- a/blog/v0.20.html +++ b/blog/v0.20.html @@ -13,8 +13,8 @@ - - + +
    @@ -58,7 +58,7 @@ full list of changes.

    • Added vcs.remoteCandidates to .moon/workspace.yml to customize the remotes for Git to query against.
    • Added support for moduleSuffixes and moduleDetection in TypeScript tsconfig.json compiler options.
    • YAML files will now respect the closest .editorconfig file.
    • Refactored terminal output for bette readability.

    What's next?

    Expect the following in the v0.21 release!

    • An interactive dependency and project graph visualizer.
    • A more performant project graph.
    • More quality of life improvements for affected files.
    - - + + \ No newline at end of file diff --git a/blog/v0.21.html b/blog/v0.21.html index 5c4449796d8..374690711e5 100644 --- a/blog/v0.21.html +++ b/blog/v0.21.html @@ -13,8 +13,8 @@ - - + +
    @@ -63,7 +63,7 @@ affectedFiles task option changes!

    Other changes

    View the official release for a full list of changes.

    • Refactored project and dependency graphs for improved performance.
    • Added args and env var variants to the affectedFiles task option.
    • Added --minimal to moon init for quick scaffolding and prototyping.

    What's next?

    Expect the following in the v0.22 release!

    • Generalized hashing for use in any context (improved deps installation).
    • More work on language integrations.
    - - + + \ No newline at end of file diff --git a/blog/v0.22.html b/blog/v0.22.html index 8572165f0a6..abf3083aa0a 100644 --- a/blog/v0.22.html +++ b/blog/v0.22.html @@ -13,8 +13,8 @@ - - + +
    @@ -46,7 +46,7 @@ full list of changes.

    • Added Bun as a tier 1 language (doesn't do much at the moment).
    • Added a versionConstraint setting in .moon/workspace.yml that enforces a requirement on the running moon binary.
    • Updated the project fields in moon.yml to be optional, excluding description.
    • Internal improvements to remote caching and artifact uploading.

    What's next?

    Expect the following in the v0.23 release!

    • Improved task inheritance workflow.
    • Glob support in task outputs.
    • Project-level environment variables.
    - - + + \ No newline at end of file diff --git a/blog/v0.23.html b/blog/v0.23.html index f4aa103695b..a8061191674 100644 --- a/blog/v0.23.html +++ b/blog/v0.23.html @@ -13,8 +13,8 @@ - - + +
    @@ -65,7 +65,7 @@ files, but exclude everything else (.map, etc).

    moon.yml
    tasks:
    build:
    command: 'webpack'
    outputs:
    - 'build/**/*.{js,css}'

    Other changes

    View the official release for a full list of changes.

    • Updated moon migrate from-turborepo to preserve globs in outputs.
    • Updated project graph to no longer cache when there's no VCS root.
    • Updated pnpm to use the new pnpm dedupe command when the version is >= 7.26.0.

    What's next?

    Expect the following in the v0.24 release!

    • New moon query tasks command.
    • New per-project platform setting.
    • Token support in task outputs.
    • TypeScript v5 support.
    - - + + \ No newline at end of file diff --git a/blog/v0.24.html b/blog/v0.24.html index ccff5a8328a..a6e79fc9c72 100644 --- a/blog/v0.24.html +++ b/blog/v0.24.html @@ -13,8 +13,8 @@ - - + +
    @@ -53,7 +53,7 @@ official release for a full list of changes.

    • Added TypeScript v5 support.
    • Added a hasher.walkStrategy setting to .moon/workspace.yml.
    • Updated task outputs to support token functions (@group, @globs, etc).
    • Reworked our comparison/baseline estimations calcuations.

    What's next?

    Expect the following in the v0.25 release!

    • Deno tier 2 support.
    • CI insights and metrics within moonbase.
    • Project-level TypeScript settings.
    - - + + \ No newline at end of file diff --git a/blog/v0.25.html b/blog/v0.25.html index 2f989a8bbdf..bd4deda3626 100644 --- a/blog/v0.25.html +++ b/blog/v0.25.html @@ -13,8 +13,8 @@ - - + +
    @@ -65,7 +65,7 @@ official release for a full list of changes.

    • Updated project, task, and target identifiers to support periods (.).
    • Refactored glob matching to use workspace relative paths instead of absolute. Please report an issue if hashing or affected detection is now inaccurate.
    • We now build against older operating systems in an attempt to solve GLIBC version errors.

    What's next?

    Expect the following in the v0.26 release!

    • Officially release proto!
    • Improved Deno interoperability.
    - - + + \ No newline at end of file diff --git a/blog/v0.26.html b/blog/v0.26.html index 8000a940428..09dec4ef42b 100644 --- a/blog/v0.26.html +++ b/blog/v0.26.html @@ -13,8 +13,8 @@ - - + +
    @@ -47,7 +47,7 @@ official release for a full list of changes.

    • A handful of critical bug fixes.
    • Targets that generate an empty hash are now considered a failure, as they may be an edge case not accounted for.

    What's next?

    Expect the following in the v1 release!

    • Officially release a v1!
    • Project tagging and constraints.
    - - + + \ No newline at end of file diff --git a/blog/vscode-extension.html b/blog/vscode-extension.html index 83645d2433f..b23692edb2e 100644 --- a/blog/vscode-extension.html +++ b/blog/vscode-extension.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ moonrepo.moon-console marketplace page, or read the official documentation. This is only the first iteration of the extension. Expect more advanced features in the future, like...

    • Schema validation for configuration files
    • Autocompletion for configuration files
    • Automatic running/building of projects in the background
    • File type association
    • Integrated language server
    • And much more!
    - - + + \ No newline at end of file diff --git a/docs.html b/docs.html index dfd2c730eda..984761e5910 100644 --- a/docs.html +++ b/docs.html @@ -13,8 +13,8 @@ - - + +
    @@ -67,7 +67,7 @@ tracking of CI jobs to detect flakiness and regressions, project and code ownership registries, repository health, and much more!

    This service is currently in heavy development.

    proto

    proto is a version manager for your favorite programming languages. View proto documentation.

    - - + + \ No newline at end of file diff --git a/docs/cheat-sheet.html b/docs/cheat-sheet.html index 386e8bbc366..d146013f444 100644 --- a/docs/cheat-sheet.html +++ b/docs/cheat-sheet.html @@ -13,13 +13,13 @@ - - + +

    Cheat sheet

    Don't have time to read the docs? Here's a quick cheat sheet to get you started.

    Tasks

    Learn more about tasks and targets.

    Run all build and test tasks for all projects

    moon check --all

    Run all build and test tasks in a project

    moon check project

    Run all build and test tasks for closest project based on working directory

    moon check

    Run a task in all projects

    moon run :task

    Run a task in all projects with a tag

    moon run '#tag:task'
    # OR
    moon run \#tag:task
    # OR
    moon run :task --query "tag=tag"

    Run a task in a project

    moon run project:task

    Run multiple tasks in all projects

    moon run :task1 :task2

    Run multiple tasks in any project

    moon run projecta:task1 projectb:task2

    Run a task in applications, libraries, or tools

    moon run :task --query "projectType=application"

    Run a task in projects of a specific language

    moon run :task --query "language=typescript"

    Run a task in projects matching a keyword

    moon run :task --query "project~react-*"

    Run a task in projects based on file path

    moon run :task --query "projectSource~packages/*"

    Task configuration

    Learn more about available options.

    Disable caching

    moon.yml
    tasks:
    example:
    # ...
    options:
    cache: false

    Re-run flaky tasks

    moon.yml
    tasks:
    example:
    # ...
    options:
    retryCount: 3

    Depend on tasks from parent project's dependencies

    moon.yml
    # Also inferred from the language's platform
    dependsOn:
    - 'project-a'
    - 'project-b'

    tasks:
    example:
    # ...
    deps:
    - '^:build'

    Depend on tasks from arbitrary projects

    moon.yml
    tasks:
    example:
    # ...
    deps:
    - 'other-project:task'

    Run dependencies serially

    moon.yml
    tasks:
    example:
    # ...
    deps:
    - 'first'
    - 'second'
    - 'third'
    options:
    runDepsInParallel: false

    Run multiple watchers/servers in parallel

    moon.yml
    tasks:
    example:
    command: 'noop'
    deps:
    - 'app:watch'
    - 'backend:start'
    - 'tailwind:watch'
    local: true

    The local or persistent settings are required for this to work.

    Languages

    Run system binaries available on PATH

    moon.yml
    language: 'bash' # batch, etc

    tasks:
    example:
    command: 'printenv'
    moon.yml
    tasks:
    example:
    command: 'printenv'
    platform: 'system'

    Run language binaries not supported in moon's toolchain

    moon.yml
    language: 'ruby'

    tasks:
    example:
    command: 'rubocop'
    platform: 'system'

    Run npm binaries (Node.js)

    moon.yml
    language: 'javascript' # typescript

    tasks:
    example:
    command: 'eslint'
    moon.yml
    tasks:
    example:
    command: 'eslint'
    platform: 'node'
    - - + + \ No newline at end of file diff --git a/docs/commands.html b/docs/commands.html index 20f506bc127..3bbb4819e1a 100644 --- a/docs/commands.html +++ b/docs/commands.html @@ -13,13 +13,13 @@ - - + +

    Commands

    - - + + \ No newline at end of file diff --git a/docs/commands/action-graph.html b/docs/commands/action-graph.html index 405c5656b69..aa456135038 100644 --- a/docs/commands/action-graph.html +++ b/docs/commands/action-graph.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ action graph. In other tools, this is sometimes referred to as a dependency graph or task graph.

    # Run the visualizer locally
    $ moon action-graph

    # Export to DOT format
    $ moon action-graph --dot > graph.dot

    A target can be passed to focus the graph, including dependencies and dependents. For example, moon action-graph app:build.

    Arguments

    • [target] - Optional target to focus.

    Options

    • --dot - Output the graph in DOT format.

    Example output

    The following output is an example of the graph in DOT format.

    digraph {
    0 [ label="SetupNodeTool" style=filled, shape=oval, fillcolor=black, fontcolor=white]
    1 [ label="InstallNodeDeps" style=filled, shape=oval, fillcolor=gray, fontcolor=black]
    2 [ label="SyncNodeProject(node)" style=filled, shape=oval, fillcolor=gray, fontcolor=black]
    3 [ label="RunTask(node:standard)" style=filled, shape=oval, fillcolor=gray, fontcolor=black]
    1 -> 0 [ arrowhead=box, arrowtail=box]
    2 -> 0 [ arrowhead=box, arrowtail=box]
    3 -> 1 [ arrowhead=box, arrowtail=box]
    3 -> 2 [ arrowhead=box, arrowtail=box]
    }
    - - + + \ No newline at end of file diff --git a/docs/commands/bin.html b/docs/commands/bin.html index 413564bda1e..060ea183d18 100644 --- a/docs/commands/bin.html +++ b/docs/commands/bin.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ respectively.

    $ moon bin node
    /Users/example/.proto/tools/node/x.x.x/bin/node

    A tool is considered "not configured" when not in use, for example, querying yarn/pnpm when the package manager is configured for "npm". A tool is considered "not installed", when it has not been downloaded and installed into the tools directory.

    Arguments

    • <tool> - Name of the tool to query.
    - - + + \ No newline at end of file diff --git a/docs/commands/check.html b/docs/commands/check.html index 61fea04acc9..2ca7cfad78b 100644 --- a/docs/commands/check.html +++ b/docs/commands/check.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ command for verifying the current state of a project, instead of running multiple moon run commands.

    # Check project at current working directory
    $ moon check

    # Check project by name
    $ moon check app

    # Check multiple projects by name
    $ moon check client server

    # Check ALL projects (may be costly)
    $ moon check --all

    Arguments

    • [...names] - List of project names or aliases to explicitly check, as defined in projects.

    Options

    • --all - Run check for all projects in the workspace.
    • -u, --updateCache - Bypass cache and force update any existing items.
    - - + + \ No newline at end of file diff --git a/docs/commands/ci.html b/docs/commands/ci.html index 8a52936770f..f9289c48de1 100644 --- a/docs/commands/ci.html +++ b/docs/commands/ci.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ to utilize this command.

    Arguments

    Options

    • --base <rev> - Base branch, commit, or revision to compare against. Can be set with MOON_BASE. Defaults to vcs.defaultBranch.
    • --head <rev> - Current branch, commit, or revision to compare with. Can be set with MOON_HEAD. Defaults to HEAD.
    • --job <index> - Index of the current job.
    • --jobTotal <total> Total amount of jobs to run.
    - - + + \ No newline at end of file diff --git a/docs/commands/clean.html b/docs/commands/clean.html index 27de88d551c..ec004da15a7 100644 --- a/docs/commands/clean.html +++ b/docs/commands/clean.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ part, the action pipeline will clean automatically, but this command can be used to reset the workspace entirely.

    $ moon clean

    # Delete cache with a custom lifetime
    $ moon clean --lifetime '24 hours'

    Options

    • --lifetime - The maximum lifetime of cached artifacts before being marked as stale. Defaults to "7 days".
    - - + + \ No newline at end of file diff --git a/docs/commands/completions.html b/docs/commands/completions.html index bed254b2925..0325718283c 100644 --- a/docs/commands/completions.html +++ b/docs/commands/completions.html @@ -13,15 +13,15 @@ - - + +

    completions

    The moon completions command will generate moon command and argument completions for your current shell. This command will write to stdout, which can then be redirected to a file of your choice.

    $ moon completions > ~/.bash_completion.d/moon.sh

    Options

    • --shell - Shell to explicitly generate for. Accepts "bash", "elvish", "fish", "powershell", or "zsh".
    - - + + \ No newline at end of file diff --git a/docs/commands/docker.html b/docs/commands/docker.html index c20a606e106..4df83ee8a3e 100644 --- a/docs/commands/docker.html +++ b/docs/commands/docker.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/commands/docker/prune.html b/docs/commands/docker/prune.html index 9f972ab06ba..3485af6666e 100644 --- a/docs/commands/docker/prune.html +++ b/docs/commands/docker/prune.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ applicable extraneous files.

    $ moon docker prune

    View the official Docker usage guide for a more in-depth example of how to utilize this command.

    caution

    This command must be ran after moon docker scaffold and is typically ran within a Dockerfile!

    - - + + \ No newline at end of file diff --git a/docs/commands/docker/scaffold.html b/docs/commands/docker/scaffold.html index 41046864c59..c560af425a0 100644 --- a/docs/commands/docker/scaffold.html +++ b/docs/commands/docker/scaffold.html @@ -13,8 +13,8 @@ - - + +
    @@ -36,7 +36,7 @@ moon run and other commands to work within the Dockerfile, and avoid having to COPY . . the entire repository.

    Using our example workspace above, our sources skeleton would look like the following, assuming our client project is passed as an argument, and this project depends on the foo and baz projects.

    .moon/docker/sources/
    ├── apps/
    │ └── client/
    | ├── src/
    | ├── tests/
    | ├── public/
    | ├── package.json
    | ├── tsconfig.json
    │ └── (anything else)
    └── packages/
    ├── foo/
    │ ├── lib/
    │ ├── src/
    │ ├── package.json
    │ ├── tsconfig.json
    │ └── (anything else)
    └── baz/
    ├── lib/
    ├── src/
    ├── package.json
    ├── tsconfig.json
    └── (anything else)
    - - + + \ No newline at end of file diff --git a/docs/commands/docker/setup.html b/docs/commands/docker/setup.html index 4b2cce65d30..71e4e2cfc5d 100644 --- a/docs/commands/docker/setup.html +++ b/docs/commands/docker/setup.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ commands.

    $ moon docker setup

    View the official Docker usage guide for a more in-depth example of how to utilize this command.

    caution

    This command must be ran after moon docker scaffold and is typically ran within a Dockerfile!

    - - + + \ No newline at end of file diff --git a/docs/commands/generate.html b/docs/commands/generate.html index 665e47cf90d..1cd51d14401 100644 --- a/docs/commands/generate.html +++ b/docs/commands/generate.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ based on the generator.templates setting.

    # Generate code from a template to a target directory
    $ moon generate npm-package ./packages/example

    # Generate code while declaring custom variable values
    $ moon generate npm-package ./packages/example -- --name "@company/example"

    # Create a new template
    $ moon generate react-app --template

    View the official code generation guide for a more in-depth example of how to utilize this command.

    Arguments

    • <name> - Name of the template to generate.
    • [dest] - Destination to write files to, relative from the current working directory. If not defined, will be prompted during generation.
    • [-- <vars>] - Additional arguments to override default variable values.

    Options

    • --defaults - Use the default value of all variables instead of prompting the user.
    • --dryRun - Run entire generator process without writing files.
    • --force - Force overwrite any existing files at the destination.
    • --template - Create a new template with the provided name.
    - - + + \ No newline at end of file diff --git a/docs/commands/init.html b/docs/commands/init.html index 1ba9c2b5091..76c0435b4f6 100644 --- a/docs/commands/init.html +++ b/docs/commands/init.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ other ecosystem related settings.

    $ moon init

    # In another directory
    $ moon init ./app

    The command can also be used to initialize a specific tool after moon has already been initialized. Perfect for adopting a new language into the workspace.

    $ moon init --tool typescript

    Arguments

    • [dest] - Destination to initialize and scaffold into. Defaults to . (current working directory).

    Options

    • --force - Overwrite existing config files if they exist.
    • --minimal - Generate minimal configurations and sane defaults.
    • --tool - Individual tool to initialize and configure.
      • Accepts: node, rust, typescript
    • --yes - Skip all prompts and enables tools based on file detection.
    - - + + \ No newline at end of file diff --git a/docs/commands/migrate.html b/docs/commands/migrate.html index 93963b18b72..de18ca598d4 100644 --- a/docs/commands/migrate.html +++ b/docs/commands/migrate.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/commands/migrate/from-package-json.html b/docs/commands/migrate/from-package-json.html index fc9d095193a..f402ab1c8bf 100644 --- a/docs/commands/migrate/from-package-json.html +++ b/docs/commands/migrate/from-package-json.html @@ -13,8 +13,8 @@ - - + +
    @@ -50,7 +50,7 @@ as a task dependency.

    For example, a posttest script would be converted into a posttest task, with the test task included in deps. For this to actually run correctly, you'll need to use moon run <project>:posttest AND NOT moon run <project>:test.

    - - + + \ No newline at end of file diff --git a/docs/commands/migrate/from-turborepo.html b/docs/commands/migrate/from-turborepo.html index 9bc27a76afd..f1928bc6bc7 100644 --- a/docs/commands/migrate/from-turborepo.html +++ b/docs/commands/migrate/from-turborepo.html @@ -13,8 +13,8 @@ - - + +
    @@ -25,7 +25,7 @@ the toolchain before this command is ran!

    Furthermore, this process does not change existing package.json scripts, so if you're looking to migrate them as well, use the moon migrate from-package-json command.

    Caveats

    • This process will not migrate root-level Turborepo tasks (those starting with //#). You'll need to manually create a moon root-level project and migrate tasks.
    - - + + \ No newline at end of file diff --git a/docs/commands/overview.html b/docs/commands/overview.html index fad4970fa4d..0e9ba32ad21 100644 --- a/docs/commands/overview.html +++ b/docs/commands/overview.html @@ -13,8 +13,8 @@ - - + +
    @@ -45,7 +45,7 @@ levels are supported, in priority order.

    • off - Turn off logging entirely.
    • error - Only show error logs.
    • warn - Only show warning logs and above.
    • info (default) - Only show info logs and above.
    • debug - Only show debug logs and above.
    • trace - Show all logs, including network requests and child processes.
    $ moon run app:build --log trace
    # Or
    $ MOON_LOG=trace moon run app:build

    Outputting logs to a file

    moon can dump the logs from a command to a file using the --logFile option, or the MOON_LOG_FILE environment variable. The dumped logs will respect the --log option and filter the logs piped to the output file.

    $ moon run app:build --logFile=output.log
    # Or
    $ MOON_LOG_FILE=output.log moon run app:build
    - - + + \ No newline at end of file diff --git a/docs/commands/project-graph.html b/docs/commands/project-graph.html index aa3fdba1d4c..3f9f6869b38 100644 --- a/docs/commands/project-graph.html +++ b/docs/commands/project-graph.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ Graphviz DOT format.

    # Run the visualizer locally
    $ moon project-graph

    # Export to DOT format
    $ moon project-graph --dot > graph.dot

    A project name can be passed to focus the graph to only that project and it's dependencies. For example, moon project-graph app.

    Arguments

    • [name] - Optional name or alias of a project to focus, as defined in projects.

    Options

    • --dot - Output the graph in DOT format.

    Example output

    The following output is an example of the graph in DOT format.

    digraph {
    0 [ label="(workspace)" style=filled, shape=circle, fillcolor=black, fontcolor=white]
    1 [ label="runtime" style=filled, shape=circle, fillcolor=gray, fontcolor=black]
    2 [ label="website" style=filled, shape=circle, fillcolor=gray, fontcolor=black]
    0 -> 1 [ arrowhead=none]
    0 -> 2 [ arrowhead=none]
    }
    - - + + \ No newline at end of file diff --git a/docs/commands/project.html b/docs/commands/project.html index 04d6eb9a0b7..bccae9fdb8c 100644 --- a/docs/commands/project.html +++ b/docs/commands/project.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ project that has been configured and exists within the graph. If a project does not exist, the program will return with a 1 exit code.

    $ moon project web

    Arguments

    • <name> - Name or alias of a project, as defined in projects.

    Options

    • --json - Print the project and its configuration as JSON.

    Example output

    The following output is an example of what this command prints, using our very own @moonrepo/runtime package.

    RUNTIME

    ID: runtime
    Alias: @moonrepo/runtime
    Source: packages/runtime
    Root: /Projects/moon/packages/runtime

    TASKS

    build: packemon build --addEngines --addExports
    format: prettier --check .
    lint: eslint --no-error-on-unmatched-pattern .
    test: jest --passWithNoTests .
    typecheck: tsc --build

    FILE GROUPS

    configs:
    - *.{js,json}
    sources:
    - src/**/*
    - types/**/*
    tests:
    - tests/**/*.test.*
    - - + + \ No newline at end of file diff --git a/docs/commands/query.html b/docs/commands/query.html index 5347d07de1a..8b91bcf5217 100644 --- a/docs/commands/query.html +++ b/docs/commands/query.html @@ -13,13 +13,13 @@ - - + +
    - - + + \ No newline at end of file diff --git a/docs/commands/query/hash-diff.html b/docs/commands/query/hash-diff.html index 2a6cd5cbbee..1f471f0e602 100644 --- a/docs/commands/query/hash-diff.html +++ b/docs/commands/query/hash-diff.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ left differences printed in green, and right differences printed in red. If you use git diff, this will feel familiar to you.

    Left:  0b55b234f1018581c45b00241d7340dc648c63e639fbafdaf85a4cd7e718fdde
    Right: 2388552fee5a02062d0ef402bdc7232f0a447458b058c80ce9c3d0d4d7cfe171

    {
    "command": "build",
    "args": [
    + "./dist"
    - "./build"
    ],
    ...
    }

    The differences can also be output in JSON by passing the --json flag. The output has the following structure:

    {
    left: string,
    left_hash: string,
    left_diffs: string[],
    right: string,
    right_hash: string,
    right_diffs: string[],
    }

    Options

    • --json - Display the manifest in JSON format.
    - - + + \ No newline at end of file diff --git a/docs/commands/query/hash.html b/docs/commands/query/hash.html index 944017d7f30..4a6a3076b59 100644 --- a/docs/commands/query/hash.html +++ b/docs/commands/query/hash.html @@ -13,15 +13,15 @@ - - + +

    query hash

    Use the moon query hash sub-command to inspect the contents and sources of a generated hash, also known as the hash manifest. This is extremely useful in debugging task inputs.

    $ moon query hash 0b55b234f1018581c45b00241d7340dc648c63e639fbafdaf85a4cd7e718fdde

    # Query hash using short form
    $ moon query hash 0b55b234

    By default, this will output the contents of the hash manifest (which is JSON), and the fully qualified resolved hash.

    Hash: 0b55b234f1018581c45b00241d7340dc648c63e639fbafdaf85a4cd7e718fdde

    {
    "command": "build",
    "args": ["./build"]
    // ...
    }

    The command can also be output raw JSON by passing the --json flag.

    Options

    • --json - Display the diff in JSON format.
    - - + + \ No newline at end of file diff --git a/docs/commands/query/projects.html b/docs/commands/query/projects.html index 016ffb1f59a..7a87ee01008 100644 --- a/docs/commands/query/projects.html +++ b/docs/commands/query/projects.html @@ -13,8 +13,8 @@ - - + +
    @@ -26,7 +26,7 @@ tree. For advanced control, you can also pass the results of moon query touched-files to stdin.

    # Find all affected projects
    $ moon query projects --affected

    # Find all affected projects using the results of another query
    $ moon query touched-files | moon query projects --affected

    Arguments

    Options

    • --affected - Filter projects that have been affected by touched files. This will only filter based on files, and does not include upstream or downstream dependencies.
    • --json - Display the projects in JSON format.

    Filters

    All option values are case-insensitive regex patterns.

    • --alias <regex> - Filter projects that match this alias.
    • --id <regex> - Filter projects that match this ID/name.
    • --language <regex> - Filter projects of this programming language.
    • --source <regex> - Filter projects that match this source path.
    • --tags <regex> - Filter projects that have the following tags.
    • --tasks <regex> - Filter projects that have the following tasks.
    • --type <regex> - Filter project of this type.
    - - + + \ No newline at end of file diff --git a/docs/commands/query/tasks.html b/docs/commands/query/tasks.html index 3ba2771c2a1..33dd7bea96a 100644 --- a/docs/commands/query/tasks.html +++ b/docs/commands/query/tasks.html @@ -13,8 +13,8 @@ - - + +
    @@ -25,7 +25,7 @@ passing the --json flag. The output has the following structure:

    {
    tasks: Record<string, Record<string, Task>>,
    options: QueryOptions,
    }

    Arguments

    Options

    • --affected - Filter projects that have been affected by touched files. This will only filter based on files, and does not include upstream or downstream dependencies.
    • --json - Display the projects in JSON format.

    Filters

    All option values are case-insensitive regex patterns.

    • --alias <regex> - Filter projects that match this alias.
    • --id <regex> - Filter projects that match this ID/name.
    • --language <regex> - Filter projects of this programming language.
    • --source <regex> - Filter projects that match this source path.
    • --tasks <regex> - Filter projects that have the following tasks.
    • --type <regex> - Filter project of this type.
    - - + + \ No newline at end of file diff --git a/docs/commands/query/touched-files.html b/docs/commands/query/touched-files.html index bafed1e5c6b..3ac32afaae4 100644 --- a/docs/commands/query/touched-files.html +++ b/docs/commands/query/touched-files.html @@ -13,8 +13,8 @@ - - + +
    @@ -26,7 +26,7 @@ uses.
  5. If --local is provided, touched files are based on your local index only (git status).
  6. Otherwise, then compare the defined base (--base) against head (--head).
  7. # Return all files
    $ moon query touched-files

    # Return deleted files
    $ moon query touched-files --status deleted

    # Return all files between 2 revisions
    $ moon query touched-files --base <branch> --head <commit>

    By default, this will output a list of absolute file paths, separated by new lines.

    /absolute/file/one.ts
    /absolute/file/two.ts

    The files can also be output in JSON by passing the --json flag. The output has the following structure:

    {
    files: string[],
    options: QueryOptions,
    }

    Options

    • --defaultBranch - When on the default branch, compare against the previous revision.
    • --base <rev> - Base branch, commit, or revision to compare against. Defaults to vcs.defaultBranch.
    • --head <rev> - Current branch, commit, or revision to compare with. Defaults to HEAD.
    • --json - Display the files in JSON format.
    • --local - Gather files from you local state instead of remote.
    • --status <type> - Filter files based on a touched status. Can be passed multiple times.
      • Types: all (default), added, deleted, modified, staged, unstaged, untracked
    - - + + \ No newline at end of file diff --git a/docs/commands/run.html b/docs/commands/run.html index 610e171ec1c..c4a9fe79d3b 100644 --- a/docs/commands/run.html +++ b/docs/commands/run.html @@ -13,8 +13,8 @@ - - + +
    @@ -26,7 +26,7 @@ pass to the underlying command.

    Options

    • -f, --force - Force run and ignore touched files and affected status. Will not query VCS.
    • --dependents - Run downstream dependent targets (of the same task name) as well.
    • -i, --interactive - Run the target in an interactive mode.
    • --profile <type> - Record and generate a profile for ran tasks.
      • Types: cpu, heap
    • --query - Filter projects to run targets against using a query statement. v1.3.0
    • -u, --updateCache - Bypass cache and force update any existing items.

    Affected

    • --affected - Only run target if affected by changed files, otherwise will always run.
    • --remote - Determine affected against remote by comparing HEAD against a base revision (default branch), otherwise uses local changes.
      • Can control revisions with MOON_BASE and MOON_HEAD.
    • --status <type> - Filter affected based on a change status. Can be passed multiple times.
      • Types: all (default), added, deleted, modified, staged, unstaged, untracked
    - - + + \ No newline at end of file diff --git a/docs/commands/setup.html b/docs/commands/setup.html index 64e17bc57e5..84f95de8d95 100644 --- a/docs/commands/setup.html +++ b/docs/commands/setup.html @@ -13,15 +13,15 @@ - - + +

    setup

    The moon setup command can be used to setup the developer and pipeline environments. It achieves this by downloading and installing all configured tools into the toolchain.

    $ moon setup
    info

    This command should rarely be used, as the environment is automatically setup when running other commands, like detecting affected projects, running a task, or generating a build artifact.

    - - + + \ No newline at end of file diff --git a/docs/commands/sync.html b/docs/commands/sync.html index 9177b84e701..7e82b50e924 100644 --- a/docs/commands/sync.html +++ b/docs/commands/sync.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/commands/sync/codeowners.html b/docs/commands/sync/codeowners.html index 4f358675cae..f59bcdf9d85 100644 --- a/docs/commands/sync/codeowners.html +++ b/docs/commands/sync/codeowners.html @@ -13,15 +13,15 @@ - - + +

    sync codeowners

    v1.8.0

    The moon sync codeowners command will manually sync code owners, by aggregating all owners from projects, and generating a single CODEOWNERS file. Refer to the official code owners guide for more information.

    $ moon sync codeowners

    Options

    • --clean - Clean and remove previously generated file.
    • --force - Bypass cache and force create file.
    - - + + \ No newline at end of file diff --git a/docs/commands/sync/hooks.html b/docs/commands/sync/hooks.html index c2b6b25d93a..b72b0254bad 100644 --- a/docs/commands/sync/hooks.html +++ b/docs/commands/sync/hooks.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ VCS, by generating and referencing hook scripts from the vcs.hooks setting. Refer to the official VCS hooks guide for more information.

    $ moon sync hooks

    Options

    • --clean - Clean and remove previously generated hooks.
    • --force - Bypass cache and force create hooks.
    - - + + \ No newline at end of file diff --git a/docs/commands/sync/projects.html b/docs/commands/sync/projects.html index f7de56e26bf..454df56ceaf 100644 --- a/docs/commands/sync/projects.html +++ b/docs/commands/sync/projects.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ dependsOn.
  8. Ensures language specific configuration files are present and accurate (package.json, tsconfig.json, etc).
  9. Ensures root configuration and project configuration are in sync.
  10. Any additional language specific semantics that may be required.
  11. $ moon sync projects

    This command should rarely be ran, as moon run will sync affected projects automatically! However, when migrating or refactoring, manual syncing may be necessary.

    - - + + \ No newline at end of file diff --git a/docs/commands/task.html b/docs/commands/task.html index 0a94262a0ab..fcf4bc3d243 100644 --- a/docs/commands/task.html +++ b/docs/commands/task.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ configured and exists within a project. If a task does not exist, the program will return with a 1 exit code.

    $ moon task web:build

    Arguments

    • <target> - Fully qualified project + task target.

    Options

    • --json - Print the task and its configuration as JSON.

    Example output

    The following output is an example of what this command prints, using our very own @moonrepo/runtime package.

    RUNTIME:BUILD

    ID: build
    Project: runtime
    Platform: node
    Type: build

    PROCESS

    Command: packemon build --addFiles --addExports --declaration
    Environment variables:
    - NODE_ENV = production
    Working directory: /Projects/moon/packages/runtime
    Runs dependencies: Concurrently
    Runs in CI: Yes

    DEPENDS ON

    - types:build

    INPUTS

    - .moon/*.yml
    - packages/runtime/src/**/*
    - packages/runtime/tsconfig.*.json
    - packages/runtime/types/**/*
    - packages/runtime/package.json
    - packages/runtime/tsconfig.json
    - tsconfig.options.json

    OUTPUTS

    - packages/runtime/cjs
    - - + + \ No newline at end of file diff --git a/docs/commands/teardown.html b/docs/commands/teardown.html index d0d27ea5bf6..63e5d74b09d 100644 --- a/docs/commands/teardown.html +++ b/docs/commands/teardown.html @@ -13,14 +13,14 @@ - - + +

    teardown

    The moon teardown command, as its name infers, will teardown and clean the current environment, opposite the setup command. It achieves this by doing the following:

    • Uninstalling all configured tools in the toolchain.
    • Removing any download or temporary files/folders.
    $ moon teardown
    - - + + \ No newline at end of file diff --git a/docs/commands/upgrade.html b/docs/commands/upgrade.html index c3b579bc40b..6240ecb70a7 100644 --- a/docs/commands/upgrade.html +++ b/docs/commands/upgrade.html @@ -13,15 +13,15 @@ - - + +

    upgrade

    The moon upgrade command can be used to upgrade your current moon binary (if installed globally) to the latest version.

    $ moon upgrade
    caution

    This command will only work if moon was installed in the ~/.moon directory, using our official installation script. If installed through Node.js, you'll need to upgrade manually.

    - - + + \ No newline at end of file diff --git a/docs/comparison.html b/docs/comparison.html index 6169ec8af15..332b7c89164 100644 --- a/docs/comparison.html +++ b/docs/comparison.html @@ -13,8 +13,8 @@ - - + +
    @@ -58,7 +58,7 @@ Lerna was able to run scripts in parallel, it wasn't the most efficient, as it did not support caching, hashing, or performant scheduling.

    However, the reason Lerna is not compared in-depth, is that Lerna was unowned and unmaintained for quite some time, and has recently fallen under the Nx umbrella. Lerna is basically Nx lite now.

    Comparison tables

    🟩 Supported🟨 Partially supported🟦 Similarly supported🟥 Not supported

    Workspace

    moon (10)nx (8)turborepo (7)

    Written in

    Rust

    Node.js

    Go (being rewritten in Rust)

    Workspace configured with

    .moon/workspace.yml

    nx.json

    turbo.json

    Project list configured in

    .moon/workspace.yml

    workspace.json

    package.json workspaces

    Repo / folder structure

    loose

    strict

    loose

    Ignore file support

    🟩  via hasher.ignorePatterns

    🟩  .nxignore

    🟥

    Supports dependencies inherited by all tasks

    🟩  via implicitDeps

    🟥🟥

    Supports inputs inherited by all tasks

    🟩  via implicitInputs

    🟩  via implicitDependencies

    🟩  via globalDependencies

    Supports tasks inherited by all projects

    🟩🟥🟥

    Integrates with a version control system

    🟩  git

    🟩  git

    🟩  git

    Supports scaffolding / generators

    🟩🟩🟩

    Toolchain

    moon (5)nx (2)turborepo (2)

    Supported languages

    Bash, Batch, Bun, Deno, Go, Node, JavaScript, TypeScript, PHP, Ruby, Rust, Python

    JavaScript, TypeScript

    JavaScript, TypeScript

    Supported dependency managers

    npm, pnpm, yarn

    npm, pnpm, yarn

    npm, pnpm, yarn

    Has a built-in toolchain

    🟩🟥🟥

    Downloads and installs languages (when applicable)

    🟩🟥🟥

    Configures explicit language/dependency manager versions

    🟩🟥🟥

    Projects

    moon (7)nx (5)turborepo (2)

    Dependencies on other projects

    🟩  implicit from package.json or explicit in moon.yml

    🟩  implicit from package.json or explicit in project.json

    🟩  implicit from package.json

    Ownership metadata

    🟩🟥🟥

    Primary programming language

    🟩🟥🟥

    Project type (app, lib, etc)

    🟩  app, lib, tool

    🟩  app, lib

    🟥

    Project-level file groups

    🟩

    🟩  via namedInputs

    🟥

    Project-level tasks

    🟩🟩🟩

    Tags and scopes (boundaries)

    🟩  native for all languages

    🟩  via ESLint (JavaScript only)

    🟥

    Tasks

    moon (22)nx (18)turborepo (16)

    Known as

    tasks

    targets, executors

    tasks

    Defines tasks in

    moon.yml or package.json scripts

    project.json or package.json scripts

    package.json scripts

    Run a single task with

    moon run project:task

    nx run project:target

    turbo run task --filter=project

    Run multiple tasks with

    moon run :task or moon run a:task b:task or moon check

    nx run-many --target=target

    turbo run task or turbo run a b c

    Run tasks based on a query/filter

    moon run :task --query "..."

    🟥🟥

    Can define tasks globally

    🟩  with .moon/tasks.yml

    🟥🟥

    Merges or overrides global tasks

    🟩🟥🟥

    Runs a command with args

    🟩

    🟦  behind an executor abstraction

    🟨  within the script

    Runs commands from

    project or workspace root

    workspace root

    project root

    Supports pipes, redirects, etc

    🟨  encapsulated in a file

    🟨  within the executor or script

    🟨  within the script

    Dependencies on other tasks

    🟩  via deps

    🟩  via dependsOn

    🟩  via dependsOn

    Can depend on arbitrary or unrelated tasks

    🟩

    🟥  dependent projects only

    🟥  dependent projects only

    Runs task dependencies in parallel

    🟩🟩🟩

    Can run task dependencies in serial

    🟩🟥🟥

    File groups

    🟩

    🟦  via namedInputs

    🟥

    Environment variables

    🟩  via env

    🟨  within the executor or script

    🟨  within the script

    Inputs

    🟩  files, globs, env vars

    🟩  files, globs, env vars, runtime

    🟩  files, globs

    Outputs

    🟩  files

    🟩  files, globs

    🟩  files

    Output logging style

    🟩  via outputStyle

    🟩  via --output-style

    🟩  via outputMode

    Custom hash inputs

    🟥

    🟩  via runtimeCacheInputs

    🟩  via globalDependencies

    Token substitution

    🟩🟥🟥

    Configuration presets

    🟩  via task extends

    🟩  via configurations

    🟥

    Configurable options

    🟩🟩🟩

    Task runner

    moon (9)nx (7)turborepo (7)

    Known as

    action pipeline

    task runner

    pipeline

    Generates a dependency graph

    🟩🟩🟩

    Runs in topological order

    🟩🟩🟩

    Automatically retries failed tasks

    🟩🟥🟥

    Caches task outputs via a unique hash

    🟩🟩🟩

    Can customize the underlying runner

    🟥🟩🟥

    Can profile running tasks

    🟩  cpu, heap

    🟩  cpu

    🟩  cpu

    Can generate run reports

    🟩🟥🟩

    Continuous integration (CI) support

    🟩🟨🟨

    Continuous deployment (CD) support

    🟥🟥🟥

    Remote / cloud caching and syncing

    🟩  with moonrepo.app (free / paid)

    🟩  with Nx cloud (paid)

    🟩  requires a Vercel account (free)

    Generator

    moon (13)nx (11)turborepo (11)

    Known as

    generator

    generator

    generator

    Templates are configured with a schema

    🟩  via template.yml

    🟩🟥

    Template file extensions (optional)

    🟩  .tera, .twig

    🟥

    🟩  .hbs

    Template files support frontmatter

    🟩🟥🟥

    Creates/copies files to destination

    🟩🟩🟩

    Updates/merges with existing files

    🟩  JSON/YAML only

    🟩  using JavaScript

    🟩

    Renders with a template engine

    🟩  via Tera

    🟩  via EJS

    🟩  via Handlebars

    Variable interpolation in file content

    🟩🟩🟩

    Variable interpolation in file paths

    🟩🟩🟩

    Can define variable values via interactive prompts

    🟩🟩🟩

    Can define variable values via command line args

    🟩🟥🟩

    Supports dry runs

    🟩🟩🟥

    Supports render helpers, filters, and built-ins

    🟩🟩🟩

    Generators can compose other generators

    🟥

    🟩  using JavaScript

    🟩  using JavaScript

    Other systems

    moon (6)nx (0)turborepo (1)

    Can send webhooks for critical pipeline events

    🟩🟥🟥

    Generates run reports with granular stats/metrics

    🟩🟥🟩

    Can define and manage code owners

    🟩🟥🟥

    Can generate a CODEOWNERS file

    🟩🟥🟥

    Can define and manage VCS (git) hooks

    🟩🟥🟥

    Supports git worktrees

    🟩🟥🟥

    JavaScript ecosystem

    moon (10)nx (0)turborepo (0)

    Will automatically install node modules when lockfile changes

    🟩🟥🟥

    Can automatically dedupe when lockfile changes

    🟩🟥🟥

    Can alias package.json names for projects

    🟩🟥🟥

    Can add engines constraint to root package.json

    🟩🟥🟥

    Can sync version manager configs (.nvmrc, etc)

    🟩🟥🟥

    Can sync cross-project dependencies to package.json

    🟩🟥🟥

    Can sync project references to applicable tsconfig.json

    🟩🟥🟥

    Can auto-create missing tsconfig.json

    🟩🟥🟥

    Can sync dependencies as paths to tsconfig.json

    🟩🟥🟥

    Can route outDir to a shared cached in tsconfig.json

    🟩🟥🟥

    Docker integration

    moon (3)nx (0)turborepo (2)

    Efficient scaffolding for Dockerfile layer caching

    🟩🟥🟩

    Automatic production-only dependency installation

    🟩🟥🟥

    Environment pruning to reduce image/container sizes

    🟩🟥🟩
    - - + + \ No newline at end of file diff --git a/docs/concepts.html b/docs/concepts.html index 5732026c241..516fb21c4f0 100644 --- a/docs/concepts.html +++ b/docs/concepts.html @@ -13,13 +13,13 @@ - - + +
    - - + + \ No newline at end of file diff --git a/docs/concepts/cache.html b/docs/concepts/cache.html index ee7fce4c4fc..e77e57601a3 100644 --- a/docs/concepts/cache.html +++ b/docs/concepts/cache.html @@ -13,8 +13,8 @@ - - + +
    @@ -34,7 +34,7 @@ timeline, where every point in time will have its own hash + archive that moon can play back.

    Furthermore, if we receive a cache hit on the hash, and the hash is the same as the last run, and outputs exist, we exit early without hydrating and assume the project is already hydrated. In the terminal, you'll see a message for "cached from previous run".

    File structure

    The following diagram outlines our cache folder structure and why each piece exists.

    .moon/cache/
    # Stores hash manifests of every ran task. Exists purely for debugging purposes.
    hashes/
    # Contents includes all sources used to generate the hash.
    <hash>.json

    # Stores `tar.gz` archives of a task's outputs based on its generated hash.
    outputs/
    <hash>.tar.gz

    # State information about anything and everything within moon. Toolchain,
    # dependencies, projects, running targets, etc.
    states/
    # Files at the root pertain to the entire workspace.
    <state>.json

    # Files for a project are nested within a folder by the project name.
    <project>/
    # Informational snapshot of the project, its tasks, and its configs.
    # Can be used at runtime by tasks that require this information.
    snapshot.json

    <task>/
    # Contents of the child process, including the exit code and
    # unique hash that is referenced above.
    lastRun.json

    # Outputs of last run target.
    stderr.log
    stdout.log
    - - + + \ No newline at end of file diff --git a/docs/concepts/file-group.html b/docs/concepts/file-group.html index b447efd3f73..8e6e27f1e10 100644 --- a/docs/concepts/file-group.html +++ b/docs/concepts/file-group.html @@ -13,8 +13,8 @@ - - + +
    @@ -28,7 +28,7 @@ override file groups defined at the workspace-level. For example, say we want to override the sources file group because our source folder is named "lib" and not "src", we would define our file groups as followed.

    .moon/tasks.yml
    fileGroups:
    sources:
    - 'src/**/*'
    - 'types/**/*'
    tests:
    - 'tests/**/*.test.*'
    - '**/__tests__/**/*'
    moon.yml
    fileGroups:
    # Overrides global
    sources:
    - 'lib/**/*'
    - 'types/**/*'
    # Inherited as-is
    tests:
    - 'tests/**/*.test.*'
    - '**/__tests__/**/*'
    - - + + \ No newline at end of file diff --git a/docs/concepts/file-pattern.html b/docs/concepts/file-pattern.html index fdc41a30ba0..d3f52bffad5 100644 --- a/docs/concepts/file-pattern.html +++ b/docs/concepts/file-pattern.html @@ -13,8 +13,8 @@ - - + +
    @@ -27,7 +27,7 @@ project root they will be ran in. They must not start with ./, or traverse upwards with ...

    # Valid
    src/**/*
    package.json

    # Invalid
    ./src/**/*
    ../utils

    Workspace relative

    When configuring fileGroups, inputs, and outputs, a listed file path or glob can be prefixed with / to resolve relative from the workspace root, and not the project root.

    # In project
    package.json

    # In workspace
    /package.json
    - - + + \ No newline at end of file diff --git a/docs/concepts/project.html b/docs/concepts/project.html index 6a1c9ff6b42..ecdca275593 100644 --- a/docs/concepts/project.html +++ b/docs/concepts/project.html @@ -13,8 +13,8 @@ - - + +
    @@ -39,7 +39,7 @@ scanning the repository. How an implicit dependency is discovered is based on the project's language setting, and how that language's ecosystem functions.

    Configuration

    Projects can be configured with an optional moon.yml in the project root, or through the optional workspace-level .moon/tasks.yml.

    - - + + \ No newline at end of file diff --git a/docs/concepts/query-lang.html b/docs/concepts/query-lang.html index c71a32d2a49..5077e159c77 100644 --- a/docs/concepts/query-lang.html +++ b/docs/concepts/query-lang.html @@ -13,8 +13,8 @@ - - + +
    @@ -30,7 +30,7 @@ logical groupings. Groups can also be nested within other groups.

    language=javascript && (taskType=test || taskType=build)

    Fields

    The following fields can be used as criteria, and are related to task tokens.

    language

    Programming language the project is written in, as defined in moon.yml.

    language=rust

    project

    Name OR alias of the project.

    project=server

    projectAlias

    Alias of the project. For example, the package.json name.

    projectAlias~@scope/*

    projectName

    Name of the project, as defined in .moon/workspace.yml.

    project=server

    projectSource

    Relative file path from the workspace root to the project root, as defined in .moon/workspace.yml.

    projectSource~packages/*

    projectType

    The type of project, as defined in moon.yml.

    projectType=application

    tag

    A tag within the project, as defined in moon.yml.

    tag~react-*

    task

    ID/name of a task within the project.

    task=[build,test]

    taskPlatform

    The platform a task will run against, as defined in moon.yml.

    taskPlatform=node

    taskType

    The type of task, based on its configured settings.

    taskType=build
    - - + + \ No newline at end of file diff --git a/docs/concepts/target.html b/docs/concepts/target.html index 33ec49edbd0..f6bde747b56 100644 --- a/docs/concepts/target.html +++ b/docs/concepts/target.html @@ -13,8 +13,8 @@ - - + +
    @@ -30,7 +30,7 @@ the ~: prefix altogether, which will be expanded to the current project's name. This is useful for situations where the name is unknown, for example, when configuring .moon/tasks.yml, or if you just want a shortcut!

    .moon/tasks.yml
    # Configured as
    tasks:
    lint:
    command: 'eslint'
    deps:
    - '~:typecheck'
    # OR
    - 'typecheck'
    typecheck:
    command: 'tsc'

    # Resolves to (assuming project is "foo")
    tasks:
    lint:
    command: 'eslint'
    deps:
    - 'foo:typecheck'
    typecheck:
    command: 'tsc'
    - - + + \ No newline at end of file diff --git a/docs/concepts/task-inheritance.html b/docs/concepts/task-inheritance.html index 87cabf7b61c..f28fdd6d116 100644 --- a/docs/concepts/task-inheritance.html +++ b/docs/concepts/task-inheritance.html @@ -13,8 +13,8 @@ - - + +
    @@ -51,7 +51,7 @@ positional arguments.
  12. replace - Values found in the local task entirely replaces the values in the global task. This strategy is useful when you need full control.
  13. All 3 of these strategies are demonstrated below, with a somewhat contrived example, but you get the point.

    # Global
    tasks:
    build:
    command:
    - 'webpack'
    - '--mode'
    - 'production'
    - '--color'
    deps:
    - 'designSystem:build'
    inputs:
    - '/webpack.config.js'
    outputs:
    - 'build/'

    # Local
    tasks:
    build:
    args: '--no-color --no-stats'
    deps:
    - 'reactHooks:build'
    inputs:
    - 'webpack.config.js'
    options:
    mergeArgs: 'append'
    mergeDeps: 'prepend'
    mergeInputs: 'replace'

    # Merged result
    tasks:
    build:
    command:
    - 'webpack'
    - '--mode'
    - 'production'
    - '--color'
    - '--no-color'
    - '--no-stats'
    deps:
    - 'reactHooks:build'
    - 'designSystem:build'
    inputs:
    - 'webpack.config.js'
    outputs:
    - 'build/'
    options:
    mergeArgs: 'append'
    mergeDeps: 'prepend'
    mergeInputs: 'replace'
    - - + + \ No newline at end of file diff --git a/docs/concepts/task.html b/docs/concepts/task.html index c4a333ef4ba..89dcfc3eb34 100644 --- a/docs/concepts/task.html +++ b/docs/concepts/task.html @@ -13,8 +13,8 @@ - - + +
    @@ -39,7 +39,7 @@ run them last as a batch. This is perfect for a few reasons:

    • All persistent tasks are ran in parallel, so they don't block each other.
    • Running both the backend API and frontend webapp in parallel is a breeze.
    • Dependencies of persistent tasks are guaranteed to have ran and completed.

    To mark a task as persistent, enable the local or options.persistent settings.

    moon.yml
    tasks:
    dev:
    command: 'start-dev-server'
    local: true
    # OR
    options:
    persistent: true

    Configuration

    Tasks can be configured per project through moon.yml, or for many projects through .moon/tasks.yml.

    Inheritance

    View the official documentation on task inheritance.

    - - + + \ No newline at end of file diff --git a/docs/concepts/token.html b/docs/concepts/token.html index ec0c189fa2d..5da80f1df89 100644 --- a/docs/concepts/token.html +++ b/docs/concepts/token.html @@ -13,8 +13,8 @@ - - + +
    @@ -50,7 +50,7 @@ .moon/workspace.yml.

    # Configured as
    tasks:
    build:
    command:
    - 'example'
    - '--cache-dir'
    - '../../.cache/$projectSource'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--cache-dir'
    - '../../.cache/apps/web'

    $projectType

    The type of project, as defined in moon.yml. If the project has not defined the type setting, or does not have a config, this defaults to "unknown".

    # Configured as
    tasks:
    build:
    command: 'example debug $projectType'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - 'debug'
    - 'application'

    Task

    $target

    Target that is currently running.

    # Configured as
    tasks:
    build:
    command: 'example $target'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - 'web:build'

    $task

    ID/name of the task that is currently running.

    # Configured as
    tasks:
    build:
    command: 'example --task=$task'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--task=build'

    $taskPlatform

    The platform that task will run against, as defined in moon.yml.

    # Configured as
    tasks:
    build:
    command: 'example --platform $taskPlatform'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--platform'
    - 'system'

    $taskType

    The type of task, based on its configured settings.

    # Configured as
    tasks:
    build:
    command: 'example --type $taskType'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--type'
    - 'build'

    Date/Time

    $date

    The current date in the format of YYYY-MM-DD.

    # Configured as
    tasks:
    build:
    command: 'example --date $date'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--date'
    - '2023-03-17'

    $time

    The current time in the format of HH:MM:SS.

    # Configured as
    tasks:
    build:
    command: 'example --time $time'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--time'
    - '14:05:10'

    $datetime

    The current date and time in the format of YYYY-MM-DD_HH:MM:SS.

    # Configured as
    tasks:
    build:
    command: 'example --datetime $datetime'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--datetime'
    - '2023-03-17_14:05:10'

    $timestamp

    The current date and time as a UNIX timestamp in seconds.

    # Configured as
    tasks:
    build:
    command: 'example --timestamp $timestamp'

    # Resolves to
    tasks:
    build:
    command:
    - 'example'
    - '--timestamp'
    - '1679087127'
    - - + + \ No newline at end of file diff --git a/docs/concepts/toolchain.html b/docs/concepts/toolchain.html index 928d1b03625..857b0d2dfee 100644 --- a/docs/concepts/toolchain.html +++ b/docs/concepts/toolchain.html @@ -13,8 +13,8 @@ - - + +
    @@ -46,7 +46,7 @@ installed locally, we'll use that version instead of downloading the latest 1.2.* version. Otherwise, we'll download the latest version that matches the partial version, and install it locally.

    Supported tools

    The following tools are currently managed by the toolchain.

    Deno

    • Configured with: deno
    • Installed to: ~/.proto/tools/deno/x.x.x

    Node.js

    • Configured with: node
    • Installed to: ~/.proto/tools/node/x.x.x
    • Dependency managers: npm, pnpm, yarn, bun
    - - + + \ No newline at end of file diff --git a/docs/concepts/workspace.html b/docs/concepts/workspace.html index abcd2fbaa5f..0671dfa1d9d 100644 --- a/docs/concepts/workspace.html +++ b/docs/concepts/workspace.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ runs tasks, and is coupled with a VCS repository. The root of a workspace is denoted by a .moon folder.

    By default moon has been designed for monorepos, but can also be used for polyrepos.

    Configuration

    Configuration that's applied to the entire workspace is defined in .moon/workspace.yml.

    - - + + \ No newline at end of file diff --git a/docs/config.html b/docs/config.html index 37437699a78..d35cb2e6b82 100644 --- a/docs/config.html +++ b/docs/config.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/config/project.html b/docs/config/project.html index 5435e791efa..5d3c7623278 100644 --- a/docs/config/project.html +++ b/docs/config/project.html @@ -13,8 +13,8 @@ - - + +
    @@ -159,7 +159,7 @@ project. It accepts a map of strings, where the key is the original name (found in the global project config), and the value is the new name to use.

    For example, say we have 2 tasks in the global project config called buildPackage and buildApplication, but we only need 1, and since we're an application, we should omit and rename.

    moon.yml
    workspace:
    inheritedTasks:
    exclude: ['buildPackage']
    rename:
    buildApplication: 'build'

    Renaming occurs after inclusion and exclusion.

    - - + + \ No newline at end of file diff --git a/docs/config/tasks.html b/docs/config/tasks.html index b280a4ae0cd..c59ae893f39 100644 --- a/docs/config/tasks.html +++ b/docs/config/tasks.html @@ -13,8 +13,8 @@ - - + +
    @@ -42,7 +42,7 @@ tasks that are inherited by many projects within the workspace, but can also be overridden per project.

    .moon/tasks.yml
    tasks:
    format:
    command: 'prettier --check .'

    lint:
    command: 'eslint --no-error-on-unmatched-pattern .'

    test:
    command: 'jest --passWithNoTests'

    typecheck:
    command: 'tsc --build'

    Relative file paths and globs used within a task are relative from the inherited project's root, and not the workspace.

    - - + + \ No newline at end of file diff --git a/docs/config/template.html b/docs/config/template.html index 2f080f071b4..529b2be77f3 100644 --- a/docs/config/template.html +++ b/docs/config/template.html @@ -13,8 +13,8 @@ - - + +
    @@ -37,7 +37,7 @@ will override the file path within the template folder, and allow for conditional rendering and engine filters to be used.

    {% set component_name = name | pascal_case %}

    ---
    to: components/{{ component_name }}.tsx
    ---

    export function {{ component_name }}() {
    return <div />;
    }

    skip

    When enabled, the template file will be skipped while writing to the destination path. This setting can be used to conditionally render a file.

    ---
    skip: {{ name == "someCondition" }}
    ---

    Some template content!
    - - + + \ No newline at end of file diff --git a/docs/config/toolchain.html b/docs/config/toolchain.html index 6c979402d0c..a89f33eac97 100644 --- a/docs/config/toolchain.html +++ b/docs/config/toolchain.html @@ -13,8 +13,8 @@ - - + +
    @@ -94,7 +94,7 @@ automatically install with rustup for the current toolchain. Will be installed when the pipeline is first ran, and subsequently when configuration changes.

    .moon/toolchain.yml
    rust:
    targets:
    - 'aarch64-unknown-linux-gnu'
    - 'wasm32-wasi'

    Targets are currently not scoped based on operating system, and will be installed for all machines.

    - - + + \ No newline at end of file diff --git a/docs/config/workspace.html b/docs/config/workspace.html index 7ef20dc134d..89baecd4385 100644 --- a/docs/config/workspace.html +++ b/docs/config/workspace.html @@ -13,8 +13,8 @@ - - + +
    @@ -94,7 +94,7 @@ projects, this may be fine, but for larger projects, this may be undesirable and disruptive!

    versionConstraint

    Defines a version requirement for the currently running moon binary. This provides a mechanism for enforcing that the globally installed moon on every developers machine is using an applicable version.

    .moon/workspace.yml
    versionConstraint: '>=0.20.0'
    - - + + \ No newline at end of file diff --git a/docs/create-project.html b/docs/create-project.html index 96295361ac8..0a04c367afd 100644 --- a/docs/create-project.html +++ b/docs/create-project.html @@ -13,8 +13,8 @@ - - + +
    @@ -40,7 +40,7 @@ more!

    Furthermore, we also support the type and language settings for a more granular breakdown of what exists in the repository.

    <project>/moon.yml
    type: 'tool'
    language: 'typescript'

    project:
    name: 'moon'
    description: 'A repo management tool.'
    channel: '#moon'
    owner: 'infra.platform'
    maintainers: ['miles.johnson']

    Next steps

    - - + + \ No newline at end of file diff --git a/docs/create-task.html b/docs/create-task.html index b768e56ab57..0db14fb32a4 100644 --- a/docs/create-task.html +++ b/docs/create-task.html @@ -13,8 +13,8 @@ - - + +
    @@ -54,7 +54,7 @@ @files token functions. Tokens are an advanced feature, so please refer to their documentation for more information!

    <project>/moon.yml
    language: 'javascript'

    fileGroups:
    # ...

    tasks:
    build:
    command: 'webpack build --mode production --no-stats --output-path @out(0)'
    inputs:
    - '@globs(sources)'
    - 'webpack.config.js'
    - '/webpack-shared.config.js'
    outputs:
    - 'build'

    With file groups (and tokens), you're able to reduce the amount of configuration required and encourage certain file structures for consuming projects!

    Next steps

    - - + + \ No newline at end of file diff --git a/docs/editors.html b/docs/editors.html index 3f2102d8caa..4c0ba7d2cef 100644 --- a/docs/editors.html +++ b/docs/editors.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/editors/vscode.html b/docs/editors/vscode.html index f54d8ae11cb..3cb708f0e57 100644 --- a/docs/editors/vscode.html +++ b/docs/editors/vscode.html @@ -13,8 +13,8 @@ - - + +
    @@ -30,7 +30,7 @@ official VS Code marketplace for more information on the extension, its commands, available settings, and more!

    If you encounter a bug, or have a feature request, please submit them to the moonrepo/dev repository!

    - - + + \ No newline at end of file diff --git a/docs/faq.html b/docs/faq.html index d80286bd5fd..806f4d03028 100644 --- a/docs/faq.html +++ b/docs/faq.html @@ -13,8 +13,8 @@ - - + +
    @@ -85,7 +85,7 @@ node:latest image.
  14. Upgrade the enviroment to a newer one. For example, Ubuntu 18 -> 22.
  15. Try and install a newer libc (more information).
  16. For more information on this problem as a whole, refer to this in-depth article.

    - - + + \ No newline at end of file diff --git a/docs/guides/ci.html b/docs/guides/ci.html index 7fcb277790f..3b084cd9d7c 100644 --- a/docs/guides/ci.html +++ b/docs/guides/ci.html @@ -13,8 +13,8 @@ - - + +
    @@ -51,7 +51,7 @@ moonrepo/run-report-action. This action will report the results of a moon ci run to a pull request as a comment and workflow summary.

    .github/workflows/ci.yml
    # ...
    jobs:
    ci:
    name: 'CI'
    runs-on: 'ubuntu-latest'
    steps:
    # ...
    - run: 'yarn moon ci'
    - uses: 'moonrepo/run-report-action@v1'
    if: success() || failure()
    with:
    access-token: ${{ secrets.GITHUB_TOKEN }}

    The report looks something like the following:

    - - + + \ No newline at end of file diff --git a/docs/guides/codegen.html b/docs/guides/codegen.html index 19130f20703..083071c1943 100644 --- a/docs/guides/codegen.html +++ b/docs/guides/codegen.html @@ -13,8 +13,8 @@ - - + +
    @@ -69,7 +69,7 @@ templates to exist within the current repository, relative from the workspace root. So how can we share templates across repositories? Why not try...

    • Git submodules
    • npm packages
    • Another packaging system

    Regardless of the choice, simply configure generator.templates to point to these locations:

    .moon/workspace.yml
    generator:
    templates:
    - './templates'
    - './node_modules/@company/shared-templates'
    - './path/to/submodules'
    - - + + \ No newline at end of file diff --git a/docs/guides/codeowners.html b/docs/guides/codeowners.html index 5949b1401d1..15014a1c882 100644 --- a/docs/guides/codeowners.html +++ b/docs/guides/codeowners.html @@ -13,8 +13,8 @@ - - + +
    @@ -45,7 +45,7 @@ CODEOWNERS file.

    While this is useful for viewing ownership of a folder at a glance, it incurs a massive performance hit as we'd have to constantly glob the entire repository to find all OWNERS files. We found it best to define owners in moon.yml instead for the following reasons:

    • No performance hit, as we're already loading and parsing these config files.
    • Co-locates owners with the rest of moon's configuration.
    • Ownership is now a part of the project graph, enabling future features.
    - - + + \ No newline at end of file diff --git a/docs/guides/debug-task.html b/docs/guides/debug-task.html index 36f6f091921..0bd479bc218 100644 --- a/docs/guides/debug-task.html +++ b/docs/guides/debug-task.html @@ -13,8 +13,8 @@ - - + +
    @@ -66,7 +66,7 @@ output, allowing for simple line-by-line comparison debugging.

    moon query hash-diff <hash-left> <hash-right>
    Left:  0b55b234f1018581c45b00241d7340dc648c63e639fbafdaf85a4cd7e718fdde
    Right: 2388552fee5a02062d0ef402bdc7232f0a447458b058c80ce9c3d0d4d7cfe171

    [
    {
    "command": "build",
    "args": [
    + "./dist"
    - "./build"
    ],
    ...
    }
    ]

    This is extremely useful in diagnoising why a task is running differently than before, and is much easier than inspecting the hash manifest files manually!

    Ask for help

    If you've made it this far, and still can't figure out why a task is not working correctly, please ask for help!

    - - + + \ No newline at end of file diff --git a/docs/guides/docker.html b/docs/guides/docker.html index 3bbd0adf9b4..692a6700bdb 100644 --- a/docs/guides/docker.html +++ b/docs/guides/docker.html @@ -13,8 +13,8 @@ - - + +
    @@ -50,7 +50,7 @@ just fine, albeit with some functionality disabled.
  17. Ensure that the git library is installed in the container, and copy the .git folder with COPY. moon will work with full functionality, but it will increase the overall size of the image because of caching.
  18. ;\\n}\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.15.0) for a\\nfull list of changes.\\n\\n- Run reports (via `--report`) now include additional information, like the total duration, and\\n estimated time savings.\\n - The [moonrepo/run-report-action](https://github.com/marketplace/actions/moon-ci-run-reports) has\\n been updated with this information.\\n- Improved pnpm integration for Go/Rust binaries shipped in node modules.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.16 release!\\n\\n- Quality of life improvements for TypeScript.\\n- Per-project overrides for language/tool versions."},{"id":"v0.14","metadata":{"permalink":"/blog/v0.14","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2022-09-13_v0.14.mdx","source":"@site/blog/2022-09-13_v0.14.mdx","title":"moon v0.14 - Code generation and implicit dependencies","description":"With this release, we\'ve landed some new features that have been requested multiple times since","date":"2022-09-13T00:00:00.000Z","formattedDate":"September 13, 2022","tags":[{"label":"generator","permalink":"/blog/tags/generator"},{"label":"project-graph","permalink":"/blog/tags/project-graph"},{"label":"ci","permalink":"/blog/tags/ci"}],"readingTime":1.715,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.14","title":"moon v0.14 - Code generation and implicit dependencies","authors":["milesj"],"tags":["generator","project-graph","ci"]},"prevItem":{"title":"moon v0.15 - Enhanced Docker support and 1,000 stars!","permalink":"/blog/v0.15"},"nextItem":{"title":"moon v0.13 - Hashing and toolchain improvements","permalink":"/blog/v0.13"}},"content":"import Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'ve landed some new features that have been requested multiple times since\\nlaunch. A code generation and template scaffolding layer, as well as implicit dependency scanning\\nfor the project graph!\\n\\n\x3c!--truncate--\x3e\\n\\n## New `moon generate` command\\n\\nCode generation is the staple of any large company or repository. Want to spin up a new application?\\nWhat about an npm package? Or maybe third-party integrations? Avoid copy-and-pasting existing code,\\nand instead generate it with the new `moon generate` command, which is powered by our new generator\\nsystem.\\n\\nThe generator will locate a template by name on the file system (\\"npm-package\\" in the example\\nbelow), prompt and interpolate variables, render the files with [Tera](https://tera.netlify.app/) (a\\nRust based template engine), and write the files to the target destination.\\n\\n```shell\\n# Generate code from a template to a target directory\\n$ moon generate npm-package ./packages/example\\n```\\n\\nLearn more about [code generation in the official guide](../docs/guides/codegen)!\\n\\n## Implicit dependency scanning\\n\\nThis has been a request since moon\'s official release, and it\'s finally here! Up until now, if you\\nwanted project-to-project dependency relationships, you had to explicitly declare them with\\n[`dependsOn`](../docs/config/project#dependson). But thanks to a\\n[ton of](https://github.com/moonrepo/moon/pull/288)\\n[infrastructure](https://github.com/moonrepo/moon/pull/249) and\\n[platform](https://github.com/moonrepo/moon/pull/277) changes, we can now infer implicit\\ndependencies automatically!\\n\\nWe still suggest using explicit dependencies, as it provides more\\n[automation like project syncing](../docs/concepts/project#dependencies), but implicit is great for\\nadoption and migration purposes.\\n\\n## Report CI runs on pull requests\\n\\nWe\'re fans of continuous and easily accessible feedback, and as such, have released a new GitHub\\naction, [`moonrepo/run-report-action`](https://github.com/marketplace/actions/moon-ci-run-reports),\\nwhich reports the results of [`moon ci`](../docs/commands/ci) as a pull request comment. The report\\nlooks something like the following:\\n\\n\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.14.0) for a\\nfull list of changes.\\n\\n- When running in a Docker container, caching is disabled in an effort to greatly reduce the size of\\n the image.\\n- Updated `moon setup` to also install Node.js dependencies.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.15 release!\\n\\n- Major Docker workflow improvements!\\n- Frontmatter configuration within template files."},{"id":"v0.13","metadata":{"permalink":"/blog/v0.13","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2022-09-01_v0.13.mdx","source":"@site/blog/2022-09-01_v0.13.mdx","title":"moon v0.13 - Hashing and toolchain improvements","description":"With this release, we\'ve landed some improvements to our smart hashing, and paved the road for","date":"2022-09-01T00:00:00.000Z","formattedDate":"September 1, 2022","tags":[{"label":"hasher","permalink":"/blog/tags/hasher"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":2.995,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.13","title":"moon v0.13 - Hashing and toolchain improvements","authors":["milesj"],"tags":["hasher","toolchain"]},"prevItem":{"title":"moon v0.14 - Code generation and implicit dependencies","permalink":"/blog/v0.14"}},"content":"With this release, we\'ve landed some improvements to our smart hashing, and paved the road for\\nadditional languagues and tooling.\\n\\n\x3c!--truncate--\x3e\\n\\n## Node.js is now optional\\n\\nTitle may seem confusing at first, but don\'t worry, everything is fine! For some context, moon has\\nbeen designed to be language agnostic as we plan to support more than JavaScript in the future.\\nHowever, some aspects of the codebase were hard-coded for JavaScript and made the assumption that\\nJavaScript will always be used, with one such aspect being the\\n[`node`](../docs/config/workspace#node) setting in\\n[`.moon/workspace.yml`](../docs/config/workspace).\\n\\nWe\'ve reworked this setting to be optional, which allows a repository to opt out of JavaScript.\\nRight now, this basically does nothing as we do not support other languages yet, but we felt it\\nnecessary to report it anyways! A side-effect of this change is that actions in the runner have been\\nrenamed, for example, `SetupToolchain` -> `SetupNodeToolchain`.\\n\\n## Improved hashing accuracy\\n\\nOur [smart hashing layer](../docs/concepts/cache#hashing) is pretty powerful, but was not entirely\\naccurate. Up until now, when hashing a Node.js project, we\'d include the `dependencies`,\\n`devDependencies`, and `peerDependencies` versions located within the project\'s `package.json` as\\nhash inputs. This was great, because if a dependency was explicitly upgraded in the `package.json`,\\nit would invalidate the previous hashes as the version number changed.\\n\\nHowever, what if the dependency was implicitly upgraded by another project, but the `package.json`\\nwas not modified? These kind of transitive changes were currently ignored by moon, but no longer, as\\nmoon will now resolve all `package.json` dependencies to the resolved version found in the root\\nlockfile (`package-lock.json`, `yarn.lock`, etc)!\\n\\nAt moon, we believe in providing consumers with the ability to configure to their needs, and as\\nsuch, have added a new [`hasher`](../docs/config/workspace#hasher) setting to\\n[`.moon/workspace.yml`](../docs/config/workspace). This setting will allow you to choose between the\\n2 hashing patterns above!\\n\\n## New `moon check` command\\n\\nIf you\'re like us, you\'re constantly testing, linting, typechecking, so on and so forth, a project\\nwhile developing. This was rather cumbersome, as you either had to use separate run commands\\n(`moon run project:test`, `moon run project:lint`, etc), or use the multi-run approach\\n(`moon run project:test project:lint`). Both approaches were not ideal for rapid development.\\n\\nTo simplify this process, we\'ve added a new [`moon check`](../docs/commands/check) command, that\\nwill automatically run _all_ build and test tasks for a project (or many projects)! Local and non-CI\\ntasks will _not_ be ran.\\n\\n```shell\\n# Check project at current working directory\\n$ moon check\\n\\n# Check project by name\\n$ moon check app\\n\\n# Check multiple projects by name\\n$ moon check client server\\n```\\n\\n## New `@moonrepo/types` package\\n\\nWe have many ideas for moon specific npm packages that we plan to release, but before we do that, we\\nneed to ensure all of them are built with the correct interfaces. To solve this, we are shipping a\\nnew package, [@moonrepo/types](https://www.npmjs.com/package/@moonrepo/types), that simply publishes\\nTypeScript declarations. It contains everything from project and task shapes, configuration\\nstructures, runner information, and more.\\n\\n```ts\\nimport type { ProjectConfig } from \'@moonrepo/types\';\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.13.0) for a\\nfull list of changes.\\n\\n- The runner will now fail with an error if a task has defined `outputs` but an output was not\\n created after the task is executed. This change was made so that artifacts are deterministic.\\n- The `actionRunner` setting in [`.moon/workspace.yml`](../docs/config/workspace) was renamed to\\n `runner`.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.14 release!\\n\\n- A `moon generate` command to generate new projects, files, scaffolding, and more from pre-defined\\n templates.\\n- Implicit dependency discovery. moon will now scan manifest files and determine project\\n relationships."}]}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.dd71ae46.js b/assets/js/b2f554cd.dd71ae46.js new file mode 100644 index 00000000000..c9efcb73ee3 --- /dev/null +++ b/assets/js/b2f554cd.dd71ae46.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[11477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"id":"moon-v1.16","metadata":{"permalink":"/blog/moon-v1.16","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-30_moon-v1.16.mdx","source":"@site/blog/2023-10-30_moon-v1.16.mdx","title":"moon v1.16 - Bun support, Rust improvements, and more!","description":"With this release, we\'ve focused on requests from the community, instead of internal migration work","date":"2023-10-30T00:00:00.000Z","formattedDate":"October 30, 2023","tags":[{"label":"bun","permalink":"/blog/tags/bun"},{"label":"rust","permalink":"/blog/tags/rust"},{"label":"toolchain","permalink":"/blog/tags/toolchain"},{"label":"automation","permalink":"/blog/tags/automation"},{"label":"package","permalink":"/blog/tags/package"},{"label":"manager","permalink":"/blog/tags/manager"}],"readingTime":2.95,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.16","title":"moon v1.16 - Bun support, Rust improvements, and more!","authors":["milesj"],"tags":["bun","rust","toolchain","automation","package","manager"],"image":"./img/moon/v1.16.png"},"nextItem":{"title":"proto v0.21 - Linux x64 musl support","permalink":"/blog/proto-v0.21"}},"content":"With this release, we\'ve focused on requests from the community, instead of internal migration work\\nor new features.\\n\\n\x3c!--truncate--\x3e\\n\\n## Bun as a package manager\\n\\nNow that [Bun v1 has officially released](https://bun.sh/blog/bun-v1.0) and our\\n[bun-plugin](https://github.com/moonrepo/bun-plugin) for proto has stabilized, we can start slowly\\nintegrating Bun support into moon. The first step in this series is adding Bun as a supported\\npackage manager for Node.js. Seems odd as they are conflicting runtimes... right? While true, a lot\\nof users are interested in using Bun purely as a package manager, as it can install dependencies\\nincredibly fast. So why not support it?\\n\\nIn this release, you can now install dependencies with Bun by configuring\\n[`node.packageManager`](/docs/config/toolchain#packagemanager) and\\n[`node.bun`](/docs/config/toolchain#npm-pnpm-yarn) in your toolchain.\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nnode:\\n packageManager: \'bun\'\\n bun:\\n version: \'1.0.0\'\\n```\\n\\nAdditionally, you can now execute Bun commands within tasks! However, ensure the task\'s platform is\\nstill set to `node` though, as this is using Bun as a package manager within Node.js, not as a\\nseparate runtime.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n test:\\n command: \'bun test\'\\n platform: \'node\'\\n```\\n\\nWhen using Bun, the following integrations are applied:\\n\\n- Will automatically download and install Bun for the configured version.\\n- Will install dependencies using `bun install` (deduping currently not supported).\\n- Will parse `bun.lockb` for dependency resolution and task hashing.\\n- Will use `bunx` instead of `npx` for one-off package executions.\\n- Can execute `bun` commands within tasks.\\n\\n> This change _only_ adds support for Bun as a package manager for Node.js. It does not add Bun as a\\n> supported language/platform in the toolchain, but it does pave the way for this to happen! Also\\n> note that Bun _is not supported on Windows_!\\n\\n## Configure Rust components and targets\\n\\nWe\'ve had Rust tier 2 and 3 support for quite a while now, but there was a big missing piece: the\\nability to configure and install additional\\n[components](https://rust-lang.github.io/rustup/concepts/components.html) and\\n[targets](https://doc.rust-lang.org/nightly/rustc/platform-support.html) for the current toolchain.\\nIn this release, we\'ve added support for both!\\n\\nSimply configure the [`rust.components`](/docs/config/toolchain#components) or\\n[`rust.targets`](/docs/config/toolchain#targets) settings in\\n[`.moon/toolchain.yml`](/docs/config/toolchain), and moon will automatically install them when the\\npipeline is ran. This functionality uses the same hashing implementation as\\n[`rust.bins`](/docs/config/toolchain#bins-1), so will only install the first time, and again if the\\nconfiguration changes (or the cache is removed).\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nrust:\\n version: \'1.73.0\'\\n components:\\n - \'clippy\'\\n - \'rust-analyzer\'\\n targets:\\n - \'wasm32-wasi\'\\n```\\n\\n## Force toolchain to use global binaries\\n\\nOur [toolchain](/docs/concepts/toolchain) is great for local development, as it ensures all\\ndevelopers and machines are running the exact versions of tools required for the workspace. However,\\nit becomes overkill for other environments like CI and Docker where the environment has been\\npre-configured.\\n\\nTo avoid the unnecessary overhead of download and installing tools in the toolchain, we\'re\\nintroducing the `MOON_TOOLCHAIN_FORCE_GLOBALS` environment variable. When provided, this will:\\n\\n- Disable downloading and installing tools (will still download the WASM plugins).\\n- Execute all tool commands using the global binary available on `PATH`.\\n\\n```shell\\nMOON_TOOLCHAIN_FORCE_GLOBALS=true moon ci\\n```\\n\\n> We\'re looking into ways to automate this process, but for now, this is the best solution.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.16.0) for a full list\\nof changes.\\n\\n- Added an improved task inheritance chain resolver. To fallback to the previous behavior, set\\n `experiments.interweavedTaskInheritance: false` in `.moon/workspace.yml`.\\n- Added a new [project type `automation`](/docs/config/project#type), for projects like E2E and\\n integration testing.\\n- Updated action graph cycle detection to list all nodes in the cycle (when detectable).\\n- Updated all npx calls to use a package manager equivalent. For example: `yarn dlx`, `pnpm dlx`,\\n `bunx`.\\n- Updated to support Yarn v4."},{"id":"proto-v0.21","metadata":{"permalink":"/blog/proto-v0.21","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-27_proto-v0.21.mdx","source":"@site/blog/2023-10-27_proto-v0.21.mdx","title":"proto v0.21 - Linux x64 musl support","description":"This is a very small release that primarily adds support for the Linux x64 musl target.","date":"2023-10-27T00:00:00.000Z","formattedDate":"October 27, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"linux","permalink":"/blog/tags/linux"},{"label":"musl","permalink":"/blog/tags/musl"}],"readingTime":0.67,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.21","title":"proto v0.21 - Linux x64 musl support","authors":["milesj"],"tags":["proto","linux","musl"]},"prevItem":{"title":"moon v1.16 - Bun support, Rust improvements, and more!","permalink":"/blog/moon-v1.16"},"nextItem":{"title":"proto v0.20 - New shims and binaries management","permalink":"/blog/proto-v0.20"}},"content":"This is a very small release that primarily adds support for the Linux x64 musl target.\\n\\n\x3c!--truncate--\x3e\\n\\nThanks to [cargo-dist](https://github.com/axodotdev/cargo-dist), we can now build and distribute\\nmusl binaries with relative ease. When building the binary, libraries are statically linked to\\nensure that the binary can run on any Linux distribution.\\n\\nYou can download the binary from the official\\n[GitHub release](https://github.com/moonrepo/proto/releases/tag/v0.21.0) or by running the\\n[Bash installation script](/docs/proto/install#linux-macos-wsl). In the future, we plan to support\\narm64 builds for both Linux gnu and musl.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.21.0) for a full list\\nof changes.\\n\\n- Improved file and directory locking. Will now work correctly across processes and signals,\\n especially for those killed/dropped.\\n- Updated WASM functions to use explicit Rust enum types for versions to properly handle all\\n variations (version, alias, requirement, range)."},{"id":"proto-v0.20","metadata":{"permalink":"/blog/proto-v0.20","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-20_proto-v0.20.mdx","source":"@site/blog/2023-10-20_proto-v0.20.mdx","title":"proto v0.20 - New shims and binaries management","description":"In this release, we\'re reworking how shims and binaries work.","date":"2023-10-20T00:00:00.000Z","formattedDate":"October 20, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"bin","permalink":"/blog/tags/bin"},{"label":"shim","permalink":"/blog/tags/shim"},{"label":"checksum","permalink":"/blog/tags/checksum"}],"readingTime":3,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.20","title":"proto v0.20 - New shims and binaries management","authors":["milesj"],"tags":["proto","bin","shim","checksum"]},"prevItem":{"title":"proto v0.21 - Linux x64 musl support","permalink":"/blog/proto-v0.21"},"nextItem":{"title":"moon v1.15 - Next-generation action graph","permalink":"/blog/moon-v1.15"}},"content":"In this release, we\'re reworking how shims and binaries work.\\n\\n\x3c!--truncate--\x3e\\n\\n## Shims _and_ Binaries (breaking)\\n\\nSince proto\'s inception, we\'ve used shims as a way to execute installed tools. This allowed us to\\nwrap the underlying tool binary to provide additional functionality, such as automatic version\\ndetection, runtime hooks, and more. However, this approach has some limitations, such as:\\n\\n- Shims are forced onto you and there\'s no way to use proto without shims.\\n- Shims are slower than executing the native binary, upwards of 10x slower. While this equates in\\n milliseconds, it can be noticeable dependending on the tool.\\n- For Windows, our shim files are `.cmd` _and not_ `.exe`. This causes a lot of weird and unexpected\\n problems when an environment expects a real executable, or uses a hard-coded `.exe` extension.\\n\\nTo remedy this, we\'re introducing both a shim and non-shim approach, which has resulted in a pretty\\nbig breaking change. Shims are now generated in `~/.proto/shims` (instead of `~/.proto/bin`), while\\n`~/.proto/bin` will now store symlinks to native binaries. To migrate to this new pattern, we\'re\\nintroducing a new `proto migrate` command (this only needs to be ran once).\\n\\n```shell\\n$ proto upgrade\\n$ proto migrate v0.20 --log debug\\n```\\n\\n### How it works\\n\\nWhen installing proto for the first time, or running the `proto migrate` command, we prepend `PATH`\\nwith `$PROTO_HOME/shims:$PROTO_HOME/bin`. This allows shims to be executed _first_ and fallthrough\\nto native binaries if a shim does not exist (for example, `.exe` on Windows).\\n\\nFurthermore, if you\'d prefer to _only use_ shims, or _only use_ binaries, you can update `PATH` and\\nremove the unwanted directory path.\\n\\nAnd lastly, if shims are causing problems, you can now easily reference the native binaries\\ndirectly. This was rather complicated before.\\n\\n### Comparison\\n\\n| | Shims | Binaries |\\n| -------------------- | -------------------------------------------------- | ----------------------------------------------------------------------- |\\n| **Location** | `~/.proto/shims` | `~/.proto/bin` |\\n| **Created as** | Scripts that run `proto run` | Symlinks to the native binary |\\n| **Version executed** | Detects version at runtime | Last version that was installed + pinned |\\n| **Supported for** | All tools | Only tools that support native execution (may not work for `.js` files) |\\n| **Additional files** | Creates extra files (like `bunx`, `node-gyp`, etc) | Only links the primary binary |\\n\\n## Support for minisign checksums\\n\\nWhen proto installs a tool, it runs a process known as checksum verification, where we ensure the\\ndownload hasn\'t been modified maliciously in anyway. Historically we only supported SHA256\\nchecksums, but now, we also support the new [minisign](https://jedisct1.github.io/minisign/) tool,\\nused by popular tools like [Zig](https://ziglang.org/).\\n\\nIf you\'re building a plugin for a tool that uses minisign, you can use the new\\n[`checksum_public_key`](/docs/proto/wasm-plugin#downloading-pre-builts) (WASM) or\\n[`install.checksum-public-key`](/docs/proto/toml-plugin#downloading-and-installing) (TOML) field to\\nprovide the public key for use in verification.\\n\\nWhen the checksum URL ends in a `.minisig` extension, proto will automatically use minisign for\\nchecksum verification!\\n\\n```toml\\n[install]\\nchecksum-url = \\"https://domain.com/some/path/to/checksum.minisig\\"\\nchecksum-public-key = \\"untrusted comment: ...\\"\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.20.0) for a full list\\nof changes.\\n\\n- Updated `proto use` to install tools in parallel.\\n- Updated `proto plugins` and `proto tools` to load plugins in parallel.\\n- Updated `proto run` to error when the tool attempts to self-upgrade outside of proto.\\n- Rust plugin\\n - Will now attempt to install `rustup` if it does not exist on the current machine.\\n - Will now respect the `RUSTUP_HOME` environment variable when locating the `.rustup` store.\\n- Schema plugin\\n - Added `install.checksum_public_key` for defining the public key used to verify checksums.\\n - Added `metadata.self_upgrade_commands` for defining which sub-commands should be blocked for\\n self-upgrades."},{"id":"moon-v1.15","metadata":{"permalink":"/blog/moon-v1.15","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-10-09_moon-v1.15.mdx","source":"@site/blog/2023-10-09_moon-v1.15.mdx","title":"moon v1.15 - Next-generation action graph","description":"In this release, we\'ve taken the next step in modernizing our action pipeline, by rewriting the","date":"2023-10-09T00:00:00.000Z","formattedDate":"October 9, 2023","tags":[{"label":"action","permalink":"/blog/tags/action"},{"label":"dependency","permalink":"/blog/tags/dependency"},{"label":"graph","permalink":"/blog/tags/graph"},{"label":"pipeline","permalink":"/blog/tags/pipeline"},{"label":"railway","permalink":"/blog/tags/railway"}],"readingTime":4.62,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.15","title":"moon v1.15 - Next-generation action graph","authors":["milesj"],"tags":["action","dependency","graph","pipeline","railway"],"image":"./img/moon/v1.15.png"},"prevItem":{"title":"proto v0.20 - New shims and binaries management","permalink":"/blog/proto-v0.20"},"nextItem":{"title":"proto v0.19 - Version pinning and outdated checks","permalink":"/blog/proto-v0.19"}},"content":"In this release, we\'ve taken the next step in modernizing our action pipeline, by rewriting the\\ndependency graph.\\n\\n\x3c!--truncate--\x3e\\n\\n## Hello action graph, goodbye dependency graph\\n\\nFor the past few months, we\'ve been working on a rewrite of our action pipeline, which consists of\\nthe project graph, dependency graph, task executor, process pipeline, and more. It\'s a slow process,\\nwith many different pieces that must land in sequence, but we\'re almost done. The next step in this\\nprocess is the [introduction of the new action graph](/docs/how-it-works/action-graph), which\\nreplaces the previous dependency graph.\\n\\nFor the most part, the graphs work in a similar fashion, but since we rewrote it from the ground up,\\nwe were able to resolve any discrepancies and performance issues. The biggest changes between the\\nnew and old graphs are:\\n\\n- All actions now depend on the `SyncWorkspace` action, instead of this action running arbitrarily.\\n- Cleaned up dependency chains between actions, greatly reducing the number of nodes in the graph.\\n- Renamed `RunTarget` to `RunTask`, including interactive and persistent variants.\\n- And lastly, we ditched our batched task approach for a ready queue. Continue reading for more\\n information!\\n\\n### A new performant thread pool\\n\\nIn the old dependency graph, when we\'d execute a task, we\'d order the graph topologically and then\\ngroup actions into batches (or buckets) based on their dependency chains. Batches would then be\\nexecuted in order within the thread pool. This approach worked well, but had one major flaw: it\\nwasn\'t as performant as could be. For example, if our thread pool size was 12, and a batch only had\\n2 tasks in it, what were the other 10 threads doing? Absolutely nothing. They were sitting idly,\\nwaiting for a task.\\n\\nAnd now with the new action graph, we take full advantage of all threads in the pool. Instead of the\\nbatched approach above, we now use a topological task-ready queue, where a thread without work (or\\nis waiting for work) can poll the graph for a new task to run. A task is considered ready to run if\\nit either has no dependencies, or all of its dependencies (in the chain) have been ran.\\n\\nFor large graphs, this should result in a significant performance improvement!\\n\\n### Automatic dependency linking (breaking)\\n\\nBecause of these graph changes, we do have a minor \\"breaking change\\". Tasks that depend (via `deps`)\\non other tasks from arbitrary projects (the parent project doesn\'t implicitly or explicitly depend\\non the other project), not including the root-level project, will now automatically mark that other\\nproject as a \\"peer\\" dependency (if not already configured with `dependsOn`). For example, \\"b\\"\\nbecomes a peer dependency for \\"a\\".\\n\\n```yaml title=\\"a/moon.yml\\"\\ntasks:\\n build:\\n deps: [\'b:build\']\\n```\\n\\nNow internally becomes:\\n\\n```yaml title=\\"a/moon.yml\\"\\ndependsOn:\\n - id: \'b\'\\n scope: \'peer\'\\n\\ntasks:\\n build:\\n deps: [\'b:build\']\\n```\\n\\nIf you\'d prefer this dependency to _not be_ a peer, you can explicitly configure it with a different\\nscope. For Node.js projects, the \\"build\\" scope can be used as a no-op replacement.\\n\\n```yaml title=\\"a/moon.yml\\"\\ndependsOn:\\n - id: \'b\'\\n scope: \'build\' # production, development\\n\\ntasks:\\n build:\\n deps: [\'b:build\']\\n```\\n\\nWe\'re marking this as a breaking change as this could subtly introduce cycles in the project graph\\nthat weren\'t present before, and for Node.js projects, this may inject `peerDependencies`. However,\\nthis change was necessary to ensure accurate dependency chains in the graph.\\n\\n## New `moonrepo/setup-toolchain` GitHub action\\n\\nWe\'ve begun a process to deprecate the\\n[moonrepo/setup-moon-action](https://github.com/moonrepo/setup-moon-action) and\\n[moonrepo/setup-proto](https://github.com/moonrepo/setup-proto) GitHub actions, and instead, combine\\nand replace them with a new [moonrepo/setup-toolchain](https://github.com/moonrepo/setup-toolchain)\\naction. Why a new action instead of fixing the others?\\n\\nThe biggest problem was that both previous actions shared about 90% of the same code, but were\\nslightly different in how they installed the binaries and cached the toolchain. It was was also\\nconfusing for consumers to understand and know which action to use (because they shouldn\'t be used\\ntogether).\\n\\nTo remedy this, we\'re prototyping the new\\n[moonrepo/setup-toolchain](https://github.com/moonrepo/setup-toolchain) action, which has been\\nworking quite well. It aims to solve the following:\\n\\n- Installs `proto` globally so that installed tools can also be executed globally.\\n- Conditionally installs `moon` globally if the repository is using moon (attempts to detect a\\n `.moon` directory).\\n- Caches the toolchain (`~/.proto`) so subsequent runs are faster.\\n- Hashes `.prototools` and `.moon/toolchain.yml` files to generate a unique cache key.\\n- Cleans the toolchain before caching to remove unused or stale tools.\\n- Can auto-install tools when used.\\n\\n```diff\\n# ...\\njobs:\\n ci:\\n name: CI\\n runs-on: ubuntu-latest\\n steps:\\n - uses: actions/checkout@v4\\n with:\\n fetch-depth: 0\\n- - uses: moonrepo/setup-moon-action@v1\\n+ - uses: moonrepo/setup-toolchain@v0\\n```\\n\\n## Now supported in Railway\\n\\nIf you\'re a big fan of [Railway](https://railway.app/) (like we are), and you\'re deploying a Node.js\\nbacked application, then you\'ll be happy to hear that Railway now officially and natively supports\\nmoon! We spent some time over the past month\\n[integrating moon support into their Nixpacks architecture](https://nixpacks.com/docs/providers/node).\\n\\nTo make use of this, set the `NIXPACKS_MOON_APP_NAME` environment variable to the name of your moon\\nproject that you want to be deployed. This will then automatically run `moon run :build` and\\n`moon run :start` respectively. To customize the task names, you can set the\\n`NIXPACKS_MOON_BUILD_TASK` and `NIXPACKS_MOON_START_TASK` environment variables.\\n\\n:::info\\n\\nThis is currently only supported for Node.js projects, but will be expanded to other languages in\\nthe future!\\n\\n:::\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.15.0) for a full list\\nof changes.\\n\\n- Added a `moon action-graph` command.\\n- Added a `--dependents` argument to `moon action-graph`.\\n- Added the ability to skip non-`RunTask` actions using environment variables.\\n- Deprecated the `moon dep-graph` command."},{"id":"proto-v0.19","metadata":{"permalink":"/blog/proto-v0.19","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-29_proto-v0.19.mdx","source":"@site/blog/2023-09-29_proto-v0.19.mdx","title":"proto v0.19 - Version pinning and outdated checks","description":"In this release, we\'re improving version pinning and introducing a new command to check for outdated","date":"2023-09-29T00:00:00.000Z","formattedDate":"September 29, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"pin","permalink":"/blog/tags/pin"},{"label":"global","permalink":"/blog/tags/global"},{"label":"local","permalink":"/blog/tags/local"},{"label":"outdated","permalink":"/blog/tags/outdated"}],"readingTime":1.92,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.19","title":"proto v0.19 - Version pinning and outdated checks","authors":["milesj"],"tags":["proto","pin","global","local","outdated"],"image":"./img/proto/v0.19.png"},"prevItem":{"title":"moon v1.15 - Next-generation action graph","permalink":"/blog/moon-v1.15"},"nextItem":{"title":"moon v1.14 - Improvements to running targets and toolchain versions","permalink":"/blog/moon-v1.14"}},"content":"In this release, we\'re improving version pinning and introducing a new command to check for outdated\\nversions.\\n\\n\x3c!--truncate--\x3e\\n\\n## New `proto pin` command (breaking)\\n\\nBefore our official v1 release, which is relatively soon, we\'ll be making some breaking changes with\\nthe proto APIs. The first is the introduction of the new [`proto pin`](/docs/proto/commands/pin)\\ncommand, which replaces the previous `proto local` and `proto global` commands. We felt this was a\\nmuch cleaner change, and far easier to understand than the previous command names.\\n\\n```shell\\n# v0.18\\n$ proto local go 1.20\\n$ proto global node 20\\n\\n# v0.19+\\n$ proto pin go 1.20\\n$ proto pin node 20 --global\\n```\\n\\n## New `pin-latest` setting\\n\\nWhile we\'re on the subject of pinning versions, we\'ve also introduced a new\\n[`pin-latest`](/docs/proto/config#pin-latest) setting. Do you want the latest version to always be\\npinned? Do you forgot to pass `--pin` when installing? Do you forget to run the `proto global` or\\n`proto local` commands (now `proto pin`)? If you answered yes to any of these questions, then this\\nsetting is for you.\\n\\nWhen enabled, and a tool is installed with the \\"latest\\" version, the resolved version will\\nautomatically be pinned to the configuration of your choice. For example, say we have the following\\nuser config:\\n\\n```toml title=\\"~/.proto/config.toml\\"\\npin-latest = \\"local\\"\\n```\\n\\nAnd we run one of the following commands:\\n\\n```shell\\n$ proto install go\\n$ proto install node latest\\n```\\n\\nThen the resolved version of the tool will automatically be set to the `.prototools` file in the\\ncurrent directory. Handy right?\\n\\n## New `proto outdated` command\\n\\nBy request of the community, we\'re introducing yet another new command,\\n[`proto outdated`](/docs/proto/commands/outdated). If you\'re familiar with package managers, you can\\nprobably guess what this command does! It\'ll check for newer available versions, for all tools\\nconfigured in the closest `.prototools` file. Very handy for keeping your tools up to date.\\n\\n```\\n$ proto outdated\\n\\ngo - current version 1.20.2 (via ~1.20), newer version 1.20.8, update available!\\nnode - current version 20.7.0 (via 20.7.0), latest version 20.8.0, update available!\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.19.0) for a full list\\nof changes.\\n\\n- Added `PROTO_WASM_LOG` environment variable to toggle the logging of messages from Extism and WASM\\n plugins. Useful for debugging.\\n- Updated `proto install` to auto-clean stale plugins after a successful installation."},{"id":"moon-v1.14","metadata":{"permalink":"/blog/moon-v1.14","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-25_moon-v1.14.mdx","source":"@site/blog/2023-09-25_moon-v1.14.mdx","title":"moon v1.14 - Improvements to running targets and toolchain versions","description":"In this release, we\'ve focused on loosening restrictions to improve the overall developer","date":"2023-09-25T00:00:00.000Z","formattedDate":"September 25, 2023","tags":[{"label":"run","permalink":"/blog/tags/run"},{"label":"target","permalink":"/blog/tags/target"},{"label":"toolchain","permalink":"/blog/tags/toolchain"},{"label":"version","permalink":"/blog/tags/version"},{"label":"ci","permalink":"/blog/tags/ci"},{"label":"shorthand","permalink":"/blog/tags/shorthand"}],"readingTime":2.665,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.14","title":"moon v1.14 - Improvements to running targets and toolchain versions","authors":["milesj"],"tags":["run","target","toolchain","version","ci","shorthand"],"image":"./img/moon/v1.14.png"},"prevItem":{"title":"proto v0.19 - Version pinning and outdated checks","permalink":"/blog/proto-v0.19"},"nextItem":{"title":"proto v0.18 - List installed tools and configure HTTP client","permalink":"/blog/proto-v0.18"}},"content":"In this release, we\'ve focused on loosening restrictions to improve the overall developer\\nexperience.\\n\\n\x3c!--truncate--\x3e\\n\\n## Shorthand for `moon run`\\n\\nThis has been a long requested feature and we\'re happy to finally deliver it! You can now omit the\\n\\"run\\" keyword for the [`moon run`](/docs/commands/run) command, just so long as the first non-option\\nargument is a target (must contain a `:`).\\n\\n```shell\\n# v1.13\\n$ moon run app:build\\n\\n# v1.14+\\n$ moon app:build\\n```\\n\\n## Choose targets for `moon ci`\\n\\nWhen we initially built [`moon ci`](/docs/commands/ci), we wanted a solution that simply ran\\neverything in CI that _should be ran_, taking care of all the complicated logic to determine\\naffected tasks, comparing Git branches, gathering targets, partitioning across jobs, etc... And it\\ndoes just that, and it does it well!\\n\\nHowever, one major caveat to using `moon ci` is that it runs _every task_ in the workspace (assuming\\nthey\'re affected). This has been quite a blocker for adoption as teams may want fine-grained control\\nof their CI. For example, running build tasks in one job, lint tasks in another, so on and so forth.\\n\\nIn this release, we\'ve made the necessary changes to allow these workflows, by supporting a list of\\ntargets for `moon ci`, similar to how `moon run` works. If no targets are provide, the existing \\"run\\neverything\\" logic will be used.\\n\\n```shell\\n# v1.13\\n$ moon ci\\n\\n# v1.14+\\n$ moon ci :build :lint :etc\\n```\\n\\nSplitting targets across jobs is demonstrated with the following GitHub Action workflow:\\n\\n```yaml title=\\".github/workflows/ci.yml\\"\\nname: \'CI\'\\non:\\n push:\\n branches:\\n - \'master\'\\n pull_request:\\njobs:\\n build:\\n name: \'Build\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n with:\\n fetch-depth: 0\\n - uses: \'moonrepo/setup-moon-action@v1\'\\n - run: \'moon ci :build\'\\n format-lint:\\n name: \'Format + Lint\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n with:\\n fetch-depth: 0\\n - uses: \'moonrepo/setup-moon-action@v1\'\\n - run: \'moon ci :format :lint\'\\n test:\\n name: \'Test\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n with:\\n fetch-depth: 0\\n - uses: \'moonrepo/setup-moon-action@v1\'\\n - run: \'moon ci :test\'\\n```\\n\\n## Configure partial toolchain versions\\n\\nSince moon\'s inception, our [integrated toolchain](/docs/concepts/toolchain) required fully\\nqualified semantic versions (major.minor.patch) for tools. This was by design to ensure that we\\ncould provide a consistent, reliable, and deterministic experience for all users. This solved the\\nproblem of \\"Is X using the correct version of Y?\\".\\n\\nHowever, this also meant that we were unable to support partial versions (major.minor) of tools,\\nwhich is a common use case and request for many users. Over the last few months, we\'ve made immense\\nprogress in [proto](/proto) on how it parses, resolves, and evaluates versions, known as the\\n[version specification](https://crates.io/crates/version_spec).\\n\\nWe felt the time was right to pull these changes into moon, and as such, all `version` fields in\\n[`.moon/toolchain.yml`](/docs/config/toolchain) now support partial versions, version\\nrequirements/ranges, and even aliases!\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nnode:\\n version: \'20.7\' # ~20.7\\n npm:\\n version: \'^9\'\\n\\nrust:\\n version: \'stable\'\\n```\\n\\n:::info\\n\\nLearn more about how this works under the hood in the\\n[official version specification documentation](/docs/concepts/toolchain#version-specification).\\n\\n:::\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.14.0) for a full list\\nof changes.\\n\\n- Added `packemon`, `sveltekit`, `vite`, `vitest` to\\n [moonrepo/moon-configs](https://github.com/moonrepo/moon-configs).\\n- Updated `.moon/tasks` to support nested folders, for better organization of task files.\\n- Improved handling of certificates and proxies.\\n- Updated to proto v0.18."},{"id":"proto-v0.18","metadata":{"permalink":"/blog/proto-v0.18","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-18_proto-v0.18.mdx","source":"@site/blog/2023-09-18_proto-v0.18.mdx","title":"proto v0.18 - List installed tools and configure HTTP client","description":"Today we\'ve got a small release that includes some helpful features.","date":"2023-09-18T00:00:00.000Z","formattedDate":"September 18, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"http","permalink":"/blog/tags/http"},{"label":"registry","permalink":"/blog/tags/registry"},{"label":"index","permalink":"/blog/tags/index"}],"readingTime":1.83,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.18","title":"proto v0.18 - List installed tools and configure HTTP client","authors":["milesj"],"tags":["proto","http","registry","index"],"image":"./img/proto/v0.18.png"},"prevItem":{"title":"moon v1.14 - Improvements to running targets and toolchain versions","permalink":"/blog/moon-v1.14"},"nextItem":{"title":"proto v0.17 - Experimental Python support and canary releases","permalink":"/blog/proto-v0.17"}},"content":"Today we\'ve got a small release that includes some helpful features.\\n\\n\x3c!--truncate--\x3e\\n\\n## New `proto tools` command\\n\\nAre you curious what tools you have installed? And more specifically, which versions? What about\\nconfigured aliases? Until now, you had to manually check the `~/.proto/tools` directory for this\\ninformation, but now, you can simply run [`proto tools`](/docs/proto/commands/tools) to get a list\\nof all installed tools.\\n\\nThis command will list all tools that have been installed, along with their installed versions,\\nrelevant timestamps, available aliases, and store location.\\n\\n```shell\\n$ proto tools\\ngo - Go\\n Store: ~/.proto/tools/go\\n Versions:\\n 1.20.0 - installed 08/24/23, last used 09/18/23\\n 1.20.2 - installed 01/01/70, last used 09/18/23, default version\\n\\nnode - Node.js\\n Store: ~/.proto/tools/node\\n Aliases:\\n ~20 = stable\\n Versions:\\n 18.0.0 - installed 09/03/23, last used 09/18/23, default version\\n 18.14.0 - installed 09/04/23, last used 09/04/23\\n 18.17.1 - installed 09/04/23, last used 09/04/23\\n 19.0.0 - installed 09/03/23\\n 20.0.0 - installed 09/03/23\\n 20.6.0 - installed 09/04/23, last used 09/18/23\\n```\\n\\n> This information can also be represented as JSON by passing the `--json` flag.\\n\\n## New `[http]` user settings\\n\\nFurthermore, we\'ve added a new [`[http]` setting to `~/.proto/config.toml`](/docs/proto/config#http)\\nthat allows you to configure aspects of the HTTP client, which is primarily used for downloading\\ntools.\\n\\nThis may useful if you\'re behind a proxy, a VPN, or corporate network, and certain requests and\\ncertificates are blocked.\\n\\n```toml title=\\"~/.proto/config.toml\\"\\n[http]\\nproxies = [\\"http://intra.net/proxy\\"]\\nroot-cert = \\"/path/to/root/cert.pem\\"\\n```\\n\\n## Index for third-party tools\\n\\nNow that our TOML and WASM plugins have stabilized, we felt the time was right to start working on a\\nthird-party index, a registry of all available tools. We\'ve updated the official\\n[Supported tools](/docs/proto/tools) documentation to now include third-party tools.\\n\\nAt this time, the list of tools is powered by a JS/JSON object,\\n[which can be found here](https://github.com/moonrepo/moon/blob/master/website/src/data/proto-tools.tsx).\\nIn the future, we may move this to a database, add filtering, sorting, and everything else necessary\\nfor showcasing tools maintained by the community!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.18.0) for a full list\\nof changes.\\n\\n- For TOML plugins, we updated the schema internally to be represented as JSON instead of TOML,\\n which may cause breakages depending on a version mismatch between proto and the plugin."},{"id":"proto-v0.17","metadata":{"permalink":"/blog/proto-v0.17","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-11_proto-v0.17.mdx","source":"@site/blog/2023-09-11_proto-v0.17.mdx","title":"proto v0.17 - Experimental Python support and canary releases","description":"This release implements two long requested features, Python language support and canary releases.","date":"2023-09-11T00:00:00.000Z","formattedDate":"September 11, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"plugin","permalink":"/blog/tags/plugin"},{"label":"tool","permalink":"/blog/tags/tool"},{"label":"canary","permalink":"/blog/tags/canary"},{"label":"python","permalink":"/blog/tags/python"}],"readingTime":2.39,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.17","title":"proto v0.17 - Experimental Python support and canary releases","authors":["milesj"],"tags":["proto","plugin","tool","canary","python"],"image":"./img/proto/v0.17.png"},"prevItem":{"title":"proto v0.18 - List installed tools and configure HTTP client","permalink":"/blog/proto-v0.18"},"nextItem":{"title":"moon v1.13 - Toolchain now uses WASM plugins","permalink":"/blog/moon-v1.13"}},"content":"This release implements two long requested features, Python language support and canary releases.\\n\\n\x3c!--truncate--\x3e\\n\\n## Experimental Python support\\n\\nIt\'s been quite a while since we\'ve introduced a new language into proto, and we\'re excited to\\nannounce the highly requested language, Python! Since Python is now an\\n[officially supported language](https://github.com/moonrepo/python-plugin), installing Python (and\\npip) is as simple as:\\n\\n```shell\\n$ proto install python\\n```\\n\\nHowever, we\'re marking language support as experimental for the time being. We expect our\\nimplementation to work for modern Python versions, but may not work for older versions, especially\\nPython 2. The reasons for this are as follows:\\n\\n- proto will install pre-built binaries from\\n [indygreg/python-build-standalone](https://github.com/indygreg/python-build-standalone). This is\\n an unofficial project, and _does not_ support all Python versions.\\n- If [`python-build`](https://github.com/pyenv/pyenv/blob/master/plugins/python-build/README.md) is\\n available, we\'ll attempt to use it to build + install Python. This currently requires `pyenv` to\\n be installed, and _does not_ work on Windows.\\n- Furthermore, we only support `cpython` at the moment, and do not support `pypy`, `jython`, or\\n other Python implementations. It\'s unknown whether this functionality should be in the core Python\\n plugin, or another plugin entirely.\\n\\nIn a future proto version, we want to support a true \\"build from source\\" approach for all tools.\\nOnce that functionality has landed, we can properly support Python on all platforms, but until then,\\nlet us know how this works for you!\\n\\n## Install canary releases\\n\\nA canary release is a mechanism for rolling out new features and changes to a small subset of users,\\nwithout it being an official release on an official channel. This allows users to opt-in and test\\nfunctionality if they so choose. Canary releases are not meant to be used in production, and may\\ncontain bugs or breaking changes. A canary is similar to a nightly (or weekly) release, depending on\\nthe tool.\\n\\nWe now support this workflow in proto. To install a canary release, simply use the\\n[`--canary` flag when installing a tool](/docs/proto/commands/install):\\n\\n```shell\\n$ proto install --canary\\n```\\n\\nThis will install the latest canary release to `~/.proto/tools//canary`, and _only_ the latest\\nrelease can be used. Re-installing with `--canary` will overwrite the previous canary installation.\\n\\nHowever, because we [detect a version to run with at runtime](/docs/proto/detection), how should you\\nactually run canary? The easiest way is to prefix the shim with an environment variable:\\n\\n```shell\\n$ PROTO_BUN_VERSION=canary bun ./index.ts\\n```\\n\\nOr to explicitly configure the version in [`.prototools`](/docs/proto/config):\\n\\n```toml\\nbun = \\"canary\\"\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.17.0) for a full list\\nof changes.\\n\\n- Added colors to command line `--help` menus.\\n- Updated the following locations to support partial versions and aliases:\\n - Tool versions in `.prototools`.\\n - Pinning a default version with `proto install --pin`.\\n - Setting global version with `proto global`.\\n - Setting local version with `proto local`.\\n- Node, npm, pnpm, and yarn will again extract a version from `package.json` engines."},{"id":"moon-v1.13","metadata":{"permalink":"/blog/moon-v1.13","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-05_moon-v1.13.mdx","source":"@site/blog/2023-09-05_moon-v1.13.mdx","title":"moon v1.13 - Toolchain now uses WASM plugins","description":"This is a light release that focused primarily on upgrading to the WASM based proto implementation.","date":"2023-09-05T00:00:00.000Z","formattedDate":"September 5, 2023","tags":[{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"}],"readingTime":2.76,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.13","title":"moon v1.13 - Toolchain now uses WASM plugins","authors":["milesj"],"tags":["tasks","proto","wasm"],"image":"./img/moon/v1.13.png"},"prevItem":{"title":"proto v0.17 - Experimental Python support and canary releases","permalink":"/blog/proto-v0.17"},"nextItem":{"title":"proto v0.16 - Add, remove, and purge plugins","permalink":"/blog/proto-v0.16"}},"content":"This is a light release that focused primarily on upgrading to the WASM based proto implementation.\\n\\n\x3c!--truncate--\x3e\\n\\n## proto upgrade and WASM plugins\\n\\nOver the last few months, we\'ve made immense strides on [proto](/proto), our multi-language\\ntoolchain. For those of you unaware, moon\'s toolchain is built on top of proto, and we accomplish\\nthis by utilizing the same Rust code between both tools.\\n\\nHowever, moon has been locked to [proto v0.12](/blog/proto-v0.12), which was a purely Rust based\\nimplementation. With the release of [proto v0.13](/blog/proto-v0.13) and onward, proto has moved to\\na WASM based plugin architecture (with the core still in Rust), which allows us to support more\\nlanguages, and enables developers to write plugins in non-Rust languages.\\n\\nAnd since our WASM plugins have stabilized by [proto v0.16](/blog/proto-v0.16), we felt it was time\\nto finally upgrade moon\'s implementation to the latest and greatest. So what does this mean exactly?\\nA few things:\\n\\n- If you\'re using moon\'s [toolchain](/docs/config/toolchain) (like `node`), we will now download the\\n [Node.js WASM plugins](https://github.com/moonrepo/node-plugin) in the background (to\\n `~/.proto/plugins`).\\n- These plugins are in charge of downloading and installing the Node.js, npm, pnpm, or yarn version\\n specified in your toolchain configuration.\\n- The entire plugin flow is now logged to the console, so you can see what\'s happening behind the\\n scenes.\\n- In the future (most likely moon v2), our platform and language integration will also be powered by\\n WASM plugins. This enables you to build your own custom plugins!\\n\\n:::info\\n\\nThis entire process should be transparent to all users, and you should not notice any changes.\\nHowever, in case this upgrade causes issues, we wanted to isolate it from other changes, hence the\\nlight release!\\n\\n:::\\n\\n## Allow tasks to fail\\n\\n\\"Allow tasks to fail?\\" You ask yourself. \\"Doesn\'t that defeat the point of a task runner?\\" You\\nquestion further. \\"You\'re not wrong!\\" We reply. These questions assume a perfect repository state,\\nwhere all tasks either pass or fail, and there\'s no middle ground. In reality, very rarely is that\\ntrue, and we want to support those stuck in the middle, such as:\\n\\n- In a heavy migration and it\'s known that a task is currently broken.\\n- The task is flaky but you\'ve been unable to find the root cause.\\n- Upstream dependencies have published a backwards incompatible change, and you\'re waiting on a fix.\\n- And of course, in the middle of adopting moon!\\n\\nFor situations where a task consistently or sometimes fails, but you don\'t want it to fail the\\nentire pipeline (especially in CI), you can enable the new\\n[`allowFailure` task option](/docs/config/project#allowfailure).\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n typecheck:\\n command: \'tsc --build\'\\n options:\\n allowFailure: true\\n```\\n\\nWhen enabled, failing tasks will no longer bail [`moon run`](/docs/commands/run) early, nor will it\\nexit [`moon ci`](/docs/commands/ci) with a non-zero exit code. However, we still built guard rails\\naround this feature, as we don\'t want to encourage bad practices, and one of these guard rails is\\nthat tasks that enable `allowFailure` _cannot_ be depended on by other tasks, as we cannot guarantee\\nthat it\'s side-effect free.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.13.0) for a full list\\nof changes.\\n\\n- Added colors to command line `--help` menus.\\n- Updated `runner.archivableTargets` to support tag scoped targets.\\n- Updated `moon query tasks --affected` to filter based on affected task, instead of affected\\n project."},{"id":"proto-v0.16","metadata":{"permalink":"/blog/proto-v0.16","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-09-04_proto-v0.16.mdx","source":"@site/blog/2023-09-04_proto-v0.16.mdx","title":"proto v0.16 - Add, remove, and purge plugins","description":"This release adds functionality for managing plugins and purging the proto store.","date":"2023-09-04T00:00:00.000Z","formattedDate":"September 4, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":1.445,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.16","title":"proto v0.16 - Add, remove, and purge plugins","authors":["milesj"],"tags":["proto","plugin"]},"prevItem":{"title":"moon v1.13 - Toolchain now uses WASM plugins","permalink":"/blog/moon-v1.13"},"nextItem":{"title":"proto v0.15 - Install and uninstall globals","permalink":"/blog/proto-v0.15"}},"content":"This release adds functionality for managing plugins and purging the proto store.\\n\\n\x3c!--truncate--\x3e\\n\\n## Add and remove plugins\\n\\nNow that proto has fully embraced a plugin based architecture, we thought it\'d be nice to support\\nthe management of these plugins through the CLI. This release adds two new commands:\\n[`proto add-plugin`](/docs/proto/commands/add-plugin) and\\n[`proto remove-plugin`](/docs/proto/commands/remove-plugin).\\n\\nAdding a plugin requires a unique ID and what we call a locator, which is a string that dictates\\nwhere to locate and download the plugin from. Here\'s an example for Node.js, but this isn\'t\\nnecessary as it\'s built-in:\\n\\n```shell\\n$ proto add-plugin node source:https://github.com/moonrepo/node-plugin/releases/latest/download/node_plugin.wasm\\n```\\n\\nAdditionally, removing a plugin is even easier.\\n\\n```shell\\n$ proto remove-plugin node\\n```\\n\\n## Purge tools and plugins\\n\\nproto has supported cleaning for quite some time through the\\n[`proto clean`](/docs/proto/commands/clean) command (and the\\n[`auto-clean` setting](/docs/proto/config#user-configuration)), which would automatically delete\\ninstalled tool versions and temporary files that are older then a specific timeframe. This helps to\\nfree up disk space for unused or rarely used tools.\\n\\nIn this release, we\'re expanding the `clean` command\'s functionality with a concept known as\\npurging, which will \\"delete entirely\\". The first being the new `--purge` option, which will delete a\\ntool, its manifest, _all_ installed versions, and the entire `~/.proto/tools/` directory.\\n\\n```shell\\n# Delete all traces of Node.js\\n$ proto clean --purge node\\n```\\n\\nAdditionaly, a new `--purge-plugins` option can be used to delete all downloaded plugins (the\\n`~/.proto/plugins` directory). Useful for house keeping or if you want to start fresh.\\n\\n```shell\\n$ proto clean --purge-plugins\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.16.0) for a full list\\nof changes.\\n\\n- Added folder locking during tool installation to avoid colliding processes.\\n- Renamed `PROTO_ROOT` to `PROTO_HOME`, but we\'ll support `PROTO_ROOT` for the time being."},{"id":"proto-v0.15","metadata":{"permalink":"/blog/proto-v0.15","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-08-23_proto-v0.15.mdx","source":"@site/blog/2023-08-23_proto-v0.15.mdx","title":"proto v0.15 - Install and uninstall globals","description":"This is a small release that adds support for uninstalling globals, and improves our WASM APIs.","date":"2023-08-23T00:00:00.000Z","formattedDate":"August 23, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"},{"label":"global","permalink":"/blog/tags/global"}],"readingTime":1.48,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.15","title":"proto v0.15 - Install and uninstall globals","authors":["milesj"],"tags":["proto","wasm","plugin","global"]},"prevItem":{"title":"proto v0.16 - Add, remove, and purge plugins","permalink":"/blog/proto-v0.16"},"nextItem":{"title":"moon v1.12 - Task improvements: extending, interactive, and more","permalink":"/blog/moon-v1.12"}},"content":"This is a small release that adds support for uninstalling globals, and improves our WASM APIs.\\n\\n\x3c!--truncate--\x3e\\n\\n## Uninstall global dependencies\\n\\nproto has supported [installing globals since v0.5](./proto-v0.5), but there\'s been no way to\\nuninstall an existing global, until now! In this release, we\'re introducing the\\n[`proto uninstall-global`](/docs/proto/commands/uninstall-global) command, which will do just that!\\nThe API is exactly the same as its installation counter-part.\\n\\n```shell\\nproto install-global node prettier\\n\\n# On second thought, nevermind...\\nproto uninstall-global node prettier\\n```\\n\\n### WASM functions\\n\\nImplementing this command was rather straight forward, but most of the work went into supporting\\n[`install_global` and `uninstall_global`](/docs/proto/wasm-plugin#installing-and-uninstalling-globals)\\nfunctions for WASM plugins, and then updating all existing plugins! For those of you writing your\\nown plugins, here\'s an example of what the Rust code looks like:\\n\\n```rust\\n#[plugin_fn]\\npub fn install_global(\\n Json(input): Json,\\n) -> FnResult> {\\n let result = exec_command!(inherit, \\"npm\\", [\\"install\\", \\"--global\\", &input.dependency]);\\n\\n Ok(Json(InstallGlobalOutput::from_exec_command(result)))\\n}\\n```\\n\\n### TOML setting\\n\\nWe\'ve also updated our TOML plugins to support uninstalling globals through the new\\n[`globals.uninstall-args`](/docs/proto/toml-plugin#global-packages) setting. Hopefully the name is\\nself explanatory, but it\'s a list of arguments passed to the tool\'s binary, that\'ll uninstall the\\nglobal.\\n\\n```toml\\n# ...\\n\\n[globals]\\ninstall-args = [\\"install\\", \\"--global\\", \\"{dependency}\\"]\\nuninstall-args = [\\"uninstall\\", \\"--global\\", \\"{dependency}\\"]\\n```\\n\\n## Improved WASM documentation\\n\\nWith each release we\'re slowly stabilizing the WASM and TOML APIs for an official v1 release (which\\nis soon), and with this, it requires more documentation. As part of this release, we\'ve done a giant\\npolish pass on our WASM documentation, and have included the following sections:\\n\\n- [Virtual paths](/docs/proto/wasm-plugin#virtual-paths)\\n- [Host environment](/docs/proto/wasm-plugin#host-environment)\\n- [Host functions](/docs/proto/wasm-plugin#host-functions)\\n- [Tool ID and context](/docs/proto/wasm-plugin#tool-id-and-context)\\n- [Installing and uninstalling globals](/docs/proto/wasm-plugin#installing-and-uninstalling-globals)\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.15.0) for a full list\\nof changes.\\n\\n- Major WASM API improvements, including backwards incompatible changes."},{"id":"moon-v1.12","metadata":{"permalink":"/blog/moon-v1.12","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-08-21_moon-v1.12.mdx","source":"@site/blog/2023-08-21_moon-v1.12.mdx","title":"moon v1.12 - Task improvements: extending, interactive, and more","description":"In this release, we focused heavily on improving tasks, its configuration, and related systems.","date":"2023-08-21T00:00:00.000Z","formattedDate":"August 21, 2023","tags":[{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"inheritance","permalink":"/blog/tags/inheritance"}],"readingTime":3.32,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.12","title":"moon v1.12 - Task improvements: extending, interactive, and more","authors":["milesj"],"tags":["tasks","inheritance"],"image":"./img/moon/v1.12.png"},"prevItem":{"title":"proto v0.15 - Install and uninstall globals","permalink":"/blog/proto-v0.15"},"nextItem":{"title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","permalink":"/blog/proto-v0.14"}},"content":"In this release, we focused heavily on improving tasks, its configuration, and related systems.\\n\\n\x3c!--truncate--\x3e\\n\\n## Extending sibling or inherited tasks\\n\\nThree months ago, we posted an\\n[RFC on how to support task extending / task variants](https://github.com/moonrepo/moon/issues/849).\\nOn paper this doesn\'t sound like a hard problem to solve, but internally it would of been an uphill\\nbattle to implement. Thanks to previous releases from the past few months, and the rewrite of the\\nproject graph, task builder, and more, this implementation was a breeze. To finalize the RFC, we\\nwent with option 2, by adding a new `extends` field to task configurations.\\n\\nWith this new addition, we can now rewrite this old configuration, which was needlessly\\nrepetitive...\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n lint:\\n command: \'eslint .\'\\n inputs:\\n - \'@globs(sources)\'\\n - \'@globs(tests)\'\\n - \'*.js\'\\n - \'.eslintrc.js\'\\n - \'tsconfig.json\'\\n - \'/.eslintignore\'\\n - \'/.eslintrc.js\'\\n - \'/tsconfig.eslint.json\'\\n - \'/tsconfig.options.json\'\\n\\n lint-fix:\\n command: \'eslint . --fix\'\\n local: true\\n inputs:\\n - \'@globs(sources)\'\\n - \'@globs(tests)\'\\n - \'*.js\'\\n - \'.eslintrc.js\'\\n - \'tsconfig.json\'\\n - \'/.eslintignore\'\\n - \'/.eslintrc.js\'\\n - \'/tsconfig.eslint.json\'\\n - \'/tsconfig.options.json\'\\n```\\n\\nInto the following configuration.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n lint:\\n command: \'eslint .\'\\n inputs:\\n - \'@globs(sources)\'\\n - \'@globs(tests)\'\\n - \'*.js\'\\n - \'.eslintrc.js\'\\n - \'tsconfig.json\'\\n - \'/.eslintignore\'\\n - \'/.eslintrc.js\'\\n - \'/tsconfig.eslint.json\'\\n - \'/tsconfig.options.json\'\\n\\n lint-fix:\\n extends: \'lint\'\\n args: \'--fix\'\\n local: true\\n```\\n\\nWe\'re very happy with this solution, as it\'s far more readable, maintainable, and doesn\'t introduce\\nyet another paradigm to learn. Our goal was to be as familiar as possible, while providing extensive\\nfunctionality behind the scenes, which we believe to have achieved.\\n\\nSome other interesting facts around task extending:\\n\\n- When extending a task, [merge strategies](/docs/concepts/task-inheritance#merge-strategies) are\\n applied in a similar fashion to inheritance.\\n- Inherited tasks can be extended from by project-level tasks.\\n- It\'s possible to create multiple extended chains.\\n\\n## Configure tasks as interactive\\n\\nSix months ago, we added support for [interactive tasks in v0.24](./v0.24#interactive-tasks), but\\nonly if certain conditions were met: if only 1 target is running, they are considered interactive,\\nor if the `--interactive` option was passed to [`moon run`](/docs/commands/run). However, we believe\\nit nice to support interactive tasks through task configuration directly, but it required some\\nthought into how this would work within the dependency graph and pipeline, as only 1 task can\\ninteract with stdin at a time.\\n\\nWe solved this problem by reworking our dependency graph so that interactive tasks are isolated from\\nother actions in the graph, and are not run in parallel with other actions. This will result in\\nlonger dependency chains, but results in a working stdin solution.\\n\\nTo mark a task as interactive, enable the [`options.interactive`](/docs/config/project#interactive)\\nsetting.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n init:\\n command: \'init-app\'\\n options:\\n interactive: true\\n```\\n\\n## Tokens in enviroment variables\\n\\nUp until now, [token functions and variables](/docs/concepts/token) were only supported in task\\ncommands, args, inputs, and outputs, but not environment variables... why? Honestly, there was no\\nreal reason they weren\'t supported, it simply never crossed our mind! But thanks to requests from\\nthe community, both token functions and variables are now supported in task\\n[`env`](/docs/config/project#env-1).\\n\\nThis is great for propagating moon values to other systems. For example, say you want to use moon\\nproject names for Sentry, keeping a 1:1 mapping.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n start:\\n command: \'run-server\'\\n env:\\n SENTRY_PROJECT: \'$project\'\\n```\\n\\nIf you\'re familiar with tokens, you may be asking yourself, \\"How do token functions work since they\\nexpand to a list of paths?\\" That\'s a great question! When token functions are used in an environment\\nvariable, like `@group(sources)`, the list of paths will be joined with a comma (`,`).\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n build:\\n # ...\\n env:\\n SRCS: \'@group(sources)\'\\n```\\n\\nSince the environment variable is simply a string, you could parse it with your language of choice\\nto extract the list of paths.\\n\\n```js\\nconst paths = process.env.SRCS.split(\',\');\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.12.0) for a full list\\nof changes.\\n\\n- Added git worktree support.\\n- Updated task `outputs` to support negated globs.\\n- Will now log a warning to the console if a configuration file uses the `.yaml` extension."},{"id":"proto-v0.14","metadata":{"permalink":"/blog/proto-v0.14","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-08-11_proto-v0.14.mdx","source":"@site/blog/2023-08-11_proto-v0.14.mdx","title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","description":"With this release, we\'ve finished our migration to a WASM based plugin architecture.","date":"2023-08-11T00:00:00.000Z","formattedDate":"August 11, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":2,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.14","title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","authors":["milesj"],"tags":["proto","wasm","plugin"]},"prevItem":{"title":"moon v1.12 - Task improvements: extending, interactive, and more","permalink":"/blog/moon-v1.12"},"nextItem":{"title":"moon v1.11 - Next-generation project graph","permalink":"/blog/moon-v1.11"}},"content":"With this release, we\'ve finished our migration to a WASM based plugin architecture.\\n\\n\x3c!--truncate--\x3e\\n\\n## Full migration to WASM\\n\\nIn [our last release](./proto-v0.13), we migrated the Bun, Deno, and Go plugins to WASM. In this\\nrelease, we\'re excited to announce that we have completed our WASM migration by also converting\\nNode.js (and npm, etc) and Rust to WASM plugins. We\'ve also updated our TOML plugin layer to use\\nWASM under the hood.\\n\\nWith this, 100% of our tools are now powered by WASM, and the APIs are stable enough for you, the\\nconsumers, to build your own plugins! We have plans for additional APIs in the next release,\\nprimarily installing and uninstall globals, and a hooks system, so look forward to that! To learn\\nmore about our official plugins, check out the their repositories!\\n\\n- [Bun](https://github.com/moonrepo/bun-plugin)\\n- [Deno](https://github.com/moonrepo/deno-plugin)\\n- [Go](https://github.com/moonrepo/go-plugin)\\n- [Node](https://github.com/moonrepo/node-plugin)\\n- [Rust](https://github.com/moonrepo/rust-plugin)\\n- [Schema](https://github.com/moonrepo/schema-plugin)\\n\\nThis release may seem light, but we\\n[rewrote the entire core](https://github.com/moonrepo/proto/pull/161) from the ground up to support\\na pure plugin based architecture. This was a lot of work, but our implementation is far easier to\\nwork with, and more robust. As part of this process, we improved version and range handling, archive\\nunpacking, and much more!\\n\\n> Because of the rewrite, we may have introduced a few bugs. Please report any issues!\\n\\n## Breaking changes for TOML plugins\\n\\nIn preparation for the next release, and as clean up during the rewrite, we\'ve made a few breaking\\nchanges to the TOML schema, primarily around global handling. To start, this old code:\\n\\n```toml\\n[install]\\nglobals-dir = [\\"$PROTOSTAR_HOME/bin\\", \\"$HOME/.protostar/bin\\"]\\nglobal-args = [\\"install\\", \\"--force\\", \\"{dependency}\\"]\\n```\\n\\nCan now be rewritten as:\\n\\n```toml\\n[globals]\\nlookup-dirs = [\\"$PROTOSTAR_HOME/bin\\", \\"$HOME/.protostar/bin\\"]\\ninstall-args = [\\"install\\", \\"--force\\", \\"{dependency}\\"]\\n```\\n\\nAnd lastly, the `install.unpack` setting has been removed. We believe our installation layer is\\nsmart enough to unpack or move files automatically.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.14.0) for a full list\\nof changes.\\n\\n- Versions defined in `.prototools` must be fully-qualified semantic versions. Partial versions\\n (missing patch or minor) are no longer supported. This may change in the future based on feedback.\\n- Tool and plugin names must now be in kebab-case.\\n- Node\\n - Yarn 2+ is now installed using `@yarnpkg/cli-dist`. We no longer downgrade to the latest v1.\\n - Will no longer detect a version from `engines` in `package.json`.\\n- Rust\\n - Will now detect a version/channel from `rust-toolchain.toml` and `rust-toolchain`."},{"id":"moon-v1.11","metadata":{"permalink":"/blog/moon-v1.11","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-31_moon-v1.11.mdx","source":"@site/blog/2023-07-31_moon-v1.11.mdx","title":"moon v1.11 - Next-generation project graph","description":"With this release, we\'ve focused heavily on rewriting our project graph for the next-generation of","date":"2023-07-31T00:00:00.000Z","formattedDate":"July 31, 2023","tags":[{"label":"project-graph","permalink":"/blog/tags/project-graph"},{"label":"project","permalink":"/blog/tags/project"}],"readingTime":4.095,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.11","title":"moon v1.11 - Next-generation project graph","authors":["milesj"],"tags":["project-graph","project"],"image":"./img/moon/v1.11.png"},"prevItem":{"title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","permalink":"/blog/proto-v0.14"},"nextItem":{"title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","permalink":"/blog/proto-v0.13"}},"content":"With this release, we\'ve focused heavily on rewriting our project graph for the next-generation of\\nmoon.\\n\\n\x3c!--truncate--\x3e\\n\\n## New project graph\\n\\nOne of the first features that was built for moon was the project graph, as this was required to\\ndetermine relationships between tasks and projects. Its initial implementation was rather simple, as\\nit was a basic directed acyclic graph (DAG). However, as moon grew in complexity, so did the project\\ngraph, and overtime, it has accrued a lot of cruft and technical debt.\\n\\nOne of the biggest pain points has been the project graph cache, and correctly invalidating the\\ncache for all necessary scenarios. If you\'ve been using moon for a long time, you\'re probably aware\\nof all the hot fixes and patches that have been released. Another problem with the cache, is that it\\nincluded hard-coded [file system paths](https://github.com/moonrepo/moon/issues/937) and\\n[environment variables](https://github.com/moonrepo/moon/issues/896), both of which would not\\ninvalidate the cache when changed.\\n\\nWe felt it was time to rebuild the project graph from the ground up. Some of this work has already\\nlanded in [previous releases](./moon-v1.9#rewritten-task-inheritance).\\n\\n### Old implementation\\n\\nFor those of you who are interested in the technical details, here\'s a quick overview of how the old\\nproject graph worked. To start, the graph was composed around the following phases:\\n\\n- **Build** - Projects are loaded into the graph (nodes), relationships are linked (edges),\\n configurations are read, tasks are inherited, and platform/language rules are applied.\\n- **Expand** - In all tasks, token variables and functions are expanded/substituted, dependencies\\n are expanded (`^:deps`, etc), `.env` files are read (when applicable), so on and so forth.\\n- **Validate** - Enforces project and task boundaries and constraints.\\n\\nThis is quite a lot of work, and it was all done in _a single pass_. What this means is that for\\neach project loaded into the graph, we would recursively build -> expand -> validate, until all\\nprojects have been loaded, synchronously at once in the same thread. Because this is a rather\\nexpensive operation, the project graph cache was introduced to avoid having to do this work on every\\nrun.\\n\\nMakes sense, right? For the most part yes, but there is a core problem with the solution above, and\\nif you\'ve noticed it already, amazing! The problem is that out of these 3 phases, only the build\\nphase is truly cacheable, as the expand and validate phases are far too dynamic and dependent on the\\nenvironment. This means that the cache is only partially effective, and in some cases, entirely\\nbroken.\\n\\nAnother unrelated problem with this solution, is that because everything is built in a single pass,\\nadvanced functionality that requires multiple passes is not possible and has been stuck on the\\nbacklog.\\n\\n### New implementation\\n\\nFor backwards compatibility, the new project graph works in a similar manner, but has none of the\\nshortcomings of the old implementation (hopefully). To start, the new project graph still has the\\nsame 3 phases, but they are _no longer processed in a single pass_, instead...\\n\\nThe build phase is now asynchronous, enabling deeper interoperability with the rest of the\\nasync-aware codebase. However, the critical change is that the project graph cache is now written\\n_after_ the build phase (and read _before_), instead of after the entire graph being generated.\\n\\n> The new cache file is `.moon/cache/states/partialProjectGraph.json`, and is named partial because\\n> tasks have not been expanded. Use `moon project-graph --json` for a fully expanded graph.\\n\\nThe expand phase has changed quite a bit. Instead of expanding everything at once, projects and\\ntasks are only expanded when they are needed. For example, if only running a single target, we\'ll\\nnow only expand that project and task, instead of _everything_ in the graph. With this change, you\\nshould potentially see performance increases, unless you\'re using `moon ci` or `moon check --all`.\\n\\nAnd lastly, validation is still the same, but has been reworked so that we can easily extend it with\\nmore validation rules in the future.\\n\\n### Unlocked features\\n\\nWith these changes to building and expanding, we\'ve unlocked a few new features that were not\\npossible before.\\n\\n- Task dependencies can now reference tag based targets. For example, say we want to build all React\\n projects before starting our application.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'next dev\'\\n deps:\\n - \'#react:build\'\\n```\\n\\n- Task commands and arguments will now substitute environment variables, by first checking `env`,\\n then those from the system.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n build:\\n command: \'docker build --build-arg pkg=$PKG_NAME\'\\n env:\\n PKG_NAME: \'foo-bar\'\\n```\\n\\n- Project dependencies can now mark relationships as `build`. This is only applicable for languages\\n that support build dependencies, like Rust.\\n\\n```yaml title=\\"moon.yml\\"\\ndependsOn:\\n - id: \'foo\'\\n scope: \'build\'\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.11.0) for a full list\\nof changes.\\n\\n- Identifiers (project names, file groups, etc) can now be prefixed with underscores (`_`).\\n- Added Poetry detection support for Python projects.\\n- Added an `experiments` setting to `.moon/workspace.yml`."},{"id":"proto-v0.13","metadata":{"permalink":"/blog/proto-v0.13","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-21_proto-v0.13.mdx","source":"@site/blog/2023-07-21_proto-v0.13.mdx","title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","description":"With this release, we\'re embracing WASM even further.","date":"2023-07-21T00:00:00.000Z","formattedDate":"July 21, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":2.195,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.13","title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","authors":["milesj"],"tags":["proto","wasm","plugin"]},"prevItem":{"title":"moon v1.11 - Next-generation project graph","permalink":"/blog/moon-v1.11"},"nextItem":{"title":"moon v1.10 - Mid-year quality of life improvements","permalink":"/blog/moon-v1.10"}},"content":"With this release, we\'re embracing WASM even further.\\n\\n\x3c!--truncate--\x3e\\n\\n## Core migration to WASM\\n\\nNow that WASM plugin support is up and running, we\'ve hit a non-ideal situation where we have\\nmultiple competing implementations for \\"tools\\" in proto. We currently have 3 different approaches:\\n\\n- Tools implemented in Rust and built into proto\'s core.\\n- TOML based plugins, with a simple Rust based wrapper.\\n- WASM based plugins.\\n\\nThis is far too many implementations to support, and makes it extremely difficult to add new\\nfeatures for tools, as it affects all 3. To remedy this situation, we\'ve decided to migrate all core\\ntools to WASM plugins, and remove the Rust based implementations. The core of proto and its CLI will\\nstill be Rust, but will be slowly migrated into a truly pluggable architecture.\\n\\nTo test drive and experiment with this solution, we\'ve migrated\\n[Bun](https://github.com/moonrepo/bun-plugin), [Deno](https://github.com/moonrepo/deno-plugin), and\\n[Go](https://github.com/moonrepo/go-plugin) into WASM plugins, and starting with this release, they\\nare purely powered by WASM and have been removed entirely from the Rust implementation.\\n\\nIn the next release, we hope to migrate Node.js and Rust as well. And in a future release, the TOML\\nplugins will be compiled into\\n[`.wat` files](https://developer.mozilla.org/en-US/docs/WebAssembly/Understanding_the_text_format)\\nand loaded as WASM plugins. From here, we will have a single tool implementation, and can implement\\nsome really exciting features!\\n\\n## New `github:` plugin configuration\\n\\nAlongside the `source:` configuration strategy, plugins can now be configured with the `github:`\\nstrategy to locate WASM files from GitHub releases. For example, the `bun_plugin.wasm` file will be\\ndownloaded from our\\n[`bun-plugin`\'s latest release](https://github.com/moonrepo/bun-plugin/releases).\\n\\n[Learn more about this new locator scope!](/docs/proto/plugins#github)\\n\\n```toml title=\\".prototools\\"\\n[plugins]\\nbun = \\"github:moonrepo/bun-plugin\\"\\n```\\n\\n> Bun support is built into proto, there is merely an example!\\n\\n## New `proto plugins` commands\\n\\nWith the advent of plugins, we thought it would be nice to know which plugins are actually\\nconfigured and in use, without having to manually search config files across the file system, and as\\nsuch, have added a new [`proto plugins`](/docs/proto/commands/plugins) command.\\n\\nThis command is simple. It will list all plugins that are currently configured for the current\\nproject, by loading all `.prototools` files up the tree, and loading the user\\n`~/.proto/config.toml`.\\n\\n```shell\\n$ proto plugins\\nbun - Bun\\n GitHub: moonrepo/bun-plugin\\n Tag: latest\\n\\ndeno - Deno\\n GitHub: moonrepo/deno-plugin\\n Tag: latest\\n\\ngo - Go\\n GitHub: moonrepo/go-plugin\\n Tag: latest\\n```\\n\\n[Learn more about this new command!](/docs/proto/commands/plugins)\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.13.0) for a full list\\nof changes.\\n\\n- Added documentation for writing [unit tests for WASM plugins](/docs/proto/wasm-plugin#unit-tests).\\n- Updated `proto clean` and `proto use` to load and merge all `.prototools` from the current\\n directory and upwards.\\n- Many WASM API improvements."},{"id":"moon-v1.10","metadata":{"permalink":"/blog/moon-v1.10","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-10_moon-v1.10.mdx","source":"@site/blog/2023-07-10_moon-v1.10.mdx","title":"moon v1.10 - Mid-year quality of life improvements","description":"Instead of launching a large feature this release, we\'re focusing on quality of life and developer","date":"2023-07-10T00:00:00.000Z","formattedDate":"July 10, 2023","tags":[{"label":"quality","permalink":"/blog/tags/quality"},{"label":"life","permalink":"/blog/tags/life"},{"label":"qol","permalink":"/blog/tags/qol"},{"label":"ignore","permalink":"/blog/tags/ignore"},{"label":"hasher","permalink":"/blog/tags/hasher"},{"label":"vcs","permalink":"/blog/tags/vcs"},{"label":"ci","permalink":"/blog/tags/ci"},{"label":"debug","permalink":"/blog/tags/debug"}],"readingTime":3.6,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.10","title":"moon v1.10 - Mid-year quality of life improvements","authors":["milesj"],"tags":["quality","life","qol","ignore","hasher","vcs","ci","debug"],"image":"./img/moon/v1.10.png"},"prevItem":{"title":"proto v0.13 - Bun, Deno, and Go now powered by WASM plugins","permalink":"/blog/proto-v0.13"},"nextItem":{"title":"proto v0.12 - Experimental WASM plugins","permalink":"/blog/proto-v0.12"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nInstead of launching a large feature this release, we\'re focusing on quality of life and developer\\nexperience improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Quality improvements\\n\\nIn the past 6 months, we\'ve released over 16 versions of moon, with our official v1.0 release among\\nthem. This is extremely impressive and we\'re very proud of the progress we\'ve made. To continue this\\ntrend, we\'ll be starting a new initiative that will land quality of life improvements (instead of\\nmajor features) every 6 months, starting with this release!\\n\\n### Potential breaking changes\\n\\nWhile APIs haven\'t changed, we have introduced some fixes for edge case that could be considered\\nbreaking, but for the most part, these changes probably won\'t affect you. With that being said...\\n\\nThe first fix is that tasks configured with the same `outputs` location (including glob overlap)\\nwill now error. This is extremely problematic for caching and hydration, as multiple tasks all\\nwriting to the same output will inflate the tarball, and cause unwanted side effects. To demonstrate\\nthis, the following is now an error:\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n build:\\n command: \'foo build\'\\n outputs:\\n - \'dist\'\\n\\n compile:\\n command: \'bar compile\'\\n outputs:\\n - \'dist\'\\n```\\n\\nThe other fix, which primarily applies to [`moon ci`][ci] and [`moon check`](/docs/commands/check),\\nis that a target will be skipped if one of its dependencies failed or has also been skipped.\\nPreviously the target would attempt to run and most likely fail since it relied on artifacts from\\nits dependencies (which don\'t exist). Another benefit of this change is that runs should be much\\nfaster, as we\'re not wasting time running targets that we know will fail, which is great for CI.\\n\\n### Ignore hashing input files\\n\\nWe\'re introducing 2 new settings to [`.moon/workspace.yml`](/docs/config/workspace) that\'ll provide\\nmore control over the hashing flow, [`hasher.ignorePatterns`](/docs/config/workspace#ignorepatterns)\\nand [`hasher.ignoreMissingPatterns`](/docs/config/workspace#ignoremissingpatterns).\\n\\nThe `ignorePatterns` setting can be used to entirely ignore a file (using glob patterns) from being\\nhashed, and in turn, exclude it as an input source. For example, say we want to ignore all image\\nfiles.\\n\\n```yml title=\\".moon/workspace.yml\\"\\nhasher:\\n ignorePatterns:\\n - \'**/*.{png,svg}\'\\n```\\n\\nThe `ignoreMissingPatterns` setting pairs with\\n[`hasher.warnOnMissingInputs`](/docs/config/workspace#warnonmissinginputs). When enabled, moon will\\nlog a warning to the terminal that an input is missing. This is useful for uncovering\\nmisconfigurations, but can be quite noisy when inputs are truly optional. This new setting can be\\nused to filter these warnings.\\n\\n```yml title=\\".moon/workspace.yml\\"\\nhasher:\\n warnOnMissingInputs: true\\n ignoreMissingPatterns:\\n - \'**/.eslintrc.*\'\\n - \'**/*.config.*\'\\n```\\n\\n### Customize base and head revision\\n\\nThe [`moon ci`][ci] command has always supported customizing the Git base and head revisions through\\nthe `--base` and `--head` options respectively. This was a requirement for running CI effectively,\\nby comparing across branches or commits. However, the [`moon run`][run] did not support this, as\\nthis command was designed to primarily be run locally, but it turns out, y\'all are using it in CI\\ntoo!\\n\\nTo improve the effectiveness of `moon run` in CI, we\'ve made the following improvements, all of\\nwhich require the `--remote` option to be passed.\\n\\n- Added support for `MOON_BASE` and `MOON_HEAD` environment variables, for customizing the base and\\n head revisions respectively (also supported in `moon ci`). If not defined, will use the default\\n branch and `HEAD`.\\n- When the current branch is the default branch, the base revision will be the previous commit.\\n Useful for commits landing on master/main.\\n\\n## New debugging a task guide\\n\\nRunning tasks is the most common way to interact with moon, so what do you do when your task isn\'t\\nworking as expected? Diagnose it of course! However, diagnosing the root cause of a broken task can\\nbe quite daunting:\\n\\n- Is configuration wrong?\\n- What about inheritance? Or merging?\\n- Is the task platform correct?\\n- Were tokens expanded correctly?\\n- What about variable substitution?\\n- So on and so forth...\\n\\nTo help answer these questions, we\'re excited to publish an\\n[in-depth guide for debugging a task](/docs/guides/debug-task)! These steps are the same steps we\\nuse internally to diagnose reported issues, or help the Discord community. We hope you find this\\nguide extremely beneficial!\\n\\n
    \\n
    \\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.10.0) for a full list\\nof changes.\\n\\n- Updated [`moon ci`][ci] to include a summary of all failed actions.\\n- Updated the run report to include stderr/stdout for all attempts.\\n\\n[ci]: /docs/commands/ci\\n[run]: /docs/commands/run"},{"id":"proto-v0.12","metadata":{"permalink":"/blog/proto-v0.12","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-07-07_proto-v0.12.mdx","source":"@site/blog/2023-07-07_proto-v0.12.mdx","title":"proto v0.12 - Experimental WASM plugins","description":"After months of hard work, we\'re excited to release our first iteration of WASM plugins for proto.","date":"2023-07-07T00:00:00.000Z","formattedDate":"July 7, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"wasm","permalink":"/blog/tags/wasm"},{"label":"plugin","permalink":"/blog/tags/plugin"}],"readingTime":1.885,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.12","title":"proto v0.12 - Experimental WASM plugins","authors":["milesj"],"tags":["proto","wasm","plugin"]},"prevItem":{"title":"moon v1.10 - Mid-year quality of life improvements","permalink":"/blog/moon-v1.10"},"nextItem":{"title":"moon v1.9 - VCS hooks management and improved task inheritance","permalink":"/blog/moon-v1.9"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nAfter months of hard work, we\'re excited to release our first iteration of WASM plugins for proto.\\n\\n\x3c!--truncate--\x3e\\n\\n## WASM plugins\\n\\nThree months ago, we [published an RFC](https://github.com/moonrepo/proto/issues/73) for supporting\\nplugins in proto. Plugins are a must, as they allow consumers to easily extend proto with additional\\ntools, instead of them being built into proto core (which is very time consuming).\\n\\nTwo months ago, we released support for [TOML plugins](/docs/proto/toml-plugin). These are very\\nsimple plugins powered by static configuration files. They\'re great for simple tools like CLIs and\\npre-built languages, as everything is powered by static HTTP URLs and file names. However, sometimes\\nyou need dynamic control...\\n\\nAnd after 2 months of development, and help from the [Extism team](https://extism.org/), we\'re\\nexcited to announce initial support for WASM plugins. WASM is a portable binary format, with\\nsandboxed access to the file system (via WASI), and the ability to execute processes and fetch URLs.\\nThis means that plugins can be written in any language that compiles to WASM, like Rust, C, C++, Go,\\nTypeScript, and more. This removes the requirement of writing Rust and contributing to proto\\ndirectly!\\n\\n
    \\n
    \\n\\n### Using WASM plugins\\n\\nOnce the `.wasm` file is publicly available for download, we can configure it as a plugin in\\n[`.prototools`](/docs/proto/config).\\n\\n```toml\\n[plugins]\\nmy-plugin = \\"source:https://domain.com/path/to/wasm/plugin.wasm\\"\\n```\\n\\nAnd execute all `proto` commands using the configured plugin identifier.\\n\\n```shell\\nproto install my-plugin\\n```\\n\\n### Example implementation\\n\\nThe official guide above walks you through creating a plugin, but to demonstrate the power of WASM\\nplugins, here\'s an example function that defines parameters for downloading and installing Node.js.\\nThis is written in Rust and using Extism\'s official PDK.\\n\\n```rust\\n#[plugin_fn]\\npub fn download_prebuilt(\\n Json(input): Json,\\n) -> FnResult> {\\n let version = input.env.version;\\n let arch = input.env.arch;\\n\\n let prefix = match input.env.os {\\n HostOS::Linux => format!(\\"node-v{version}-linux-{arch}\\"),\\n HostOS::MacOS => format!(\\"node-v{version}-darwin-{arch}\\"),\\n HostOS::Windows => format!(\\"node-v{version}-win-{arch}\\"),\\n other => {\\n return Err(PluginError::UnsupportedPlatform {\\n tool: NAME.into(),\\n platform: format!(\\"{:?}\\", other),\\n })?;\\n }\\n };\\n\\n let filename = if input.env.os == HostOS::Windows {\\n format!(\\"{prefix}.zip\\")\\n } else {\\n format!(\\"{prefix}.tar.xz\\")\\n };\\n\\n Ok(Json(DownloadPrebuiltOutput {\\n archive_prefix: Some(prefix),\\n download_url: format!(\\"https://nodejs.org/dist/v{version}/{filename}\\"),\\n download_name: Some(filename),\\n checksum_url: Some(format!(\\"https://nodejs.org/dist/v{version}/SHASUMS256.txt\\")),\\n ..DownloadPrebuiltOutput::default()\\n }))\\n}\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.12.0) for a full list\\nof changes."},{"id":"moon-v1.9","metadata":{"permalink":"/blog/moon-v1.9","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-06-26_moon-v1.9.mdx","source":"@site/blog/2023-06-26_moon-v1.9.mdx","title":"moon v1.9 - VCS hooks management and improved task inheritance","description":"In this release, we\'re introducing a long requested feature, VCS hooks! As well as a complete","date":"2023-06-26T00:00:00.000Z","formattedDate":"June 26, 2023","tags":[{"label":"vcs","permalink":"/blog/tags/vcs"},{"label":"git","permalink":"/blog/tags/git"},{"label":"hooks","permalink":"/blog/tags/hooks"},{"label":"task","permalink":"/blog/tags/task"},{"label":"inheritance","permalink":"/blog/tags/inheritance"}],"readingTime":2.625,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.9","title":"moon v1.9 - VCS hooks management and improved task inheritance","authors":["milesj"],"tags":["vcs","git","hooks","task","inheritance"],"image":"./img/moon/v1.9.png"},"prevItem":{"title":"proto v0.12 - Experimental WASM plugins","permalink":"/blog/proto-v0.12"},"nextItem":{"title":"proto v0.11 - New shims and better logging","permalink":"/blog/proto-v0.11"}},"content":"In this release, we\'re introducing a long requested feature, VCS hooks! As well as a complete\\nrewrite of our task inheritance layer.\\n\\n\x3c!--truncate--\x3e\\n\\n## Support for VCS hooks\\n\\nIn our last release, we added support for [code ownership](./moon-v1.8), to better help teams manage\\ntheir code review and approval workflows. To continue this trend of \\"features all companies require\\nbut don\'t have a good solution for\\", we\'re adding support for VCS hooks,\\n[starting with Git](https://git-scm.com/docs/githooks).\\n\\nIf you\'re unfamiliar with Git hooks, they\'re a mechanism for running scripts before or after certain\\nGit events. For example, before a commit is added, before pushing, or after merging. Hooks can be\\nused for such situations as:\\n\\n- Ensuring commit messages abide by a certain format.\\n- Ensuring affected project\'s source code pass linting and formatting checks.\\n- Validating configuration files.\\n- And much more!\\n\\n:::info\\n\\nFor more information, view our official in-depth [VCS hooks guide](/docs/guides/vcs-hooks)!\\n\\n:::\\n\\n### New `vcs` settings\\n\\nTo support hooks, we\'re introducing the `vcs.hooks` and `vcs.syncHooks` settings to\\n[`.moon/workspace.yml`](/docs/config/workspace). The former is where you configure the list of\\ncommands to run, grouped by hook type.\\n\\n```yaml title=\\".moon/workspace.yml\\"\\nvcs:\\n hooks:\\n pre-commit:\\n - \'pre-commit run\'\\n - \'moon run :lint --affected\'\\n```\\n\\nThe latter will automatically create and sync hooks with the local VCS checkout, enabling them going\\nforward. [Learn more about enabling hooks](/docs/guides/vcs-hooks#enabling-hooks), and choosing the\\napproach that works best for you or your team!\\n\\n### New `moon sync hooks` command\\n\\nAlthough moon can [automatically create](/docs/config/workspace#synchooksonrun) hooks when running a\\ntarget, this may be undesirable or abrasive for some developers. Instead, we also support an opt-in\\nsolution through the [`moon sync hooks`](/docs/commands/sync/hooks) command, which will manually\\ncreate the hooks.\\n\\n```shell\\n$ moon sync hooks\\n```\\n\\n## Rewritten task inheritance\\n\\nOne of the most complicated systems in moon is the task inheritance layer. On the surface, it sounds\\nrather simple, but internally it was very complicated. For common use cases, it worked very well,\\nbut for advanced use cases, how a task was \\"inherited and merged\\" was sometimes undefined behavior.\\n\\nOver the past year, we\'ve introduced many new features, such as\\n[implicit dependencies and inputs](./v0.23), [tag-based task inheritance](./moon-v1.2),\\n[project-level environment variables](./v0.23#project-level-environment-variables),\\n[custom languages](./v0.25#custom-project-language) and\\n[platforms](./v0.24#project-level-task-platform), and so much more. Each of these new features would\\nthrow yet another facet to be aware of during the task inheritance model, and over the past year, it\\nhas become rather unwieldy.\\n\\nTo rectify this situation before it becomes worse, we rewrote our\\n[project, task](https://github.com/moonrepo/moon/pull/921), and\\n[task inheritance](https://github.com/moonrepo/moon/pull/939) layers from the ground-up using a new\\nbuilder pattern, including writing all new unit tests, to properly and efficiently account for all\\nedge cases.\\n\\nGoing forward, tasks should be far more accurate and deterministic. If you encounter any weirdness,\\nit\'s either a bug/edge case that was rectified (and is no longer allowed), or a bug/edge case not\\naccounted for in our current unit test suite. Please report them either way!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.9.0) for a full list of\\nchanges.\\n\\n- Added `--clean` and `--force` flags to `moon sync codeowners` command.\\n- Updated `moon init` to detect VCS providers and resolve fully-qualified tool versions.\\n- Improved VCS file handling, caching, and performance."},{"id":"proto-v0.11","metadata":{"permalink":"/blog/proto-v0.11","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-06-25_proto-v0.11.mdx","source":"@site/blog/2023-06-25_proto-v0.11.mdx","title":"proto v0.11 - New shims and better logging","description":"This is a small release that improves shims and logs.","date":"2023-06-25T00:00:00.000Z","formattedDate":"June 25, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"shim","permalink":"/blog/tags/shim"},{"label":"logging","permalink":"/blog/tags/logging"}],"readingTime":1.04,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.11","title":"proto v0.11 - New shims and better logging","authors":["milesj"],"tags":["proto","shim","logging"]},"prevItem":{"title":"moon v1.9 - VCS hooks management and improved task inheritance","permalink":"/blog/moon-v1.9"},"nextItem":{"title":"moon v1.8 - Code owners and shared configuration","permalink":"/blog/moon-v1.8"}},"content":"This is a small release that improves shims and logs.\\n\\n\x3c!--truncate--\x3e\\n\\n## New and improved shims\\n\\nThe core facet of proto is our shims found at `~/.proto/bin`. They exist purely to re-route tool\\nexecutions internally to proto, so that we can detect the correct version of these tools to run.\\nHowever, maintaining and creating these shims has historically been very complicated. So we chose to\\nrewrite them from the ground-up!\\n\\nAll tools should continue to function exactly as they did before, if not better. Furthermore,\\nbecause of this new shim layer, we\'re now able to create what we call \\"secondary shims\\", like\\n[`bunx` for Bun](https://bun.sh/docs/cli/bunx), `pnpx` for pnpm, and `yarnpkg` for Yarn.\\n\\n## Better logging\\n\\nproto has supported logging since its initial release behind the `PROTO_LOG` environment variable.\\nHowever, this variable wasn\'t heavily documented, nor easily discoverable. So as an alternative, we\\nnow support a global `--log` option, which can be passed to any `proto` command.\\n\\n```shell\\n$ proto install node --log trace\\n```\\n\\nOn top of this, we also ran an audit of all our log calls, to improve messaging, include additional\\ninformation, rework applicable levels, and more. They should be far more readable!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.11.0) for a full list\\nof changes."},{"id":"moon-v1.8","metadata":{"permalink":"/blog/moon-v1.8","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-06-12_moon-v1.8.mdx","source":"@site/blog/2023-06-12_moon-v1.8.mdx","title":"moon v1.8 - Code owners and shared configuration","description":"With this release, we\'ve focused on a critical facet of managing a large codebase, source code","date":"2023-06-12T00:00:00.000Z","formattedDate":"June 12, 2023","tags":[{"label":"source","permalink":"/blog/tags/source"},{"label":"code","permalink":"/blog/tags/code"},{"label":"owners","permalink":"/blog/tags/owners"},{"label":"ownership","permalink":"/blog/tags/ownership"}],"readingTime":3.265,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.8","title":"moon v1.8 - Code owners and shared configuration","authors":["milesj"],"tags":["source","code","owners","ownership"],"image":"./img/moon/v1.8.png"},"prevItem":{"title":"proto v0.11 - New shims and better logging","permalink":"/blog/proto-v0.11"},"nextItem":{"title":"moon v1.7 - Next-generation configuration and errors","permalink":"/blog/moon-v1.7"}},"content":"With this release, we\'ve focused on a critical facet of managing a large codebase, source code\\nownership, and sharing task configuration.\\n\\n\x3c!--truncate--\x3e\\n\\n## Support for code ownership\\n\\nAn important workflow for companies of any size is reviewing code, and ensuring the right people are\\nreviewing and approving that code. This is especially true for large companies with hundreds of\\ndevelopers, or many distinct teams working in a single codebase.\\n\\nPopular VCS providers like [GitHub](https://github.com/), [GitLab](https://about.gitlab.com/), and\\n[Bitbucket](https://bitbucket.org/product/) provide built-in features to handle such workflows,\\naptly named code owners. They all achieve this through a similar mechanism, a single `CODEOWNERS`\\nfile that maps file system paths to owners (users, teams, groups, etc). These owners are then\\nrequired to approve a pull/merge request because it can be merged into the base branch.\\n\\n:::info\\n\\nFor more information, view our official in-depth [code owners guide](/docs/guides/codeowners)!\\n\\n:::\\n\\n### Generate a `CODEOWNERS`\\n\\nManaging the `CODEOWNERS` file manually can be a tedious task, especially when you have hundreds of\\nprojects. To help with this, moon can generate the `CODEOWNERS` file for you,\\n[based on project owners](#new-project-owners-setting), formatted to your VCS provider of choice.\\nThis helps to avoid an out-of-date ownership file!\\n\\nWe\'re introducing a few new workspace settings to handle this, the first is\\n[`codeowners`](/docs/config/workspace#codeowners), which enables and configure code ownership as a\\nwhole, and the second is [`vcs.provider`](/docs/config/workspace#provider), which determines the VCS\\nprovider to generate the file for (and unlocks future features).\\n\\n```yaml title=\\".moon/workspace.yml\\"\\ncodeowners:\\n syncOnRun: true\\n globalPaths:\\n \'*\': [\'@admins\']\\n\\nvcs:\\n manager: \'git\'\\n provider: \'github\'\\n```\\n\\nThe settings above will generate the following file:\\n\\n```shell title=\\".github/CODEOWNERS\\"\\n# (workspace)\\n* @admins\\n```\\n\\nWhile this looks very simple, it really shines once projects start adding their own granular code\\nownership. Continue reading for more information!\\n\\n### New project `owners` setting\\n\\nTo make use of code owners, you\'ll need to define an [`owners`](/docs/config/project#owners) setting\\nin a project\'s [`moon.yml`](/docs/config/project) file. This setting requires a list/map of owners\\n(contributors required to review) associated to file paths/patterns, relative from the current\\nproject\'s root.\\n\\n```yaml title=\\"packages/components/moon.yml\\"\\nowners:\\n paths:\\n \'src/\': [\'@frontend\', \'@design-system\']\\n \'*.config.js\': [\'@frontend-infra\']\\n \'*.json\': [\'@frontend-infra\']\\n```\\n\\nThese paths will then be prefixed with the project source when\\n[generating the `CODEOWNERS`](#generate-a-codeowners) file.\\n\\n```shell title=\\".github/CODEOWNERS\\"\\n# components\\n/packages/components/src/ @frontend @design-system\\n/packages/components/*.config.js @frontend-infra\\n/packages/components/*.json @frontend-infra\\n```\\n\\n### New `moon sync codeowners` command\\n\\nAlthough moon can [automatically generate](/docs/config/workspace#synconrun) the `CODEOWNERS` file\\nwhen running a target, there may be situations where this is disabled, or teams/developers would\\nlike to generate the file manually. To handle this, we\'re providing the\\n[`moon sync codeowners`](/docs/commands/sync/codeowners) command, which will trigger the generation\\nprocess.\\n\\n```shell\\n$ moon sync codeowners\\n```\\n\\n## Community-driven task configuration\\n\\nA powerful but often overlooked feature of moon is the ability to\\n[share and extend task configuration](/docs/guides/sharing-config) from remote sources. This is\\nextremely useful in...\\n\\n- Providing a single source of truth for configuration.\\n- Reducing task duplication across projects.\\n- Ensuring tasks are battle-tested and ready for use.\\n\\nThe other upside of this approach is that configuration can be _community-driven_! To support this\\nas a first-class feature, we\'re launching the\\n[`moon-configs` repository](https://github.com/moonrepo/moon-configs), a collection of task\\nconfigurations for popular programming languages, frameworks, libraries, and more! As of now, the\\nrepository is kind of empty, but we\'re hoping to grow it over time, so feel free to contribute!\\n\\nIf you\'re curious how this works in practice, we\'ll use our Rust configuration as an example. The\\nentire system is based around [tag inheritance](/docs/concepts/task-inheritance), where a project\\ncan inherit tasks from a remote source, and then extend or override them as needed. For example,\\ncreate the tag-based config:\\n\\n```yaml title=\\".moon/tasks/tag-rust.yml\\"\\nextends: \'https://raw.githubusercontent.com/moonrepo/moon-configs/master/rust/tasks-workspace.yml\'\\n```\\n\\nAnd then in Rust projects that you\'d like to inherit these tasks, add the following tags:\\n\\n```yaml title=\\"/moon.yml\\"\\ntags: [\'rust\']\\n```\\n\\nIt\'s as simple as that!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.8.0) for a full list of\\nchanges.\\n\\n- Added a new action to the graph, `SyncWorkspace`, that\'ll be used for workspace-level checks.\\n- Added `MOON_OUTPUT_STYLE` and `MOON_RETRY_COUNT` environment variables."},{"id":"moon-v1.7","metadata":{"permalink":"/blog/moon-v1.7","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-30_moon-v1.7.mdx","source":"@site/blog/2023-05-30_moon-v1.7.mdx","title":"moon v1.7 - Next-generation configuration and errors","description":"With this release, we\'ve rewritten configuration from the ground up, improved error messages, and","date":"2023-05-30T00:00:00.000Z","formattedDate":"May 30, 2023","tags":[{"label":"config","permalink":"/blog/tags/config"},{"label":"errors","permalink":"/blog/tags/errors"}],"readingTime":2.43,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.7","title":"moon v1.7 - Next-generation configuration and errors","authors":["milesj"],"tags":["config","errors"],"image":"./img/moon/v1.7.png"},"prevItem":{"title":"moon v1.8 - Code owners and shared configuration","permalink":"/blog/moon-v1.8"},"nextItem":{"title":"proto v0.9 - New GitHub action, plugin unpacking, and more","permalink":"/blog/proto-v0.9"}},"content":"import Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'ve rewritten configuration from the ground up, improved error messages, and\\nstarted work on diagnostics!\\n\\n\x3c!--truncate--\x3e\\n\\n## Configuration rewrite\\n\\nIf you\'ve ever written Rust before, you may be familiar with the state of configuration crates in\\nthe ecosystem. There\'s only 2 viable choices to choose from, and we\'ve been using 1 of them.\\nHowever, it\'s been a constant source of friction for our use cases, and didn\'t support features that\\nwe\'ve needed (built-in validation, file extending, and more).\\n\\nAfter researching our options, and attempting to contribute upstream, we decided to build our own\\nconfiguration solution, unique to moonrepo\'s projects. As such, we\'re excited to announce\\n[schematic](https://github.com/moonrepo/schematic), the most powerful configuration crate in the\\nRust ecosystem, with built-in features like:\\n\\n- Strict parsing with serde (serilization, deserialization).\\n- Code frames in errors (when applicable).\\n- Source file/URL extending.\\n- Partial file parsing and merging.\\n- Field-level merge strategies.\\n- Recursive validation.\\n- Dynamic default and env var values.\\n- And much more!\\n\\nWe\'ve spent the last few weeks building this crate from the ground up, and migrating the moon\\ncodebase to it. It\'s been quite a feat, but we\'re very excited for what it has to offer already, and\\nwhat\'s to come!\\n\\n### Strict parsing\\n\\nWhen we fail to parse a configuration file, we now include a descriptive message of the failure, and\\nthe file that failed to parse. Typically this will be for unknown fields and invalid value types.\\n\\n\\n\\n\\n> We hope this bubbles up typos and incorrectly nested settings!\\n\\n### Recursive validation\\n\\nPreviously when validation would fail, we\'d return on the first error and ignore subsequent errors.\\nThis is a non-ideal experience as you\'d have to constantly run `moon` commands until all validation\\nissues have been resolved.\\n\\nNow we aggregate all validation errors, even from deeply nested fields, and present them together.\\n\\n\\n\\n### What\'s next?\\n\\nSince [schematic](https://github.com/moonrepo/schematic) is very young, and it hasn\'t been tested\\nheavily in the ecosystem, we expect bugs and weird edge cases to popup. If you encounter any issues,\\nplease report them immediately so that we can fix them as soon as possible!\\n\\nWith that being said, we\'ll continue to improve parsing, error messages, and unique functionality,\\nlike code frames within errors. Here\'s an example for a basic JSON file.\\n\\n\\n\\n## Better errors\\n\\nYou may have noticed the errors in the screenshots above look quite different than what we\'ve\\nrendered until now, and you are correct. Going forward, all errors will be rendered by the wonderful\\nRust crate, [miette](https://crates.io/crates/miette).\\n\\nWe\'ve introduced this crate to handle _all_ errors and diagnostics within moon, not just\\nconfiguration. So expect a much better developer experience moving forward!\\n\\n\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.7.0) for a full list of\\nchanges.\\n\\n- Added support for npm lockfile v3 format."},{"id":"proto-v0.9","metadata":{"permalink":"/blog/proto-v0.9","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-23_proto-v0.9.mdx","source":"@site/blog/2023-05-23_proto-v0.9.mdx","title":"proto v0.9 - New GitHub action, plugin unpacking, and more","description":"This is a small release that provides many internal improvements.","date":"2023-05-23T00:00:00.000Z","formattedDate":"May 23, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"action","permalink":"/blog/tags/action"},{"label":"github","permalink":"/blog/tags/github"}],"readingTime":1.68,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.9","title":"proto v0.9 - New GitHub action, plugin unpacking, and more","authors":["milesj"],"tags":["proto","action","github"],"image":"./img/proto/v0.9.png"},"prevItem":{"title":"moon v1.7 - Next-generation configuration and errors","permalink":"/blog/moon-v1.7"},"nextItem":{"title":"moon v1.6 - Persistent tasks and task extending RFC","permalink":"/blog/moon-v1.6"}},"content":"This is a small release that provides many internal improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## New `moonrepo/setup-proto` GitHub action\\n\\nIf you\'re using proto in GitHub Actions and would love to automate the workflow as much as possible,\\nwell look no further, as we\'re introducing the\\n[moonrepo/setup-proto](https://github.com/moonrepo/setup-proto) action. Thanks to\\n[Tom Davidson](https://github.com/tomdavidson) for the initial spike of work!\\n\\nThis action will automatically install the `proto` binary globally, and cache the toolchain at\\n`~/.proto` (be sure to run `proto use` to download and install tools).\\n\\n```yaml\\n# ...\\njobs:\\n ci:\\n name: \'CI\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: \'actions/checkout@v4\'\\n - uses: \'moonrepo/setup-proto@v0\'\\n - run: \'proto use\'\\n```\\n\\n> If you\'re using moon, be sure to use\\n> [moonrepo/setup-moon](https://github.com/moonrepo/setup-moon-action) instead.\\n\\n## Added `install.unpack` to TOML plugin\\n\\nOur [TOML plugins](./proto-v0.7#toml-plugins) have been quite popular, and the community has been\\nusing them to much success. However, the plugin assumed that all downloaded files are archives (tar,\\nzip) and will attempt to unpack them based on file extension. This is not always the case, as some\\ndownloads are just raw executables.\\n\\nBecause of this, unpacking would sometimes fail, or we\'d be unable to extract the correct file\\nextension. To work around this limitation, we\'re introducing a new setting, `install.unpack`, that\\ncontrols whether the downloaded file should be unpacked or not. By default this setting is `true`.\\n\\nHere\'s an example using [moon](/moon).\\n\\n```toml\\n# ...\\n\\n[platform.linux]\\ndownload-file = \\"moon-{arch}-unknown-linux-{libc}\\"\\n\\n[platform.macos]\\ndownload-file = \\"moon-{arch}-apple-darwin\\"\\n\\n[platform.windows]\\ndownload-file = \\"moon-{arch}-pc-windows-msvc.exe\\"\\n\\n[install]\\ndownload-url = \\"https://github.com/moonrepo/moon/releases/download/v{version}/{download_file}\\"\\nunpack = false\\n```\\n\\n## Initial support for `node-gyp`\\n\\nThe [`node-gyp` binary](https://github.com/nodejs/node-gyp) is required for building Node.js native\\naddons, and was previously not supported in proto. We will now create a `node-gyp` binary in\\n`~/.proto/bin` when the `npm` tool is installed. Why npm? Because `node-gyp` comes packaged with npm\\ninstead of Node.js... for some reason.\\n\\nWith that being said, this is currently experimental, as we haven\'t tested it thoroughly, and are\\nunaware of all the possible edge cases. So keep that in mind!\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.9.0) for a full list\\nof changes."},{"id":"moon-v1.6","metadata":{"permalink":"/blog/moon-v1.6","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-15_moon-v1.6.mdx","source":"@site/blog/2023-05-15_moon-v1.6.mdx","title":"moon v1.6 - Persistent tasks and task extending RFC","description":"In this release, we\'re introducing a new feature called persistent tasks, and an RFC for extending","date":"2023-05-15T00:00:00.000Z","formattedDate":"May 15, 2023","tags":[{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"rfc","permalink":"/blog/tags/rfc"},{"label":"log","permalink":"/blog/tags/log"}],"readingTime":3.155,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.6","title":"moon v1.6 - Persistent tasks and task extending RFC","authors":["milesj"],"tags":["tasks","rfc","log"],"image":"./img/moon/v1.6.png"},"prevItem":{"title":"proto v0.9 - New GitHub action, plugin unpacking, and more","permalink":"/blog/proto-v0.9"},"nextItem":{"title":"moon v1.5 - Rust tier 2 and 3 support","permalink":"/blog/moon-v1.5"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nIn this release, we\'re introducing a new feature called persistent tasks, and an RFC for extending\\ntasks.\\n\\n\x3c!--truncate--\x3e\\n\\n## RFC: Task extending/variants\\n\\nBefore we dive into this release, we want to briefly talk about a new RFC that we\'re looking for\\nfeedback on, [task extending/variants](https://github.com/moonrepo/moon/issues/849). This is a\\nfeature that has been top-of-mind since moon\'s inception, but we haven\'t had the foundation in place\\nto support it, nor what the API should look like.\\n\\nThe gist of the RFC is that we want to support tasks that extend other tasks with additional\\narguments. This is a common workflow with npm scripts:\\n\\n```json\\n{\\n \\"scripts\\": {\\n \\"lint\\": \\"eslint .\\",\\n \\"lint:fix\\": \\"npm run lint --fix\\"\\n }\\n}\\n```\\n\\nAs consumers of moon, we\'d appreciate any feedback on the RFC before we move forward!\\n\\n
    \\n
    \\n\\n## Persistent tasks\\n\\nTasks that never complete, like servers and watchers, are known as persistent tasks. Historically we\\nhad support for these kinds of tasks through the [`local`](/docs/config/project#local) setting in\\n[`moon.yml`](/docs/config/project). This setting would modify the task for continuous execution by\\ndisabling caching, streaming output, and not running in CI.\\n\\nWhile this worked for the most part, there was one scenario that was still problematic, and that was\\nrunning multiple persistent tasks in parallel. Depending on the task dependency chain, sometimes\\nthese tasks would _not_ run in parallel, some may never start (blocked on another tasks), or the\\norder of nodes in the graph is non-ideal. A great example of this can be found in this\\n[discussion thread](https://github.com/moonrepo/moon/discussions/830).\\n\\nTo mitigate this problem, we\'re introducing a new task option,\\n[`persistent`](/docs/config/project#persistent) (which is also enabled by the `local` setting). When\\na task is marked as persistent, it will always _run last and in parallel_ within the dependency\\ngraph, after all dependencies (from all other persistent tasks) have completed.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'next dev\'\\n local: true\\n # OR\\n options:\\n persistent: true\\n```\\n\\nThis is a perfect solution to running multiple development servers and tools in watch mode:\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'noop\'\\n deps:\\n - \'frontend:dev\'\\n - \'backend:dev\'\\n - \'database:start\'\\n - \'tailwind:watch\'\\n```\\n\\n## Logging migration\\n\\nThis is more of a heads up than anything, but we\'ve started an internal Rust migration from the old\\n[log](https://crates.io/crates/log) crate to the new [tracing](https://crates.io/crates/tracing)\\ncrate. Tracing provides is with far more information, metrics, and instrumentation, which we hope to\\ntake advantage of in the future.\\n\\nThis will be an ongoing migration that will last for many releases, and during this time while we\\nsupport both `log` and `tracing` in unison, the logs will be a bit noisy. We\'ll be working to clean\\nup the logs as we gradually convert the codebase.\\n\\nAnd lastly, the move to `tracing` has also caused the log output to change. For example, in the log\\nexcerpt below, all messages with \\"log\\" after the date are the old `log` crate, while the others with\\ndistinct module names are the new `tracing` crate.\\n\\n```log\\n[DEBUG 14:44:19] moon_process::command_inspector Running command git status --porcelain --untracked-files -z env_vars={} working_dir=\\"~/Projects/moon\\"\\n[DEBUG 14:44:19] log Filtering based on touched status \\"all\\" log.target=\\"moon:query:touched-files\\" log.module_path=\\"moon_cli::queries::touched_files\\" log.file=\\"crates/cli/src/queries/touched_files.rs\\" log.line=85\\n[DEBUG 14:44:19] log Creating dependency graph log.target=\\"moon:dep-graph\\" log.module_path=\\"moon_dep_graph::dep_builder\\" log.file=\\"crates/core/dep-graph/src/dep_builder.rs\\" log.line=35\\n[DEBUG 14:44:19] log Running 32 actions across 5 batches log.target=\\"moon:action-pipeline\\" log.module_path=\\"moon_action_pipeline::pipeline\\" log.file=\\"crates/core/action-pipeline/src/pipeline.rs\\" log.line=93\\n[DEBUG 14:44:19] log Setting up Node.js 20.0.0 toolchain log.target=\\"moon:action:setup-tool\\" log.module_path=\\"moon_action_pipeline::actions::setup_tool\\" log.file=\\"crates/core/action-pipeline/src/actions/setup_tool.rs\\" log.line=26\\n[DEBUG 14:44:19] proto_node::resolve Resolving a semantic version for \\"20.0.0\\"\\n[DEBUG 14:44:19] proto_core::resolver:load_versions_manifest Loading versions manifest from local cache cache_file=~/.proto/temp/3d16d1693e83828f98bae178f181d5a01103b7f222db27cdeaec9b4950e951d7.json\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.6.0) for a full list of\\nchanges.\\n\\n- Updated long running processes to log a checkpoint indicating it\'s still running.\\n- Reworked file groups to use workspace relative paths, instead of project relative.\\n- Reworked processes to better handle command line arguments, shells, and piped stdin input."},{"id":"moon-v1.5","metadata":{"permalink":"/blog/moon-v1.5","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-08_moon-v1.5.mdx","source":"@site/blog/2023-05-08_moon-v1.5.mdx","title":"moon v1.5 - Rust tier 2 and 3 support","description":"With this release, we\'re announcing not just tier 2, but also tier 3 support for the Rust language.","date":"2023-05-08T00:00:00.000Z","formattedDate":"May 8, 2023","tags":[{"label":"rust","permalink":"/blog/tags/rust"},{"label":"lang","permalink":"/blog/tags/lang"},{"label":"tier","permalink":"/blog/tags/tier"}],"readingTime":2.765,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.5","title":"moon v1.5 - Rust tier 2 and 3 support","authors":["milesj"],"tags":["rust","lang","tier"],"image":"./img/moon/v1.5.png"},"prevItem":{"title":"moon v1.6 - Persistent tasks and task extending RFC","permalink":"/blog/moon-v1.6"},"nextItem":{"title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","permalink":"/blog/moon-v1.4"}},"content":"import Button from \'@site/src/ui/Button\';\\n\\nWith this release, we\'re announcing not just tier 2, but also tier 3 support for the Rust language.\\n\\n\x3c!--truncate--\x3e\\n\\nAs big fans of Rust (moon is written in it), we\'re stoked to finally add full language support, and\\nto integrate our first non-JavaScript language! This release is rather massive, and required a ton\\nof internal work, most of which we\'ll skip over.\\n\\nInstead we\'ll only talk about the key features that you, the consumers, will actually care about. To\\nstart, we\'ve started working on a Rust handbook, that outlines how to enable Rust, what kind of\\nintegrations we support, and a handful of common questions.\\n\\n
    \\n
    \\n\\n## New `rust` configurations\\n\\nLanguages in\\n[moon are enabled through configuration](/docs/how-it-works/languages#enabling-a-language) blocks in\\n[`.moon/toolchain.yml`](/docs/config/toolchain), and Rust is no different. We now support a\\n[`rust`](/docs/config/toolchain#rust) toolchain setting\\n([view all available settings](/docs/config/toolchain#rust)).\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\nrust:\\n\\tversion: \'1.69.0\'\\n```\\n\\nWhen the `rust` setting is defined, it will enable the language and\\n[deep platform integration](/docs/how-it-works/languages#tier-2--platform), and when the `version`\\nfield is defined, it will further enable\\n[toolchain support](/docs/how-it-works/languages#tier-3--toolchain). Both of these features provide\\nheavy automation, improving the overall developer experience.\\n\\nThis is fantastic, but what if another Rust project in the monorepo requires a different toolchain\\nchannel/version? If so, they can use the new [`toolchain.rust`](/docs/config/project#rust) setting\\nin [`moon.yml`](/docs/config/project) to define project-level overrides.\\n\\n```yaml title=\\"/moon.yml\\"\\ntoolchain:\\n\\trust:\\n\\t\\tversion: \'1.58.0\'\\n```\\n\\n## New `rust` task platform\\n\\nThe main benefit of Rust language support is that tasks can be ran within the context of our\\n[Rust platform integration](/docs/how-it-works/languages#tier-2--platform). This can easily be done\\nby setting the project\'s [`language`](/docs/config/project#language) to \\"rust\\" in\\n[`moon.yml`](/docs/config/project).\\n\\nThis will set the [`platform`](/docs/config/project#platform-1) of all tasks within the project to\\n\\"rust\\", unless they have been explicitly configured to something else.\\n\\n```yaml title=\\"/moon.yml\\"\\nlanguage: \'rust\'\\ntype: \'application\'\\n```\\n\\nIf you\'re mixing languages within a single project, and can\'t use the `language` setting above, you\\ncan define `platform` on the task directly.\\n\\n```yaml title=\\"/moon.yml\\"\\ntasks:\\n\\tbuild:\\n\\t\\tcommand: \'cargo build\'\\n\\t\\tplatform: \'rust\'\\n```\\n\\n> We also attempt to detect this automatially by comparing command names and checking for the\\n> existence of files like `Cargo.toml`.\\n\\n## Updated `moon init` command\\n\\nAs part of this release, we\'ve also updated the [`moon init`](/docs/commands/init) command to\\nsupport initializing Rust. By default, the command will prompt you on whether to install Rust or\\nnot, otherwise, when `--yes` is passed, the language will be installed if a `Cargo.toml` file is\\ndetected in the destination directory.\\n\\nIf you already have a moon workspace, you can pass `--tool rust` to install Rust into the workspace.\\n\\n```shell\\n$ moon init --tool rust\\n```\\n\\n## Updated `moon docker` commands\\n\\nAnd lastly, we also want to provide a great [`Dockerfile` experience](/docs/guides/docker) when\\nusing Rust. The [`moon docker scaffold`](/docs/commands/docker/scaffold) command has been updated to\\ncopy `Cargo.toml`, `Cargo.lock`, `rust-toolchain.toml`, and other Rust/Cargo related files. When\\nusing Cargo workspaces, nested `Cargo.toml` files are also scaffolded.\\n\\n```docker\\nRUN moon docker scaffold rust-app\\n```\\n\\nFurthermore, we\'ve also updated the [`moon docker prune`](/docs/commands/docker/scaffold) command to\\nremove the entire `target` directory, greatly reducing the size of the image. Pruning makes the\\nassumption that it\'s being ran _after_ a release profile has been built.\\n\\n```docker\\nRUN moon run rust-app:build-release\\nRUN moon docker prune\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.5.0) for a full list of\\nchanges."},{"id":"moon-v1.4","metadata":{"permalink":"/blog/moon-v1.4","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-05-01_moon-v1.4.mdx","source":"@site/blog/2023-05-01_moon-v1.4.mdx","title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","description":"With this release, we\'re bringing further improvements to tags and MQL.","date":"2023-05-01T00:00:00.000Z","formattedDate":"May 1, 2023","tags":[{"label":"query","permalink":"/blog/tags/query"},{"label":"lang","permalink":"/blog/tags/lang"},{"label":"tag","permalink":"/blog/tags/tag"},{"label":"alias","permalink":"/blog/tags/alias"}],"readingTime":1.73,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.4","title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","authors":["milesj"],"tags":["query","lang","tag","alias"],"image":"./img/moon/v1.4.png"},"prevItem":{"title":"moon v1.5 - Rust tier 2 and 3 support","permalink":"/blog/moon-v1.5"},"nextItem":{"title":"proto v0.8 - Version detection and installation improvements","permalink":"/blog/proto-v0.8"}},"content":"With this release, we\'re bringing further improvements to tags and MQL.\\n\\n\x3c!--truncate--\x3e\\n\\n## Run targets by tag with `#tag:task`\\n\\nWe love our community, as you all continuously suggest new and awesome features that haven\'t crossed\\nour minds. One such feature was the ability to run tasks for all projects with a tag,\\n[suggested by @theoephraim](https://github.com/moonrepo/moon/issues/803), which is now possible with\\nthe new [tag scope](/docs/concepts/target#by-tag), `#tag:task`.\\n\\nAs an example, we can easily lint all projects that have the `frontend` tag.\\n\\n```shell\\n$ moon run \'#frontend:lint\'\\n```\\n\\n> Because `#` is special syntax and denotes a comment, the target will need to be quoted to work\\n> correctly!\\n\\n## Updated `moon query` commands to support MQL\\n\\nLast week we announced [MQL](./moon-v1.3#run-targets-based-on-a-query), a custom query language for\\napplying filters to moon\'s project graph, primarily through the [`moon run`](/docs/commands/run)\\ncommand. We plan to slowly integrate MQL throughout moon as it provides an easy to use API, and an\\noverall better developer experience.\\n\\nAs such, we\'ve updated both [`moon query projects`](/docs/commands/query/projects) and\\n[`moon query tasks`](/docs/commands/query/tasks) to support MQL statements as an optional first\\nargument. Totally makes sense that query commands would support MQL!\\n\\n```shell\\n# Find all projects with a `lint` or `build` task\\n$ moon query projects \\"task=[lint,build]\\"\\n\\n# Find all tasks with an id that starts with \\"dev\\"\\n$ moon query tasks \\"task~dev-*\\"\\n```\\n\\n## Deprecated `node.aliasPackageNames` setting\\n\\nmoon project\'s support the [concept of aliasing](/docs/concepts/project#aliases), where\\nlanguage/ecosystem specific names are used alongside moon\'s. For example, the `name` field from\\n`package.json`. However, aliasing was off by default for Node.js projects and had to be explicitly\\nenabled with the `node.aliasPackageNames` setting.\\n\\nIn an effort to streamline moon adoption for Node.js codebases, we\'re deprecating that setting, and\\ninstead will now always inherit the `package.json` name as an alias. For example, if you\'re package\\nname was `@company/utils`, you can now run a target like so:\\n\\n```shell\\n$ moon run @company/utils:build\\n```\\n\\n> This setting is now a no-op and can be removed from your configuration.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.4.0) for a full list of\\nchanges.\\n\\n- Upgraded to proto v0.8."},{"id":"proto-v0.8","metadata":{"permalink":"/blog/proto-v0.8","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-28_proto-v0.8.mdx","source":"@site/blog/2023-04-28_proto-v0.8.mdx","title":"proto v0.8 - Version detection and installation improvements","description":"In this release, we\'re dropping some quality of life workflow improvements.","date":"2023-04-28T00:00:00.000Z","formattedDate":"April 28, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"detect","permalink":"/blog/tags/detect"}],"readingTime":1.295,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.8","title":"proto v0.8 - Version detection and installation improvements","authors":["milesj"],"tags":["proto","detect"],"image":"./img/proto/v0.8.png"},"prevItem":{"title":"moon v1.4 - New tag target scope, MQL support for query commands, and more!","permalink":"/blog/moon-v1.4"},"nextItem":{"title":"moon v1.3 - Advanced run targeting and an official proto plugin","permalink":"/blog/moon-v1.3"}},"content":"In this release, we\'re dropping some quality of life workflow improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Built-in detection for `proto use`\\n\\nThe [`proto use`](/docs/proto/commands/use) command is extremely useful for bootstrapping your\\ndevelopment environment with all necessary tooling, but it had a hard requirement on the\\n[`.prototools`](/docs/proto/config) configuration file. But what if you\'re already using non-proto\\nversion files, like `.nvmrc` or `.dvmrc`? Or maybe manifest settings, like `packageManager` or\\n`engines` in `package.json`?\\n\\nGreat questions, and we agree! As such, we\'ve updated `proto use` to _also_ detect a version from\\nthe environment for the current working directory. We suggest using `.prototools`, but feel free to\\nconfigure your environments as you so choose!\\n\\n```shell\\n# Install all the things!\\n$ proto use\\n```\\n\\n## Smarter version detection\\n\\nOne of proto\'s best features is its [contextual version detection](/docs/proto/detection), but it\\ndid have 1 shortcoming. When we detected a partial version, like `1.2`, we\'d resolve to a fully\\nqualified version with the latest patch version (e.g. `1.2.3`). While this worked in most cases,\\neverytime a new patch was released upstream (e.g. `1.2.4`), proto would error and require a manual\\ninstall of this new version. This was pretty annoying as `1.2.3` and `1.2.4` are likely to be\\ncompatible, and both satisfy the `1.2` version constraint.\\n\\nTo mitigate this scenario, we\'ve updated the version detection to scan the locally installed\\nversions _first_ when encountering a partial version. This solves the problem above by allowing\\n`1.2.3` to satisfy the requirement, instead of forcing an install of `1.2.4`.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/proto/releases/tag/v0.8.0) for a full list\\nof changes."},{"id":"moon-v1.3","metadata":{"permalink":"/blog/moon-v1.3","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-24_moon-v1.3.mdx","source":"@site/blog/2023-04-24_moon-v1.3.mdx","title":"moon v1.3 - Advanced run targeting and an official proto plugin","description":"After many months of design and development, we\'re finally introducing MQL, our own unique query","date":"2023-04-24T00:00:00.000Z","formattedDate":"April 24, 2023","tags":[{"label":"query","permalink":"/blog/tags/query"},{"label":"lang","permalink":"/blog/tags/lang"},{"label":"proto","permalink":"/blog/tags/proto"},{"label":"schema","permalink":"/blog/tags/schema"},{"label":"toml","permalink":"/blog/tags/toml"},{"label":"target","permalink":"/blog/tags/target"}],"readingTime":2.35,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.3","title":"moon v1.3 - Advanced run targeting and an official proto plugin","authors":["milesj"],"tags":["query","lang","proto","schema","toml","target"],"image":"./img/moon/v1.3.png"},"prevItem":{"title":"proto v0.8 - Version detection and installation improvements","permalink":"/blog/proto-v0.8"},"nextItem":{"title":"proto v0.7 - First step towards plugins","permalink":"/blog/proto-v0.7"}},"content":"After many months of design and development, we\'re finally introducing MQL, our own unique query\\nlanguage!\\n\\n\x3c!--truncate--\x3e\\n\\n## Run targets based on a query\\n\\nOur [`moon run`](/docs/commands/run) command is pretty powerful. It allows you to run targets in\\none, many, or all projects. It also supports running multiple targets in parallel. However, it\\nwasn\'t powerful enough, as it couldn\'t run the following types of scenarios:\\n\\n- Run a target in projects of a specific language.\\n- Run a target in libraries or applications.\\n- Run a target based on project file system path.\\n- Run a target in projects with a matching tag.\\n- Run a target in projects that match a keyword.\\n- Run a target in projects based on AND or OR conditions.\\n- Or a combination of these.\\n- And many more!\\n\\nSupporting all of these scenarios through CLI arguments just feels like bad design, and would result\\nin a poor developer experience. There had to be a better way to support this! So we set out to solve\\nthis problem, and after much thought, we\'re stoked to introduce\\n[MQL, a query language unique to moon](/docs/concepts/query-lang).\\n\\nWith MQL, you can now run scenarios like \\"I want to build all Node.js libraries\\", or \\"I want to lint\\nand test all Rust projects\\". Simply pass an unscoped target and a query to the `run` command:\\n\\n```shell\\n$ moon run :build --query \\"taskPlatform=node && projectType=library\\"\\n\\n$ moon run :lint :test --query \\"language=rust\\"\\n```\\n\\nThis is only the first iteration of MQL and it\'s already quite powerful. Expect additional fields,\\nfeatures, and functionality in the future!\\n\\n## Plugin support for proto\\n\\nEarlier this week we announced [plugin support for proto](./proto-v0.7), starting with a TOML based\\nplugin. This is great as it allows _any_ kind of versioned tool to be managed in proto\'s toolchain,\\nso why not moon? Starting with this release, you can now install and manage moon _from_ proto, using\\nour officially maintained TOML plugin.\\n\\nIn your `.prototools` or `~/.proto/config.toml` file, add the following snippet:\\n\\n```toml title=\\".prototools\\"\\n[plugins]\\nmoon = \\"source:https://raw.githubusercontent.com/moonrepo/moon/master/proto-plugin.toml\\"\\n```\\n\\nAnd as easy as that, you can now use `moon` as a tool within any `proto` command. For example:\\n\\n```shell\\n$ proto install moon 1.3.0\\n$ proto list-remote moon\\n$ proto bin moon\\n```\\n\\nFurthermore, with proto, we can now pin the version of moon on a per-project basis. Perfect for\\nenforcing the same version for all developers on your team!\\n\\n```toml title=\\".prototools\\"\\nmoon = \\"1.3.0\\"\\n```\\n\\n> When using this approach, be sure `~/proto/.bin` is in your `PATH`, and takes precedence over\\n> `~/.moon/bin`.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.3.0) for a full list of\\nchanges.\\n\\n- Upgraded to proto v0.7.\\n- Improved accuracy of our globbing utilities, especially around dotfiles/dotfolders.\\n- Updated config loading to be strict and error on unknown fields for non-root fields."},{"id":"proto-v0.7","metadata":{"permalink":"/blog/proto-v0.7","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-21_proto-v0.7.mdx","source":"@site/blog/2023-04-21_proto-v0.7.mdx","title":"proto v0.7 - First step towards plugins","description":"With this release, we\'re very excited to announce our initial support for plugins in proto!","date":"2023-04-21T00:00:00.000Z","formattedDate":"April 21, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"plugins","permalink":"/blog/tags/plugins"}],"readingTime":2.36,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.7","title":"proto v0.7 - First step towards plugins","authors":["milesj"],"tags":["proto","plugins"],"image":"./img/proto/v0.7.png"},"prevItem":{"title":"moon v1.3 - Advanced run targeting and an official proto plugin","permalink":"/blog/moon-v1.3"},"nextItem":{"title":"moon v1.2 - Tag based task inheritance","permalink":"/blog/moon-v1.2"}},"content":"With this release, we\'re very excited to announce our initial support for plugins in proto!\\n\\n\x3c!--truncate--\x3e\\n\\n## Initial plugins architecture\\n\\nLast week we posted an [RFC for a new plugins architecture](./proto-v0.6#rfc-plugins-system) for\\nproto. We believe plugins will unlock an array of capabilities for proto, will enable the community\\nto add their own custom integrations, and the ability for tools to be managed within proto\'s\\ntoolchain.\\n\\nWe were very excited for this RFC, and couldn\'t wait, so we spent the last week prototyping\\nimplementations. We got the basics of downloading, installing, and enabling a plugin at _runtime_\\nworking incredibly fast. However, implementing the entire RFC in 1 release would have taken too\\nlong, and we wanted to avoid dropping such a large feature in a single release. Because of this,\\nwe\'ve only implemented [TOML plugins](/docs/proto/plugins#toml-plugin) in this release, and will\\nimplement WASM plugins in a future release.\\n\\n### TOML plugins\\n\\nYou may be asking yourself, aren\'t plugins typically code? For the most part, yes, but after\\nbuilding a \\"version manager\\" for multiple languages, we\'ve come to the realization that many tools\\ncan simply be supported through a basic configuration file.\\n\\nAt minimum, tools require the following pieces to be managed:\\n\\n- Where and how to download the tool\\n- How to install/unpack the tool\\n- How to resolve available versions to install\\n- How to execute the tool\'s binary\\n\\nAll 4 of these pieces can be solved with a configuration file, and as such, we opted to support a\\n[TOML schema based plugin](/docs/proto/plugins#toml-plugin) as an alternative to a code based\\nplugin. The other benefits of a schema is that it\'s _easy to write, read, and maintain_, doesn\'t\\nrequire any code, and doesn\'t force you into a specific programming language.\\n\\nTo demonstate how this plugin works, here\'s an example of a [moon](/moon) TOML schema.\\n\\n```toml title=\\"moon-schema.toml\\"\\nname = \\"moon\\"\\ntype = \\"cli\\"\\n\\n[platform.linux]\\ndownload-file = \\"moon-{arch}-unknown-linux-{libc}\\"\\n\\n[platform.macos]\\ndownload-file = \\"moon-{arch}-apple-darwin\\"\\n\\n[platform.windows]\\ndownload-file = \\"moon-{arch}-pc-windows-msvc.exe\\"\\n\\n[install]\\ndownload-url = \\"https://github.com/moonrepo/moon/releases/download/v{version}/{download_file}\\"\\n\\n[resolve]\\ngit-url = \\"https://github.com/moonrepo/moon\\"\\n```\\n\\nVery simple right? With this, you can now configure moon as a plugin within proto.\\n\\n```toml title=\\".prototools\\"\\nmoon = \\"1.2.0\\"\\n\\n[plugins]\\nmoon = \\"source:./path/to/moon-schema.toml\\"\\n```\\n\\nAnd ultimately manage every version of moon through proto! Because moon is now a plugin, every\\ncommand in proto that accepts a `` argument, will now accept `moon` as a valid tool.\\n\\n```shell\\n$ proto install moon 1.2.0\\n$ proto list-remote moon\\n$ proto use\\n```\\n\\nLearn more about [TOML plugins in the official docs](/docs/proto/plugins#toml-plugin)!\\n\\n## Cleaning improvements\\n\\nLast week we introduced the [`proto clean`](/docs/proto/commands/clean) command that will\\nautomatically delete stale and unused tools from the toolchain. This week we\'ve implemented a few\\nimprovements to the cleaning process:\\n\\n- Added a `--yes` option to [`proto clean`](/docs/proto/commands/clean), allowing prompts to be\\n bypassed.\\n- Added a `auto-clean` setting to `~/.proto/config.toml`, enabling automatic cleaning when\\n [`proto use`](/docs/proto/commands/use) is ran."},{"id":"moon-v1.2","metadata":{"permalink":"/blog/moon-v1.2","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-17_moon-v1.2.mdx","source":"@site/blog/2023-04-17_moon-v1.2.mdx","title":"moon v1.2 - Tag based task inheritance","description":"In this small release, we\'re improving our task inheritance and performance.","date":"2023-04-17T00:00:00.000Z","formattedDate":"April 17, 2023","tags":[{"label":"tags","permalink":"/blog/tags/tags"},{"label":"tasks","permalink":"/blog/tags/tasks"}],"readingTime":1.265,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.2","title":"moon v1.2 - Tag based task inheritance","authors":["milesj"],"tags":["tags","tasks"],"image":"./img/moon/v1.2.png"},"prevItem":{"title":"proto v0.7 - First step towards plugins","permalink":"/blog/proto-v0.7"},"nextItem":{"title":"proto v0.6 - Unused cleaning and improved global binaries","permalink":"/blog/proto-v0.6"}},"content":"In this small release, we\'re improving our task inheritance and performance.\\n\\n\x3c!--truncate--\x3e\\n\\n## Task inheritance based on project tags\\n\\nIn v0.23 we introduced [scoped task inheritance](/blog/v0.23#improved-task-inheritance-model) by\\nproject type/language, and in v1.0 we introduced [project tagging](/blog/moon-v1.0#project-tagging),\\nbut what if we combined both of these features? In this release, you can now define workspace-level\\ntasks _by tag_ that\'ll be inherited by all projects with that tag.\\n\\nTo demonstrate this, say you have a monorepo composed of multiple [Astro](https://astro.build)\\napplications, each duplicating the same Astro tasks. Instead of duplicating, define an `astro` tag\\nin each project\'s [`moon.yml`](/docs/config/project#tags).\\n\\n```yaml title=\\"/moon.yml\\"\\nlanguage: \'typescript\'\\ntype: \'application\'\\ntags: [\'astro\']\\n```\\n\\nAnd then create a new tasks configuration at `.moon/tasks/tag-astro.yml` with the following\\ncontents:\\n\\n```yaml title=\\".moon/tasks/tag-astro.yml\\"\\nfileGroups:\\n\\tastro:\\n\\t\\t- \'public/**/*\'\\n\\t\\t- \'src/**/*\'\\n\\t\\t- \'astro.config.*\'\\n\\t\\t- \'tsconfig.json\'\\n\\ntasks:\\n\\tastro:\\n\\t\\tcommand: \'astro\'\\n\\t\\tlocal: true\\n\\n\\t# Development server\\n\\tdev:\\n\\t\\tcommand: \'astro dev\'\\n\\t\\tlocal: true\\n\\n\\t# Production build\\n\\tbuild:\\n\\t\\tcommand: \'astro build\'\\n\\t\\tinputs: [\'@group(astro)\']\\n\\t\\toutputs: [\'dist\']\\n\\n\\t# Check .astro files\\n\\tcheck:\\n\\t\\tcommand: \'astro check\'\\n\\t\\tinputs: [\'@group(astro)\']\\n\\t\\tdeps: [\'typecheck\']\\n\\n\\t# Preview production build locally\\n\\tpreview:\\n\\t\\tcommand: \'astro preview\'\\n\\t\\tdeps: [\'build\']\\n\\t\\tlocal: true\\n```\\n\\nEach of these Astro applications will now inherit all 5 tasks and the file group automatically! This\\nhelps to greatly reduce maintenance overhead and help enforce consistency across projects. Jump to\\nthe official [task inheritance docs](/docs/concepts/task-inheritance) for more information on tag\\nbased inheritance.\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.2.0) for a full list of\\nchanges.\\n\\n- Upgraded to proto v0.6.\\n- Improvements to file system operations.\\n- Minor improvements to performance."},{"id":"proto-v0.6","metadata":{"permalink":"/blog/proto-v0.6","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-13_proto-v0.6.mdx","source":"@site/blog/2023-04-13_proto-v0.6.mdx","title":"proto v0.6 - Unused cleaning and improved global binaries","description":"With this release, we\'re expanding on our global binary support and providing quality of life","date":"2023-04-13T00:00:00.000Z","formattedDate":"April 13, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"globals","permalink":"/blog/tags/globals"},{"label":"clean","permalink":"/blog/tags/clean"},{"label":"errors","permalink":"/blog/tags/errors"}],"readingTime":2.42,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.6","title":"proto v0.6 - Unused cleaning and improved global binaries","authors":["milesj"],"tags":["proto","globals","clean","errors"],"image":"./img/proto/v0.6.png"},"prevItem":{"title":"moon v1.2 - Tag based task inheritance","permalink":"/blog/moon-v1.2"},"nextItem":{"title":"proto v0.5 - Version aliasing and global binaries","permalink":"/blog/proto-v0.5"}},"content":"import Button from \'@site/src/ui/Button\';\\nimport Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'re expanding on our global binary support and providing quality of life\\nimprovements.\\n\\n\x3c!--truncate--\x3e\\n\\n## RFC: Plugins system\\n\\nSince proto\'s inception, plugins have been top of mind, but runtime based plugins in Rust are\\n_difficult_. The only viable solution to this problem is WASM, but most developers have never used\\nWASM before, nor are they familiar with WASM tooling (myself included).\\n\\nHowever, we\'re at a point in proto\'s life-cycle where the core is rather stable, and it\'s time to\\nstart investigating plugin support. To this end, we\'ve introduced a small RFC outlining how plugins\\nwill be used, enabled, and implemented. It\'s not very in-depth as we want to avoid implementation\\ndetails, but from a consumers perspective, we want to ensure that it makes sense.\\n\\nWe\'d very much appreciate it if you could take a look at the RFC and provide feedback. If you have\\nany experience in Rust runtime plugins, we\'d love to hear your thoughts as well.\\n\\n
    \\n
    \\n\\n## Cleaning stale and unused tools\\n\\nIs your `~/.proto` installation growing out of control? Are there old versions of tools that you\\ndon\'t use anymore? Or versions you never used? Unsure if you\'re using a tool at all or still need\\nit?\\n\\nTo help avoid these questions and problems, we\'re introducing a new command that will uninstall\\nstale and unused tools, [`proto clean`](/docs/proto/commands/clean). When ran, the command will\\nlaunch an interactive session and scan the file system for old tools, prompting you to remove them.\\n\\n```shell\\n$ proto clean\\n```\\n\\nBy default the command will uninstall tools that haven\'t been used in over 30 days, but this can be\\ncustomized with the `--days` option.\\n\\n:::info\\n\\nTools installed before v0.6 will most likely be considered stale, as we weren\'t tracking install and\\nlast used timestamps. However, everything will work as intended after running a tool or simply\\nmoving forward from this point.\\n\\n:::\\n\\n## Global binary improvements\\n\\nIn our [previous release](./proto-v0.5), we announced the\\n[`proto install-global`](/docs/proto/commands/install-global) command for installing global\\ndependencies that are unique per tool. Thanks to the community, this command has been updated to\\nsupport installing multiple globals at once!\\n\\n```shell\\n$ proto install-global node typescript webpack-cli\\n```\\n\\nOn top of this, we\'re also introducing another command that was requested by the community,\\n[`proto list-global`](/docs/proto/commands/list-global), that can be used to list all currently\\ninstalled globals.\\n\\n```shell\\n$ proto list-global node\\ntsc - ~/.proto/tools/node/globals/lib/node_modules/typescript/bin/tsc\\ntsserver - ~/.proto/tools/node/globals/lib/node_modules/typescript/bin/tsserver\\n```\\n\\n## Better error messages\\n\\nWe\'ve spent most of the past week working on a new internal architecture called\\n[Starbase](https://github.com/moonrepo/starbase), which will be the new foundation for proto and\\nmoon moving forward. One of the major benefits of this new architecture is a rewritten error system\\nthat provides more context and better error messages.\\n\\nHere\'s an example of this, albeit with a contrived situation:\\n\\n"},{"id":"proto-v0.5","metadata":{"permalink":"/blog/proto-v0.5","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-06_proto-v0.5.mdx","source":"@site/blog/2023-04-06_proto-v0.5.mdx","title":"proto v0.5 - Version aliasing and global binaries","description":"With this release, we\'re providing solutions for installing globals and using aliases.","date":"2023-04-06T00:00:00.000Z","formattedDate":"April 6, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"alias","permalink":"/blog/tags/alias"},{"label":"globals","permalink":"/blog/tags/globals"}],"readingTime":1.89,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.5","title":"proto v0.5 - Version aliasing and global binaries","authors":["milesj"],"tags":["proto","alias","globals"],"image":"./img/proto/v0.5.png"},"prevItem":{"title":"proto v0.6 - Unused cleaning and improved global binaries","permalink":"/blog/proto-v0.6"},"nextItem":{"title":"moon v1.1 - Task debugging and improvements","permalink":"/blog/moon-v1.1"}},"content":"With this release, we\'re providing solutions for installing globals and using aliases.\\n\\n\x3c!--truncate--\x3e\\n\\n## Install global binaries\\n\\nInstalling global binaries (packages, modules, etc) is a common task for developers, and proto now\\nprovides a solution for this workflow with the\\n[`proto install-global`](/docs/proto/commands/install-global) command. Continue reading for more\\ninformation.\\n\\n:::info\\n\\nGlobal install directories will need to be added manually to your `PATH` from your shell.\\n\\n:::\\n\\n### Bun, Deno, Go, Rust\\n\\nAll of these languages provide a built-in solution for installing global binaries to a shared\\nlocation, regardless of the language\'s current version. Because of this, proto will simply call\\ntheir install commands under the hood.\\n\\n```shell\\n$ proto install-global rust cargo-release\\n\\n# Same as\\n$ cargo install cargo-release --force\\n```\\n\\nGlobals will be installed to the following locations:\\n\\n- **Bun**: `~/.bun/bin`\\n- **Deno**: `~/.deno/bin`\\n- **Go**: `~/go/bin`\\n- **Rust**: `~/.cargo/bin`\\n\\n### Node.js, npm, pnpm, yarn\\n\\nUnfortunately, the Node.js ecosystem is pretty fractured when it comes to installing global\\nbinaries. Each package manager provides their own solution for installing globals, and each has\\ntheir own quirks. The problem is further exacerbated by the fact that globals are tied to Node.js\\nversion, so if you switch versions, you lose all your previous globals!\\n\\nTo work around this, proto standardizes the global installation process for Node.js, but requires\\nall globals to be installed through proto. You can no longer use `npm install -g`, `pnpm add -g`, so\\non and so forth, and must use:\\n\\n```shell\\n$ proto install-global node webpack-cli\\n```\\n\\nGlobals will be installed to a shared location, `~/.proto/tools/node/globals/bin`, and will persist\\nacross versions!\\n\\n## Custom version aliases\\n\\nWe are excited to announce 2 new commands that enable you to define custom version aliases,\\n[`proto alias`](/docs/proto/commands/alias) and [`proto unalias`](/docs/proto/commands/unalias).\\nAliasing of versions is a feature that allows you to assign a custom name or label to a specific\\nversion of a tool.\\n\\nFor example, instead of using the version number, you can assign a label such as \\"work\\" or\\n\\"personal\\" to a version. This makes it easier to remember and manage different versions.\\n\\n```shell\\n$ proto alias node work 16.16\\n$ proto alias node personal 18\\n```\\n\\nAliases can be used anywhere a version is accepted, for example:\\n\\n```shell\\n$ proto bin node work\\n$ proto install node personal\\n```"},{"id":"moon-v1.1","metadata":{"permalink":"/blog/moon-v1.1","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-04-03_moon-v1.1.mdx","source":"@site/blog/2023-04-03_moon-v1.1.mdx","title":"moon v1.1 - Task debugging and improvements","description":"With this release, we\'re introducing some quality of life task improvements.","date":"2023-04-03T00:00:00.000Z","formattedDate":"April 3, 2023","tags":[{"label":"tokens","permalink":"/blog/tags/tokens"},{"label":"tasks","permalink":"/blog/tags/tasks"}],"readingTime":1.775,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.1","title":"moon v1.1 - Task debugging and improvements","authors":["milesj"],"tags":["tokens","tasks"],"image":"./img/moon/v1.1.png"},"prevItem":{"title":"proto v0.5 - Version aliasing and global binaries","permalink":"/blog/proto-v0.5"},"nextItem":{"title":"proto v0.4 - Rust support, user configs, and more","permalink":"/blog/proto-v0.4"}},"content":"With this release, we\'re introducing some quality of life task improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Token variable support in task commands\\n\\nmoon supports a concept known as [tokens](/docs/concepts/token) where values are injected into tasks\\nduring project graph creation. This allows for dynamic values in your tasks, such as the current\\nproject language, or the current task name, and is crucial for task inheritance to work.\\n\\nHowever, tokens were only supported by task args, inputs, and outputs, but not commands... until\\nnow. Commands can now use token variables (but not token functions). For example, this is useful for\\nreferencing shared scripts from the workspace root.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n\\tprecheck:\\n\\t\\tcommand: \'$workspaceRoot/scripts/precheck.sh\'\\n```\\n\\n## Run targets in closest project\\n\\nThe [`moon run`](/docs/commands/run) command can run targets in an array of different formats, but\\nwas unable to run targets based on the current working directory. Well no more! You can now run\\ntasks from the closest project based on file path by omitting `:` from the target name.\\n\\n```shell\\n$ cd packages/components\\n\\n# Runs `components:build` internally\\n$ moon run build\\n```\\n\\n## View resolved task information\\n\\nDebugging task issues can be a quite a pain, as there can be many points of failure. Are inputs too\\ngreedy? Are outputs not being created? Does it exist at all? To help with this, you can now view\\ntask information by running [`moon task `](/docs/commands/task).\\n\\n```shell\\n$ moon task app:build\\n```\\n\\nThis command will display _resolved_ information, including inherited settings, and path resolved\\ninputs and outputs. Here\'s an example:\\n\\n```\\nRUNTIME:BUILD\\n\\nID: build\\nProject: runtime\\nPlatform: node\\nType: build\\n\\nPROCESS\\n\\nCommand: packemon build --addFiles --addExports --declaration\\nEnvironment variables:\\n - NODE_ENV = production\\nWorking directory: /Projects/moon/packages/runtime\\nRuns dependencies: Concurrently\\nRuns in CI: Yes\\n\\nDEPENDS ON\\n\\n - types:build\\n\\nINPUTS\\n\\n - .moon/*.yml\\n - packages/runtime/src/**/*\\n - packages/runtime/tsconfig.*.json\\n - packages/runtime/types/**/*\\n - packages/runtime/package.json\\n - packages/runtime/tsconfig.json\\n - tsconfig.options.json\\n\\nOUTPUTS\\n\\n - packages/runtime/cjs\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.1.0) for a full list of\\nchanges.\\n\\n- Support pnpm v8\'s new lockfile format.\\n- Better handling for task\'s that execute the `moon` binary.\\n- Updated `noop` tasks to be cacheable, so that they can be used for cache hit early returns."},{"id":"proto-v0.4","metadata":{"permalink":"/blog/proto-v0.4","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-31_proto-v0.4.mdx","source":"@site/blog/2023-03-31_proto-v0.4.mdx","title":"proto v0.4 - Rust support, user configs, and more","description":"With this release, we\'ve added Rust language support, user configs, and a few other improvements.","date":"2023-03-31T00:00:00.000Z","formattedDate":"March 31, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"rust","permalink":"/blog/tags/rust"},{"label":"config","permalink":"/blog/tags/config"}],"readingTime":1.43,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.4","title":"proto v0.4 - Rust support, user configs, and more","authors":["milesj"],"tags":["proto","rust","config"],"image":"./img/proto/v0.4.png"},"prevItem":{"title":"moon v1.1 - Task debugging and improvements","permalink":"/blog/moon-v1.1"},"nextItem":{"title":"moon v1.0 - Official release! Project constraints, tagging, and more!","permalink":"/blog/moon-v1.0"}},"content":"With this release, we\'ve added Rust language support, user configs, and a few other improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## Rust language support\\n\\nWe\'re very excited to announce support for the [Rust language](https://www.rust-lang.org/) in proto.\\nThis is our first language addition since the initial release, and we\'re very happy with how it\\nturned out.\\n\\n```shell\\n$ proto install rust stable\\n```\\n\\nFor those of you unfamiliar with Rust, Rust provides its own toolchain manager through\\n[`rustup`](https://rustup.rs/) \u2014 a very powerful one at that. We don\'t want to reinvent the wheel\\nhere, so instead of downloading and installing Rust into proto\'s toolchain, we chose to call\\n`rustup` commands under the hood. Because of this, Rust support in proto requires Rust/Cargo to be\\npre-installed on your system. Jump to the [docs for more information](/docs/proto/tools#rust).\\n\\nAll in all, the cool thing about supporting Rust in proto is that you can standardize all your tools\\nin a single config for [`proto use`](/docs/proto/commands/use).\\n\\n```toml title=\\".prototools\\"\\nnode = \\"18.2.0\\"\\nrust = \\"1.68.0\\"\\n```\\n\\n## New user configuration\\n\\nWe have a long list of ideas and features that would be cool to support in proto, but not as the\\ndefault functionality. Because of this, we required a way for users to opt-in to this functionality,\\nand have landed on a new user configuration located at `~/.proto/config.toml`.\\n\\n```toml title=\\"~/.proto/config.toml\\"\\nauto-install = true\\n```\\n\\nThis new configuration only supports a single setting (for now), `auto-install`, that when enabled,\\nwill automatically install a missing tool for the detected version when running\\n[`proto run`](/docs/proto/commands/run) (or a shim).\\n\\n## New `proto upgrade` command\\n\\nWe now provide a [`proto upgrade`](/docs/proto/commands/upgrade) command for upgrading proto itself.\\nThis will download the latest version and replace the binary at `~/.proto/bin/proto`.\\n\\n```shell\\n$ proto upgrade\\n```"},{"id":"moon-v1.0","metadata":{"permalink":"/blog/moon-v1.0","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-27_moon-v1.0.mdx","source":"@site/blog/2023-03-27_moon-v1.0.mdx","title":"moon v1.0 - Official release! Project constraints, tagging, and more!","description":"\ud83c\udf89 It\'s finally here! After almost a year of development, a handful of breaking changes, we\'ve","date":"2023-03-27T00:00:00.000Z","formattedDate":"March 27, 2023","tags":[{"label":"projects","permalink":"/blog/tags/projects"},{"label":"constraints","permalink":"/blog/tags/constraints"},{"label":"tags","permalink":"/blog/tags/tags"},{"label":"env-vars","permalink":"/blog/tags/env-vars"},{"label":"tokens","permalink":"/blog/tags/tokens"}],"readingTime":4.745,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"moon-v1.0","title":"moon v1.0 - Official release! Project constraints, tagging, and more!","authors":["milesj"],"tags":["projects","constraints","tags","env-vars","tokens"],"image":"./img/moon/v1.0.png"},"prevItem":{"title":"proto v0.4 - Rust support, user configs, and more","permalink":"/blog/proto-v0.4"},"nextItem":{"title":"proto v0.3 - Improved npm, go, and version requirement support","permalink":"/blog/proto-v0.3"}},"content":"\ud83c\udf89 It\'s finally here! After almost a year of development, a handful of breaking changes, we\'ve\\nofficially reached a stable v1 of moon! This release is feature packed with quality of life\\nimprovements.\\n\\n\x3c!--truncate--\x3e\\n\\n## The road to v1\\n\\nIt\'s been 10 months since moon launched publicly, and since that time we have landed 501 pull\\nrequests, fixed 100\'s of bugs, made 16 breaking changes, released 26 versions, and have been used by\\ncompanies like Ikea, SumUp, Depot, and Gallery. It\'s been a wild ride, and we\'re excited to finally\\nreach a stable v1 release.\\n\\n## Project boundaries with constraints\\n\\nOne feature that moon has not supported, but is critical for large monorepos, is project boundaries.\\nA project boundary is a concept that enforces a strict relationship between projects, and is a\\ncommon pattern in monorepos. For example, a project may only be allowed to depend on projects with a\\n[specific tag](#enforce-relationships-with-tags), or a project of a specific type.\\n\\nmoon now supports this functionality through the new\\n[`constraints`](/docs/config/workspace#constraints) setting in\\n[`.moon/workspace.yml`](/docs/config/workspace). The primary constraint we\'re introducing is\\n[`enforceProjectTypeRelationships`](/docs/config/workspace#enforceprojecttyperelationships), which\\nenforces relationships between projects based on their [`type`](/docs/config/project#type) field.\\n\\nFor example, an application can only depend on library or tool based projects, but _not_ other\\napplications (this is a code smell). This setting is enabled by default!\\n\\n```yaml title=\\".moon/workspace.yml\\"\\nconstraints:\\n enforceProjectTypeRelationships: true\\n```\\n\\nAnd that\'s not all, continue reading for more information on tag based constraints!\\n\\n## Project tagging\\n\\nEveryone is familiar with the concept of tagging, and moon\'s implementation is no different. Tags\\nare a simple mechanism for categorizing projects, and can be defined through the\\n[`tags`](/docs/config/project#tags) setting in [`moon.yml`](/docs/config/project).\\n\\n```yaml title=\\"moon.yml\\"\\ntags:\\n - \'react\'\\n - \'prisma\'\\n```\\n\\nTags can be used to group projects together for easier querying, enforcing of project boundaries,\\napplying constraints, and more in the future. Tags will become a staple for maintaining repositories\\nat scale. Continue reading for more information!\\n\\n### Querying projects by tag\\n\\nThe first integration with tags is project querying. You can now query for projects by tag using the\\nnew `--tags` option in the [`moon query projects`](/docs/commands/query/projects) command. For\\nexample, say you want to find all projects that are tagged with `vue` or `trpc`:\\n\\n```shell\\n$ moon query projects --tags \'vue|trpc\'\\n```\\n\\n### Enforce relationships with tags\\n\\nAnother feature of tags is enforcing relationships between projects using our new\\n[`constraints`](#project-constraints) setting. When a tagged constraint is defined, it requires all\\n[dependencies](/docs/concepts/project#dependencies) of a tagged project to require 1 of the\\nconfigured tags, otherwise an error is thrown during project graph creation.\\n\\nTo demonstrate this, take the following configuration:\\n\\n```yaml title=\\".moon/workspace.yml\\" {2,3}\\nconstraints:\\n tagRelationships:\\n next: [\'react\', \'trpc\']\\n```\\n\\nThis dictates that all dependencies of a project with the `next` tag, must declare either `react`,\\n`trpc`, or `next` in their own tags. This is great for crafting a monorepo with strict project\\nboundaries!\\n\\n## Shells for system tasks\\n\\nUp until now, all executed tasks would not be wrapped in a shell for 1 reason, to ensure tasks are\\ndeterministic. A major goal for moon is that tasks are deterministic and easily reproducible across\\nall machines. Shells break this guarantee, as they can introduce subtle bugs that are difficult to\\ndiagnose, and may differ wildly between developers and machines.\\n\\nHowever in practice, not supporting shells has been a major pain point for many users, and for the\\nmost part, most system tasks typically run common commands or execute pre-defined scripts. The\\nchance of a non-deterministic build is very small. As such, we\'ve decided to make a compromise, and\\nallow shells for [system tasks](/docs/config/project#platform-1), but not for language based tasks.\\n\\nFor example, the following tasks:\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n example:\\n command: \'echo $PWD\'\\n platform: \'system\'\\n global:\\n command: \'bin-on-path\'\\n platform: \'system\'\\n```\\n\\nWould now be executed as `/bin/sh -c \'echo $PWD\'` and `/bin/sh -c \'bin-on-path\'` on Unix platforms\\nrespectively. On Windows, we execute tasks with `pwsh.exe -c` and pass arguments via stdin.\\n\\nWe\'re also taking this a step further, by introducing a new task option called\\n[`shell`](/docs/config/project#shell), that can be used to toggle the shell wrapping on or off. When\\nturned off, this allows you to customize and execute the shell as you please.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n example:\\n command: \'bash -c \\"echo $PWD\\"\'\\n platform: \'system\'\\n options:\\n shell: false\\n```\\n\\n## Environment variable substitution\\n\\nmoon supports granular environment variables through the project-level\\n[`env`](/docs/config/project#env) setting, task-level [`env`](/docs/config/project#env-1) setting,\\nand the task [`envFile`](/docs/config/project#envfile) option. We\'re expanding their functionality\\nwith variable substitution, allowing the value of another environment variable to be interpolated\\nusing the syntax `${VAR_NAME}`. This is especially useful for composing complex environment\\nvariables.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n dev:\\n command: \'app start\'\\n env:\\n APP_TARGET: \'${REGION}-${ENVIRONMENT}\'\\n```\\n\\nThe same substitution syntax can also be used within `.env` files.\\n\\n```toml title=\\".env\\"\\nAPP_TARGET=\\"${REGION}-${ENVIRONMENT}\\"\\n```\\n\\n## Date/time token variables\\n\\n[Tokens](/docs/concepts/token) are a mechanism used in task configuration for dynamically injecting\\nvalues from the current project or task, especially when task inheritance is involved. Tokens have\\nexisted since moon\'s inception, without much change... until now.\\n\\nWe\'re excited to introduce a new set of tokens for referencing the\\n[current date or time](/docs/concepts/token#datetime): `$date`, `$time`, `$datetime`, and\\n`$timestamp`. With these new tokens, you\'re now able to implement clever or unusual solutions, like\\ngrouping builds or deploys based on the current timestamp.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n deploy:\\n command: \'app deploy --output ./build/$timestamp\'\\n```\\n\\n## Other changes\\n\\nView the [official release](https://github.com/moonrepo/moon/releases/tag/v1.0.0) for a full list of\\nchanges.\\n\\n- Added a `hasher.warnOnMissingInputs` setting to `.moon/workspace.yml`.\\n- Added a `$projectAlias` task token.\\n- Added a `telemetry` setting to `.moon/workspace.yml`.\\n- Updated the new version check to only run on the `check`, `ci`, `run`, and `sync` commands.\\n\\n## What\'s next?\\n\\nExpect the following in the v1.1 release!\\n\\n- Polish and stability initiatives.\\n- Task inheritance based on tags.\\n- Deno tier 3 support."},{"id":"proto-v0.3","metadata":{"permalink":"/blog/proto-v0.3","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-15_proto-v0.3.mdx","source":"@site/blog/2023-03-15_proto-v0.3.mdx","title":"proto v0.3 - Improved npm, go, and version requirement support","description":"With this release, we\'re improving some workflows and version detection logic based on initial","date":"2023-03-15T00:00:00.000Z","formattedDate":"March 15, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"npm","permalink":"/blog/tags/npm"},{"label":"go","permalink":"/blog/tags/go"}],"readingTime":1.395,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto-v0.3","title":"proto v0.3 - Improved npm, go, and version requirement support","authors":["milesj"],"tags":["proto","npm","go"],"image":"./img/proto/v0.3.png"},"prevItem":{"title":"moon v1.0 - Official release! Project constraints, tagging, and more!","permalink":"/blog/moon-v1.0"},"nextItem":{"title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","permalink":"/blog/v0.26"}},"content":"With this release, we\'re improving some workflows and version detection logic based on initial\\nfeedback.\\n\\n\x3c!--truncate--\x3e\\n\\n## Bundled npm support\\n\\nAfter Node.js is installed, the version of npm that came bundled with that Node.js version will also\\nbe installed into proto. This functionality can be skipped by passing `--no-bundled-npm` during\\ninstallation.\\n\\n```shell\\n$ proto install node -- --no-bundled-npm\\n```\\n\\nTo further expand upon this, `bundled` is now considered a built-in alias, and will be used during\\nversion detection. When encountered, we\'ll first detect the version of Node.js running, and infer\\nthe npm version from there.\\n\\n```shell\\n$ proto global npm bundled\\n```\\n\\n> Only supported by proto, not moon.\\n\\n## Automatic `GOBIN` setup\\n\\nAfter Go is installed, we\'ll now inject a `GOBIN` environment variable into your shell, pointing to\\n`~/go/bin`, if it doesn\'t already exist. This variable will be used to locate Go binaries across all\\ninstalled versions, and help to avoid binary not found errors.\\n\\nThis functionality can be skipped by passing `--no-gobin` during installation.\\n\\n```shell\\n$ proto install go -- --no-gobin\\n```\\n\\n> Only supported by proto, not moon.\\n\\n## Better version requirement detection\\n\\nPreviously when proto encounted a version requirement (`^`, `~`, `>=`, etc) during version\\ndetection, we would attempt to resolve a version that satisfied the requirement based on versions\\navailable in the remote manifest (what\'s been officially released). While this worked, it would\\nresult in far too many local installs as that satisfied version constantly changed.\\n\\nInstead, we now satisfy the version requirement based on versions that have been installed locally\\nto `~/.proto/tools`. If no version matches, detection will simply move on to the next case, and\\neventually fallback to the global default version."},{"id":"v0.26","metadata":{"permalink":"/blog/v0.26","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-13_v0.26.mdx","source":"@site/blog/2023-03-13_v0.26.mdx","title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","description":"With this release, we\'re providing deeper integration with our new proto toolchain","date":"2023-03-13T00:00:00.000Z","formattedDate":"March 13, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"docker","permalink":"/blog/tags/docker"},{"label":"query","permalink":"/blog/tags/query"},{"label":"hash","permalink":"/blog/tags/hash"}],"readingTime":3.29,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.26","title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","authors":["milesj"],"tags":["proto","docker","query","hash"],"image":"./img/v0.26.png"},"prevItem":{"title":"proto v0.3 - Improved npm, go, and version requirement support","permalink":"/blog/proto-v0.3"},"nextItem":{"title":"Introducing proto, a next-generation toolchain manager!","permalink":"/blog/proto"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\nimport Logo from \'../static/brand/proto/logo.svg\';\\n\\nWith this release, we\'re providing deeper integration with our new [proto](/proto) toolchain\\nmanager, better Docker support, and new query commands for debugging.\\n\\n\x3c!--truncate--\x3e\\n\\n## Full proto toolchain integration\\n\\n
    \\n \\n
    \\n\\nEarlier this week we announced [proto](/proto), our own toolchain manager, and an attempt at a next\\ngeneration version manager for multiple languages. proto was originally moon\'s toolchain layer, but\\nwe felt it best to extract it out into a stand-alone tool for everyone to use, especially those not\\nusing moon!\\n\\nNow that proto has been released, we\'ve updated moon\'s Rust internals to utilize proto\'s latest Rust\\ncrates. For the most part, everything will continue to work the same. However, the biggest change is\\nthat the toolchain has moved from `~/.moon` to `~/.proto`, and will result in tools being\\nre-downloaded and installed. Feel free to delete the old `~/.moon` directory manually.\\n\\nFurthermore, we\'ve added first-class support for the new [`.prototools`](/docs/proto/config)\\nconfiguration file. If this file is found in the workspace root, we\'ll automatically enable the\\ntools in our toolchain, and inject the versions (when not defined in `.moon/toolchain.yml`).\\n\\n```toml title=\\".prototools\\"\\nnode = \\"18.0.0\\"\\npnpm = \\"7.29.0\\"\\n```\\n\\n## New `moon docker setup` command\\n\\nmoon has provided [built-in `Dockerfile` support](/docs/guides/docker) since v0.15 (11 versions\\nago!) and we\'ve always encouraged the use of the [`moon setup`](/docs/commands/setup) command to\\nsetup the toolchain and install project dependencies. Here\'s an example of a moon powered\\n`Dockerfile`:\\n\\n```docker\\nFROM node:latest\\nWORKDIR /app\\n\\n# Install moon binary\\nRUN npm install -g @moonrepo/cli\\n\\n# Copy workspace skeleton\\nCOPY ./.moon/docker/workspace .\\n\\n# Install toolchain and dependencies\\nRUN moon setup\\n\\n# Copy source files\\nCOPY ./.moon/docker/sources .\\n\\n# Build something\\nRUN moon run app:build\\n\\n# Prune workspace\\nRUN moon docker prune\\n\\nCMD [\\"moon\\", \\"run\\", \\"app:start\\"]\\n```\\n\\nHowever, over the course of these 11 releases since v0.15, we refactored the `moon setup` command to\\nonly setup the toolchain, and _no longer_ install project dependencies. We inadvertently broke our\\nDocker integration. This was an oversight on our part.\\n\\nTo rectify this situation, we\'re introducing a new\\n[`moon docker setup`](/docs/commands/docker/setup) command that will efficiently install\\ndependencies for projects focused/affected within the `Dockerfile`. This is a much better solution\\nthan before, and you should see improved Docker layer caching!\\n\\n```diff\\n-RUN moon setup\\n+RUN moon docker setup\\n```\\n\\n## New `moon query hash` command\\n\\nWhen moon runs a task, we generate a unique hash representing the state of that run. When something\\ngoes wrong however, and the hash is different than what you expect, debugging why is rather\\nnon-trivial and requires a lot of internal knowledge. We\'re looking to reduce this burden, by\\nintroducing the new [`moon query hash`](/docs/commands/query/hash) command.\\n\\n```shell\\n$ moon query hash 0b55b234\\n```\\n\\nThis command will print the contents of the hash manifest, which is all inputs and sources used to\\ngenerate the unique hash. From here you can use this output to investigate what\'s actually\\nhappening.\\n\\n```json\\n{\\n \\"command\\": \\"build\\",\\n \\"args\\": [\\"./build\\"]\\n // ...\\n}\\n```\\n\\n## New `moon query hash-diff` command\\n\\nExpanding on the new command above, we\'re also introducing the\\n[`moon query hash-diff`](/docs/commands/query/hash-diff) command, which can be used to compute the\\ndifference between 2 hashes. Perfect in understanding what has changed between ran tasks.\\n\\n```shell\\n$ moon query hash-diff 0b55b234 2388552f\\n```\\n\\nWhen ran, the command will print out the differences as highlighted lines. If you use `git diff`,\\nthis will feel familiar to you.\\n\\n```diff\\n{\\n\\t\\"command\\": \\"build\\",\\n\\t\\"args\\": [\\n+\\t\\t\\"./dist\\"\\n-\\t\\t\\"./build\\"\\n\\t],\\n\\t...\\n}\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.26.0) for a\\nfull list of changes.\\n\\n- A handful of critical bug fixes.\\n- Targets that generate an empty hash are now considered a failure, as they may be an edge case not\\n accounted for.\\n\\n## What\'s next?\\n\\nExpect the following in the v1 release!\\n\\n- Officially release a v1!\\n- Project tagging and constraints."},{"id":"proto","metadata":{"permalink":"/blog/proto","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-03-09_proto.mdx","source":"@site/blog/2023-03-09_proto.mdx","title":"Introducing proto, a next-generation toolchain manager!","description":"We are proud to announce the launch of proto, a next-generation toolchain manager for all","date":"2023-03-09T00:00:00.000Z","formattedDate":"March 9, 2023","tags":[{"label":"proto","permalink":"/blog/tags/proto"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":1.89,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"proto","title":"Introducing proto, a next-generation toolchain manager!","authors":["milesj"],"tags":["proto","toolchain"],"image":"./img/proto/v0.png"},"prevItem":{"title":"moon v0.26 - Deeper proto integration, Docker setup, and query commands","permalink":"/blog/v0.26"},"nextItem":{"title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","permalink":"/blog/v0.25"}},"content":"import Button from \'@site/src/ui/Button\';\\nimport Logo from \'../static/brand/proto/logo.svg\';\\n\\nWe are proud to announce the launch of [proto](/proto), a next-generation toolchain manager for all\\nof your favorite programming languages.\\n\\n\x3c!--truncate--\x3e\\n\\n
    \\n \\n
    \\n\\n[proto](/proto) is a Rust based multi-language toolchain manager that will download and install\\ntools by version, and immediately make them available on `PATH`. proto is launching with initial\\nsupport for [Bun](https://bun.sh), [Deno](https://deno.land), [Node.js](https://nodejs.org) (and\\nnpm, pnpm, yarn), and [Go](https://go.dev), with more languages on the way!\\n\\n```shell\\nproto install node 18\\nproto install go 1.20\\nproto install deno 1.30\\n```\\n\\nUnlike other version managers that pin their global binary to a default version, proto will\\n[contextually detect an applicable version](/docs/proto/detection) from the environment or the\\nlanguage\'s ecosystem (like `package.json`), ensuring the correct tool is always being ran.\\n\\n```shell\\n# Will detect a version before running\\nbun run ./script.ts\\n```\\n\\nFurthermore, with proto\'s [`.prototools`](/docs/proto/config) file, you can pin versions of all\\nrequired tools on a per-project or per-repository basis, allowing for near instant setup of\\ndeveloper environments. Perfect for onboarding new developers!\\n\\n```toml title=\\".prototools\\"\\nnode = \\"18.12.0\\"\\nyarn = \\"3.3.0\\"\\n```\\n\\n```shell\\n# Install all the things!\\nproto use\\n```\\n\\nAnd lastly, [moon](/moon)\'s toolchain is built on proto, so if you\'re using moon, you might as well\\nuse proto. This will enable a single toolchain for both tools (in v0.26)!\\n\\n
    \\n
    \\n\\n## How to get started?\\n\\nIn a terminal that supports Bash, run:\\n\\n```\\ncurl -fsSL https://moonrepo.dev/install/proto.sh | bash\\n```\\n\\nIn Powershell or Windows Terminal, run:\\n\\n```\\nirm https://moonrepo.dev/install/proto.ps1 | iex\\n```\\n\\nJump to the [documentation](/docs/proto) for more information on getting started and available\\ncommands!\\n\\n## Why another version manager?\\n\\nTo start, proto powers [moon\'s](/moon) toolchain and integrated developer environment. We believed\\nthat moon\'s toolchain would be extremely beneficial for developers as a whole, and so we extracted\\nproto out into a standalone Rust CLI and Rust crates that moon inherits.\\n\\nFurthermore, we believe that requiring multiple ad-hoc version managers for all your languages, each\\nwith different workflows, CLI commands, and configuration files, is a poor developer experience.\\n\\nOur goal is to unify all of these into a single performant interface. A toolchain manager is the\\nnext step in the version manager evolution."},{"id":"v0.25","metadata":{"permalink":"/blog/v0.25","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-02-27_v0.25.mdx","source":"@site/blog/2023-02-27_v0.25.mdx","title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","description":"With this release, we\'re landing Deno, our first supported language besides Node.js, and improving","date":"2023-02-27T00:00:00.000Z","formattedDate":"February 27, 2023","tags":[{"label":"deno","permalink":"/blog/tags/deno"},{"label":"toolchain","permalink":"/blog/tags/toolchain"},{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"offline","permalink":"/blog/tags/offline"},{"label":"github","permalink":"/blog/tags/github"}],"readingTime":4.475,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.25","title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","authors":["milesj"],"tags":["deno","toolchain","moonbase","offline","github"],"image":"./img/v0.25.png"},"prevItem":{"title":"Introducing proto, a next-generation toolchain manager!","permalink":"/blog/proto"},"nextItem":{"title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","permalink":"/blog/v0.24"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\nimport Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'re landing Deno, our first supported language besides Node.js, and improving\\ninteroperability of languages as a whole.\\n\\n\x3c!--truncate--\x3e\\n\\n## Deno tier 2 support (experimental)\\n\\nThree months ago we announced our [new tiered support structure](./v0.21) for languages, and as of\\ntoday, we\'re happy to announce that our second language to reach tier 2 is\\n[Deno](https://deno.land)! With tier 2 support, we now analyze Deno specific configuration files\\n(like `deno.json`) to infer dependencies and relationships, as well as utilize this information for\\ninputs and hashing purposes. With that being said, we\'re marking this release as experimental until\\nwe fine tune the implementation, and iron out all the bugs.\\n\\nTo get started with using Deno, enable the new [`deno`](/docs/config/toolchain#deno) setting in\\n[`.moon/toolchain.yml`](/docs/config/toolchain). At this time, we don\'t have many settings to\\nconfigure, so simply defining an empty object is enough to enable the Deno platform! Learn more\\nabout this in our [Deno handbook](/docs/guides/javascript/deno-handbook).\\n\\n```yaml title=\\".moon/toolchain.yml\\"\\ndeno: {}\\n```\\n\\nOnce enabled, you can start using `deno` commands in your moon tasks. moon will automatically set\\nthe [`platform`](/docs/config/project#platform-1) to \\"deno\\" when using a deno command.\\n\\n```yaml title=\\"moon.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'deno fmt\'\\n```\\n\\n:::info\\n\\nBecause this is only tier 2 support, moon _does not_ download and install Deno into its toolchain.\\nmoon expects the `deno` binary to exist in the current environment.\\n\\n:::\\n\\nFurthermore, if you\'re working a project that is composed of multiple JavaScript runtimes, like\\nDeno, Bun, or Node.js, you can set the default `platform` for all tasks at the project-level.\\n\\n```yaml title=\\"moon.yml\\"\\nplatform: \'deno\'\\nlanguage: \'typescript\'\\ntype: \'application\'\\n```\\n\\nWe\'re very excited for this release as it paves the way for future language integrations, and\\nenables additional JavaScript runtimes!\\n\\n## CI insights in moonbase\\n\\nWe\'ve spent the last few weeks implementing a new [moonbase](https://moonrepo.app) feature called CI\\ninsights, where we track all CI runs (via [`moon ci`](/docs/commands/ci)), and all actions (tasks)\\nthat have ran based on affected files. In the future these insights will help catch regressions,\\nalert on flakiness, provide granular metrics, and help monitor the health of your CI pipeline and\\nrepositories.\\n\\n\\n\\nWith this initial release, we track touched files, which targets are affected based on those files,\\nan estimation on how much time was saved or lost, the actions that ran and their final status,\\noutlined as a timeline.\\n\\n\\n\\nInsights are enabled by default if you\'re using moonbase in your CI pipeline, and start using moon\\nv0.25! You can disable insights gathering from your\\n[organization settings page](https://moonrepo.app).\\n\\n## Offline mode\\n\\nmoon assumes that an internet connection is always available, as we download and install tools into\\nthe toolchain, resolve versions against upstream manifests, and automatically install dependencies.\\nWhile this is useful, having a constant internet connection isn\'t always viable.\\n\\nIn this release, we now check for an active internet connection and bypass certain workflows when\\napplicable.\\n[Jump to the official guide on offline mode for more information](/docs/guides/offline-mode)!\\n\\n## Custom project `language`\\n\\nProject\'s have always been able to define a [`language`](/docs/config/project#language) in\\n[`moon.yml`](/docs/config/project) that denotes the primary programming language for the project.\\nHistorically this has been a strict enum of supported values, and could _not_ be customized for\\nother languages. With the introduction of\\n[language driven task inheritance](./v0.23#new-scoped-tasks-with-moontasksyml), we felt like\\nrevisiting this setting, and as such, you\'re now able to define _any_ language in this setting,\\nwhich also feeds into the task inheritance system.\\n\\n```yaml title=\\"moon.yml\\"\\nlanguage: \'kotlin\'\\n```\\n\\nWith this change, `.moon/tasks/kotlin-application.yml`, `.moon/tasks/dotnet.yml`, and other\\nvariations are now possible! However, besides task inheritance, other functionality like platform\\ndetection, and Dockerfile support are not enabled.\\n\\n## Project-level TypeScript settings (breaking)\\n\\nOur TypeScript integration supports many automated workflows, like syncing project references, and\\nrouting `outDir` to our shared cache. This is wonderful for the majority, but for the handful of\\nprojects where these settings were not viable, there was no simple way to disable or opt out of the\\nfunctionality.\\n\\nWell no more, projects can now override the workspace-level TypeScript settings\\n`routeOutDirToCache`, `syncProjectReferences`, and `syncProjectReferencesToPaths` through the\\n[`toolchain.typescript`](/docs/config/project#typescript) setting in\\n[`moon.yml`](/docs/config/project).\\n\\n```yaml title=\\"moon.yml\\"\\ntoolchain:\\n\\ttypescript:\\n\\t\\trouteOutDirToCache: false\\n```\\n\\nBecause this setting was changed from a boolean to an object, the old pattern of disabling\\nTypescript must now use the `disabled` setting.\\n\\n```yaml title=\\"moon.yml\\"\\n# Old\\ntoolchain:\\n\\ttypescript: false\\n\\n# new\\ntoolchain:\\n\\ttypescript:\\n\\t\\tdisabled: true\\n```\\n\\n## New `moonrepo/setup-moon-action` GitHub action\\n\\nIf you\'re using GitHub Actions as your CI pipeline, we\'ve introducing a new action called\\n[moonrepo/setup-moon-action](https://github.com/moonrepo/setup-moon-action), that will install the\\n`moon` binary globally, and will cache (and restore) the moon toolchain.\\n\\nWith this new action, let moon handle all the heavy lifting, and avoid all the unnecessary steps\\naround setting up Node.js, and install dependencies.\\n\\n```yaml\\njobs:\\n ci:\\n name: \'CI\'\\n runs-on: \'ubuntu-latest\'\\n steps:\\n - uses: actions/checkout@v4\\n with:\\n fetch-depth: 0\\n - uses: moonrepo/setup-moon-action@v1\\n - run: moon ci\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.25.0) for a\\nfull list of changes.\\n\\n- Updated project, task, and target identifiers to support periods (`.`).\\n- Refactored glob matching to use workspace relative paths instead of absolute. Please report an\\n issue if hashing or affected detection is now inaccurate.\\n- We now build against older operating systems in an attempt to solve GLIBC version errors.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.26 release!\\n\\n- Officially release proto!\\n- Improved Deno interoperability."},{"id":"v0.24","metadata":{"permalink":"/blog/v0.24","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-02-13_v0.24.mdx","source":"@site/blog/2023-02-13_v0.24.mdx","title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","description":"With this release, we\'ve polished our CLI experience and improved task interoperability.","date":"2023-02-13T00:00:00.000Z","formattedDate":"February 13, 2023","tags":[{"label":"project","permalink":"/blog/tags/project"},{"label":"platform","permalink":"/blog/tags/platform"},{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"remote-cache","permalink":"/blog/tags/remote-cache"}],"readingTime":4.28,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"},{"name":"James Pozdena","title":"Founder, developer","url":"https://github.com/jpoz","imageURL":"/img/authors/james.jpg","key":"jpoz"}],"frontMatter":{"slug":"v0.24","title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","authors":["milesj","jpoz"],"tags":["project","platform","moonbase","remote-cache"],"image":"./img/v0.24.png"},"prevItem":{"title":"moon v0.25 - Deno tier 2 support, CI insights, custom project languages, and more","permalink":"/blog/v0.25"},"nextItem":{"title":"Remote caching is now publicly available through moonbase","permalink":"/blog/moonbase"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\n\\nWith this release, we\'ve polished our CLI experience and improved task interoperability.\\n\\n\x3c!--truncate--\x3e\\n\\n## Remote caching now available\\n\\nIf you missed our announcement earlier this week,\\n[remote caching is now publicly available through our new service moonbase](/blog/moonbase)! If\\nyou\'re looking to speed up your CI pipelines and share build artifacts between runs, moonbase can\\nhelp.\\n\\n
    \\n
    \\n\\n## Project-level task platform\\n\\nIn our previous release, [v0.23](./v0.23#project-level-environment-variables), we added support for\\nproject-level environment variables. This is great as it helps to reduce duplication for projects\\nwith many tasks. On that note, we wondered which configuration field we could apply similar\\ntreatment, and as such, we\'ve added a project-level [`platform`](/docs/config/project#platform)\\nsetting.\\n\\nWhen this setting is defined, all task\'s within the current project that have _not explicitly_\\nconfigured their `platform`, will inherit the project-level platform. If neither settings are\\ndefined, we\'ll attempt to detect the correct platform based on the state of the project.\\n\\n```yaml title=\\"/moon.yml\\"\\n# Will set non-explicit task\'s platform to node\\nplatform: \'node\'\\n\\ntasks:\\n\\t# Will be node\\n dev: # ...\\n\\n\\t# Will be node\\n build: # ...\\n\\n\\t# Will be system\\n serve:\\n # ...\\n platform: \'system\'\\n```\\n\\n> This setting is _extremely useful_ for projects that contain multiple languages. Even more so once\\n> we land Bun and Deno support, as we\'ll need a way to differentiate JavaScript/TypeScript projects!\\n\\n## Interactive tasks\\n\\nWhen moon executes a task, it streams both stdout and stderr to the terminal _and_ captures the\\noutput for later use. We do this for 2 reasons:\\n\\n- We store stdout.log and stderr.log files in a tarball archive.\\n- We replay this captured output when executing a task that has been cached.\\n\\nWhile this works, our approach is non-standard. Streams are either piped or inherited, not both!\\nBecause of our custom abstraction around streams and output capturing, it disrupts stdin, breaking\\nall interactive commands. If you tried to run a task that prompted you with a question and were\\nunable to answer it, this is why!\\n\\nTo remedy this shortcoming, we\'re approaching this from 2 angles. The first is that all tasks marked\\nas [`local`](/docs/config/project#local) (or have caching disabled) will no longer capture streamed\\noutput, and will instead stream natively, allowing interactivity out of the box, but only when\\nthey\'re the only task being ran. This will cover the majority of use cases.\\n\\nFor the remaining use cases, we\'re introducing a new `--interactive` flag for\\n[`moon run`](/docs/commands/run). When this flag is provided, it will force the target into an\\ninteractive mode.\\n\\n```shell\\n$ moon run app:new --interactive\\n```\\n\\n## Improved `moon query` commands (breaking)\\n\\nThe [`moon query projects`](/docs/commands/query/projects) and\\n[`moon query touched-files`](/docs/commands/query/touched-files) commands are useful for building\\ncustom solutions and integrations on top of moon, but they weren\'t developer friendly as they output\\nlarge JSON blobs. To remedy this, we\'ve updated both commands to output a simple human readable\\nformat by default, and moved the JSON output behind a `--json` flag.\\n\\nFor example, `moon query touched-files` now outputs a list of absolute file paths separated by new\\nlines.\\n\\n```\\n$ moon query touched-files\\n/moon/website/docs/commands/query/projects.mdx\\n/moon/crates/cli/tests/query_test.rs\\n/moon/crates/cli/src/commands/query.rs\\n/moon/website/blog/2023-02-13_v0.24.mdx\\n```\\n\\nWhile `moon query projects` now outputs a list of project separated by new lines, where each line\\ncontains the project name, source, type, and language.\\n\\n```\\n$ moon query projects\\nreport | packages/report | library | typescript\\nruntime | packages/runtime | library | typescript\\ntypes | packages/types | library | typescript\\nvisualizer | packages/visualizer | library | typescript\\nwebsite | website | application | typescript\\n```\\n\\nWe had 2 goals in mind for this change, the first was to make it easily readable, and the second was\\nfor the default output to be easily parseable. We believe we\'ve accomplished these goals!\\n\\n## New `moon query tasks` command\\n\\nTo expand on the query improvements above, we wanted to provide a way to also query for tasks,\\nanswering the question of \\"What tasks exists and for what projects?\\". And with this, we\'re\\nintroducing a new [`moon query tasks`](/docs/commands/query/tasks) command!\\n\\n```\\n$ moon query tasks\\ntypes\\n\\t:build | packemon\\n\\t:format | prettier\\n\\t:lint | eslint\\n\\t:test | jest\\n\\t:typecheck | tsc\\nreport\\n\\t:build | packemon\\n\\t:format | prettier\\n\\t:lint | eslint\\n\\t:test | jest\\n\\t:typecheck | tsc\\n...\\n```\\n\\n## Shell completions\\n\\nAuto-completion in your terminal increases productivity, which we\'re a massive fan of. To help\\nsupport this, we\'re introducing the [`moon completions`](/docs/commands/completions) command, which\\ngenerates the appropriate command completions for your current shell.\\n\\nThis command writes to stdout, which can then be redirected to a file of your choice. Be sure to\\nconfigure your shell profile to load the completions!\\n\\n```shell\\n$ moon completions > ~/.bash_completion.d/moon.sh\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.24.0) for a\\nfull list of changes.\\n\\n- Added [TypeScript v5](https://devblogs.microsoft.com/typescript/announcing-typescript-5-0-beta/)\\n support.\\n- Added a `hasher.walkStrategy` setting to `.moon/workspace.yml`.\\n- Updated task `outputs` to support token functions (`@group`, `@globs`, etc).\\n- Reworked our comparison/baseline estimations calcuations.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.25 release!\\n\\n- Deno tier 2 support.\\n- CI insights and metrics within moonbase.\\n- Project-level TypeScript settings."},{"id":"moonbase","metadata":{"permalink":"/blog/moonbase","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-02-08_moonbase.mdx","source":"@site/blog/2023-02-08_moonbase.mdx","title":"Remote caching is now publicly available through moonbase","description":"We are proud to announce the launch of moonbase remote caching \u2013 a new solution that","date":"2023-02-08T00:00:00.000Z","formattedDate":"February 8, 2023","tags":[{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"remote-cache","permalink":"/blog/tags/remote-cache"}],"readingTime":1.74,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"},{"name":"James Pozdena","title":"Founder, developer","url":"https://github.com/jpoz","imageURL":"/img/authors/james.jpg","key":"jpoz"}],"frontMatter":{"slug":"moonbase","title":"Remote caching is now publicly available through moonbase","authors":["milesj","jpoz"],"tags":["moonbase","remote-cache"]},"prevItem":{"title":"moon v0.24 - Remote caching, interactive tasks, query improvements, and more","permalink":"/blog/v0.24"},"nextItem":{"title":"moon v0.23 - Scoped task inheritance, and project config updates","permalink":"/blog/v0.23"}},"content":"import Button from \'@site/src/ui/Button\';\\nimport Image from \'@site/src/components/Image\';\\nimport Logo from \'../static/brand/moonbase/logo.svg\';\\n\\nWe are proud to announce the launch of [moonbase](/moonbase) remote caching \u2013 a new solution that\\nhelps moon developers streamline their build processes and save time.\\n\\n\x3c!--truncate--\x3e\\n\\n
    \\n \\n
    \\n\\nRemote caching allows developers to cache artifacts across builds, improving the efficiency of their\\nContinuous Integration (CI) pipelines. This is accomplished by automatically caching build artifacts\\nwhen moon is run with moonbase [remote caching enabled](/docs/guides/remote-cache). In the event\\nthat a CI run is executed with identical code, the cached artifacts are automatically pulled down,\\nreducing the time required to complete the build. In our tests, we have seen significant\\nimprovements in CI times, upwards of 90%.\\n\\n## What is moonbase?\\n\\nYou may be asking yourself, what is moonbase? [moonbase](/moonbase) is a new cloud service that\\nwe\'ve been working on to solve an array of problems in regards to repository and continous\\nintegration health.\\n\\n\\n\\nThe first problem on this list is [remote caching](/docs/guides/remote-cache), which has been in a\\nbeta program for the past few months. We want to thank all the beta participants for testing our\\nsystems!\\n\\nWe\'ll also be launching CI insights in the next few weeks. This is a system where we track all your\\nCI runs (via `moon ci`), and all moon tasks (actions) that ran within each job. We use this\\ninformation to track the health of your pipelines, catch regressions, alert on flakiness, and more!\\nBut don\'t worry, this feature is opt-in.\\n\\nWe\'re very excited for moonbase! We have a massive roadmap ahead of us, but we\'re sure y\'all will\\nenjoy everything that it has to offer.\\n\\n
    \\n
    \\n\\n## New homepage and product pages\\n\\nAs part of this release, we\'ve updated our homepage, and added new product pages for both\\n[moon](/moon) and [moonbase](/moonbase). This includes new logos and typography, which we\'re very\\nexcited for! This is only the beginning, as we\'re also working on additional behind the scenes\\nproducts. Stay tuned!"},{"id":"v0.23","metadata":{"permalink":"/blog/v0.23","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-01-30_v0.23.mdx","source":"@site/blog/2023-01-30_v0.23.mdx","title":"moon v0.23 - Scoped task inheritance, and project config updates","description":"With this release, we\'re launching the next iteration of our task inheritance model, as well as","date":"2023-01-30T00:00:00.000Z","formattedDate":"January 30, 2023","tags":[{"label":"survey","permalink":"/blog/tags/survey"},{"label":"tasks","permalink":"/blog/tags/tasks"},{"label":"projects","permalink":"/blog/tags/projects"}],"readingTime":5.74,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.23","title":"moon v0.23 - Scoped task inheritance, and project config updates","authors":["milesj"],"tags":["survey","tasks","projects"],"image":"./img/v0.23.png"},"prevItem":{"title":"Remote caching is now publicly available through moonbase","permalink":"/blog/moonbase"},"nextItem":{"title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","permalink":"/blog/v0.22"}},"content":"import Tabs from \'@theme/Tabs\';\\nimport TabItem from \'@theme/TabItem\';\\nimport Button from \'@site/src/ui/Button\';\\n\\nWith this release, we\'re launching the next iteration of our task inheritance model, as well as\\nquality of life improvements for project configuration.\\n\\n\x3c!--truncate--\x3e\\n\\n## Developer survey\\n\\nBefore we dive into this new release, we have a quick survey for everyone. We know how everyone\\nfeels about surveys, but this one is real quick, only a few minutes, and is mostly multiple choice\\nquestions.\\n\\nWe\'re looking for feedback on moon itself, what features you\'re looking for, what you currently do\\nnot like, how you\'re currently using monorepos, your development workflows, so on and so forth. We\'d\\nvery much appreciate it if you could engage with this survey!\\n\\n
    \\n \\n
    \\n\\n## Improved task inheritance model\\n\\nOne of the guiding principles behind moon is to simplify repository maintenance, with task\\nmanagement being top of list. We weren\'t happy with the current state of things, as every build\\nsystem and task runner that exists always opted for per-project task management, which is a massive\\namount of overhead and tech debt in the long run. To combat this, moon was designed from the\\nground-up using a task inheritance model, where \\"global\\" tasks were defined in\\n[`.moon/project.yml`](/docs/config/tasks), with per-project tasks still being an option with\\n[`moon.yml`](/docs/config/project).\\n\\nWhile inheritance worked great, it did have some shortcomings, such as:\\n\\n- With the addition of [new programming languages](/blog/v0.21), there\'s no way to easily define\\n tasks for specific languages, that should only be inherited by specific projects.\\n- There\'s no way to differentiate tasks between applications or libraries, as they typically have\\n different build/compilation systems.\\n- All of the problems above can be \\"solved\\" with\\n [`workspace.inheritedTasks`](/docs/config/project#inheritedtasks) in all projects, but it\'s a\\n maintenance headache.\\n\\nWe\'ve been documenting a solution to these problems for many months now, and we\'re very excited to\\nfinally release our new and improved task inheritance model that solves all of the problems above,\\nand opens the doors for future enhancements! Keep reading for more information.\\n\\n### New `.moon/tasks.yml` (breaking)\\n\\nTo start, we renamed `.moon/project.yml` to `.moon/tasks.yml` as we want to emphasize that this\\nconfiguration file is for task inheritance functionality only. However, the semantics of this file\\nhas _not_ changed, and is still \\"tasks to be inherited by _all_ projects\\".\\n\\n```yaml title=\\".moon/tasks.yml\\"\\n$schema: \'https://moonrepo.dev/schemas/tasks.json\'\\n\\ntasks:\\n # ...\\n```\\n\\n> We\'ll automatically rename this file for you when running a `moon` command!\\n\\n### New scoped tasks with `.moon/tasks/*.yml`\\n\\nThe biggest change to task inheritance is that tasks can now be scoped by a project\'s\\n[`language`](/docs/config/project#language) or [`type`](/docs/config/project#type) using the new\\n`.moon/tasks/.yml` or `.moon/tasks/-.yml` configuration files! Jump to the\\n[official documentation on task inheritance](/docs/concepts/task-inheritance) for more information\\non how scoping works, the lookup order of files, and much more.\\n\\nAs a demonstration, you can scope tasks to Node.js projects with `.moon/tasks/node.yml`, Rust\\napplications with `.moon/tasks/rust-application.yml`, Go libraries with\\n`.moon/tasks/go-library.yml`, Ruby scripts with `.moon/tasks/ruby-tool.yml`, so on and so forth!\\n\\nWe\'re very excited for this feature, as it\'s something we personally needed, and we\'re sure you all\\ndo as well. It also future proofs moon for new programming languages, additional implicit scenarios\\nto handle, and yet to be discovered functionality.\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/node.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'prettier --write .\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/go.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'go fmt\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/php.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'phpcbf .\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/python.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'pylint .\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/ruby.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'rubocop -l\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/rust.yml\\"\\ntasks:\\n\\tformat:\\n\\t\\tcommand: \'cargo fmt --all --check\'\\n```\\n\\n\\n\\n\\n### Moved `implicitDeps` and `implicitInputs` (breaking)\\n\\nTo standardize inheritance and expansion related functionality, we\'ve moved the\\n`runner.implicitDeps` and `runner.implicitInputs` settings from `.moon/workspace.yml` to\\n[`.moon/tasks.yml`](/docs/config/tasks#implicitdeps) and\\n[`.moon/tasks/*.yml`](/docs/config/tasks#implicitinputs) and removed the `runner` prefix.\\n\\nThis allows for implicits to also be scoped accordingly and granularly. For example, projects can\\nnow inherit dependency manager related files as implicit inputs on a per-language basis:\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/node.yml\\"\\nimplicitInputs:\\n\\t- \'package.json\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/go.yml\\"\\nimplicitInputs:\\n\\t- \'go.mod\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/php.yml\\"\\nimplicitInputs:\\n\\t- \'composer.json\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/python.yml\\"\\nimplicitInputs:\\n\\t- \'pyproject.toml\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/ruby.yml\\"\\nimplicitInputs:\\n\\t- \'Gemfile\'\\n```\\n\\n\\n\\n\\n```yaml title=\\".moon/tasks/rust.yml\\"\\nimplicitInputs:\\n\\t- \'Cargo.toml\'\\n```\\n\\n\\n\\n\\n## Project-level environment variables\\n\\nSince moon\'s inception, tasks can be configured with pre-defined environment variables using the\\n[`env`](/docs/config/project#env-1) setting. These variables would then be passed to the command\\nduring execution. This works perfectly for encapsulation, but becomes tedious when the same\\nvariables are repeated for multiple tasks.\\n\\nTo remedy this, environment variables can now be defined at the top of\\n[`moon.yml`](/docs/config/project) using the top-level [`env`](/docs/config/project#env) setting.\\nVariables defined at the top-level will be inherited by all tasks in the current project, but will\\nnot override task-level variables of the same name.\\n\\nTo demonstrate this, the following config:\\n\\n```yaml title=\\"/moon.yml\\"\\ntasks:\\n dev:\\n # ...\\n env:\\n TARGET_ENV: \'development\'\\n\\n build:\\n # ...\\n env:\\n TARGET_ENV: \'development\'\\n\\n serve:\\n # ...\\n env:\\n TARGET_ENV: \'development\'\\n```\\n\\nCan be rewritten as:\\n\\n```yaml title=\\"/moon.yml\\"\\nenv:\\n TARGET_ENV: \'development\'\\n\\ntasks:\\n dev:\\n # ...\\n\\n build:\\n # ...\\n\\n serve:\\n # ...\\n```\\n\\n## Globs in task outputs\\n\\nAnother feature that\'s been around since moon\'s inception is task\\n[`outputs`](/docs/config/project#outputs), which only supported relative files and folders. For\\nhistorical reasons, it was the easiest solution at the time, but in practice, supporting more\\ngranular control is better.\\n\\nAs such, task `outputs` now support glob patterns as well! This is perfect for restricting and\\nfiltering down which files are cached in the artifact. However, be aware that during hydration (a\\ncache hit), all files _not matching the glob_ will be deleted, so ensure that critical files _do_\\nmatch.\\n\\nTo demonstrate this, if building a JavaScript project, you may want to include `.js` and `.css`\\nfiles, but exclude everything else (`.map`, etc).\\n\\n```yaml title=\\"moon.yml\\" {4,5}\\ntasks:\\n build:\\n command: \'webpack\'\\n outputs:\\n - \'build/**/*.{js,css}\'\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.23.0) for a\\nfull list of changes.\\n\\n- Updated `moon migrate from-turborepo` to preserve globs in outputs.\\n- Updated project graph to no longer cache when there\'s no VCS root.\\n- Updated pnpm to use the new `pnpm dedupe` command when the version is >= 7.26.0.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.24 release!\\n\\n- New `moon query tasks` command.\\n- New per-project `platform` setting.\\n- Token support in task `outputs`.\\n- TypeScript v5 support."},{"id":"v0.22","metadata":{"permalink":"/blog/v0.22","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-01-16_v0.22.mdx","source":"@site/blog/2023-01-16_v0.22.mdx","title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","description":"It\'s the first release of the year, and with this release, we\'re landing some quality of life","date":"2023-01-16T00:00:00.000Z","formattedDate":"January 16, 2023","tags":[{"label":"graph","permalink":"/blog/tags/graph"},{"label":"pipeline","permalink":"/blog/tags/pipeline"},{"label":"hasher","permalink":"/blog/tags/hasher"},{"label":"migrate","permalink":"/blog/tags/migrate"}],"readingTime":2.805,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.22","title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","authors":["milesj"],"tags":["graph","pipeline","hasher","migrate"],"image":"./img/v0.22.png"},"prevItem":{"title":"moon v0.23 - Scoped task inheritance, and project config updates","permalink":"/blog/v0.23"},"nextItem":{"title":"What\'s in store for 2023","permalink":"/blog/2023-roadmap"}},"content":"import Label from \'@site/src/ui/typography/Label\';\\nimport Image from \'@site/src/components/Image\';\\n\\nIt\'s the first release of the year, and with this release, we\'re landing some quality of life\\ninfrastructure and workflow improvements!\\n\\n\x3c!--truncate--\x3e\\n\\n## New action pipeline\\n\\nWhen running targets, we generate a graph of actions to execute in order within the action runner.\\nAn action is one of \\"setup toolchain\\", \\"install dependencies\\", \\"run target\\", so on and so forth. Our\\naction runner would then spawn threads for every action using the [Tokio](https://tokio.rs/)\\nruntime. While this worked great, concurrency was entirely abstracted away from us.\\n\\nTo mitigate this problem, we\'ve implemented a new system for executing actions known as the action\\npipeline (or simply pipeline), which implements a dynamically scaling thread pool on top of Tokio.\\nThis provides us with more control over concurrency, starting with the new `--concurrency` option,\\nwhich restricts the number of threads (or CPU cores).\\n\\n```shell\\n$ moon run :build --concurrency 2\\n```\\n\\n## Expanded hashing functionality\\n\\nWhen we run targets in the pipeline, we hash a collection of inputs to calculate whether to continue\\nrunning or to exit early. This functionality has been extremely beneficial for optimizing the\\npipeline, and so, we\'ve expanded the hasher for other use cases. To start, the following 2 workflows\\nnow utilize the hasher:\\n\\n- When determining to auto-install dependencies (`npm install`, etc), we now hash all production,\\n development, and peer dependencies from applicable manifests (`package.json`). This has resulted\\n in more accurate installs, as we\'re no longer inadvertently installing when a non-dependency field\\n is modified in a manifest. On top of this, will still take into account lockfile modified\\n timestamps.\\n- When generating the project graph, we now hash all sources, aliases, and configuration files, to\\n determine whether to load the project graph from the local cache.\\n\\n## Project graph is now cached\\n\\nBecause of the hashing improvements above, we\'re now able to cache the entirety of the project graph\\ninto local cache. Depending on how many projects are in your workspace, you may see performance\\nimprovements on subsequent runs as we\'re no longer re-building the project graph over and over\\neverytime the `moon` binary is ran.\\n\\n## Migrate from Turborepo\\n\\nTurborepo is a popular task runner for Node.js based monorepos, but doesn\'t support all the\\nfunctionality that moon does. If you\'re looking to prototype moon, or migrate from Turborepo to moon\\nholistically, we now support a new command\\n[`moon migrate from-turborepo`](/docs/commands/migrate/from-turborepo).\\n\\nThis command will migrate the `turbo.json` file to moon applicable configuration files!\\n\\n```shell\\n$ moon migrate from-turborepo\\n```\\n\\n## Breaking changes\\n\\n### Renamed events\\n\\nBecause of the runner -> pipeline changes above, the `runner.*` [webhook](/docs/guides/webhooks)\\nevents were renamed to `pipeline.*`.\\n\\n### Updated CLI options\\n\\nRenamed the `--upstream` option to `--remote`, to better align with Git terminology, and removed the\\n`--report` option from `moon check` and `moon run` commands. Reports are now always created.\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.22.0) for a\\nfull list of changes.\\n\\n- Added Bun as a tier 1 language (doesn\'t do much at the moment).\\n- Added a [`versionConstraint` setting](/docs/config/workspace#versionconstraint) in\\n `.moon/workspace.yml` that enforces a requirement on the running moon binary.\\n- Updated the [`project` fields](/docs/config/project#project) in `moon.yml` to be optional,\\n excluding `description`.\\n- Internal improvements to remote caching and artifact uploading.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.23 release!\\n\\n- Improved task inheritance workflow.\\n- Glob support in task `outputs`.\\n- Project-level environment variables."},{"id":"2023-roadmap","metadata":{"permalink":"/blog/2023-roadmap","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2023-01-04_2023-roadmap.mdx","source":"@site/blog/2023-01-04_2023-roadmap.mdx","title":"What\'s in store for 2023","description":"Happy new year! Let\'s start 2023 by reflecting on last year and diving into our tentative year long","date":"2023-01-04T00:00:00.000Z","formattedDate":"January 4, 2023","tags":[{"label":"roadmap","permalink":"/blog/tags/roadmap"},{"label":"moonbase","permalink":"/blog/tags/moonbase"},{"label":"proto","permalink":"/blog/tags/proto"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":5.42,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"2023-roadmap","title":"What\'s in store for 2023","authors":["milesj"],"tags":["roadmap","moonbase","proto","toolchain"]},"prevItem":{"title":"moon v0.22 - New pipeline, hashing, and caching, with Turborepo migration","permalink":"/blog/v0.22"},"nextItem":{"title":"moon v0.21 - Tiered language support with initial Go, PHP, Python, Ruby, and Rust","permalink":"/blog/v0.21"}},"content":"Happy new year! Let\'s start 2023 by reflecting on last year and diving into our tentative year long\\nroadmap.\\n\\n\x3c!--truncate--\x3e\\n\\n## Year 2022 in review\\n\\nThe original concept and\\n[first commit of moon](https://github.com/moonrepo/moon/commit/62267e3ccda7a45c2e9355fcbddba577ae54403d)\\n(codenamed monolith) landed October 23rd, 2021. Eight months later, we\\n[launched an alpha of moon](https://twitter.com/tothemoonrepo/status/1527467865200136192) to the\\npublic on May 19th, 2022. Since then, we\'ve landed 21 amazing releases based on feedback from the\\ncommunity and our long-term vision, with some such features as:\\n\\n- Linux musl, macOS silicon, and ARM support\\n- Full Node.js/JavaScript ecosystem support\\n- End-to-end caching and hashing of build artifacts\\n- Streamlined configuration\\n- Improved developer experience\\n- Massive performance improvements\\n- Automatic cache cleaning\\n- Code generation / scaffolding\\n- Dockerfile integration\\n- Remote caching\\n- New langauage agnostic toolchain\\n- Onboarding of 5 new languages: Rust, Go, PHP, Python, Ruby\\n- Rewritten project and dependency graphs\\n- Project-level toolchain overrides\\n- Project specific caching\\n- VSCode extension\\n- 2 GitHub actions\\n- ...and so much more!\\n\\nWe\'re very proud with the quality and amount of features we\'ve released in a 7 month timeframe. On\\ntop of this, our [GitHub stars](https://github.com/moonrepo/moon/stargazers) have steadily passed\\nthe 1k mark, [npm](https://www.npmjs.com/package/@moonrepo/cli) downloads are 500 a week and\\ngrowing, and our [Twitter](https://twitter.com/tothemoonrepo) isn\'t doing too bad. This is only the\\nstart, and we\'re not planning to go anywhere!\\n\\n## Path to an official v1 release\\n\\nA common question we receive is \\"When is v1 going to be released?\\", as some consumers are weary of\\nusing a \\"beta\\" tool. We definitely understand, and as such, have posted a\\n[high-level overview](https://github.com/moonrepo/moon/issues/491) of what we\'re hoping to land\\nbefore we tag an official v1 release. It basically boils down to landing breaking changes (mainly\\naround configuration) before v1, so that we avoid bumping to a v2 or v3 unnecessarily. We also want\\nto land our [toolchain changes](#proto) and [remote caching](#moonbase) improvements before then.\\n\\nOur current timeframe is by end of Q1, if not, early Q2.\\n\\n## Launching moonbase\\n\\nWe haven\'t mentioned this name publicly yet, but now seems like the perfect time! For the past 6\\nmonths we\'ve been working a new web application and service called moonbase, which pairs nicely with\\nmoon, as it provides additional functionality that can only be achieved by persisting information\\nacross runs.\\n\\nTo start, this service provides [remote caching](/docs/guides/remote-cache), which we\'re already\\nusing in production. At this point in time, objects are stored in our moonrepo S3 buckets, but one\\nof our major goals is to support storing objects in your private buckets, supporting additional\\ncloud providers like Google Cloud and Azure, and in the long-term, a self-hosted / on-premises\\nsolution.\\n\\nBut that\'s not all! moonbase will integrate deeply with [continuous integration](/docs/guides/ci)\\npipelines to generate insights, capture metrics, and provide near real-time dashboards. Our goal is\\nto provide a holistic overview of your entire repository.\\n\\nmoonbase with publicly available remote caching is slated for end of Q1. CI integration is\\ntentatively slated for Q2. We have even more features that we\'ll reveal in the future, so stay\\ntuned!\\n\\n## Launching proto\\n\\nAnother tool we haven\'t mentioned yet is proto (name still in flux). proto is a standardized version\\nmanager for programming languages and dependency managers. We\'ve basically extracted our\\n[toolchain](/docs/concepts/toolchain) into a standalone library, as it\'s super beneficial for\\nprojects and developers not using moon. It provides all the functionality you\'d expect from a\\nversion manager:\\n\\n- Downloading and installing specific versions\\n- Automatic version detection\\n- Updating PATH with the applicable version\\n- Generating shims\\n- Pinning shell, local, and global versions\\n\\nSo how\'s this different from existing version managers like nvm or volta? To start, it\'s written in\\nRust so it\'s _fast_ and doesn\'t suffer from being Bash only. Because of this, it\'s also\\nmulti-platform and will work on Windows. But the biggest different is that proto is language\\nagnostic and will support multiple languages. To start, it supports Node.js and Deno, but will be\\nexpanded to support our other toolchain languages like Bun, PHP, Ruby, and Python. Another cool\\nfeature is that it also manages versions of dependency managers like npm, yarn, and pnpm!\\n\\nWe\'re planning to launch proto at the start of Q2.\\n\\n## Expanding language support\\n\\nOur initial goal for moon was to provide a first-class build system for the frontend ecosystem that\\nfocused heavily on automation and the developer experience. We believe we\'ve accomplished this goal,\\nbut of course, nothing is ever actually complete, and so JavaScript, TypeScript, and Node.js support\\nwill continually be improved.\\n\\nHowever, that\'s not the entirety of the frontend ecosystem, as [Deno](https://deno.land/) and\\n[Bun](https://bun.sh/) have been gaining traction this past year, and of course, moon will support\\nboth of them as first-class platforms by end of year.\\n\\nFuthermore, we recently landed tier 1 support for 5 new languages: Rust, Ruby, PHP, Python, and Go.\\nOur end of year goal for these languages is to provide full tier 2 support. Tier 3 support is still\\nan unknown, as we need to investigate the best possible way to integrate these languages into the\\ntoolchain (this work is ongoing). We\'ll also add new languages based on demand.\\n\\nWith all that being said, this is our tenative timeline around\\n[language support](/docs#supported-languages) (which may shift at any time):\\n\\n- **Q1**\\n - Tier 1 support for Bun.\\n - Tier 2 support for Deno.\\n- **Q2**\\n - Tier 2 support for Bun, PHP.\\n - Tier 3 support for Deno.\\n- **Q3**\\n - Tier 2 support for Ruby, Python.\\n - Tier 3 support for Bun.\\n- **Q4**\\n - Tier 2 support for Rust, Go.\\n\\n## Supporting release workflows\\n\\nmoon currently excels at organizing projects, running tasks, and building artifacts, but it has no\\nsupport for release workflows. This is everything from capturing changes, bumping versions,\\ngenerating changelogs, and publishing to upstream registries. If you use\\n[Lerna](https://github.com/lerna/lerna) or [changesets](https://github.com/changesets/changesets),\\nyou should be very familiar with this workflow.\\n\\nSince moon supports monorepos and has in-depth knowledge of the project graph, we can support\\nrelease workflows with ease. Our goal is to support this workflow (for all languages) from start to\\nfinish by end of year, ideally much sooner than that!\\n\\n## More repository management tooling\\n\\nThe other aspect of moon is that it\'s a repository management tool as well as a build system. We\\nwant to embrace this even further by providing explicit functionality or automation when applicable.\\nSome examples of this are in-repository secrets management, git hooks management, code ownership and\\nquality tooling, code review helpers, repository/configuration linting, a moon DSL, and much much\\nmore."},{"id":"v0.21","metadata":{"permalink":"/blog/v0.21","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2022-12-19_v0.21.mdx","source":"@site/blog/2022-12-19_v0.21.mdx","title":"moon v0.21 - Tiered language support with initial Go, PHP, Python, Ruby, and Rust","description":"Happy Holidays \ud83c\udf84\u2603\ufe0f! With our last release of the year, we\'re very excited to announce our tiered","date":"2022-12-19T00:00:00.000Z","formattedDate":"December 19, 2022","tags":[{"label":"runner","permalink":"/blog/tags/runner"},{"label":"language","permalink":"/blog/tags/language"},{"label":"platform","permalink":"/blog/tags/platform"},{"label":"cache","permalink":"/blog/tags/cache"},{"label":"graph","permalink":"/blog/tags/graph"}],"readingTime":4.255,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.21","title":"moon v0.21 - Tiered language support with initial Go, PHP, Python, Ruby, and Rust","authors":["milesj"],"tags":["runner","language","platform","cache","graph"],"image":"./img/v0.21.png"},"prevItem":{"title":"What\'s in store for 2023","permalink":"/blog/2023-roadmap"},"nextItem":{"title":"moon v0.20 - Toolchain, caching, and hydration improvements","permalink":"/blog/v0.20"}},"content":"import Label from \'@site/src/ui/typography/Label\';\\nimport Image from \'@site/src/components/Image\';\\n\\nHappy Holidays \ud83c\udf84\u2603\ufe0f! With our last release of the year, we\'re very excited to announce our tiered\\nlanguage support structure, which lays the foundation for turning moon into a multi-language build\\nsystem! On top of this, we\'ve worked heavily on bug fixing, optimizations, and overall quality of\\nlife improvements.\\n\\n\x3c!--truncate--\x3e\\n\\n## New tiered language support\\n\\nThe most common question we receive is whether we plan to support additional languages besides\\nNode.js, with Rust, Deno, and Bun being top of that list. Adding new languages is non-trivial, as we\\nneed to build abstractions that support and integrate with the language\'s ecosystem, primarily\\ndependency managers and resolution algorithms.\\n\\nThis is a very large upfront cost, with a huge time and resource commitment. To reduce this burden,\\nwe\'re introducing a tiered support structure, so that languages can be incrementally integrated into\\nmoon and adopted by consumers.\\n\\nThe tiers break down as follows:\\n\\n-  
    ;\\n}\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.15.0) for a\\nfull list of changes.\\n\\n- Run reports (via `--report`) now include additional information, like the total duration, and\\n estimated time savings.\\n - The [moonrepo/run-report-action](https://github.com/marketplace/actions/moon-ci-run-reports) has\\n been updated with this information.\\n- Improved pnpm integration for Go/Rust binaries shipped in node modules.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.16 release!\\n\\n- Quality of life improvements for TypeScript.\\n- Per-project overrides for language/tool versions."},{"id":"v0.14","metadata":{"permalink":"/blog/v0.14","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2022-09-13_v0.14.mdx","source":"@site/blog/2022-09-13_v0.14.mdx","title":"moon v0.14 - Code generation and implicit dependencies","description":"With this release, we\'ve landed some new features that have been requested multiple times since","date":"2022-09-13T00:00:00.000Z","formattedDate":"September 13, 2022","tags":[{"label":"generator","permalink":"/blog/tags/generator"},{"label":"project-graph","permalink":"/blog/tags/project-graph"},{"label":"ci","permalink":"/blog/tags/ci"}],"readingTime":1.715,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.14","title":"moon v0.14 - Code generation and implicit dependencies","authors":["milesj"],"tags":["generator","project-graph","ci"]},"prevItem":{"title":"moon v0.15 - Enhanced Docker support and 1,000 stars!","permalink":"/blog/v0.15"},"nextItem":{"title":"moon v0.13 - Hashing and toolchain improvements","permalink":"/blog/v0.13"}},"content":"import Image from \'@site/src/components/Image\';\\n\\nWith this release, we\'ve landed some new features that have been requested multiple times since\\nlaunch. A code generation and template scaffolding layer, as well as implicit dependency scanning\\nfor the project graph!\\n\\n\x3c!--truncate--\x3e\\n\\n## New `moon generate` command\\n\\nCode generation is the staple of any large company or repository. Want to spin up a new application?\\nWhat about an npm package? Or maybe third-party integrations? Avoid copy-and-pasting existing code,\\nand instead generate it with the new `moon generate` command, which is powered by our new generator\\nsystem.\\n\\nThe generator will locate a template by name on the file system (\\"npm-package\\" in the example\\nbelow), prompt and interpolate variables, render the files with [Tera](https://tera.netlify.app/) (a\\nRust based template engine), and write the files to the target destination.\\n\\n```shell\\n# Generate code from a template to a target directory\\n$ moon generate npm-package ./packages/example\\n```\\n\\nLearn more about [code generation in the official guide](../docs/guides/codegen)!\\n\\n## Implicit dependency scanning\\n\\nThis has been a request since moon\'s official release, and it\'s finally here! Up until now, if you\\nwanted project-to-project dependency relationships, you had to explicitly declare them with\\n[`dependsOn`](../docs/config/project#dependson). But thanks to a\\n[ton of](https://github.com/moonrepo/moon/pull/288)\\n[infrastructure](https://github.com/moonrepo/moon/pull/249) and\\n[platform](https://github.com/moonrepo/moon/pull/277) changes, we can now infer implicit\\ndependencies automatically!\\n\\nWe still suggest using explicit dependencies, as it provides more\\n[automation like project syncing](../docs/concepts/project#dependencies), but implicit is great for\\nadoption and migration purposes.\\n\\n## Report CI runs on pull requests\\n\\nWe\'re fans of continuous and easily accessible feedback, and as such, have released a new GitHub\\naction, [`moonrepo/run-report-action`](https://github.com/marketplace/actions/moon-ci-run-reports),\\nwhich reports the results of [`moon ci`](../docs/commands/ci) as a pull request comment. The report\\nlooks something like the following:\\n\\n\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.14.0) for a\\nfull list of changes.\\n\\n- When running in a Docker container, caching is disabled in an effort to greatly reduce the size of\\n the image.\\n- Updated `moon setup` to also install Node.js dependencies.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.15 release!\\n\\n- Major Docker workflow improvements!\\n- Frontmatter configuration within template files."},{"id":"v0.13","metadata":{"permalink":"/blog/v0.13","editUrl":"https://github.com/moonrepo/moon/tree/master/website/blog/2022-09-01_v0.13.mdx","source":"@site/blog/2022-09-01_v0.13.mdx","title":"moon v0.13 - Hashing and toolchain improvements","description":"With this release, we\'ve landed some improvements to our smart hashing, and paved the road for","date":"2022-09-01T00:00:00.000Z","formattedDate":"September 1, 2022","tags":[{"label":"hasher","permalink":"/blog/tags/hasher"},{"label":"toolchain","permalink":"/blog/tags/toolchain"}],"readingTime":2.995,"hasTruncateMarker":true,"authors":[{"name":"Miles Johnson","title":"Founder, developer","url":"https://github.com/milesj","imageURL":"/img/authors/miles.jpg","key":"milesj"}],"frontMatter":{"slug":"v0.13","title":"moon v0.13 - Hashing and toolchain improvements","authors":["milesj"],"tags":["hasher","toolchain"]},"prevItem":{"title":"moon v0.14 - Code generation and implicit dependencies","permalink":"/blog/v0.14"}},"content":"With this release, we\'ve landed some improvements to our smart hashing, and paved the road for\\nadditional languagues and tooling.\\n\\n\x3c!--truncate--\x3e\\n\\n## Node.js is now optional\\n\\nTitle may seem confusing at first, but don\'t worry, everything is fine! For some context, moon has\\nbeen designed to be language agnostic as we plan to support more than JavaScript in the future.\\nHowever, some aspects of the codebase were hard-coded for JavaScript and made the assumption that\\nJavaScript will always be used, with one such aspect being the\\n[`node`](../docs/config/workspace#node) setting in\\n[`.moon/workspace.yml`](../docs/config/workspace).\\n\\nWe\'ve reworked this setting to be optional, which allows a repository to opt out of JavaScript.\\nRight now, this basically does nothing as we do not support other languages yet, but we felt it\\nnecessary to report it anyways! A side-effect of this change is that actions in the runner have been\\nrenamed, for example, `SetupToolchain` -> `SetupNodeToolchain`.\\n\\n## Improved hashing accuracy\\n\\nOur [smart hashing layer](../docs/concepts/cache#hashing) is pretty powerful, but was not entirely\\naccurate. Up until now, when hashing a Node.js project, we\'d include the `dependencies`,\\n`devDependencies`, and `peerDependencies` versions located within the project\'s `package.json` as\\nhash inputs. This was great, because if a dependency was explicitly upgraded in the `package.json`,\\nit would invalidate the previous hashes as the version number changed.\\n\\nHowever, what if the dependency was implicitly upgraded by another project, but the `package.json`\\nwas not modified? These kind of transitive changes were currently ignored by moon, but no longer, as\\nmoon will now resolve all `package.json` dependencies to the resolved version found in the root\\nlockfile (`package-lock.json`, `yarn.lock`, etc)!\\n\\nAt moon, we believe in providing consumers with the ability to configure to their needs, and as\\nsuch, have added a new [`hasher`](../docs/config/workspace#hasher) setting to\\n[`.moon/workspace.yml`](../docs/config/workspace). This setting will allow you to choose between the\\n2 hashing patterns above!\\n\\n## New `moon check` command\\n\\nIf you\'re like us, you\'re constantly testing, linting, typechecking, so on and so forth, a project\\nwhile developing. This was rather cumbersome, as you either had to use separate run commands\\n(`moon run project:test`, `moon run project:lint`, etc), or use the multi-run approach\\n(`moon run project:test project:lint`). Both approaches were not ideal for rapid development.\\n\\nTo simplify this process, we\'ve added a new [`moon check`](../docs/commands/check) command, that\\nwill automatically run _all_ build and test tasks for a project (or many projects)! Local and non-CI\\ntasks will _not_ be ran.\\n\\n```shell\\n# Check project at current working directory\\n$ moon check\\n\\n# Check project by name\\n$ moon check app\\n\\n# Check multiple projects by name\\n$ moon check client server\\n```\\n\\n## New `@moonrepo/types` package\\n\\nWe have many ideas for moon specific npm packages that we plan to release, but before we do that, we\\nneed to ensure all of them are built with the correct interfaces. To solve this, we are shipping a\\nnew package, [@moonrepo/types](https://www.npmjs.com/package/@moonrepo/types), that simply publishes\\nTypeScript declarations. It contains everything from project and task shapes, configuration\\nstructures, runner information, and more.\\n\\n```ts\\nimport type { ProjectConfig } from \'@moonrepo/types\';\\n```\\n\\n## Other changes\\n\\nView the\\n[official release](https://github.com/moonrepo/moon/releases/tag/%40moonrepo%2Fcli%400.13.0) for a\\nfull list of changes.\\n\\n- The runner will now fail with an error if a task has defined `outputs` but an output was not\\n created after the task is executed. This change was made so that artifacts are deterministic.\\n- The `actionRunner` setting in [`.moon/workspace.yml`](../docs/config/workspace) was renamed to\\n `runner`.\\n\\n## What\'s next?\\n\\nExpect the following in the v0.14 release!\\n\\n- A `moon generate` command to generate new projects, files, scaffolding, and more from pre-defined\\n templates.\\n- Implicit dependency discovery. moon will now scan manifest files and determine project\\n relationships."}]}')}}]); \ No newline at end of file diff --git a/assets/js/cc2086a7.8f5f6a56.js b/assets/js/cc2086a7.8f5f6a56.js new file mode 100644 index 00000000000..a852eb9f0fb --- /dev/null +++ b/assets/js/cc2086a7.8f5f6a56.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5267],{14312:e=>{e.exports=JSON.parse('{"label":"package","permalink":"/blog/tags/package","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/d5075c4a.42e3484a.js b/assets/js/d5075c4a.42e3484a.js new file mode 100644 index 00000000000..e614c4f2044 --- /dev/null +++ b/assets/js/d5075c4a.42e3484a.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[98434],{1674:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/package","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/main.15cf5edb.js b/assets/js/main.15cf5edb.js new file mode 100644 index 00000000000..b2cb699778b --- /dev/null +++ b/assets/js/main.15cf5edb.js @@ -0,0 +1,2 @@ +/*! For license information please see main.15cf5edb.js.LICENSE.txt */ +(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[40179],{56573:(e,t,n)=>{"use strict";n.d(t,{W:()=>o});var a=n(27378);function o(){return a.createElement("svg",{width:"20",height:"20",className:"DocSearch-Search-Icon",viewBox:"0 0 20 20"},a.createElement("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none",fillRule:"evenodd",strokeLinecap:"round",strokeLinejoin:"round"}))}},37140:(e,t,n)=>{"use strict";function a(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";function a(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{Z:()=>c});var a,o,r,i=n(27378);function s(){return s=Object.assign?Object.assign.bind():function(e){for(var t=1;t{let{title:t,titleId:n,...c}=e;return i.createElement("svg",s({id:"Layer_1",xmlns:"http://www.w3.org/2000/svg",x:0,y:0,viewBox:"0 0 1604 320",style:{enableBackground:"new 0 0 1604 320"},xmlSpace:"preserve",role:"img","aria-labelledby":n},c),t?i.createElement("title",{id:n},t):null,a||(a=i.createElement("style",null,".st0{fill-rule:evenodd;clip-rule:evenodd;fill:#fb651e}")),i.createElement("g",{id:"Group-19"},o||(o=i.createElement("path",{id:"Fill-1",className:"st0",d:"M0 320h320V0H0z"})),i.createElement("path",{id:"Fill-2",style:{fillRule:"evenodd",clipRule:"evenodd",fill:"#fff"},d:"M173 175.9V247h-27v-71.1L77.1 73H110l49.6 76L209 73h32.9z"}),r||(r=i.createElement("g",{id:"Group-18",transform:"translate(425.854 73.217)"},i.createElement("path",{id:"Fill-3",className:"st0",d:"M81.8 34.1C52.2 34.1 30 57 30 86.6s22.2 52.7 51.8 52.7c19 0 35.5-9.8 44.4-26.3l25.4 15.1c-14.2 24.3-40.8 40.1-69.8 40.1C36.2 168.1 0 131.9 0 86.6 0 41.2 36.2 5 81.8 5c29.3 0 55.6 15.6 69.8 40.1l-25.4 15.1c-9-16.5-25.4-26.1-44.4-26.1"}),i.createElement("path",{id:"Fill-5",className:"st0",d:"M249.2 107.2c0-18.5-13.5-32.5-30.9-32.5-17.9 0-31.4 14-31.4 32.5s13.5 32.5 31.4 32.5c17.1 0 30.9-14 30.9-32.5m-91.4 0c0-33.4 26.8-60.2 60.5-60.2 33.2 0 60 26.8 60 60.2s-26.8 60.2-60 60.2c-33.7 0-60.5-26.8-60.5-60.2"}),i.createElement("path",{id:"Fill-7",className:"st0",d:"M467.1 97.6v67.2h-29v-62.1c0-17.4-8.5-28.4-21.3-28.4-13.1 0-22.7 11-22.7 28.4v62.1h-28v-62.1c0-17.4-8.8-28.4-21.7-28.4-12.9 0-22.3 11-22.3 28.4v62.1h-29v-115h29v14.7c7.1-11 18.1-17.9 31.6-17.9 14.7 0 26.3 8.3 33.4 21.2 7.3-11.5 20.8-21.2 37.8-21.2 25.5 0 42.2 22.5 42.2 51"}),i.createElement("path",{id:"Fill-9",className:"st0",d:"M570.2 108.4c0-19.2-11.9-33-28.6-33-16.3 0-28.6 13.1-28.6 32.7 0 19.5 12.6 32.7 29.1 32.7 16.2-.1 28.1-13.6 28.1-32.4m-22.5 59.4c-16 0-27.8-7.3-34.6-17.4v14.4h-29V4.8h29v59c7-9.4 18.8-16.2 34.1-16.2 29.7 0 52.4 25.6 52.9 60.1.5 34.9-22.7 60.1-52.4 60.1"}),i.createElement("path",{id:"Fill-11",className:"st0",d:"M612.1 164.8h29v-115h-29v115zm-3.7-147.6c0-9.8 8.2-17.2 18.1-17.2 9.6 0 17.6 7.3 17.6 17.2 0 9.8-8 17.2-17.6 17.2-9.8-.1-18.1-7.4-18.1-17.2z"}),i.createElement("path",{id:"Fill-13",className:"st0",d:"M766.1 98.1v66.7h-28v-60.5c0-18.5-9.7-30-23.7-30-15.4 0-26.3 14-26.3 30.5v60h-28v-115h28v14.5c7.8-10.8 20.3-17.7 34.9-17.7 25.8 0 43.1 22 43.1 51.5"}),i.createElement("path",{id:"Fill-14",className:"st0",d:"M854.1 113.8v-2.5l-29.3 5.7c-9.8 2.3-15.8 7.3-15.8 14 0 7.1 6.5 12.4 17.2 12.1 15.4-.5 27.9-13.9 27.9-29.3m28-18.4v69.4h-28v-13.3c-8.5 9.2-21.8 16-36.5 16.3-19.5 0-36.7-12.8-36.7-34.8 0-20.8 15.6-32.7 38.8-37.3l33.7-6.4c-2.3-9.6-9.6-16.9-20.7-16.9-11 0-21.3 6.9-27.5 15.6l-21.1-15.3c10.8-15.1 29.8-25.2 48.7-25.2 28.2-.2 49.3 19.3 49.3 47.9"}),i.createElement("path",{id:"Fill-15",className:"st0",d:"M941.1 75.8V124c0 9.4 4.1 13.7 12.6 13.7h14.4v27h-18.4c-24.5 0-36.6-12-36.6-37.2V75.8h-21v-26h20V21.4l29-8.9v37.3h27v26h-27z"}),i.createElement("path",{id:"Fill-16",className:"st0",d:"M1069 107.2c0-18.5-13.5-32.5-30.9-32.5-17.9 0-31.4 14-31.4 32.5s13.5 32.5 31.4 32.5c17.1 0 30.9-14 30.9-32.5m-91.4 0c0-33.4 26.8-60.2 60.5-60.2 33.2 0 60 26.8 60 60.2s-26.8 60.2-60 60.2c-33.7 0-60.5-26.8-60.5-60.2"}),i.createElement("path",{id:"Fill-17",className:"st0",d:"M1178.1 47.3v27.9c-25.9 0-37 12.6-37 29.1v60.5h-28v-115h28v14.4c7.9-10.3 20.6-16.9 37-16.9"})))))}},23427:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,t:()=>r});var a=n(27378);const o=a.createContext(!1);function r(e){let{children:t}=e;const[n,r]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{r(!0)}),[]),a.createElement(o.Provider,{value:n},t)}},93002:(e,t,n)=>{"use strict";var a=n(27378),o=n(31542),r=n(4289),i=n(92883),s=n(161);const c=[n(86945),n(70142),n(81282),n(54374),n(59887),n(26222),n(53971)];var l=n(76623),d=n(35331),u=n(95473);function p(e){let{children:t}=e;return a.createElement(a.Fragment,null,t)}var f=n(25773),m=n(7092),g=n(50353),b=n(98948),h=n(20624),v=n(1123),y=n(43714),x=n(70174),_=n(13149),k=n(51721),w=n(60505);function E(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,g.default)(),n=(0,y.l)();return a.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:o}]=e;return a.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:o})})),a.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function S(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,g.default)(),o=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,g.default)(),{pathname:a}=(0,d.TH)();return e+(0,k.applyTrailingSlash)((0,b.Z)(a),{trailingSlash:n,baseUrl:t})}(),r=t?`${n}${t}`:o;return a.createElement(m.Z,null,a.createElement("meta",{property:"og:url",content:r}),a.createElement("link",{rel:"canonical",href:r}))}function C(){const{i18n:{currentLocale:e}}=(0,g.default)(),{metadata:t,image:n}=(0,h.L)();return a.createElement(a.Fragment,null,a.createElement(m.Z,null,a.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),a.createElement("body",{className:x.h})),n&&a.createElement(v.d,{image:n}),a.createElement(S,null),a.createElement(E,null),a.createElement(w.Z,{tag:_.HX,locale:e}),a.createElement(m.Z,null,t.map(((e,t)=>a.createElement("meta",(0,f.Z)({key:t},e))))))}const T=new Map;function P(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,u.f)(l.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var A=n(23427),N=n(83340);function j(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a(t.default?.[e]??t[e])?.(...n)));return()=>o.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:o}=e;return(0,a.useLayoutEffect)((()=>{o!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const a=t.pathname===n.pathname,o=t.hash===n.hash,r=t.search===n.search;if(a&&o&&!r)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1));document.getElementById(e)?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:o}),j("onRouteDidUpdate",{previousLocation:o,location:n}))}),[o,n]),t};function L(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,u.f)(l.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class M extends a.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?j("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=j("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),L(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return a.createElement(O,{previousLocation:this.previousLocation,location:t},a.createElement(d.AW,{location:t,render:()=>e}))}}const I=M,R="__docusaurus-base-url-issue-banner-container",D="__docusaurus-base-url-issue-banner-suggestion-container",z="__DOCUSAURUS_INSERT_BASEURL_BANNER";function F(e){return`\nwindow['${z}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${z}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${R}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
    \n

    Your Docusaurus site did not load properly.

    \n

    A very common reason is a wrong site baseUrl configuration.

    \n

    Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

    \n

    We suggest trying baseUrl =

    \n
    \n`}(e)).replace(/{window[z]=!1}),[]),a.createElement(a.Fragment,null,!s.Z.canUseDOM&&a.createElement(m.Z,null,a.createElement("script",null,F(e))),a.createElement("div",{id:R}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,g.default)(),{pathname:n}=(0,d.TH)();return t&&n===e?a.createElement(B,null):null}function U(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:o,localeConfigs:r}}=(0,g.default)(),i=(0,b.Z)(e),{htmlLang:s,direction:c}=r[o];return a.createElement(m.Z,null,a.createElement("html",{lang:s,dir:c}),a.createElement("title",null,t),a.createElement("meta",{property:"og:title",content:t}),a.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&a.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&a.createElement("link",{rel:"icon",href:i}))}var H=n(46293),V=n(76457);function Z(){const e=(0,V.Z)();return a.createElement(m.Z,null,a.createElement("html",{"data-has-hydrated":e}))}function q(){const e=(0,u.H)(l.Z),t=(0,d.TH)();return a.createElement(H.Z,null,a.createElement(N.M,null,a.createElement(A.t,null,a.createElement(p,null,a.createElement(U,null),a.createElement(C,null),a.createElement($,null),a.createElement(I,{location:P(t)},e)),a.createElement(Z,null))))}var W=n(16887);const G=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{if("undefined"==typeof document)return void n();const a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();(document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode)?.appendChild(a)}))}:function(e){return new Promise(((t,n)=>{const a=new XMLHttpRequest;a.open("GET",e,!0),a.withCredentials=!0,a.onload=()=>{200===a.status?t():n()},a.send(null)}))};var Y=n(13361);const K=new Set,Q=new Set,X=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,J={prefetch(e){if(!(e=>!X()&&!Q.has(e)&&!K.has(e))(e))return!1;K.add(e);const t=(0,u.f)(l.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,Y.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!X()&&!Q.has(e))(e)&&(Q.add(e),L(e))},ee=Object.freeze(J);if(s.Z.canUseDOM){window.docusaurus=ee;const e=o.hydrate;L(window.location.pathname).then((()=>{e(a.createElement(i.B6,null,a.createElement(r.VK,null,a.createElement(q,null))),document.getElementById("__docusaurus"))}))}},83340:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>u});var a=n(27378),o=n(36809);const r=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":["G-LB233GTZD3"],"anonymizeIP":false,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"cheat-sheet","path":"/docs/cheat-sheet","sidebar":"docs"},{"id":"commands/action-graph","path":"/docs/commands/action-graph","sidebar":"docs"},{"id":"commands/bin","path":"/docs/commands/bin","sidebar":"docs"},{"id":"commands/check","path":"/docs/commands/check","sidebar":"docs"},{"id":"commands/ci","path":"/docs/commands/ci","sidebar":"docs"},{"id":"commands/clean","path":"/docs/commands/clean","sidebar":"docs"},{"id":"commands/completions","path":"/docs/commands/completions","sidebar":"docs"},{"id":"commands/docker/prune","path":"/docs/commands/docker/prune","sidebar":"docs"},{"id":"commands/docker/scaffold","path":"/docs/commands/docker/scaffold","sidebar":"docs"},{"id":"commands/docker/setup","path":"/docs/commands/docker/setup","sidebar":"docs"},{"id":"commands/generate","path":"/docs/commands/generate","sidebar":"docs"},{"id":"commands/init","path":"/docs/commands/init","sidebar":"docs"},{"id":"commands/migrate/from-package-json","path":"/docs/commands/migrate/from-package-json","sidebar":"docs"},{"id":"commands/migrate/from-turborepo","path":"/docs/commands/migrate/from-turborepo","sidebar":"docs"},{"id":"commands/overview","path":"/docs/commands/overview","sidebar":"docs"},{"id":"commands/project","path":"/docs/commands/project","sidebar":"docs"},{"id":"commands/project-graph","path":"/docs/commands/project-graph","sidebar":"docs"},{"id":"commands/query/hash","path":"/docs/commands/query/hash","sidebar":"docs"},{"id":"commands/query/hash-diff","path":"/docs/commands/query/hash-diff","sidebar":"docs"},{"id":"commands/query/projects","path":"/docs/commands/query/projects","sidebar":"docs"},{"id":"commands/query/tasks","path":"/docs/commands/query/tasks","sidebar":"docs"},{"id":"commands/query/touched-files","path":"/docs/commands/query/touched-files","sidebar":"docs"},{"id":"commands/run","path":"/docs/commands/run","sidebar":"docs"},{"id":"commands/setup","path":"/docs/commands/setup","sidebar":"docs"},{"id":"commands/sync/codeowners","path":"/docs/commands/sync/codeowners","sidebar":"docs"},{"id":"commands/sync/hooks","path":"/docs/commands/sync/hooks","sidebar":"docs"},{"id":"commands/sync/projects","path":"/docs/commands/sync/projects","sidebar":"docs"},{"id":"commands/task","path":"/docs/commands/task","sidebar":"docs"},{"id":"commands/teardown","path":"/docs/commands/teardown","sidebar":"docs"},{"id":"commands/upgrade","path":"/docs/commands/upgrade","sidebar":"docs"},{"id":"comparison","path":"/docs/comparison","sidebar":"docs"},{"id":"concepts/cache","path":"/docs/concepts/cache","sidebar":"docs"},{"id":"concepts/file-group","path":"/docs/concepts/file-group","sidebar":"docs"},{"id":"concepts/file-pattern","path":"/docs/concepts/file-pattern","sidebar":"docs"},{"id":"concepts/project","path":"/docs/concepts/project","sidebar":"docs"},{"id":"concepts/query-lang","path":"/docs/concepts/query-lang","sidebar":"docs"},{"id":"concepts/target","path":"/docs/concepts/target","sidebar":"docs"},{"id":"concepts/task","path":"/docs/concepts/task","sidebar":"docs"},{"id":"concepts/task-inheritance","path":"/docs/concepts/task-inheritance","sidebar":"docs"},{"id":"concepts/token","path":"/docs/concepts/token","sidebar":"docs"},{"id":"concepts/toolchain","path":"/docs/concepts/toolchain","sidebar":"docs"},{"id":"concepts/workspace","path":"/docs/concepts/workspace","sidebar":"docs"},{"id":"config/project","path":"/docs/config/project","sidebar":"docs"},{"id":"config/tasks","path":"/docs/config/tasks","sidebar":"docs"},{"id":"config/template","path":"/docs/config/template","sidebar":"docs"},{"id":"config/toolchain","path":"/docs/config/toolchain","sidebar":"docs"},{"id":"config/workspace","path":"/docs/config/workspace","sidebar":"docs"},{"id":"create-project","path":"/docs/create-project","sidebar":"docs"},{"id":"create-task","path":"/docs/create-task","sidebar":"docs"},{"id":"editors/vscode","path":"/docs/editors/vscode","sidebar":"docs"},{"id":"faq","path":"/docs/faq","sidebar":"docs"},{"id":"guides/ci","path":"/docs/guides/ci","sidebar":"guides"},{"id":"guides/codegen","path":"/docs/guides/codegen","sidebar":"guides"},{"id":"guides/codeowners","path":"/docs/guides/codeowners","sidebar":"guides"},{"id":"guides/debug-task","path":"/docs/guides/debug-task","sidebar":"guides"},{"id":"guides/docker","path":"/docs/guides/docker","sidebar":"guides"},{"id":"guides/examples/angular","path":"/docs/guides/examples/angular","sidebar":"guides"},{"id":"guides/examples/astro","path":"/docs/guides/examples/astro","sidebar":"guides"},{"id":"guides/examples/eslint","path":"/docs/guides/examples/eslint","sidebar":"guides"},{"id":"guides/examples/jest","path":"/docs/guides/examples/jest","sidebar":"guides"},{"id":"guides/examples/nest","path":"/docs/guides/examples/nest","sidebar":"guides"},{"id":"guides/examples/next","path":"/docs/guides/examples/next","sidebar":"guides"},{"id":"guides/examples/nuxt","path":"/docs/guides/examples/nuxt","sidebar":"guides"},{"id":"guides/examples/packemon","path":"/docs/guides/examples/packemon","sidebar":"guides"},{"id":"guides/examples/prettier","path":"/docs/guides/examples/prettier","sidebar":"guides"},{"id":"guides/examples/react","path":"/docs/guides/examples/react","sidebar":"guides"},{"id":"guides/examples/remix","path":"/docs/guides/examples/remix","sidebar":"guides"},{"id":"guides/examples/solid","path":"/docs/guides/examples/solid","sidebar":"guides"},{"id":"guides/examples/storybook","path":"/docs/guides/examples/storybook","sidebar":"guides"},{"id":"guides/examples/sveltekit","path":"/docs/guides/examples/sveltekit","sidebar":"guides"},{"id":"guides/examples/typescript","path":"/docs/guides/examples/typescript","sidebar":"guides"},{"id":"guides/examples/vite","path":"/docs/guides/examples/vite","sidebar":"guides"},{"id":"guides/examples/vue","path":"/docs/guides/examples/vue","sidebar":"guides"},{"id":"guides/javascript/deno-handbook","path":"/docs/guides/javascript/deno-handbook","sidebar":"guides"},{"id":"guides/javascript/node-handbook","path":"/docs/guides/javascript/node-handbook","sidebar":"guides"},{"id":"guides/javascript/typescript-eslint","path":"/docs/guides/javascript/typescript-eslint"},{"id":"guides/javascript/typescript-project-refs","path":"/docs/guides/javascript/typescript-project-refs","sidebar":"guides"},{"id":"guides/offline-mode","path":"/docs/guides/offline-mode","sidebar":"guides"},{"id":"guides/open-source","path":"/docs/guides/open-source","sidebar":"guides"},{"id":"guides/profile","path":"/docs/guides/profile","sidebar":"guides"},{"id":"guides/remote-cache","path":"/docs/guides/remote-cache","sidebar":"guides"},{"id":"guides/root-project","path":"/docs/guides/root-project","sidebar":"guides"},{"id":"guides/rust/handbook","path":"/docs/guides/rust/handbook","sidebar":"guides"},{"id":"guides/sharing-config","path":"/docs/guides/sharing-config","sidebar":"guides"},{"id":"guides/vcs-hooks","path":"/docs/guides/vcs-hooks","sidebar":"guides"},{"id":"guides/webhooks","path":"/docs/guides/webhooks","sidebar":"guides"},{"id":"how-it-works/action-graph","path":"/docs/how-it-works/action-graph","sidebar":"docs"},{"id":"how-it-works/languages","path":"/docs/how-it-works/languages","sidebar":"docs"},{"id":"how-it-works/project-graph","path":"/docs/how-it-works/project-graph","sidebar":"docs"},{"id":"install","path":"/docs/install","sidebar":"docs"},{"id":"intro","path":"/docs/","sidebar":"docs"},{"id":"migrate-to-moon","path":"/docs/migrate-to-moon","sidebar":"docs"},{"id":"proto/commands/add-plugin","path":"/docs/proto/commands/add-plugin","sidebar":"proto"},{"id":"proto/commands/alias","path":"/docs/proto/commands/alias","sidebar":"proto"},{"id":"proto/commands/bin","path":"/docs/proto/commands/bin","sidebar":"proto"},{"id":"proto/commands/clean","path":"/docs/proto/commands/clean","sidebar":"proto"},{"id":"proto/commands/completions","path":"/docs/proto/commands/completions","sidebar":"proto"},{"id":"proto/commands/install","path":"/docs/proto/commands/install","sidebar":"proto"},{"id":"proto/commands/install-global","path":"/docs/proto/commands/install-global","sidebar":"proto"},{"id":"proto/commands/list","path":"/docs/proto/commands/list","sidebar":"proto"},{"id":"proto/commands/list-global","path":"/docs/proto/commands/list-global","sidebar":"proto"},{"id":"proto/commands/list-remote","path":"/docs/proto/commands/list-remote","sidebar":"proto"},{"id":"proto/commands/outdated","path":"/docs/proto/commands/outdated","sidebar":"proto"},{"id":"proto/commands/pin","path":"/docs/proto/commands/pin","sidebar":"proto"},{"id":"proto/commands/plugins","path":"/docs/proto/commands/plugins","sidebar":"proto"},{"id":"proto/commands/remove-plugin","path":"/docs/proto/commands/remove-plugin","sidebar":"proto"},{"id":"proto/commands/run","path":"/docs/proto/commands/run","sidebar":"proto"},{"id":"proto/commands/setup","path":"/docs/proto/commands/setup","sidebar":"proto"},{"id":"proto/commands/tools","path":"/docs/proto/commands/tools","sidebar":"proto"},{"id":"proto/commands/unalias","path":"/docs/proto/commands/unalias","sidebar":"proto"},{"id":"proto/commands/uninstall","path":"/docs/proto/commands/uninstall","sidebar":"proto"},{"id":"proto/commands/uninstall-global","path":"/docs/proto/commands/uninstall-global","sidebar":"proto"},{"id":"proto/commands/upgrade","path":"/docs/proto/commands/upgrade","sidebar":"proto"},{"id":"proto/commands/use","path":"/docs/proto/commands/use","sidebar":"proto"},{"id":"proto/config","path":"/docs/proto/config","sidebar":"proto"},{"id":"proto/detection","path":"/docs/proto/detection","sidebar":"proto"},{"id":"proto/faq","path":"/docs/proto/faq","sidebar":"proto"},{"id":"proto/index","path":"/docs/proto/","sidebar":"proto"},{"id":"proto/install","path":"/docs/proto/install","sidebar":"proto"},{"id":"proto/plugins","path":"/docs/proto/plugins","sidebar":"proto"},{"id":"proto/toml-plugin","path":"/docs/proto/toml-plugin","sidebar":"proto"},{"id":"proto/tools","path":"/docs/proto/tools","sidebar":"proto"},{"id":"proto/wasm-plugin","path":"/docs/proto/wasm-plugin","sidebar":"proto"},{"id":"run-task","path":"/docs/run-task","sidebar":"docs"},{"id":"setup-toolchain","path":"/docs/setup-toolchain","sidebar":"docs"},{"id":"setup-workspace","path":"/docs/setup-workspace","sidebar":"docs"},{"id":"terminology","path":"/docs/terminology","sidebar":"docs"},{"id":"/how-it-works","path":"/docs/how-it-works","sidebar":"docs"},{"id":"/concepts","path":"/docs/concepts","sidebar":"docs"},{"id":"/config","path":"/docs/config","sidebar":"docs"},{"id":"/editors","path":"/docs/editors","sidebar":"docs"},{"id":"/commands","path":"/docs/commands","sidebar":"docs"},{"id":"/commands/docker","path":"/docs/commands/docker","sidebar":"docs"},{"id":"/commands/migrate","path":"/docs/commands/migrate","sidebar":"docs"},{"id":"/commands/query","path":"/docs/commands/query","sidebar":"docs"},{"id":"/commands/sync","path":"/docs/commands/sync","sidebar":"docs"},{"id":"/guides/node/examples","path":"/docs/guides/node/examples","sidebar":"guides"}],"draftIds":[],"sidebars":{"docs":{"link":{"path":"/docs/","label":"intro"}},"guides":{"link":{"path":"/docs/guides/ci","label":"guides/ci"}},"proto":{"link":{"path":"/docs/proto/","label":"proto/index"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(57529);const c=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.1.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"},"docusaurus-theme-search-algolia":{"type":"package","name":"@docusaurus/theme-search-algolia","version":"2.4.3"},"docusaurus-plugin-client-redirects":{"type":"package","name":"@docusaurus/plugin-client-redirects","version":"2.4.3"},"docusaurus-plugin-typedoc-api":{"type":"package","name":"docusaurus-plugin-typedoc-api","version":"3.0.1"},"docusaurus-tailwindcss":{"type":"local"}}}'),l={siteConfig:o.default,siteMetadata:c,globalData:r,i18n:i,codeTranslations:s},d=a.createContext(l);function u(e){let{children:t}=e;return a.createElement(d.Provider,{value:l},t)}},46293:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var a=n(27378),o=n(161),r=n(7092),i=n(51721),s=n(64654);function c(e){let{error:t,tryAgain:n}=e;return a.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},a.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),a.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),a.createElement(l,{error:t}))}function l(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return a.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function d(e){let{error:t,tryAgain:n}=e;return a.createElement(p,{fallback:()=>a.createElement(c,{error:t,tryAgain:n})},a.createElement(r.Z,null,a.createElement("title",null,"Page Error")),a.createElement(s.Z,null,a.createElement(c,{error:t,tryAgain:n})))}const u=e=>a.createElement(d,e);class p extends a.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??u)(e)}return e??null}}},161:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const a="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:a,canUseEventListeners:a&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:a&&"IntersectionObserver"in window,canUseViewport:a&&"screen"in window}},7092:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(27378),o=n(92883);function r(e){return a.createElement(o.ql,e)}},81884:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>f});var a=n(25773),o=n(27378),r=n(4289),i=n(51721),s=n(50353),c=n(45626),l=n(161);const d=o.createContext({collectLink:()=>{}});var u=n(98948);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:g,"data-noBrokenLinkCheck":b,autoAddBaseUrl:h=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:x}}=(0,s.default)(),{withBaseUrl:_}=(0,u.C)(),k=(0,o.useContext)(d),w=(0,o.useRef)(null);(0,o.useImperativeHandle)(t,(()=>w.current));const E=p||f;const S=(0,c.Z)(E),C=E?.replace("pathname://","");let T=void 0!==C?(P=C,h&&(e=>e.startsWith("/"))(P)?_(P):P):void 0;var P;T&&S&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:x}));const A=(0,o.useRef)(!1),N=n?r.OL:r.rU,j=l.Z.canUseIntersectionObserver,O=(0,o.useRef)(),L=()=>{A.current||null==T||(window.docusaurus.preload(T),A.current=!0)};(0,o.useEffect)((()=>(!j&&S&&null!=T&&window.docusaurus.prefetch(T),()=>{j&&O.current&&O.current.disconnect()})),[O,T,j,S]);const M=T?.startsWith("#")??!1,I=!T||!S||M;return I||b||k.collectLink(T),I?o.createElement("a",(0,a.Z)({ref:w,href:T},E&&!S&&{target:"_blank",rel:"noopener noreferrer"},v)):o.createElement(N,(0,a.Z)({},v,{onMouseEnter:L,onTouchStart:L,innerRef:e=>{w.current=e,j&&e&&S&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),O.current.observe(e))},to:T},n&&{isActive:g,activeClassName:m}))}const f=o.forwardRef(p)},99213:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>s});var a=n(27378);function o(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,a.isValidElement)(e)))?n.map(((e,t)=>(0,a.isValidElement)(e)?a.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var r=n(57529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return r[t??n]??n??t}function s(e,t){let{message:n,id:a}=e;return o(i({message:n,id:a}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const s=i({message:t,id:n});return a.createElement(a.Fragment,null,o(s,r))}},45688:(e,t,n)=>{"use strict";n.d(t,{m:()=>a});const a="default"},45626:(e,t,n)=>{"use strict";function a(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!a(e)}n.d(t,{Z:()=>o,b:()=>a})},98948:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var a=n(27378),o=n(50353),r=n(45626);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.default)(),n=(0,a.useCallback)(((n,a)=>function(e,t,n,a){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===a?{}:a;if(!n||n.startsWith("#")||(0,r.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,a)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},50353:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});var a=n(27378),o=n(83340);function r(){return(0,a.useContext)(o._)}},76457:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(27378),o=n(23427);function r(){return(0,a.useContext)(o._)}},13361:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,r]=n;const i=a?`${a}.${o}`:o;var s;"object"==typeof(s=r)&&s&&Object.keys(s).length>0?e(r,i):t[i]=r}))}(e),t}},66881:(e,t,n)=>{"use strict";n.d(t,{_:()=>o,z:()=>r});var a=n(27378);const o=a.createContext(null);function r(e){let{children:t,value:n}=e;const r=a.useContext(o),i=(0,a.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const a={...t.data,...n?.data};return{plugin:t.plugin,data:a}}({parent:r,value:n})),[r,n]);return a.createElement(o.Provider,{value:i},t)}},62935:(e,t,n)=>{"use strict";n.r(t),n.d(t,{useActiveDocContext:()=>v,useActivePlugin:()=>f,useActivePluginAndVersion:()=>m,useActiveVersion:()=>h,useAllDocsData:()=>u,useDocVersionSuggestions:()=>y,useDocsData:()=>p,useLatestVersion:()=>b,useVersions:()=>g});var a=n(35331),o=n(50353),r=n(45688);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.default)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function c(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,a.LX)(t,{path:e.path,exact:!1,strict:!1})))}function l(e,t){const n=c(e,t),o=n?.docs.find((e=>!!(0,a.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((a=>{a.id===t&&(n[e.name]=a)}))})),n}(o.id):{}}}const d={},u=()=>i("docusaurus-plugin-content-docs")??d,p=e=>function(e,t,n){void 0===t&&(t=r.m),void 0===n&&(n={});const a=i(e)?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,a.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,a.LX)(t,{path:n.path,exact:!1,strict:!1})})),r=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!r&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return r}(t,n,e)}function m(e){void 0===e&&(e={});const t=f(e),{pathname:n}=(0,a.TH)();if(!t)return;return{activePlugin:t,activeVersion:c(t.pluginData,n)}}function g(e){return p(e).versions}function b(e){const t=p(e);return s(t)}function h(e){const t=p(e),{pathname:n}=(0,a.TH)();return c(t,n)}function v(e){const t=p(e),{pathname:n}=(0,a.TH)();return l(t,n)}function y(e){const t=p(e),{pathname:n}=(0,a.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},86945:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});const a={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}}},54374:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>r});var a=n(8504),o=n.n(a);o().configure({showSpinner:!1});const r={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},81282:(e,t,n)=>{"use strict";n.r(t);var a=n(52349),o=n(36809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:a}=t;globalThis.Prism=e,a.forEach((e=>{n(59341)(`./prism-${e}`)}))}(a.Z)},6125:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(27378);const o="iconExternalLink_nPrP";function r(e){let{width:t=13.5,height:n=13.5}=e;return a.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:o},a.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},64654:(e,t,n)=>{"use strict";n.d(t,{Z:()=>It});var a=n(27378),o=n(37140),r=n(46293),i=n(1123),s=n(39360),c=n(75484),l=n(70174);const d="skipToContent_oPtH";function u(){return a.createElement(s.l,{className:d})}var p=n(20624),f=n(10),m=n(25773),g=n(99213);function b(e){let{width:t=21,height:n=21,color:o="currentColor",strokeWidth:r=1.2,className:i,...s}=e;return a.createElement("svg",(0,m.Z)({viewBox:"0 0 15 15",width:t,height:n},s),a.createElement("g",{stroke:o,strokeWidth:r},a.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const h="closeButton_J5rP";function v(e){return a.createElement("button",(0,m.Z)({type:"button","aria-label":(0,g.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,o.Z)("clean-btn close",h,e.className)}),a.createElement(b,{width:14,height:14,strokeWidth:3.1}))}const y="content_bSb_";function x(e){const{announcementBar:t}=(0,p.L)(),{content:n}=t;return a.createElement("div",(0,m.Z)({},e,{className:(0,o.Z)(y,e.className),dangerouslySetInnerHTML:{__html:n}}))}const _="announcementBar_zJRd",k="announcementBarPlaceholder_NpUd",w="announcementBarClose_Jjdj",E="announcementBarContent_t7IR";function S(){const{announcementBar:e}=(0,p.L)(),{isActive:t,close:n}=(0,f.nT)();if(!t)return null;const{backgroundColor:o,textColor:r,isCloseable:i}=e;return a.createElement("div",{className:_,style:{backgroundColor:o,color:r},role:"banner"},i&&a.createElement("div",{className:k}),a.createElement(x,{className:E}),i&&a.createElement(v,{onClick:n,className:w}))}var C=n(85536),T=n(82561),P=n(37930),A=n(15530);function N(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:i}=(0,A.Y)();return a.createElement("div",{className:"navbar-sidebar"},t,a.createElement("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},a.createElement("div",{className:"navbar-sidebar__item menu"},n),a.createElement("div",{className:"navbar-sidebar__item menu"},r)))}var j=n(55421),O=n(76457);function L(e){return a.createElement("svg",(0,m.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function M(e){return a.createElement("svg",(0,m.Z)({viewBox:"0 0 24 24",width:24,height:24},e),a.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}const I={toggle:"toggle_ki11",toggleButton:"toggleButton_MMFG",darkToggleIcon:"darkToggleIcon_U96C",lightToggleIcon:"lightToggleIcon_lgto",toggleButtonDisabled:"toggleButtonDisabled_Uw7m"};function R(e){let{className:t,buttonClassName:n,value:r,onChange:i}=e;const s=(0,O.Z)(),c=(0,g.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,g.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,g.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return a.createElement("div",{className:(0,o.Z)(I.toggle,t)},a.createElement("button",{className:(0,o.Z)("clean-btn",I.toggleButton,!s&&I.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===r?"light":"dark"),disabled:!s,title:c,"aria-label":c,"aria-live":"polite"},a.createElement(L,{className:(0,o.Z)(I.toggleIcon,I.lightToggleIcon)}),a.createElement(M,{className:(0,o.Z)(I.toggleIcon,I.darkToggleIcon)})))}const D=a.memo(R),z="darkNavbarColorModeToggle_m8pZ";function F(e){let{className:t}=e;const n=(0,p.L)().navbar.style,o=(0,p.L)().colorMode.disableSwitch,{colorMode:r,setColorMode:i}=(0,j.I)();return o?null:a.createElement(D,{className:t,buttonClassName:"dark"===n?z:void 0,value:r,onChange:i})}var B=n(10898);function $(){return a.createElement(B.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function U(){const e=(0,C.e)();return a.createElement("button",{type:"button","aria-label":(0,g.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},a.createElement(b,{color:"var(--ifm-color-emphasis-600)"}))}function H(){return a.createElement("div",{className:"navbar-sidebar__brand"},a.createElement($,null),a.createElement(F,{className:"margin-right--md"}),a.createElement(U,null))}var V=n(81884),Z=n(98948),q=n(45626),W=n(61503),G=n(6125);function Y(e){let{activeBasePath:t,activeBaseRegex:n,to:o,href:r,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:l,...d}=e;const u=(0,Z.Z)(o),p=(0,Z.Z)(t),f=(0,Z.Z)(r,{forcePrependBaseUrl:!0}),g=i&&r&&!(0,q.Z)(r),b=s?{dangerouslySetInnerHTML:{__html:s}}:{children:a.createElement(a.Fragment,null,i,g&&a.createElement(G.Z,c&&{width:12,height:12}))};return r?a.createElement(V.default,(0,m.Z)({href:l?f:r},d,b)):a.createElement(V.default,(0,m.Z)({to:u,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?(0,W.F)(n,t.pathname):t.pathname.startsWith(p)},d,b))}function K(e){let{className:t,isDropdownItem:n=!1,...r}=e;const i=a.createElement(Y,(0,m.Z)({className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},r));return n?a.createElement("li",null,i):i}function Q(e){let{className:t,isDropdownItem:n,...r}=e;return a.createElement("li",{className:"menu__list-item"},a.createElement(Y,(0,m.Z)({className:(0,o.Z)("menu__link",t)},r)))}function X(e){let{mobile:t=!1,position:n,...o}=e;const r=t?Q:K;return a.createElement(r,(0,m.Z)({},o,{activeClassName:o.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var J=n(80376),ee=n(8862),te=n(43511);function ne(e,t){return e.some((e=>function(e,t){return!!(0,ee.Mg)(e.to,t)||!!(0,W.F)(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ae(e){let{items:t,position:n,className:r,onClick:i,...s}=e;const c=(0,a.useRef)(null),[l,d]=(0,a.useState)(!1);return(0,a.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[c]),a.createElement("div",{ref:c,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":l})},a.createElement(Y,(0,m.Z)({"aria-haspopup":"true","aria-expanded":l,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",r)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!l))}}),s.children??s.label),a.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>a.createElement(ze,(0,m.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function oe(e){let{items:t,className:n,position:r,onClick:i,...s}=e;const c=(0,te.b)(),l=ne(t,c),{collapsed:d,toggleCollapsed:u,setCollapsed:p}=(0,J.u)({initialState:()=>!l});return(0,a.useEffect)((()=>{l&&p(!l)}),[c,l,p]),a.createElement("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":d})},a.createElement(Y,(0,m.Z)({role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},s,{onClick:e=>{e.preventDefault(),u()}}),s.children??s.label),a.createElement(J.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:d},t.map(((e,t)=>a.createElement(ze,(0,m.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function re(e){let{mobile:t=!1,...n}=e;const o=t?oe:ae;return a.createElement(o,n)}var ie=n(50353),se=n(43714),ce=n(35331);function le(e){let{width:t=20,height:n=20,...o}=e;return a.createElement("svg",(0,m.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},o),a.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}const de="iconLanguage_kvP7";function ue(){return a.createElement("svg",{width:"15",height:"15",className:"DocSearch-Control-Key-Icon"},a.createElement("path",{d:"M4.505 4.496h2M5.505 5.496v5M8.216 4.496l.055 5.993M10 7.5c.333.333.5.667.5 1v2M12.326 4.5v5.996M8.384 4.496c1.674 0 2.116 0 2.116 1.5s-.442 1.5-2.116 1.5M3.205 9.303c-.09.448-.277 1.21-1.241 1.203C1 10.5.5 9.513.5 8V7c0-1.57.5-2.5 1.464-2.494.964.006 1.134.598 1.24 1.342M12.553 10.5h1.953",strokeWidth:"1.2",stroke:"currentColor",fill:"none",strokeLinecap:"square"}))}var pe=n(56573),fe=["translations"];function me(){return me=Object.assign||function(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,a=new Array(t);n=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var ve="Ctrl";var ye=a.forwardRef((function(e,t){var n=e.translations,o=void 0===n?{}:n,r=he(e,fe),i=o.buttonText,s=void 0===i?"Search":i,c=o.buttonAriaLabel,l=void 0===c?"Search":c,d=ge((0,a.useState)(null),2),u=d[0],p=d[1];return(0,a.useEffect)((function(){"undefined"!=typeof navigator&&(/(Mac|iPhone|iPod|iPad)/i.test(navigator.platform)?p("\u2318"):p(ve))}),[]),a.createElement("button",me({type:"button",className:"DocSearch DocSearch-Button","aria-label":l},r,{ref:t}),a.createElement("span",{className:"DocSearch-Button-Container"},a.createElement(pe.W,null),a.createElement("span",{className:"DocSearch-Button-Placeholder"},s)),a.createElement("span",{className:"DocSearch-Button-Keys"},null!==u&&a.createElement(a.Fragment,null,a.createElement("kbd",{className:"DocSearch-Button-Key"},u===ve?a.createElement(ue,null):u),a.createElement("kbd",{className:"DocSearch-Button-Key"},"K"))))})),xe=n(7092),_e=n(53584),ke=n(42473),we=n(13149);var Ee=n(31542);const Se={button:{buttonText:(0,g.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),buttonAriaLabel:(0,g.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"})},modal:{searchBox:{resetButtonTitle:(0,g.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),resetButtonAriaLabel:(0,g.I)({id:"theme.SearchModal.searchBox.resetButtonTitle",message:"Clear the query",description:"The label and ARIA label for search box reset button"}),cancelButtonText:(0,g.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"}),cancelButtonAriaLabel:(0,g.I)({id:"theme.SearchModal.searchBox.cancelButtonText",message:"Cancel",description:"The label and ARIA label for search box cancel button"})},startScreen:{recentSearchesTitle:(0,g.I)({id:"theme.SearchModal.startScreen.recentSearchesTitle",message:"Recent",description:"The title for recent searches"}),noRecentSearchesText:(0,g.I)({id:"theme.SearchModal.startScreen.noRecentSearchesText",message:"No recent searches",description:"The text when no recent searches"}),saveRecentSearchButtonTitle:(0,g.I)({id:"theme.SearchModal.startScreen.saveRecentSearchButtonTitle",message:"Save this search",description:"The label for save recent search button"}),removeRecentSearchButtonTitle:(0,g.I)({id:"theme.SearchModal.startScreen.removeRecentSearchButtonTitle",message:"Remove this search from history",description:"The label for remove recent search button"}),favoriteSearchesTitle:(0,g.I)({id:"theme.SearchModal.startScreen.favoriteSearchesTitle",message:"Favorite",description:"The title for favorite searches"}),removeFavoriteSearchButtonTitle:(0,g.I)({id:"theme.SearchModal.startScreen.removeFavoriteSearchButtonTitle",message:"Remove this search from favorites",description:"The label for remove favorite search button"})},errorScreen:{titleText:(0,g.I)({id:"theme.SearchModal.errorScreen.titleText",message:"Unable to fetch results",description:"The title for error screen of search modal"}),helpText:(0,g.I)({id:"theme.SearchModal.errorScreen.helpText",message:"You might want to check your network connection.",description:"The help text for error screen of search modal"})},footer:{selectText:(0,g.I)({id:"theme.SearchModal.footer.selectText",message:"to select",description:"The explanatory text of the action for the enter key"}),selectKeyAriaLabel:(0,g.I)({id:"theme.SearchModal.footer.selectKeyAriaLabel",message:"Enter key",description:"The ARIA label for the Enter key button that makes the selection"}),navigateText:(0,g.I)({id:"theme.SearchModal.footer.navigateText",message:"to navigate",description:"The explanatory text of the action for the Arrow up and Arrow down key"}),navigateUpKeyAriaLabel:(0,g.I)({id:"theme.SearchModal.footer.navigateUpKeyAriaLabel",message:"Arrow up",description:"The ARIA label for the Arrow up key button that makes the navigation"}),navigateDownKeyAriaLabel:(0,g.I)({id:"theme.SearchModal.footer.navigateDownKeyAriaLabel",message:"Arrow down",description:"The ARIA label for the Arrow down key button that makes the navigation"}),closeText:(0,g.I)({id:"theme.SearchModal.footer.closeText",message:"to close",description:"The explanatory text of the action for Escape key"}),closeKeyAriaLabel:(0,g.I)({id:"theme.SearchModal.footer.closeKeyAriaLabel",message:"Escape key",description:"The ARIA label for the Escape key button that close the modal"}),searchByText:(0,g.I)({id:"theme.SearchModal.footer.searchByText",message:"Search by",description:"The text explain that the search is making by Algolia"})},noResultsScreen:{noResultsText:(0,g.I)({id:"theme.SearchModal.noResultsScreen.noResultsText",message:"No results for",description:"The text explains that there are no results for the following search"}),suggestedQueryText:(0,g.I)({id:"theme.SearchModal.noResultsScreen.suggestedQueryText",message:"Try searching for",description:"The text for the suggested query when no results are found for the following search"}),reportMissingResultsText:(0,g.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsText",message:"Believe this query should return results?",description:"The text for the question where the user thinks there are missing results"}),reportMissingResultsLinkText:(0,g.I)({id:"theme.SearchModal.noResultsScreen.reportMissingResultsLinkText",message:"Let us know.",description:"The text for the link to report missing results"})}},placeholder:(0,g.I)({id:"theme.SearchModal.placeholder",message:"Search docs",description:"The placeholder of the input of the DocSearch pop-up modal"})};let Ce=null;function Te(e){let{hit:t,children:n}=e;return a.createElement(V.default,{to:t.url},n)}function Pe(e){let{state:t,onClose:n}=e;const o=(0,_e.M)();return a.createElement(V.default,{to:o(t.query),onClick:n},a.createElement(g.Z,{id:"theme.SearchBar.seeAll",values:{count:t.context.nbHits}},"See all {count} results"))}function Ae(e){let{contextualSearch:t,externalUrlRegex:o,...r}=e;const{siteMetadata:i}=(0,ie.default)(),s=(0,ke.l)(),c=function(){const{locale:e,tags:t}=(0,we._q)();return[`language:${e}`,t.map((e=>`docusaurus_tag:${e}`))]}(),l=r.searchParameters?.facetFilters??[],d=t?function(e,t){const n=e=>"string"==typeof e?[e]:e;return[...n(e),...n(t)]}(c,l):l,u={...r.searchParameters,facetFilters:d},p=(0,ce.k6)(),f=(0,a.useRef)(null),g=(0,a.useRef)(null),[b,h]=(0,a.useState)(!1),[v,y]=(0,a.useState)(void 0),x=(0,a.useCallback)((()=>Ce?Promise.resolve():Promise.all([n.e(88777).then(n.bind(n,88777)),Promise.all([n.e(40532),n.e(89127)]).then(n.bind(n,89127)),Promise.all([n.e(40532),n.e(34670)]).then(n.bind(n,34670))]).then((e=>{let[{DocSearchModal:t}]=e;Ce=t}))),[]),_=(0,a.useCallback)((()=>{x().then((()=>{f.current=document.createElement("div"),document.body.insertBefore(f.current,document.body.firstChild),h(!0)}))}),[x,h]),k=(0,a.useCallback)((()=>{h(!1),f.current?.remove()}),[h]),w=(0,a.useCallback)((e=>{x().then((()=>{h(!0),y(e.key)}))}),[x,h,y]),E=(0,a.useRef)({navigate(e){let{itemUrl:t}=e;(0,W.F)(o,t)?window.location.href=t:p.push(t)}}).current,S=(0,a.useRef)((e=>r.transformItems?r.transformItems(e):e.map((e=>({...e,url:s(e.url)}))))).current,C=(0,a.useMemo)((()=>e=>a.createElement(Pe,(0,m.Z)({},e,{onClose:k}))),[k]),T=(0,a.useCallback)((e=>(e.addAlgoliaAgent("docusaurus",i.docusaurusVersion),e)),[i.docusaurusVersion]);return function(e){var t=e.isOpen,n=e.onOpen,o=e.onClose,r=e.onInput,i=e.searchButtonRef;a.useEffect((function(){function e(e){(27===e.keyCode&&t||"k"===e.key&&(e.metaKey||e.ctrlKey)||!function(e){var t=e.target,n=t.tagName;return t.isContentEditable||"INPUT"===n||"SELECT"===n||"TEXTAREA"===n}(e)&&"/"===e.key&&!t)&&(e.preventDefault(),t?o():document.body.classList.contains("DocSearch--active")||document.body.classList.contains("DocSearch--active")||n()),i&&i.current===document.activeElement&&r&&/[a-zA-Z0-9]/.test(String.fromCharCode(e.keyCode))&&r(e)}return window.addEventListener("keydown",e),function(){window.removeEventListener("keydown",e)}}),[t,n,o,r,i])}({isOpen:b,onOpen:_,onClose:k,onInput:w,searchButtonRef:g}),a.createElement(a.Fragment,null,a.createElement(xe.Z,null,a.createElement("link",{rel:"preconnect",href:`https://${r.appId}-dsn.algolia.net`,crossOrigin:"anonymous"})),a.createElement(ye,{onTouchStart:x,onFocus:x,onMouseOver:x,onClick:_,ref:g,translations:Se.button}),b&&Ce&&f.current&&(0,Ee.createPortal)(a.createElement(Ce,(0,m.Z)({onClose:k,initialScrollY:window.scrollY,initialQuery:v,navigator:E,transformItems:S,hitComponent:Te,transformSearchClient:T},r.searchPagePath&&{resultsFooterComponent:C},r,{searchParameters:u,placeholder:Se.placeholder,translations:Se.modal})),f.current))}function Ne(){const{siteConfig:e}=(0,ie.default)();return a.createElement(Ae,e.themeConfig.algolia)}const je="searchBox_WqAV";function Oe(e){let{children:t,className:n}=e;return a.createElement("div",{className:(0,o.Z)(n,je)},t)}var Le=n(62935),Me=n(45161);var Ie=n(24453);const Re=e=>e.docs.find((t=>t.id===e.mainDocId));const De={default:X,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:o,...r}=e;const{i18n:{currentLocale:i,locales:s,localeConfigs:c}}=(0,ie.default)(),l=(0,se.l)(),{search:d,hash:u}=(0,ce.TH)(),p=[...n,...s.map((e=>{const n=`${`pathname://${l.createUrl({locale:e,fullyQualified:!1})}`}${d}${u}`;return{label:c[e].label,lang:c[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...o],f=t?(0,g.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):c[i].label;return a.createElement(re,(0,m.Z)({},r,{mobile:t,label:a.createElement(a.Fragment,null,a.createElement(le,{className:de}),f),items:p}))},search:function(e){let{mobile:t,className:n}=e;return t?null:a.createElement(Oe,{className:n},a.createElement(Ne,null))},dropdown:re,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:i=!1}=e;const s=i?"li":"div";return a.createElement(s,{className:(0,o.Z)({navbar__item:!r&&!i,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:o,...r}=e;const{activeDoc:i}=(0,Le.useActiveDocContext)(o),s=(0,Me.vY)(t,o);return null===s?null:a.createElement(X,(0,m.Z)({exact:!0},r,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:o,...r}=e;const{activeDoc:i}=(0,Le.useActiveDocContext)(o),s=(0,Me.oz)(t,o).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return a.createElement(X,(0,m.Z)({exact:!0},r,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:o,...r}=e;const i=(0,Me.lO)(o)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return a.createElement(X,(0,m.Z)({},r,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:o,dropdownItemsBefore:r,dropdownItemsAfter:i,...s}=e;const{search:c,hash:l}=(0,ce.TH)(),d=(0,Le.useActiveDocContext)(n),u=(0,Le.useVersions)(n),{savePreferredVersionName:p}=(0,Ie.J)(n),f=[...r,...u.map((e=>{const t=d.alternateDocVersions[e.name]??Re(e);return{label:e.label,to:`${t.path}${c}${l}`,isActive:()=>e===d.activeVersion,onClick:()=>p(e.name)}})),...i],b=(0,Me.lO)(n)[0],h=t&&f.length>1?(0,g.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,v=t&&f.length>1?void 0:Re(b).path;return f.length<=1?a.createElement(X,(0,m.Z)({},s,{mobile:t,label:h,to:v,isActive:o?()=>!1:void 0})):a.createElement(re,(0,m.Z)({},s,{mobile:t,label:h,to:v,items:f,isActive:o?()=>!1:void 0}))}};function ze(e){let{type:t,...n}=e;const o=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),r=De[o];if(!r)throw new Error(`No NavbarItem component found for type "${t}".`);return a.createElement(r,n)}function Fe(){const e=(0,C.e)(),t=(0,p.L)().navbar.items;return a.createElement("ul",{className:"menu__list"},t.map(((t,n)=>a.createElement(ze,(0,m.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Be(e){return a.createElement("button",(0,m.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),a.createElement(g.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function $e(){const e=0===(0,p.L)().navbar.items.length,t=(0,A.Y)();return a.createElement(a.Fragment,null,!e&&a.createElement(Be,{onClick:()=>t.hide()}),t.content)}function Ue(){const e=(0,C.e)();return(0,P.N)(e.shown),e.shouldRender?a.createElement(N,{header:a.createElement(H,null),primaryMenu:a.createElement(Fe,null),secondaryMenu:a.createElement($e,null)}):null}const He="navbarHideable_hhpl",Ve="navbarHidden_nmcs";function Ze(e){return a.createElement("div",(0,m.Z)({role:"presentation"},e,{className:(0,o.Z)("navbar-sidebar__backdrop",e.className)}))}function qe(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:r}}=(0,p.L)(),i=(0,C.e)(),{navbarRef:s,isNavbarVisible:c}=(0,T.c)(n);return a.createElement("nav",{ref:s,"aria-label":(0,g.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[He,!c&&Ve],{"navbar--dark":"dark"===r,"navbar--primary":"primary"===r,"navbar-sidebar--show":i.shown})},t,a.createElement(Ze,{onClick:i.toggle}),a.createElement(Ue,null))}var We=n(19441),Ge=n(63211);function Ye(e){let{width:t=30,height:n=30,className:o,...r}=e;return a.createElement("svg",(0,m.Z)({className:o,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},r),a.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Ke(){const{toggle:e,shown:t}=(0,C.e)();return a.createElement("button",{onClick:e,"aria-label":(0,g.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},a.createElement(Ye,null))}const Qe="colorModeToggle_Hewu";function Xe(e){let{items:t}=e;return a.createElement(a.Fragment,null,t.map(((e,t)=>a.createElement(We.QW,{key:t,onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t})},a.createElement(ze,e)))))}function Je(e){let{left:t,right:n}=e;return a.createElement("div",{className:"navbar__inner"},a.createElement("div",{className:"navbar__items"},t),a.createElement("div",{className:"navbar__items navbar__items--right"},n))}function et(){const e=(0,C.e)(),t=(0,p.L)().navbar.items,[n,o]=(0,Ge.A)(t),r=t.find((e=>"search"===e.type));return a.createElement(Je,{left:a.createElement(a.Fragment,null,!e.disabled&&a.createElement(Ke,null),a.createElement($,null),a.createElement(Xe,{items:n})),right:a.createElement(a.Fragment,null,a.createElement(Xe,{items:o}),a.createElement(F,{className:Qe}),!r&&a.createElement(Oe,null,a.createElement(Ne,null)))})}function tt(){return a.createElement(qe,null,a.createElement(et,null))}var nt=n(33922),at=n(9187),ot=n(90728);function rt(e){let{item:t}=e;const{to:n,href:o,label:r,prependBaseUrlToHref:i,...s}=t,c=(0,Z.Z)(n),l=(0,Z.Z)(o,{forcePrependBaseUrl:!0});return a.createElement(ot.Z,(0,m.Z)({},o?{href:i?l:o}:{to:c},s),r)}function it(e){let{column:t}=e;return a.createElement("div",null,a.createElement(at.Z,{level:6,transform:"uppercase"},t.title),a.createElement("ul",{role:"list",className:"m-0 mt-2 p-0 space-y-1 list-none"},t.items.map((e=>a.createElement("li",{key:e.href??e.to},a.createElement(rt,{item:e}))))))}function st(e){let{columns:t}=e;return a.createElement(a.Fragment,null,t.map(((e,t)=>a.createElement(it,{key:t,column:e}))))}function ct(e){let{item:t}=e;const{to:n,href:o,label:r,prependBaseUrlToHref:i,...s}=t,c=(0,Z.Z)(n),l=(0,Z.Z)(o,{forcePrependBaseUrl:!0});return a.createElement(V.default,(0,m.Z)({className:"footer__link-item"},o?{href:i?l:o}:{to:c},s),r,o&&!(0,q.Z)(o)&&a.createElement(G.Z,null))}function lt(){return a.createElement("span",{className:"footer__link-separator"},"\xb7")}function dt(e){let{item:t}=e;return t.html?a.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):a.createElement(ct,{item:t})}function ut(e){let{links:t}=e;return a.createElement("div",{className:"footer__links text--center"},a.createElement("div",{className:"footer__links"},t.map(((e,n)=>a.createElement(a.Fragment,{key:n},a.createElement(dt,{item:e}),t.length!==n+1&&a.createElement(lt,null))))))}function pt(e){let{links:t}=e;return(0,nt.a)(t)?a.createElement(st,{columns:t}):a.createElement(ut,{links:t})}var ft=n(14034);const mt="footerLogoLink_tutC";function gt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,Z.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return a.createElement(ft.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function bt(e){let{logo:t}=e;return t.href?a.createElement(V.default,{href:t.href,className:mt,target:t.target},a.createElement(gt,{logo:t})):a.createElement(gt,{logo:t})}function ht(e){let{copyright:t}=e;return a.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}var vt=n(9928),yt=n(31792),xt=n(30658),_t=n(83469),kt=n(50615),wt=n(76911);function Et(e){return a.createElement(wt.Z,(0,m.Z)({},e,{label:"Next",id:"contact-next",className:"w-1/4"}))}function St(){const[e,t]=(0,a.useState)(1),[n,o]=(0,a.useState)(""),[r,i]=(0,a.useState)(""),[s,c]=(0,a.useState)(""),[l,d]=(0,a.useState)(!1),[u,p]=(0,a.useState)(!1),f=(0,a.useCallback)((()=>{t(1),o(""),i(""),c(""),d(!1),p(!1)}),[]),m=(0,a.useCallback)((()=>{t((e=>e+1))}),[]),g=(0,a.useCallback)((e=>{o(e.target.value)}),[]),b=(0,a.useCallback)((e=>{i(e.target.value)}),[]),h=(0,a.useCallback)((e=>{c(e.target.value)}),[]),v=(0,a.useCallback)((()=>{d(!0),fetch("https://formspree.io/f/xnqrnvgw",{body:JSON.stringify({email:r,message:s,subject:n}),headers:{Accept:"application/json"},method:"post"}).then((e=>{p(!e.ok)})).catch((()=>{p(!0)})).finally((()=>{d(!1),m()}))}),[r,s,n,m]),y=!!r.match(/^.+@.+$/),x=s.length>10;return a.createElement(a.Fragment,null,n?a.createElement(xt.ZP,null,a.createElement(ot.Z,{className:"float-right text-lg px-1",onClick:f},a.createElement(yt.Z,{icon:_t.g82})),"Contacting about ",a.createElement("b",null,n)):a.createElement(xt.ZP,{variant:"muted"},"Want to learn more about moonrepo? Have questions?"),a.createElement("div",{className:"mt-2"},1===e&&a.createElement("div",{className:"flex justify-between gap-x-1"},a.createElement("div",{className:"w-3/4"},a.createElement("label",{htmlFor:"subject",className:"sr-only"},"Subject"),a.createElement("select",{id:"subject",name:"subject",required:!0,className:"outline-none min-w-0 w-full bg-white border border-transparent rounded-md px-1 py-1 text-base text-gray-800 placeholder-gray-600 h-full font-sans",onChange:g,value:n},a.createElement("option",{value:""}),a.createElement("option",{value:"Consultation"},"Consultation"),a.createElement("option",{value:"Partnership"},"Partnership"),a.createElement("option",{value:"Affiliation"},"Affiliation"))),a.createElement(Et,{disabled:!n,onClick:m})),2===e&&a.createElement("div",{className:"flex justify-between gap-x-1"},a.createElement("div",{className:"w-3/4"},a.createElement("label",{htmlFor:"email",className:"sr-only"},"Email address"),a.createElement("input",{type:"email",name:"email",id:"email",autoComplete:"email",required:!0,className:"appearance-none outline-none min-w-0 w-full bg-white border border-transparent rounded-md px-1 py-1 text-base text-gray-800 placeholder-gray-600 h-full font-sans",placeholder:"Email address",onChange:b,value:r})),a.createElement(Et,{disabled:!y,onClick:m})),3===e&&a.createElement("div",null,a.createElement("textarea",{id:"message",name:"message",required:!0,className:"appearance-none outline-none min-w-0 w-full bg-white border border-transparent rounded-md px-1 py-1 text-base text-gray-800 placeholder-gray-600 font-sans",placeholder:"Message...",onChange:h}),a.createElement("div",{className:"flex justify-end"},a.createElement(Et,{disabled:!x||l,label:"Send",onClick:v}))),4===e&&a.createElement("div",null,a.createElement(xt.ZP,null,u?"Failed to send message. Please try again.":"Thanks for contacting us! We'll get back to you as soon as possible."))),a.createElement("div",{className:"mt-4 flex justify-end items-start gap-1"},a.createElement("div",null,a.createElement(xt.ZP,{variant:"muted",size:"sm"},"Backed by")),a.createElement("div",null,a.createElement(kt.Z,{height:22}))))}function Ct(e){let{links:t,copyright:n}=e;return a.createElement("footer",{className:"bg-gray-100 dark:bg-slate-600","aria-labelledby":"footer-heading"},a.createElement("h2",{id:"footer-heading",className:"sr-only"},"Footer"),a.createElement("div",{className:"max-w-7xl mx-auto py-3 px-2 sm:px-3 md:py-4 md:px-4 lg:px-6"},a.createElement("div",{className:"lg:grid lg:grid-cols-5 lg:gap-3"},a.createElement("div",{className:"grid grid-cols-3 gap-3 lg:col-span-3"},t),a.createElement("div",{className:"mt-4 lg:mt-0 col-span-2"},a.createElement(at.Z,{level:6,transform:"uppercase"},"Contact us"),a.createElement(St,null))),a.createElement("div",{className:"mt-3 pt-3 md:mt-4 md:pt-4 border-0 border-t border-solid border-gray-200 dark:border-slate-400 flex items-center justify-between"},a.createElement(xt.ZP,{className:"m-0",variant:"muted",size:"sm",as:"div"},n),a.createElement("div",{className:"flex space-x-2"},a.createElement(ot.Z,{href:"https://github.com/moonrepo"},a.createElement("span",{className:"sr-only"},"GitHub"),a.createElement(yt.Z,{icon:vt.zhw})),a.createElement(ot.Z,{href:"https://discord.gg/qCh9MEynv2"},a.createElement("span",{className:"sr-only"},"Discord"),a.createElement(yt.Z,{icon:vt.omb})),a.createElement(ot.Z,{href:"https://twitter.com/tothemoonrepo"},a.createElement("span",{className:"sr-only"},"Twitter"),a.createElement(yt.Z,{icon:vt.mdU}))))))}function Tt(){const{footer:e}=(0,p.L)();if(!e)return null;const{copyright:t,links:n,logo:o,style:r}=e;return a.createElement(Ct,{style:r,links:n&&n.length>0&&a.createElement(pt,{links:n}),logo:o&&a.createElement(bt,{logo:o}),copyright:t&&a.createElement(ht,{copyright:t})})}const Pt=a.memo(Tt);var At=n(41763),Nt=n(83457);const jt=(0,At.Qc)([j.S,f.pl,Nt.OC,Ie.L5,i.VC,Ge.V]);function Ot(e){let{children:t}=e;return a.createElement(jt,null,t)}function Lt(e){let{error:t,tryAgain:n}=e;return a.createElement("main",{className:"container margin-vert--xl"},a.createElement("div",{className:"row"},a.createElement("div",{className:"col col--6 col--offset-3"},a.createElement("h1",{className:"hero__title"},a.createElement(g.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),a.createElement("div",{className:"margin-vert--lg"},a.createElement(We.Cw,{onClick:n,className:"button button--primary shadow--lw"})),a.createElement("hr",null),a.createElement("div",{className:"margin-vert--md"},a.createElement(We.aG,{error:t})))))}const Mt="mainWrapper_MB5r";function It(e){const{children:t,noFooter:n,wrapperClassName:d,title:p,description:f}=e;return(0,l.t)(),a.createElement(Ot,null,a.createElement(i.d,{title:p,description:f}),a.createElement(u,null),a.createElement(S,null),a.createElement(tt,null),a.createElement("div",{id:s.u,className:(0,o.Z)(c.k.wrapper.main,Mt,d)},a.createElement(r.Z,{fallback:e=>a.createElement(Lt,e)},t)),!n&&a.createElement(Pt,null))}},10898:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var a=n(25773),o=n(27378),r=n(81884),i=n(98948),s=n(50353),c=n(20624),l=n(14034);function d(e){let{logo:t,alt:n,imageClassName:a}=e;const r={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},s=o.createElement(l.Z,{className:t.className,sources:r,height:t.height,width:t.width,alt:n,style:t.style});return a?o.createElement("div",{className:a},s):s}function u(e){const{siteConfig:{title:t}}=(0,s.default)(),{navbar:{title:n,logo:l}}=(0,c.L)(),{imageClassName:u,titleClassName:p,...f}=e,m=(0,i.Z)(l?.href||"/"),g=n?"":t,b=l?.alt??g;return o.createElement(r.default,(0,a.Z)({to:m},f,l?.target&&{target:l.target}),l&&o.createElement(d,{logo:l,alt:b,imageClassName:u}),null!=n&&o.createElement("b",{className:p},n))}},60505:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=n(27378),o=n(7092);function r(e){let{locale:t,version:n,tag:r}=e;const i=t;return a.createElement(o.Z,null,t&&a.createElement("meta",{name:"docusaurus_locale",content:t}),n&&a.createElement("meta",{name:"docusaurus_version",content:n}),r&&a.createElement("meta",{name:"docusaurus_tag",content:r}),i&&a.createElement("meta",{name:"docsearch:language",content:i}),n&&a.createElement("meta",{name:"docsearch:version",content:n}),r&&a.createElement("meta",{name:"docsearch:docusaurus_tag",content:r}))}},14034:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var a=n(25773),o=n(27378),r=n(37140),i=n(76457),s=n(55421);const c={themedImage:"themedImage_BQGR","themedImage--light":"themedImage--light_HAxW","themedImage--dark":"themedImage--dark_bGx0"};function l(e){const t=(0,i.Z)(),{colorMode:n}=(0,s.I)(),{sources:l,className:d,alt:u,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return o.createElement(o.Fragment,null,f.map((e=>o.createElement("img",(0,a.Z)({key:e,src:l[e],alt:u,className:(0,r.Z)(c.themedImage,c[`themedImage--${e}`],d)},p)))))}},80376:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var a=n(25773),o=n(27378),r=n(161),i=n(56903);function s(e){let{initialState:t}=e;const[n,a]=(0,o.useState)(t??!1),r=(0,o.useCallback)((()=>{a((e=>!e))}),[]);return{collapsed:n,setCollapsed:a,toggleCollapsed:r}}const c={display:"none",overflow:"hidden",height:"0px"},l={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?c:l;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function u(e){let{collapsibleRef:t,collapsed:n,animation:a}=e;const r=(0,o.useRef)(!1);(0,o.useEffect)((()=>{const e=t.current;function o(){const t=e.scrollHeight,n=a?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${a?.easing??"ease-in-out"}`,height:`${t}px`}}function s(){const t=o();e.style.transition=t.transition,e.style.height=t.height}if(!r.current)return d(e,n),void(r.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=c.height,e.style.overflow=c.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,a])}function p(e){if(!r.Z.canUseDOM)return e?c:l}function f(e){let{as:t="div",collapsed:n,children:a,animation:r,onCollapseTransitionEnd:i,className:s,disableSSRStyle:c}=e;const l=(0,o.useRef)(null);return u({collapsibleRef:l,collapsed:n,animation:r}),o.createElement(t,{ref:l,style:c?void 0:p(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(l.current,n),i?.(n))},className:s},a)}function m(e){let{collapsed:t,...n}=e;const[r,i]=(0,o.useState)(!t),[s,c]=(0,o.useState)(t);return(0,o.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,o.useLayoutEffect)((()=>{r&&c(t)}),[r,t]),r?o.createElement(f,(0,a.Z)({},n,{collapsed:s})):null}function g(e){let{lazy:t,...n}=e;const a=t?m:f;return o.createElement(a,n)}},10:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var a=n(27378),o=n(76457),r=n(71819),i=n(41763),s=n(20624);const c=(0,r.WA)("docusaurus.announcement.dismiss"),l=(0,r.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),u=e=>c.set(String(e)),p=a.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,o.Z)(),[n,r]=(0,a.useState)((()=>!!t&&d()));(0,a.useEffect)((()=>{r(d())}),[]);const i=(0,a.useCallback)((()=>{u(!0),r(!0)}),[]);return(0,a.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=l.get();"annoucement-bar"===n&&(n="announcement-bar");const a=t!==n;l.set(t),a&&u(!1),!a&&d()||r(!1)}),[e]),(0,a.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return a.createElement(p.Provider,{value:n},t)}function m(){const e=(0,a.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},55421:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>g});var a=n(27378),o=n(161),r=n(41763),i=n(71819),s=n(20624);const c=a.createContext(void 0),l="theme",d=(0,i.WA)(l),u="light",p="dark",f=e=>e===p?p:u;function m(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[r,i]=(0,a.useState)((e=>o.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e))(e));(0,a.useEffect)((()=>{t&&d.del()}),[t]);const c=(0,a.useCallback)((function(t,a){void 0===a&&(a={});const{persist:o=!0}=a;t?(i(t),o&&(e=>{d.set(f(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p:u:e),d.del())}),[n,e]);(0,a.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(r))}),[r]),(0,a.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==l)return;const t=d.get();null!==t&&c(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,c]);const m=(0,a.useRef)(!1);return(0,a.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>{window.matchMedia("print").matches||m.current?m.current=window.matchMedia("print").matches:c(null)};return e.addListener(a),()=>e.removeListener(a)}),[c,t,n]),(0,a.useMemo)((()=>({colorMode:r,setColorMode:c,get isDarkTheme(){return r===p},setLightTheme(){c(u)},setDarkTheme(){c(p)}})),[r,c])}function g(e){let{children:t}=e;const n=m();return a.createElement(c.Provider,{value:n},t)}function b(){const e=(0,a.useContext)(c);if(null==e)throw new r.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},24453:(e,t,n)=>{"use strict";n.d(t,{J:()=>y,L5:()=>h,Oh:()=>x});var a=n(27378),o=n(62935),r=n(45688),i=n(20624),s=n(45161),c=n(41763),l=n(71819);const d=e=>`docs-preferred-version-${e}`,u=(e,t,n)=>{(0,l.WA)(d(e),{persistence:t}).set(n)},p=(e,t)=>(0,l.WA)(d(e),{persistence:t}).get(),f=(e,t)=>{(0,l.WA)(d(e),{persistence:t}).del()};const m=a.createContext(null);function g(){const e=(0,o.useAllDocsData)(),t=(0,i.L)().docs.versionPersistence,n=(0,a.useMemo)((()=>Object.keys(e)),[e]),[r,s]=(0,a.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,a.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:a}=e;function o(e){const t=p(e,n);return a[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(f(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[r,(0,a.useMemo)((()=>({savePreferredVersion:function(e,n){u(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function b(e){let{children:t}=e;const n=g();return a.createElement(m.Provider,{value:n},t)}function h(e){let{children:t}=e;return s.cE?a.createElement(b,null,t):a.createElement(a.Fragment,null,t)}function v(){const e=(0,a.useContext)(m);if(!e)throw new c.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=r.m);const t=(0,o.useDocsData)(e),[n,i]=v(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,a.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}function x(){const e=(0,o.useAllDocsData)(),[t]=v();function n(n){const a=e[n],{preferredVersionName:o}=t[n];return a.versions.find((e=>e.name===o))??null}const a=Object.keys(e);return Object.fromEntries(a.map((e=>[e,n(e)])))}},52095:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>s});var a=n(27378),o=n(41763);const r=Symbol("EmptyContext"),i=a.createContext(r);function s(e){let{children:t,name:n,items:o}=e;const r=(0,a.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return a.createElement(i.Provider,{value:r},t)}function c(){const e=(0,a.useContext)(i);if(e===r)throw new o.i6("DocsSidebarProvider");return e}},25611:(e,t,n)=>{"use strict";n.d(t,{E:()=>s,q:()=>i});var a=n(27378),o=n(41763);const r=a.createContext(null);function i(e){let{children:t,version:n}=e;return a.createElement(r.Provider,{value:n},t)}function s(){const e=(0,a.useContext)(r);if(null===e)throw new o.i6("DocsVersionProvider");return e}},85536:(e,t,n)=>{"use strict";n.d(t,{M:()=>u,e:()=>p});var a=n(27378),o=n(63471),r=n(58357),i=n(30654),s=n(20624),c=n(41763);const l=a.createContext(void 0);function d(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,s.L)().navbar;return 0===t.length&&!e.component}(),t=(0,r.i)(),n=!e&&"mobile"===t,[c,l]=(0,a.useState)(!1);(0,i.Rb)((()=>{if(c)return l(!1),!1}));const d=(0,a.useCallback)((()=>{l((e=>!e))}),[]);return(0,a.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,a.useMemo)((()=>({disabled:e,shouldRender:n,toggle:d,shown:c})),[e,n,d,c])}function u(e){let{children:t}=e;const n=d();return a.createElement(l.Provider,{value:n},t)}function p(){const e=a.useContext(l);if(void 0===e)throw new c.i6("NavbarMobileSidebarProvider");return e}},63471:(e,t,n)=>{"use strict";n.d(t,{HY:()=>s,Zo:()=>c,n2:()=>i});var a=n(27378),o=n(41763);const r=a.createContext(null);function i(e){let{children:t}=e;const n=(0,a.useState)({component:null,props:null});return a.createElement(r.Provider,{value:n},t)}function s(){const e=(0,a.useContext)(r);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const i=(0,a.useContext)(r);if(!i)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,s]=i,c=(0,o.Ql)(n);return(0,a.useEffect)((()=>{s({component:t,props:c})}),[s,t,c]),(0,a.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},15530:(e,t,n)=>{"use strict";n.d(t,{P:()=>c,Y:()=>d});var a=n(27378),o=n(41763),r=n(85536),i=n(63471);const s=a.createContext(null);function c(e){let{children:t}=e;const n=function(){const e=(0,r.e)(),t=(0,i.HY)(),[n,s]=(0,a.useState)(!1),c=null!==t.component,l=(0,o.D9)(c);return(0,a.useEffect)((()=>{c&&!l&&s(!0)}),[c,l]),(0,a.useEffect)((()=>{c?e.shown||s(!0):s(!1)}),[e.shown,c]),(0,a.useMemo)((()=>[n,s]),[n])}();return a.createElement(s.Provider,{value:n},t)}function l(e){if(e.component){const t=e.component;return a.createElement(t,e.props)}}function d(){const e=(0,a.useContext)(s);if(!e)throw new o.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,r=(0,a.useCallback)((()=>n(!1)),[n]),c=(0,i.HY)();return(0,a.useMemo)((()=>({shown:t,hide:r,content:l(c)})),[r,c,t])}},82561:(e,t,n)=>{"use strict";n.d(t,{c:()=>i});var a=n(27378),o=n(24993),r=n(83457);function i(e){const[t,n]=(0,a.useState)(e),i=(0,a.useRef)(!1),s=(0,a.useRef)(0),c=(0,a.useCallback)((e=>{null!==e&&(s.current=e.getBoundingClientRect().height)}),[]);return(0,r.RF)(((t,a)=>{let{scrollY:o}=t;if(!e)return;if(o=r?n(!1):o+l{if(!e)return;const a=t.location.hash;if(a?document.getElementById(a.substring(1)):void 0)return i.current=!0,void n(!1);n(!0)})),{navbarRef:c,isNavbarVisible:t}}},70174:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>r});var a=n(27378);const o="navigation-with-keyboard";function r(){(0,a.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},37930:(e,t,n)=>{"use strict";n.d(t,{N:()=>o});var a=n(27378);function o(e){void 0===e&&(e=!0),(0,a.useEffect)((()=>(document.body.style.overflow=e?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[e])}},53584:(e,t,n)=>{"use strict";n.d(t,{K:()=>i,M:()=>s});var a=n(27378),o=n(50353),r=n(30654);function i(){return(0,r.Nc)("q")}function s(){const{siteConfig:{baseUrl:e,themeConfig:t}}=(0,o.default)(),{algolia:{searchPagePath:n}}=t;return(0,a.useCallback)((t=>`${e}${n}?q=${encodeURIComponent(t)}`),[e,n])}},58357:(e,t,n)=>{"use strict";n.d(t,{i:()=>l});var a=n(27378),o=n(161);const r="desktop",i="mobile",s="ssr";function c(){return o.Z.canUseDOM?window.innerWidth>996?r:i:s}function l(){const[e,t]=(0,a.useState)((()=>c()));return(0,a.useEffect)((()=>{function e(){t(c())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},75484:(e,t,n)=>{"use strict";n.d(t,{k:()=>a});const a={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},56903:(e,t,n)=>{"use strict";function a(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>a})},45161:(e,t,n)=>{"use strict";n.d(t,{MN:()=>S,Wl:()=>g,_F:()=>v,cE:()=>p,em:()=>m,hI:()=>E,jA:()=>b,lO:()=>_,oz:()=>k,s1:()=>x,vY:()=>w,xz:()=>f});var a=n(27378),o=n(35331),r=n(95473),i=n(62935),s=n(24453),c=n(25611),l=n(52095),d=n(70784),u=n(8862);const p=!!i.useAllDocsData;function f(e){const t=(0,c.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function m(e,t){for(const n of e)if("category"===n.type){if(t(n))return n;const e=m(n.items,t);if(e)return e}}function g(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=g(t);if(e)return e}}}function b(){const{pathname:e}=(0,o.TH)(),t=(0,l.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=y({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,u.Mg)(e,t);function v(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||((e,t)=>e.some((e=>v(e,t))))(e.items,t))}function y(e){let{sidebarItems:t,pathname:n,onlyCategories:a=!1}=e;const o=[];return function e(t){for(const r of t)if("category"===r.type&&((0,u.Mg)(r.href,n)||e(r.items))||"link"===r.type&&(0,u.Mg)(r.href,n)){return a&&"category"!==r.type||o.unshift(r),!0}return!1}(t),o}function x(){const e=(0,l.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.useActivePlugin)()?.pluginData.breadcrumbs;return!1!==n&&e?y({sidebarItems:e.items,pathname:t}):null}function _(e){const{activeVersion:t}=(0,i.useActiveDocContext)(e),{preferredVersion:n}=(0,s.J)(e),o=(0,i.useLatestVersion)(e);return(0,a.useMemo)((()=>(0,d.j)([t,n,o].filter(Boolean))),[t,n,o])}function k(e,t){const n=_(t);return(0,a.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),a=t.find((t=>t[0]===e));if(!a)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return a[1]}),[e,n])}function w(e,t){const n=_(t);return(0,a.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),a=t.find((t=>t.id===e));if(!a){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,d.j)(t.map((e=>e.id))).join("\n- ")}`)}return a}),[e,n])}function E(e){let{route:t,versionMetadata:n}=e;const a=(0,o.TH)(),i=t.routes,s=i.find((e=>(0,o.LX)(a.pathname,e)));if(!s)return null;const c=s.sidebar,l=c?n.docsSidebars[c]:void 0;return{docElement:(0,r.H)(i),sidebarName:c,sidebarItems:l}}function S(e){return e.filter((e=>"category"!==e.type||!!g(e)))}},19441:(e,t,n)=>{"use strict";n.d(t,{aG:()=>l,Cw:()=>c,QW:()=>d});var a=n(25773),o=n(27378),r=n(99213),i=n(51721);const s="errorBoundaryError_WE6Q";function c(e){return o.createElement("button",(0,a.Z)({type:"button"},e),o.createElement(r.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function l(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return o.createElement("p",{className:s},n)}class d extends o.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}},33922:(e,t,n)=>{"use strict";function a(e){return"title"in e[0]}n.d(t,{a:()=>a})},99162:(e,t,n)=>{"use strict";n.d(t,{p:()=>o});var a=n(50353);function o(e){const{siteConfig:t}=(0,a.default)(),{title:n,titleDelimiter:o}=t;return e?.trim().length?`${e.trim()} ${o} ${n}`:n}},30654:(e,t,n)=>{"use strict";n.d(t,{Nc:()=>d,Rb:()=>s,_X:()=>l,xL:()=>c});var a=n(27378),o=n(35331),r=n(70644),i=n(41763);function s(e){!function(e){const t=(0,o.k6)(),n=(0,i.zX)(e);(0,a.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}function c(e){const t=(0,o.k6)();return(0,r.useSyncExternalStore)(t.listen,(()=>e(t)),(()=>e(t)))}function l(e){return c((t=>null===e?null:new URLSearchParams(t.location.search).get(e)))}function d(e){const t=l(e)??"",n=function(){const e=(0,o.k6)();return(0,a.useCallback)(((t,n,a)=>{const o=new URLSearchParams(e.location.search);n?o.set(t,n):o.delete(t),(a?.push?e.push:e.replace)({search:o.toString()})}),[e])}();return[t,(0,a.useCallback)(((t,a)=>{n(e,t,a)}),[n,e])]}},70784:(e,t,n)=>{"use strict";function a(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,a)=>e.findIndex((e=>t(e,n)))!==a))}function o(e){return Array.from(new Set(e))}n.d(t,{j:()=>o,l:()=>a})},1123:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>d,VC:()=>f});var a=n(27378),o=n(33441),r=n(7092),i=n(66881);function s(){const e=a.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var c=n(98948),l=n(99162);function d(e){let{title:t,description:n,keywords:o,image:i,children:s}=e;const d=(0,l.p)(t),{withBaseUrl:u}=(0,c.C)(),p=i?u(i,{absolute:!0}):void 0;return a.createElement(r.Z,null,t&&a.createElement("title",null,d),t&&a.createElement("meta",{property:"og:title",content:d}),n&&a.createElement("meta",{name:"description",content:n}),n&&a.createElement("meta",{property:"og:description",content:n}),o&&a.createElement("meta",{name:"keywords",content:Array.isArray(o)?o.join(","):o}),p&&a.createElement("meta",{property:"og:image",content:p}),p&&a.createElement("meta",{name:"twitter:image",content:p}),s)}const u=a.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=a.useContext(u),s=(0,o.Z)(i,t);return a.createElement(u.Provider,{value:s},a.createElement(r.Z,null,a.createElement("html",{className:s})),n)}function f(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return a.createElement(p,{className:(0,o.Z)(r,i)},t)}},63211:(e,t,n)=>{"use strict";n.d(t,{A:()=>s,V:()=>c});var a=n(27378),o=n(85536),r=n(63471),i=n(15530);function s(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}function c(e){let{children:t}=e;return a.createElement(r.n2,null,a.createElement(o.M,null,a.createElement(i.P,null,t)))}},41763:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,LI:()=>o,Qc:()=>l,Ql:()=>c,i6:()=>s,zX:()=>r});var a=n(27378);const o=n(161).Z.canUseDOM?a.useLayoutEffect:a.useEffect;function r(e){const t=(0,a.useRef)(e);return o((()=>{t.current=e}),[e]),(0,a.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,a.useRef)();return o((()=>{t.current=e})),t.current}class s extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,a.useMemo)((()=>e),t.flat())}function l(e){return t=>{let{children:n}=t;return a.createElement(a.Fragment,null,e.reduceRight(((e,t)=>a.createElement(t,null,e)),n))}}},61503:(e,t,n)=>{"use strict";function a(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}n.d(t,{F:()=>a})},8862:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var a=n(27378),o=n(76623),r=n(50353);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,r.default)().siteConfig;return(0,a.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function a(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(a)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},83457:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>c,RF:()=>u,o5:()=>p,sG:()=>l});var a=n(27378),o=n(161),r=n(76457),i=n(41763);const s=a.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,a.useRef)(!0);return(0,a.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return a.createElement(s.Provider,{value:n},t)}function l(){const e=(0,a.useContext)(s);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function u(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=l(),o=(0,a.useRef)(d()),r=(0,i.zX)(e);(0,a.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();r(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[r,n,...t])}function p(){const e=l(),t=function(){const e=(0,a.useRef)({elem:null,top:0}),t=(0,a.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,a.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const a=t.getBoundingClientRect().top-n;return a&&window.scrollBy({left:0,top:a}),e.current={elem:null,top:0},{restored:0!==a}}),[]);return(0,a.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,a.useRef)(void 0),o=(0,a.useCallback)((a=>{t.save(a),e.disableScrollEvents(),n.current=()=>{const{restored:a}=t.restore();if(n.current=void 0,a){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,a.useLayoutEffect)((()=>{queueMicrotask((()=>n.current?.()))})),{blockElementScrollPositionUntilNextRender:o}}function f(){const e=(0,a.useRef)(null),t=(0,r.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function a(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},13149:(e,t,n)=>{"use strict";n.d(t,{HX:()=>i,_q:()=>c,os:()=>s});var a=n(62935),o=n(50353),r=n(24453);const i="default";function s(e,t){return`docs-${e}-${t}`}function c(){const{i18n:e}=(0,o.default)(),t=(0,a.useAllDocsData)(),n=(0,a.useActivePluginAndVersion)(),c=(0,r.Oh)();const l=[i,...Object.keys(t).map((function(e){const a=n?.activePlugin.pluginId===e?n.activeVersion:void 0,o=c[e],r=t[e].versions.find((e=>e.isLast));return s(e,(a??o??r).name)}))];return{locale:e.currentLocale,tags:l}}},39360:(e,t,n)=>{"use strict";n.d(t,{l:()=>p,u:()=>c});var a=n(25773),o=n(27378),r=n(35331),i=n(99213),s=n(24993);const c="__docusaurus_skipToContent_fallback";function l(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function d(){const e=(0,o.useRef)(null),{action:t}=(0,r.k6)(),n=(0,o.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(c);t&&l(t)}),[]);return(0,s.S)((n=>{let{location:a}=n;e.current&&!a.hash&&"PUSH"===t&&l(e.current)})),{containerRef:e,onClick:n}}const u=(0,i.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function p(e){const t=e.children??u,{containerRef:n,onClick:r}=d();return o.createElement("div",{ref:n,role:"region","aria-label":u},o.createElement("a",(0,a.Z)({},e,{href:`#${c}`,onClick:r}),t))}},71819:(e,t,n)=>{"use strict";n.d(t,{Nk:()=>u,WA:()=>d,_f:()=>p});var a=n(27378),o=n(70644);const r="localStorage";function i(e){let{key:t,oldValue:n,newValue:a,storage:o}=e;if(n===a)return;const r=document.createEvent("StorageEvent");r.initStorageEvent("storage",!1,!1,t,n,a,window.location.href,o),window.dispatchEvent(r)}function s(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,c||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),c=!0),null}var t}let c=!1;const l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function d(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=s(t?.persistence);return null===n?l:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const a=n.getItem(e);n.setItem(e,t),i({key:e,oldValue:a,newValue:t,storage:n})}catch(a){console.error(`Docusaurus storage error, can't set ${e}=${t}`,a)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),i({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const a=a=>{a.storageArea===n&&a.key===e&&t(a)};return window.addEventListener("storage",a),()=>window.removeEventListener("storage",a)}catch(a){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,a),()=>{}}}}}function u(e,t){const n=(0,a.useRef)((()=>null===e?l:d(e,t))).current(),r=(0,a.useCallback)((e=>"undefined"==typeof window?()=>{}:n.listen(e)),[n]);return[(0,o.useSyncExternalStore)(r,(()=>"undefined"==typeof window?null:n.get()),(()=>null)),n]}function p(e){void 0===e&&(e=r);const t=s(e);if(!t)return[];const n=[];for(let a=0;a{"use strict";n.d(t,{l:()=>i});var a=n(50353),o=n(35331),r=n(51721);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,a.default)(),{pathname:c}=(0,o.TH)(),l=(0,r.applyTrailingSlash)(c,{trailingSlash:n,baseUrl:e}),d=s===i?e:e.replace(`/${s}/`,"/"),u=l.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:a}=e;return`${a?t:""}${function(e){return e===i?`${d}`:`${d}${e}/`}(n)}${u}`}}}},43511:(e,t,n)=>{"use strict";n.d(t,{b:()=>r});var a=n(35331),o=n(50353);function r(){const{siteConfig:{baseUrl:e}}=(0,o.default)(),{pathname:t}=(0,a.TH)();return t.replace(e,"/")}},24993:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var a=n(27378),o=n(35331),r=n(41763);function i(e){const t=(0,o.TH)(),n=(0,r.D9)(t),i=(0,r.zX)(e);(0,a.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},20624:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var a=n(50353);function o(){return(0,a.default)().siteConfig.themeConfig}},80632:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var a=n(50353);function o(){const{siteConfig:{themeConfig:e}}=(0,a.default)();return e}},42473:(e,t,n)=>{"use strict";n.d(t,{l:()=>s});var a=n(27378),o=n(61503),r=n(98948),i=n(80632);function s(){const{withBaseUrl:e}=(0,r.C)(),{algolia:{externalUrlRegex:t,replaceSearchResultPathname:n}}=(0,i.L)();return(0,a.useCallback)((a=>{const r=new URL(a);if((0,o.F)(t,r.href))return a;const i=`${r.pathname+r.hash}`;return e(function(e,t){return t?e.replaceAll(new RegExp(t.from,"g"),t.to):e}(i,n))}),[e,t,n])}},42520:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:a}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),r="/"===o||o===a?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,r)}},86102:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},51721:function(e,t,n){"use strict";var a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(42520);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return a(o).default}});var r=n(86102);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return r.getErrorCausalChain}})},76623:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var a=n(27378),o=n(25773),r=n(51237),i=n.n(r),s=n(16887);const c={"0034bcd6":[()=>Promise.all([n.e(40532),n.e(30780),n.e(97424)]).then(n.bind(n,88297)),"@site/docs/guides/examples/sveltekit.mdx",88297],"00568285":[()=>n.e(84470).then(n.t.bind(n,24422,19)),"~docs/default/category-docs-docs-category-sync-750.json",24422],"016d6d21":[()=>n.e(82056).then(n.t.bind(n,93105,19)),"~blog/default/blog-tags-deno-02d-list.json",93105],"01a85c17":[()=>Promise.all([n.e(40532),n.e(64013)]).then(n.bind(n,79898)),"@theme/BlogTagsListPage",79898],"01b81367":[()=>n.e(601).then(n.t.bind(n,24469,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",24469],"02401b2b":[()=>Promise.all([n.e(40532),n.e(85027)]).then(n.bind(n,84851)),"@site/docs/guides/javascript/deno-handbook.mdx",84851],"03193cc0":[()=>Promise.all([n.e(40532),n.e(30780),n.e(43363)]).then(n.bind(n,21311)),"@site/docs/guides/examples/typescript.mdx",21311],"046e2194":[()=>Promise.all([n.e(40532),n.e(30780),n.e(48667)]).then(n.bind(n,96841)),"@site/docs/install.mdx",96841],"04d8c43e":[()=>n.e(86551).then(n.t.bind(n,48632,19)),"~blog/default/blog-tags-global-167-list.json",48632],"0627e785":[()=>n.e(74824).then(n.bind(n,33440)),"@site/docs/proto/config.mdx",33440],"062a1a43":[()=>n.e(54403).then(n.t.bind(n,88217,19)),"~docs/default/tag-docs-tags-git-hooks-0f1.json",88217],"0631dc07":[()=>n.e(87976).then(n.bind(n,1485)),"@site/blog/2023-10-27_proto-v0.21.mdx?truncated=true",1485],"0681d8e1":[()=>n.e(30601).then(n.t.bind(n,99663,19)),"~blog/default/blog-tags-version-acf.json",99663],"0684a904":[()=>n.e(50670).then(n.bind(n,11259)),"@site/blog/2023-05-23_proto-v0.9.mdx",11259],"068b8e98":[()=>n.e(35666).then(n.bind(n,83260)),"@site/docs/commands/ci.mdx",83260],"073e718f":[()=>n.e(42656).then(n.bind(n,29759)),"@site/docs/guides/root-project.mdx",29759],"088b3228":[()=>n.e(72882).then(n.t.bind(n,596,19)),"~blog/default/blog-tags-typescript-2e3-list.json",596],"09d7020f":[()=>n.e(30959).then(n.t.bind(n,1150,19)),"~docs/default/tag-docs-tags-code-40a.json",1150],"0abe3c97":[()=>n.e(29962).then(n.t.bind(n,70701,19)),"~blog/default/blog-tags-automation-1d1-list.json",70701],"0ae21139":[()=>n.e(64788).then(n.t.bind(n,36585,19)),"~blog/default/blog-tags-projects-924-list.json",36585],"0b1dc2cd":[()=>n.e(25971).then(n.t.bind(n,51973,19)),"~docs/default/category-docs-docs-category-query-cf5.json",51973],"0b289f4d":[()=>Promise.all([n.e(40532),n.e(21575)]).then(n.bind(n,239)),"@site/blog/2022-10-21_v0.17.mdx",239],"0c7f16c1":[()=>n.e(36297).then(n.t.bind(n,43871,19)),"~docs/default/tag-docs-tags-mql-730.json",43871],"0cb5fac6":[()=>Promise.all([n.e(40532),n.e(30780),n.e(1719)]).then(n.bind(n,11911)),"@site/docs/guides/examples/storybook.mdx",11911],"0cd40d9b":[()=>Promise.all([n.e(40532),n.e(30780),n.e(1175)]).then(n.bind(n,53488)),"@site/docs/guides/examples/remix.mdx",53488],"0e22a4b2":[()=>n.e(11558).then(n.t.bind(n,60335,19)),"~blog/default/blog-tags-projects-924.json",60335],"0e736169":[()=>n.e(43972).then(n.bind(n,95650)),"@site/blog/2023-05-15_moon-v1.6.mdx?truncated=true",95650],"0f8a713b":[()=>n.e(6759).then(n.bind(n,98197)),"@site/docs/commands/generate.mdx",98197],"0ff9eadc":[()=>n.e(14640).then(n.t.bind(n,57376,19)),"~blog/default/blog-tags-checksum-9de-list.json",57376],"110403ef":[()=>n.e(73443).then(n.t.bind(n,85687,19)),"~blog/default/blog-tags-project-34b.json",85687],"11ce4159":[()=>n.e(1531).then(n.t.bind(n,75034,19)),"~blog/default/blog-page-5-c6b.json",75034],"1202c0b0":[()=>n.e(59673).then(n.t.bind(n,96822,19)),"~blog/default/blog-tags-hash-686-list.json",96822],"125698e9":[()=>n.e(7037).then(n.t.bind(n,4490,19)),"~blog/default/blog-tags-tokens-6f1-list.json",4490],"128a5f34":[()=>n.e(45244).then(n.t.bind(n,49877,19)),"~blog/default/blog-tags-cache-6ff.json",49877],"1365e0a6":[()=>n.e(29917).then(n.bind(n,38126)),"@site/blog/2023-05-08_moon-v1.5.mdx",38126],"140321b2":[()=>n.e(80175).then(n.t.bind(n,89006,19)),"~blog/default/blog-tags-detect-153-list.json",89006],"146ca1ad":[()=>n.e(52753).then(n.bind(n,89478)),"@site/docs/commands/query/tasks.mdx",89478],"14eb3368":[()=>Promise.all([n.e(40532),n.e(9817)]).then(n.bind(n,80777)),"@theme/DocCategoryGeneratedIndexPage",80777],"14f81d84":[()=>Promise.all([n.e(40532),n.e(42463)]).then(n.bind(n,81793)),"@site/blog/2023-01-30_v0.23.mdx?truncated=true",81793],"14f9b0f2":[()=>n.e(433).then(n.t.bind(n,5455,19)),"~blog/default/blog-tags-lang-462.json",5455],"151c652b":[()=>n.e(37394).then(n.t.bind(n,7356,19)),"~blog/default/blog-tags-globals-7ef-list.json",7356],"15a4ce61":[()=>n.e(92129).then(n.t.bind(n,86596,19)),"~blog/default/blog-tags-railway-ade-list.json",86596],"163fb342":[()=>n.e(36371).then(n.bind(n,80678)),"@site/docs/commands/upgrade.mdx",80678],"16ea2389":[()=>n.e(64414).then(n.t.bind(n,91511,19)),"~blog/default/blog-tags-source-541-list.json",91511],"170d6c86":[()=>n.e(42839).then(n.t.bind(n,56832,19)),"~blog/default/blog-tags-roadmap-d2e.json",56832],"1740b646":[()=>n.e(67448).then(n.t.bind(n,17832,19)),"~blog/default/blog-tags-logging-c85-list.json",17832],17896441:[()=>Promise.all([n.e(40532),n.e(30780),n.e(85730),n.e(27918)]).then(n.bind(n,74764)),"@theme/DocItem",74764],"17ae22f4":[()=>n.e(76352).then(n.bind(n,64851)),"@site/blog/2023-09-11_proto-v0.17.mdx",64851],"17cacc08":[()=>Promise.all([n.e(40532),n.e(88893)]).then(n.bind(n,28137)),"@site/docs/config/workspace.mdx",28137],"18dd62e9":[()=>n.e(26285).then(n.t.bind(n,33310,19)),"~blog/default/blog-tags-vscode-a6c-list.json",33310],"1910946c":[()=>n.e(44873).then(n.t.bind(n,87136,19)),"~blog/default/blog-tags-deno-02d.json",87136],"193b481a":[()=>Promise.all([n.e(21947),n.e(99662)]).then(n.bind(n,45655)),"@site/src/pages/moon.tsx",45655],"195293b6":[()=>Promise.all([n.e(40532),n.e(30780),n.e(72484)]).then(n.bind(n,78032)),"@site/docs/guides/examples/astro.mdx",78032],"19ca9089":[()=>n.e(6388).then(n.t.bind(n,72768,19)),"~blog/default/blog-tags-dependency-e04-list.json",72768],"1a2b669c":[()=>n.e(47999).then(n.t.bind(n,85824,19)),"~blog/default/blog-tags-proto-page-2-892-list.json",85824],"1a4e3797":[()=>Promise.all([n.e(40532),n.e(97920)]).then(n.bind(n,11895)),"@theme/SearchPage",11895],"1aa28b52":[()=>n.e(98450).then(n.bind(n,25702)),"@site/docs/commands/overview.mdx",25702],"1aebc10b":[()=>n.e(69959).then(n.bind(n,91981)),"@site/blog/2023-03-31_proto-v0.4.mdx",91981],"1b469a71":[()=>n.e(87451).then(n.t.bind(n,457,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-typedoc-api/default/packages-current.json",457],"1badf320":[()=>n.e(4068).then(n.bind(n,57500)),"@site/blog/2023-04-06_proto-v0.5.mdx?truncated=true",57500],"1be78505":[()=>Promise.all([n.e(40532),n.e(29514)]).then(n.bind(n,72214)),"@theme/DocPage",72214],"1cb65c7d":[()=>Promise.all([n.e(40532),n.e(30780),n.e(21947),n.e(23168)]).then(n.bind(n,79090)),"@site/src/pages/proto.tsx",79090],"1cbc9cf3":[()=>n.e(29219).then(n.t.bind(n,4127,19)),"~blog/default/blog-tags-http-5fb.json",4127],"1d14c2f4":[()=>n.e(93811).then(n.t.bind(n,34198,19)),"~blog/default/blog-tags-npm-f95.json",34198],"1df93b7f":[()=>Promise.all([n.e(21947),n.e(53237)]).then(n.bind(n,75278)),"@site/src/pages/index.tsx",75278],"1e070f27":[()=>n.e(2571).then(n.t.bind(n,91786,19)),"~blog/default/blog-tags-quality-be6-list.json",91786],"1e542d68":[()=>n.e(7278).then(n.t.bind(n,45313,19)),"~blog/default/blog-tags-log-760-list.json",45313],"1e76467f":[()=>n.e(76939).then(n.bind(n,951)),"@site/docs/proto/commands/list-global.mdx",951],"1e90ea6d":[()=>n.e(38428).then(n.t.bind(n,1394,19)),"~blog/default/blog-tags-vcs-ff1-list.json",1394],"202af6b6":[()=>n.e(2801).then(n.t.bind(n,89338,19)),"~blog/default/blog-tags-hash-686.json",89338],"2048b789":[()=>n.e(36861).then(n.bind(n,62031)),"@site/blog/2023-03-15_proto-v0.3.mdx?truncated=true",62031],"204dd830":[()=>Promise.all([n.e(40532),n.e(12391)]).then(n.bind(n,53293)),"@site/blog/2023-02-27_v0.25.mdx?truncated=true",53293],"2172420b":[()=>n.e(62441).then(n.t.bind(n,16728,19)),"~blog/default/blog-tags-generator-109-list.json",16728],"22e78681":[()=>n.e(74825).then(n.bind(n,46071)),"@site/blog/2023-01-16_v0.22.mdx",46071],"22eddac1":[()=>n.e(85950).then(n.bind(n,3697)),"@site/blog/2023-04-21_proto-v0.7.mdx",3697],"232c92ba":[()=>n.e(16974).then(n.t.bind(n,12725,19)),"~blog/default/blog-tags-python-667.json",12725],"23ef67df":[()=>n.e(84247).then(n.bind(n,97281)),"@site/blog/2023-09-18_proto-v0.18.mdx?truncated=true",97281],"24556f49":[()=>n.e(10744).then(n.bind(n,21721)),"@site/docs/concepts/file-pattern.mdx",21721],"245d4974":[()=>n.e(53733).then(n.bind(n,39016)),"@site/blog/2023-03-27_moon-v1.0.mdx",39016],"2497986c":[()=>n.e(48114).then(n.t.bind(n,80674,19)),"~blog/default/blog-tags-plugin-95c-list.json",80674],"24a07a83":[()=>n.e(24871).then(n.t.bind(n,7222,19)),"~docs/default/tag-docs-tags-generator-e43.json",7222],"24adbf31":[()=>n.e(93160).then(n.t.bind(n,57059,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-typedoc-api/default/options.json",57059],"250d5d50":[()=>n.e(68007).then(n.t.bind(n,69537,19)),"~blog/default/blog-tags-tier-6c7-list.json",69537],"2573a9a7":[()=>n.e(78195).then(n.t.bind(n,78526,19)),"~blog/default/blog-tags-registry-d31-list.json",78526],26419218:[()=>n.e(62865).then(n.t.bind(n,52770,19)),"~blog/default/blog-tags-platform-9d7-list.json",52770],"271a7b09":[()=>n.e(30808).then(n.t.bind(n,91428,19)),"~blog/default/blog-tags-wasm-a9b-list.json",91428],"2804bc6d":[()=>n.e(38670).then(n.bind(n,11430)),"@site/blog/2023-04-24_moon-v1.3.mdx?truncated=true",11430],"28508d4c":[()=>n.e(91816).then(n.bind(n,27833)),"@site/blog/2023-04-21_proto-v0.7.mdx?truncated=true",27833],"2994c7d6":[()=>Promise.all([n.e(40532),n.e(83088)]).then(n.bind(n,72183)),"@site/blog/2023-01-30_v0.23.mdx",72183],"2adc0ba4":[()=>n.e(70731).then(n.t.bind(n,71365,19)),"~blog/default/blog-tags-rust-0c9-list.json",71365],"2b3490d9":[()=>n.e(39200).then(n.t.bind(n,16019,19)),"~docs/default/tag-docs-tags-query-90d.json",16019],"2bd8a6cf":[()=>n.e(67143).then(n.t.bind(n,57514,19)),"~blog/default/blog-tags-vcs-ff1.json",57514],"2c114e85":[()=>n.e(88663).then(n.bind(n,30560)),"@site/docs/commands/project.mdx",30560],"2cd5cbb6":[()=>n.e(2074).then(n.bind(n,24674)),"@site/blog/2022-10-06_v0.16.mdx?truncated=true",24674],"2d15743f":[()=>n.e(37941).then(n.bind(n,31462)),"@site/docs/guides/offline-mode.mdx",31462],"2d92dfb9":[()=>n.e(57690).then(n.t.bind(n,99010,19)),"~blog/default/blog-tags-rust-0c9.json",99010],"2df21221":[()=>n.e(51909).then(n.t.bind(n,43765,19)),"~blog/default/blog-tags-runner-f5a-list.json",43765],"2dffafe2":[()=>Promise.all([n.e(40532),n.e(29631)]).then(n.bind(n,47295)),"@site/docs/guides/javascript/node-handbook.mdx",47295],"2e1ef406":[()=>n.e(11665).then(n.bind(n,65614)),"@site/docs/proto/commands/remove-plugin.mdx",65614],"2e4722bd":[()=>n.e(75847).then(n.bind(n,1480)),"@site/blog/2023-04-17_moon-v1.2.mdx",1480],"2e94733f":[()=>n.e(50167).then(n.t.bind(n,73955,19)),"~blog/default/blog-tags-bin-efd-list.json",73955],"2eaf3a2f":[()=>n.e(5758).then(n.bind(n,23426)),"@site/blog/2023-06-25_proto-v0.11.mdx",23426],"2ed8359a":[()=>n.e(42121).then(n.bind(n,38237)),"@site/docs/concepts/toolchain.mdx",38237],"2fafdb99":[()=>n.e(30464).then(n.bind(n,52226)),"@site/blog/2023-07-21_proto-v0.13.mdx",52226],"303db6c1":[()=>Promise.all([n.e(40532),n.e(30780),n.e(66065)]).then(n.bind(n,75453)),"@site/docs/guides/examples/packemon.mdx",75453],"318f6953":[()=>n.e(13774).then(n.bind(n,57645)),"@site/docs/commands/setup.mdx",57645],"31fff4a5":[()=>n.e(44817).then(n.t.bind(n,92052,19)),"~blog/default/blog-tags-action-340-list.json",92052],32632728:[()=>n.e(94672).then(n.t.bind(n,18507,19)),"~blog/default/blog-tags-globals-7ef.json",18507],"3353503a":[()=>n.e(30027).then(n.t.bind(n,63572,19)),"~blog/default/blog-tags-wasm-a9b.json",63572],"33d935e4":[()=>n.e(23523).then(n.t.bind(n,81471,19)),"~blog/default/blog-tags-roadmap-d2e-list.json",81471],"350ea002":[()=>n.e(77889).then(n.t.bind(n,40387,19)),"~docs/default/tag-docs-tags-codeowners-3c5.json",40387],"351d319b":[()=>n.e(95084).then(n.bind(n,36522)),"@site/docs/commands/action-graph.mdx",36522],"357f2143":[()=>n.e(95129).then(n.bind(n,50271)),"@site/docs/commands/sync/hooks.mdx",50271],36027025:[()=>n.e(28129).then(n.bind(n,98049)),"@site/docs/guides/debug-task.mdx",98049],"365a10b6":[()=>n.e(64067).then(n.t.bind(n,18476,19)),"~blog/default/blog-tags-cache-6ff-list.json",18476],"3691c6ec":[()=>n.e(60846).then(n.t.bind(n,42461,19)),"~blog/default/blog-tags-config-2d7-list.json",42461],"3720c009":[()=>Promise.all([n.e(40532),n.e(13751)]).then(n.bind(n,84889)),"@theme/DocTagsListPage",84889],"376f2f8c":[()=>n.e(28444).then(n.t.bind(n,81327,19)),"~blog/default/blog-tags-remote-cache-1d2.json",81327],"37e4cb73":[()=>n.e(94488).then(n.bind(n,96154)),"@site/blog/2023-09-29_proto-v0.19.mdx?truncated=true",96154],"39a2c297":[()=>n.e(27756).then(n.bind(n,53257)),"@site/blog/2023-07-07_proto-v0.12.mdx",53257],"39b245d7":[()=>n.e(21042).then(n.bind(n,7196)),"@site/docs/guides/vcs-hooks.mdx",7196],"3b568f5a":[()=>n.e(21756).then(n.t.bind(n,33759,19)),"~blog/default/blog-tags-pin-fa7-list.json",33759],"3c3b6fb9":[()=>n.e(86795).then(n.t.bind(n,20104,19)),"~blog/default/blog-tags-survey-f63-list.json",20104],"3d0b0327":[()=>n.e(44969).then(n.t.bind(n,89035,19)),"~blog/default/blog-tags-hasher-783.json",89035],"3d4b58f3":[()=>n.e(89094).then(n.t.bind(n,7579,19)),"~docs/default/tag-docs-tags-template-df7.json",7579],"3db5b877":[()=>n.e(10252).then(n.t.bind(n,19354,19)),"~blog/default/blog-tags-proto-page-3-5b6.json",19354],"3db947d3":[()=>n.e(47265).then(n.t.bind(n,2993,19)),"~blog/default/blog-tags-project-graph-b9c.json",2993],"3dc68565":[()=>n.e(7566).then(n.bind(n,2502)),"@site/docs/concepts/token.mdx",2502],"3df11149":[()=>n.e(69015).then(n.bind(n,35645)),"@site/docs/commands/migrate/from-turborepo.mdx",35645],"3e1aa1b6":[()=>n.e(26051).then(n.t.bind(n,46540,19)),"~blog/default/blog-tags-init-e2a-list.json",46540],"3e7d7789":[()=>Promise.all([n.e(40532),n.e(30780),n.e(85730),n.e(12700),n.e(97279),n.e(32392),n.e(22108)]).then(n.t.bind(n,32392,23)),"/home/runner/work/moon/moon/node_modules/docusaurus-plugin-typedoc-api/lib/components/ApiItem.js",32392],"3f2d0a0e":[()=>n.e(56336).then(n.bind(n,41510)),"@site/blog/2022-09-13_v0.14.mdx?truncated=true",41510],"3f5148d4":[()=>n.e(29754).then(n.bind(n,82718)),"@site/docs/concepts/task.mdx",82718],"3f885d22":[()=>n.e(51684).then(n.bind(n,24053)),"@site/blog/2023-03-15_proto-v0.3.mdx",24053],"3fc19409":[()=>n.e(20735).then(n.t.bind(n,54867,19)),"~blog/default/blog-tags-schema-251-list.json",54867],"405d593f":[()=>n.e(81812).then(n.bind(n,77565)),"@site/docs/cheat-sheet.mdx",77565],"409da100":[()=>n.e(1).then(n.t.bind(n,37656,19)),"~blog/default/blog-tags-outdated-17a-list.json",37656],"40c69ef1":[()=>n.e(43869).then(n.t.bind(n,97754,19)),"~blog/default/blog-tags-moonbase-527.json",97754],"413318e8":[()=>n.e(83508).then(n.bind(n,14821)),"@site/docs/proto/commands/clean.mdx",14821],"4178efb8":[()=>Promise.all([n.e(40532),n.e(30780),n.e(10537)]).then(n.bind(n,11690)),"@site/docs/proto/tools.mdx",11690],"423a0e62":[()=>n.e(36167).then(n.t.bind(n,94213,19)),"~blog/default/blog-tags-tokens-6f1.json",94213],"42611ca7":[()=>n.e(16144).then(n.bind(n,45964)),"@site/blog/2023-06-12_moon-v1.8.mdx?truncated=true",45964],"427e2c3d":[()=>n.e(16836).then(n.bind(n,13105)),"@site/blog/2023-07-31_moon-v1.11.mdx?truncated=true",13105],"429b21e2":[()=>n.e(40459).then(n.bind(n,69463)),"@site/blog/2023-10-30_moon-v1.16.mdx",69463],"43bdf210":[()=>n.e(65379).then(n.bind(n,85310)),"@site/blog/2023-01-04_2023-roadmap.mdx?truncated=true",85310],"43dc46d9":[()=>n.e(96370).then(n.t.bind(n,4799,19)),"~blog/default/blog-tags-qol-753.json",4799],"44183a86":[()=>n.e(28149).then(n.t.bind(n,69862,19)),"~blog/default/blog-tags-ci-5d6-list.json",69862],"44ac4dbb":[()=>n.e(77142).then(n.t.bind(n,90399,19)),"~blog/default/blog-page-6-772.json",90399],"450b14c3":[()=>n.e(94979).then(n.t.bind(n,22109,19)),"~blog/default/blog-tags-local-757-list.json",22109],"459b1c5c":[()=>n.e(21396).then(n.t.bind(n,55145,19)),"~blog/default/blog-tags-global-167.json",55145],46561613:[()=>n.e(22636).then(n.t.bind(n,64689,19)),"~blog/default/blog-tags-runner-f5a.json",64689],"4665933c":[()=>n.e(95924).then(n.bind(n,61664)),"@site/blog/2022-11-14_v0.19.mdx",61664],"479321cf":[()=>n.e(12454).then(n.t.bind(n,9807,19)),"~blog/default/blog-tags-git-b15-list.json",9807],"47b3b041":[()=>n.e(40824).then(n.t.bind(n,55691,19)),"~blog/default/blog-tags-shim-887-list.json",55691],"488a99ce":[()=>n.e(82258).then(n.bind(n,74889)),"@site/docs/guides/codegen.mdx",74889],"48b0f434":[()=>n.e(15867).then(n.t.bind(n,81755,19)),"~blog/default/blog-tags-github-f68-list.json",81755],"4931a616":[()=>Promise.all([n.e(40532),n.e(48529)]).then(n.bind(n,88497)),"@site/blog/2023-02-13_v0.24.mdx",88497],"49af4b98":[()=>n.e(67217).then(n.t.bind(n,44468,19)),"~blog/default/blog-tags-language-ef0.json",44468],"49b772d3":[()=>Promise.all([n.e(40532),n.e(66458)]).then(n.bind(n,55835)),"@site/docs/guides/rust/handbook.mdx",55835],"4a1ab9c8":[()=>n.e(77008).then(n.t.bind(n,59202,19)),"~docs/default/category-docs-docs-category-commands-733.json",59202],"4a3d03f6":[()=>n.e(83884).then(n.t.bind(n,65585,19)),"~docs/default/tag-docs-tags-owners-6d9.json",65585],"4aa262b7":[()=>n.e(96897).then(n.bind(n,93365)),"@site/blog/2023-05-30_moon-v1.7.mdx",93365],"4ab2bb95":[()=>n.e(54488).then(n.t.bind(n,27592,19)),"~blog/default/blog-tags-local-757.json",27592],"4b8535eb":[()=>n.e(20612).then(n.t.bind(n,1360,19)),"~blog/default/blog-tags-tier-6c7.json",1360],"4bd5fd33":[()=>n.e(56560).then(n.t.bind(n,20404,19)),"~blog/default/blog-tags-automation-1d1.json",20404],"4bddfbdb":[()=>n.e(15437).then(n.t.bind(n,26325,19)),"~blog/default/blog-tags-vscode-a6c.json",26325],"4c2d8fdb":[()=>n.e(81148).then(n.t.bind(n,81467,19)),"~blog/default/blog-tags-npm-f95-list.json",81467],"4c8cef38":[()=>n.e(11126).then(n.bind(n,11126)),"@site/blog/2022-09-01_v0.13.mdx?truncated=true",11126],"4d66ab66":[()=>n.e(92293).then(n.bind(n,88612)),"@site/docs/proto/commands/install-global.mdx",88612],"4d69ebec":[()=>n.e(46480).then(n.bind(n,41723)),"@site/blog/2023-10-09_moon-v1.15.mdx?truncated=true",41723],"4ddbfcdc":[()=>n.e(96758).then(n.bind(n,17078)),"@site/blog/2023-09-04_proto-v0.16.mdx",17078],"4e30d381":[()=>n.e(93848).then(n.t.bind(n,48202,19)),"~blog/default/blog-tags-musl-bdd-list.json",48202],"4e9707d9":[()=>n.e(8159).then(n.t.bind(n,24556,19)),"~docs/default/category-docs-guides-category-nodejs-examples-09d.json",24556],"4e986fc6":[()=>Promise.all([n.e(40532),n.e(48233)]).then(n.bind(n,92969)),"@site/blog/2023-03-13_v0.26.mdx?truncated=true",92969],"4ec8a4a9":[()=>n.e(50818).then(n.bind(n,44501)),"@site/docs/config/project.mdx",44501],"4f0c5301":[()=>n.e(36361).then(n.t.bind(n,32535,19)),"~blog/default/blog-tags-code-452.json",32535],"4fa82ff8":[()=>Promise.all([n.e(59262),n.e(29769)]).then(n.bind(n,23706)),"@site/docs/how-it-works/languages.mdx",23706],"4fd1aaa1":[()=>n.e(56842).then(n.t.bind(n,29340,19)),"~blog/default/blog-tags-config-2d7.json",29340],"5076d7f9":[()=>n.e(50139).then(n.t.bind(n,79038,19)),"~blog/default/blog-tags-bun-339.json",79038],"50bf3dcb":[()=>n.e(41314).then(n.t.bind(n,73520,19)),"~blog/default/blog-tags-manager-bd9-list.json",73520],"51985ffa":[()=>Promise.all([n.e(40532),n.e(12700),n.e(76353)]).then(n.t.bind(n,51739,23)),"/home/runner/work/moon/moon/node_modules/docusaurus-plugin-typedoc-api/lib/components/ApiIndex.js",51739],"51ada3e3":[()=>n.e(51294).then(n.bind(n,80144)),"@site/blog/2023-07-21_proto-v0.13.mdx?truncated=true",80144],"53df8e83":[()=>n.e(33439).then(n.bind(n,67887)),"@site/blog/2022-11-21_typescript-monorepo.mdx?truncated=true",67887],"54024cf2":[()=>n.e(22293).then(n.t.bind(n,54712,19)),"~blog/default/blog-tags-node-4f7-list.json",54712],"5419aa43":[()=>n.e(18914).then(n.t.bind(n,12349,19)),"~blog/default/blog-tags-migrate-aaf-list.json",12349],"54350ada":[()=>n.e(93363).then(n.bind(n,62265)),"@site/blog/2023-08-23_proto-v0.15.mdx",62265],"54eec65a":[()=>n.e(50984).then(n.t.bind(n,73757,19)),"~blog/default/blog-tags-project-34b-list.json",73757],"5534fb85":[()=>n.e(43238).then(n.t.bind(n,26577,19)),"~blog/default/blog-tags-log-760.json",26577],"5552634a":[()=>n.e(29719).then(n.bind(n,70978)),"@site/docs/proto/commands/uninstall-global.mdx",70978],"55960ee5":[()=>n.e(74121).then(n.t.bind(n,88070,19)),"~docs/default/tags-list-current-prop-15a.json",88070],"5613e7cf":[()=>n.e(64492).then(n.bind(n,41560)),"@site/blog/2023-06-26_moon-v1.9.mdx?truncated=true",41560],"56a06382":[()=>Promise.all([n.e(40532),n.e(30780),n.e(15091)]).then(n.bind(n,55210)),"@site/docs/guides/examples/next.mdx",55210],"5794c75f":[()=>n.e(63210).then(n.t.bind(n,23756,19)),"~blog/default/blog-tags-dep-graph-b83.json",23756],"57bd32c7":[()=>Promise.all([n.e(40532),n.e(15911)]).then(n.bind(n,96570)),"@site/docs/create-project.mdx",96570],"59abedb6":[()=>n.e(80632).then(n.t.bind(n,48381,19)),"~blog/default/blog-tags-index-96c-list.json",48381],"5a3a719f":[()=>n.e(43109).then(n.t.bind(n,99402,19)),"~blog/default/blog-tags-canary-b38.json",99402],"5b4d43ff":[()=>n.e(63058).then(n.t.bind(n,92095,19)),"~blog/default/blog-tags-source-541.json",92095],"5c653e8d":[()=>n.e(56256).then(n.bind(n,80251)),"@site/blog/2023-01-04_2023-roadmap.mdx",80251],"5cde4d5c":[()=>n.e(18496).then(n.t.bind(n,31056,19)),"~blog/default/blog-tags-env-vars-f85-list.json",31056],"5d48ec89":[()=>n.e(41303).then(n.bind(n,3852)),"@site/blog/2022-12-19_v0.21.mdx",3852],"5e371f0f":[()=>n.e(42945).then(n.bind(n,40657)),"@site/docs/proto/commands/outdated.mdx",40657],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,36809)),"@generated/docusaurus.config",36809],"5f3507b2":[()=>Promise.all([n.e(40532),n.e(30780),n.e(73986)]).then(n.bind(n,64701)),"@site/docs/guides/examples/solid.mdx",64701],"600433a8":[()=>n.e(37930).then(n.t.bind(n,10952,19)),"~docs/default/category-docs-docs-category-migrate-35b.json",10952],"60262e21":[()=>n.e(30727).then(n.t.bind(n,99027,19)),"~blog/default/blog-tags-git-b15.json",99027],"60fa46e1":[()=>n.e(64043).then(n.bind(n,23574)),"@site/blog/2023-04-03_moon-v1.1.mdx",23574],61486960:[()=>n.e(18869).then(n.bind(n,78708)),"@site/blog/2023-02-08_moonbase.mdx",78708],"6196de5a":[()=>n.e(58696).then(n.t.bind(n,87428,19)),"~blog/default/blog-tags-migrate-aaf.json",87428],"620e72fa":[()=>n.e(80368).then(n.t.bind(n,16067,19)),"~blog/default/blog-tags-moonbase-527-list.json",16067],"626ef9ce":[()=>n.e(52080).then(n.bind(n,42729)),"@site/docs/commands/check.mdx",42729],"63243ad1":[()=>n.e(27594).then(n.bind(n,79835)),"/home/runner/work/moon/moon/packages/report/README.md",79835],"63aeb80b":[()=>n.e(27418).then(n.t.bind(n,91015,19)),"~blog/default/blog-tags-language-ef0-list.json",91015],66222453:[()=>n.e(46500).then(n.t.bind(n,69376,19)),"~blog/default/blog-tags-canary-b38-list.json",69376],"66926af2":[()=>n.e(52287).then(n.bind(n,71798)),"@site/blog/2023-04-13_proto-v0.6.mdx?truncated=true",71798],"66a08410":[()=>n.e(33062).then(n.t.bind(n,59929,19)),"~docs/default/tag-docs-tags-lang-e70.json",59929],"676566fe":[()=>n.e(68876).then(n.t.bind(n,7133,19)),"~blog/default/blog-tags-hooks-29a-list.json",7133],"679bd524":[()=>n.e(54252).then(n.t.bind(n,60604,19)),"~blog/default/blog-tags-qol-753-list.json",60604],"686e1776":[()=>n.e(323).then(n.bind(n,63095)),"@site/docs/commands/clean.mdx",63095],"6875c492":[()=>Promise.all([n.e(40532),n.e(30780),n.e(85730),n.e(71947),n.e(48610)]).then(n.bind(n,41071)),"@theme/BlogTagsPostsPage",41071],"688193a4":[()=>n.e(69201).then(n.t.bind(n,67575,19)),"~blog/default/blog-tags-registry-d31.json",67575],"68d17c71":[()=>n.e(25425).then(n.bind(n,67107)),"@site/blog/2023-10-09_moon-v1.15.mdx",67107],"69bc0e2c":[()=>n.e(44752).then(n.bind(n,50455)),"@site/docs/proto/commands/add-plugin.mdx",50455],"69c95af3":[()=>n.e(77363).then(n.bind(n,88819)),"@site/docs/commands/completions.mdx",88819],"69e0bfe1":[()=>n.e(85029).then(n.t.bind(n,30076,19)),"~blog/default/blog-tags-proto-page-3-5b6-list.json",30076],"69ea3d78":[()=>n.e(36095).then(n.t.bind(n,73762,19)),"~blog/default/blog-tags-code-452-list.json",73762],"6b50e60a":[()=>n.e(94268).then(n.bind(n,37404)),"@site/docs/terminology.md",37404],"6be7ee83":[()=>n.e(9197).then(n.bind(n,41150)),"@site/blog/2023-02-08_moonbase.mdx?truncated=true",41150],"6c24c6c6":[()=>Promise.all([n.e(40532),n.e(68026)]).then(n.bind(n,8e3)),"@site/docs/guides/javascript/typescript-project-refs.mdx",8e3],"6dd55018":[()=>n.e(85390).then(n.bind(n,37116)),"@site/docs/guides/javascript/typescript-eslint.mdx",37116],"6e15e01b":[()=>n.e(40216).then(n.t.bind(n,39073,19)),"~blog/default/blog-tags-env-vars-f85.json",39073],"6ea8a316":[()=>n.e(85723).then(n.t.bind(n,18537,19)),"~blog/default/blog-tags-offline-83f-list.json",18537],"6eae5b23":[()=>n.e(82687).then(n.bind(n,48387)),"@site/docs/proto/commands/completions.mdx",48387],"6fb24ff7":[()=>Promise.all([n.e(59262),n.e(1358)]).then(n.bind(n,87953)),"@site/docs/how-it-works/action-graph.mdx",87953],"6fe6957f":[()=>n.e(77465).then(n.t.bind(n,88057,19)),"~blog/default/blog-tags-editors-8f6-list.json",88057],"70c84758":[()=>n.e(55932).then(n.t.bind(n,27571,19)),"~blog/default/blog-tags-linux-a80-list.json",27571],"711949de":[()=>n.e(7012).then(n.bind(n,61228)),"@site/blog/2022-09-01_v0.13.mdx",61228],"71dfd0a8":[()=>n.e(23615).then(n.bind(n,19634)),"@site/blog/2023-07-31_moon-v1.11.mdx",19634],"722146fe":[()=>n.e(10722).then(n.t.bind(n,97160,19)),"~docs/default/tag-docs-tags-solid-a3b.json",97160],"750b9005":[()=>n.e(62814).then(n.t.bind(n,48597,19)),"~blog/default/blog-tags-quality-be6.json",48597],"752283db":[()=>n.e(46947).then(n.t.bind(n,90363,19)),"~blog/default/blog-tags-plugin-95c.json",90363],"752c6bfa":[()=>n.e(20384).then(n.t.bind(n,20891,19)),"~blog/default/blog-tags-plugins-0a9.json",20891],75408299:[()=>n.e(56630).then(n.t.bind(n,31796,19)),"~blog/default/blog-tags-run-471.json",31796],"7599f4f1":[()=>n.e(65217).then(n.t.bind(n,67049,19)),"~blog/default/blog-tags-proto-962-list.json",67049],"759c01e9":[()=>Promise.all([n.e(40532),n.e(30780),n.e(38488)]).then(n.bind(n,74273)),"@site/docs/guides/examples/react.mdx",74273],"766b2171":[()=>n.e(23358).then(n.bind(n,4722)),"@site/docs/guides/open-source.mdx",4722],"769e9ed2":[()=>n.e(13869).then(n.t.bind(n,91187,19)),"~blog/default/blog-tags-notifier-b98.json",91187],"771f38eb":[()=>n.e(71478).then(n.t.bind(n,59811,19)),"~blog/default/blog-tags-ci-5d6.json",59811],"77530bb9":[()=>n.e(46070).then(n.bind(n,11666)),"@site/blog/2023-03-09_proto.mdx?truncated=true",11666],"77b7a366":[()=>n.e(25624).then(n.bind(n,2335)),"@site/blog/2023-04-28_proto-v0.8.mdx?truncated=true",2335],"78060cbc":[()=>n.e(6652).then(n.t.bind(n,19724,19)),"~blog/default/blog-tags-github-f68.json",19724],"788e7a3c":[()=>n.e(60354).then(n.t.bind(n,65592,19)),"~blog/default/blog-tags-toml-a88.json",65592],"78dd992d":[()=>n.e(77869).then(n.t.bind(n,3357,19)),"~blog/default/blog-tags-tags-87e.json",3357],"79765aba":[()=>n.e(37440).then(n.bind(n,4758)),"@site/docs/proto/commands/pin.mdx",4758],"7aad579e":[()=>n.e(6517).then(n.t.bind(n,58259,19)),"~blog/default/blog-tags-tasks-49e-list.json",58259],"7b667a7f":[()=>n.e(35649).then(n.t.bind(n,85274,19)),"~docs/default/tag-docs-tags-git-514.json",85274],"7c4e6415":[()=>n.e(21393).then(n.t.bind(n,94940,19)),"~blog/default/blog-tags-editors-8f6.json",94940],"7c54c2f8":[()=>n.e(57754).then(n.t.bind(n,13164,19)),"~blog/default/blog-tags-bun-339-list.json",13164],"7c9b29bb":[()=>n.e(42334).then(n.bind(n,99484)),"@site/blog/2023-06-26_moon-v1.9.mdx",99484],"7d19a980":[()=>n.e(83549).then(n.t.bind(n,91482,19)),"~blog/default/blog-tags-hasher-783-list.json",91482],"7d4c8b40":[()=>n.e(8100).then(n.t.bind(n,13290,19)),"~blog/default/blog-tags-bin-efd.json",13290],"7d55a0f0":[()=>Promise.all([n.e(40532),n.e(46920)]).then(n.bind(n,55885)),"@site/blog/2023-02-27_v0.25.mdx",55885],"7d9726a8":[()=>n.e(7429).then(n.t.bind(n,89494,19)),"~blog/default/blog-page-4-30b.json",89494],"7dbcf43b":[()=>n.e(76569).then(n.bind(n,76201)),"@site/blog/2023-10-30_moon-v1.16.mdx?truncated=true",76201],"7e9fb3d2":[()=>n.e(79702).then(n.t.bind(n,97517,19)),"~blog/default/blog-tags-errors-d0b.json",97517],"7ec3d878":[()=>n.e(72178).then(n.t.bind(n,15655,19)),"~blog/default/blog-tags-version-acf-list.json",15655],"7f3e2518":[()=>n.e(66647).then(n.t.bind(n,41640,19)),"~blog/default/blog-tags-debug-53a.json",41640],"7f6c6f55":[()=>n.e(83561).then(n.t.bind(n,8801,19)),"~blog/default/blog-tags-toolchain-230-list.json",8801],80514956:[()=>n.e(50609).then(n.t.bind(n,29708,19)),"~blog/default/blog-tags-clean-516.json",29708],"814f3328":[()=>n.e(52535).then(n.t.bind(n,45641,19)),"~blog/default/blog-post-list-prop-default.json",45641],"819f977d":[()=>Promise.all([n.e(40532),n.e(31622)]).then(n.bind(n,84102)),"@site/docs/run-task.mdx",84102],"81d944d1":[()=>n.e(74875).then(n.bind(n,79967)),"@site/blog/2023-04-03_moon-v1.1.mdx?truncated=true",79967],"83943ce1":[()=>Promise.all([n.e(40532),n.e(19821)]).then(n.t.bind(n,26723,23)),"/home/runner/work/moon/moon/node_modules/docusaurus-plugin-typedoc-api/lib/components/ApiPage.js",26723],"8526ffa3":[()=>n.e(85620).then(n.t.bind(n,52991,19)),"~blog/default/blog-tags-target-7a0-list.json",52991],"8593ff01":[()=>n.e(37007).then(n.t.bind(n,89064,19)),"~blog/default/blog-tags-docker-f07.json",89064],"860d7f34":[()=>n.e(28495).then(n.t.bind(n,80806,19)),"~blog/default/blog-tags-shim-887.json",80806],"861abce9":[()=>n.e(15995).then(n.bind(n,43633)),"@site/docs/commands/sync/projects.mdx",43633],"86257f88":[()=>Promise.all([n.e(40532),n.e(30780),n.e(85730),n.e(12700),n.e(97279),n.e(1795)]).then(n.bind(n,65530)),"@site/docs/comparison.mdx",65530],"87d62477":[()=>n.e(9551).then(n.bind(n,69051)),"@site/docs/guides/webhooks.mdx",69051],"87f861ef":[()=>n.e(43408).then(n.t.bind(n,97390,19)),"~blog/default/blog-tags-dependency-e04.json",97390],"8876813e":[()=>Promise.all([n.e(59262),n.e(2615)]).then(n.bind(n,17242)),"@site/docs/how-it-works/project-graph.mdx",17242],"88aaac27":[()=>Promise.all([n.e(40532),n.e(4138)]).then(n.bind(n,31509)),"@site/docs/create-task.mdx",31509],"89a53707":[()=>Promise.all([n.e(40532),n.e(23157)]).then(n.bind(n,55946)),"@site/docs/guides/docker.mdx",55946],"89c16be8":[()=>n.e(47969).then(n.bind(n,82134)),"@site/docs/concepts/cache.mdx",82134],"8b38bcbd":[()=>n.e(68900).then(n.t.bind(n,3025,19)),"~blog/default/blog-tags-alias-144.json",3025],"8c079f7d":[()=>n.e(85880).then(n.bind(n,57920)),"@site/docs/commands/init.mdx",57920],"8c241076":[()=>n.e(91324).then(n.t.bind(n,92687,19)),"~blog/default/blog-tags-graph-658.json",92687],"8c4a23a7":[()=>n.e(20739).then(n.bind(n,79217)),"@site/docs/commands/docker/setup.mdx",79217],"8d06f620":[()=>n.e(8678).then(n.t.bind(n,62278,19)),"~blog/default/blog-tags-rfc-616.json",62278],"8d701eb4":[()=>n.e(26622).then(n.t.bind(n,13762,19)),"~blog/default/blog-tags-hooks-29a.json",13762],"8de38bef":[()=>Promise.all([n.e(40532),n.e(64197)]).then(n.bind(n,74685)),"@site/docs/config/toolchain.mdx",74685],"8e65fbae":[()=>n.e(51578).then(n.t.bind(n,37701,19)),"~docs/default/tag-docs-tags-scaffold-e17.json",37701],"8e9e3e30":[()=>n.e(74675).then(n.bind(n,96433)),"@site/blog/2023-09-04_proto-v0.16.mdx?truncated=true",96433],"8eb4e46b":[()=>n.e(10001).then(n.t.bind(n,82638,19)),"~blog/default/blog-page-2-677.json",82638],"8f6f7bb5":[()=>n.e(19950).then(n.bind(n,68523)),"@site/docs/guides/profile.mdx",68523],"907bfa82":[()=>n.e(37633).then(n.t.bind(n,98818,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-typedoc-api/default/plugin-route-context-module-100.json",98818],"90b14878":[()=>n.e(8114).then(n.t.bind(n,24833,19)),"~docs/default/category-docs-docs-category-config-files-a6b.json",24833],"90f88783":[()=>Promise.all([n.e(40532),n.e(30780),n.e(13481)]).then(n.bind(n,9123)),"@site/docs/guides/examples/prettier.mdx",9123],"90fdb9b5":[()=>n.e(96321).then(n.t.bind(n,27488,19)),"~blog/default/blog-tags-offline-83f.json",27488],"92999a1c":[()=>n.e(18442).then(n.t.bind(n,15310,19)),"~blog/default/blog-page-3-fd4.json",15310],"92e5465c":[()=>n.e(86633).then(n.t.bind(n,73906,19)),"~blog/default/blog-tags-manager-bd9.json",73906],"935f2afb":[()=>n.e(80053).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"937d7adc":[()=>n.e(33071).then(n.bind(n,14097)),"@site/blog/2022-11-21_typescript-monorepo.mdx",14097],"93bce8ec":[()=>n.e(64859).then(n.t.bind(n,34284,19)),"~blog/default/blog-tags-generator-109.json",34284],"9529487c":[()=>n.e(35537).then(n.t.bind(n,40543,19)),"~blog/default/blog-tags-tags-87e-list.json",40543],"957809ee":[()=>n.e(12785).then(n.bind(n,57828)),"@site/blog/2023-09-05_moon-v1.13.mdx?truncated=true",57828],"976dc663":[()=>n.e(51109).then(n.t.bind(n,70886,19)),"~blog/default/blog-tags-life-ab7.json",70886],"97878c65":[()=>n.e(10948).then(n.bind(n,25132)),"@site/blog/2023-03-09_proto.mdx",25132],"98738a6c":[()=>n.e(94734).then(n.bind(n,32369)),"@site/blog/2023-09-29_proto-v0.19.mdx",32369],"98ae4a66":[()=>n.e(67619).then(n.bind(n,67013)),"@site/blog/2023-08-11_proto-v0.14.mdx",67013],"99b94e0d":[()=>n.e(89531).then(n.t.bind(n,55513,19)),"~blog/default/blog-tags-ignore-60c-list.json",55513],"9a062e52":[()=>Promise.all([n.e(40532),n.e(6855)]).then(n.bind(n,86101)),"@site/blog/2023-03-13_v0.26.mdx",86101],"9c090340":[()=>n.e(87538).then(n.t.bind(n,61086,19)),"~blog/default/blog-tags-init-e2a.json",61086],"9d3c1a44":[()=>n.e(15428).then(n.t.bind(n,77957,19)),"~blog/default/blog-tags-index-96c.json",77957],"9e4087bc":[()=>n.e(53608).then(n.bind(n,7507)),"@theme/BlogArchivePage",7507],"9e4ae2cc":[()=>n.e(75706).then(n.t.bind(n,74525,19)),"~blog/default/blog-tags-run-471-list.json",74525],"9e528cee":[()=>n.e(6633).then(n.bind(n,92510)),"@site/docs/proto/wasm-plugin.mdx",92510],"9edb948e":[()=>Promise.all([n.e(40532),n.e(44436)]).then(n.bind(n,31901)),"@site/docs/setup-toolchain.mdx",31901],"9f025583":[()=>n.e(44343).then(n.bind(n,35558)),"@site/docs/proto/commands/alias.mdx",35558],"9f838734":[()=>Promise.all([n.e(40532),n.e(93231)]).then(n.bind(n,48764)),"@site/docs/guides/codeowners.mdx",48764],"9ff86157":[()=>n.e(38830).then(n.bind(n,24158)),"/home/runner/work/moon/moon/packages/types/README.md",24158],a0d8b188:[()=>n.e(25547).then(n.bind(n,96927)),"@site/docs/config/template.mdx",96927],a18798d1:[()=>n.e(27460).then(n.bind(n,92912)),"@site/docs/proto/commands/unalias.mdx",92912],a20401e4:[()=>n.e(70969).then(n.bind(n,96681)),"@site/docs/proto/commands/install.mdx",96681],a219b733:[()=>n.e(97749).then(n.bind(n,11558)),"@site/docs/commands/docker/scaffold.mdx",11558],a26a8dd3:[()=>n.e(77838).then(n.bind(n,61643)),"@site/docs/commands/docker/prune.mdx",61643],a33962b9:[()=>n.e(82763).then(n.bind(n,67714)),"@site/docs/guides/sharing-config.mdx",67714],a372a63b:[()=>n.e(4590).then(n.t.bind(n,61127,19)),"~blog/default/blog-tags-query-8a9.json",61127],a452709a:[()=>n.e(46526).then(n.bind(n,19107)),"@site/docs/proto/commands/use.mdx",19107],a581e456:[()=>Promise.all([n.e(40532),n.e(30780),n.e(92778)]).then(n.bind(n,4496)),"@site/docs/guides/examples/eslint.mdx",4496],a5a57258:[()=>n.e(82192).then(n.bind(n,43843)),"@site/blog/2023-07-10_moon-v1.10.mdx",43843],a641c963:[()=>n.e(73931).then(n.bind(n,322)),"@site/docs/proto/detection.mdx",322],a65441a5:[()=>n.e(2033).then(n.bind(n,48794)),"@site/docs/commands/bin.mdx",48794],a6746ab5:[()=>n.e(51705).then(n.bind(n,8618)),"@site/blog/2023-04-06_proto-v0.5.mdx",8618],a6aa9e1f:[()=>Promise.all([n.e(40532),n.e(30780),n.e(85730),n.e(71947),n.e(93089)]).then(n.bind(n,63462)),"@theme/BlogListPage",63462],a6d9fcee:[()=>n.e(29958).then(n.bind(n,91038)),"@site/blog/2022-11-14_v0.19.mdx?truncated=true",91038],a701d349:[()=>n.e(33068).then(n.bind(n,47049)),"@site/docs/proto/commands/list-remote.mdx",47049],a7023ddc:[()=>n.e(11713).then(n.t.bind(n,53457,19)),"~blog/default/blog-tags-tags-4c2.json",53457],a86b7c98:[()=>n.e(30827).then(n.t.bind(n,17091,19)),"~blog/default/blog-tags-schema-251.json",17091],a88c4343:[()=>n.e(68282).then(n.bind(n,70390)),"@site/docs/commands/query/projects.mdx",70390],a91ae4c2:[()=>n.e(68005).then(n.t.bind(n,10877,19)),"~blog/default/blog-tags-target-7a0.json",10877],a9e1900f:[()=>n.e(26009).then(n.bind(n,60930)),"@site/docs/proto/commands/plugins.mdx",60930],aa431e4a:[()=>n.e(23512).then(n.bind(n,12690)),"@site/docs/guides/examples/nuxt.mdx",12690],aacc3e35:[()=>Promise.all([n.e(40532),n.e(92702)]).then(n.bind(n,42479)),"@site/blog/2023-02-13_v0.24.mdx?truncated=true",42479],ac1be023:[()=>n.e(83075).then(n.t.bind(n,51491,19)),"~blog/default/blog-tags-hydration-583-list.json",51491],ad536080:[()=>n.e(65077).then(n.bind(n,16621)),"@site/docs/proto/index.mdx",16621],affd832d:[()=>n.e(29453).then(n.t.bind(n,72067,19)),"~blog/default/blog-tags-ownership-1a2-list.json",72067],b03b3eac:[()=>n.e(35334).then(n.bind(n,86963)),"@site/blog/2022-10-06_v0.16.mdx",86963],b072568e:[()=>Promise.all([n.e(40532),n.e(32433)]).then(n.bind(n,3688)),"@site/blog/2022-10-21_v0.17.mdx?truncated=true",3688],b0cf9b20:[()=>n.e(60499).then(n.t.bind(n,57812,19)),"~blog/default/blog-tags-dep-graph-b83-list.json",57812],b0e766b4:[()=>Promise.all([n.e(40532),n.e(12949)]).then(n.bind(n,60992)),"@site/blog/2022-09-26_v0.15.mdx?truncated=true",60992],b104f86f:[()=>n.e(84536).then(n.bind(n,20626)),"@site/docs/commands/teardown.mdx",20626],b1144183:[()=>n.e(47822).then(n.t.bind(n,42234,19)),"~blog/default/blog-tags-tag-d3f.json",42234],b15686f4:[()=>n.e(64147).then(n.t.bind(n,19687,19)),"~docs/default/tag-docs-tags-hooks-0eb.json",19687],b184781f:[()=>n.e(26911).then(n.bind(n,16858)),"@site/blog/2022-12-19_v0.21.mdx?truncated=true",16858],b1c60aef:[()=>n.e(58074).then(n.t.bind(n,81077,19)),"~blog/default/blog-tags-errors-d0b-list.json",81077],b2b675dd:[()=>n.e(90533).then(n.t.bind(n,28017,19)),"~blog/default/blog-c06.json",28017],b2d692e7:[()=>n.e(79716).then(n.t.bind(n,7085,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-theme-search-algolia/default/plugin-route-context-module-100.json",7085],b2f554cd:[()=>n.e(11477).then(n.t.bind(n,30010,19)),"~blog/default/blog-archive-80c.json",30010],b38a02d7:[()=>n.e(98685).then(n.t.bind(n,42683,19)),"~blog/default/blog-tags-railway-ade.json",42683],b49860f1:[()=>n.e(55649).then(n.bind(n,79353)),"@site/docs/proto/plugins.mdx",79353],b652e05c:[()=>n.e(95653).then(n.t.bind(n,31566,19)),"~blog/default/blog-tags-node-4f7.json",31566],b65c3624:[()=>Promise.all([n.e(40532),n.e(60730)]).then(n.bind(n,52746)),"@site/docs/migrate-to-moon.mdx",52746],b6e1085a:[()=>Promise.all([n.e(40532),n.e(89624)]).then(n.bind(n,1710)),"@site/blog/2022-09-26_v0.15.mdx",1710],b717531a:[()=>n.e(80115).then(n.bind(n,84501)),"@site/blog/2023-08-21_moon-v1.12.mdx",84501],b78f40a6:[()=>Promise.all([n.e(40532),n.e(76629)]).then(n.bind(n,11279)),"@site/docs/guides/ci.mdx",11279],b7a8f57a:[()=>n.e(47890).then(n.bind(n,49286)),"@site/blog/2023-09-18_proto-v0.18.mdx",49286],b80596f4:[()=>n.e(78463).then(n.bind(n,47076)),"@site/blog/2023-09-05_moon-v1.13.mdx",47076],b819cecb:[()=>n.e(8450).then(n.bind(n,82136)),"@site/blog/2022-10-17_vscode-extension.mdx",82136],b831fe65:[()=>n.e(9157).then(n.bind(n,17467)),"@site/docs/concepts/project.mdx",17467],b8f3d4c8:[()=>n.e(82444).then(n.bind(n,21953)),"@site/docs/editors/vscode.mdx",21953],b972506a:[()=>n.e(81187).then(n.t.bind(n,66037,19)),"~blog/default/blog-tags-monorepo-88d.json",66037],b9e9925e:[()=>n.e(90297).then(n.bind(n,62328)),"@site/docs/concepts/file-group.mdx",62328],bb624440:[()=>n.e(21364).then(n.bind(n,24588)),"@site/blog/2023-05-08_moon-v1.5.mdx?truncated=true",24588],bb86fac5:[()=>n.e(99067).then(n.t.bind(n,56543,19)),"~blog/default/blog-tags-http-5fb-list.json",56543],bc6c5049:[()=>n.e(25370).then(n.t.bind(n,5540,19)),"~blog/default/blog-tags-rfc-616-list.json",5540],bc74446d:[()=>n.e(33134).then(n.t.bind(n,90063,19)),"~blog/default/blog-tags-debug-53a-list.json",90063],bcbbf42e:[()=>n.e(52606).then(n.t.bind(n,26090,19)),"~blog/default/blog-tags-typescript-2e3.json",26090],bd6bded1:[()=>n.e(62687).then(n.t.bind(n,32443,19)),"~blog/default/blog-tags-inheritance-8f5.json",32443],be0fdac8:[()=>n.e(76331).then(n.t.bind(n,74962,19)),"~blog/default/blog-tags-logging-c85.json",74962],be1609b7:[()=>n.e(56448).then(n.t.bind(n,56277,19)),"~blog/default/blog-tags-toolchain-230.json",56277],be1aaa14:[()=>n.e(37133).then(n.bind(n,78817)),"@site/docs/commands/query/hash.mdx",78817],be324e15:[()=>n.e(9847).then(n.bind(n,73530)),"@site/docs/proto/commands/upgrade.mdx",73530],bec065e9:[()=>n.e(56819).then(n.t.bind(n,52695,19)),"~blog/default/blog-tags-action-340.json",52695],bf04367c:[()=>n.e(13089).then(n.bind(n,63261)),"@site/blog/2023-05-01_moon-v1.4.mdx",63261],bf5d9784:[()=>n.e(99827).then(n.t.bind(n,40475,19)),"~blog/default/blog-tags-life-ab7-list.json",40475],bf95ed3d:[()=>n.e(59639).then(n.t.bind(n,26718,19)),"~blog/default/blog-tags-toml-a88-list.json",26718],c095dcfa:[()=>n.e(8057).then(n.bind(n,89908)),"@site/blog/2023-03-31_proto-v0.4.mdx?truncated=true",89908],c1721191:[()=>n.e(54362).then(n.t.bind(n,45332,19)),"~blog/default/blog-tags-tool-798.json",45332],c19ad3d7:[()=>n.e(40805).then(n.t.bind(n,76656,19)),"~blog/default/blog-tags-proto-page-2-892.json",76656],c35cb5af:[()=>n.e(51452).then(n.bind(n,97529)),"@site/blog/2023-10-27_proto-v0.21.mdx",97529],c413f1b7:[()=>n.e(94384).then(n.bind(n,35971)),"@site/blog/2022-10-31_v0.18.mdx?truncated=true",35971],c4542d8c:[()=>n.e(61988).then(n.t.bind(n,25,19)),"~blog/default/blog-tags-shorthand-f31.json",25],c4f95133:[()=>n.e(98401).then(n.bind(n,32080)),"/home/runner/work/moon/moon/packages/runtime/README.md",32080],c532175a:[()=>n.e(68573).then(n.t.bind(n,70953,19)),"~blog/default/blog-tags-task-d4c.json",70953],c5980a65:[()=>n.e(41525).then(n.bind(n,85169)),"@site/docs/proto/commands/uninstall.mdx",85169],c5de23c8:[()=>n.e(77963).then(n.t.bind(n,10401,19)),"~blog/default/blog-tags-constraints-91e-list.json",10401],c5ed658f:[()=>n.e(23131).then(n.t.bind(n,56744,19)),"~docs/default/category-docs-docs-category-concepts-0f9.json",56744],c6200b76:[()=>n.e(33643).then(n.bind(n,77817)),"@site/blog/2023-04-17_moon-v1.2.mdx?truncated=true",77817],c67cfbac:[()=>n.e(16732).then(n.t.bind(n,85115,19)),"~docs/default/tag-docs-tags-solidjs-a25.json",85115],c6c73cac:[()=>n.e(93791).then(n.t.bind(n,40424,19)),"~blog/default/blog-tags-shorthand-f31-list.json",40424],c7d98fe2:[()=>n.e(51084).then(n.bind(n,60716)),"@site/docs/proto/faq.mdx",60716],c83c6fdf:[()=>n.e(44867).then(n.t.bind(n,3808,19)),"~blog/default/blog-tags-owners-249-list.json",3808],c8acf440:[()=>n.e(89126).then(n.bind(n,32508)),"@site/blog/2023-06-25_proto-v0.11.mdx?truncated=true",32508],caa6a735:[()=>n.e(75394).then(n.t.bind(n,70851,19)),"~blog/default/blog-tags-affected-846-list.json",70851],cae36b15:[()=>n.e(94312).then(n.bind(n,19680)),"@site/docs/proto/commands/run.mdx",19680],cc2086a7:[()=>n.e(5267).then(n.t.bind(n,14312,19)),"~blog/default/blog-tags-package-d5d.json",14312],ccc49370:[()=>Promise.all([n.e(40532),n.e(30780),n.e(85730),n.e(71947),n.e(46103)]).then(n.bind(n,83227)),"@theme/BlogPostPage",83227],cce51cf2:[()=>n.e(16447).then(n.t.bind(n,42932,19)),"~blog/default/blog-tags-go-099-list.json",42932],ccfb5782:[()=>n.e(63450).then(n.t.bind(n,90384,19)),"~blog/default/blog-tags-alias-144-list.json",90384],cd988af7:[()=>n.e(31737).then(n.bind(n,6040)),"@site/blog/2023-09-11_proto-v0.17.mdx?truncated=true",6040],cdad2d50:[()=>n.e(18509).then(n.bind(n,12030)),"@site/blog/2023-01-16_v0.22.mdx?truncated=true",12030],ce2c6db8:[()=>n.e(8248).then(n.bind(n,67067)),"@site/blog/2023-09-25_moon-v1.14.mdx?truncated=true",67067],cf510f60:[()=>n.e(1607).then(n.t.bind(n,45355,19)),"~blog/default/blog-tags-platform-9d7.json",45355],cfdf2b5f:[()=>n.e(5016).then(n.bind(n,29988)),"@site/blog/2023-10-20_proto-v0.20.mdx?truncated=true",29988],d1576682:[()=>n.e(6506).then(n.bind(n,92667)),"@site/docs/proto/commands/list.mdx",92667],d213043e:[()=>n.e(638).then(n.bind(n,32336)),"@site/blog/2022-11-29_v0.20.mdx?truncated=true",32336],d43cc2ec:[()=>n.e(43871).then(n.bind(n,13901)),"@site/blog/2023-08-11_proto-v0.14.mdx?truncated=true",13901],d4c755e6:[()=>n.e(87387).then(n.bind(n,72287)),"@site/docs/proto/commands/setup.mdx",72287],d5075c4a:[()=>n.e(98434).then(n.t.bind(n,1674,19)),"~blog/default/blog-tags-package-d5d-list.json",1674],d5875de2:[()=>n.e(58941).then(n.t.bind(n,72311,19)),"~blog/default/blog-tags-affected-846.json",72311],d7cb860d:[()=>Promise.all([n.e(21947),n.e(45048)]).then(n.bind(n,10052)),"@site/src/pages/moonbase.tsx",10052],d7cf5e1f:[()=>n.e(67005).then(n.bind(n,12403)),"@site/blog/2022-10-17_vscode-extension.mdx?truncated=true",12403],d84e8684:[()=>n.e(80146).then(n.t.bind(n,47751,19)),"~blog/default/blog-tags-hydration-583.json",47751],d8fdbe7a:[()=>n.e(43993).then(n.bind(n,82887)),"@site/docs/commands/query/touched-files.mdx",82887],d93dbc28:[()=>Promise.all([n.e(40532),n.e(30780),n.e(85679)]).then(n.bind(n,79597)),"@site/docs/guides/examples/nest.mdx",79597],d9c57d72:[()=>n.e(42277).then(n.bind(n,90725)),"@site/blog/2023-04-24_moon-v1.3.mdx",90725],dae127b6:[()=>n.e(20728).then(n.bind(n,21817)),"@site/blog/2023-10-20_proto-v0.20.mdx",21817],daf4eece:[()=>n.e(56971).then(n.t.bind(n,59254,19)),"~docs/default/tag-docs-tags-codegen-2d0.json",59254],db0cc9f1:[()=>n.e(64065).then(n.bind(n,31855)),"@site/docs/guides/remote-cache.mdx",31855],db676956:[()=>n.e(38086).then(n.bind(n,11118)),"@site/docs/concepts/query-lang.mdx",11118],dbbb982f:[()=>n.e(67622).then(n.t.bind(n,50194,19)),"~blog/default/blog-tags-docker-f07-list.json",50194],dd3540fa:[()=>n.e(59364).then(n.bind(n,38834)),"@site/blog/2023-03-27_moon-v1.0.mdx?truncated=true",38834],dd5ac54b:[()=>n.e(53184).then(n.t.bind(n,68011,19)),"~blog/default/blog-tags-task-d4c-list.json",68011],dd5bc5cd:[()=>n.e(54640).then(n.t.bind(n,93631,19)),"~blog/default/blog-tags-linux-a80.json",93631],dd99bf53:[()=>n.e(20019).then(n.t.bind(n,2020,19)),"~blog/default/blog-tags-notifier-b98-list.json",2020],ddec1041:[()=>n.e(22461).then(n.t.bind(n,46599,19)),"~blog/default/blog-tags-tool-798-list.json",46599],df203c0f:[()=>n.e(99924).then(n.bind(n,67051)),"@theme/DocTagDocListPage",67051],df212c12:[()=>n.e(36863).then(n.bind(n,65521)),"@site/docs/concepts/task-inheritance.mdx",65521],dffc4bd7:[()=>n.e(70866).then(n.t.bind(n,6310,19)),"~docs/default/category-docs-docs-category-docker-07b.json",6310],e13166f5:[()=>n.e(66172).then(n.bind(n,58571)),"@site/docs/concepts/workspace.mdx",58571],e16afba1:[()=>n.e(97889).then(n.bind(n,22525)),"@site/docs/commands/task.mdx",22525],e4c23816:[()=>n.e(89819).then(n.t.bind(n,91154,19)),"~blog/default/blog-tags-ignore-60c.json",91154],e570d6db:[()=>n.e(70951).then(n.bind(n,36593)),"@site/docs/commands/sync/codeowners.mdx",36593],e5f23965:[()=>n.e(66882).then(n.t.bind(n,84376,19)),"~blog/default/blog-tags-pipeline-37d-list.json",84376],e629dea5:[()=>n.e(9010).then(n.t.bind(n,13294,19)),"~blog/default/blog-tags-ownership-1a2.json",13294],e746f759:[()=>n.e(33984).then(n.bind(n,49711)),"@site/blog/2023-08-23_proto-v0.15.mdx?truncated=true",49711],e7d7123e:[()=>n.e(65899).then(n.bind(n,17965)),"@site/blog/2022-09-13_v0.14.mdx",17965],e8700426:[()=>n.e(19902).then(n.bind(n,28771)),"@site/blog/2023-04-13_proto-v0.6.mdx",28771],e898b7f3:[()=>Promise.all([n.e(40532),n.e(30780),n.e(87584)]).then(n.bind(n,81935)),"@site/docs/guides/examples/vite.mdx",81935],e8d2c25f:[()=>n.e(43171).then(n.t.bind(n,28766,19)),"~blog/default/blog-tags-proto-962.json",28766],e8f62c55:[()=>n.e(47789).then(n.t.bind(n,39311,19)),"~blog/default/blog-tags-inheritance-8f5-list.json",39311],ea313555:[()=>n.e(77937).then(n.bind(n,49511)),"@site/docs/faq.mdx",49511],eb1a9ca0:[()=>n.e(30841).then(n.t.bind(n,53295,19)),"~blog/default/blog-tags-clean-516-list.json",53295],eb514dbf:[()=>n.e(16039).then(n.bind(n,71276)),"@site/blog/2023-05-01_moon-v1.4.mdx?truncated=true",71276],ec4f6a24:[()=>n.e(32571).then(n.t.bind(n,79076,19)),"~blog/default/blog-tags-project-graph-b9c-list.json",79076],ec9f380e:[()=>n.e(24744).then(n.t.bind(n,83769,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",83769],ed26bce9:[()=>n.e(16835).then(n.t.bind(n,36757,19)),"~blog/default/blog-tags-monorepo-88d-list.json",36757],eda853ca:[()=>n.e(60314).then(n.bind(n,25799)),"@site/docs/commands/project-graph.mdx",25799],edd7d65c:[()=>n.e(73250).then(n.t.bind(n,64186,19)),"~blog/default/blog-tags-tag-d3f-list.json",64186],edfea66c:[()=>n.e(36394).then(n.bind(n,19106)),"@site/blog/2022-10-31_v0.18.mdx",19106],ef3509ef:[()=>n.e(6274).then(n.t.bind(n,3778,19)),"~blog/default/blog-tags-constraints-91e.json",3778],efef7eb9:[()=>n.e(56040).then(n.bind(n,15381)),"@site/blog/2023-09-25_moon-v1.14.mdx",15381],f01f44c3:[()=>n.e(75852).then(n.t.bind(n,41862,19)),"~blog/default/blog-tags-remote-cache-1d2-list.json",41862],f09f371a:[()=>n.e(69186).then(n.bind(n,81143)),"@site/blog/2023-05-23_proto-v0.9.mdx?truncated=true",81143],f18fbdcd:[()=>Promise.all([n.e(40532),n.e(15050)]).then(n.bind(n,18287)),"@site/docs/setup-workspace.mdx",18287],f1d6ac1e:[()=>n.e(56720).then(n.bind(n,16699)),"@site/blog/2023-04-28_proto-v0.8.mdx",16699],f3f44898:[()=>n.e(54841).then(n.t.bind(n,15745,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",15745],f41735e0:[()=>n.e(65819).then(n.t.bind(n,79877,19)),"/home/runner/work/moon/moon/website/.docusaurus/docusaurus-plugin-typedoc-api/default/version-current.json",79877],f41d5eb1:[()=>n.e(52201).then(n.t.bind(n,94476,19)),"~docs/default/category-docs-docs-category-editors-2b3.json",94476],f440db1d:[()=>n.e(20984).then(n.bind(n,10528)),"@site/docs/proto/install.mdx",10528],f5b890ba:[()=>n.e(16502).then(n.t.bind(n,61762,19)),"~blog/default/blog-tags-survey-f63.json",61762],f5f247cc:[()=>n.e(21258).then(n.t.bind(n,21083,19)),"~blog/default/blog-tags-owners-249.json",21083],f616eec2:[()=>n.e(79357).then(n.bind(n,99075)),"@site/docs/commands/query/hash-diff.mdx",99075],f714495d:[()=>n.e(60026).then(n.bind(n,26648)),"@site/docs/proto/toml-plugin.mdx",26648],f761bd07:[()=>n.e(43310).then(n.bind(n,22936)),"@site/blog/2023-07-07_proto-v0.12.mdx?truncated=true",22936],f7b99134:[()=>n.e(29737).then(n.t.bind(n,99201,19)),"~blog/default/blog-tags-query-8a9-list.json",99201],f7bfbae9:[()=>n.e(24404).then(n.bind(n,88772)),"@site/blog/2022-11-29_v0.20.mdx",88772],f7f505dc:[()=>Promise.all([n.e(40532),n.e(30780),n.e(65537)]).then(n.bind(n,8401)),"@site/docs/guides/examples/vue.mdx",8401],f8409a7e:[()=>n.e(3206).then(n.bind(n,92661)),"@site/docs/intro.mdx",92661],f89b6242:[()=>n.e(83036).then(n.t.bind(n,79567,19)),"~blog/default/blog-tags-musl-bdd.json",79567],f8de77c0:[()=>n.e(5826).then(n.t.bind(n,87661,19)),"~blog/default/blog-tags-python-667-list.json",87661],f8deddba:[()=>n.e(10938).then(n.bind(n,47685)),"@site/blog/2023-07-10_moon-v1.10.mdx?truncated=true",47685],f90d8a46:[()=>n.e(44497).then(n.bind(n,90653)),"@site/blog/2023-05-30_moon-v1.7.mdx?truncated=true",90653],f9651623:[()=>n.e(15494).then(n.bind(n,31848)),"@site/blog/2023-05-15_moon-v1.6.mdx",31848],f9cc98ab:[()=>n.e(58751).then(n.bind(n,21612)),"@site/docs/commands/run.mdx",21612],fab64b27:[()=>n.e(67964).then(n.bind(n,36630)),"@site/docs/proto/commands/bin.mdx",36630],fac0f815:[()=>n.e(53941).then(n.t.bind(n,62698,19)),"~blog/default/blog-tags-graph-658-list.json",62698],fb2dd7db:[()=>n.e(39818).then(n.t.bind(n,71673,19)),"~blog/default/blog-tags-lang-462-list.json",71673],fba28ebc:[()=>n.e(90514).then(n.t.bind(n,64234,19)),"~blog/default/blog-tags-outdated-17a.json",64234],fbcfc993:[()=>n.e(53647).then(n.t.bind(n,48435,19)),"~blog/default/blog-tags-pin-fa7.json",48435],fc3ae8bf:[()=>n.e(15411).then(n.bind(n,97168)),"@site/docs/config/tasks.mdx",97168],fc3deafd:[()=>n.e(77659).then(n.t.bind(n,54568,19)),"~blog/default/blog-tags-go-099.json",54568],fc62dd75:[()=>n.e(11280).then(n.bind(n,83950)),"@site/docs/proto/commands/tools.mdx",83950],fcb295ad:[()=>n.e(17642).then(n.t.bind(n,22118,19)),"~docs/default/tag-docs-tags-vcs-af7.json",22118],fcbcdf3c:[()=>n.e(90439).then(n.t.bind(n,92942,19)),"~blog/default/blog-tags-pipeline-37d.json",92942],fd27c808:[()=>n.e(90661).then(n.t.bind(n,35171,19)),"~docs/default/category-docs-docs-category-how-it-works-aeb.json",35171],fd485bd3:[()=>n.e(90543).then(n.bind(n,9351)),"@site/blog/2023-06-12_moon-v1.8.mdx",9351],fd8ac5c7:[()=>n.e(23664).then(n.t.bind(n,2829,19)),"~blog/default/blog-tags-tasks-49e.json",2829],fe36d4cd:[()=>Promise.all([n.e(40532),n.e(30780),n.e(45420)]).then(n.bind(n,21727)),"@site/docs/guides/examples/jest.mdx",21727],fe55d425:[()=>n.e(71133).then(n.bind(n,56099)),"@site/blog/2023-08-21_moon-v1.12.mdx?truncated=true",56099],fea2b255:[()=>n.e(93287).then(n.bind(n,90360)),"@site/docs/concepts/target.mdx",90360],ff13fcd4:[()=>Promise.all([n.e(40532),n.e(30780),n.e(12174)]).then(n.bind(n,90992)),"@site/docs/guides/examples/angular.mdx",90992],ffc0ac08:[()=>n.e(92105).then(n.t.bind(n,68784,19)),"~blog/default/blog-tags-plugins-0a9-list.json",68784],ffef4e04:[()=>n.e(26027).then(n.bind(n,19303)),"@site/docs/commands/migrate/from-package-json.mdx",19303],fff5a6d1:[()=>n.e(97547).then(n.t.bind(n,11455,19)),"~blog/default/blog-tags-detect-153.json",11455],fffcdd84:[()=>n.e(78158).then(n.t.bind(n,4156,19)),"~blog/default/blog-tags-checksum-9de.json",4156]};function l(e){let{error:t,retry:n,pastDelay:o}=e;return t?a.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},a.createElement("p",null,String(t)),a.createElement("div",null,a.createElement("button",{type:"button",onClick:n},"Retry"))):o?a.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},a.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},a.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},a.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),a.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},a.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),a.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),a.createElement("circle",{cx:"22",cy:"22",r:"8"},a.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var d=n(13361),u=n(66881);function p(e,t){if("*"===e)return i()({loading:l,loader:()=>n.e(53893).then(n.bind(n,53893)),modules:["@theme/NotFound"],webpack:()=>[53893],render(e,t){const n=e.default;return a.createElement(u.z,{value:{plugin:{name:"native",id:"default"}}},a.createElement(n,t))}});const r=s[`${e}-${t}`],p={},f=[],m=[],g=(0,d.Z)(r);return Object.entries(g).forEach((e=>{let[t,n]=e;const a=c[n];a&&(p[t]=a[0],f.push(a[1]),m.push(a[2]))})),i().Map({loading:l,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,a]=t;const o=a.default;if(!o)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof o&&"function"!=typeof o||Object.keys(a).filter((e=>"default"!==e)).forEach((e=>{o[e]=a[e]}));let r=i;const s=n.split(".");s.slice(0,-1).forEach((e=>{r=r[e]})),r[s[s.length-1]]=o}));const s=i.__comp;delete i.__comp;const c=i.__context;return delete i.__context,a.createElement(u.z,{value:c},a.createElement(s,(0,o.Z)({},i,n)))}})}const f=[{path:"/blog",component:p("/blog","f2e"),exact:!0},{path:"/blog/2023-roadmap",component:p("/blog/2023-roadmap","864"),exact:!0},{path:"/blog/archive",component:p("/blog/archive","1b1"),exact:!0},{path:"/blog/moon-v1.0",component:p("/blog/moon-v1.0","21d"),exact:!0},{path:"/blog/moon-v1.1",component:p("/blog/moon-v1.1","f8e"),exact:!0},{path:"/blog/moon-v1.10",component:p("/blog/moon-v1.10","5e4"),exact:!0},{path:"/blog/moon-v1.11",component:p("/blog/moon-v1.11","461"),exact:!0},{path:"/blog/moon-v1.12",component:p("/blog/moon-v1.12","6dc"),exact:!0},{path:"/blog/moon-v1.13",component:p("/blog/moon-v1.13","a38"),exact:!0},{path:"/blog/moon-v1.14",component:p("/blog/moon-v1.14","63e"),exact:!0},{path:"/blog/moon-v1.15",component:p("/blog/moon-v1.15","b21"),exact:!0},{path:"/blog/moon-v1.16",component:p("/blog/moon-v1.16","eee"),exact:!0},{path:"/blog/moon-v1.2",component:p("/blog/moon-v1.2","cbe"),exact:!0},{path:"/blog/moon-v1.3",component:p("/blog/moon-v1.3","c99"),exact:!0},{path:"/blog/moon-v1.4",component:p("/blog/moon-v1.4","b5f"),exact:!0},{path:"/blog/moon-v1.5",component:p("/blog/moon-v1.5","51b"),exact:!0},{path:"/blog/moon-v1.6",component:p("/blog/moon-v1.6","c20"),exact:!0},{path:"/blog/moon-v1.7",component:p("/blog/moon-v1.7","96a"),exact:!0},{path:"/blog/moon-v1.8",component:p("/blog/moon-v1.8","a17"),exact:!0},{path:"/blog/moon-v1.9",component:p("/blog/moon-v1.9","835"),exact:!0},{path:"/blog/moonbase",component:p("/blog/moonbase","c38"),exact:!0},{path:"/blog/page/2",component:p("/blog/page/2","9e3"),exact:!0},{path:"/blog/page/3",component:p("/blog/page/3","ad8"),exact:!0},{path:"/blog/page/4",component:p("/blog/page/4","71e"),exact:!0},{path:"/blog/page/5",component:p("/blog/page/5","48b"),exact:!0},{path:"/blog/page/6",component:p("/blog/page/6","5bc"),exact:!0},{path:"/blog/proto",component:p("/blog/proto","dd1"),exact:!0},{path:"/blog/proto-v0.11",component:p("/blog/proto-v0.11","254"),exact:!0},{path:"/blog/proto-v0.12",component:p("/blog/proto-v0.12","e58"),exact:!0},{path:"/blog/proto-v0.13",component:p("/blog/proto-v0.13","c92"),exact:!0},{path:"/blog/proto-v0.14",component:p("/blog/proto-v0.14","94e"),exact:!0},{path:"/blog/proto-v0.15",component:p("/blog/proto-v0.15","573"),exact:!0},{path:"/blog/proto-v0.16",component:p("/blog/proto-v0.16","a08"),exact:!0},{path:"/blog/proto-v0.17",component:p("/blog/proto-v0.17","8c2"),exact:!0},{path:"/blog/proto-v0.18",component:p("/blog/proto-v0.18","187"),exact:!0},{path:"/blog/proto-v0.19",component:p("/blog/proto-v0.19","ccc"),exact:!0},{path:"/blog/proto-v0.20",component:p("/blog/proto-v0.20","435"),exact:!0},{path:"/blog/proto-v0.21",component:p("/blog/proto-v0.21","117"),exact:!0},{path:"/blog/proto-v0.3",component:p("/blog/proto-v0.3","5f5"),exact:!0},{path:"/blog/proto-v0.4",component:p("/blog/proto-v0.4","d76"),exact:!0},{path:"/blog/proto-v0.5",component:p("/blog/proto-v0.5","f0a"),exact:!0},{path:"/blog/proto-v0.6",component:p("/blog/proto-v0.6","4a2"),exact:!0},{path:"/blog/proto-v0.7",component:p("/blog/proto-v0.7","c70"),exact:!0},{path:"/blog/proto-v0.8",component:p("/blog/proto-v0.8","e68"),exact:!0},{path:"/blog/proto-v0.9",component:p("/blog/proto-v0.9","c62"),exact:!0},{path:"/blog/tags",component:p("/blog/tags","b41"),exact:!0},{path:"/blog/tags/action",component:p("/blog/tags/action","06b"),exact:!0},{path:"/blog/tags/affected",component:p("/blog/tags/affected","46a"),exact:!0},{path:"/blog/tags/alias",component:p("/blog/tags/alias","2c5"),exact:!0},{path:"/blog/tags/automation",component:p("/blog/tags/automation","344"),exact:!0},{path:"/blog/tags/bin",component:p("/blog/tags/bin","cb0"),exact:!0},{path:"/blog/tags/bun",component:p("/blog/tags/bun","7de"),exact:!0},{path:"/blog/tags/cache",component:p("/blog/tags/cache","5e3"),exact:!0},{path:"/blog/tags/canary",component:p("/blog/tags/canary","f59"),exact:!0},{path:"/blog/tags/checksum",component:p("/blog/tags/checksum","128"),exact:!0},{path:"/blog/tags/ci",component:p("/blog/tags/ci","6e4"),exact:!0},{path:"/blog/tags/clean",component:p("/blog/tags/clean","b52"),exact:!0},{path:"/blog/tags/code",component:p("/blog/tags/code","c6b"),exact:!0},{path:"/blog/tags/config",component:p("/blog/tags/config","a74"),exact:!0},{path:"/blog/tags/constraints",component:p("/blog/tags/constraints","423"),exact:!0},{path:"/blog/tags/debug",component:p("/blog/tags/debug","6b2"),exact:!0},{path:"/blog/tags/deno",component:p("/blog/tags/deno","a92"),exact:!0},{path:"/blog/tags/dep-graph",component:p("/blog/tags/dep-graph","022"),exact:!0},{path:"/blog/tags/dependency",component:p("/blog/tags/dependency","ea3"),exact:!0},{path:"/blog/tags/detect",component:p("/blog/tags/detect","d08"),exact:!0},{path:"/blog/tags/docker",component:p("/blog/tags/docker","2ae"),exact:!0},{path:"/blog/tags/editors",component:p("/blog/tags/editors","757"),exact:!0},{path:"/blog/tags/env-vars",component:p("/blog/tags/env-vars","ba2"),exact:!0},{path:"/blog/tags/errors",component:p("/blog/tags/errors","b3f"),exact:!0},{path:"/blog/tags/generator",component:p("/blog/tags/generator","fb2"),exact:!0},{path:"/blog/tags/git",component:p("/blog/tags/git","3bf"),exact:!0},{path:"/blog/tags/github",component:p("/blog/tags/github","9dc"),exact:!0},{path:"/blog/tags/global",component:p("/blog/tags/global","ed7"),exact:!0},{path:"/blog/tags/globals",component:p("/blog/tags/globals","c1f"),exact:!0},{path:"/blog/tags/go",component:p("/blog/tags/go","793"),exact:!0},{path:"/blog/tags/graph",component:p("/blog/tags/graph","017"),exact:!0},{path:"/blog/tags/hash",component:p("/blog/tags/hash","da9"),exact:!0},{path:"/blog/tags/hasher",component:p("/blog/tags/hasher","1f3"),exact:!0},{path:"/blog/tags/hooks",component:p("/blog/tags/hooks","715"),exact:!0},{path:"/blog/tags/http",component:p("/blog/tags/http","31c"),exact:!0},{path:"/blog/tags/hydration",component:p("/blog/tags/hydration","147"),exact:!0},{path:"/blog/tags/ignore",component:p("/blog/tags/ignore","d3a"),exact:!0},{path:"/blog/tags/index",component:p("/blog/tags/index","763"),exact:!0},{path:"/blog/tags/inheritance",component:p("/blog/tags/inheritance","db9"),exact:!0},{path:"/blog/tags/init",component:p("/blog/tags/init","268"),exact:!0},{path:"/blog/tags/lang",component:p("/blog/tags/lang","a50"),exact:!0},{path:"/blog/tags/language",component:p("/blog/tags/language","abc"),exact:!0},{path:"/blog/tags/life",component:p("/blog/tags/life","8d8"),exact:!0},{path:"/blog/tags/linux",component:p("/blog/tags/linux","da3"),exact:!0},{path:"/blog/tags/local",component:p("/blog/tags/local","634"),exact:!0},{path:"/blog/tags/log",component:p("/blog/tags/log","1c5"),exact:!0},{path:"/blog/tags/logging",component:p("/blog/tags/logging","37d"),exact:!0},{path:"/blog/tags/manager",component:p("/blog/tags/manager","975"),exact:!0},{path:"/blog/tags/migrate",component:p("/blog/tags/migrate","776"),exact:!0},{path:"/blog/tags/monorepo",component:p("/blog/tags/monorepo","a85"),exact:!0},{path:"/blog/tags/moonbase",component:p("/blog/tags/moonbase","b71"),exact:!0},{path:"/blog/tags/musl",component:p("/blog/tags/musl","2dd"),exact:!0},{path:"/blog/tags/node",component:p("/blog/tags/node","673"),exact:!0},{path:"/blog/tags/notifier",component:p("/blog/tags/notifier","2fe"),exact:!0},{path:"/blog/tags/npm",component:p("/blog/tags/npm","f7d"),exact:!0},{path:"/blog/tags/offline",component:p("/blog/tags/offline","82f"),exact:!0},{path:"/blog/tags/outdated",component:p("/blog/tags/outdated","084"),exact:!0},{path:"/blog/tags/owners",component:p("/blog/tags/owners","368"),exact:!0},{path:"/blog/tags/ownership",component:p("/blog/tags/ownership","4e9"),exact:!0},{path:"/blog/tags/package",component:p("/blog/tags/package","2ac"),exact:!0},{path:"/blog/tags/pin",component:p("/blog/tags/pin","01f"),exact:!0},{path:"/blog/tags/pipeline",component:p("/blog/tags/pipeline","75d"),exact:!0},{path:"/blog/tags/platform",component:p("/blog/tags/platform","099"),exact:!0},{path:"/blog/tags/plugin",component:p("/blog/tags/plugin","100"),exact:!0},{path:"/blog/tags/plugins",component:p("/blog/tags/plugins","c8f"),exact:!0},{path:"/blog/tags/project",component:p("/blog/tags/project","b7b"),exact:!0},{path:"/blog/tags/project-graph",component:p("/blog/tags/project-graph","adf"),exact:!0},{path:"/blog/tags/projects",component:p("/blog/tags/projects","fe7"),exact:!0},{path:"/blog/tags/proto",component:p("/blog/tags/proto","a31"),exact:!0},{path:"/blog/tags/proto/page/2",component:p("/blog/tags/proto/page/2","a56"),exact:!0},{path:"/blog/tags/proto/page/3",component:p("/blog/tags/proto/page/3","945"),exact:!0},{path:"/blog/tags/python",component:p("/blog/tags/python","253"),exact:!0},{path:"/blog/tags/qol",component:p("/blog/tags/qol","c36"),exact:!0},{path:"/blog/tags/quality",component:p("/blog/tags/quality","17c"),exact:!0},{path:"/blog/tags/query",component:p("/blog/tags/query","e4e"),exact:!0},{path:"/blog/tags/railway",component:p("/blog/tags/railway","c2c"),exact:!0},{path:"/blog/tags/registry",component:p("/blog/tags/registry","e67"),exact:!0},{path:"/blog/tags/remote-cache",component:p("/blog/tags/remote-cache","49b"),exact:!0},{path:"/blog/tags/rfc",component:p("/blog/tags/rfc","8be"),exact:!0},{path:"/blog/tags/roadmap",component:p("/blog/tags/roadmap","c41"),exact:!0},{path:"/blog/tags/run",component:p("/blog/tags/run","309"),exact:!0},{path:"/blog/tags/runner",component:p("/blog/tags/runner","d26"),exact:!0},{path:"/blog/tags/rust",component:p("/blog/tags/rust","0fc"),exact:!0},{path:"/blog/tags/schema",component:p("/blog/tags/schema","abe"),exact:!0},{path:"/blog/tags/shim",component:p("/blog/tags/shim","8e0"),exact:!0},{path:"/blog/tags/shorthand",component:p("/blog/tags/shorthand","421"),exact:!0},{path:"/blog/tags/source",component:p("/blog/tags/source","3fc"),exact:!0},{path:"/blog/tags/survey",component:p("/blog/tags/survey","7e5"),exact:!0},{path:"/blog/tags/tag",component:p("/blog/tags/tag","2cb"),exact:!0},{path:"/blog/tags/tags",component:p("/blog/tags/tags","829"),exact:!0},{path:"/blog/tags/target",component:p("/blog/tags/target","aed"),exact:!0},{path:"/blog/tags/task",component:p("/blog/tags/task","a06"),exact:!0},{path:"/blog/tags/tasks",component:p("/blog/tags/tasks","301"),exact:!0},{path:"/blog/tags/tier",component:p("/blog/tags/tier","f53"),exact:!0},{path:"/blog/tags/tokens",component:p("/blog/tags/tokens","faf"),exact:!0},{path:"/blog/tags/toml",component:p("/blog/tags/toml","1de"),exact:!0},{path:"/blog/tags/tool",component:p("/blog/tags/tool","864"),exact:!0},{path:"/blog/tags/toolchain",component:p("/blog/tags/toolchain","403"),exact:!0},{path:"/blog/tags/typescript",component:p("/blog/tags/typescript","a74"),exact:!0},{path:"/blog/tags/vcs",component:p("/blog/tags/vcs","cd2"),exact:!0},{path:"/blog/tags/version",component:p("/blog/tags/version","c87"),exact:!0},{path:"/blog/tags/vscode",component:p("/blog/tags/vscode","bcd"),exact:!0},{path:"/blog/tags/wasm",component:p("/blog/tags/wasm","463"),exact:!0},{path:"/blog/typescript-monorepo",component:p("/blog/typescript-monorepo","cd0"),exact:!0},{path:"/blog/v0.13",component:p("/blog/v0.13","d46"),exact:!0},{path:"/blog/v0.14",component:p("/blog/v0.14","934"),exact:!0},{path:"/blog/v0.15",component:p("/blog/v0.15","6da"),exact:!0},{path:"/blog/v0.16",component:p("/blog/v0.16","f88"),exact:!0},{path:"/blog/v0.17",component:p("/blog/v0.17","841"),exact:!0},{path:"/blog/v0.18",component:p("/blog/v0.18","825"),exact:!0},{path:"/blog/v0.19",component:p("/blog/v0.19","ad4"),exact:!0},{path:"/blog/v0.20",component:p("/blog/v0.20","311"),exact:!0},{path:"/blog/v0.21",component:p("/blog/v0.21","93d"),exact:!0},{path:"/blog/v0.22",component:p("/blog/v0.22","4f4"),exact:!0},{path:"/blog/v0.23",component:p("/blog/v0.23","d9e"),exact:!0},{path:"/blog/v0.24",component:p("/blog/v0.24","c6b"),exact:!0},{path:"/blog/v0.25",component:p("/blog/v0.25","616"),exact:!0},{path:"/blog/v0.26",component:p("/blog/v0.26","7ee"),exact:!0},{path:"/blog/vscode-extension",component:p("/blog/vscode-extension","c62"),exact:!0},{path:"/docs/tags",component:p("/docs/tags","a68"),exact:!0},{path:"/docs/tags/code",component:p("/docs/tags/code","d62"),exact:!0},{path:"/docs/tags/codegen",component:p("/docs/tags/codegen","e89"),exact:!0},{path:"/docs/tags/codeowners",component:p("/docs/tags/codeowners","c50"),exact:!0},{path:"/docs/tags/generator",component:p("/docs/tags/generator","4f0"),exact:!0},{path:"/docs/tags/git",component:p("/docs/tags/git","cd5"),exact:!0},{path:"/docs/tags/git-hooks",component:p("/docs/tags/git-hooks","0b5"),exact:!0},{path:"/docs/tags/hooks",component:p("/docs/tags/hooks","9fb"),exact:!0},{path:"/docs/tags/lang",component:p("/docs/tags/lang","0f7"),exact:!0},{path:"/docs/tags/mql",component:p("/docs/tags/mql","b60"),exact:!0},{path:"/docs/tags/owners",component:p("/docs/tags/owners","a7d"),exact:!0},{path:"/docs/tags/query",component:p("/docs/tags/query","532"),exact:!0},{path:"/docs/tags/scaffold",component:p("/docs/tags/scaffold","018"),exact:!0},{path:"/docs/tags/solid",component:p("/docs/tags/solid","870"),exact:!0},{path:"/docs/tags/solidjs",component:p("/docs/tags/solidjs","25a"),exact:!0},{path:"/docs/tags/template",component:p("/docs/tags/template","67d"),exact:!0},{path:"/docs/tags/vcs",component:p("/docs/tags/vcs","bb1"),exact:!0},{path:"/moon",component:p("/moon","b34"),exact:!0},{path:"/moonbase",component:p("/moonbase","1fb"),exact:!0},{path:"/proto",component:p("/proto","f87"),exact:!0},{path:"/search",component:p("/search","6e4"),exact:!0},{path:"/api",component:p("/api","7ec"),routes:[{path:"/api",component:p("/api","710"),exact:!0,sidebar:"api"},{path:"/api/report",component:p("/api/report","57a"),exact:!0,sidebar:"api",id:1},{path:"/api/report/function/formatDuration",component:p("/api/report/function/formatDuration","cd9"),exact:!0,sidebar:"api",id:44},{path:"/api/report/function/formatTime",component:p("/api/report/function/formatTime","3d7"),exact:!0,sidebar:"api",id:39},{path:"/api/report/function/getDurationInMillis",component:p("/api/report/function/getDurationInMillis","fa4"),exact:!0,sidebar:"api",id:36},{path:"/api/report/function/getIconForStatus",component:p("/api/report/function/getIconForStatus","f25"),exact:!0,sidebar:"api",id:4},{path:"/api/report/function/hasFailed",component:p("/api/report/function/hasFailed","72a"),exact:!0,sidebar:"api",id:7},{path:"/api/report/function/hasPassed",component:p("/api/report/function/hasPassed","c15"),exact:!0,sidebar:"api",id:10},{path:"/api/report/function/isFlaky",component:p("/api/report/function/isFlaky","d55"),exact:!0,sidebar:"api",id:13},{path:"/api/report/function/isSlow",component:p("/api/report/function/isSlow","5b3"),exact:!0,sidebar:"api",id:16},{path:"/api/report/function/prepareReportActions",component:p("/api/report/function/prepareReportActions","619"),exact:!0,sidebar:"api",id:25},{path:"/api/report/function/sortReport",component:p("/api/report/function/sortReport","7b7"),exact:!0,sidebar:"api",id:20},{path:"/api/report/interface/PreparedAction",component:p("/api/report/interface/PreparedAction","b0e"),exact:!0,sidebar:"api",id:29},{path:"/api/runtime",component:p("/api/runtime","e4a"),exact:!0,sidebar:"api",id:2},{path:"/api/runtime/function/getContext",component:p("/api/runtime/function/getContext","ba3"),exact:!0,sidebar:"api",id:47},{path:"/api/runtime/interface/RuntimeContext",component:p("/api/runtime/interface/RuntimeContext","b42"),exact:!0,sidebar:"api",id:49},{path:"/api/types",component:p("/api/types","a7c"),exact:!0,sidebar:"api",id:3},{path:"/api/types/interface/Action",component:p("/api/types/interface/Action","5f0"),exact:!0,sidebar:"api",id:180},{path:"/api/types/interface/ActionContext",component:p("/api/types/interface/ActionContext","bb7"),exact:!0,sidebar:"api",id:195},{path:"/api/types/interface/ActionNodeInstallDeps",component:p("/api/types/interface/ActionNodeInstallDeps","418"),exact:!0,sidebar:"api",id:221},{path:"/api/types/interface/ActionNodeInstallProjectDeps",component:p("/api/types/interface/ActionNodeInstallProjectDeps","48d"),exact:!0,sidebar:"api",id:226},{path:"/api/types/interface/ActionNodeRunTask",component:p("/api/types/interface/ActionNodeRunTask","80f"),exact:!0,sidebar:"api",id:232},{path:"/api/types/interface/ActionNodeSetupTool",component:p("/api/types/interface/ActionNodeSetupTool","ca5"),exact:!0,sidebar:"api",id:240},{path:"/api/types/interface/ActionNodeSyncProject",component:p("/api/types/interface/ActionNodeSyncProject","8d5"),exact:!0,sidebar:"api",id:245},{path:"/api/types/interface/ActionNodeSyncWorkspace",component:p("/api/types/interface/ActionNodeSyncWorkspace","e99"),exact:!0,sidebar:"api",id:251},{path:"/api/types/interface/Attempt",component:p("/api/types/interface/Attempt","556"),exact:!0,sidebar:"api",id:174},{path:"/api/types/interface/BinConfig",component:p("/api/types/interface/BinConfig","abf"),exact:!0,sidebar:"api",id:633},{path:"/api/types/interface/BunpmConfig",component:p("/api/types/interface/BunpmConfig","ec1"),exact:!0,sidebar:"api",id:644},{path:"/api/types/interface/CodeownersConfig",component:p("/api/types/interface/CodeownersConfig","814"),exact:!0,sidebar:"api",id:751},{path:"/api/types/interface/ConstraintsConfig",component:p("/api/types/interface/ConstraintsConfig","de3"),exact:!0,sidebar:"api",id:755},{path:"/api/types/interface/DenoConfig",component:p("/api/types/interface/DenoConfig","1aa"),exact:!0,sidebar:"api",id:639},{path:"/api/types/interface/DependencyConfig",component:p("/api/types/interface/DependencyConfig","f20"),exact:!0,sidebar:"api",id:363},{path:"/api/types/interface/Duration",component:p("/api/types/interface/Duration","f37"),exact:!0,sidebar:"api",id:56},{path:"/api/types/interface/EventActionFinished",component:p("/api/types/interface/EventActionFinished","997"),exact:!0,sidebar:"api",id:85},{path:"/api/types/interface/EventActionStarted",component:p("/api/types/interface/EventActionStarted","44f"),exact:!0,sidebar:"api",id:81},{path:"/api/types/interface/EventDependenciesInstalled",component:p("/api/types/interface/EventDependenciesInstalled","a7d"),exact:!0,sidebar:"api",id:94},{path:"/api/types/interface/EventDependenciesInstalling",component:p("/api/types/interface/EventDependenciesInstalling","4d6"),exact:!0,sidebar:"api",id:90},{path:"/api/types/interface/EventPipelineAborted",component:p("/api/types/interface/EventPipelineAborted","1fe"),exact:!0,sidebar:"api",id:108},{path:"/api/types/interface/EventPipelineFinished",component:p("/api/types/interface/EventPipelineFinished","d46"),exact:!0,sidebar:"api",id:115},{path:"/api/types/interface/EventPipelineStarted",component:p("/api/types/interface/EventPipelineStarted","8fb"),exact:!0,sidebar:"api",id:111},{path:"/api/types/interface/EventProjectSynced",component:p("/api/types/interface/EventProjectSynced","c2f"),exact:!0,sidebar:"api",id:103},{path:"/api/types/interface/EventProjectSyncing",component:p("/api/types/interface/EventProjectSyncing","38d"),exact:!0,sidebar:"api",id:99},{path:"/api/types/interface/EventTargetOutputArchived",component:p("/api/types/interface/EventTargetOutputArchived","346"),exact:!0,sidebar:"api",id:137},{path:"/api/types/interface/EventTargetOutputArchiving",component:p("/api/types/interface/EventTargetOutputArchiving","e9e"),exact:!0,sidebar:"api",id:131},{path:"/api/types/interface/EventTargetOutputCacheCheck",component:p("/api/types/interface/EventTargetOutputCacheCheck","231"),exact:!0,sidebar:"api",id:157},{path:"/api/types/interface/EventTargetOutputHydrated",component:p("/api/types/interface/EventTargetOutputHydrated","1ee"),exact:!0,sidebar:"api",id:150},{path:"/api/types/interface/EventTargetOutputHydrating",component:p("/api/types/interface/EventTargetOutputHydrating","3ae"),exact:!0,sidebar:"api",id:144},{path:"/api/types/interface/EventTargetRan",component:p("/api/types/interface/EventTargetRan","f59"),exact:!0,sidebar:"api",id:127},{path:"/api/types/interface/EventTargetRunning",component:p("/api/types/interface/EventTargetRunning","42a"),exact:!0,sidebar:"api",id:124},{path:"/api/types/interface/EventToolInstalled",component:p("/api/types/interface/EventToolInstalled","ac8"),exact:!0,sidebar:"api",id:164},{path:"/api/types/interface/EventToolInstalling",component:p("/api/types/interface/EventToolInstalling","09f"),exact:!0,sidebar:"api",id:161},{path:"/api/types/interface/EventWorkspaceSynced",component:p("/api/types/interface/EventWorkspaceSynced","ca8"),exact:!0,sidebar:"api",id:170},{path:"/api/types/interface/ExperimentsConfig",component:p("/api/types/interface/ExperimentsConfig","d69"),exact:!0,sidebar:"api",id:758},{path:"/api/types/interface/FileGroup",component:p("/api/types/interface/FileGroup","fbb"),exact:!0,sidebar:"api",id:255},{path:"/api/types/interface/GeneratorConfig",component:p("/api/types/interface/GeneratorConfig","6ea"),exact:!0,sidebar:"api",id:761},{path:"/api/types/interface/HasherConfig",component:p("/api/types/interface/HasherConfig","1a6"),exact:!0,sidebar:"api",id:763},{path:"/api/types/interface/InheritedTasksConfig",component:p("/api/types/interface/InheritedTasksConfig","481"),exact:!0,sidebar:"api",id:488},{path:"/api/types/interface/NodeConfig",component:p("/api/types/interface/NodeConfig","b6e"),exact:!0,sidebar:"api",id:657},{path:"/api/types/interface/NotifierConfig",component:p("/api/types/interface/NotifierConfig","af6"),exact:!0,sidebar:"api",id:770},{path:"/api/types/interface/NpmConfig",component:p("/api/types/interface/NpmConfig","966"),exact:!0,sidebar:"api",id:647},{path:"/api/types/interface/OwnersConfig",component:p("/api/types/interface/OwnersConfig","7b9"),exact:!0,sidebar:"api",id:370},{path:"/api/types/interface/PartialBinConfig",component:p("/api/types/interface/PartialBinConfig","5cf"),exact:!0,sidebar:"api",id:567},{path:"/api/types/interface/PartialBunpmConfig",component:p("/api/types/interface/PartialBunpmConfig","453"),exact:!0,sidebar:"api",id:579},{path:"/api/types/interface/PartialCodeownersConfig",component:p("/api/types/interface/PartialCodeownersConfig","e7e"),exact:!0,sidebar:"api",id:696},{path:"/api/types/interface/PartialConstraintsConfig",component:p("/api/types/interface/PartialConstraintsConfig","1f7"),exact:!0,sidebar:"api",id:700},{path:"/api/types/interface/PartialDenoConfig",component:p("/api/types/interface/PartialDenoConfig","26c"),exact:!0,sidebar:"api",id:573},{path:"/api/types/interface/PartialDependencyConfig",component:p("/api/types/interface/PartialDependencyConfig","eb0"),exact:!0,sidebar:"api",id:311},{path:"/api/types/interface/PartialExperimentsConfig",component:p("/api/types/interface/PartialExperimentsConfig","6b7"),exact:!0,sidebar:"api",id:703},{path:"/api/types/interface/PartialGeneratorConfig",component:p("/api/types/interface/PartialGeneratorConfig","11d"),exact:!0,sidebar:"api",id:706},{path:"/api/types/interface/PartialHasherConfig",component:p("/api/types/interface/PartialHasherConfig","c92"),exact:!0,sidebar:"api",id:710},{path:"/api/types/interface/PartialInheritedTasksConfig",component:p("/api/types/interface/PartialInheritedTasksConfig","c99"),exact:!0,sidebar:"api",id:450},{path:"/api/types/interface/PartialNodeConfig",component:p("/api/types/interface/PartialNodeConfig","526"),exact:!0,sidebar:"api",id:595},{path:"/api/types/interface/PartialNotifierConfig",component:p("/api/types/interface/PartialNotifierConfig","aa3"),exact:!0,sidebar:"api",id:717},{path:"/api/types/interface/PartialNpmConfig",component:p("/api/types/interface/PartialNpmConfig","c45"),exact:!0,sidebar:"api",id:583},{path:"/api/types/interface/PartialOwnersConfig",component:p("/api/types/interface/PartialOwnersConfig","10e"),exact:!0,sidebar:"api",id:319},{path:"/api/types/interface/PartialPnpmConfig",component:p("/api/types/interface/PartialPnpmConfig","b5b"),exact:!0,sidebar:"api",id:587},{path:"/api/types/interface/PartialProjectConfig",component:p("/api/types/interface/PartialProjectConfig","10d"),exact:!0,sidebar:"api",id:349},{path:"/api/types/interface/PartialProjectMetadataConfig",component:p("/api/types/interface/PartialProjectMetadataConfig","346"),exact:!0,sidebar:"api",id:325},{path:"/api/types/interface/PartialProjectToolchainCommonToolConfig",component:p("/api/types/interface/PartialProjectToolchainCommonToolConfig","542"),exact:!0,sidebar:"api",id:331},{path:"/api/types/interface/PartialProjectToolchainConfig",component:p("/api/types/interface/PartialProjectToolchainConfig","86b"),exact:!0,sidebar:"api",id:338},{path:"/api/types/interface/PartialProjectToolchainTypeScriptConfig",component:p("/api/types/interface/PartialProjectToolchainTypeScriptConfig","4a7"),exact:!0,sidebar:"api",id:333},{path:"/api/types/interface/PartialProjectWorkspaceConfig",component:p("/api/types/interface/PartialProjectWorkspaceConfig","f17"),exact:!0,sidebar:"api",id:347},{path:"/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig",component:p("/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig","195"),exact:!0,sidebar:"api",id:343},{path:"/api/types/interface/PartialRunnerConfig",component:p("/api/types/interface/PartialRunnerConfig","41e"),exact:!0,sidebar:"api",id:723},{path:"/api/types/interface/PartialRustConfig",component:p("/api/types/interface/PartialRustConfig","49c"),exact:!0,sidebar:"api",id:611},{path:"/api/types/interface/PartialTaskConfig",component:p("/api/types/interface/PartialTaskConfig","79a"),exact:!0,sidebar:"api",id:438},{path:"/api/types/interface/PartialTaskOptionsConfig",component:p("/api/types/interface/PartialTaskOptionsConfig","e8f"),exact:!0,sidebar:"api",id:418},{path:"/api/types/interface/PartialTemplateConfig",component:p("/api/types/interface/PartialTemplateConfig","9e8"),exact:!0,sidebar:"api",id:521},{path:"/api/types/interface/PartialTemplateFrontmatterConfig",component:p("/api/types/interface/PartialTemplateFrontmatterConfig","8e5"),exact:!0,sidebar:"api",id:526},{path:"/api/types/interface/PartialTemplateVariableBoolSetting",component:p("/api/types/interface/PartialTemplateVariableBoolSetting","38b"),exact:!0,sidebar:"api",id:495},{path:"/api/types/interface/PartialTemplateVariableEnumSetting",component:p("/api/types/interface/PartialTemplateVariableEnumSetting","23b"),exact:!0,sidebar:"api",id:504},{path:"/api/types/interface/PartialTemplateVariableEnumValueConfig",component:p("/api/types/interface/PartialTemplateVariableEnumValueConfig","442"),exact:!0,sidebar:"api",id:500},{path:"/api/types/interface/PartialTemplateVariableNumberSetting",component:p("/api/types/interface/PartialTemplateVariableNumberSetting","a8c"),exact:!0,sidebar:"api",id:510},{path:"/api/types/interface/PartialTemplateVariableStringSetting",component:p("/api/types/interface/PartialTemplateVariableStringSetting","1a4"),exact:!0,sidebar:"api",id:515},{path:"/api/types/interface/PartialToolchainConfig",component:p("/api/types/interface/PartialToolchainConfig","ee1"),exact:!0,sidebar:"api",id:626},{path:"/api/types/interface/PartialTypeScriptConfig",component:p("/api/types/interface/PartialTypeScriptConfig","ba0"),exact:!0,sidebar:"api",id:618},{path:"/api/types/interface/PartialVcsConfig",component:p("/api/types/interface/PartialVcsConfig","b08"),exact:!0,sidebar:"api",id:730},{path:"/api/types/interface/PartialWorkspaceConfig",component:p("/api/types/interface/PartialWorkspaceConfig","7dd"),exact:!0,sidebar:"api",id:737},{path:"/api/types/interface/PartialWorkspaceProjectsConfig",component:p("/api/types/interface/PartialWorkspaceProjectsConfig","9a2"),exact:!0,sidebar:"api",id:719},{path:"/api/types/interface/PartialYarnConfig",component:p("/api/types/interface/PartialYarnConfig","0b9"),exact:!0,sidebar:"api",id:591},{path:"/api/types/interface/PnpmConfig",component:p("/api/types/interface/PnpmConfig","436"),exact:!0,sidebar:"api",id:650},{path:"/api/types/interface/Project",component:p("/api/types/interface/Project","817"),exact:!0,sidebar:"api",id:292},{path:"/api/types/interface/ProjectConfig",component:p("/api/types/interface/ProjectConfig","0f3"),exact:!0,sidebar:"api",id:399},{path:"/api/types/interface/ProjectMetadataConfig",component:p("/api/types/interface/ProjectMetadataConfig","4b0"),exact:!0,sidebar:"api",id:376},{path:"/api/types/interface/ProjectToolchainCommonToolConfig",component:p("/api/types/interface/ProjectToolchainCommonToolConfig","832"),exact:!0,sidebar:"api",id:382},{path:"/api/types/interface/ProjectToolchainConfig",component:p("/api/types/interface/ProjectToolchainConfig","5f0"),exact:!0,sidebar:"api",id:389},{path:"/api/types/interface/ProjectToolchainTypeScriptConfig",component:p("/api/types/interface/ProjectToolchainTypeScriptConfig","481"),exact:!0,sidebar:"api",id:384},{path:"/api/types/interface/ProjectWorkspaceConfig",component:p("/api/types/interface/ProjectWorkspaceConfig","1bf"),exact:!0,sidebar:"api",id:397},{path:"/api/types/interface/ProjectWorkspaceInheritedTasksConfig",component:p("/api/types/interface/ProjectWorkspaceInheritedTasksConfig","503"),exact:!0,sidebar:"api",id:393},{path:"/api/types/interface/ProviderEnvironment",component:p("/api/types/interface/ProviderEnvironment","390"),exact:!0,sidebar:"api",id:63},{path:"/api/types/interface/RunnerConfig",component:p("/api/types/interface/RunnerConfig","4bb"),exact:!0,sidebar:"api",id:776},{path:"/api/types/interface/RunReport",component:p("/api/types/interface/RunReport","0da"),exact:!0,sidebar:"api",id:204},{path:"/api/types/interface/Runtime",component:p("/api/types/interface/Runtime","3de"),exact:!0,sidebar:"api",id:59},{path:"/api/types/interface/RustConfig",component:p("/api/types/interface/RustConfig","9cb"),exact:!0,sidebar:"api",id:673},{path:"/api/types/interface/TargetState",component:p("/api/types/interface/TargetState","d71"),exact:!0,sidebar:"api",id:192},{path:"/api/types/interface/Task",component:p("/api/types/interface/Task","753"),exact:!0,sidebar:"api",id:275},{path:"/api/types/interface/TaskConfig",component:p("/api/types/interface/TaskConfig","2f8"),exact:!0,sidebar:"api",id:476},{path:"/api/types/interface/TaskOptions",component:p("/api/types/interface/TaskOptions","764"),exact:!0,sidebar:"api",id:259},{path:"/api/types/interface/TaskOptionsConfig",component:p("/api/types/interface/TaskOptionsConfig","641"),exact:!0,sidebar:"api",id:458},{path:"/api/types/interface/TemplateConfig",component:p("/api/types/interface/TemplateConfig","920"),exact:!0,sidebar:"api",id:557},{path:"/api/types/interface/TemplateFrontmatterConfig",component:p("/api/types/interface/TemplateFrontmatterConfig","899"),exact:!0,sidebar:"api",id:562},{path:"/api/types/interface/TemplateVariableBoolSetting",component:p("/api/types/interface/TemplateVariableBoolSetting","4ef"),exact:!0,sidebar:"api",id:531},{path:"/api/types/interface/TemplateVariableEnumSetting",component:p("/api/types/interface/TemplateVariableEnumSetting","45d"),exact:!0,sidebar:"api",id:540},{path:"/api/types/interface/TemplateVariableEnumValueConfig",component:p("/api/types/interface/TemplateVariableEnumValueConfig","065"),exact:!0,sidebar:"api",id:536},{path:"/api/types/interface/TemplateVariableNumberSetting",component:p("/api/types/interface/TemplateVariableNumberSetting","284"),exact:!0,sidebar:"api",id:546},{path:"/api/types/interface/TemplateVariableStringSetting",component:p("/api/types/interface/TemplateVariableStringSetting","bf1"),exact:!0,sidebar:"api",id:551},{path:"/api/types/interface/ToolchainConfig",component:p("/api/types/interface/ToolchainConfig","416"),exact:!0,sidebar:"api",id:688},{path:"/api/types/interface/TypeScriptConfig",component:p("/api/types/interface/TypeScriptConfig","530"),exact:!0,sidebar:"api",id:680},{path:"/api/types/interface/VcsConfig",component:p("/api/types/interface/VcsConfig","4fe"),exact:!0,sidebar:"api",id:781},{path:"/api/types/interface/WebhookPayload",component:p("/api/types/interface/WebhookPayload","0a8"),exact:!0,sidebar:"api",id:72},{path:"/api/types/interface/WorkspaceConfig",component:p("/api/types/interface/WorkspaceConfig","ebe"),exact:!0,sidebar:"api",id:788},{path:"/api/types/interface/WorkspaceProjectsConfig",component:p("/api/types/interface/WorkspaceProjectsConfig","090"),exact:!0,sidebar:"api",id:772},{path:"/api/types/interface/YarnConfig",component:p("/api/types/interface/YarnConfig","b5a"),exact:!0,sidebar:"api",id:653}]},{path:"/docs",component:p("/docs","489"),routes:[{path:"/docs",component:p("/docs","80c"),exact:!0,sidebar:"docs"},{path:"/docs/cheat-sheet",component:p("/docs/cheat-sheet","53d"),exact:!0,sidebar:"docs"},{path:"/docs/commands",component:p("/docs/commands","993"),exact:!0,sidebar:"docs"},{path:"/docs/commands/action-graph",component:p("/docs/commands/action-graph","d0e"),exact:!0,sidebar:"docs"},{path:"/docs/commands/bin",component:p("/docs/commands/bin","e39"),exact:!0,sidebar:"docs"},{path:"/docs/commands/check",component:p("/docs/commands/check","cf6"),exact:!0,sidebar:"docs"},{path:"/docs/commands/ci",component:p("/docs/commands/ci","f74"),exact:!0,sidebar:"docs"},{path:"/docs/commands/clean",component:p("/docs/commands/clean","9b0"),exact:!0,sidebar:"docs"},{path:"/docs/commands/completions",component:p("/docs/commands/completions","f1b"),exact:!0,sidebar:"docs"},{path:"/docs/commands/docker",component:p("/docs/commands/docker","4ed"),exact:!0,sidebar:"docs"},{path:"/docs/commands/docker/prune",component:p("/docs/commands/docker/prune","fc8"),exact:!0,sidebar:"docs"},{path:"/docs/commands/docker/scaffold",component:p("/docs/commands/docker/scaffold","d55"),exact:!0,sidebar:"docs"},{path:"/docs/commands/docker/setup",component:p("/docs/commands/docker/setup","2af"),exact:!0,sidebar:"docs"},{path:"/docs/commands/generate",component:p("/docs/commands/generate","0ff"),exact:!0,sidebar:"docs"},{path:"/docs/commands/init",component:p("/docs/commands/init","28a"),exact:!0,sidebar:"docs"},{path:"/docs/commands/migrate",component:p("/docs/commands/migrate","4df"),exact:!0,sidebar:"docs"},{path:"/docs/commands/migrate/from-package-json",component:p("/docs/commands/migrate/from-package-json","869"),exact:!0,sidebar:"docs"},{path:"/docs/commands/migrate/from-turborepo",component:p("/docs/commands/migrate/from-turborepo","36a"),exact:!0,sidebar:"docs"},{path:"/docs/commands/overview",component:p("/docs/commands/overview","c3f"),exact:!0,sidebar:"docs"},{path:"/docs/commands/project",component:p("/docs/commands/project","225"),exact:!0,sidebar:"docs"},{path:"/docs/commands/project-graph",component:p("/docs/commands/project-graph","49c"),exact:!0,sidebar:"docs"},{path:"/docs/commands/query",component:p("/docs/commands/query","0ed"),exact:!0,sidebar:"docs"},{path:"/docs/commands/query/hash",component:p("/docs/commands/query/hash","390"),exact:!0,sidebar:"docs"},{path:"/docs/commands/query/hash-diff",component:p("/docs/commands/query/hash-diff","f4c"),exact:!0,sidebar:"docs"},{path:"/docs/commands/query/projects",component:p("/docs/commands/query/projects","9e0"),exact:!0,sidebar:"docs"},{path:"/docs/commands/query/tasks",component:p("/docs/commands/query/tasks","d45"),exact:!0,sidebar:"docs"},{path:"/docs/commands/query/touched-files",component:p("/docs/commands/query/touched-files","ea7"),exact:!0,sidebar:"docs"},{path:"/docs/commands/run",component:p("/docs/commands/run","a21"),exact:!0,sidebar:"docs"},{path:"/docs/commands/setup",component:p("/docs/commands/setup","187"),exact:!0,sidebar:"docs"},{path:"/docs/commands/sync",component:p("/docs/commands/sync","193"),exact:!0,sidebar:"docs"},{path:"/docs/commands/sync/codeowners",component:p("/docs/commands/sync/codeowners","49c"),exact:!0,sidebar:"docs"},{path:"/docs/commands/sync/hooks",component:p("/docs/commands/sync/hooks","885"),exact:!0,sidebar:"docs"},{path:"/docs/commands/sync/projects",component:p("/docs/commands/sync/projects","7d5"),exact:!0,sidebar:"docs"},{path:"/docs/commands/task",component:p("/docs/commands/task","d57"),exact:!0,sidebar:"docs"},{path:"/docs/commands/teardown",component:p("/docs/commands/teardown","b70"),exact:!0,sidebar:"docs"},{path:"/docs/commands/upgrade",component:p("/docs/commands/upgrade","a78"),exact:!0,sidebar:"docs"},{path:"/docs/comparison",component:p("/docs/comparison","6c8"),exact:!0,sidebar:"docs"},{path:"/docs/concepts",component:p("/docs/concepts","04b"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/cache",component:p("/docs/concepts/cache","0e8"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/file-group",component:p("/docs/concepts/file-group","759"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/file-pattern",component:p("/docs/concepts/file-pattern","1ab"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/project",component:p("/docs/concepts/project","6bd"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/query-lang",component:p("/docs/concepts/query-lang","5d7"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/target",component:p("/docs/concepts/target","04a"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/task",component:p("/docs/concepts/task","85c"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/task-inheritance",component:p("/docs/concepts/task-inheritance","c5a"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/token",component:p("/docs/concepts/token","3e2"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/toolchain",component:p("/docs/concepts/toolchain","26e"),exact:!0,sidebar:"docs"},{path:"/docs/concepts/workspace",component:p("/docs/concepts/workspace","3e1"),exact:!0,sidebar:"docs"},{path:"/docs/config",component:p("/docs/config","c27"),exact:!0,sidebar:"docs"},{path:"/docs/config/project",component:p("/docs/config/project","7fc"),exact:!0,sidebar:"docs"},{path:"/docs/config/tasks",component:p("/docs/config/tasks","7d1"),exact:!0,sidebar:"docs"},{path:"/docs/config/template",component:p("/docs/config/template","eeb"),exact:!0,sidebar:"docs"},{path:"/docs/config/toolchain",component:p("/docs/config/toolchain","a71"),exact:!0,sidebar:"docs"},{path:"/docs/config/workspace",component:p("/docs/config/workspace","ceb"),exact:!0,sidebar:"docs"},{path:"/docs/create-project",component:p("/docs/create-project","2c7"),exact:!0,sidebar:"docs"},{path:"/docs/create-task",component:p("/docs/create-task","c85"),exact:!0,sidebar:"docs"},{path:"/docs/editors",component:p("/docs/editors","c15"),exact:!0,sidebar:"docs"},{path:"/docs/editors/vscode",component:p("/docs/editors/vscode","501"),exact:!0,sidebar:"docs"},{path:"/docs/faq",component:p("/docs/faq","fe9"),exact:!0,sidebar:"docs"},{path:"/docs/guides/ci",component:p("/docs/guides/ci","d5d"),exact:!0,sidebar:"guides"},{path:"/docs/guides/codegen",component:p("/docs/guides/codegen","527"),exact:!0,sidebar:"guides"},{path:"/docs/guides/codeowners",component:p("/docs/guides/codeowners","598"),exact:!0,sidebar:"guides"},{path:"/docs/guides/debug-task",component:p("/docs/guides/debug-task","fe5"),exact:!0,sidebar:"guides"},{path:"/docs/guides/docker",component:p("/docs/guides/docker","578"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/angular",component:p("/docs/guides/examples/angular","3ac"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/astro",component:p("/docs/guides/examples/astro","810"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/eslint",component:p("/docs/guides/examples/eslint","161"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/jest",component:p("/docs/guides/examples/jest","789"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/nest",component:p("/docs/guides/examples/nest","0d4"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/next",component:p("/docs/guides/examples/next","d2c"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/nuxt",component:p("/docs/guides/examples/nuxt","475"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/packemon",component:p("/docs/guides/examples/packemon","c08"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/prettier",component:p("/docs/guides/examples/prettier","fda"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/react",component:p("/docs/guides/examples/react","7da"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/remix",component:p("/docs/guides/examples/remix","a9b"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/solid",component:p("/docs/guides/examples/solid","00c"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/storybook",component:p("/docs/guides/examples/storybook","155"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/sveltekit",component:p("/docs/guides/examples/sveltekit","0c7"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/typescript",component:p("/docs/guides/examples/typescript","e4a"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/vite",component:p("/docs/guides/examples/vite","593"),exact:!0,sidebar:"guides"},{path:"/docs/guides/examples/vue",component:p("/docs/guides/examples/vue","5c0"),exact:!0,sidebar:"guides"},{path:"/docs/guides/javascript/deno-handbook",component:p("/docs/guides/javascript/deno-handbook","ef8"),exact:!0,sidebar:"guides"},{path:"/docs/guides/javascript/node-handbook",component:p("/docs/guides/javascript/node-handbook","f9e"),exact:!0,sidebar:"guides"},{path:"/docs/guides/javascript/typescript-eslint",component:p("/docs/guides/javascript/typescript-eslint","3a8"),exact:!0},{path:"/docs/guides/javascript/typescript-project-refs",component:p("/docs/guides/javascript/typescript-project-refs","e9d"),exact:!0,sidebar:"guides"},{path:"/docs/guides/node/examples",component:p("/docs/guides/node/examples","dd3"),exact:!0,sidebar:"guides"},{path:"/docs/guides/offline-mode",component:p("/docs/guides/offline-mode","422"),exact:!0,sidebar:"guides"},{path:"/docs/guides/open-source",component:p("/docs/guides/open-source","339"),exact:!0,sidebar:"guides"},{path:"/docs/guides/profile",component:p("/docs/guides/profile","b9d"),exact:!0,sidebar:"guides"},{path:"/docs/guides/remote-cache",component:p("/docs/guides/remote-cache","7a9"),exact:!0,sidebar:"guides"},{path:"/docs/guides/root-project",component:p("/docs/guides/root-project","272"),exact:!0,sidebar:"guides"},{path:"/docs/guides/rust/handbook",component:p("/docs/guides/rust/handbook","b00"),exact:!0,sidebar:"guides"},{path:"/docs/guides/sharing-config",component:p("/docs/guides/sharing-config","554"),exact:!0,sidebar:"guides"},{path:"/docs/guides/vcs-hooks",component:p("/docs/guides/vcs-hooks","c03"),exact:!0,sidebar:"guides"},{path:"/docs/guides/webhooks",component:p("/docs/guides/webhooks","b9d"),exact:!0,sidebar:"guides"},{path:"/docs/how-it-works",component:p("/docs/how-it-works","837"),exact:!0,sidebar:"docs"},{path:"/docs/how-it-works/action-graph",component:p("/docs/how-it-works/action-graph","f15"),exact:!0,sidebar:"docs"},{path:"/docs/how-it-works/languages",component:p("/docs/how-it-works/languages","165"),exact:!0,sidebar:"docs"},{path:"/docs/how-it-works/project-graph",component:p("/docs/how-it-works/project-graph","6b7"),exact:!0,sidebar:"docs"},{path:"/docs/install",component:p("/docs/install","7a2"),exact:!0,sidebar:"docs"},{path:"/docs/migrate-to-moon",component:p("/docs/migrate-to-moon","aa1"),exact:!0,sidebar:"docs"},{path:"/docs/proto",component:p("/docs/proto","7be"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/add-plugin",component:p("/docs/proto/commands/add-plugin","bda"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/alias",component:p("/docs/proto/commands/alias","8ad"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/bin",component:p("/docs/proto/commands/bin","dc5"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/clean",component:p("/docs/proto/commands/clean","740"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/completions",component:p("/docs/proto/commands/completions","87c"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/install",component:p("/docs/proto/commands/install","f7b"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/install-global",component:p("/docs/proto/commands/install-global","59f"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/list",component:p("/docs/proto/commands/list","50b"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/list-global",component:p("/docs/proto/commands/list-global","fb9"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/list-remote",component:p("/docs/proto/commands/list-remote","0b7"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/outdated",component:p("/docs/proto/commands/outdated","dba"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/pin",component:p("/docs/proto/commands/pin","65a"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/plugins",component:p("/docs/proto/commands/plugins","9c9"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/remove-plugin",component:p("/docs/proto/commands/remove-plugin","570"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/run",component:p("/docs/proto/commands/run","a65"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/setup",component:p("/docs/proto/commands/setup","735"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/tools",component:p("/docs/proto/commands/tools","092"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/unalias",component:p("/docs/proto/commands/unalias","734"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/uninstall",component:p("/docs/proto/commands/uninstall","bbc"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/uninstall-global",component:p("/docs/proto/commands/uninstall-global","10a"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/upgrade",component:p("/docs/proto/commands/upgrade","edc"),exact:!0,sidebar:"proto"},{path:"/docs/proto/commands/use",component:p("/docs/proto/commands/use","966"),exact:!0,sidebar:"proto"},{path:"/docs/proto/config",component:p("/docs/proto/config","2e0"),exact:!0,sidebar:"proto"},{path:"/docs/proto/detection",component:p("/docs/proto/detection","406"),exact:!0,sidebar:"proto"},{path:"/docs/proto/faq",component:p("/docs/proto/faq","fc6"),exact:!0,sidebar:"proto"},{path:"/docs/proto/install",component:p("/docs/proto/install","abd"),exact:!0,sidebar:"proto"},{path:"/docs/proto/plugins",component:p("/docs/proto/plugins","49c"),exact:!0,sidebar:"proto"},{path:"/docs/proto/toml-plugin",component:p("/docs/proto/toml-plugin","33c"),exact:!0,sidebar:"proto"},{path:"/docs/proto/tools",component:p("/docs/proto/tools","6c5"),exact:!0,sidebar:"proto"},{path:"/docs/proto/wasm-plugin",component:p("/docs/proto/wasm-plugin","4c5"),exact:!0,sidebar:"proto"},{path:"/docs/run-task",component:p("/docs/run-task","db3"),exact:!0,sidebar:"docs"},{path:"/docs/setup-toolchain",component:p("/docs/setup-toolchain","ee9"),exact:!0,sidebar:"docs"},{path:"/docs/setup-workspace",component:p("/docs/setup-workspace","34e"),exact:!0,sidebar:"docs"},{path:"/docs/terminology",component:p("/docs/terminology","0ff"),exact:!0,sidebar:"docs"}]},{path:"/",component:p("/","b14"),exact:!0},{path:"*",component:p("*")}]},53971:(e,t,n)=>{"use strict";if(n.r(t),"undefined"!=typeof document){const a=document.documentElement,o=document.querySelector("#__docusaurus");function r(){"dark"===a.dataset.theme?o.classList.add("dark"):"light"===a.dataset.theme&&o.classList.remove("dark")}document.addEventListener("DOMContentLoaded",r),window.history.pushState=new Proxy(window.history.pushState,{apply:(e,t,n)=>{r(),e.apply(t,n)}}),window.history.replaceState=new Proxy(window.history.replaceState,{apply:(e,t,n)=>{r(),e.apply(t,n)}});new MutationObserver((e=>{for(const t of e)"attributes"===t.type&&r()})).observe(a,{attributeFilter:["data-theme"],attributes:!0})}},76911:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var a=n(25773),o=n(27378),r=n(40624);function i(e){let{className:t,disabled:n,label:i,href:s,onClick:c,id:l,size:d}=e;const u=!!s,p=u?"a":"button";return o.createElement(p,(0,a.Z)({className:(0,r.Z)("border border-transparent rounded-md px-2 flex items-center justify-center text-base font-bold text-white bg-blurple-400 dark:bg-purple-600",n?"opacity-60":"hover:text-white hover:bg-blurple-500 dark:hover:bg-purple-500 cursor-pointer","lg"===d?"py-2":"py-1",t),disabled:n,id:l},u?{href:s,target:"_blank"}:{onClick:c,type:"button"}),i)}},31792:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Rn});var a=n(27378),o=n(40624);function r(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;te.length)&&(t=e.length);for(var n=0,a=new Array(t);n0;)t+="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"[62*Math.random()|0];return t}function ge(e){for(var t=[],n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function be(e){return e.classList?ge(e.classList):(e.getAttribute("class")||"").split(" ").filter((function(e){return e}))}function he(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function ve(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,": ").concat(e[n].trim(),";")}),"")}function ye(e){return e.size!==fe.size||e.x!==fe.x||e.y!==fe.y||e.rotate!==fe.rotate||e.flipX||e.flipY}function xe(){var e="fa",t=O,n=de.cssPrefix,a=de.replacementClass,o=':root, :host {\n --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Solid";\n --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Regular";\n --fa-font-light: normal 300 1em/1 "Font Awesome 6 Light";\n --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Thin";\n --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";\n --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";\n --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";\n --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";\n}\n\nsvg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {\n overflow: visible;\n box-sizing: content-box;\n}\n\n.svg-inline--fa {\n display: var(--fa-display, inline-block);\n height: 1em;\n overflow: visible;\n vertical-align: -0.125em;\n}\n.svg-inline--fa.fa-2xs {\n vertical-align: 0.1em;\n}\n.svg-inline--fa.fa-xs {\n vertical-align: 0em;\n}\n.svg-inline--fa.fa-sm {\n vertical-align: -0.0714285705em;\n}\n.svg-inline--fa.fa-lg {\n vertical-align: -0.2em;\n}\n.svg-inline--fa.fa-xl {\n vertical-align: -0.25em;\n}\n.svg-inline--fa.fa-2xl {\n vertical-align: -0.3125em;\n}\n.svg-inline--fa.fa-pull-left {\n margin-right: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-pull-right {\n margin-left: var(--fa-pull-margin, 0.3em);\n width: auto;\n}\n.svg-inline--fa.fa-li {\n width: var(--fa-li-width, 2em);\n top: 0.25em;\n}\n.svg-inline--fa.fa-fw {\n width: var(--fa-fw-width, 1.25em);\n}\n\n.fa-layers svg.svg-inline--fa {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n}\n\n.fa-layers-counter, .fa-layers-text {\n display: inline-block;\n position: absolute;\n text-align: center;\n}\n\n.fa-layers {\n display: inline-block;\n height: 1em;\n position: relative;\n text-align: center;\n vertical-align: -0.125em;\n width: 1em;\n}\n.fa-layers svg.svg-inline--fa {\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-text {\n left: 50%;\n top: 50%;\n -webkit-transform: translate(-50%, -50%);\n transform: translate(-50%, -50%);\n -webkit-transform-origin: center center;\n transform-origin: center center;\n}\n\n.fa-layers-counter {\n background-color: var(--fa-counter-background-color, #ff253a);\n border-radius: var(--fa-counter-border-radius, 1em);\n box-sizing: border-box;\n color: var(--fa-inverse, #fff);\n line-height: var(--fa-counter-line-height, 1);\n max-width: var(--fa-counter-max-width, 5em);\n min-width: var(--fa-counter-min-width, 1.5em);\n overflow: hidden;\n padding: var(--fa-counter-padding, 0.25em 0.5em);\n right: var(--fa-right, 0);\n text-overflow: ellipsis;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-counter-scale, 0.25));\n transform: scale(var(--fa-counter-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-bottom-right {\n bottom: var(--fa-bottom, 0);\n right: var(--fa-right, 0);\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom right;\n transform-origin: bottom right;\n}\n\n.fa-layers-bottom-left {\n bottom: var(--fa-bottom, 0);\n left: var(--fa-left, 0);\n right: auto;\n top: auto;\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: bottom left;\n transform-origin: bottom left;\n}\n\n.fa-layers-top-right {\n top: var(--fa-top, 0);\n right: var(--fa-right, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top right;\n transform-origin: top right;\n}\n\n.fa-layers-top-left {\n left: var(--fa-left, 0);\n right: auto;\n top: var(--fa-top, 0);\n -webkit-transform: scale(var(--fa-layers-scale, 0.25));\n transform: scale(var(--fa-layers-scale, 0.25));\n -webkit-transform-origin: top left;\n transform-origin: top left;\n}\n\n.fa-1x {\n font-size: 1em;\n}\n\n.fa-2x {\n font-size: 2em;\n}\n\n.fa-3x {\n font-size: 3em;\n}\n\n.fa-4x {\n font-size: 4em;\n}\n\n.fa-5x {\n font-size: 5em;\n}\n\n.fa-6x {\n font-size: 6em;\n}\n\n.fa-7x {\n font-size: 7em;\n}\n\n.fa-8x {\n font-size: 8em;\n}\n\n.fa-9x {\n font-size: 9em;\n}\n\n.fa-10x {\n font-size: 10em;\n}\n\n.fa-2xs {\n font-size: 0.625em;\n line-height: 0.1em;\n vertical-align: 0.225em;\n}\n\n.fa-xs {\n font-size: 0.75em;\n line-height: 0.0833333337em;\n vertical-align: 0.125em;\n}\n\n.fa-sm {\n font-size: 0.875em;\n line-height: 0.0714285718em;\n vertical-align: 0.0535714295em;\n}\n\n.fa-lg {\n font-size: 1.25em;\n line-height: 0.05em;\n vertical-align: -0.075em;\n}\n\n.fa-xl {\n font-size: 1.5em;\n line-height: 0.0416666682em;\n vertical-align: -0.125em;\n}\n\n.fa-2xl {\n font-size: 2em;\n line-height: 0.03125em;\n vertical-align: -0.1875em;\n}\n\n.fa-fw {\n text-align: center;\n width: 1.25em;\n}\n\n.fa-ul {\n list-style-type: none;\n margin-left: var(--fa-li-margin, 2.5em);\n padding-left: 0;\n}\n.fa-ul > li {\n position: relative;\n}\n\n.fa-li {\n left: calc(var(--fa-li-width, 2em) * -1);\n position: absolute;\n text-align: center;\n width: var(--fa-li-width, 2em);\n line-height: inherit;\n}\n\n.fa-border {\n border-color: var(--fa-border-color, #eee);\n border-radius: var(--fa-border-radius, 0.1em);\n border-style: var(--fa-border-style, solid);\n border-width: var(--fa-border-width, 0.08em);\n padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);\n}\n\n.fa-pull-left {\n float: left;\n margin-right: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-pull-right {\n float: right;\n margin-left: var(--fa-pull-margin, 0.3em);\n}\n\n.fa-beat {\n -webkit-animation-name: fa-beat;\n animation-name: fa-beat;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-bounce {\n -webkit-animation-name: fa-bounce;\n animation-name: fa-bounce;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));\n}\n\n.fa-fade {\n -webkit-animation-name: fa-fade;\n animation-name: fa-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-beat-fade {\n -webkit-animation-name: fa-beat-fade;\n animation-name: fa-beat-fade;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));\n}\n\n.fa-flip {\n -webkit-animation-name: fa-flip;\n animation-name: fa-flip;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, ease-in-out);\n animation-timing-function: var(--fa-animation-timing, ease-in-out);\n}\n\n.fa-shake {\n -webkit-animation-name: fa-shake;\n animation-name: fa-shake;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-delay: var(--fa-animation-delay, 0s);\n animation-delay: var(--fa-animation-delay, 0s);\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 2s);\n animation-duration: var(--fa-animation-duration, 2s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, linear);\n animation-timing-function: var(--fa-animation-timing, linear);\n}\n\n.fa-spin-reverse {\n --fa-animation-direction: reverse;\n}\n\n.fa-pulse,\n.fa-spin-pulse {\n -webkit-animation-name: fa-spin;\n animation-name: fa-spin;\n -webkit-animation-direction: var(--fa-animation-direction, normal);\n animation-direction: var(--fa-animation-direction, normal);\n -webkit-animation-duration: var(--fa-animation-duration, 1s);\n animation-duration: var(--fa-animation-duration, 1s);\n -webkit-animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n animation-iteration-count: var(--fa-animation-iteration-count, infinite);\n -webkit-animation-timing-function: var(--fa-animation-timing, steps(8));\n animation-timing-function: var(--fa-animation-timing, steps(8));\n}\n\n@media (prefers-reduced-motion: reduce) {\n .fa-beat,\n.fa-bounce,\n.fa-fade,\n.fa-beat-fade,\n.fa-flip,\n.fa-pulse,\n.fa-shake,\n.fa-spin,\n.fa-spin-pulse {\n -webkit-animation-delay: -1ms;\n animation-delay: -1ms;\n -webkit-animation-duration: 1ms;\n animation-duration: 1ms;\n -webkit-animation-iteration-count: 1;\n animation-iteration-count: 1;\n -webkit-transition-delay: 0s;\n transition-delay: 0s;\n -webkit-transition-duration: 0s;\n transition-duration: 0s;\n }\n}\n@-webkit-keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@keyframes fa-beat {\n 0%, 90% {\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 45% {\n -webkit-transform: scale(var(--fa-beat-scale, 1.25));\n transform: scale(var(--fa-beat-scale, 1.25));\n }\n}\n@-webkit-keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@keyframes fa-bounce {\n 0% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 10% {\n -webkit-transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);\n }\n 30% {\n -webkit-transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));\n }\n 50% {\n -webkit-transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);\n }\n 57% {\n -webkit-transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));\n }\n 64% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n 100% {\n -webkit-transform: scale(1, 1) translateY(0);\n transform: scale(1, 1) translateY(0);\n }\n}\n@-webkit-keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@keyframes fa-fade {\n 50% {\n opacity: var(--fa-fade-opacity, 0.4);\n }\n}\n@-webkit-keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@keyframes fa-beat-fade {\n 0%, 100% {\n opacity: var(--fa-beat-fade-opacity, 0.4);\n -webkit-transform: scale(1);\n transform: scale(1);\n }\n 50% {\n opacity: 1;\n -webkit-transform: scale(var(--fa-beat-fade-scale, 1.125));\n transform: scale(var(--fa-beat-fade-scale, 1.125));\n }\n}\n@-webkit-keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@keyframes fa-flip {\n 50% {\n -webkit-transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));\n }\n}\n@-webkit-keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@keyframes fa-shake {\n 0% {\n -webkit-transform: rotate(-15deg);\n transform: rotate(-15deg);\n }\n 4% {\n -webkit-transform: rotate(15deg);\n transform: rotate(15deg);\n }\n 8%, 24% {\n -webkit-transform: rotate(-18deg);\n transform: rotate(-18deg);\n }\n 12%, 28% {\n -webkit-transform: rotate(18deg);\n transform: rotate(18deg);\n }\n 16% {\n -webkit-transform: rotate(-22deg);\n transform: rotate(-22deg);\n }\n 20% {\n -webkit-transform: rotate(22deg);\n transform: rotate(22deg);\n }\n 32% {\n -webkit-transform: rotate(-12deg);\n transform: rotate(-12deg);\n }\n 36% {\n -webkit-transform: rotate(12deg);\n transform: rotate(12deg);\n }\n 40%, 100% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n}\n@-webkit-keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n@keyframes fa-spin {\n 0% {\n -webkit-transform: rotate(0deg);\n transform: rotate(0deg);\n }\n 100% {\n -webkit-transform: rotate(360deg);\n transform: rotate(360deg);\n }\n}\n.fa-rotate-90 {\n -webkit-transform: rotate(90deg);\n transform: rotate(90deg);\n}\n\n.fa-rotate-180 {\n -webkit-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.fa-rotate-270 {\n -webkit-transform: rotate(270deg);\n transform: rotate(270deg);\n}\n\n.fa-flip-horizontal {\n -webkit-transform: scale(-1, 1);\n transform: scale(-1, 1);\n}\n\n.fa-flip-vertical {\n -webkit-transform: scale(1, -1);\n transform: scale(1, -1);\n}\n\n.fa-flip-both,\n.fa-flip-horizontal.fa-flip-vertical {\n -webkit-transform: scale(-1, -1);\n transform: scale(-1, -1);\n}\n\n.fa-rotate-by {\n -webkit-transform: rotate(var(--fa-rotate-angle, none));\n transform: rotate(var(--fa-rotate-angle, none));\n}\n\n.fa-stack {\n display: inline-block;\n vertical-align: middle;\n height: 2em;\n position: relative;\n width: 2.5em;\n}\n\n.fa-stack-1x,\n.fa-stack-2x {\n bottom: 0;\n left: 0;\n margin: auto;\n position: absolute;\n right: 0;\n top: 0;\n z-index: var(--fa-stack-z-index, auto);\n}\n\n.svg-inline--fa.fa-stack-1x {\n height: 1em;\n width: 1.25em;\n}\n.svg-inline--fa.fa-stack-2x {\n height: 2em;\n width: 2.5em;\n}\n\n.fa-inverse {\n color: var(--fa-inverse, #fff);\n}\n\n.sr-only,\n.fa-sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.sr-only-focusable:not(:focus),\n.fa-sr-only-focusable:not(:focus) {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n white-space: nowrap;\n border-width: 0;\n}\n\n.svg-inline--fa .fa-primary {\n fill: var(--fa-primary-color, currentColor);\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa .fa-secondary {\n fill: var(--fa-secondary-color, currentColor);\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-primary {\n opacity: var(--fa-secondary-opacity, 0.4);\n}\n\n.svg-inline--fa.fa-swap-opacity .fa-secondary {\n opacity: var(--fa-primary-opacity, 1);\n}\n\n.svg-inline--fa mask .fa-primary,\n.svg-inline--fa mask .fa-secondary {\n fill: black;\n}\n\n.fad.fa-inverse,\n.fa-duotone.fa-inverse {\n color: var(--fa-inverse, #fff);\n}';if(n!==e||a!==t){var r=new RegExp("\\.".concat(e,"\\-"),"g"),i=new RegExp("\\--".concat(e,"\\-"),"g"),s=new RegExp("\\.".concat(t),"g");o=o.replace(r,".".concat(n,"-")).replace(i,"--".concat(n,"-")).replace(s,".".concat(a))}return o}var _e=!1;function ke(){de.autoAddCss&&!_e&&(!function(e){if(e&&N){var t=T.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;for(var n=T.head.childNodes,a=null,o=n.length-1;o>-1;o--){var r=n[o],i=(r.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(i)>-1&&(a=r)}T.head.insertBefore(t,a)}}(xe()),_e=!0)}var we={mixout:function(){return{dom:{css:xe,insertCss:ke}}},hooks:function(){return{beforeDOMElementCreation:function(){ke()},beforeI2svg:function(){ke()}}}},Ee=C||{};Ee.___FONT_AWESOME___||(Ee.___FONT_AWESOME___={}),Ee.___FONT_AWESOME___.styles||(Ee.___FONT_AWESOME___.styles={}),Ee.___FONT_AWESOME___.hooks||(Ee.___FONT_AWESOME___.hooks={}),Ee.___FONT_AWESOME___.shims||(Ee.___FONT_AWESOME___.shims=[]);var Se=Ee.___FONT_AWESOME___,Ce=[],Te=!1;function Pe(e){N&&(Te?setTimeout(e,0):Ce.push(e))}function Ae(e){var t=e.tag,n=e.attributes,a=void 0===n?{}:n,o=e.children,r=void 0===o?[]:o;return"string"==typeof e?he(e):"<".concat(t," ").concat(function(e){return Object.keys(e||{}).reduce((function(t,n){return t+"".concat(n,'="').concat(he(e[n]),'" ')}),"").trim()}(a),">").concat(r.map(Ae).join(""),"")}function Ne(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}N&&((Te=(T.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(T.readyState))||T.addEventListener("DOMContentLoaded",(function e(){T.removeEventListener("DOMContentLoaded",e),Te=1,Ce.map((function(e){return e()}))})));var je=function(e,t,n,a){var o,r,i,s=Object.keys(e),c=s.length,l=void 0!==a?function(e,t){return function(n,a,o,r){return e.call(t,n,a,o,r)}}(t,a):t;for(void 0===n?(o=1,i=e[s[0]]):(o=0,i=n);o=55296&&o<=56319&&n2&&void 0!==arguments[2]?arguments[2]:{},a=n.skipHooks,o=void 0!==a&&a,r=Le(t);"function"!=typeof Se.hooks.addPack||o?Se.styles[e]=i(i({},Se.styles[e]||{}),r):Se.hooks.addPack(e,Le(t)),"fas"===e&&Me("fa",t)}var Ie,Re,De,ze=Se.styles,Fe=Se.shims,Be=(l(Ie={},B,Object.values(q.classic)),l(Ie,$,Object.values(q.sharp)),Ie),$e=null,Ue={},He={},Ve={},Ze={},qe={},We=(l(Re={},B,Object.keys(V.classic)),l(Re,$,Object.keys(V.sharp)),Re);function Ge(e,t){var n,a=t.split("-"),o=a[0],r=a.slice(1).join("-");return o!==e||""===r||(n=r,~ie.indexOf(n))?null:r}var Ye,Ke=function(){var e=function(e){return je(ze,(function(t,n,a){return t[a]=je(n,e,{}),t}),{})};Ue=e((function(e,t,n){(t[3]&&(e[t[3]]=n),t[2])&&t[2].filter((function(e){return"number"==typeof e})).forEach((function(t){e[t.toString(16)]=n}));return e})),He=e((function(e,t,n){(e[n]=n,t[2])&&t[2].filter((function(e){return"string"==typeof e})).forEach((function(t){e[t]=n}));return e})),qe=e((function(e,t,n){var a=t[2];return e[n]=n,a.forEach((function(t){e[t]=n})),e}));var t="far"in ze||de.autoFetchSvg,n=je(Fe,(function(e,n){var a=n[0],o=n[1],r=n[2];return"far"!==o||t||(o="fas"),"string"==typeof a&&(e.names[a]={prefix:o,iconName:r}),"number"==typeof a&&(e.unicodes[a.toString(16)]={prefix:o,iconName:r}),e}),{names:{},unicodes:{}});Ve=n.names,Ze=n.unicodes,$e=tt(de.styleDefault,{family:de.familyDefault})};function Qe(e,t){return(Ue[e]||{})[t]}function Xe(e,t){return(qe[e]||{})[t]}function Je(e){return Ve[e]||{prefix:null,iconName:null}}function et(){return $e}Ye=function(e){$e=tt(e.styleDefault,{family:de.familyDefault})},ue.push(Ye),Ke();function tt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.family,a=void 0===n?B:n,o=V[a][e],r=Z[a][e]||Z[a][o],i=e in Se.styles?e:null;return r||i||null}var nt=(l(De={},B,Object.keys(q.classic)),l(De,$,Object.keys(q.sharp)),De);function at(e){var t,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=n.skipLookups,o=void 0!==a&&a,r=(l(t={},B,"".concat(de.cssPrefix,"-").concat(B)),l(t,$,"".concat(de.cssPrefix,"-").concat($)),t),i=null,s=B;(e.includes(r.classic)||e.some((function(e){return nt.classic.includes(e)})))&&(s=B),(e.includes(r.sharp)||e.some((function(e){return nt.sharp.includes(e)})))&&(s=$);var c=e.reduce((function(e,t){var n=Ge(de.cssPrefix,t);if(ze[t]?(t=Be[s].includes(t)?W[s][t]:t,i=t,e.prefix=t):We[s].indexOf(t)>-1?(i=t,e.prefix=tt(t,{family:s})):n?e.iconName=n:t!==de.replacementClass&&t!==r.classic&&t!==r.sharp&&e.rest.push(t),!o&&e.prefix&&e.iconName){var a="fa"===i?Je(e.iconName):{},c=Xe(e.prefix,e.iconName);a.prefix&&(i=null),e.iconName=a.iconName||c||e.iconName,e.prefix=a.prefix||e.prefix,"far"!==e.prefix||ze.far||!ze.fas||de.autoFetchSvg||(e.prefix="fas")}return e}),{prefix:null,iconName:null,rest:[]});return(e.includes("fa-brands")||e.includes("fab"))&&(c.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(c.prefix="fad"),c.prefix||s!==$||!ze.fass&&!de.autoFetchSvg||(c.prefix="fass",c.iconName=Xe(c.prefix,c.iconName)||c.iconName),"fa"!==c.prefix&&"fa"!==i||(c.prefix=et()||"fas"),c}var ot=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.definitions={}}var t,n,a;return t=e,n=[{key:"add",value:function(){for(var e=this,t=arguments.length,n=new Array(t),a=0;a0&&s.forEach((function(t){"string"==typeof t&&(e[o][t]=i)})),e[o][r]=i})),e}}],n&&c(t.prototype,n),a&&c(t,a),Object.defineProperty(t,"prototype",{writable:!1}),e}(),rt=[],it={},st={},ct=Object.keys(st);function lt(e,t){for(var n=arguments.length,a=new Array(n>2?n-2:0),o=2;o1?t-1:0),a=1;a0&&void 0!==arguments[0]?arguments[0]:{};return N?(dt("beforeI2svg",e),ut("pseudoElements2svg",e),ut("i2svg",e)):Promise.reject("Operation requires a DOM of some kind.")},watch:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot;!1===de.autoReplaceSvg&&(de.autoReplaceSvg=!0),de.observeMutations=!0,Pe((function(){bt({autoReplaceSvgRoot:t}),dt("watch",e)}))}},gt={noAuto:function(){de.autoReplaceSvg=!1,de.observeMutations=!1,dt("noAuto")},config:de,dom:mt,parse:{icon:function(e){if(null===e)return null;if("object"===s(e)&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Xe(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&2===e.length){var t=0===e[1].indexOf("fa-")?e[1].slice(3):e[1],n=tt(e[0]);return{prefix:n,iconName:Xe(n,t)||t}}if("string"==typeof e&&(e.indexOf("".concat(de.cssPrefix,"-"))>-1||e.match(G))){var a=at(e.split(" "),{skipLookups:!0});return{prefix:a.prefix||et(),iconName:Xe(a.prefix,a.iconName)||a.iconName}}if("string"==typeof e){var o=et();return{prefix:o,iconName:Xe(o,e)||e}}}},library:ft,findIconDefinition:pt,toHtml:Ae},bt=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.autoReplaceSvgRoot,n=void 0===t?T:t;(Object.keys(Se.styles).length>0||de.autoFetchSvg)&&N&&de.autoReplaceSvg&>.dom.i2svg({node:n})};function ht(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map((function(e){return Ae(e)}))}}),Object.defineProperty(e,"node",{get:function(){if(N){var t=T.createElement("div");return t.innerHTML=e.html,t.children}}}),e}function vt(e){var t=e.icons,n=t.main,a=t.mask,o=e.prefix,r=e.iconName,s=e.transform,c=e.symbol,l=e.title,d=e.maskId,u=e.titleId,p=e.extra,f=e.watchable,m=void 0!==f&&f,g=a.found?a:n,b=g.width,h=g.height,v="fak"===o,y=[de.replacementClass,r?"".concat(de.cssPrefix,"-").concat(r):""].filter((function(e){return-1===p.classes.indexOf(e)})).filter((function(e){return""!==e||!!e})).concat(p.classes).join(" "),x={children:[],attributes:i(i({},p.attributes),{},{"data-prefix":o,"data-icon":r,class:y,role:p.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(b," ").concat(h)})},_=v&&!~p.classes.indexOf("fa-fw")?{width:"".concat(b/h*16*.0625,"em")}:{};m&&(x.attributes[L]=""),l&&(x.children.push({tag:"title",attributes:{id:x.attributes["aria-labelledby"]||"title-".concat(u||me())},children:[l]}),delete x.attributes.title);var k=i(i({},x),{},{prefix:o,iconName:r,main:n,mask:a,maskId:d,transform:s,symbol:c,styles:i(i({},_),p.styles)}),w=a.found&&n.found?ut("generateAbstractMask",k)||{children:[],attributes:{}}:ut("generateAbstractIcon",k)||{children:[],attributes:{}},E=w.children,S=w.attributes;return k.children=E,k.attributes=S,c?function(e){var t=e.prefix,n=e.iconName,a=e.children,o=e.attributes,r=e.symbol,s=!0===r?"".concat(t,"-").concat(de.cssPrefix,"-").concat(n):r;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:i(i({},o),{},{id:s}),children:a}]}]}(k):function(e){var t=e.children,n=e.main,a=e.mask,o=e.attributes,r=e.styles,s=e.transform;if(ye(s)&&n.found&&!a.found){var c={x:n.width/n.height/2,y:.5};o.style=ve(i(i({},r),{},{"transform-origin":"".concat(c.x+s.x/16,"em ").concat(c.y+s.y/16,"em")}))}return[{tag:"svg",attributes:o,children:t}]}(k)}function yt(e){var t=e.content,n=e.width,a=e.height,o=e.transform,r=e.title,s=e.extra,c=e.watchable,l=void 0!==c&&c,d=i(i(i({},s.attributes),r?{title:r}:{}),{},{class:s.classes.join(" ")});l&&(d[L]="");var u=i({},s.styles);ye(o)&&(u.transform=function(e){var t=e.transform,n=e.width,a=void 0===n?16:n,o=e.height,r=void 0===o?16:o,i=e.startCentered,s=void 0!==i&&i,c="";return c+=s&&j?"translate(".concat(t.x/pe-a/2,"em, ").concat(t.y/pe-r/2,"em) "):s?"translate(calc(-50% + ".concat(t.x/pe,"em), calc(-50% + ").concat(t.y/pe,"em)) "):"translate(".concat(t.x/pe,"em, ").concat(t.y/pe,"em) "),c+="scale(".concat(t.size/pe*(t.flipX?-1:1),", ").concat(t.size/pe*(t.flipY?-1:1),") "),c+"rotate(".concat(t.rotate,"deg) ")}({transform:o,startCentered:!0,width:n,height:a}),u["-webkit-transform"]=u.transform);var p=ve(u);p.length>0&&(d.style=p);var f=[];return f.push({tag:"span",attributes:d,children:[t]}),r&&f.push({tag:"span",attributes:{class:"sr-only"},children:[r]}),f}function xt(e){var t=e.content,n=e.title,a=e.extra,o=i(i(i({},a.attributes),n?{title:n}:{}),{},{class:a.classes.join(" ")}),r=ve(a.styles);r.length>0&&(o.style=r);var s=[];return s.push({tag:"span",attributes:o,children:[t]}),n&&s.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),s}var _t=Se.styles;function kt(e){var t=e[0],n=e[1],a=d(e.slice(4),1)[0];return{found:!0,width:t,height:n,icon:Array.isArray(a)?{tag:"g",attributes:{class:"".concat(de.cssPrefix,"-").concat(te)},children:[{tag:"path",attributes:{class:"".concat(de.cssPrefix,"-").concat(oe),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(de.cssPrefix,"-").concat(ae),fill:"currentColor",d:a[1]}}]}:{tag:"path",attributes:{fill:"currentColor",d:a}}}}var wt={found:!1,width:512,height:512};function Et(e,t){var n=t;return"fa"===t&&null!==de.styleDefault&&(t=et()),new Promise((function(a,o){ut("missingIconAbstract");if("fa"===n){var r=Je(e)||{};e=r.iconName||e,t=r.prefix||t}if(e&&t&&_t[t]&&_t[t][e])return a(kt(_t[t][e]));!function(e,t){F||de.showMissingIcons||!e||console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}(e,t),a(i(i({},wt),{},{icon:de.showMissingIcons&&e&&ut("missingIconAbstract")||{}}))}))}var St=function(){},Ct=de.measurePerformance&&A&&A.mark&&A.measure?A:{mark:St,measure:St},Tt='FA "6.4.2"',Pt=function(e){Ct.mark("".concat(Tt," ").concat(e," ends")),Ct.measure("".concat(Tt," ").concat(e),"".concat(Tt," ").concat(e," begins"),"".concat(Tt," ").concat(e," ends"))},At=function(e){return Ct.mark("".concat(Tt," ").concat(e," begins")),function(){return Pt(e)}},Nt=function(){};function jt(e){return"string"==typeof(e.getAttribute?e.getAttribute(L):null)}function Ot(e){return T.createElementNS("http://www.w3.org/2000/svg",e)}function Lt(e){return T.createElement(e)}function Mt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.ceFn,a=void 0===n?"svg"===e.tag?Ot:Lt:n;if("string"==typeof e)return T.createTextNode(e);var o=a(e.tag);Object.keys(e.attributes||[]).forEach((function(t){o.setAttribute(t,e.attributes[t])}));var r=e.children||[];return r.forEach((function(e){o.appendChild(Mt(e,{ceFn:a}))})),o}var It={replace:function(e){var t=e[0];if(t.parentNode)if(e[1].forEach((function(e){t.parentNode.insertBefore(Mt(e),t)})),null===t.getAttribute(L)&&de.keepOriginalSource){var n=T.createComment(function(e){var t=" ".concat(e.outerHTML," ");return"".concat(t,"Font Awesome fontawesome.com ")}(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){var t=e[0],n=e[1];if(~be(t).indexOf(de.replacementClass))return It.replace(e);var a=new RegExp("".concat(de.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){var o=n[0].attributes.class.split(" ").reduce((function(e,t){return t===de.replacementClass||t.match(a)?e.toSvg.push(t):e.toNode.push(t),e}),{toNode:[],toSvg:[]});n[0].attributes.class=o.toSvg.join(" "),0===o.toNode.length?t.removeAttribute("class"):t.setAttribute("class",o.toNode.join(" "))}var r=n.map((function(e){return Ae(e)})).join("\n");t.setAttribute(L,""),t.innerHTML=r}};function Rt(e){e()}function Dt(e,t){var n="function"==typeof t?t:Nt;if(0===e.length)n();else{var a=Rt;"async"===de.mutateApproach&&(a=C.requestAnimationFrame||Rt),a((function(){var t=!0===de.autoReplaceSvg?It.replace:It[de.autoReplaceSvg]||It.replace,a=At("mutate");e.map(t),a(),n()}))}}var zt=!1;function Ft(){zt=!0}function Bt(){zt=!1}var $t=null;function Ut(e){if(P&&de.observeMutations){var t=e.treeCallback,n=void 0===t?Nt:t,a=e.nodeCallback,o=void 0===a?Nt:a,r=e.pseudoElementsCallback,i=void 0===r?Nt:r,s=e.observeMutationsRoot,c=void 0===s?T:s;$t=new P((function(e){if(!zt){var t=et();ge(e).forEach((function(e){if("childList"===e.type&&e.addedNodes.length>0&&!jt(e.addedNodes[0])&&(de.searchPseudoElements&&i(e.target),n(e.target)),"attributes"===e.type&&e.target.parentNode&&de.searchPseudoElements&&i(e.target.parentNode),"attributes"===e.type&&jt(e.target)&&~ee.indexOf(e.attributeName))if("class"===e.attributeName&&function(e){var t=e.getAttribute?e.getAttribute(I):null,n=e.getAttribute?e.getAttribute(R):null;return t&&n}(e.target)){var a=at(be(e.target)),r=a.prefix,s=a.iconName;e.target.setAttribute(I,r||t),s&&e.target.setAttribute(R,s)}else(c=e.target)&&c.classList&&c.classList.contains&&c.classList.contains(de.replacementClass)&&o(e.target);var c}))}})),N&&$t.observe(c,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}}function Ht(e){var t=e.getAttribute("style"),n=[];return t&&(n=t.split(";").reduce((function(e,t){var n=t.split(":"),a=n[0],o=n.slice(1);return a&&o.length>0&&(e[a]=o.join(":").trim()),e}),{})),n}function Vt(e){var t,n,a=e.getAttribute("data-prefix"),o=e.getAttribute("data-icon"),r=void 0!==e.innerText?e.innerText.trim():"",i=at(be(e));return i.prefix||(i.prefix=et()),a&&o&&(i.prefix=a,i.iconName=o),i.iconName&&i.prefix||(i.prefix&&r.length>0&&(i.iconName=(t=i.prefix,n=e.innerText,(He[t]||{})[n]||Qe(i.prefix,Oe(e.innerText)))),!i.iconName&&de.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(i.iconName=e.firstChild.data)),i}function Zt(e){var t=ge(e.attributes).reduce((function(e,t){return"class"!==e.name&&"style"!==e.name&&(e[t.name]=t.value),e}),{}),n=e.getAttribute("title"),a=e.getAttribute("data-fa-title-id");return de.autoA11y&&(n?t["aria-labelledby"]="".concat(de.replacementClass,"-title-").concat(a||me()):(t["aria-hidden"]="true",t.focusable="false")),t}function qt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{styleParser:!0},n=Vt(e),a=n.iconName,o=n.prefix,r=n.rest,s=Zt(e),c=lt("parseNodeAttributes",{},e),l=t.styleParser?Ht(e):[];return i({iconName:a,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:o,transform:fe,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:r,styles:l,attributes:s}},c)}var Wt=Se.styles;function Gt(e){var t="nest"===de.autoReplaceSvg?qt(e,{styleParser:!1}):qt(e);return~t.extra.classes.indexOf(Y)?ut("generateLayersText",e,t):ut("generateSvgReplacementMutation",e,t)}var Yt=new Set;function Kt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!N)return Promise.resolve();var n=T.documentElement.classList,a=function(e){return n.add("".concat(D,"-").concat(e))},o=function(e){return n.remove("".concat(D,"-").concat(e))},r=de.autoFetchSvg?Yt:U.map((function(e){return"fa-".concat(e)})).concat(Object.keys(Wt));r.includes("fa")||r.push("fa");var i=[".".concat(Y,":not([").concat(L,"])")].concat(r.map((function(e){return".".concat(e,":not([").concat(L,"])")}))).join(", ");if(0===i.length)return Promise.resolve();var s=[];try{s=ge(e.querySelectorAll(i))}catch(Dn){}if(!(s.length>0))return Promise.resolve();a("pending"),o("complete");var c=At("onTree"),l=s.reduce((function(e,t){try{var n=Gt(t);n&&e.push(n)}catch(Dn){F||"MissingIcon"===Dn.name&&console.error(Dn)}return e}),[]);return new Promise((function(e,n){Promise.all(l).then((function(n){Dt(n,(function(){a("active"),a("complete"),o("pending"),"function"==typeof t&&t(),c(),e()}))})).catch((function(e){c(),n(e)}))}))}function Qt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;Gt(e).then((function(e){e&&Dt([e],t)}))}U.map((function(e){Yt.add("fa-".concat(e))})),Object.keys(V.classic).map(Yt.add.bind(Yt)),Object.keys(V.sharp).map(Yt.add.bind(Yt)),Yt=u(Yt);var Xt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,a=void 0===n?fe:n,o=t.symbol,r=void 0!==o&&o,s=t.mask,c=void 0===s?null:s,l=t.maskId,d=void 0===l?null:l,u=t.title,p=void 0===u?null:u,f=t.titleId,m=void 0===f?null:f,g=t.classes,b=void 0===g?[]:g,h=t.attributes,v=void 0===h?{}:h,y=t.styles,x=void 0===y?{}:y;if(e){var _=e.prefix,k=e.iconName,w=e.icon;return ht(i({type:"icon"},e),(function(){return dt("beforeDOMElementCreation",{iconDefinition:e,params:t}),de.autoA11y&&(p?v["aria-labelledby"]="".concat(de.replacementClass,"-title-").concat(m||me()):(v["aria-hidden"]="true",v.focusable="false")),vt({icons:{main:kt(w),mask:c?kt(c.icon):{found:!1,width:null,height:null,icon:{}}},prefix:_,iconName:k,transform:i(i({},fe),a),symbol:r,title:p,maskId:d,titleId:m,extra:{attributes:v,styles:x,classes:b}})}))}},Jt={mixout:function(){return{icon:(e=Xt,function(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},a=(t||{}).icon?t:pt(t||{}),o=n.mask;return o&&(o=(o||{}).icon?o:pt(o||{})),e(a,i(i({},n),{},{mask:o}))})};var e},hooks:function(){return{mutationObserverCallbacks:function(e){return e.treeCallback=Kt,e.nodeCallback=Qt,e}}},provides:function(e){e.i2svg=function(e){var t=e.node,n=void 0===t?T:t,a=e.callback;return Kt(n,void 0===a?function(){}:a)},e.generateSvgReplacementMutation=function(e,t){var n=t.iconName,a=t.title,o=t.titleId,r=t.prefix,i=t.transform,s=t.symbol,c=t.mask,l=t.maskId,u=t.extra;return new Promise((function(t,p){Promise.all([Et(n,r),c.iconName?Et(c.iconName,c.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then((function(c){var p=d(c,2),f=p[0],m=p[1];t([e,vt({icons:{main:f,mask:m},prefix:r,iconName:n,transform:i,symbol:s,maskId:l,title:a,titleId:o,extra:u,watchable:!0})])})).catch(p)}))},e.generateAbstractIcon=function(e){var t,n=e.children,a=e.attributes,o=e.main,r=e.transform,i=ve(e.styles);return i.length>0&&(a.style=i),ye(r)&&(t=ut("generateAbstractTransformGrouping",{main:o,transform:r,containerWidth:o.width,iconWidth:o.width})),n.push(t||o.icon),{children:n,attributes:a}}}},en={mixout:function(){return{layer:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.classes,a=void 0===n?[]:n;return ht({type:"layer"},(function(){dt("beforeDOMElementCreation",{assembler:e,params:t});var n=[];return e((function(e){Array.isArray(e)?e.map((function(e){n=n.concat(e.abstract)})):n=n.concat(e.abstract)})),[{tag:"span",attributes:{class:["".concat(de.cssPrefix,"-layers")].concat(u(a)).join(" ")},children:n}]}))}}}},tn={mixout:function(){return{counter:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.title,a=void 0===n?null:n,o=t.classes,r=void 0===o?[]:o,i=t.attributes,s=void 0===i?{}:i,c=t.styles,l=void 0===c?{}:c;return ht({type:"counter",content:e},(function(){return dt("beforeDOMElementCreation",{content:e,params:t}),xt({content:e.toString(),title:a,extra:{attributes:s,styles:l,classes:["".concat(de.cssPrefix,"-layers-counter")].concat(u(r))}})}))}}}},nn={mixout:function(){return{text:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.transform,a=void 0===n?fe:n,o=t.title,r=void 0===o?null:o,s=t.classes,c=void 0===s?[]:s,l=t.attributes,d=void 0===l?{}:l,p=t.styles,f=void 0===p?{}:p;return ht({type:"text",content:e},(function(){return dt("beforeDOMElementCreation",{content:e,params:t}),yt({content:e,transform:i(i({},fe),a),title:r,extra:{attributes:d,styles:f,classes:["".concat(de.cssPrefix,"-layers-text")].concat(u(c))}})}))}}},provides:function(e){e.generateLayersText=function(e,t){var n=t.title,a=t.transform,o=t.extra,r=null,i=null;if(j){var s=parseInt(getComputedStyle(e).fontSize,10),c=e.getBoundingClientRect();r=c.width/s,i=c.height/s}return de.autoA11y&&!n&&(o.attributes["aria-hidden"]="true"),Promise.resolve([e,yt({content:e.innerHTML,width:r,height:i,transform:a,title:n,extra:o,watchable:!0})])}}},an=new RegExp('"',"ug"),on=[1105920,1112319];function rn(e,t){var n="".concat("data-fa-pseudo-element-pending").concat(t.replace(":","-"));return new Promise((function(a,o){if(null!==e.getAttribute(n))return a();var r,s,c,l=ge(e.children).filter((function(e){return e.getAttribute(M)===t}))[0],d=C.getComputedStyle(e,t),u=d.getPropertyValue("font-family").match(K),p=d.getPropertyValue("font-weight"),f=d.getPropertyValue("content");if(l&&!u)return e.removeChild(l),a();if(u&&"none"!==f&&""!==f){var m=d.getPropertyValue("content"),g=~["Sharp"].indexOf(u[2])?$:B,b=~["Solid","Regular","Light","Thin","Duotone","Brands","Kit"].indexOf(u[2])?Z[g][u[2].toLowerCase()]:Q[g][p],h=function(e){var t,n,a,o,r,i=e.replace(an,""),s=(n=0,o=(t=i).length,(r=t.charCodeAt(n))>=55296&&r<=56319&&o>n+1&&(a=t.charCodeAt(n+1))>=56320&&a<=57343?1024*(r-55296)+a-56320+65536:r),c=s>=on[0]&&s<=on[1],l=2===i.length&&i[0]===i[1];return{value:Oe(l?i[0]:i),isSecondary:c||l}}(m),v=h.value,y=h.isSecondary,x=u[0].startsWith("FontAwesome"),_=Qe(b,v),k=_;if(x){var w=(s=Ze[r=v],c=Qe("fas",r),s||(c?{prefix:"fas",iconName:c}:null)||{prefix:null,iconName:null});w.iconName&&w.prefix&&(_=w.iconName,b=w.prefix)}if(!_||y||l&&l.getAttribute(I)===b&&l.getAttribute(R)===k)a();else{e.setAttribute(n,k),l&&e.removeChild(l);var E={iconName:null,title:null,titleId:null,prefix:null,transform:fe,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}},S=E.extra;S.attributes[M]=t,Et(_,b).then((function(o){var r=vt(i(i({},E),{},{icons:{main:o,mask:{prefix:null,iconName:null,rest:[]}},prefix:b,iconName:k,extra:S,watchable:!0})),s=T.createElementNS("http://www.w3.org/2000/svg","svg");"::before"===t?e.insertBefore(s,e.firstChild):e.appendChild(s),s.outerHTML=r.map((function(e){return Ae(e)})).join("\n"),e.removeAttribute(n),a()})).catch(o)}}else a()}))}function sn(e){return Promise.all([rn(e,"::before"),rn(e,"::after")])}function cn(e){return!(e.parentNode===document.head||~z.indexOf(e.tagName.toUpperCase())||e.getAttribute(M)||e.parentNode&&"svg"===e.parentNode.tagName)}function ln(e){if(N)return new Promise((function(t,n){var a=ge(e.querySelectorAll("*")).filter(cn).map(sn),o=At("searchPseudoElements");Ft(),Promise.all(a).then((function(){o(),Bt(),t()})).catch((function(){o(),Bt(),n()}))}))}var dn=!1,un=function(e){return e.toLowerCase().split(" ").reduce((function(e,t){var n=t.toLowerCase().split("-"),a=n[0],o=n.slice(1).join("-");if(a&&"h"===o)return e.flipX=!0,e;if(a&&"v"===o)return e.flipY=!0,e;if(o=parseFloat(o),isNaN(o))return e;switch(a){case"grow":e.size=e.size+o;break;case"shrink":e.size=e.size-o;break;case"left":e.x=e.x-o;break;case"right":e.x=e.x+o;break;case"up":e.y=e.y-o;break;case"down":e.y=e.y+o;break;case"rotate":e.rotate=e.rotate+o}return e}),{size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0})},pn={mixout:function(){return{parse:{transform:function(e){return un(e)}}}},hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-transform");return n&&(e.transform=un(n)),e}}},provides:function(e){e.generateAbstractTransformGrouping=function(e){var t=e.main,n=e.transform,a=e.containerWidth,o=e.iconWidth,r={transform:"translate(".concat(a/2," 256)")},s="translate(".concat(32*n.x,", ").concat(32*n.y,") "),c="scale(".concat(n.size/16*(n.flipX?-1:1),", ").concat(n.size/16*(n.flipY?-1:1),") "),l="rotate(".concat(n.rotate," 0 0)"),d={outer:r,inner:{transform:"".concat(s," ").concat(c," ").concat(l)},path:{transform:"translate(".concat(o/2*-1," -256)")}};return{tag:"g",attributes:i({},d.outer),children:[{tag:"g",attributes:i({},d.inner),children:[{tag:t.icon.tag,children:t.icon.children,attributes:i(i({},t.icon.attributes),d.path)}]}]}}}},fn={x:0,y:0,width:"100%",height:"100%"};function mn(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}var gn={hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-mask"),a=n?at(n.split(" ").map((function(e){return e.trim()}))):{prefix:null,iconName:null,rest:[]};return a.prefix||(a.prefix=et()),e.mask=a,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides:function(e){e.generateAbstractMask=function(e){var t,n=e.children,a=e.attributes,o=e.main,r=e.mask,s=e.maskId,c=e.transform,l=o.width,d=o.icon,u=r.width,p=r.icon,f=function(e){var t=e.transform,n=e.containerWidth,a=e.iconWidth,o={transform:"translate(".concat(n/2," 256)")},r="translate(".concat(32*t.x,", ").concat(32*t.y,") "),i="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),s="rotate(".concat(t.rotate," 0 0)");return{outer:o,inner:{transform:"".concat(r," ").concat(i," ").concat(s)},path:{transform:"translate(".concat(a/2*-1," -256)")}}}({transform:c,containerWidth:u,iconWidth:l}),m={tag:"rect",attributes:i(i({},fn),{},{fill:"white"})},g=d.children?{children:d.children.map(mn)}:{},b={tag:"g",attributes:i({},f.inner),children:[mn(i({tag:d.tag,attributes:i(i({},d.attributes),f.path)},g))]},h={tag:"g",attributes:i({},f.outer),children:[b]},v="mask-".concat(s||me()),y="clip-".concat(s||me()),x={tag:"mask",attributes:i(i({},fn),{},{id:v,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"}),children:[m,h]},_={tag:"defs",children:[{tag:"clipPath",attributes:{id:y},children:(t=p,"g"===t.tag?t.children:[t])},x]};return n.push(_,{tag:"rect",attributes:i({fill:"currentColor","clip-path":"url(#".concat(y,")"),mask:"url(#".concat(v,")")},fn)}),{children:n,attributes:a}}}},bn={provides:function(e){var t=!1;C.matchMedia&&(t=C.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){var e=[],n={fill:"currentColor"},a={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};e.push({tag:"path",attributes:i(i({},n),{},{d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"})});var o=i(i({},a),{},{attributeName:"opacity"}),r={tag:"circle",attributes:i(i({},n),{},{cx:"256",cy:"364",r:"28"}),children:[]};return t||r.children.push({tag:"animate",attributes:i(i({},a),{},{attributeName:"r",values:"28;14;28;28;14;28;"})},{tag:"animate",attributes:i(i({},o),{},{values:"1;0;1;1;0;1;"})}),e.push(r),e.push({tag:"path",attributes:i(i({},n),{},{opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"}),children:t?[]:[{tag:"animate",attributes:i(i({},o),{},{values:"1;0;0;0;0;1;"})}]}),t||e.push({tag:"path",attributes:i(i({},n),{},{opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"}),children:[{tag:"animate",attributes:i(i({},o),{},{values:"0;0;1;1;0;0;"})}]}),{tag:"g",attributes:{class:"missing"},children:e}}}};!function(e,t){var n=t.mixoutsTo;rt=e,it={},Object.keys(st).forEach((function(e){-1===ct.indexOf(e)&&delete st[e]})),rt.forEach((function(e){var t=e.mixout?e.mixout():{};if(Object.keys(t).forEach((function(e){"function"==typeof t[e]&&(n[e]=t[e]),"object"===s(t[e])&&Object.keys(t[e]).forEach((function(a){n[e]||(n[e]={}),n[e][a]=t[e][a]}))})),e.hooks){var a=e.hooks();Object.keys(a).forEach((function(e){it[e]||(it[e]=[]),it[e].push(a[e])}))}e.provides&&e.provides(st)}))}([we,Jt,en,tn,nn,{hooks:function(){return{mutationObserverCallbacks:function(e){return e.pseudoElementsCallback=ln,e}}},provides:function(e){e.pseudoElements2svg=function(e){var t=e.node,n=void 0===t?T:t;de.searchPseudoElements&&ln(n)}}},{mixout:function(){return{dom:{unwatch:function(){Ft(),dn=!0}}}},hooks:function(){return{bootstrap:function(){Ut(lt("mutationObserverCallbacks",{}))},noAuto:function(){$t&&$t.disconnect()},watch:function(e){var t=e.observeMutationsRoot;dn?Bt():Ut(lt("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}},pn,gn,bn,{hooks:function(){return{parseNodeAttributes:function(e,t){var n=t.getAttribute("data-fa-symbol"),a=null!==n&&(""===n||n);return e.symbol=a,e}}}}],{mixoutsTo:gt});var hn=gt.parse,vn=gt.icon,yn=n(23615),xn=n.n(yn);function _n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function kn(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}function Cn(e){return function(e){if(Array.isArray(e))return Tn(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||function(e,t){if(!e)return;if("string"==typeof e)return Tn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);"Object"===n&&e.constructor&&(n=e.constructor.name);if("Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return Tn(e,t)}(e)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function Tn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n0||!Array.isArray(t)&&t?En({},e,t):{}}var Mn=a.forwardRef((function(e,t){var n=e.icon,a=e.mask,o=e.symbol,r=e.className,i=e.title,s=e.titleId,c=e.maskId,l=On(n),d=Ln("classes",[].concat(Cn(function(e){var t,n=e.beat,a=e.fade,o=e.beatFade,r=e.bounce,i=e.shake,s=e.flash,c=e.spin,l=e.spinPulse,d=e.spinReverse,u=e.pulse,p=e.fixedWidth,f=e.inverse,m=e.border,g=e.listItem,b=e.flip,h=e.size,v=e.rotation,y=e.pull,x=(En(t={"fa-beat":n,"fa-fade":a,"fa-beat-fade":o,"fa-bounce":r,"fa-shake":i,"fa-flash":s,"fa-spin":c,"fa-spin-reverse":d,"fa-spin-pulse":l,"fa-pulse":u,"fa-fw":p,"fa-inverse":f,"fa-border":m,"fa-li":g,"fa-flip":!0===b,"fa-flip-horizontal":"horizontal"===b||"both"===b,"fa-flip-vertical":"vertical"===b||"both"===b},"fa-".concat(h),null!=h),En(t,"fa-rotate-".concat(v),null!=v&&0!==v),En(t,"fa-pull-".concat(y),null!=y),En(t,"fa-swap-opacity",e.swapOpacity),t);return Object.keys(x).map((function(e){return x[e]?e:null})).filter((function(e){return e}))}(e)),Cn(r.split(" ")))),u=Ln("transform","string"==typeof e.transform?hn.transform(e.transform):e.transform),p=Ln("mask",On(a)),f=vn(l,kn(kn(kn(kn({},d),u),p),{},{symbol:o,title:i,titleId:s,maskId:c}));if(!f)return function(){var e;!jn&&console&&"function"==typeof console.error&&(e=console).error.apply(e,arguments)}("Could not find icon",l),null;var m=f.abstract,g={ref:t};return Object.keys(e).forEach((function(t){Mn.defaultProps.hasOwnProperty(t)||(g[t]=e[t])})),In(m[0],g)}));Mn.displayName="FontAwesomeIcon",Mn.propTypes={beat:xn().bool,border:xn().bool,beatFade:xn().bool,bounce:xn().bool,className:xn().string,fade:xn().bool,flash:xn().bool,mask:xn().oneOfType([xn().object,xn().array,xn().string]),maskId:xn().string,fixedWidth:xn().bool,inverse:xn().bool,flip:xn().oneOf([!0,!1,"horizontal","vertical","both"]),icon:xn().oneOfType([xn().object,xn().array,xn().string]),listItem:xn().bool,pull:xn().oneOf(["right","left"]),pulse:xn().bool,rotation:xn().oneOf([0,90,180,270]),shake:xn().bool,size:xn().oneOf(["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"]),spin:xn().bool,spinPulse:xn().bool,spinReverse:xn().bool,symbol:xn().oneOfType([xn().bool,xn().string]),title:xn().string,titleId:xn().string,transform:xn().oneOfType([xn().string,xn().object]),swapOpacity:xn().bool},Mn.defaultProps={border:!1,className:"",mask:null,maskId:null,fixedWidth:!1,inverse:!1,flip:!1,icon:null,listItem:!1,pull:null,pulse:!1,rotation:null,size:null,spin:!1,spinPulse:!1,spinReverse:!1,beat:!1,fade:!1,beatFade:!1,bounce:!1,shake:!1,symbol:!1,title:"",titleId:null,transform:null,swapOpacity:!1};var In=function e(t,n){var a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if("string"==typeof n)return n;var o=(n.children||[]).map((function(n){return e(t,n)})),r=Object.keys(n.attributes||{}).reduce((function(e,t){var a=n.attributes[t];switch(t){case"class":e.attrs.className=a,delete n.attributes.class;break;case"style":e.attrs.style=Nn(a);break;default:0===t.indexOf("aria-")||0===t.indexOf("data-")?e.attrs[t.toLowerCase()]=a:e.attrs[Pn(t)]=a}return e}),{attrs:{}}),i=a.style,s=void 0===i?{}:i,c=Sn(a,An);return r.attrs.style=kn(kn({},r.attrs.style),s),t.apply(void 0,[n.tag,kn(kn({},r.attrs),c)].concat(Cn(o)))}.bind(null,a.createElement);function Rn(e){let{className:t,style:n,...r}=e;return a.createElement("span",{className:(0,o.Z)("inline-block",t),"aria-hidden":"true",style:n},a.createElement(Mn,r))}},9187:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s});var a=n(27378),o=n(40624),r=n(30658);const i={1:"text-4xl font-extrabold sm:text-5xl",2:"text-3xl font-bold sm:text-4xl",3:"text-2xl font-bold",4:"text-xl font-bold",5:"text-lg font-semibold",6:"text-base font-semibold"};function s(e){let{align:t,as:n,children:s,className:c="",level:l,overflow:d="wrap",transform:u,variant:p="neutral"}=e;const f=n??`h${l}`;return a.createElement(f,{className:(0,o.Z)("m-0",t&&r.ox[t],i[l],r.s9[d],u&&r.Lo[u],r.oW[p],c)},s)}},90728:(e,t,n)=>{"use strict";n.d(t,{Z:()=>l});var a=n(25773),o=n(27378),r=n(40624),i=n(81884),s=n(30658);const c={muted:"text-gray-700 hover:text-gray-800 dark:text-gray-600 dark:hover:text-gray-500",primary:"text-blurple-300 hover:text-blurple-500 dark:text-purple-400 dark:hover:text-purple-200"};function l(e){let{className:t,transform:n,size:l="df",weight:d="normal",variant:u="primary",...p}=e;return o.createElement(i.default,(0,a.Z)({className:(0,r.Z)("cursor-pointer",s.J7[l],n&&s.Lo[n],c[u],s.Xz[d],t)},p))}},30658:(e,t,n)=>{"use strict";n.d(t,{J7:()=>s,Lo:()=>c,Xz:()=>d,ZP:()=>u,oW:()=>l,ox:()=>r,s9:()=>i});var a=n(27378),o=n(40624);const r={center:"text-center",end:"text-right",justify:"text-justify",start:"text-left"},i={clip:"text-clip",ellipsis:"text-ellipsis",truncate:"truncate",wrap:""},s={df:"text-base",lg:"text-lg",sm:"text-sm"},c={capitalize:"capitalize",lowercase:"lowercase",uppercase:"uppercase"},l={muted:"text-gray-800 dark:text-slate-100",neutral:""},d={black:"font-black",bold:"font-bold",light:"font-light",medium:"font-medium",normal:"font-normal",thin:"font-thin"};function u(e){let{align:t,as:n="p",children:u,className:p="",overflow:f="wrap",size:m="df",transform:g,variant:b="neutral",weight:h="normal"}=e;return a.createElement(n,{className:(0,o.Z)(t&&r[t],i[f],s[m],g&&c[g],l[b],d[h],p)},u)}},15036:(e,t,n)=>{"use strict";n.d(t,{lX:()=>x,q_:()=>C,ob:()=>f,PP:()=>P,Ep:()=>p});var a=n(25773);function o(e){return"/"===e.charAt(0)}function r(e,t){for(var n=t,a=n+1,o=e.length;a=0;p--){var f=i[p];"."===f?r(i,p):".."===f?(r(i,p),u++):u&&(r(i,p),u--)}if(!l)for(;u--;u)i.unshift("..");!l||""===i[0]||i[0]&&o(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var s=n(92215);function c(e){return"/"===e.charAt(0)?e:"/"+e}function l(e){return"/"===e.charAt(0)?e.substr(1):e}function d(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function u(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,a=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),a&&"#"!==a&&(o+="#"===a.charAt(0)?a:"#"+a),o}function f(e,t,n,o){var r;"string"==typeof e?(r=function(e){var t=e||"/",n="",a="",o=t.indexOf("#");-1!==o&&(a=t.substr(o),t=t.substr(0,o));var r=t.indexOf("?");return-1!==r&&(n=t.substr(r),t=t.substr(0,r)),{pathname:t,search:"?"===n?"":n,hash:"#"===a?"":a}}(e),r.state=t):(void 0===(r=(0,a.Z)({},e)).pathname&&(r.pathname=""),r.search?"?"!==r.search.charAt(0)&&(r.search="?"+r.search):r.search="",r.hash?"#"!==r.hash.charAt(0)&&(r.hash="#"+r.hash):r.hash="",void 0!==t&&void 0===r.state&&(r.state=t));try{r.pathname=decodeURI(r.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+r.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(r.key=n),o?r.pathname?"/"!==r.pathname.charAt(0)&&(r.pathname=i(r.pathname,o.pathname)):r.pathname=o.pathname:r.pathname||(r.pathname="/"),r}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,a,o){if(null!=e){var r="function"==typeof e?e(t,n):e;"string"==typeof r?"function"==typeof a?a(r,o):o(!0):o(!1!==r)}else o(!0)},appendListener:function(e){var n=!0;function a(){n&&e.apply(void 0,arguments)}return t.push(a),function(){n=!1,t=t.filter((function(e){return e!==a}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),a=0;at?n.splice(t,n.length-t,o):n.push(o),u({action:a,location:o,index:t,entries:n})}}))},replace:function(e,t){var a="REPLACE",o=f(e,t,g(),x.location);d.confirmTransitionTo(o,a,n,(function(e){e&&(x.entries[x.index]=o,u({action:a,location:o}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=x.index+e;return t>=0&&t{"use strict";var a=n(19185),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},r={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function c(e){return a.isMemo(e)?i:s[e.$$typeof]||o}s[a.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[a.Memo]=i;var l=Object.defineProperty,d=Object.getOwnPropertyNames,u=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,a){if("string"!=typeof n){if(m){var o=f(n);o&&o!==m&&e(t,o,a)}var i=d(n);u&&(i=i.concat(u(n)));for(var s=c(t),g=c(n),b=0;b{"use strict";e.exports=function(e,t,n,a,o,r,i,s){if(!e){var c;if(void 0===t)c=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var l=[n,a,o,r,i,s],d=0;(c=new Error(t.replace(/%s/g,(function(){return l[d++]})))).name="Invariant Violation"}throw c.framesToPop=1,c}}},70142:(e,t,n)=>{"use strict";n.r(t)},26222:(e,t,n)=>{"use strict";n.r(t)},59887:(e,t,n)=>{"use strict";n.r(t)},8504:function(e,t,n){var a,o;a=function(){var e,t,n={version:"0.2.0"},a=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
    '};function o(e,t,n){return en?n:e}function r(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===a.positionUsing?{transform:"translate3d("+r(e)+"%,0,0)"}:"translate"===a.positionUsing?{transform:"translate("+r(e)+"%,0)"}:{"margin-left":r(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(a[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,a.minimum,1),n.status=1===e?null:e;var r=n.render(!t),l=r.querySelector(a.barSelector),d=a.speed,u=a.easing;return r.offsetWidth,s((function(t){""===a.positionUsing&&(a.positionUsing=n.getPositioningCSS()),c(l,i(e,d,u)),1===e?(c(r,{transition:"none",opacity:1}),r.offsetWidth,setTimeout((function(){c(r,{transition:"all "+d+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),d)}),d)):setTimeout(t,d)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),a.trickleSpeed)};return a.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*a.trickleRate)},e=0,t=0,n.promise=function(a){return a&&"resolved"!==a.state()?(0===t&&n.start(),e++,t++,a.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");d(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=a.template;var o,i=t.querySelector(a.barSelector),s=e?"-100":r(n.status||0),l=document.querySelector(a.parent);return c(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),a.showSpinner||(o=t.querySelector(a.spinnerSelector))&&f(o),l!=document.body&&d(l,"nprogress-custom-parent"),l.appendChild(t),t},n.remove=function(){u(document.documentElement,"nprogress-busy"),u(document.querySelector(a.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),c=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function a(t){var n=document.body.style;if(t in n)return t;for(var a,o=e.length,r=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((a=e[o]+r)in n)return a;return t}function o(e){return e=n(e),t[e]||(t[e]=a(e))}function r(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,a,o=arguments;if(2==o.length)for(n in t)void 0!==(a=t[n])&&t.hasOwnProperty(n)&&r(e,n,a);else r(e,o[1],o[2])}}();function l(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function d(e,t){var n=p(e),a=n+t;l(n,t)||(e.className=a.substring(1))}function u(e,t){var n,a=p(e);l(e,t)&&(n=a.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof a?a.call(t,n,t,e):a)||(e.exports=o)},52349:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});var a=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},a={util:{encode:function e(t){return t instanceof o?new o(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=u.reach);w+=k.value.length,k=k.next){var E=k.value;if(t.length>e.length)return;if(!(E instanceof o)){var S,C=1;if(v){if(!(S=r(_,w,e,h))||S.index>=e.length)break;var T=S.index,P=S.index+S[0].length,A=w;for(A+=k.value.length;T>=A;)A+=(k=k.next).value.length;if(w=A-=k.value.length,k.value instanceof o)continue;for(var N=k;N!==t.tail&&(Au.reach&&(u.reach=M);var I=k.prev;if(O&&(I=c(t,I,O),w+=O.length),l(t,I,C),k=c(t,I,new o(p,b?a.tokenize(j,b):j,y,j)),L&&c(t,k,L),C>1){var R={cause:p+","+m,reach:M};i(e,t,n,k.prev,w,R),u&&R.reach>u.reach&&(u.reach=R.reach)}}}}}}function s(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function c(e,t,n){var a=t.next,o={value:n,prev:t,next:a};return t.next=o,a.prev=o,e.length++,o}function l(e,t,n){for(var a=t.next,o=0;o"+r.content+""},a}(),o=a;a.default=a,o.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},o.languages.markup.tag.inside["attr-value"].inside.entity=o.languages.markup.entity,o.languages.markup.doctype.inside["internal-subset"].inside=o.languages.markup,o.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(o.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:o.languages[t]},n.cdata=/^$/i;var a={"included-cdata":{pattern://i,inside:n}};a["language-"+t]={pattern:/[\s\S]+/,inside:o.languages[t]};var r={};r[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:a},o.languages.insertBefore("markup","cdata",r)}}),Object.defineProperty(o.languages.markup.tag,"addAttribute",{value:function(e,t){o.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:o.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),o.languages.html=o.languages.markup,o.languages.mathml=o.languages.markup,o.languages.svg=o.languages.markup,o.languages.xml=o.languages.extend("markup",{}),o.languages.ssml=o.languages.xml,o.languages.atom=o.languages.xml,o.languages.rss=o.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},a={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:a},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:a},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:a.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:a.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var o=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],r=a.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},o.languages.c=o.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),o.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),o.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},o.languages.c.string],char:o.languages.c.char,comment:o.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:o.languages.c}}}}),o.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete o.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(o),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(o),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var a={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},o={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:a,number:o,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:a,number:o})}(o),o.languages.javascript=o.languages.extend("clike",{"class-name":[o.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),o.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,o.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:o.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:o.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:o.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:o.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:o.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),o.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:o.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),o.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),o.languages.markup&&(o.languages.markup.tag.addInlined("script","javascript"),o.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),o.languages.js=o.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(o),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,a="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",o=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),r=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return a})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return a}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return a})).replace(/<>/g,(function(){return"(?:"+o+"|"+r+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(r),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(o),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var a=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,o=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return a})),r=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+o+r+"(?:"+o+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+o+r+")(?:"+o+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(a),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+o+")"+r+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+o+"$"),inside:{"table-header":{pattern:RegExp(a),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,a=t.length;n",quot:'"'},c=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(o),o.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:o.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},o.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var s=p(/^\{$/,/^\}$/);if(-1===s)continue;for(var c=n;c=0&&f(l,"variable-input")}}}}function d(e){return t[n+e]}function u(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,a=t.inside.interpolation,o=a.inside["interpolation-punctuation"],r=a.pattern.source;function i(t,a){if(e.languages[t])return{pattern:RegExp("((?:"+a+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function s(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function c(t,n,a){var o={code:t,grammar:n,language:a};return e.hooks.run("before-tokenize",o),o.tokens=e.tokenize(o.code,o.grammar),e.hooks.run("after-tokenize",o),o.tokens}function l(t){var n={};n["interpolation-punctuation"]=o;var r=e.tokenize(t,n);if(3===r.length){var i=[1,1];i.push.apply(i,c(r[1],e.languages.javascript,"javascript")),r.splice.apply(r,i)}return new e.Token("interpolation",r,a.alias,t)}function d(t,n,a){var o=e.tokenize(t,{interpolation:{pattern:RegExp(r),lookbehind:!0}}),i=0,d={},u=c(o.map((function(e){if("string"==typeof e)return e;for(var n,o=e.content;-1!==t.indexOf(n=s(i++,a)););return d[n]=o,n})).join(""),n,a),p=Object.keys(d);return i=0,function e(t){for(var n=0;n=p.length)return;var a=t[n];if("string"==typeof a||"string"==typeof a.content){var o=p[i],r="string"==typeof a?a:a.content,s=r.indexOf(o);if(-1!==s){++i;var c=r.substring(0,s),u=l(d[o]),f=r.substring(s+o.length),m=[];if(c&&m.push(c),m.push(u),f){var g=[f];e(g),m.push.apply(m,g)}"string"==typeof a?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):a.content=m}}else{var b=a.content;Array.isArray(b)?e(b):e([b])}}}(u),new e.Token(a,u,"language-"+a,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var u={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in u&&function t(n){for(var a=0,o=n.length;a]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(o),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],a=0;a*\.{3}(?:[^{}]|)*\})/.source;function r(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return a})).replace(//g,(function(){return o})),RegExp(e,t)}o=r(o).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=r(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:r(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:r(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},s=function(t){for(var n=[],a=0;a0&&n[n.length-1].tagName===i(o.content[0].content[1])&&n.pop():"/>"===o.content[o.content.length-1].content||n.push({tagName:i(o.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===o.type&&"{"===o.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===o.type&&"}"===o.content?n[n.length-1].openedBraces--:r=!0),(r||"string"==typeof o)&&n.length>0&&0===n[n.length-1].openedBraces){var c=i(o);a0&&("string"==typeof t[a-1]||"plain-text"===t[a-1].type)&&(c=i(t[a-1])+c,t.splice(a-1,1),a--),t[a]=new e.Token("plain-text",c,null,c)}o.content&&"string"!=typeof o.content&&s(o.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||s(e.tokens)}))}(o),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var a=t[n],o=[];/^\w+$/.test(n)||o.push(/\w+/.exec(n)[0]),"diff"===n&&o.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+a+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:o,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(o),o.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},o.languages.go=o.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),o.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete o.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,a,o,r){if(n.language===a){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof r&&!r(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(a,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,a){if(n.language===a&&n.tokenStack){n.grammar=e.languages[a];var o=0,r=Object.keys(n.tokenStack);!function i(s){for(var c=0;c=r.length);c++){var l=s[c];if("string"==typeof l||l.content&&"string"==typeof l.content){var d=r[o],u=n.tokenStack[d],p="string"==typeof l?l:l.content,f=t(a,d),m=p.indexOf(f);if(m>-1){++o;var g=p.substring(0,m),b=new e.Token(a,e.tokenize(u,n.grammar),"language-"+a,u),h=p.substring(m+f.length),v=[];g&&v.push.apply(v,i([g])),v.push(b),h&&v.push.apply(v,i([h])),"string"==typeof l?s.splice.apply(s,[c,1].concat(v)):l.content=v}}else l.content&&i(l.content)}return s}(n.tokens)}}}})}(o),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(o),o.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},o.languages.webmanifest=o.languages.json,o.languages.less=o.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),o.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),o.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},o.languages.objectivec=o.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete o.languages.objectivec["class-name"],o.languages.objc=o.languages.objectivec,o.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},o.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},o.languages.python["string-interpolation"].inside.interpolation.inside.rest=o.languages.python,o.languages.py=o.languages.python,o.languages.reason=o.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),o.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete o.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(o),o.languages.scss=o.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),o.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),o.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),o.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),o.languages.scss.atrule.inside.rest=o.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},a={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};a.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:a}},a.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:a}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:a}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:a}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:a}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:a.interpolation}},rest:a}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:a.interpolation,comment:a.comment,punctuation:/[{},]/}},func:a.func,string:a.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:a.interpolation,punctuation:/[{}()\[\];:.]/}}(o),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(o),o.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const r=o},36761:()=>{!function(e){var t=/\\[\r\n](?:\s|\\[\r\n]|#.*(?!.))*(?![\s#]|\\[\r\n])/.source,n=/(?:[ \t]+(?![ \t])(?:)?|)/.source.replace(//g,(function(){return t})),a=/"(?:[^"\\\r\n]|\\(?:\r\n|[\s\S]))*"|'(?:[^'\\\r\n]|\\(?:\r\n|[\s\S]))*'/.source,o=/--[\w-]+=(?:|(?!["'])(?:[^\s\\]|\\.)+)/.source.replace(//g,(function(){return a})),r={pattern:RegExp(a),greedy:!0},i={pattern:/(^[ \t]*)#.*/m,lookbehind:!0,greedy:!0};function s(e,t){return e=e.replace(//g,(function(){return o})).replace(//g,(function(){return n})),RegExp(e,t)}e.languages.docker={instruction:{pattern:/(^[ \t]*)(?:ADD|ARG|CMD|COPY|ENTRYPOINT|ENV|EXPOSE|FROM|HEALTHCHECK|LABEL|MAINTAINER|ONBUILD|RUN|SHELL|STOPSIGNAL|USER|VOLUME|WORKDIR)(?=\s)(?:\\.|[^\r\n\\])*(?:\\$(?:\s|#.*$)*(?![\s#])(?:\\.|[^\r\n\\])*)*/im,lookbehind:!0,greedy:!0,inside:{options:{pattern:s(/(^(?:ONBUILD)?\w+)(?:)*/.source,"i"),lookbehind:!0,greedy:!0,inside:{property:{pattern:/(^|\s)--[\w-]+/,lookbehind:!0},string:[r,{pattern:/(=)(?!["'])(?:[^\s\\]|\\.)+/,lookbehind:!0}],operator:/\\$/m,punctuation:/=/}},keyword:[{pattern:s(/(^(?:ONBUILD)?HEALTHCHECK(?:)*)(?:CMD|NONE)\b/.source,"i"),lookbehind:!0,greedy:!0},{pattern:s(/(^(?:ONBUILD)?FROM(?:)*(?!--)[^ \t\\]+)AS/.source,"i"),lookbehind:!0,greedy:!0},{pattern:s(/(^ONBUILD)\w+/.source,"i"),lookbehind:!0,greedy:!0},{pattern:/^\w+/,greedy:!0}],comment:i,string:r,variable:/\$(?:\w+|\{[^{}"'\\]*\})/,operator:/\\$/m}},comment:i},e.languages.dockerfile=e.languages.docker}(Prism)},71667:()=>{!function(e){for(var t=/\/\*(?:[^*/]|\*(?!\/)|\/(?!\*)|)*\*\//.source,n=0;n<2;n++)t=t.replace(//g,(function(){return t}));t=t.replace(//g,(function(){return/[^\s\S]/.source})),e.languages.rust={comment:[{pattern:RegExp(/(^|[^\\])/.source+t),lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/b?"(?:\\[\s\S]|[^\\"])*"|b?r(#*)"(?:[^"]|"(?!\1))*"\1/,greedy:!0},char:{pattern:/b?'(?:\\(?:x[0-7][\da-fA-F]|u\{(?:[\da-fA-F]_*){1,6}\}|.)|[^\\\r\n\t'])'/,greedy:!0},attribute:{pattern:/#!?\[(?:[^\[\]"]|"(?:\\[\s\S]|[^\\"])*")*\]/,greedy:!0,alias:"attr-name",inside:{string:null}},"closure-params":{pattern:/([=(,:]\s*|\bmove\s*)\|[^|]*\||\|[^|]*\|(?=\s*(?:\{|->))/,lookbehind:!0,greedy:!0,inside:{"closure-punctuation":{pattern:/^\||\|$/,alias:"punctuation"},rest:null}},"lifetime-annotation":{pattern:/'\w+/,alias:"symbol"},"fragment-specifier":{pattern:/(\$\w+:)[a-z]+/,lookbehind:!0,alias:"punctuation"},variable:/\$\w+/,"function-definition":{pattern:/(\bfn\s+)\w+/,lookbehind:!0,alias:"function"},"type-definition":{pattern:/(\b(?:enum|struct|trait|type|union)\s+)\w+/,lookbehind:!0,alias:"class-name"},"module-declaration":[{pattern:/(\b(?:crate|mod)\s+)[a-z][a-z_\d]*/,lookbehind:!0,alias:"namespace"},{pattern:/(\b(?:crate|self|super)\s*)::\s*[a-z][a-z_\d]*\b(?:\s*::(?:\s*[a-z][a-z_\d]*\s*::)*)?/,lookbehind:!0,alias:"namespace",inside:{punctuation:/::/}}],keyword:[/\b(?:Self|abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|try|type|typeof|union|unsafe|unsized|use|virtual|where|while|yield)\b/,/\b(?:bool|char|f(?:32|64)|[ui](?:8|16|32|64|128|size)|str)\b/],function:/\b[a-z_]\w*(?=\s*(?:::\s*<|\())/,macro:{pattern:/\b\w+!/,alias:"property"},constant:/\b[A-Z_][A-Z_\d]+\b/,"class-name":/\b[A-Z]\w*\b/,namespace:{pattern:/(?:\b[a-z][a-z_\d]*\s*::\s*)*\b[a-z][a-z_\d]*\s*::(?!\s*<)/,inside:{punctuation:/::/}},number:/\b(?:0x[\dA-Fa-f](?:_?[\dA-Fa-f])*|0o[0-7](?:_?[0-7])*|0b[01](?:_?[01])*|(?:(?:\d(?:_?\d)*)?\.)?\d(?:_?\d)*(?:[Ee][+-]?\d+)?)(?:_?(?:f32|f64|[iu](?:8|16|32|64|size)?))?\b/,boolean:/\b(?:false|true)\b/,punctuation:/->|\.\.=|\.{1,3}|::|[{}[\];(),:]/,operator:/[-+*\/%!^]=?|=[=>]?|&[&=]?|\|[|=]?|<>?=?|[@?]/},e.languages.rust["closure-params"].inside.rest=e.languages.rust,e.languages.rust.attribute.inside.string=e.languages.rust.string}(Prism)},56572:()=>{!function(e){var t=/(?:[\w-]+|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*")/.source;function n(e){return e.replace(/__/g,(function(){return t}))}e.languages.toml={comment:{pattern:/#.*/,greedy:!0},table:{pattern:RegExp(n(/(^[\t ]*\[\s*(?:\[\s*)?)__(?:\s*\.\s*__)*(?=\s*\])/.source),"m"),lookbehind:!0,greedy:!0,alias:"class-name"},key:{pattern:RegExp(n(/(^[\t ]*|[{,]\s*)__(?:\s*\.\s*__)*(?=\s*=)/.source),"m"),lookbehind:!0,greedy:!0,alias:"property"},string:{pattern:/"""(?:\\[\s\S]|[^\\])*?"""|'''[\s\S]*?'''|'[^'\n\r]*'|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},date:[{pattern:/\b\d{4}-\d{2}-\d{2}(?:[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})?)?\b/i,alias:"number"},{pattern:/\b\d{2}:\d{2}:\d{2}(?:\.\d+)?\b/,alias:"number"}],number:/(?:\b0(?:x[\da-zA-Z]+(?:_[\da-zA-Z]+)*|o[0-7]+(?:_[0-7]+)*|b[10]+(?:_[10]+)*))\b|[-+]?\b\d+(?:_\d+)*(?:\.\d+(?:_\d+)*)?(?:[eE][+-]?\d+(?:_\d+)*)?\b|[-+]?\b(?:inf|nan)\b/,boolean:/\b(?:false|true)\b/,punctuation:/[.,=[\]{}]/}}(Prism)},3567:()=>{Prism.languages.twig={comment:/^\{#[\s\S]*?#\}$/,"tag-name":{pattern:/(^\{%-?\s*)\w+/,lookbehind:!0,alias:"keyword"},delimiter:{pattern:/^\{[{%]-?|-?[%}]\}$/,alias:"punctuation"},string:{pattern:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,inside:{punctuation:/^['"]|['"]$/}},keyword:/\b(?:even|if|odd)\b/,boolean:/\b(?:false|null|true)\b/,number:/\b0x[\dA-Fa-f]+|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][-+]?\d+)?/,operator:[{pattern:/(\s)(?:and|b-and|b-or|b-xor|ends with|in|is|matches|not|or|same as|starts with)(?=\s)/,lookbehind:!0},/[=<>]=?|!=|\*\*?|\/\/?|\?:?|[-+~%|]/],punctuation:/[()\[\]{}:.,]/},Prism.hooks.add("before-tokenize",(function(e){if("twig"===e.language){Prism.languages["markup-templating"].buildPlaceholders(e,"twig",/\{(?:#[\s\S]*?#|%[\s\S]*?%|\{[\s\S]*?\})\}/g)}})),Prism.hooks.add("after-tokenize",(function(e){Prism.languages["markup-templating"].tokenizePlaceholders(e,"twig")}))},59341:(e,t,n)=>{var a={"./prism-docker":36761,"./prism-rust":71667,"./prism-toml":56572,"./prism-twig":3567};function o(e){var t=r(e);return n(t)}function r(e){if(!n.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}o.keys=function(){return Object.keys(a)},o.resolve=r,e.exports=o,o.id=59341},58772:(e,t,n)=>{"use strict";var a=n(90331);function o(){}function r(){}r.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,r,i){if(i!==a){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:r,resetWarningCache:o};return n.PropTypes=n,n}},23615:(e,t,n)=>{e.exports=n(58772)()},90331:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},43577:(e,t,n)=>{"use strict";var a=n(27378),o=n(43637);function r(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
- - + + \ No newline at end of file diff --git a/docs/guides/examples/angular.html b/docs/guides/examples/angular.html index e31f04e5b4e..82264e1dac0 100644 --- a/docs/guides/examples/angular.html +++ b/docs/guides/examples/angular.html @@ -13,8 +13,8 @@ - - + +
@@ -40,7 +40,7 @@ ng command expects the configuration to live relative to the project root.

Project-level

When creating a new Angular project, a angular.json is created, and must exist in the project root. This allows each project to configure Angular for their needs.

<project>/angular.json
{
"$schema": "./node_modules/@angular/cli/lib/config/schema.json",
"version": 1,
"projects": {
"angular-app": {
"projectType": "application",
...
}
},
...
}
- - + + \ No newline at end of file diff --git a/docs/guides/examples/astro.html b/docs/guides/examples/astro.html index 9418abea1e9..528d5e3037f 100644 --- a/docs/guides/examples/astro.html +++ b/docs/guides/examples/astro.html @@ -13,8 +13,8 @@ - - + +
@@ -41,7 +41,7 @@ astro command expects the configuration to live relative to the project root.

Project-level

When creating a new Astro project, a astro.config.mjs is created, and must exist in the project root. This allows each project to configure Astro for their needs.

<project>/astro.config.mjs
import { defineConfig } from 'astro/config';

// https://astro.build/config
export default defineConfig({});
- - + + \ No newline at end of file diff --git a/docs/guides/examples/eslint.html b/docs/guides/examples/eslint.html index 9e571efdb52..64b2e6f5633 100644 --- a/docs/guides/examples/eslint.html +++ b/docs/guides/examples/eslint.html @@ -13,8 +13,8 @@ - - + +
@@ -45,7 +45,7 @@ want to avoid touching many ESLint configs (think migrations), then overrides in the root are a viable option. Otherwise, we highly encourage project-level configs.

.eslintrc.js
module.exports = {
// ...
overrides: [
// Only apply to apps "foo" and "bar", but not others
{
files: ['apps/foo/**/*', 'apps/bar/**/*'],
rules: {
'no-magic-numbers': 'off',
},
},
],
};
- - + + \ No newline at end of file diff --git a/docs/guides/examples/jest.html b/docs/guides/examples/jest.html index 061ddcb7faa..e58a4f90135 100644 --- a/docs/guides/examples/jest.html +++ b/docs/guides/examples/jest.html @@ -13,8 +13,8 @@ - - + +
@@ -32,7 +32,7 @@ projects as the test task is ran per project. If you'd like to test multiple projects, use moon run :test.

- - + + \ No newline at end of file diff --git a/docs/guides/examples/nest.html b/docs/guides/examples/nest.html index 18fbba6544c..d6f3c2a6eb2 100644 --- a/docs/guides/examples/nest.html +++ b/docs/guides/examples/nest.html @@ -13,8 +13,8 @@ - - + +
@@ -28,7 +28,7 @@ nest command expects the configuration to live relative to the project root.

Project-level

When creating a new NestJS project, a nest-cli.json is created, and must exist in the project root. This allows each project to configure NestJS for their needs.

<project>/nest-cli.json
{
"$schema": "https://json.schemastore.org/nest-cli",
"collection": "@nestjs/schematics",
"type": "application",
"root": "./",
"sourceRoot": "src",
"compilerOptions": {
"tsConfigPath": "tsconfig.build.json"
}
}
- - + + \ No newline at end of file diff --git a/docs/guides/examples/next.html b/docs/guides/examples/next.html index d9ba05234ce..4dfeb307945 100644 --- a/docs/guides/examples/next.html +++ b/docs/guides/examples/next.html @@ -13,8 +13,8 @@ - - + +
@@ -43,7 +43,7 @@ next.config.<js|mjs> is created, and must exist in the project root. This allows each project to configure Next.js for their needs.

<project>/next.config.js
module.exports = {
compress: true,
};
- - + + \ No newline at end of file diff --git a/docs/guides/examples/nuxt.html b/docs/guides/examples/nuxt.html index 429fd8c3343..96bf6658d4d 100644 --- a/docs/guides/examples/nuxt.html +++ b/docs/guides/examples/nuxt.html @@ -13,8 +13,8 @@ - - + +
@@ -28,7 +28,7 @@ nuxt.config.ts is created, and must exist in the project root. This allows each project to configure Next.js for their needs.

<project>/nuxt.config.ts
export default defineNuxtConfig({});

Testing

Nuxt supports testing through Jest or Vitest. Refer to our Jest documentation or Vitest documentation for more information on testing.

- - + + \ No newline at end of file diff --git a/docs/guides/examples/packemon.html b/docs/guides/examples/packemon.html index 5e39fdcda91..dc3d92fb2f2 100644 --- a/docs/guides/examples/packemon.html +++ b/docs/guides/examples/packemon.html @@ -13,8 +13,8 @@ - - + +
@@ -29,7 +29,7 @@ declaration output directory.

tsconfig.esm.json
{
"extends": "../../tsconfig.options.json",
"compilerOptions": {
"outDir": "esm",
"rootDir": "src"
},
"include": ["src/**/*"],
"references": []
}

Build targets

To configure the target platform(s) and format(s), you must define a packemon block in the project's package.json. The chosen formats must also be listed as outputs in the task.

package.json
{
"name": "package",
// ...
"packemon": {
"format": "esm",
"platform": "browser"
}
}
- - + + \ No newline at end of file diff --git a/docs/guides/examples/prettier.html b/docs/guides/examples/prettier.html index 72e0d6540f0..23d08c5dbf5 100644 --- a/docs/guides/examples/prettier.html +++ b/docs/guides/examples/prettier.html @@ -13,8 +13,8 @@ - - + +
@@ -29,7 +29,7 @@ work.

FAQ

How to use --write?

Unfortunately, this isn't currently possible, as the prettier binary itself requires either the --check or --write options, and since we're configuring --check in the task above, that takes precedence. This is also the preferred pattern as checks will run (and fail) in CI.

To work around this limitation, we suggest the following alternatives:

  • Configure your editor to run Prettier on save.
  • Define another task to write the formatted code, like format-write.
- - + + \ No newline at end of file diff --git a/docs/guides/examples/react.html b/docs/guides/examples/react.html index f134dd66950..d3e2fed6ec0 100644 --- a/docs/guides/examples/react.html +++ b/docs/guides/examples/react.html @@ -13,8 +13,8 @@ - - + +
@@ -22,7 +22,7 @@ is abstracted away through another tool like webpack. Because of this, moon has no guidelines around utilizing React directly. You can use React however you wish!

However, with that being said, we do suggest the following:

  • Add react and related dependencies to each project, not the root. This includes @types/react as well. This will ensure accurate hashing.
yarn workspace <project> add react
  • Configure Babel with the @babel/preset-react preset.
  • Configure TypeScript compiler options with "jsx": "react-jsx".
- - + + \ No newline at end of file diff --git a/docs/guides/examples/remix.html b/docs/guides/examples/remix.html index e3767762808..e9a8158fcef 100644 --- a/docs/guides/examples/remix.html +++ b/docs/guides/examples/remix.html @@ -13,8 +13,8 @@ - - + +
@@ -37,7 +37,7 @@ remix command expects the configuration to live relative to the project root.

Project-level

When creating a new Remix project, a remix.config.js is created, and must exist in the project root. This allows each project to configure Remix for their needs.

<project>/remix.config.js
module.exports = {
appDirectory: 'app',
};
- - + + \ No newline at end of file diff --git a/docs/guides/examples/solid.html b/docs/guides/examples/solid.html index 635c932d288..eab2e475c28 100644 --- a/docs/guides/examples/solid.html +++ b/docs/guides/examples/solid.html @@ -13,8 +13,8 @@ - - + +
@@ -29,7 +29,7 @@ project root.

<project>/tsconfig.json
{
"compilerOptions": {
"jsx": "preserve",
"jsxImportSource": "solid-js"
}
}

Vite integration

If you're using a Vite powered application (Solid Start or starter templates), you should enable vite-plugin-solid instead of configuring Babel. Be sure to read our guide on Vite as well!

<project>/vite.config.js
import { defineConfig } from 'vite';
import solidPlugin from 'vite-plugin-solid';

export default defineConfig({
// ...
plugins: [solidPlugin()],
});
- - + + \ No newline at end of file diff --git a/docs/guides/examples/storybook.html b/docs/guides/examples/storybook.html index 3f31988a176..605f0b52a24 100644 --- a/docs/guides/examples/storybook.html +++ b/docs/guides/examples/storybook.html @@ -13,8 +13,8 @@ - - + +
@@ -34,7 +34,7 @@ on the Storybook docs.

Configuration

Storybook requires a .storybook folder relative to the project root. Because of this, Storybook should be scaffolded in each project individually. Configuration may be shared through package imports.

- - + + \ No newline at end of file diff --git a/docs/guides/examples/sveltekit.html b/docs/guides/examples/sveltekit.html index 56b054313a6..8e9a0bbe9b2 100644 --- a/docs/guides/examples/sveltekit.html +++ b/docs/guides/examples/sveltekit.html @@ -13,8 +13,8 @@ - - + +
@@ -41,7 +41,7 @@ vite command expects the configuration to live relative to the project root.

Project-level

When creating a new SvelteKit project, a svelte.config.js is created, and must exist in the project root. This allows each project to configure SvelteKit for their needs.

<project>/svelte.config.js
import adapter from '@sveltejs/adapter-auto';
import { vitePreprocess } from '@sveltejs/kit/vite';

/** @type {import('@sveltejs/kit').Config} */
const config = {
// Consult https://kit.svelte.dev/docs/integrations#preprocessors
// for more information about preprocessors
preprocess: vitePreprocess(),

kit: {
adapter: adapter(),
},
};

export default config;
- - + + \ No newline at end of file diff --git a/docs/guides/examples/typescript.html b/docs/guides/examples/typescript.html index 8da477400e3..7f8ba2621f8 100644 --- a/docs/guides/examples/typescript.html +++ b/docs/guides/examples/typescript.html @@ -13,8 +13,8 @@ - - + +
@@ -38,7 +38,7 @@ following content.

packages/tsconfig-company/tsconfig.json
{
"compilerOptions": {
// ...
"lib": ["esnext"]
}
}

Within another tsconfig.json, you can extend this package to inherit the settings.

tsconfig.json
{
"extends": "tsconfig-company/tsconfig.json"
}

FAQ

How to preserve pretty output?

TypeScript supports a pretty format where it includes codeframes and color highlighting for failures. However, when tsc is piped or the terminal is not a TTY, the pretty format is lost. To preserve and always display the pretty format, be sure to pass the --pretty argument!

- - + + \ No newline at end of file diff --git a/docs/guides/examples/vite.html b/docs/guides/examples/vite.html index 5e5be599ea4..608ce4b404a 100644 --- a/docs/guides/examples/vite.html +++ b/docs/guides/examples/vite.html @@ -13,8 +13,8 @@ - - + +
@@ -28,7 +28,7 @@ and must exist in the project root.

<project>/vite.config.js
import { defineConfig } from 'vite';

export default defineConfig({
// ...
build: {
// These must be `outputs` in the `build` task
outDir: 'dist',
},
test: {
// Vitest settings
},
});

If you'd prefer to configure Vitest in a separate configuration file, create a vitest.config.<js|ts> file.

- - + + \ No newline at end of file diff --git a/docs/guides/examples/vue.html b/docs/guides/examples/vue.html index 3fbb25f8d32..62aac2a8375 100644 --- a/docs/guides/examples/vue.html +++ b/docs/guides/examples/vue.html @@ -13,8 +13,8 @@ - - + +
@@ -32,7 +32,7 @@ to support Vue components. Because of this, we should update the typecheck task in the project to utilize this command instead.

<project>/moon.yml
workspace:
inheritedTasks:
exclude: ['typecheck']

tasks:
typecheck:
command:
- 'vue-tsc'
- '--noEmit'
# Always use pretty output
- '--pretty'
inputs:
- 'env.d.ts'
# Source and test files
- 'src/**/*'
- 'tests/**/*'
# Project configs
- 'tsconfig.json'
- 'tsconfig.*.json'
# Root configs (extended from only)
- '/tsconfig.options.json'

Be sure tsconfig.json compiler options are based on @vue/tsconfig.

- - + + \ No newline at end of file diff --git a/docs/guides/javascript/deno-handbook.html b/docs/guides/javascript/deno-handbook.html index d11b95a3139..9ef81b63f13 100644 --- a/docs/guides/javascript/deno-handbook.html +++ b/docs/guides/javascript/deno-handbook.html @@ -13,8 +13,8 @@ - - + +
@@ -24,7 +24,7 @@ explicitly configured. We follow this approach to avoid unnecessary overhead.

Enabling the language

To enable TypeScript support via Deno, define the deno setting in .moon/toolchain.yml, even if an empty object.

.moon/toolchain.yml
# Enable Deno
deno: {}

# Enable Deno and override default settings
deno:
lockfile: true

Or by pinning a deno version in .prototools in the workspace root.

.prototools
deno = "1.31.0"

This will enable the Deno platform and provide the following automations around its ecosystem:

  • Automatic handling and caching of lockfiles (when the setting is enabled).
  • Relationships between projects will automatically be discovered based on imports, importMap, and deps.ts (currently experimental).
  • And more to come!

Work in progress

caution

Deno support is currently experimental while we finalize the implementation.

The following features are not supported:

  • deno.jsonc files (use deno.json instead).
  • npm: imports do not consider Node.js dependencies as hash sources.
  • files.exclude are currently considered an input. These will be filtered in a future release.

Coming soon!

The handbook is currently being written while we finalize our Deno integration support!

- - + + \ No newline at end of file diff --git a/docs/guides/javascript/node-handbook.html b/docs/guides/javascript/node-handbook.html index 0862f42b3f7..44475abd345 100644 --- a/docs/guides/javascript/node-handbook.html +++ b/docs/guides/javascript/node-handbook.html @@ -13,8 +13,8 @@ - - + +
@@ -97,7 +97,7 @@ on the consuming side, you're using the package as if it's a normal node module, and avoids deviating from the ecosystem.

TypeScript integration

We suggest using TypeScript project references. Luckily, we have an in-depth guide on how to properly and efficiently integrate them!

- - + + \ No newline at end of file diff --git a/docs/guides/javascript/typescript-eslint.html b/docs/guides/javascript/typescript-eslint.html index a71bfade0db..b354ca9fe32 100644 --- a/docs/guides/javascript/typescript-eslint.html +++ b/docs/guides/javascript/typescript-eslint.html @@ -13,8 +13,8 @@ - - + +
@@ -28,7 +28,7 @@ in speed is comparable to 100ms vs 2000ms.

.vscode/settings.json
{
// Automatically run all linting fixes on save as a concurrent code action,
// and avoid formatting with ESLint. Use another formatter, like Prettier.
"editor.codeActionsOnSave": ["source.fixAll.eslint"],
"eslint.format.enable": false,

// If linting is *too slow* while typing, uncomment the following line to
// only run the linter on save only.
// "editor.run": "onSave",

// Your package manager of choice.
"eslint.packageManager": "yarn",

// Use the newer and more performant `ESLint` class implementation.
"eslint.useESLintClass": true,

// List of directories that that linter should operate on.
"eslint.workingDirectories": [{ "pattern": "apps/*" }, { "pattern": "packages/*" }]
}

Prettier

Use the esbenp.prettier-vscode extension.

.vscode/settings.json
{
// Use Prettier as the default formatter for all file types. Types not
// supported by Prettier can be overriden using bracket syntax, or ignore files.
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true
}
- - + + \ No newline at end of file diff --git a/docs/guides/javascript/typescript-project-refs.html b/docs/guides/javascript/typescript-project-refs.html index 529f8eed931..e2b8f15cee1 100644 --- a/docs/guides/javascript/typescript-project-refs.html +++ b/docs/guides/javascript/typescript-project-refs.html @@ -13,8 +13,8 @@ - - + +
@@ -210,7 +210,7 @@ create another project, C (typically a shared npm package), and move both pieces of code into C. A and B would then import from C, instead of from each other. We're not aware of any tools that would automate this, or detect cycles, so you'll need to do it manually.

- - + + \ No newline at end of file diff --git a/docs/guides/node/examples.html b/docs/guides/node/examples.html index 9adc7e4fb8c..607d7f2b670 100644 --- a/docs/guides/node/examples.html +++ b/docs/guides/node/examples.html @@ -13,13 +13,13 @@ - - + +
- - + + \ No newline at end of file diff --git a/docs/guides/offline-mode.html b/docs/guides/offline-mode.html index eb18f0b3b44..2dac2411b6e 100644 --- a/docs/guides/offline-mode.html +++ b/docs/guides/offline-mode.html @@ -13,8 +13,8 @@ - - + +
@@ -26,7 +26,7 @@ offline mode, while 0 and false will force online mode.

Environment variables

Some additional variables to interact with offline checks.

  • PROTO_OFFLINE_TIMEOUT - Customize the timeout for offline checks (in milliseconds). Defaults to 750.
  • PROTO_OFFLINE_HOSTS - Customize additional hosts/IPs to check for offline status. Separate multiple hosts with a ,.
- - + + \ No newline at end of file diff --git a/docs/guides/open-source.html b/docs/guides/open-source.html index ab8ab486ea1..34fa8fb2836 100644 --- a/docs/guides/open-source.html +++ b/docs/guides/open-source.html @@ -13,8 +13,8 @@ - - + +
@@ -28,7 +28,7 @@ moonrepo/run-report-action GitHub action. This action will report the results of a moon ci run to a pull request as a comment and workflow summary.

.github/workflows/ci.yml
# ...
jobs:
ci:
name: 'CI'
runs-on: 'ubuntu-latest'
steps:
# ...
- run: 'yarn moon ci'
- uses: 'moonrepo/run-report-action@v1'
if: success() || failure()
with:
access-token: ${{ secrets.GITHUB_TOKEN }}

The report looks something like the following:

- - + + \ No newline at end of file diff --git a/docs/guides/profile.html b/docs/guides/profile.html index ffceb0273ba..2ae0c98fc7a 100644 --- a/docs/guides/profile.html +++ b/docs/guides/profile.html @@ -13,8 +13,8 @@ - - + +
@@ -44,7 +44,7 @@ children.
Bottom up profiler view

Top down

The Top down view works in a similar fashion to Bottom up, but displays functions starting from the top-level entry points. These are also known as root activities.

Top down profiler view

Flame chart

DevTools represents main thread activity with a flame chart. The x-axis represents the recording over time. The y-axis represents the call stack. The events on top cause the events below it.

Flame chart profiler view
- - + + \ No newline at end of file diff --git a/docs/guides/remote-cache.html b/docs/guides/remote-cache.html index e7787e40eb1..eeb9afea23a 100644 --- a/docs/guides/remote-cache.html +++ b/docs/guides/remote-cache.html @@ -13,8 +13,8 @@ - - + +
@@ -45,7 +45,7 @@ outputs of a task, which is typically built and compiled code. To verify this, you can inspect the tar archives in .moon/cache/outputs.

Does moon collect any personally identifiable information?

No, moon does not collect any PII as part of the remote caching process.

However, to use remote caching, you must create a moonrepo account in which we require an email address, and information about your organization and repository.

Are artifacts encrypted?

Yes! We use AWS's built-in SSE-S3 encryption for all S3 buckets.

- - + + \ No newline at end of file diff --git a/docs/guides/root-project.html b/docs/guides/root-project.html index 7c5ca9ecdb3..77e08990fb5 100644 --- a/docs/guides/root-project.html +++ b/docs/guides/root-project.html @@ -13,8 +13,8 @@ - - + +
@@ -30,7 +30,7 @@ .moon/tasks.yml, which may be unexpected. To mitigate this, you can exclude some or all of these tasks in the root config with workspace.inheritedTasks.

moon.yml
workspace:
inheritedTasks:
include: []
- - + + \ No newline at end of file diff --git a/docs/guides/rust/handbook.html b/docs/guides/rust/handbook.html index ec1be5040d4..945f8bebaf6 100644 --- a/docs/guides/rust/handbook.html +++ b/docs/guides/rust/handbook.html @@ -13,8 +13,8 @@ - - + +
@@ -64,7 +64,7 @@ artifacts in a cloud storage provider.

For moon, if you're looking to persist task results across CI runs, you can utilize the runner.archivableTargets setting. This is useful for caching cargo check, cargo clippy, and other Cargo tasks that do not produce direct outputs.

.moon/workspace.yml
runner:
archivableTargets:
- 'rust:check'
- 'rust:lint'
- 'rust:test'
- - + + \ No newline at end of file diff --git a/docs/guides/sharing-config.html b/docs/guides/sharing-config.html index a8aa839a244..c85054ef072 100644 --- a/docs/guides/sharing-config.html +++ b/docs/guides/sharing-config.html @@ -13,8 +13,8 @@ - - + +
@@ -32,7 +32,7 @@ new version should be created, while the previous version remains untouched.

-extends: '../shared/project.yml'
+extends: '../shared/project-v1.yml'

Using branches, tags, or commits

When using a version control platform, like GitHub above, you can reference the upstream configuration through a branch, tag, commit, or sha. Since these are a reference point in time, they are relatively safe.

-extends: 'https://raw.githubusercontent.com/moonrepo/examples/master/.moon/tasks.yml'
+extends: 'https://raw.githubusercontent.com/moonrepo/examples/c3f10160bcd16b48b8d4d21b208bb50f6b09bd96/.moon/tasks.yml'
- - + + \ No newline at end of file diff --git a/docs/guides/vcs-hooks.html b/docs/guides/vcs-hooks.html index d1c6d6b1d26..13822e27c6c 100644 --- a/docs/guides/vcs-hooks.html +++ b/docs/guides/vcs-hooks.html @@ -13,8 +13,8 @@ - - + +
@@ -55,7 +55,7 @@ the --affected option so that we only run on changed projects!

.moon/workspace.yml
vcs:
hooks:
pre-commit:
- 'moon run :lint :format --affected --status=staged'

By default this will run on the entire project (all files). If you want to filter it to only the changed files, enable the affectedFiles task option.

- - + + \ No newline at end of file diff --git a/docs/guides/webhooks.html b/docs/guides/webhooks.html index 1fa385e737d..e51fda5e72f 100644 --- a/docs/guides/webhooks.html +++ b/docs/guides/webhooks.html @@ -13,8 +13,8 @@ - - + +
@@ -62,7 +62,7 @@ archivePath field is an absolute path to this archive, but is unique to the host machine that the target ran on.

This event does not trigger if target-output.hydrating did not run or failed to run.

{
"type": "target-output.hydrated",
"createdAt": "...",
"environment": "...",
"event": {
"archivePath": "...",
"hash": "1f5205cdb0912e97190e08a6cf98e41804bf6824b0a325d315e8b488a12677b0",
"project": {
"id": "app"
// ...
},
"target": "app:build",
"task": {
"id": "build"
// ...
}
},
"uuid": "..."
}
- - + + \ No newline at end of file diff --git a/docs/how-it-works.html b/docs/how-it-works.html index 021edf28000..46658667dee 100644 --- a/docs/how-it-works.html +++ b/docs/how-it-works.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/how-it-works/action-graph.html b/docs/how-it-works/action-graph.html index f407019f36b..6b7303d44a0 100644 --- a/docs/how-it-works/action-graph.html +++ b/docs/how-it-works/action-graph.html @@ -13,8 +13,8 @@ - - + +
@@ -46,7 +46,7 @@ capabilities. All interactive tasks are run in isolation in the graph.

Run persistent task

Like the base run task, but runs the task in a persistent process that never exits. All persistent tasks are run in parallel as the last batch in the graph.

What is the graph used for?

Without the action graph, tasks would not efficiently run, or possibly at all! The graph helps to run tasks in parallel, in the correct order, and to ensure a reliable outcome.

- - + + \ No newline at end of file diff --git a/docs/how-it-works/languages.html b/docs/how-it-works/languages.html index e717f4f6a22..428b2661e3e 100644 --- a/docs/how-it-works/languages.html +++ b/docs/how-it-works/languages.html @@ -13,8 +13,8 @@ - - + +
@@ -44,7 +44,7 @@ unusable unless the platform has been entirely integrated, and as such, the platform depends on this tier. This tier handles:

  • Downloading and installing a language into the toolchain.
  • Installing and deduping project dependencies.
  • Detecting appropriate versions of tools to use.
  • Determining which binary to use and execute targets with.
  • Supports a version field in the named configuration block in .moon/toolchain.yml.
.moon/toolchain.yml
node:
version: '18.0.0'
- - + + \ No newline at end of file diff --git a/docs/how-it-works/project-graph.html b/docs/how-it-works/project-graph.html index e7a1ca8e0fe..8c3f3300ea1 100644 --- a/docs/how-it-works/project-graph.html +++ b/docs/how-it-works/project-graph.html @@ -13,8 +13,8 @@ - - + +
@@ -38,7 +38,7 @@ dependency when applicable.

What is the graph used for?

Great question, the project graph is used throughout the codebase to accomplish a variety of functions, but mainly:

  • Is fed into the action graph to determine relationships of tasks between other tasks, and across projects.
  • Powers our Docker layer caching and scaffolding implementations.
  • Utilized for project syncing to ensure a healthy repository state.
  • Determines affected projects in continuous integration workflows.
- - + + \ No newline at end of file diff --git a/docs/install.html b/docs/install.html index c7c29197037..1af04f86442 100644 --- a/docs/install.html +++ b/docs/install.html @@ -13,8 +13,8 @@ - - + +
@@ -39,7 +39,7 @@ @moonrepo/cli under the nightly tag. Releases are versioned by date.
  • As a GitHub prerelease using the nightly tag. This tag always represents the latest release, and is not historical.
  • Next steps

    - - + + \ No newline at end of file diff --git a/docs/migrate-to-moon.html b/docs/migrate-to-moon.html index 6a7d4079c55..6f97fcf5bd7 100644 --- a/docs/migrate-to-moon.html +++ b/docs/migrate-to-moon.html @@ -13,8 +13,8 @@ - - + +
    @@ -43,7 +43,7 @@ check.
  • The script name contains variations of dev, start, or serve.
  • Next steps

    By this point, you should have a better understanding behind moon's fundamentals! Why not adopt incrementally next? Jump into guides for advanced use cases or concepts for a deeper understanding.

    - - + + \ No newline at end of file diff --git a/docs/proto.html b/docs/proto.html index b730a1cd362..63d84202081 100644 --- a/docs/proto.html +++ b/docs/proto.html @@ -13,8 +13,8 @@ - - + +
    @@ -41,7 +41,7 @@ automatically the first time a tool is installed.

    Supported tools

    The following tools are officially supported in proto via moonrepo. Additional tools can be supported through third-party plugins.

    + npm, pnpm, yarn

    Supported targets

    Because proto is written in Rust, we only support targets that are explicitly compiled for, which are currently:

    Operating systemArchitectureTarget
    macOS 64-bitIntelx86_64-apple-darwin
    macOS 64-bitARMaarch64-apple-darwin
    Linux 64-bitIntel GNUx86_64-unknown-linux-gnu
    Windows 64-bitIntelx86_64-pc-windows-msvc

    Roadmap

    • Linux ARM/musl support.
    • Build from source for existing languages.
    • New languages.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/add-plugin.html b/docs/proto/commands/add-plugin.html index 36c936e0f29..cc28e573557 100644 --- a/docs/proto/commands/add-plugin.html +++ b/docs/proto/commands/add-plugin.html @@ -13,15 +13,15 @@ - - + +

    add-plugin

    v0.16.0

    The proto add-plugin <id> <locator> (or proto ap) command will add the provided plugin ID and locator string to the [plugins] section of the local (.prototools) or global (~/.proto/config.toml) config file.

    $ proto add-plugin node source:https://github.com/moonrepo/node-plugin/releases/latest/download/node_plugin.wasm

    Learn more about plugin locator strings.

    Arguments

    • <id> - ID of the plugin.
    • <locator> - How to locate the plugin.

    Options

    • --global - Add to the global config instead of local.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/alias.html b/docs/proto/commands/alias.html index 3a5d387b6d8..9c9d22ca3af 100644 --- a/docs/proto/commands/alias.html +++ b/docs/proto/commands/alias.html @@ -13,15 +13,15 @@ - - + +

    alias

    The proto alias <tool> <label> <version> (or proto a) command will define a custom alias that maps to a specific version for the provided tool. Aliases can be used anywhere a version is accepted.

    $ proto alias node work 16.16

    Arguments

    • <tool> - Type of tool.
    • <label> - Name of the alias. Supports alpanumeric chars.
    • <version> - Version to map to the alias.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/bin.html b/docs/proto/commands/bin.html index 413f7882b77..5ce271f4a73 100644 --- a/docs/proto/commands/bin.html +++ b/docs/proto/commands/bin.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ When a tool has not been installed, or a version cannot be resolved, the command will exit with a failure.

    $ proto bin node 16.10.0
    /Users/example/.proto/tools/node/16.10.0/bin/node

    Arguments

    • <tool> - Type of tool.
    • [version] - Version of tool. If not provided, will attempt to detect the version.

    Options

    • --shim - When applicable, return an absolute path to a tool's local shim file.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/clean.html b/docs/proto/commands/clean.html index 5d883a34304..183c7ba5e42 100644 --- a/docs/proto/commands/clean.html +++ b/docs/proto/commands/clean.html @@ -13,15 +13,15 @@ - - + +

    clean

    The proto clean command can be used to uninstall stale and unused tools or plugins. By default, it will remove items that haven't been used in the last 30 days.

    $ proto clean

    Furthermore, the command can be used to purge a tool, which will remove it entirely from proto, or purge all downloaded plugins.

    # Delete node from proto
    $ proto clean --purge node

    # Delete all plugins
    $ proto clean --purge-plugins

    Options

    • --days - Number of days before a tool is considered stale.
    • --purge - Purge and delete the installed tool by ID (~/.proto/tools/<id>).
    • --purge-plugins - Purge and delete all downloaded plugins (~/.proto/plugins).
    • --yes - Avoid and confirm all prompts.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/completions.html b/docs/proto/commands/completions.html index f559e1bf349..5c8812b7bea 100644 --- a/docs/proto/commands/completions.html +++ b/docs/proto/commands/completions.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ current shell. This command will write to stdout, which can then be redirected to a file of your choice.

    $ proto completions > ~/.bash_completion.d/proto.sh

    Options

    • --shell - Shell to explicitly generate for. Accepts "bash", "elvish", "fish", "powershell", or "zsh".
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/install-global.html b/docs/proto/commands/install-global.html index d4dddc8c19f..4377402e29c 100644 --- a/docs/proto/commands/install-global.html +++ b/docs/proto/commands/install-global.html @@ -13,8 +13,8 @@ - - + +
    @@ -25,7 +25,7 @@ FAQ for more information on why this exists.

    # Install a global by name
    $ proto install-global rust cargo-release

    # Install multiple globals
    $ proto install-global rust cargo-release cargo-udeps

    # Can also include an optional version (depending on the language)
    $ proto install-global node typescript@v5
    caution

    proto installs globals but does not make them available on PATH. You'll need to manually add all the global binary locations to PATH from your shell profile.

    Arguments

    • <tool> - Type of tool.
    • ...<dependencies> - Name of dependencies and optional version.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/install.html b/docs/proto/commands/install.html index eb891326b65..4236eae6ebb 100644 --- a/docs/proto/commands/install.html +++ b/docs/proto/commands/install.html @@ -13,8 +13,8 @@ - - + +
    @@ -24,7 +24,7 @@ acceptable. It even supports aliases when applicable, like latest, next, beta, etc. To install a canary release, use --canary.

    $ proto install deno 1.31
    $ proto install deno --canary

    Some tools run post-install hooks that support arbitrary arguments that can be passed after --.

    $ proto install go -- --no-gobin

    Arguments

    • <tool> - Type of tool.
    • [version] - Version of tool. Defaults to "latest".
    • [-- <args>] - Additional arguments to pass to post-install hooks.

    Options

    • --canary - Install a canary (next, nightly, etc) version.
    • --pin - Pin the resolved version as the global default, and create a symlink in ~/.proto/bin.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/list-global.html b/docs/proto/commands/list-global.html index 548882b6591..c7cb24e8035 100644 --- a/docs/proto/commands/list-global.html +++ b/docs/proto/commands/list-global.html @@ -13,14 +13,14 @@ - - + +

    list-global

    The proto list-global <tool> (or proto lsg) command will list installed global dependencies (and their canonical file location) by scanning the file system at the tool's global bins directory.

    $ proto list-global go
    gopls - ~/go/bin/gopls
    mockery - ~/go/bin/mockery
    reflex - ~/go/bin/reflex

    Arguments

    • <tool> - Type of tool.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/list-remote.html b/docs/proto/commands/list-remote.html index 97276f7bd59..0df4ac9ca43 100644 --- a/docs/proto/commands/list-remote.html +++ b/docs/proto/commands/list-remote.html @@ -13,14 +13,14 @@ - - + +

    list-remote

    The proto list-remote <tool> (or proto lsr) command will list available versions by resolving versions from the tool's remote release manifest.

    $ proto list-remote node
    ...
    18.10.0
    18.11.0
    18.12.0
    18.12.1
    18.13.0
    18.14.0
    18.14.1
    18.14.2
    19.0.0
    19.0.1
    19.1.0
    19.2.0
    19.3.0
    19.4.0
    19.5.0
    19.6.0
    19.6.1
    19.7.0

    Arguments

    • <tool> - Type of tool.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/list.html b/docs/proto/commands/list.html index 82a04197a33..9d254da9f1a 100644 --- a/docs/proto/commands/list.html +++ b/docs/proto/commands/list.html @@ -13,14 +13,14 @@ - - + +

    list

    The proto list <tool> (or proto ls) command will list installed versions by scanning the manifest at ~/.proto/tools/<tool>/manifest.json for possible versions.

    $ proto list node
    16.16.0
    18.2.0
    19.4.0

    Arguments

    • <tool> - Type of tool.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/outdated.html b/docs/proto/commands/outdated.html index cecce3942cd..ba4409c5de9 100644 --- a/docs/proto/commands/outdated.html +++ b/docs/proto/commands/outdated.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ of each configured tool. By default, only newer versions that match the configured version requirements or ranges will be used. To ignore this and use the latest version, pass --latest.

    $ proto outdated

    go - current version 1.20.2 (via ~1.20), newer version 1.20.8, update available!
    node - current version 20.7.0 (via 20.7.0), latest version 20.8.0, update available!

    Learn more about the .prototools configuration file!

    Options

    • --json - Print the list in JSON format.
    • --latest - Check for the latest available version, ignoring any version requirements, ranges, or constraints.
    • --update - Update the loaded .prototools file with newer versions if available.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/pin.html b/docs/proto/commands/pin.html index bba22ac66a3..bf60bc0bf5e 100644 --- a/docs/proto/commands/pin.html +++ b/docs/proto/commands/pin.html @@ -13,8 +13,8 @@ - - + +
    @@ -23,7 +23,7 @@ detect a version.

    $ proto pin go 1.20

    When the --global option is passed, the version will be pinned globally in ~/.proto/tools/<tool>/manifest.json. This version will be used as a global fallback when attempting to detect a version.

    $ proto pin go 1.20 --global

    Learn more about the .prototools configuration file!

    Arguments

    • <tool> - Type of tool.
    • <version> - Version of tool.

    Options

    • --global - Pin the version globally, rather than in the current directory.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/plugins.html b/docs/proto/commands/plugins.html index 5e8413eeb9d..a7383708dd4 100644 --- a/docs/proto/commands/plugins.html +++ b/docs/proto/commands/plugins.html @@ -13,14 +13,14 @@ - - + +

    plugins

    v0.14.0

    The proto plugins command will list all available and configured plugins. Will load all .prototools traversing upwards, and the ~/.proto/config.toml file.

    $ proto plugins

    bun - Bun v1.2
    Source: https://github.com/moonrepo/bun-plugin/releases/latest/download/bun_plugin.wasm

    deno - Deno v2.0
    GitHub: moonrepo/deno-plugin
    Tag: latest

    go - Go v0.1
    GitHub: moonrepo/go-plugin
    Tag: latest

    Options

    • --json - Print the list in JSON format.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/remove-plugin.html b/docs/proto/commands/remove-plugin.html index 73e1f590367..d54efc1c907 100644 --- a/docs/proto/commands/remove-plugin.html +++ b/docs/proto/commands/remove-plugin.html @@ -13,14 +13,14 @@ - - + +

    remove-plugin

    v0.16.0

    The proto remove-plugin <id> (or proto rp) command will remove the provided plugin ID from to the [plugins] section of the local (.prototools) or global (~/.proto/config.toml) config file.

    $ proto remove-plugin node

    Built-in plugins cannot be removed!

    Arguments

    • <id> - ID of the plugin.

    Options

    • --global - Remove from the global config instead of local.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/run.html b/docs/proto/commands/run.html index 92c91ea91df..24b4d997d05 100644 --- a/docs/proto/commands/run.html +++ b/docs/proto/commands/run.html @@ -13,15 +13,15 @@ - - + +

    run

    The proto run <tool> (or proto r) command will run a tool after detecting a version from the environment.

    # Run and detect version from environment
    $ proto run bun

    # Run with explicit version
    $ proto run bun 0.5.3

    # Run with version from environment variable
    $ PROTO_BUN_VERSION=0.5.3 proto run bun

    Arguments can be passed to the underlying tool binary by providing additional arguments after --.

    $ proto run bun -- run ./script.ts

    # When using the binary on PATH
    $ bun run ./script.ts

    Arguments

    • <tool> - Type of tool.
    • [version] - Version of tool. If not provided, will attempt to detect the version from the environment.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/setup.html b/docs/proto/commands/setup.html index 000f076d144..6ecc0b87779 100644 --- a/docs/proto/commands/setup.html +++ b/docs/proto/commands/setup.html @@ -13,15 +13,15 @@ - - + +

    setup

    The proto setup command will setup proto in your current shell by modifying an applicable profile file and appending proto's bin directory to PATH.

    $ proto setup

    During setup, the following profiles will be searched:

    • All shells
      • ~/.profile
      • PROFILE environment variable
    • Bash
      • ~/.bash_profile
      • ~/.bashrc
    • Elvish
      • ~/.elvish/rc.elv
      • ~/.config/elvish/rc.elv
    • Fish
      • ~/.config/fish/config.fish
    • PowerShell
      • Will execute the setx command to modify PATH
    • Zsh
      • ~/.zprofile
      • ~/.zshrc

    Options

    • --shell - Shell to explicitly generate for. Accepts "bash", "elvish", "fish", "powershell", or "zsh".
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/tools.html b/docs/proto/commands/tools.html index 15841fbe967..ecf78d0f631 100644 --- a/docs/proto/commands/tools.html +++ b/docs/proto/commands/tools.html @@ -13,14 +13,14 @@ - - + +

    tools

    v0.18.0

    The proto tools command will list all tools that have been installed, along with their installed versions, relevant timestamps, available aliases, and store location.

    $ proto tools

    go - Go
    Store: ~/.proto/tools/go
    Versions:
    1.20.0 - installed 08/24/23, last used 09/18/23
    1.20.2 - installed 01/01/70, last used 09/18/23, default version

    node - Node.js
    Store: ~/.proto/tools/node
    Aliases:
    ~20 = stable
    Versions:
    18.0.0 - installed 09/03/23, last used 09/18/23, default version
    18.14.0 - installed 09/04/23, last used 09/04/23
    18.17.1 - installed 09/04/23, last used 09/04/23
    19.0.0 - installed 09/03/23
    20.0.0 - installed 09/03/23
    20.6.0 - installed 09/04/23, last used 09/18/23

    A list of tool IDs can be provided to filter the output list.

    $ proto tools node npm

    Arguments

    • [id...] - IDs of plugins.

    Options

    • --json - Print the list in JSON format.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/unalias.html b/docs/proto/commands/unalias.html index b968d672fac..bf0f3357f0e 100644 --- a/docs/proto/commands/unalias.html +++ b/docs/proto/commands/unalias.html @@ -13,14 +13,14 @@ - - + +

    unalias

    The proto unalias <tool> <label> (or proto ua) command will remove a custom alias for the provided tool.

    $ proto unalias node work

    Arguments

    • <tool> - Type of tool.
    • <label> - Name of the alias. Supports alpanumeric chars.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/uninstall-global.html b/docs/proto/commands/uninstall-global.html index 2c56b22eef0..77a5cfd6a17 100644 --- a/docs/proto/commands/uninstall-global.html +++ b/docs/proto/commands/uninstall-global.html @@ -13,14 +13,14 @@ - - + +

    uninstall-global

    v0.15.0

    The proto uninstall-global <tool> ...<dependencies> (or proto ug) command will uninstall one or many global packages/modules/dependencies for the provided tool.

    # Uninstall a global by name
    $ proto uninstall-global rust cargo-release

    # Uninstall multiple globals
    $ proto uninstall-global rust cargo-release cargo-udeps

    Arguments

    • <tool> - Type of tool.
    • ...<dependencies> - Name of dependencies and optional version.
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/uninstall.html b/docs/proto/commands/uninstall.html index 3345bcbc0d3..a2032c3fd73 100644 --- a/docs/proto/commands/uninstall.html +++ b/docs/proto/commands/uninstall.html @@ -13,14 +13,14 @@ - - + +

    uninstall

    The proto uninstall <tool> (or proto ui) command will uninstall and remove a tool from ~/.proto/tools/<tool>. If the tool has not been installed, the command will exit early.

    $ proto uninstall deno 1.31

    Arguments

    • <tool> - Type of tool.
    • [version] - Version of tool. Defaults to "latest".
    - - + + \ No newline at end of file diff --git a/docs/proto/commands/upgrade.html b/docs/proto/commands/upgrade.html index 496a5e6750d..a45fd5afc68 100644 --- a/docs/proto/commands/upgrade.html +++ b/docs/proto/commands/upgrade.html @@ -13,14 +13,14 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/proto/commands/use.html b/docs/proto/commands/use.html index a6a8534c824..833cee91c0d 100644 --- a/docs/proto/commands/use.html +++ b/docs/proto/commands/use.html @@ -13,8 +13,8 @@ - - + +
    @@ -22,7 +22,7 @@ parent .prototools configuration files, and any versions detected in the current working directory.

    If auto-clean is enabled, the command will also remove any stale or unused tools.

    $ proto use
    - - + + \ No newline at end of file diff --git a/docs/proto/config.html b/docs/proto/config.html index 07181367cc8..1b41c6d6193 100644 --- a/docs/proto/config.html +++ b/docs/proto/config.html @@ -13,8 +13,8 @@ - - + +
    @@ -37,7 +37,7 @@ [plugins] section above for more information.

    GitHub Action

    To streamline GitHub CI workflows, we provide the moonrepo/setup-proto action, which can be used to install proto globally, and cache the toolchain found at ~/.proto.

    .github/workflows/ci.yml
    # ...
    jobs:
    ci:
    name: 'CI'
    runs-on: 'ubuntu-latest'
    steps:
    - uses: 'actions/checkout@v4'
    - uses: 'moonrepo/setup-proto@v1'
    - run: 'proto use'
    - - + + \ No newline at end of file diff --git a/docs/proto/detection.html b/docs/proto/detection.html index c8480ef1bb8..2bb02819dd9 100644 --- a/docs/proto/detection.html +++ b/docs/proto/detection.html @@ -13,8 +13,8 @@ - - + +
    @@ -29,7 +29,7 @@ more.

    .nvmrc
    18.0.0

    4. Version is defined globally

    As the last check, we look for a "global version" that was pinned with proto pin --global. This version is stored at ~/.proto/tools/*/manifest.json.

    5. Version could not be detected

    If all the previous steps have failed, then we could not detect an applicable version, and the process will fail.

    - - + + \ No newline at end of file diff --git a/docs/proto/faq.html b/docs/proto/faq.html index d30cdf595ca..7f4078baa11 100644 --- a/docs/proto/faq.html +++ b/docs/proto/faq.html @@ -13,8 +13,8 @@ - - + +
    @@ -43,7 +43,7 @@ binary name like node.exe, you'll need to do one of the following:

    • Remove the trailing .exe and simply run node instead. Windows will use the PATHEXT environment variable to find the appropriate extension, which includes .cmd by default.
    • Ensure ~/.proto/bin is in your PATH. If a shim cannot be found, the original binary will be used instead.
    - - + + \ No newline at end of file diff --git a/docs/proto/install.html b/docs/proto/install.html index 63356b52a12..5cde45446d1 100644 --- a/docs/proto/install.html +++ b/docs/proto/install.html @@ -13,8 +13,8 @@ - - + +
    @@ -25,7 +25,7 @@ rename the file after downloading, and apply the executable bit (chmod +x) on macOS and Linux.

    Upgrading

    To upgrade proto, run the proto upgrade command, or re-run the install scripts above.

    Uninstalling

    To uninstall proto, delete the ~/.proto directory, and remove any PROTO_HOME references from your shell profile.

    - - + + \ No newline at end of file diff --git a/docs/proto/plugins.html b/docs/proto/plugins.html index 9435029a3b4..672b620b2c0 100644 --- a/docs/proto/plugins.html +++ b/docs/proto/plugins.html @@ -13,8 +13,8 @@ - - + +
    @@ -34,7 +34,7 @@ variable to authorize API requests with. If using GitHub Actions, it's as simple as:

    # In some job or step...
    env:
    GITHUB_TOKEN: '${{ secrets.GITHUB_TOKEN }}'

    Creating plugins

    To ease the plugin development process, proto supports 2 types of plugins, a TOML based plugin for basic use cases, and a WASM based plugin for advanced use cases.

    - - + + \ No newline at end of file diff --git a/docs/proto/toml-plugin.html b/docs/proto/toml-plugin.html index 763cfe59e53..d6962587d22 100644 --- a/docs/proto/toml-plugin.html +++ b/docs/proto/toml-plugin.html @@ -13,8 +13,8 @@ - - + +
    @@ -59,7 +59,7 @@ version.
    protostar.toml
    # ...

    [resolve]
    manifest-url = "https://someregistry.com/protostar/versions.json"
    manifest-version-key = "latest_version"

    Detecting versions

    And lastly, we can configure how to detect a version contextually at runtime, using the [detect] setting. At this time, we only support 1 setting:

    • version-files - A list of version files to extract from. The contents of these files can only be the version string itself.
    protostar.toml
    # ...

    [detect]
    version-files = [".protostar-version", ".protostarrc"]
    - - + + \ No newline at end of file diff --git a/docs/proto/tools.html b/docs/proto/tools.html index 4887d8ceb8b..99f9aa6928f 100644 --- a/docs/proto/tools.html +++ b/docs/proto/tools.html @@ -13,13 +13,13 @@ - - + +

    Supported tools

    Built-in

    The following tools are supported natively in proto's toolchain.

    WASM
    Bun

    Bun is an all-in-one runtime and toolset for JavaScript and TypeScript, powered by Zig and Webkit.

    proto install bun

    Available bins: bun, bunx

    Globals directory: ~/.bun/bin

    WASM
    Deno

    Deno is a secure runtime for JavaScript and TypeScript, powered by Rust and Chrome's V8 engine.

    proto install deno

    Available bins: deno

    Globals directory: $DENO_INSTALL_ROOT/bin, $DENO_HOME/bin, ~/.deno/bin

    Detection sources: .dvmrc

    WASM
    Go

    Go is a simple, secure, and fast systems language.

    proto install go

    Available bins: go

    Globals directory: $GOBIN, $GOROOT/bin, $GOPATH/bin, ~/go/bin

    Detection sources: go.work, go.mod

    WASM
    Node.js

    Node.js is a JavaScript runtime built on Chrome's V8 engine.

    proto install node

    Available bins: node, npx

    Globals directory: ~/.proto/tools/node/globals/bin

    Detection sources: .nvmrc, .node-version, package.json engines

    WASM
    npm, pnpm, yarn

    proto supports all popular Node.js package managers.

    proto install <manager>

    Available bins: npm, pnpm, yarn, node-gyp

    Globals directory: ~/.proto/tools/node/globals/bin

    Detection sources: package.json engines / package manager

    WASM
    Python (experimental)

    Python is a high-level, general-purpose programming language.

    proto install python

    Available bins: python, pip

    Globals directory: ~/.local/bin

    Detection sources: .python-version

    WASM
    Rust

    Rust is a blazingly fast and memory-efficient systems language.

    proto install rust

    Globals directory: ~/.cargo/bin

    Detection sources: rust-toolchain.toml, rust-toolchain

    Third-party

    Add tool

    Additional tools can be supported through plugins.

    TOML
    buf

    A new way of working with Protocol Buffers.

    proto add-plugin buf "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/buf.toml"
    proto install buf

    Available bins: buf

    TOML
    gojq

    Pure Go implementation of jq.

    proto add-plugin gojq "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/gojq.toml"
    proto install gojq

    Available bins: gojq

    TOML
    helm

    The Kubernetes Package Manager

    proto add-plugin helm "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/helm.toml"
    proto install helm

    Available bins: helm

    TOML
    helmfile

    Deploy Kubernetes Helm Charts

    proto add-plugin helmfile "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/helmfile.toml"
    proto install helmfile

    Available bins: helmfile

    TOML
    kubectl

    Kubernetes command line tool.

    proto add-plugin kubectl "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/kubectl.toml"
    proto install kubectl

    Available bins: kubectl

    TOML
    moon

    moon is a multi-language build system and codebase management tool.

    proto add-plugin moon "source:https://raw.githubusercontent.com/moonrepo/moon/master/proto-plugin.toml"
    proto install moon

    Available bins: moon

    TOML
    sops

    Simple and flexible tool for managing secrets.

    proto add-plugin sops "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/sops.toml"
    proto install sops

    Available bins: sops

    TOML
    terragrunt

    Thin wrapper that provides extra tools for keeping your terraform configurations DRY.

    proto add-plugin terragrunt "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/terragrunt.toml"
    proto install terragrunt

    Available bins: terragrunt

    TOML
    zig

    Zig is a general-purpose programming language and toolchain.

    proto add-plugin zig "source:https://raw.githubusercontent.com/stk0vrfl0w/proto-toml-plugins/main/plugins/zig.toml"
    proto install zig

    Available bins: zig

    - - + + \ No newline at end of file diff --git a/docs/proto/wasm-plugin.html b/docs/proto/wasm-plugin.html index ec4a90123f2..ebb4f63b904 100644 --- a/docs/proto/wasm-plugin.html +++ b/docs/proto/wasm-plugin.html @@ -13,8 +13,8 @@ - - + +
    @@ -126,7 +126,7 @@ steps.

    1. Tag the release and push to GitHub.
    git tag v0.0.1
    git push --tags
    1. Build a release version of the plugin using the build-wasm script above. The file will be available at target/wasm32-wasi/<name>.wasm.
    build-wasm <name>
    1. In GitHub, navigate to the tags page, find the new tag, create a new release, and attach the built file as an asset.

    Automate releases

    Coming soon!

    Resources

    Some helpful resources for learning about and building plugins.

    - - + + \ No newline at end of file diff --git a/docs/run-task.html b/docs/run-task.html index 15401b0f9e4..665ddb47cf8 100644 --- a/docs/run-task.html +++ b/docs/run-task.html @@ -13,8 +13,8 @@ - - + +
    @@ -39,7 +39,7 @@ as-is.

    $ moon run app:build -- --force

    The -- delimiter and any arguments must be defined last on the command line.

    Advanced run targeting

    By this point you should have a basic understanding of how to run tasks, but with moon, we want to provide support for advanced workflows and development scenarios. For example, running a target in all projects:

    $ moon run :build

    Or perhaps running a target based on a query:

    $ moon run :build --query "language=[javascript, typescript]"

    Jump to the official moon run documentation for more examples!

    Next steps

    - - + + \ No newline at end of file diff --git a/docs/setup-toolchain.html b/docs/setup-toolchain.html index ef914829d3a..705af48594e 100644 --- a/docs/setup-toolchain.html +++ b/docs/setup-toolchain.html @@ -13,8 +13,8 @@ - - + +
    @@ -52,7 +52,7 @@ use the global moon binary.

    package.json
    {
    // ...
    "scripts": {
    // ...
    "moon": "moon",
    // For Yarn 2+
    "moon": "$(yarn bin moon)"
    }
    }
    caution

    Yarn 2+ does not support executing Rust binaries through package scripts (issue), so we must access the full binary path and execute on that.

    With this script, moon can then be run with npm run moon ... (or yarn run, or pnpm run).

    Next steps

    - - + + \ No newline at end of file diff --git a/docs/setup-workspace.html b/docs/setup-workspace.html index 4d11e42cbe1..5503adf3b82 100644 --- a/docs/setup-workspace.html +++ b/docs/setup-workspace.html @@ -13,8 +13,8 @@ - - + +
    @@ -26,7 +26,7 @@ quickly initialize and create minimal configuration files.

    Configuring a version control system

    moon requires a version control system (VCS) to be present for functionality like file diffing, hashing, and revision comparison. The VCS and its default branch can be configured through the vcs setting.

    .moon/workspace.yml
    vcs:
    manager: 'git'
    defaultBranch: 'master'

    moon defaults to git and the settings above, so feel free to skip this.

    Next steps

    - - + + \ No newline at end of file diff --git a/docs/tags.html b/docs/tags.html index 8094c00b8fe..39d420085bb 100644 --- a/docs/tags.html +++ b/docs/tags.html @@ -13,13 +13,13 @@ - - + + - - + + \ No newline at end of file diff --git a/docs/tags/code.html b/docs/tags/code.html index 4e7825127b2..0547a5ef8c5 100644 --- a/docs/tags/code.html +++ b/docs/tags/code.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "code"

    View All Tags

    Code owners

    Code owners enables companies to define individuals, teams, or groups that are responsible for code

    - - + + \ No newline at end of file diff --git a/docs/tags/codegen.html b/docs/tags/codegen.html index 2393f792268..ac2de78f0e6 100644 --- a/docs/tags/codegen.html +++ b/docs/tags/codegen.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "codegen"

    View All Tags

    Code generation

    Code generation provides an easy mechanism for automating common development workflows and file

    - - + + \ No newline at end of file diff --git a/docs/tags/codeowners.html b/docs/tags/codeowners.html index 50cce9b73d8..1f1e38ee716 100644 --- a/docs/tags/codeowners.html +++ b/docs/tags/codeowners.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "codeowners"

    View All Tags

    Code owners

    Code owners enables companies to define individuals, teams, or groups that are responsible for code

    - - + + \ No newline at end of file diff --git a/docs/tags/generator.html b/docs/tags/generator.html index 593f44cfcd4..df4139a3228 100644 --- a/docs/tags/generator.html +++ b/docs/tags/generator.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "generator"

    View All Tags

    Code generation

    Code generation provides an easy mechanism for automating common development workflows and file

    - - + + \ No newline at end of file diff --git a/docs/tags/git-hooks.html b/docs/tags/git-hooks.html index f43233c09b3..b0a8fd39aeb 100644 --- a/docs/tags/git-hooks.html +++ b/docs/tags/git-hooks.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "git-hooks"

    View All Tags

    VCS hooks

    VCS hooks (most popular with Git) are a

    - - + + \ No newline at end of file diff --git a/docs/tags/git.html b/docs/tags/git.html index 573f722bb93..e60279171c0 100644 --- a/docs/tags/git.html +++ b/docs/tags/git.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "git"

    View All Tags

    VCS hooks

    VCS hooks (most popular with Git) are a

    - - + + \ No newline at end of file diff --git a/docs/tags/hooks.html b/docs/tags/hooks.html index f1a197c3cf8..38b8ddb5dc3 100644 --- a/docs/tags/hooks.html +++ b/docs/tags/hooks.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "hooks"

    View All Tags

    VCS hooks

    VCS hooks (most popular with Git) are a

    - - + + \ No newline at end of file diff --git a/docs/tags/lang.html b/docs/tags/lang.html index f40822d3201..33fdc197d1e 100644 --- a/docs/tags/lang.html +++ b/docs/tags/lang.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "lang"

    View All Tags

    Query language

    moon supports an integrated query language, known as MQL, that can be used to filter and select

    - - + + \ No newline at end of file diff --git a/docs/tags/mql.html b/docs/tags/mql.html index a0a20296e76..c5ac5a9d9ca 100644 --- a/docs/tags/mql.html +++ b/docs/tags/mql.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "mql"

    View All Tags

    Query language

    moon supports an integrated query language, known as MQL, that can be used to filter and select

    - - + + \ No newline at end of file diff --git a/docs/tags/owners.html b/docs/tags/owners.html index 581755b2d04..9488d7b2130 100644 --- a/docs/tags/owners.html +++ b/docs/tags/owners.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "owners"

    View All Tags

    Code owners

    Code owners enables companies to define individuals, teams, or groups that are responsible for code

    - - + + \ No newline at end of file diff --git a/docs/tags/query.html b/docs/tags/query.html index a102b1e51c2..880081f1316 100644 --- a/docs/tags/query.html +++ b/docs/tags/query.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "query"

    View All Tags

    Query language

    moon supports an integrated query language, known as MQL, that can be used to filter and select

    - - + + \ No newline at end of file diff --git a/docs/tags/scaffold.html b/docs/tags/scaffold.html index 9f1de1c2f73..10268cb3535 100644 --- a/docs/tags/scaffold.html +++ b/docs/tags/scaffold.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "scaffold"

    View All Tags

    Code generation

    Code generation provides an easy mechanism for automating common development workflows and file

    - - + + \ No newline at end of file diff --git a/docs/tags/solid.html b/docs/tags/solid.html index 0300c78c42d..602fba96fad 100644 --- a/docs/tags/solid.html +++ b/docs/tags/solid.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "solid"

    View All Tags

    Solid example

    Solid (also known as SolidJS) is a JavaScript framework for building

    - - + + \ No newline at end of file diff --git a/docs/tags/solidjs.html b/docs/tags/solidjs.html index 2d1dec1f601..9bb8904124b 100644 --- a/docs/tags/solidjs.html +++ b/docs/tags/solidjs.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "solidjs"

    View All Tags

    Solid example

    Solid (also known as SolidJS) is a JavaScript framework for building

    - - + + \ No newline at end of file diff --git a/docs/tags/template.html b/docs/tags/template.html index 95d81065bac..744dfc3ae76 100644 --- a/docs/tags/template.html +++ b/docs/tags/template.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "template"

    View All Tags

    Code generation

    Code generation provides an easy mechanism for automating common development workflows and file

    - - + + \ No newline at end of file diff --git a/docs/tags/vcs.html b/docs/tags/vcs.html index a8001bc70c7..274e8fd865c 100644 --- a/docs/tags/vcs.html +++ b/docs/tags/vcs.html @@ -13,13 +13,13 @@ - - + +

    One doc tagged with "vcs"

    View All Tags

    VCS hooks

    VCS hooks (most popular with Git) are a

    - - + + \ No newline at end of file diff --git a/docs/terminology.html b/docs/terminology.html index 4f33aaa9525..0ec2fb4455c 100644 --- a/docs/terminology.html +++ b/docs/terminology.html @@ -13,13 +13,13 @@ - - + +

    Terminology

    TermDescription
    ActionA node within the dependency graph that gets executed by the action pipeline.
    Action pipelineExecutes actions from our dependency graph in topological order using a thread pool.
    AffectedTouched by an explicit set of inputs or sources.
    CacheFiles and outputs that are stored on the file system to provide incremental builds and increased performance.
    CIContinuous integration. An environment where tests, builds, lints, etc, are continuously ran on every pull/merge request.
    Dependency graphA directed acyclic graph (DAG) of targets to run and their dependencies.
    DownstreamDependents or consumers of the item in question.
    GeneratorGenerates code from pre-defined templates.
    HashA unique SHA256 identifier that represents the result of a ran task.
    HashingThe mechanism of generating a hash based on multiple sources: inputs, dependencies, configs, etc.
    LTSLong-term support.
    Dependency managerInstalls and manages dependencies for a specific tool (npm), using a manifest file (package.json).
    PlatformAn internal concept representing the integration of a programming language (tool) within moon, and also the environment + language that a task runs in.
    Primary targetThe target that was explicitly ran, and is the dependee of transitive targets.
    ProjectAn collection of source and test files, configurations, a manifest and dependencies, and much more. Exists within a workspace
    RevisionIn the context of a VCS: a branch, revision, commit, hash, or point in history.
    RuntimeAn internal concept representing the platform + version of a tool.
    TargetA label and reference to a task within the project, in the format of project:task.
    TaskA command to run within the context of and configured in a project.
    TemplateA collection of files that get scaffolded by a generator.
    Template fileAn individual file within a template.
    Template variableA value that is interpolated within a template file and its file system path.
    TokenA value within task configuration that is substituted at runtime.
    ToolA programming language or dependency manager within the toolchain.
    ToolchainInstalls and manages tools within the workspace.
    Transitive targetA target that is the dependency of the primary target, and must be ran before the primary.
    TouchedA file that has been created, modified, deleted, or changed in any way.
    UpstreamDependencies or producers of the item in question.
    VCSVersion control system (like Git or SVN).
    WorkspaceRoot of the moon installation, and houses one or many projects. Also refers to package manager workspaces (like Yarn).
    - - + + \ No newline at end of file diff --git a/index.html b/index.html index 2528a6587cc..8e0e6b50d98 100644 --- a/index.html +++ b/index.html @@ -13,13 +13,13 @@ - - + +

    New era of productivity tooling

    From build to deploy, moonrepo is a better way to manage codebases, save developer time, and boost your business.

    A system for a solid foundation

    Supercharge your codebase

    For repositories with multiple projects, any number of languages, and team members constantly pushing changes, moon will help simplify the experience of working in and maintaining a complex monorepo.

    Learn more about moon
    A service to expand to the cloud

    Accelerate your pipelines

    With our hosted service moonbase, easily cache build artifacts to reduce CI times, gain insight into your CI pipelines, track the health of your repositories, and overall cut costs.

    Learn more about moonbase
    A toolchain for the modern era

    Automate your environments

    Remove the hassle of managing and enforcing specific versions of programming languages across teams or projects. With proto, our modern version manager, this entire workflow is automated away through a single tool.

    Learn more about proto

    Used by these innovative companies

    - - + + \ No newline at end of file diff --git a/moon.html b/moon.html index 0b9dab053a3..5d7076dd439 100644 --- a/moon.html +++ b/moon.html @@ -13,13 +13,13 @@ - - + +

    A task runner and monorepo management tool for the web ecosystem, written in Rust.

    Supports JavaScript, TypeScript, Rust, Go, Ruby, and more.

    Backed by

    • Smart hashing

      Collects inputs from multiple sources to ensure builds are deterministic and reproducible.

    • Remote caching

      Persists builds, hashes, and caches between teammates and CI/CD environments.

    • Integrated toolchain

      Automatically downloads and installs explicit versions of languages and tools for consistency across the entire workspace or per project.

    • Multi-platform

      Runs on common development platforms: Linux, macOS, and Windows.

    • Project graph

      Generates a project graph for dependency and dependent relationships.

    • Code generation

      Easily scaffold new applications, libraries, tooling, and more!

    • Task inheritance

      Define a task once to be inherited by all or scoped projects. Avoid defining the same task in every project.

    • Code ownership

      New

      Declare owners, maintainers, support channels, and more. Generate CODEOWNERS.

    • Dependency graph

      Generates a dependency graph to increase performance and reduce workloads.

    • Action pipeline

      Executes actions in parallel and in order using a thread pool and our dependency graph.

    • Action distribution

      Coming soon

      Distributes actions across multiple machines to increase throughput.

    • Incremental builds

      With our smart hashing, only rebuild projects that have been touched since the last build.

    • Flakiness detection

      Reduce flaky builds with automatic retries and passthrough settings.

    • Webhook events

      Experimental

      Receive a webhook for every event in the pipeline. Useful for metrics gathering and insights.

    • Terminal notifications

      Coming soon

      Receives notifications in your chosen terminal when builds are successful... or are not.

    • Git hooks

      New

      Manage Git hooks to enforce workflows and requirements for contributors.

    And many more features

    Configuration & convention
    Use moon the way you want, but with some guard rails.
    Scalability aware
    Engineered to scale and grow for codebases of any size.
    Integrated packages

    In development

    Enhance your pipeline with our @moonrepo npm packages.
    Process inspection

    Coming soon

    Inspect and debug failing task processes.
    Build profiles
    Record CPU and heap profiles that can be analyzed in Chrome.
    Editor extensions
    Utilize moon extensions in your favorite editor, like Visual Studio Code.
    - - + + \ No newline at end of file diff --git a/moonbase.html b/moonbase.html index e611fc61dfd..08333ff7b79 100644 --- a/moonbase.html +++ b/moonbase.html @@ -13,13 +13,13 @@ - - + +

    A service for monitoring codebases, tracking ownership, and scaling CI pipelines.

    For moon powered repositories.

    moonbase - organization view

    Backed by

    • Artifact caching

      Cache build artifacts between CI runs to reduce job times and overall costs.

    • Run history

      New

      Track CI runs to detect flakiness, regressions, and time spent on task execution.

    • Remote distribution

      Coming soon

      Distribute task execution across multiple remote agents to increase throughput.

    • Project registry

      In development

      An aggregated registry of all projects, across all repositories, within an organization.

    • Code owners

      Coming soon

      A granular breakdown of which team or developer owns a portion of code within each project.

    • Health score

      Coming soon

      Monitor the health of projects and avoid tech debt.

    Pricing

    Use moonbase for free for small, personal, or open source projects.
    Upgrade for more features or for larger teams.

    Start

    Free

    • 1 organization member
    • 5 repositories
    • 100 CI runs/ month
    • 1GB cloud storage

    Scale

    $5

    per member + repo

    monthly

    • Priority support
    • 5 free repositories
    • 1,000 CI runs/ month
    • 10GB cloud storage
    • Unlocked organization settings

    Grow

    Soon

    • Enterprise support
    • 15 free repositories
    • Unlimited CI runs/ month
    • Unlimited cloud storage
    • + previous tier

    Terms of Service · Privacy Policy

    Prices and limits subject to change before release!

    - - + + \ No newline at end of file diff --git a/proto.html b/proto.html index d9262700ab5..b67dd238b9b 100644 --- a/proto.html +++ b/proto.html @@ -13,13 +13,13 @@ - - + +
    -

    A version manager for all your favorite languages and tools. A unified toolchain.

    Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more.

    • # Install proto
    • curl -fsSL https://moonrepo.dev/install/proto.sh | bash
    • # Install Bun
    • proto install bun 0.5
    • # Use immediately
    • bun run index.ts

    Backed by

    • Lightspeed interface

      Download, install, and run tools with lightspeed, thanks to our Rust based foundation.

    • Universal toolchain

      Manage multiple languages and dependency managers through a single interface.

    • Version detection

      Detects a version at runtime from a language's ecosystem for maximum compatibility.

    • Granular configuration

      Configure tools and their versions per directory, or per project.

    • Pluggable architecture

      Extend the toolchain with custom plugins, enabling new and non-standard tools.

    Get started

    Install proto for Linux, macOS, or WSL:

    curl -fsSL https://moonrepo.dev/install/proto.sh | bash

    Or Windows (full instructions):

    irm https://moonrepo.dev/install/proto.ps1 | iex

    Install a tool

    proto install node 18

    Run the tool

    node ./main.mjs

    # Or with proto
    proto run node -- ./main.mjs

    Supported tools

    + npm, pnpm, yarn

    Why another version manager?

    To start, proto powers moon's toolchain and integrated developer environment. We believed that the toolchain would be extremely beneficial for developers as a whole, and so we extracted proto out into a standalone Rust CLI and Rust crates that moon inherits.

    Furthermore, we believe that requiring multiple ad-hoc version managers for all your languages, each with different workflows, CLI commands, and configuration files, is a poor developer experience.

    Our goal is to unify all of these into a single performant interface. A toolchain manager is the next step in the version manager evolution.

    - - +

    A version manager for all your favorite languages and tools. A unified toolchain.

    Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more.

    • # Install proto
    • curl -fsSL https://moonrepo.dev/install/proto.sh | bash
    • # Install Go
    • proto install go 1.20
    • # Use immediately
    • go run .

    Backed by

    • Lightspeed interface

      Download, install, and run tools with lightspeed, thanks to our Rust based foundation.

    • Universal toolchain

      Manage multiple languages and dependency managers through a single interface.

    • Version detection

      Detects a version at runtime from a language's ecosystem for maximum compatibility.

    • Granular configuration

      Configure tools and their versions per directory, or per project.

    • Pluggable architecture

      Extend the toolchain with custom plugins, enabling new and non-standard tools.

    Get started

    Install proto for Linux, macOS, or WSL:

    curl -fsSL https://moonrepo.dev/install/proto.sh | bash

    Or Windows (full instructions):

    irm https://moonrepo.dev/install/proto.ps1 | iex

    Install a tool

    proto install node 18

    Run the tool

    node ./main.mjs

    # Or with proto
    proto run node -- ./main.mjs

    Supported tools

    + npm, pnpm, yarn

    Why another version manager?

    To start, proto powers moon's toolchain and integrated developer environment. We believed that the toolchain would be extremely beneficial for developers as a whole, and so we extracted proto out into a standalone Rust CLI and Rust crates that moon inherits.

    Furthermore, we believe that requiring multiple ad-hoc version managers for all your languages, each with different workflows, CLI commands, and configuration files, is a poor developer experience.

    Our goal is to unify all of these into a single performant interface. A toolchain manager is the next step in the version manager evolution.

    + + \ No newline at end of file diff --git a/search.html b/search.html index f64de6e8a45..ecc4bcbbd78 100644 --- a/search.html +++ b/search.html @@ -13,13 +13,13 @@ - - + +

    Search the documentation

    - - + + \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index e2137e1ab0e..bdbef600f7f 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -1 +1 @@ -https://moonrepo.dev/blogweekly0.5https://moonrepo.dev/blog/2023-roadmapweekly0.5https://moonrepo.dev/blog/archiveweekly0.5https://moonrepo.dev/blog/moon-v1.0weekly0.5https://moonrepo.dev/blog/moon-v1.1weekly0.5https://moonrepo.dev/blog/moon-v1.10weekly0.5https://moonrepo.dev/blog/moon-v1.11weekly0.5https://moonrepo.dev/blog/moon-v1.12weekly0.5https://moonrepo.dev/blog/moon-v1.13weekly0.5https://moonrepo.dev/blog/moon-v1.14weekly0.5https://moonrepo.dev/blog/moon-v1.15weekly0.5https://moonrepo.dev/blog/moon-v1.16weekly0.5https://moonrepo.dev/blog/moon-v1.2weekly0.5https://moonrepo.dev/blog/moon-v1.3weekly0.5https://moonrepo.dev/blog/moon-v1.4weekly0.5https://moonrepo.dev/blog/moon-v1.5weekly0.5https://moonrepo.dev/blog/moon-v1.6weekly0.5https://moonrepo.dev/blog/moon-v1.7weekly0.5https://moonrepo.dev/blog/moon-v1.8weekly0.5https://moonrepo.dev/blog/moon-v1.9weekly0.5https://moonrepo.dev/blog/moonbaseweekly0.5https://moonrepo.dev/blog/page/2weekly0.5https://moonrepo.dev/blog/page/3weekly0.5https://moonrepo.dev/blog/page/4weekly0.5https://moonrepo.dev/blog/page/5weekly0.5https://moonrepo.dev/blog/page/6weekly0.5https://moonrepo.dev/blog/protoweekly0.5https://moonrepo.dev/blog/proto-v0.11weekly0.5https://moonrepo.dev/blog/proto-v0.12weekly0.5https://moonrepo.dev/blog/proto-v0.13weekly0.5https://moonrepo.dev/blog/proto-v0.14weekly0.5https://moonrepo.dev/blog/proto-v0.15weekly0.5https://moonrepo.dev/blog/proto-v0.16weekly0.5https://moonrepo.dev/blog/proto-v0.17weekly0.5https://moonrepo.dev/blog/proto-v0.18weekly0.5https://moonrepo.dev/blog/proto-v0.19weekly0.5https://moonrepo.dev/blog/proto-v0.20weekly0.5https://moonrepo.dev/blog/proto-v0.21weekly0.5https://moonrepo.dev/blog/proto-v0.3weekly0.5https://moonrepo.dev/blog/proto-v0.4weekly0.5https://moonrepo.dev/blog/proto-v0.5weekly0.5https://moonrepo.dev/blog/proto-v0.6weekly0.5https://moonrepo.dev/blog/proto-v0.7weekly0.5https://moonrepo.dev/blog/proto-v0.8weekly0.5https://moonrepo.dev/blog/proto-v0.9weekly0.5https://moonrepo.dev/blog/tagsweekly0.5https://moonrepo.dev/blog/tags/actionweekly0.5https://moonrepo.dev/blog/tags/affectedweekly0.5https://moonrepo.dev/blog/tags/aliasweekly0.5https://moonrepo.dev/blog/tags/binweekly0.5https://moonrepo.dev/blog/tags/bunweekly0.5https://moonrepo.dev/blog/tags/cacheweekly0.5https://moonrepo.dev/blog/tags/canaryweekly0.5https://moonrepo.dev/blog/tags/checksumweekly0.5https://moonrepo.dev/blog/tags/ciweekly0.5https://moonrepo.dev/blog/tags/cleanweekly0.5https://moonrepo.dev/blog/tags/codeweekly0.5https://moonrepo.dev/blog/tags/configweekly0.5https://moonrepo.dev/blog/tags/constraintsweekly0.5https://moonrepo.dev/blog/tags/debugweekly0.5https://moonrepo.dev/blog/tags/denoweekly0.5https://moonrepo.dev/blog/tags/dep-graphweekly0.5https://moonrepo.dev/blog/tags/dependencyweekly0.5https://moonrepo.dev/blog/tags/detectweekly0.5https://moonrepo.dev/blog/tags/dockerweekly0.5https://moonrepo.dev/blog/tags/editorsweekly0.5https://moonrepo.dev/blog/tags/env-varsweekly0.5https://moonrepo.dev/blog/tags/errorsweekly0.5https://moonrepo.dev/blog/tags/generatorweekly0.5https://moonrepo.dev/blog/tags/gitweekly0.5https://moonrepo.dev/blog/tags/githubweekly0.5https://moonrepo.dev/blog/tags/globalweekly0.5https://moonrepo.dev/blog/tags/globalsweekly0.5https://moonrepo.dev/blog/tags/goweekly0.5https://moonrepo.dev/blog/tags/graphweekly0.5https://moonrepo.dev/blog/tags/hashweekly0.5https://moonrepo.dev/blog/tags/hasherweekly0.5https://moonrepo.dev/blog/tags/hooksweekly0.5https://moonrepo.dev/blog/tags/httpweekly0.5https://moonrepo.dev/blog/tags/hydrationweekly0.5https://moonrepo.dev/blog/tags/ignoreweekly0.5https://moonrepo.dev/blog/tags/indexweekly0.5https://moonrepo.dev/blog/tags/inheritanceweekly0.5https://moonrepo.dev/blog/tags/initweekly0.5https://moonrepo.dev/blog/tags/langweekly0.5https://moonrepo.dev/blog/tags/languageweekly0.5https://moonrepo.dev/blog/tags/lifeweekly0.5https://moonrepo.dev/blog/tags/linuxweekly0.5https://moonrepo.dev/blog/tags/localweekly0.5https://moonrepo.dev/blog/tags/logweekly0.5https://moonrepo.dev/blog/tags/loggingweekly0.5https://moonrepo.dev/blog/tags/migrateweekly0.5https://moonrepo.dev/blog/tags/monorepoweekly0.5https://moonrepo.dev/blog/tags/moonbaseweekly0.5https://moonrepo.dev/blog/tags/muslweekly0.5https://moonrepo.dev/blog/tags/nodeweekly0.5https://moonrepo.dev/blog/tags/notifierweekly0.5https://moonrepo.dev/blog/tags/npmweekly0.5https://moonrepo.dev/blog/tags/offlineweekly0.5https://moonrepo.dev/blog/tags/outdatedweekly0.5https://moonrepo.dev/blog/tags/ownersweekly0.5https://moonrepo.dev/blog/tags/ownershipweekly0.5https://moonrepo.dev/blog/tags/pinweekly0.5https://moonrepo.dev/blog/tags/pipelineweekly0.5https://moonrepo.dev/blog/tags/platformweekly0.5https://moonrepo.dev/blog/tags/pluginweekly0.5https://moonrepo.dev/blog/tags/pluginsweekly0.5https://moonrepo.dev/blog/tags/projectweekly0.5https://moonrepo.dev/blog/tags/project-graphweekly0.5https://moonrepo.dev/blog/tags/projectsweekly0.5https://moonrepo.dev/blog/tags/protoweekly0.5https://moonrepo.dev/blog/tags/proto/page/2weekly0.5https://moonrepo.dev/blog/tags/proto/page/3weekly0.5https://moonrepo.dev/blog/tags/pythonweekly0.5https://moonrepo.dev/blog/tags/qolweekly0.5https://moonrepo.dev/blog/tags/qualityweekly0.5https://moonrepo.dev/blog/tags/queryweekly0.5https://moonrepo.dev/blog/tags/railwayweekly0.5https://moonrepo.dev/blog/tags/registryweekly0.5https://moonrepo.dev/blog/tags/remote-cacheweekly0.5https://moonrepo.dev/blog/tags/rfcweekly0.5https://moonrepo.dev/blog/tags/roadmapweekly0.5https://moonrepo.dev/blog/tags/runweekly0.5https://moonrepo.dev/blog/tags/runnerweekly0.5https://moonrepo.dev/blog/tags/rustweekly0.5https://moonrepo.dev/blog/tags/schemaweekly0.5https://moonrepo.dev/blog/tags/shimweekly0.5https://moonrepo.dev/blog/tags/shorthandweekly0.5https://moonrepo.dev/blog/tags/sourceweekly0.5https://moonrepo.dev/blog/tags/surveyweekly0.5https://moonrepo.dev/blog/tags/tagweekly0.5https://moonrepo.dev/blog/tags/tagsweekly0.5https://moonrepo.dev/blog/tags/targetweekly0.5https://moonrepo.dev/blog/tags/taskweekly0.5https://moonrepo.dev/blog/tags/tasksweekly0.5https://moonrepo.dev/blog/tags/tierweekly0.5https://moonrepo.dev/blog/tags/tokensweekly0.5https://moonrepo.dev/blog/tags/tomlweekly0.5https://moonrepo.dev/blog/tags/toolweekly0.5https://moonrepo.dev/blog/tags/toolchainweekly0.5https://moonrepo.dev/blog/tags/typescriptweekly0.5https://moonrepo.dev/blog/tags/vcsweekly0.5https://moonrepo.dev/blog/tags/versionweekly0.5https://moonrepo.dev/blog/tags/vscodeweekly0.5https://moonrepo.dev/blog/tags/wasmweekly0.5https://moonrepo.dev/blog/typescript-monorepoweekly0.5https://moonrepo.dev/blog/v0.13weekly0.5https://moonrepo.dev/blog/v0.14weekly0.5https://moonrepo.dev/blog/v0.15weekly0.5https://moonrepo.dev/blog/v0.16weekly0.5https://moonrepo.dev/blog/v0.17weekly0.5https://moonrepo.dev/blog/v0.18weekly0.5https://moonrepo.dev/blog/v0.19weekly0.5https://moonrepo.dev/blog/v0.20weekly0.5https://moonrepo.dev/blog/v0.21weekly0.5https://moonrepo.dev/blog/v0.22weekly0.5https://moonrepo.dev/blog/v0.23weekly0.5https://moonrepo.dev/blog/v0.24weekly0.5https://moonrepo.dev/blog/v0.25weekly0.5https://moonrepo.dev/blog/v0.26weekly0.5https://moonrepo.dev/blog/vscode-extensionweekly0.5https://moonrepo.dev/docs/tagsweekly0.5https://moonrepo.dev/docs/tags/codeweekly0.5https://moonrepo.dev/docs/tags/codegenweekly0.5https://moonrepo.dev/docs/tags/codeownersweekly0.5https://moonrepo.dev/docs/tags/generatorweekly0.5https://moonrepo.dev/docs/tags/gitweekly0.5https://moonrepo.dev/docs/tags/git-hooksweekly0.5https://moonrepo.dev/docs/tags/hooksweekly0.5https://moonrepo.dev/docs/tags/langweekly0.5https://moonrepo.dev/docs/tags/mqlweekly0.5https://moonrepo.dev/docs/tags/ownersweekly0.5https://moonrepo.dev/docs/tags/queryweekly0.5https://moonrepo.dev/docs/tags/scaffoldweekly0.5https://moonrepo.dev/docs/tags/solidweekly0.5https://moonrepo.dev/docs/tags/solidjsweekly0.5https://moonrepo.dev/docs/tags/templateweekly0.5https://moonrepo.dev/docs/tags/vcsweekly0.5https://moonrepo.dev/moonweekly0.5https://moonrepo.dev/moonbaseweekly0.5https://moonrepo.dev/protoweekly0.5https://moonrepo.dev/searchweekly0.5https://moonrepo.dev/apiweekly0.5https://moonrepo.dev/api/reportweekly0.5https://moonrepo.dev/api/report/function/formatDurationweekly0.5https://moonrepo.dev/api/report/function/formatTimeweekly0.5https://moonrepo.dev/api/report/function/getDurationInMillisweekly0.5https://moonrepo.dev/api/report/function/getIconForStatusweekly0.5https://moonrepo.dev/api/report/function/hasFailedweekly0.5https://moonrepo.dev/api/report/function/hasPassedweekly0.5https://moonrepo.dev/api/report/function/isFlakyweekly0.5https://moonrepo.dev/api/report/function/isSlowweekly0.5https://moonrepo.dev/api/report/function/prepareReportActionsweekly0.5https://moonrepo.dev/api/report/function/sortReportweekly0.5https://moonrepo.dev/api/report/interface/PreparedActionweekly0.5https://moonrepo.dev/api/runtimeweekly0.5https://moonrepo.dev/api/runtime/function/getContextweekly0.5https://moonrepo.dev/api/runtime/interface/RuntimeContextweekly0.5https://moonrepo.dev/api/typesweekly0.5https://moonrepo.dev/api/types/interface/Actionweekly0.5https://moonrepo.dev/api/types/interface/ActionContextweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeInstallDepsweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeInstallProjectDepsweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeRunTaskweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeSetupToolweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeSyncProjectweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeSyncWorkspaceweekly0.5https://moonrepo.dev/api/types/interface/Attemptweekly0.5https://moonrepo.dev/api/types/interface/BinConfigweekly0.5https://moonrepo.dev/api/types/interface/BunpmConfigweekly0.5https://moonrepo.dev/api/types/interface/CodeownersConfigweekly0.5https://moonrepo.dev/api/types/interface/ConstraintsConfigweekly0.5https://moonrepo.dev/api/types/interface/DenoConfigweekly0.5https://moonrepo.dev/api/types/interface/DependencyConfigweekly0.5https://moonrepo.dev/api/types/interface/Durationweekly0.5https://moonrepo.dev/api/types/interface/EventActionFinishedweekly0.5https://moonrepo.dev/api/types/interface/EventActionStartedweekly0.5https://moonrepo.dev/api/types/interface/EventDependenciesInstalledweekly0.5https://moonrepo.dev/api/types/interface/EventDependenciesInstallingweekly0.5https://moonrepo.dev/api/types/interface/EventPipelineAbortedweekly0.5https://moonrepo.dev/api/types/interface/EventPipelineFinishedweekly0.5https://moonrepo.dev/api/types/interface/EventPipelineStartedweekly0.5https://moonrepo.dev/api/types/interface/EventProjectSyncedweekly0.5https://moonrepo.dev/api/types/interface/EventProjectSyncingweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputArchivedweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputArchivingweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputCacheCheckweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputHydratedweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputHydratingweekly0.5https://moonrepo.dev/api/types/interface/EventTargetRanweekly0.5https://moonrepo.dev/api/types/interface/EventTargetRunningweekly0.5https://moonrepo.dev/api/types/interface/EventToolInstalledweekly0.5https://moonrepo.dev/api/types/interface/EventToolInstallingweekly0.5https://moonrepo.dev/api/types/interface/EventWorkspaceSyncedweekly0.5https://moonrepo.dev/api/types/interface/ExperimentsConfigweekly0.5https://moonrepo.dev/api/types/interface/FileGroupweekly0.5https://moonrepo.dev/api/types/interface/GeneratorConfigweekly0.5https://moonrepo.dev/api/types/interface/HasherConfigweekly0.5https://moonrepo.dev/api/types/interface/InheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/NodeConfigweekly0.5https://moonrepo.dev/api/types/interface/NotifierConfigweekly0.5https://moonrepo.dev/api/types/interface/NpmConfigweekly0.5https://moonrepo.dev/api/types/interface/OwnersConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialBinConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialBunpmConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialCodeownersConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialConstraintsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialDenoConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialDependencyConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialExperimentsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialGeneratorConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialHasherConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialInheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialNodeConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialNotifierConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialNpmConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialOwnersConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialPnpmConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectMetadataConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectToolchainCommonToolConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectToolchainTypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectWorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectWorkspaceInheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialRunnerConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialRustConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTaskConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTaskOptionsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateFrontmatterConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableBoolSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableEnumSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableEnumValueConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableNumberSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableStringSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialVcsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialWorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialWorkspaceProjectsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialYarnConfigweekly0.5https://moonrepo.dev/api/types/interface/PnpmConfigweekly0.5https://moonrepo.dev/api/types/interface/Projectweekly0.5https://moonrepo.dev/api/types/interface/ProjectConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectMetadataConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectToolchainCommonToolConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectToolchainTypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectWorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectWorkspaceInheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/ProviderEnvironmentweekly0.5https://moonrepo.dev/api/types/interface/RunnerConfigweekly0.5https://moonrepo.dev/api/types/interface/RunReportweekly0.5https://moonrepo.dev/api/types/interface/Runtimeweekly0.5https://moonrepo.dev/api/types/interface/RustConfigweekly0.5https://moonrepo.dev/api/types/interface/TargetStateweekly0.5https://moonrepo.dev/api/types/interface/Taskweekly0.5https://moonrepo.dev/api/types/interface/TaskConfigweekly0.5https://moonrepo.dev/api/types/interface/TaskOptionsweekly0.5https://moonrepo.dev/api/types/interface/TaskOptionsConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateFrontmatterConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableBoolSettingweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableEnumSettingweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableEnumValueConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableNumberSettingweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableStringSettingweekly0.5https://moonrepo.dev/api/types/interface/ToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/TypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/VcsConfigweekly0.5https://moonrepo.dev/api/types/interface/WebhookPayloadweekly0.5https://moonrepo.dev/api/types/interface/WorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/WorkspaceProjectsConfigweekly0.5https://moonrepo.dev/api/types/interface/YarnConfigweekly0.5https://moonrepo.dev/docsweekly0.5https://moonrepo.dev/docs/cheat-sheetweekly0.5https://moonrepo.dev/docs/commandsweekly0.5https://moonrepo.dev/docs/commands/action-graphweekly0.5https://moonrepo.dev/docs/commands/binweekly0.5https://moonrepo.dev/docs/commands/checkweekly0.5https://moonrepo.dev/docs/commands/ciweekly0.5https://moonrepo.dev/docs/commands/cleanweekly0.5https://moonrepo.dev/docs/commands/completionsweekly0.5https://moonrepo.dev/docs/commands/dockerweekly0.5https://moonrepo.dev/docs/commands/docker/pruneweekly0.5https://moonrepo.dev/docs/commands/docker/scaffoldweekly0.5https://moonrepo.dev/docs/commands/docker/setupweekly0.5https://moonrepo.dev/docs/commands/generateweekly0.5https://moonrepo.dev/docs/commands/initweekly0.5https://moonrepo.dev/docs/commands/migrateweekly0.5https://moonrepo.dev/docs/commands/migrate/from-package-jsonweekly0.5https://moonrepo.dev/docs/commands/migrate/from-turborepoweekly0.5https://moonrepo.dev/docs/commands/overviewweekly0.5https://moonrepo.dev/docs/commands/projectweekly0.5https://moonrepo.dev/docs/commands/project-graphweekly0.5https://moonrepo.dev/docs/commands/queryweekly0.5https://moonrepo.dev/docs/commands/query/hashweekly0.5https://moonrepo.dev/docs/commands/query/hash-diffweekly0.5https://moonrepo.dev/docs/commands/query/projectsweekly0.5https://moonrepo.dev/docs/commands/query/tasksweekly0.5https://moonrepo.dev/docs/commands/query/touched-filesweekly0.5https://moonrepo.dev/docs/commands/runweekly0.5https://moonrepo.dev/docs/commands/setupweekly0.5https://moonrepo.dev/docs/commands/syncweekly0.5https://moonrepo.dev/docs/commands/sync/codeownersweekly0.5https://moonrepo.dev/docs/commands/sync/hooksweekly0.5https://moonrepo.dev/docs/commands/sync/projectsweekly0.5https://moonrepo.dev/docs/commands/taskweekly0.5https://moonrepo.dev/docs/commands/teardownweekly0.5https://moonrepo.dev/docs/commands/upgradeweekly0.5https://moonrepo.dev/docs/comparisonweekly0.5https://moonrepo.dev/docs/conceptsweekly0.5https://moonrepo.dev/docs/concepts/cacheweekly0.5https://moonrepo.dev/docs/concepts/file-groupweekly0.5https://moonrepo.dev/docs/concepts/file-patternweekly0.5https://moonrepo.dev/docs/concepts/projectweekly0.5https://moonrepo.dev/docs/concepts/query-langweekly0.5https://moonrepo.dev/docs/concepts/targetweekly0.5https://moonrepo.dev/docs/concepts/taskweekly0.5https://moonrepo.dev/docs/concepts/task-inheritanceweekly0.5https://moonrepo.dev/docs/concepts/tokenweekly0.5https://moonrepo.dev/docs/concepts/toolchainweekly0.5https://moonrepo.dev/docs/concepts/workspaceweekly0.5https://moonrepo.dev/docs/configweekly0.5https://moonrepo.dev/docs/config/projectweekly0.5https://moonrepo.dev/docs/config/tasksweekly0.5https://moonrepo.dev/docs/config/templateweekly0.5https://moonrepo.dev/docs/config/toolchainweekly0.5https://moonrepo.dev/docs/config/workspaceweekly0.5https://moonrepo.dev/docs/create-projectweekly0.5https://moonrepo.dev/docs/create-taskweekly0.5https://moonrepo.dev/docs/editorsweekly0.5https://moonrepo.dev/docs/editors/vscodeweekly0.5https://moonrepo.dev/docs/faqweekly0.5https://moonrepo.dev/docs/guides/ciweekly0.5https://moonrepo.dev/docs/guides/codegenweekly0.5https://moonrepo.dev/docs/guides/codeownersweekly0.5https://moonrepo.dev/docs/guides/debug-taskweekly0.5https://moonrepo.dev/docs/guides/dockerweekly0.5https://moonrepo.dev/docs/guides/examples/angularweekly0.5https://moonrepo.dev/docs/guides/examples/astroweekly0.5https://moonrepo.dev/docs/guides/examples/eslintweekly0.5https://moonrepo.dev/docs/guides/examples/jestweekly0.5https://moonrepo.dev/docs/guides/examples/nestweekly0.5https://moonrepo.dev/docs/guides/examples/nextweekly0.5https://moonrepo.dev/docs/guides/examples/nuxtweekly0.5https://moonrepo.dev/docs/guides/examples/packemonweekly0.5https://moonrepo.dev/docs/guides/examples/prettierweekly0.5https://moonrepo.dev/docs/guides/examples/reactweekly0.5https://moonrepo.dev/docs/guides/examples/remixweekly0.5https://moonrepo.dev/docs/guides/examples/solidweekly0.5https://moonrepo.dev/docs/guides/examples/storybookweekly0.5https://moonrepo.dev/docs/guides/examples/sveltekitweekly0.5https://moonrepo.dev/docs/guides/examples/typescriptweekly0.5https://moonrepo.dev/docs/guides/examples/viteweekly0.5https://moonrepo.dev/docs/guides/examples/vueweekly0.5https://moonrepo.dev/docs/guides/javascript/deno-handbookweekly0.5https://moonrepo.dev/docs/guides/javascript/node-handbookweekly0.5https://moonrepo.dev/docs/guides/javascript/typescript-eslintweekly0.5https://moonrepo.dev/docs/guides/javascript/typescript-project-refsweekly0.5https://moonrepo.dev/docs/guides/node/examplesweekly0.5https://moonrepo.dev/docs/guides/offline-modeweekly0.5https://moonrepo.dev/docs/guides/open-sourceweekly0.5https://moonrepo.dev/docs/guides/profileweekly0.5https://moonrepo.dev/docs/guides/remote-cacheweekly0.5https://moonrepo.dev/docs/guides/root-projectweekly0.5https://moonrepo.dev/docs/guides/rust/handbookweekly0.5https://moonrepo.dev/docs/guides/sharing-configweekly0.5https://moonrepo.dev/docs/guides/vcs-hooksweekly0.5https://moonrepo.dev/docs/guides/webhooksweekly0.5https://moonrepo.dev/docs/how-it-worksweekly0.5https://moonrepo.dev/docs/how-it-works/action-graphweekly0.5https://moonrepo.dev/docs/how-it-works/languagesweekly0.5https://moonrepo.dev/docs/how-it-works/project-graphweekly0.5https://moonrepo.dev/docs/installweekly0.5https://moonrepo.dev/docs/migrate-to-moonweekly0.5https://moonrepo.dev/docs/protoweekly0.5https://moonrepo.dev/docs/proto/commands/add-pluginweekly0.5https://moonrepo.dev/docs/proto/commands/aliasweekly0.5https://moonrepo.dev/docs/proto/commands/binweekly0.5https://moonrepo.dev/docs/proto/commands/cleanweekly0.5https://moonrepo.dev/docs/proto/commands/completionsweekly0.5https://moonrepo.dev/docs/proto/commands/installweekly0.5https://moonrepo.dev/docs/proto/commands/install-globalweekly0.5https://moonrepo.dev/docs/proto/commands/listweekly0.5https://moonrepo.dev/docs/proto/commands/list-globalweekly0.5https://moonrepo.dev/docs/proto/commands/list-remoteweekly0.5https://moonrepo.dev/docs/proto/commands/outdatedweekly0.5https://moonrepo.dev/docs/proto/commands/pinweekly0.5https://moonrepo.dev/docs/proto/commands/pluginsweekly0.5https://moonrepo.dev/docs/proto/commands/remove-pluginweekly0.5https://moonrepo.dev/docs/proto/commands/runweekly0.5https://moonrepo.dev/docs/proto/commands/setupweekly0.5https://moonrepo.dev/docs/proto/commands/toolsweekly0.5https://moonrepo.dev/docs/proto/commands/unaliasweekly0.5https://moonrepo.dev/docs/proto/commands/uninstallweekly0.5https://moonrepo.dev/docs/proto/commands/uninstall-globalweekly0.5https://moonrepo.dev/docs/proto/commands/upgradeweekly0.5https://moonrepo.dev/docs/proto/commands/useweekly0.5https://moonrepo.dev/docs/proto/configweekly0.5https://moonrepo.dev/docs/proto/detectionweekly0.5https://moonrepo.dev/docs/proto/faqweekly0.5https://moonrepo.dev/docs/proto/installweekly0.5https://moonrepo.dev/docs/proto/pluginsweekly0.5https://moonrepo.dev/docs/proto/toml-pluginweekly0.5https://moonrepo.dev/docs/proto/toolsweekly0.5https://moonrepo.dev/docs/proto/wasm-pluginweekly0.5https://moonrepo.dev/docs/run-taskweekly0.5https://moonrepo.dev/docs/setup-toolchainweekly0.5https://moonrepo.dev/docs/setup-workspaceweekly0.5https://moonrepo.dev/docs/terminologyweekly0.5https://moonrepo.dev/weekly0.5 \ No newline at end of file +https://moonrepo.dev/blogweekly0.5https://moonrepo.dev/blog/2023-roadmapweekly0.5https://moonrepo.dev/blog/archiveweekly0.5https://moonrepo.dev/blog/moon-v1.0weekly0.5https://moonrepo.dev/blog/moon-v1.1weekly0.5https://moonrepo.dev/blog/moon-v1.10weekly0.5https://moonrepo.dev/blog/moon-v1.11weekly0.5https://moonrepo.dev/blog/moon-v1.12weekly0.5https://moonrepo.dev/blog/moon-v1.13weekly0.5https://moonrepo.dev/blog/moon-v1.14weekly0.5https://moonrepo.dev/blog/moon-v1.15weekly0.5https://moonrepo.dev/blog/moon-v1.16weekly0.5https://moonrepo.dev/blog/moon-v1.2weekly0.5https://moonrepo.dev/blog/moon-v1.3weekly0.5https://moonrepo.dev/blog/moon-v1.4weekly0.5https://moonrepo.dev/blog/moon-v1.5weekly0.5https://moonrepo.dev/blog/moon-v1.6weekly0.5https://moonrepo.dev/blog/moon-v1.7weekly0.5https://moonrepo.dev/blog/moon-v1.8weekly0.5https://moonrepo.dev/blog/moon-v1.9weekly0.5https://moonrepo.dev/blog/moonbaseweekly0.5https://moonrepo.dev/blog/page/2weekly0.5https://moonrepo.dev/blog/page/3weekly0.5https://moonrepo.dev/blog/page/4weekly0.5https://moonrepo.dev/blog/page/5weekly0.5https://moonrepo.dev/blog/page/6weekly0.5https://moonrepo.dev/blog/protoweekly0.5https://moonrepo.dev/blog/proto-v0.11weekly0.5https://moonrepo.dev/blog/proto-v0.12weekly0.5https://moonrepo.dev/blog/proto-v0.13weekly0.5https://moonrepo.dev/blog/proto-v0.14weekly0.5https://moonrepo.dev/blog/proto-v0.15weekly0.5https://moonrepo.dev/blog/proto-v0.16weekly0.5https://moonrepo.dev/blog/proto-v0.17weekly0.5https://moonrepo.dev/blog/proto-v0.18weekly0.5https://moonrepo.dev/blog/proto-v0.19weekly0.5https://moonrepo.dev/blog/proto-v0.20weekly0.5https://moonrepo.dev/blog/proto-v0.21weekly0.5https://moonrepo.dev/blog/proto-v0.3weekly0.5https://moonrepo.dev/blog/proto-v0.4weekly0.5https://moonrepo.dev/blog/proto-v0.5weekly0.5https://moonrepo.dev/blog/proto-v0.6weekly0.5https://moonrepo.dev/blog/proto-v0.7weekly0.5https://moonrepo.dev/blog/proto-v0.8weekly0.5https://moonrepo.dev/blog/proto-v0.9weekly0.5https://moonrepo.dev/blog/tagsweekly0.5https://moonrepo.dev/blog/tags/actionweekly0.5https://moonrepo.dev/blog/tags/affectedweekly0.5https://moonrepo.dev/blog/tags/aliasweekly0.5https://moonrepo.dev/blog/tags/automationweekly0.5https://moonrepo.dev/blog/tags/binweekly0.5https://moonrepo.dev/blog/tags/bunweekly0.5https://moonrepo.dev/blog/tags/cacheweekly0.5https://moonrepo.dev/blog/tags/canaryweekly0.5https://moonrepo.dev/blog/tags/checksumweekly0.5https://moonrepo.dev/blog/tags/ciweekly0.5https://moonrepo.dev/blog/tags/cleanweekly0.5https://moonrepo.dev/blog/tags/codeweekly0.5https://moonrepo.dev/blog/tags/configweekly0.5https://moonrepo.dev/blog/tags/constraintsweekly0.5https://moonrepo.dev/blog/tags/debugweekly0.5https://moonrepo.dev/blog/tags/denoweekly0.5https://moonrepo.dev/blog/tags/dep-graphweekly0.5https://moonrepo.dev/blog/tags/dependencyweekly0.5https://moonrepo.dev/blog/tags/detectweekly0.5https://moonrepo.dev/blog/tags/dockerweekly0.5https://moonrepo.dev/blog/tags/editorsweekly0.5https://moonrepo.dev/blog/tags/env-varsweekly0.5https://moonrepo.dev/blog/tags/errorsweekly0.5https://moonrepo.dev/blog/tags/generatorweekly0.5https://moonrepo.dev/blog/tags/gitweekly0.5https://moonrepo.dev/blog/tags/githubweekly0.5https://moonrepo.dev/blog/tags/globalweekly0.5https://moonrepo.dev/blog/tags/globalsweekly0.5https://moonrepo.dev/blog/tags/goweekly0.5https://moonrepo.dev/blog/tags/graphweekly0.5https://moonrepo.dev/blog/tags/hashweekly0.5https://moonrepo.dev/blog/tags/hasherweekly0.5https://moonrepo.dev/blog/tags/hooksweekly0.5https://moonrepo.dev/blog/tags/httpweekly0.5https://moonrepo.dev/blog/tags/hydrationweekly0.5https://moonrepo.dev/blog/tags/ignoreweekly0.5https://moonrepo.dev/blog/tags/indexweekly0.5https://moonrepo.dev/blog/tags/inheritanceweekly0.5https://moonrepo.dev/blog/tags/initweekly0.5https://moonrepo.dev/blog/tags/langweekly0.5https://moonrepo.dev/blog/tags/languageweekly0.5https://moonrepo.dev/blog/tags/lifeweekly0.5https://moonrepo.dev/blog/tags/linuxweekly0.5https://moonrepo.dev/blog/tags/localweekly0.5https://moonrepo.dev/blog/tags/logweekly0.5https://moonrepo.dev/blog/tags/loggingweekly0.5https://moonrepo.dev/blog/tags/managerweekly0.5https://moonrepo.dev/blog/tags/migrateweekly0.5https://moonrepo.dev/blog/tags/monorepoweekly0.5https://moonrepo.dev/blog/tags/moonbaseweekly0.5https://moonrepo.dev/blog/tags/muslweekly0.5https://moonrepo.dev/blog/tags/nodeweekly0.5https://moonrepo.dev/blog/tags/notifierweekly0.5https://moonrepo.dev/blog/tags/npmweekly0.5https://moonrepo.dev/blog/tags/offlineweekly0.5https://moonrepo.dev/blog/tags/outdatedweekly0.5https://moonrepo.dev/blog/tags/ownersweekly0.5https://moonrepo.dev/blog/tags/ownershipweekly0.5https://moonrepo.dev/blog/tags/packageweekly0.5https://moonrepo.dev/blog/tags/pinweekly0.5https://moonrepo.dev/blog/tags/pipelineweekly0.5https://moonrepo.dev/blog/tags/platformweekly0.5https://moonrepo.dev/blog/tags/pluginweekly0.5https://moonrepo.dev/blog/tags/pluginsweekly0.5https://moonrepo.dev/blog/tags/projectweekly0.5https://moonrepo.dev/blog/tags/project-graphweekly0.5https://moonrepo.dev/blog/tags/projectsweekly0.5https://moonrepo.dev/blog/tags/protoweekly0.5https://moonrepo.dev/blog/tags/proto/page/2weekly0.5https://moonrepo.dev/blog/tags/proto/page/3weekly0.5https://moonrepo.dev/blog/tags/pythonweekly0.5https://moonrepo.dev/blog/tags/qolweekly0.5https://moonrepo.dev/blog/tags/qualityweekly0.5https://moonrepo.dev/blog/tags/queryweekly0.5https://moonrepo.dev/blog/tags/railwayweekly0.5https://moonrepo.dev/blog/tags/registryweekly0.5https://moonrepo.dev/blog/tags/remote-cacheweekly0.5https://moonrepo.dev/blog/tags/rfcweekly0.5https://moonrepo.dev/blog/tags/roadmapweekly0.5https://moonrepo.dev/blog/tags/runweekly0.5https://moonrepo.dev/blog/tags/runnerweekly0.5https://moonrepo.dev/blog/tags/rustweekly0.5https://moonrepo.dev/blog/tags/schemaweekly0.5https://moonrepo.dev/blog/tags/shimweekly0.5https://moonrepo.dev/blog/tags/shorthandweekly0.5https://moonrepo.dev/blog/tags/sourceweekly0.5https://moonrepo.dev/blog/tags/surveyweekly0.5https://moonrepo.dev/blog/tags/tagweekly0.5https://moonrepo.dev/blog/tags/tagsweekly0.5https://moonrepo.dev/blog/tags/targetweekly0.5https://moonrepo.dev/blog/tags/taskweekly0.5https://moonrepo.dev/blog/tags/tasksweekly0.5https://moonrepo.dev/blog/tags/tierweekly0.5https://moonrepo.dev/blog/tags/tokensweekly0.5https://moonrepo.dev/blog/tags/tomlweekly0.5https://moonrepo.dev/blog/tags/toolweekly0.5https://moonrepo.dev/blog/tags/toolchainweekly0.5https://moonrepo.dev/blog/tags/typescriptweekly0.5https://moonrepo.dev/blog/tags/vcsweekly0.5https://moonrepo.dev/blog/tags/versionweekly0.5https://moonrepo.dev/blog/tags/vscodeweekly0.5https://moonrepo.dev/blog/tags/wasmweekly0.5https://moonrepo.dev/blog/typescript-monorepoweekly0.5https://moonrepo.dev/blog/v0.13weekly0.5https://moonrepo.dev/blog/v0.14weekly0.5https://moonrepo.dev/blog/v0.15weekly0.5https://moonrepo.dev/blog/v0.16weekly0.5https://moonrepo.dev/blog/v0.17weekly0.5https://moonrepo.dev/blog/v0.18weekly0.5https://moonrepo.dev/blog/v0.19weekly0.5https://moonrepo.dev/blog/v0.20weekly0.5https://moonrepo.dev/blog/v0.21weekly0.5https://moonrepo.dev/blog/v0.22weekly0.5https://moonrepo.dev/blog/v0.23weekly0.5https://moonrepo.dev/blog/v0.24weekly0.5https://moonrepo.dev/blog/v0.25weekly0.5https://moonrepo.dev/blog/v0.26weekly0.5https://moonrepo.dev/blog/vscode-extensionweekly0.5https://moonrepo.dev/docs/tagsweekly0.5https://moonrepo.dev/docs/tags/codeweekly0.5https://moonrepo.dev/docs/tags/codegenweekly0.5https://moonrepo.dev/docs/tags/codeownersweekly0.5https://moonrepo.dev/docs/tags/generatorweekly0.5https://moonrepo.dev/docs/tags/gitweekly0.5https://moonrepo.dev/docs/tags/git-hooksweekly0.5https://moonrepo.dev/docs/tags/hooksweekly0.5https://moonrepo.dev/docs/tags/langweekly0.5https://moonrepo.dev/docs/tags/mqlweekly0.5https://moonrepo.dev/docs/tags/ownersweekly0.5https://moonrepo.dev/docs/tags/queryweekly0.5https://moonrepo.dev/docs/tags/scaffoldweekly0.5https://moonrepo.dev/docs/tags/solidweekly0.5https://moonrepo.dev/docs/tags/solidjsweekly0.5https://moonrepo.dev/docs/tags/templateweekly0.5https://moonrepo.dev/docs/tags/vcsweekly0.5https://moonrepo.dev/moonweekly0.5https://moonrepo.dev/moonbaseweekly0.5https://moonrepo.dev/protoweekly0.5https://moonrepo.dev/searchweekly0.5https://moonrepo.dev/apiweekly0.5https://moonrepo.dev/api/reportweekly0.5https://moonrepo.dev/api/report/function/formatDurationweekly0.5https://moonrepo.dev/api/report/function/formatTimeweekly0.5https://moonrepo.dev/api/report/function/getDurationInMillisweekly0.5https://moonrepo.dev/api/report/function/getIconForStatusweekly0.5https://moonrepo.dev/api/report/function/hasFailedweekly0.5https://moonrepo.dev/api/report/function/hasPassedweekly0.5https://moonrepo.dev/api/report/function/isFlakyweekly0.5https://moonrepo.dev/api/report/function/isSlowweekly0.5https://moonrepo.dev/api/report/function/prepareReportActionsweekly0.5https://moonrepo.dev/api/report/function/sortReportweekly0.5https://moonrepo.dev/api/report/interface/PreparedActionweekly0.5https://moonrepo.dev/api/runtimeweekly0.5https://moonrepo.dev/api/runtime/function/getContextweekly0.5https://moonrepo.dev/api/runtime/interface/RuntimeContextweekly0.5https://moonrepo.dev/api/typesweekly0.5https://moonrepo.dev/api/types/interface/Actionweekly0.5https://moonrepo.dev/api/types/interface/ActionContextweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeInstallDepsweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeInstallProjectDepsweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeRunTaskweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeSetupToolweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeSyncProjectweekly0.5https://moonrepo.dev/api/types/interface/ActionNodeSyncWorkspaceweekly0.5https://moonrepo.dev/api/types/interface/Attemptweekly0.5https://moonrepo.dev/api/types/interface/BinConfigweekly0.5https://moonrepo.dev/api/types/interface/BunpmConfigweekly0.5https://moonrepo.dev/api/types/interface/CodeownersConfigweekly0.5https://moonrepo.dev/api/types/interface/ConstraintsConfigweekly0.5https://moonrepo.dev/api/types/interface/DenoConfigweekly0.5https://moonrepo.dev/api/types/interface/DependencyConfigweekly0.5https://moonrepo.dev/api/types/interface/Durationweekly0.5https://moonrepo.dev/api/types/interface/EventActionFinishedweekly0.5https://moonrepo.dev/api/types/interface/EventActionStartedweekly0.5https://moonrepo.dev/api/types/interface/EventDependenciesInstalledweekly0.5https://moonrepo.dev/api/types/interface/EventDependenciesInstallingweekly0.5https://moonrepo.dev/api/types/interface/EventPipelineAbortedweekly0.5https://moonrepo.dev/api/types/interface/EventPipelineFinishedweekly0.5https://moonrepo.dev/api/types/interface/EventPipelineStartedweekly0.5https://moonrepo.dev/api/types/interface/EventProjectSyncedweekly0.5https://moonrepo.dev/api/types/interface/EventProjectSyncingweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputArchivedweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputArchivingweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputCacheCheckweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputHydratedweekly0.5https://moonrepo.dev/api/types/interface/EventTargetOutputHydratingweekly0.5https://moonrepo.dev/api/types/interface/EventTargetRanweekly0.5https://moonrepo.dev/api/types/interface/EventTargetRunningweekly0.5https://moonrepo.dev/api/types/interface/EventToolInstalledweekly0.5https://moonrepo.dev/api/types/interface/EventToolInstallingweekly0.5https://moonrepo.dev/api/types/interface/EventWorkspaceSyncedweekly0.5https://moonrepo.dev/api/types/interface/ExperimentsConfigweekly0.5https://moonrepo.dev/api/types/interface/FileGroupweekly0.5https://moonrepo.dev/api/types/interface/GeneratorConfigweekly0.5https://moonrepo.dev/api/types/interface/HasherConfigweekly0.5https://moonrepo.dev/api/types/interface/InheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/NodeConfigweekly0.5https://moonrepo.dev/api/types/interface/NotifierConfigweekly0.5https://moonrepo.dev/api/types/interface/NpmConfigweekly0.5https://moonrepo.dev/api/types/interface/OwnersConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialBinConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialBunpmConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialCodeownersConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialConstraintsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialDenoConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialDependencyConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialExperimentsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialGeneratorConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialHasherConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialInheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialNodeConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialNotifierConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialNpmConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialOwnersConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialPnpmConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectMetadataConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectToolchainCommonToolConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectToolchainTypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectWorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialProjectWorkspaceInheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialRunnerConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialRustConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTaskConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTaskOptionsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateFrontmatterConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableBoolSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableEnumSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableEnumValueConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableNumberSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialTemplateVariableStringSettingweekly0.5https://moonrepo.dev/api/types/interface/PartialToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialTypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialVcsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialWorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialWorkspaceProjectsConfigweekly0.5https://moonrepo.dev/api/types/interface/PartialYarnConfigweekly0.5https://moonrepo.dev/api/types/interface/PnpmConfigweekly0.5https://moonrepo.dev/api/types/interface/Projectweekly0.5https://moonrepo.dev/api/types/interface/ProjectConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectMetadataConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectToolchainCommonToolConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectToolchainTypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectWorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/ProjectWorkspaceInheritedTasksConfigweekly0.5https://moonrepo.dev/api/types/interface/ProviderEnvironmentweekly0.5https://moonrepo.dev/api/types/interface/RunnerConfigweekly0.5https://moonrepo.dev/api/types/interface/RunReportweekly0.5https://moonrepo.dev/api/types/interface/Runtimeweekly0.5https://moonrepo.dev/api/types/interface/RustConfigweekly0.5https://moonrepo.dev/api/types/interface/TargetStateweekly0.5https://moonrepo.dev/api/types/interface/Taskweekly0.5https://moonrepo.dev/api/types/interface/TaskConfigweekly0.5https://moonrepo.dev/api/types/interface/TaskOptionsweekly0.5https://moonrepo.dev/api/types/interface/TaskOptionsConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateFrontmatterConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableBoolSettingweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableEnumSettingweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableEnumValueConfigweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableNumberSettingweekly0.5https://moonrepo.dev/api/types/interface/TemplateVariableStringSettingweekly0.5https://moonrepo.dev/api/types/interface/ToolchainConfigweekly0.5https://moonrepo.dev/api/types/interface/TypeScriptConfigweekly0.5https://moonrepo.dev/api/types/interface/VcsConfigweekly0.5https://moonrepo.dev/api/types/interface/WebhookPayloadweekly0.5https://moonrepo.dev/api/types/interface/WorkspaceConfigweekly0.5https://moonrepo.dev/api/types/interface/WorkspaceProjectsConfigweekly0.5https://moonrepo.dev/api/types/interface/YarnConfigweekly0.5https://moonrepo.dev/docsweekly0.5https://moonrepo.dev/docs/cheat-sheetweekly0.5https://moonrepo.dev/docs/commandsweekly0.5https://moonrepo.dev/docs/commands/action-graphweekly0.5https://moonrepo.dev/docs/commands/binweekly0.5https://moonrepo.dev/docs/commands/checkweekly0.5https://moonrepo.dev/docs/commands/ciweekly0.5https://moonrepo.dev/docs/commands/cleanweekly0.5https://moonrepo.dev/docs/commands/completionsweekly0.5https://moonrepo.dev/docs/commands/dockerweekly0.5https://moonrepo.dev/docs/commands/docker/pruneweekly0.5https://moonrepo.dev/docs/commands/docker/scaffoldweekly0.5https://moonrepo.dev/docs/commands/docker/setupweekly0.5https://moonrepo.dev/docs/commands/generateweekly0.5https://moonrepo.dev/docs/commands/initweekly0.5https://moonrepo.dev/docs/commands/migrateweekly0.5https://moonrepo.dev/docs/commands/migrate/from-package-jsonweekly0.5https://moonrepo.dev/docs/commands/migrate/from-turborepoweekly0.5https://moonrepo.dev/docs/commands/overviewweekly0.5https://moonrepo.dev/docs/commands/projectweekly0.5https://moonrepo.dev/docs/commands/project-graphweekly0.5https://moonrepo.dev/docs/commands/queryweekly0.5https://moonrepo.dev/docs/commands/query/hashweekly0.5https://moonrepo.dev/docs/commands/query/hash-diffweekly0.5https://moonrepo.dev/docs/commands/query/projectsweekly0.5https://moonrepo.dev/docs/commands/query/tasksweekly0.5https://moonrepo.dev/docs/commands/query/touched-filesweekly0.5https://moonrepo.dev/docs/commands/runweekly0.5https://moonrepo.dev/docs/commands/setupweekly0.5https://moonrepo.dev/docs/commands/syncweekly0.5https://moonrepo.dev/docs/commands/sync/codeownersweekly0.5https://moonrepo.dev/docs/commands/sync/hooksweekly0.5https://moonrepo.dev/docs/commands/sync/projectsweekly0.5https://moonrepo.dev/docs/commands/taskweekly0.5https://moonrepo.dev/docs/commands/teardownweekly0.5https://moonrepo.dev/docs/commands/upgradeweekly0.5https://moonrepo.dev/docs/comparisonweekly0.5https://moonrepo.dev/docs/conceptsweekly0.5https://moonrepo.dev/docs/concepts/cacheweekly0.5https://moonrepo.dev/docs/concepts/file-groupweekly0.5https://moonrepo.dev/docs/concepts/file-patternweekly0.5https://moonrepo.dev/docs/concepts/projectweekly0.5https://moonrepo.dev/docs/concepts/query-langweekly0.5https://moonrepo.dev/docs/concepts/targetweekly0.5https://moonrepo.dev/docs/concepts/taskweekly0.5https://moonrepo.dev/docs/concepts/task-inheritanceweekly0.5https://moonrepo.dev/docs/concepts/tokenweekly0.5https://moonrepo.dev/docs/concepts/toolchainweekly0.5https://moonrepo.dev/docs/concepts/workspaceweekly0.5https://moonrepo.dev/docs/configweekly0.5https://moonrepo.dev/docs/config/projectweekly0.5https://moonrepo.dev/docs/config/tasksweekly0.5https://moonrepo.dev/docs/config/templateweekly0.5https://moonrepo.dev/docs/config/toolchainweekly0.5https://moonrepo.dev/docs/config/workspaceweekly0.5https://moonrepo.dev/docs/create-projectweekly0.5https://moonrepo.dev/docs/create-taskweekly0.5https://moonrepo.dev/docs/editorsweekly0.5https://moonrepo.dev/docs/editors/vscodeweekly0.5https://moonrepo.dev/docs/faqweekly0.5https://moonrepo.dev/docs/guides/ciweekly0.5https://moonrepo.dev/docs/guides/codegenweekly0.5https://moonrepo.dev/docs/guides/codeownersweekly0.5https://moonrepo.dev/docs/guides/debug-taskweekly0.5https://moonrepo.dev/docs/guides/dockerweekly0.5https://moonrepo.dev/docs/guides/examples/angularweekly0.5https://moonrepo.dev/docs/guides/examples/astroweekly0.5https://moonrepo.dev/docs/guides/examples/eslintweekly0.5https://moonrepo.dev/docs/guides/examples/jestweekly0.5https://moonrepo.dev/docs/guides/examples/nestweekly0.5https://moonrepo.dev/docs/guides/examples/nextweekly0.5https://moonrepo.dev/docs/guides/examples/nuxtweekly0.5https://moonrepo.dev/docs/guides/examples/packemonweekly0.5https://moonrepo.dev/docs/guides/examples/prettierweekly0.5https://moonrepo.dev/docs/guides/examples/reactweekly0.5https://moonrepo.dev/docs/guides/examples/remixweekly0.5https://moonrepo.dev/docs/guides/examples/solidweekly0.5https://moonrepo.dev/docs/guides/examples/storybookweekly0.5https://moonrepo.dev/docs/guides/examples/sveltekitweekly0.5https://moonrepo.dev/docs/guides/examples/typescriptweekly0.5https://moonrepo.dev/docs/guides/examples/viteweekly0.5https://moonrepo.dev/docs/guides/examples/vueweekly0.5https://moonrepo.dev/docs/guides/javascript/deno-handbookweekly0.5https://moonrepo.dev/docs/guides/javascript/node-handbookweekly0.5https://moonrepo.dev/docs/guides/javascript/typescript-eslintweekly0.5https://moonrepo.dev/docs/guides/javascript/typescript-project-refsweekly0.5https://moonrepo.dev/docs/guides/node/examplesweekly0.5https://moonrepo.dev/docs/guides/offline-modeweekly0.5https://moonrepo.dev/docs/guides/open-sourceweekly0.5https://moonrepo.dev/docs/guides/profileweekly0.5https://moonrepo.dev/docs/guides/remote-cacheweekly0.5https://moonrepo.dev/docs/guides/root-projectweekly0.5https://moonrepo.dev/docs/guides/rust/handbookweekly0.5https://moonrepo.dev/docs/guides/sharing-configweekly0.5https://moonrepo.dev/docs/guides/vcs-hooksweekly0.5https://moonrepo.dev/docs/guides/webhooksweekly0.5https://moonrepo.dev/docs/how-it-worksweekly0.5https://moonrepo.dev/docs/how-it-works/action-graphweekly0.5https://moonrepo.dev/docs/how-it-works/languagesweekly0.5https://moonrepo.dev/docs/how-it-works/project-graphweekly0.5https://moonrepo.dev/docs/installweekly0.5https://moonrepo.dev/docs/migrate-to-moonweekly0.5https://moonrepo.dev/docs/protoweekly0.5https://moonrepo.dev/docs/proto/commands/add-pluginweekly0.5https://moonrepo.dev/docs/proto/commands/aliasweekly0.5https://moonrepo.dev/docs/proto/commands/binweekly0.5https://moonrepo.dev/docs/proto/commands/cleanweekly0.5https://moonrepo.dev/docs/proto/commands/completionsweekly0.5https://moonrepo.dev/docs/proto/commands/installweekly0.5https://moonrepo.dev/docs/proto/commands/install-globalweekly0.5https://moonrepo.dev/docs/proto/commands/listweekly0.5https://moonrepo.dev/docs/proto/commands/list-globalweekly0.5https://moonrepo.dev/docs/proto/commands/list-remoteweekly0.5https://moonrepo.dev/docs/proto/commands/outdatedweekly0.5https://moonrepo.dev/docs/proto/commands/pinweekly0.5https://moonrepo.dev/docs/proto/commands/pluginsweekly0.5https://moonrepo.dev/docs/proto/commands/remove-pluginweekly0.5https://moonrepo.dev/docs/proto/commands/runweekly0.5https://moonrepo.dev/docs/proto/commands/setupweekly0.5https://moonrepo.dev/docs/proto/commands/toolsweekly0.5https://moonrepo.dev/docs/proto/commands/unaliasweekly0.5https://moonrepo.dev/docs/proto/commands/uninstallweekly0.5https://moonrepo.dev/docs/proto/commands/uninstall-globalweekly0.5https://moonrepo.dev/docs/proto/commands/upgradeweekly0.5https://moonrepo.dev/docs/proto/commands/useweekly0.5https://moonrepo.dev/docs/proto/configweekly0.5https://moonrepo.dev/docs/proto/detectionweekly0.5https://moonrepo.dev/docs/proto/faqweekly0.5https://moonrepo.dev/docs/proto/installweekly0.5https://moonrepo.dev/docs/proto/pluginsweekly0.5https://moonrepo.dev/docs/proto/toml-pluginweekly0.5https://moonrepo.dev/docs/proto/toolsweekly0.5https://moonrepo.dev/docs/proto/wasm-pluginweekly0.5https://moonrepo.dev/docs/run-taskweekly0.5https://moonrepo.dev/docs/setup-toolchainweekly0.5https://moonrepo.dev/docs/setup-workspaceweekly0.5https://moonrepo.dev/docs/terminologyweekly0.5https://moonrepo.dev/weekly0.5 \ No newline at end of file