diff --git a/404.html b/404.html index e48753f66f6..08f2e5c378c 100644 --- a/404.html +++ b/404.html @@ -12,14 +12,14 @@ - - - + + +
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 4786fb99819..b24bfc2381d 100644 --- a/api.html +++ b/api.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report.html b/api/report.html index dce44ca7cf1..9dd9a1f14a9 100644 --- a/api/report.html +++ b/api/report.html @@ -12,16 +12,16 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/formatDuration.html b/api/report/function/formatDuration.html index a9b55d25fb5..9e53ead6466 100644 --- a/api/report/function/formatDuration.html +++ b/api/report/function/formatDuration.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/formatTime.html b/api/report/function/formatTime.html index 5a133bf3040..a656558ce92 100644 --- a/api/report/function/formatTime.html +++ b/api/report/function/formatTime.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/getDurationInMillis.html b/api/report/function/getDurationInMillis.html index ccb67639376..406da30fca3 100644 --- a/api/report/function/getDurationInMillis.html +++ b/api/report/function/getDurationInMillis.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/getIconForStatus.html b/api/report/function/getIconForStatus.html index 3b489e9516d..dd66a17bd21 100644 --- a/api/report/function/getIconForStatus.html +++ b/api/report/function/getIconForStatus.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/hasFailed.html b/api/report/function/hasFailed.html index 8cad497cfe9..1bd55985685 100644 --- a/api/report/function/hasFailed.html +++ b/api/report/function/hasFailed.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/hasPassed.html b/api/report/function/hasPassed.html index 094e6bb708e..22fed80ea3d 100644 --- a/api/report/function/hasPassed.html +++ b/api/report/function/hasPassed.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/isFlaky.html b/api/report/function/isFlaky.html index 1f7ca468772..b097bc0067e 100644 --- a/api/report/function/isFlaky.html +++ b/api/report/function/isFlaky.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/isSlow.html b/api/report/function/isSlow.html index cffc69a89dd..9628e79f41b 100644 --- a/api/report/function/isSlow.html +++ b/api/report/function/isSlow.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/prepareReportActions.html b/api/report/function/prepareReportActions.html index ecce7fb9317..109448c93d8 100644 --- a/api/report/function/prepareReportActions.html +++ b/api/report/function/prepareReportActions.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/function/sortReport.html b/api/report/function/sortReport.html index 141287f2d7c..f99a602a6e7 100644 --- a/api/report/function/sortReport.html +++ b/api/report/function/sortReport.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/report/interface/PreparedAction.html b/api/report/interface/PreparedAction.html index 4922cc6e1a8..99a02f80be1 100644 --- a/api/report/interface/PreparedAction.html +++ b/api/report/interface/PreparedAction.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/runtime.html b/api/runtime.html index ba032ffe409..166edf46ae9 100644 --- a/api/runtime.html +++ b/api/runtime.html @@ -12,16 +12,16 @@ - - - + + +
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 3b6c203d840..021a82ff1dc 100644 --- a/api/runtime/function/getContext.html +++ b/api/runtime/function/getContext.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/runtime/interface/RuntimeContext.html b/api/runtime/interface/RuntimeContext.html index b3928c9e208..c96c9368f0d 100644 --- a/api/runtime/interface/RuntimeContext.html +++ b/api/runtime/interface/RuntimeContext.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
Skip to main content
+ + \ No newline at end of file diff --git a/api/types.html b/api/types.html index 7e648f1d826..9de43c470dd 100644 --- a/api/types.html +++ b/api/types.html @@ -12,16 +12,16 @@ - - - + + +
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

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: 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 | 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>
- - +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

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: 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 | 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 e238c72ade0..625c5c5d88e 100644 --- a/api/types/interface/Action.html +++ b/api/types/interface/Action.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionContext.html b/api/types/interface/ActionContext.html index 209ef1258b5..b495598e89c 100644 --- a/api/types/interface/ActionContext.html +++ b/api/types/interface/ActionContext.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content

ActionContext

Index

Properties

affectedOnly

affectedOnly: boolean

initialTargets

initialTargets: string[]

interactive

interactive: boolean

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 e62ad637102..05ed68aa7c2 100644 --- a/api/types/interface/ActionNodeInstallDeps.html +++ b/api/types/interface/ActionNodeInstallDeps.html @@ -12,14 +12,14 @@ - - - + + +
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 fcc1cc66fcd..35607d4f63a 100644 --- a/api/types/interface/ActionNodeInstallProjectDeps.html +++ b/api/types/interface/ActionNodeInstallProjectDeps.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeRunPersistentTarget.html b/api/types/interface/ActionNodeRunPersistentTarget.html index fe291de2235..42ee681bf74 100644 --- a/api/types/interface/ActionNodeRunPersistentTarget.html +++ b/api/types/interface/ActionNodeRunPersistentTarget.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/ActionNodeRunTarget.html b/api/types/interface/ActionNodeRunTarget.html index e015c4885b3..95b9a5829a4 100644 --- a/api/types/interface/ActionNodeRunTarget.html +++ b/api/types/interface/ActionNodeRunTarget.html @@ -12,14 +12,14 @@ - - - + + +
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 7dedd0d848b..a2122d7a5f9 100644 --- a/api/types/interface/ActionNodeSetupTool.html +++ b/api/types/interface/ActionNodeSetupTool.html @@ -12,14 +12,14 @@ - - - + + +
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 0f6c4dbdf48..b07cba5cf82 100644 --- a/api/types/interface/ActionNodeSyncProject.html +++ b/api/types/interface/ActionNodeSyncProject.html @@ -12,14 +12,14 @@ - - - + + +
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 aabfca5f69c..7ce4d1414cc 100644 --- a/api/types/interface/Attempt.html +++ b/api/types/interface/Attempt.html @@ -12,14 +12,14 @@ - - - + + +
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 ce3a77a5630..55234a59455 100644 --- a/api/types/interface/BinConfig.html +++ b/api/types/interface/BinConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 deb85771b94..64551c5edc7 100644 --- a/api/types/interface/CodeownersConfig.html +++ b/api/types/interface/CodeownersConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 34518e965bd..411f4a322f9 100644 --- a/api/types/interface/ConstraintsConfig.html +++ b/api/types/interface/ConstraintsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 d1284ba60e0..0df70e737fe 100644 --- a/api/types/interface/DenoConfig.html +++ b/api/types/interface/DenoConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 5af1d276d97..bcd80b69238 100644 --- a/api/types/interface/DependencyConfig.html +++ b/api/types/interface/DependencyConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 ba8507507d3..f6579ff1cbd 100644 --- a/api/types/interface/Duration.html +++ b/api/types/interface/Duration.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 a07f0e1b5c3..75cc34b8757 100644 --- a/api/types/interface/EventActionFinished.html +++ b/api/types/interface/EventActionFinished.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 4e200245b83..972bedd4d53 100644 --- a/api/types/interface/EventActionStarted.html +++ b/api/types/interface/EventActionStarted.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 51b3d6d8f80..494ec17fe1e 100644 --- a/api/types/interface/EventDependenciesInstalled.html +++ b/api/types/interface/EventDependenciesInstalled.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 4d8ca483e7b..2b4762c7882 100644 --- a/api/types/interface/EventDependenciesInstalling.html +++ b/api/types/interface/EventDependenciesInstalling.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 b97f76471a3..f6759e2f0db 100644 --- a/api/types/interface/EventPipelineAborted.html +++ b/api/types/interface/EventPipelineAborted.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 29fd9721e37..d9c7115915a 100644 --- a/api/types/interface/EventPipelineFinished.html +++ b/api/types/interface/EventPipelineFinished.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 84d9e7d59b4..e9b41eb5df6 100644 --- a/api/types/interface/EventPipelineStarted.html +++ b/api/types/interface/EventPipelineStarted.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 6feb60bb3c3..58ec70350c0 100644 --- a/api/types/interface/EventProjectSynced.html +++ b/api/types/interface/EventProjectSynced.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 50be492506f..6cccd665ae3 100644 --- a/api/types/interface/EventProjectSyncing.html +++ b/api/types/interface/EventProjectSyncing.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 a3d4b005225..c327bdc5dc2 100644 --- a/api/types/interface/EventTargetOutputArchived.html +++ b/api/types/interface/EventTargetOutputArchived.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 6b48fb9f16e..56cc984c8bb 100644 --- a/api/types/interface/EventTargetOutputArchiving.html +++ b/api/types/interface/EventTargetOutputArchiving.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 dda123c6922..b04aeec1dad 100644 --- a/api/types/interface/EventTargetOutputCacheCheck.html +++ b/api/types/interface/EventTargetOutputCacheCheck.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 c9fb87ced94..a25f3aee8f3 100644 --- a/api/types/interface/EventTargetOutputHydrated.html +++ b/api/types/interface/EventTargetOutputHydrated.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 a4a6994d07c..87a4ff5961a 100644 --- a/api/types/interface/EventTargetOutputHydrating.html +++ b/api/types/interface/EventTargetOutputHydrating.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 e19eb9ec6c4..4b8d3def399 100644 --- a/api/types/interface/EventTargetRan.html +++ b/api/types/interface/EventTargetRan.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 68240aa0e16..e64c83432d2 100644 --- a/api/types/interface/EventTargetRunning.html +++ b/api/types/interface/EventTargetRunning.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 a84f0d5c2cb..f9e7b0e4a1c 100644 --- a/api/types/interface/EventToolInstalled.html +++ b/api/types/interface/EventToolInstalled.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 51d993aebe1..c2abf445d4b 100644 --- a/api/types/interface/EventToolInstalling.html +++ b/api/types/interface/EventToolInstalling.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 3e1170a4c15..50b0ef6c55a 100644 --- a/api/types/interface/EventWorkspaceSynced.html +++ b/api/types/interface/EventWorkspaceSynced.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 ef3057876ce..48508cd5616 100644 --- a/api/types/interface/ExperimentsConfig.html +++ b/api/types/interface/ExperimentsConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/FileGroup.html b/api/types/interface/FileGroup.html index cfe78cbf2f6..77c50ff9228 100644 --- a/api/types/interface/FileGroup.html +++ b/api/types/interface/FileGroup.html @@ -12,14 +12,14 @@ - - - + + +
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 4ec8e85692a..6a19e3275fd 100644 --- a/api/types/interface/GeneratorConfig.html +++ b/api/types/interface/GeneratorConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 bc368516fef..609067e0418 100644 --- a/api/types/interface/HasherConfig.html +++ b/api/types/interface/HasherConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/InheritedTasksConfig.html b/api/types/interface/InheritedTasksConfig.html index 20fa9a181d7..037edc0e60b 100644 --- a/api/types/interface/InheritedTasksConfig.html +++ b/api/types/interface/InheritedTasksConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/NodeConfig.html b/api/types/interface/NodeConfig.html index b0f30451b44..2ec40b94f67 100644 --- a/api/types/interface/NodeConfig.html +++ b/api/types/interface/NodeConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content

NodeConfig

Index

Properties

addEnginesConstraint

addEnginesConstraint: boolean = true

aliasPackageNames

aliasPackageNames: NodeProjectAliasFormat

binExecArgs

binExecArgs: string[]

dedupeOnLockfileChange

dedupeOnLockfileChange: boolean = true

dependencyVersionFormat

dependencyVersionFormat: NodeVersionFormat

inferTasksFromScripts

inferTasksFromScripts: boolean

npm

packageManager

packageManager: NodePackageManager

pnpm

pnpm: null | PnpmConfig

syncProjectWorkspaceDependencies

syncProjectWorkspaceDependencies: boolean = 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 f7c58855ecc..9f57609f322 100644 --- a/api/types/interface/NotifierConfig.html +++ b/api/types/interface/NotifierConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 8bf6f150a44..e5b7d3fdb48 100644 --- a/api/types/interface/NpmConfig.html +++ b/api/types/interface/NpmConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 426d7407266..64421288650 100644 --- a/api/types/interface/OwnersConfig.html +++ b/api/types/interface/OwnersConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 eff59f97ca6..c8fbbf9e6a4 100644 --- a/api/types/interface/PartialBinConfig.html +++ b/api/types/interface/PartialBinConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 e79487202f9..2a93b69ba68 100644 --- a/api/types/interface/PartialCodeownersConfig.html +++ b/api/types/interface/PartialCodeownersConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 ad3e3f5444e..d2df180b016 100644 --- a/api/types/interface/PartialConstraintsConfig.html +++ b/api/types/interface/PartialConstraintsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 5fc1992dd59..a53f169f6ab 100644 --- a/api/types/interface/PartialDenoConfig.html +++ b/api/types/interface/PartialDenoConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 2a88f8e872b..c3b575c2267 100644 --- a/api/types/interface/PartialDependencyConfig.html +++ b/api/types/interface/PartialDependencyConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 c9a8045dc17..1f0649817fc 100644 --- a/api/types/interface/PartialExperimentsConfig.html +++ b/api/types/interface/PartialExperimentsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 2b58f7ac50f..af05d52d56f 100644 --- a/api/types/interface/PartialGeneratorConfig.html +++ b/api/types/interface/PartialGeneratorConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 084d1ed594f..0e554ac6f64 100644 --- a/api/types/interface/PartialHasherConfig.html +++ b/api/types/interface/PartialHasherConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 17040b2a812..77c00099be8 100644 --- a/api/types/interface/PartialInheritedTasksConfig.html +++ b/api/types/interface/PartialInheritedTasksConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 52c895c329b..6ac30eb654c 100644 --- a/api/types/interface/PartialNodeConfig.html +++ b/api/types/interface/PartialNodeConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content

PartialNodeConfig

Index

Properties

optionaladdEnginesConstraint

addEnginesConstraint?: null | boolean = null | boolean

optionalaliasPackageNames

aliasPackageNames?: null | NodeProjectAliasFormat

optionalbinExecArgs

binExecArgs?: null | string[]

optionaldedupeOnLockfileChange

dedupeOnLockfileChange?: null | boolean = null | boolean

optionaldependencyVersionFormat

dependencyVersionFormat?: null | NodeVersionFormat

optionalinferTasksFromScripts

inferTasksFromScripts?: null | boolean

optionalnpm

npm?: null | PartialNpmConfig

optionalpackageManager

packageManager?: null | NodePackageManager

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 8b82398ac8a..bc4d97fa225 100644 --- a/api/types/interface/PartialNotifierConfig.html +++ b/api/types/interface/PartialNotifierConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 0e635bbb43c..9d68bf2d056 100644 --- a/api/types/interface/PartialNpmConfig.html +++ b/api/types/interface/PartialNpmConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 ca0dd72ade6..7701bcacc23 100644 --- a/api/types/interface/PartialOwnersConfig.html +++ b/api/types/interface/PartialOwnersConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 f7da1774f03..9c58050ed77 100644 --- a/api/types/interface/PartialPnpmConfig.html +++ b/api/types/interface/PartialPnpmConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 00331dbd89e..e8bdb2a2fe5 100644 --- a/api/types/interface/PartialProjectConfig.html +++ b/api/types/interface/PartialProjectConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 7ec80948b37..2c1edc44b56 100644 --- a/api/types/interface/PartialProjectMetadataConfig.html +++ b/api/types/interface/PartialProjectMetadataConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 58994ab7890..8c0aa35478e 100644 --- a/api/types/interface/PartialProjectToolchainCommonToolConfig.html +++ b/api/types/interface/PartialProjectToolchainCommonToolConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 4132820ac9c..a0ff32247a3 100644 --- a/api/types/interface/PartialProjectToolchainConfig.html +++ b/api/types/interface/PartialProjectToolchainConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 40d5902383d..400bbb4b3da 100644 --- a/api/types/interface/PartialProjectToolchainTypeScriptConfig.html +++ b/api/types/interface/PartialProjectToolchainTypeScriptConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 a3ff0d75b49..0f4517d33ff 100644 --- a/api/types/interface/PartialProjectWorkspaceConfig.html +++ b/api/types/interface/PartialProjectWorkspaceConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 da05d561523..68c766992e9 100644 --- a/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html +++ b/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 7f29abbce90..913e60ab266 100644 --- a/api/types/interface/PartialRunnerConfig.html +++ b/api/types/interface/PartialRunnerConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 02ae43399db..c4494ec7258 100644 --- a/api/types/interface/PartialRustConfig.html +++ b/api/types/interface/PartialRustConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTaskConfig.html b/api/types/interface/PartialTaskConfig.html index 1624d504b5e..35589398071 100644 --- a/api/types/interface/PartialTaskConfig.html +++ b/api/types/interface/PartialTaskConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 ea9bc0b8357..753f8d6a7da 100644 --- a/api/types/interface/PartialTaskOptionsConfig.html +++ b/api/types/interface/PartialTaskOptionsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 f672b349846..df1cf7560d4 100644 --- a/api/types/interface/PartialTemplateConfig.html +++ b/api/types/interface/PartialTemplateConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 80d632f2a59..755832efcac 100644 --- a/api/types/interface/PartialTemplateFrontmatterConfig.html +++ b/api/types/interface/PartialTemplateFrontmatterConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 b43c8618533..f29093e438d 100644 --- a/api/types/interface/PartialTemplateVariableBoolSetting.html +++ b/api/types/interface/PartialTemplateVariableBoolSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 01155ff80c6..711e6597727 100644 --- a/api/types/interface/PartialTemplateVariableEnumSetting.html +++ b/api/types/interface/PartialTemplateVariableEnumSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 c2093b323e4..bd77738d9f5 100644 --- a/api/types/interface/PartialTemplateVariableEnumValueConfig.html +++ b/api/types/interface/PartialTemplateVariableEnumValueConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 e32f31e2ff4..85851799198 100644 --- a/api/types/interface/PartialTemplateVariableNumberSetting.html +++ b/api/types/interface/PartialTemplateVariableNumberSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 0f5d7de00c6..2f5887bbb21 100644 --- a/api/types/interface/PartialTemplateVariableStringSetting.html +++ b/api/types/interface/PartialTemplateVariableStringSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 63c3b9ae2cb..8995387d086 100644 --- a/api/types/interface/PartialToolchainConfig.html +++ b/api/types/interface/PartialToolchainConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/PartialTypeScriptConfig.html b/api/types/interface/PartialTypeScriptConfig.html index 9610b1bf290..43e42d01b75 100644 --- a/api/types/interface/PartialTypeScriptConfig.html +++ b/api/types/interface/PartialTypeScriptConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 8a9a387552f..fcd2a335192 100644 --- a/api/types/interface/PartialVcsConfig.html +++ b/api/types/interface/PartialVcsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 9bab242a614..96d946a79c2 100644 --- a/api/types/interface/PartialWorkspaceConfig.html +++ b/api/types/interface/PartialWorkspaceConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 1a83e0d9ba2..9e058738077 100644 --- a/api/types/interface/PartialWorkspaceProjectsConfig.html +++ b/api/types/interface/PartialWorkspaceProjectsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 aaa540e6cac..7fb0dc31c38 100644 --- a/api/types/interface/PartialYarnConfig.html +++ b/api/types/interface/PartialYarnConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 24c139240df..b25daafd5fe 100644 --- a/api/types/interface/PnpmConfig.html +++ b/api/types/interface/PnpmConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 2a0d3fa7d62..2ac9edde5d3 100644 --- a/api/types/interface/Project.html +++ b/api/types/interface/Project.html @@ -12,14 +12,14 @@ - - - + + +
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 9bf3e2d999e..1c60a223db1 100644 --- a/api/types/interface/ProjectConfig.html +++ b/api/types/interface/ProjectConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content

ProjectConfig

Index

Properties

$schema

$schema: string = '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 bf13eb8cf42..a56a3046996 100644 --- a/api/types/interface/ProjectMetadataConfig.html +++ b/api/types/interface/ProjectMetadataConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 9501d30de68..f33135e4225 100644 --- a/api/types/interface/ProjectToolchainCommonToolConfig.html +++ b/api/types/interface/ProjectToolchainCommonToolConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 53c85add4cd..08062649368 100644 --- a/api/types/interface/ProjectToolchainConfig.html +++ b/api/types/interface/ProjectToolchainConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 b64bc38c502..0627c825aff 100644 --- a/api/types/interface/ProjectToolchainTypeScriptConfig.html +++ b/api/types/interface/ProjectToolchainTypeScriptConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 0f6dc6df33f..ad5e968957e 100644 --- a/api/types/interface/ProjectWorkspaceConfig.html +++ b/api/types/interface/ProjectWorkspaceConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 615f2479a98..f55bb4cc388 100644 --- a/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html +++ b/api/types/interface/ProjectWorkspaceInheritedTasksConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 74d5279df26..ad49716cc35 100644 --- a/api/types/interface/ProviderEnvironment.html +++ b/api/types/interface/ProviderEnvironment.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 9752999df3d..9df623781d4 100644 --- a/api/types/interface/RunReport.html +++ b/api/types/interface/RunReport.html @@ -12,14 +12,14 @@ - - - + + +
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 6a067581371..9c83a19d920 100644 --- a/api/types/interface/RunnerConfig.html +++ b/api/types/interface/RunnerConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/api/types/interface/Runtime.html b/api/types/interface/Runtime.html index 521d62de990..b01ae3bafcc 100644 --- a/api/types/interface/Runtime.html +++ b/api/types/interface/Runtime.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 c03027ba589..ab653a0c5c4 100644 --- a/api/types/interface/RustConfig.html +++ b/api/types/interface/RustConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 b658f450adc..7d01f27dc2b 100644 --- a/api/types/interface/TargetState.html +++ b/api/types/interface/TargetState.html @@ -12,14 +12,14 @@ - - - + + +
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 d08ab2e3267..231227dca23 100644 --- a/api/types/interface/Task.html +++ b/api/types/interface/Task.html @@ -12,14 +12,14 @@ - - - + + +
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 27e169f666f..37ddf4fd142 100644 --- a/api/types/interface/TaskConfig.html +++ b/api/types/interface/TaskConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 684bf453477..2b8288e1b5a 100644 --- a/api/types/interface/TaskOptions.html +++ b/api/types/interface/TaskOptions.html @@ -12,14 +12,14 @@ - - - + + +
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 a689652f47d..add726de4fd 100644 --- a/api/types/interface/TaskOptionsConfig.html +++ b/api/types/interface/TaskOptionsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 0a253c1a0b0..e8504726257 100644 --- a/api/types/interface/TemplateConfig.html +++ b/api/types/interface/TemplateConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 980a849626f..84cab6d1c40 100644 --- a/api/types/interface/TemplateFrontmatterConfig.html +++ b/api/types/interface/TemplateFrontmatterConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 7fa7df88095..4662cccf282 100644 --- a/api/types/interface/TemplateVariableBoolSetting.html +++ b/api/types/interface/TemplateVariableBoolSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 5fb9b438a3c..b301194165f 100644 --- a/api/types/interface/TemplateVariableEnumSetting.html +++ b/api/types/interface/TemplateVariableEnumSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 593737cf054..3ab7b271698 100644 --- a/api/types/interface/TemplateVariableEnumValueConfig.html +++ b/api/types/interface/TemplateVariableEnumValueConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 8316047cd9d..62cb70ad56d 100644 --- a/api/types/interface/TemplateVariableNumberSetting.html +++ b/api/types/interface/TemplateVariableNumberSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 7a7bc8b0003..959214184fd 100644 --- a/api/types/interface/TemplateVariableStringSetting.html +++ b/api/types/interface/TemplateVariableStringSetting.html @@ -12,14 +12,14 @@ - - - + + +
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 4b5c52704cc..7162e7faf69 100644 --- a/api/types/interface/ToolchainConfig.html +++ b/api/types/interface/ToolchainConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 d1020ac9ee1..8956f6c89fc 100644 --- a/api/types/interface/TypeScriptConfig.html +++ b/api/types/interface/TypeScriptConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content

TypeScriptConfig

Index

Properties

createMissingConfig

createMissingConfig: boolean = true

projectConfigFileName

projectConfigFileName: string = 'tsconfig.json'

rootConfigFileName

rootConfigFileName: string = 'tsconfig.json'

rootOptionsConfigFileName

rootOptionsConfigFileName: string = 'tsconfig.options.json'

routeOutDirToCache

routeOutDirToCache: boolean

syncProjectReferences

syncProjectReferences: boolean = 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 785e68b49a8..d1abd7449ef 100644 --- a/api/types/interface/VcsConfig.html +++ b/api/types/interface/VcsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 5a25740c60f..41420744d06 100644 --- a/api/types/interface/WebhookPayload.html +++ b/api/types/interface/WebhookPayload.html @@ -12,14 +12,14 @@ - - - + + +
-
Skip to main content
- - +
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 8144853c458..a2c357dcd56 100644 --- a/api/types/interface/WorkspaceConfig.html +++ b/api/types/interface/WorkspaceConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content

WorkspaceConfig

Index

Properties

$schema

$schema: string = 'https://moonrepo.dev/schemas/workspace.json'

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 = 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 17ed467363f..5ea5eeca508 100644 --- a/api/types/interface/WorkspaceProjectsConfig.html +++ b/api/types/interface/WorkspaceProjectsConfig.html @@ -12,14 +12,14 @@ - - - + + +
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 418925036bb..16e666730f0 100644 --- a/api/types/interface/YarnConfig.html +++ b/api/types/interface/YarnConfig.html @@ -12,14 +12,14 @@ - - - + + +
Skip to main content
- - + + \ No newline at end of file diff --git a/assets/css/styles.13722164.css b/assets/css/styles.13722164.css new file mode 100644 index 00000000000..d2091024550 --- /dev/null +++ b/assets/css/styles.13722164.css @@ -0,0 +1 @@ +@import url(https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&display=swap);.col,.container{padding:0 var(--ifm-spacing-horizontal)}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.button,.dropdown__link,.sr-only,.text--truncate,.truncate{white-space:nowrap}.text--truncate,.text-ellipsis,.truncate{text-overflow:ellipsis}.from-pink-400,.from-purple-600,.from-slate-600,.from-slate-900,.from-teal-400,.from-yellow-300{--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.bg-\[\#000e19\],.bg-blurple-400,.bg-gray-100,.bg-gray-50,.bg-green-100,.bg-orange-100,.bg-pink-100,.bg-pink-600,.bg-purple-600,.bg-red-100,.bg-slate-800,.bg-slate-900,.bg-teal-600,.bg-white{--tw-bg-opacity:1}.hover\:text-blurple-500:hover,.hover\:text-white:hover,.text-blurple-300,.text-blurple-400,.text-gray-200,.text-gray-600,.text-gray-700,.text-gray-900,.text-green-500,.text-green-600,.text-green-900,.text-orange-900,.text-pink-500,.text-pink-600,.text-pink-900,.text-purple-400,.text-purple-500,.text-purple-600,.text-purple-700,.text-red-900,.text-slate-900,.text-teal-600,.text-teal-700,.text-white{--tw-text-opacity:1}.toggleButton_MMFG,html{-webkit-tap-highlight-color:transparent}.close,.float-right,.tsd-header-flags{float:right}.codicon[class*=codicon-],html{-webkit-font-smoothing:antialiased}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--moon-color-current:currentColor;--moon-color-transparent:transparent;--moon-color-black:#000;--moon-color-white:#fff;--moon-color-blurple-50:#dbd5f4;--moon-color-blurple-100:#b7abe8;--moon-color-blurple-200:#9282dd;--moon-color-blurple-300:#6e58d1;--moon-color-blurple-400:#4a2ec6;--moon-color-blurple-500:#4329b2;--moon-color-blurple-600:#3b259e;--moon-color-blurple-700:#34208b;--moon-color-blurple-800:#251763;--moon-color-blurple-900:#160e3b;--moon-color-gray-50:#f2f4f8;--moon-color-gray-100:#e5e9f1;--moon-color-gray-200:#d7dfe9;--moon-color-gray-300:#cad4e2;--moon-color-gray-400:#bdc9db;--moon-color-gray-500:#aab5c5;--moon-color-gray-600:#97a1af;--moon-color-gray-700:#848d99;--moon-color-gray-800:#5f656e;--moon-color-gray-900:#393c42;--moon-color-green-50:#edf5cc;--moon-color-green-100:#dbeb99;--moon-color-green-200:#c9e166;--moon-color-green-300:#b7d733;--moon-color-green-400:#a5cd00;--moon-color-green-500:#95b900;--moon-color-green-600:#84a400;--moon-color-green-700:#739000;--moon-color-green-800:#637b00;--moon-color-green-900:#425200;--moon-color-lavendar-50:#eee4ff;--moon-color-lavendar-100:#dcc9ff;--moon-color-lavendar-200:#cbafff;--moon-color-lavendar-300:#b994ff;--moon-color-lavendar-400:#a879ff;--moon-color-lavendar-500:#976de6;--moon-color-lavendar-600:#8661cc;--moon-color-lavendar-700:#7655b3;--moon-color-lavendar-800:#543d80;--moon-color-lavendar-900:#32244c;--moon-color-orange-50:#ffebd3;--moon-color-orange-100:#ffd7a7;--moon-color-orange-200:#ffc37c;--moon-color-orange-300:#ffaf50;--moon-color-orange-400:#ff9b24;--moon-color-orange-500:#e68c20;--moon-color-orange-600:#cc7c1d;--moon-color-orange-700:#b36d19;--moon-color-orange-800:#804e12;--moon-color-orange-900:#4c2e0b;--moon-color-pink-50:#ffd7ff;--moon-color-pink-100:#ffbcff;--moon-color-pink-200:#ffafff;--moon-color-pink-300:#ff94ff;--moon-color-pink-400:#ff79ff;--moon-color-pink-500:#e66de6;--moon-color-pink-600:#cc61cc;--moon-color-pink-700:#b355b3;--moon-color-pink-800:#803d80;--moon-color-pink-900:#4c244c;--moon-color-purple-50:#f1eefe;--moon-color-purple-100:#d4cbfb;--moon-color-purple-200:#c5bafa;--moon-color-purple-300:#b7a9f9;--moon-color-purple-400:#9a87f7;--moon-color-purple-500:#8c75f5;--moon-color-purple-600:#6f53f3;--moon-color-purple-700:#5942c2;--moon-color-purple-800:#433292;--moon-color-purple-900:#2c2161;--moon-color-red-50:#ffced3;--moon-color-red-100:#ffadb5;--moon-color-red-200:#ff9da6;--moon-color-red-300:#ff7c89;--moon-color-red-400:#ff5b6b;--moon-color-red-500:#e65260;--moon-color-red-600:#cc4956;--moon-color-red-700:#b3404b;--moon-color-red-800:#802e36;--moon-color-red-900:#4c1b20;--moon-color-slate-50:#99aab7;--moon-color-slate-100:#677f92;--moon-color-slate-200:#34556e;--moon-color-slate-300:#1a3f5c;--moon-color-slate-400:#012a4a;--moon-color-slate-500:#01223b;--moon-color-slate-600:#01192c;--moon-color-slate-700:#011525;--moon-color-slate-800:#00111e;--moon-color-slate-900:#00080f;--moon-color-teal-50:#e4f7fb;--moon-color-teal-100:#c9eef6;--moon-color-teal-200:#afe6f2;--moon-color-teal-300:#94dded;--moon-color-teal-400:#79d5e9;--moon-color-teal-500:#6dc0d2;--moon-color-teal-600:#61aaba;--moon-color-teal-700:#5595a3;--moon-color-teal-800:#49808c;--moon-color-teal-900:#30555d;--moon-color-yellow-50:#fefce8;--moon-color-yellow-100:#fef9c3;--moon-color-yellow-200:#fef08a;--moon-color-yellow-300:#fde047;--moon-color-yellow-400:#facc15;--moon-color-yellow-500:#eab308;--moon-color-yellow-600:#ca8a04;--moon-color-yellow-700:#a16207;--moon-color-yellow-800:#854d0e;--moon-color-yellow-900:#713f12;--moon-color-yellow-950:#422006;--moon-font-family-sans:"Plus Jakarta Sans",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--moon-font-family-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--moon-font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--moon-margin-0:0rem;--moon-margin-1:0.5rem;--moon-margin-2:1rem;--moon-margin-3:1.5rem;--moon-margin-4:2rem;--moon-margin-5:2.5rem;--moon-margin-6:3rem;--moon-margin-7:3.5rem;--moon-margin-8:4rem;--moon-margin-9:4.5rem;--moon-margin-10:5rem;--moon-margin-auto:auto;--moon-margin-0_25:0.125rem;--moon-margin-0_5:0.25rem;--moon-margin-1_5:0.75rem;--moon-margin-2_5:1.25rem;--moon-padding-0:0rem;--moon-padding-1:0.5rem;--moon-padding-2:1rem;--moon-padding-3:1.5rem;--moon-padding-4:2rem;--moon-padding-5:2.5rem;--moon-padding-6:3rem;--moon-padding-7:3.5rem;--moon-padding-8:4rem;--moon-padding-9:4.5rem;--moon-padding-10:5rem;--moon-padding-0_25:0.125rem;--moon-padding-0_5:0.25rem;--moon-padding-1_5:0.75rem;--moon-padding-2_5:1.25rem;--docusaurus-announcement-bar-height:auto;--tsd-muted-text:var(--ifm-color-secondary-darkest);--tsd-font-small:var(--ifm-h6-font-size);--tsd-spacing-vertical:0.75rem;--tsd-spacing-vertical-full:2rem;--tsd-spacing-horizontal:1rem;--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_qoTc article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_l0OV{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.items-start,.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.items-center,.menuExternalLink_BiEj,.row--align-center{align-items:center}.items-stretch,.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width);width:100%}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.max-w-full,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList_J5MA{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration);text-decoration:none}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal);background-color:var(--ifm-blockquote-background-color)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_XzR1 .wordWrapButtonIcon_HV9T{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.capitalize,.text--capitalize{text-transform:capitalize}.lowercase,.text--lowercase{text-transform:lowercase}.admonitionHeading_P5_N,.alert__heading,.text--uppercase,.uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);width:var(--ifm-avatar-photo-size)}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.inline-block{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button,.grow{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_BE9Z:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links,.mb-2{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_tjFy article>:first-child,.docItemContainer_tjFy header+*,.footer__item,.mt-0,.tsd-description>:first-child,.tsd-index-list li+li,.tsd-panel-content>:first-child{margin-top:0}.admonitionContent_yySL>:last-child,.cardContainer_H47c :last-child,.collapsibleContent_Fd2D>:last-child,.footer__items,.mb-0,.tabItem_wHwb>:last-child{margin-bottom:0}.codeBlockStandalone_wQog,.p-0,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_Kdtz{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child),.mt-0\.5{margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_IpIu[data-collapsed=false].isBrowser_QD4r>summary:before,.details_IpIu[open]:not(.isBrowser_QD4r)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;bottom:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.flex,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_t7IR,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.h-full,.navbar__logo img,body,html{height:100%}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.m-0,.menu__list hr,.navbar__items--center .navbar__brand,.tsd-parameters h5,.tsd-parameters-title,.tsd-returns-title,.tsd-type-parameters-title{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.cursor-pointer,.pills__item,.tabs__item,.tsd-pressable{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.inline-flex,.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_Ony9:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_QWGu>li)>.containsTaskList_QWGu{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover,html[data-theme=light] .tsd-panel-header{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--ifm-color-primary-lightest:var(--moon-color-purple-100);--ifm-color-primary-lighter:var(--moon-color-purple-200);--ifm-color-primary-light:var(--moon-color-purple-300);--ifm-color-primary:var(--moon-color-purple-400);--ifm-color-primary-dark:var(--moon-color-purple-500);--ifm-color-primary-darker:var(--moon-color-purple-600);--ifm-color-primary-darkest:var(--moon-color-purple-700);--ifm-color-secondary:var(--moon-color-slate-500);--ifm-color-success:var(--moon-color-green-500);--ifm-color-info:var(--moon-color-teal-500);--ifm-color-warning:var(--moon-color-yellow-500);--ifm-color-danger:var(--moon-color-red-500);--ifm-color-emphasis-200:var(--moon-color-slate-600);--ifm-color-emphasis-300:var(--moon-color-slate-700);--ifm-background-color:var(--moon-color-slate-800);--ifm-background-surface-color:var(--moon-color-slate-600);--ifm-code-background:hsla(0,0%,100%,.075);--ifm-menu-color-background-active:var(--moon-color-purple-600);--ifm-menu-color-background-hover:var(--moon-color-slate-600);--ifm-menu-color:var(--moon-color-purple-50);--ifm-menu-color-active:var(--moon-color-white);--ifm-toc-link-color:var(--moon-color-purple-50);--ifm-link-hover-color:var(--moon-color-purple-300);--ifm-blockquote-border-color:var(--moon-color-teal-300);--ifm-blockquote-background-color:var(--moon-color-slate-600);--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container,.w-\[100\%\],.w-full{width:100%}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.markdown,.relative{position:relative}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-1{top:.5rem}.top-1\.5{top:.75rem}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.m-3{margin:1.5rem}.mx-2{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-bottom:2rem;margin-top:2rem}.mb-0\.5{margin-bottom:.25rem}.mb-1{margin-bottom:.5rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.25rem}.ml-1{margin-left:.5rem}.ml-2{margin-left:1rem}.ml-4{margin-left:2rem}.mr-1,.tsd-kind-icon .codicon{margin-right:.5rem}.mr-2{margin-right:1rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.loader_DZsO,.mt-4{margin-top:2rem}.docusaurus-mt-lg,.mt-6{margin-top:3rem}.block,svg{display:block}.inline,.tags_Ow0B,pre .table{display:inline}.table{display:table}.grid{display:grid}.contents{display:contents}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_y0RQ,.hidden,.sidebarLogo_CYvI,.themedImage_BQGR,.tsd-panel-content:empty,[data-theme=dark] .lightToggleIcon_lgto,[data-theme=light] .darkToggleIcon_U96C,html[data-announcement-bar-initially-dismissed=true] .announcementBar_zJRd{display:none}.h-3{height:1.5rem}.w-1\/4{width:25%}.w-3{width:1.5rem}.w-3\/4{width:75%}.w-5\/6{width:83.333333%}.w-9{width:4.5rem}.w-auto{width:auto}.min-w-0{min-width:0}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow-0,.grow-0{flex-grow:0}.rotate-180{--tw-rotate:180deg}.hover\:scale-105:hover,.hover\:scale-110:hover,.rotate-180,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.blogPostFooterDetailsFull_JgJa,.flex-col{flex-direction:column}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}.gap-4{gap:2rem}.gap-6{gap:3rem}.gap-8{gap:4rem}.gap-x-1{column-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.text-clip{text-overflow:clip}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-solid{border-style:solid}.border-gray-200{--tw-border-opacity:1;border-color:rgb(215 223 233/var(--tw-border-opacity))}.border-gray-200\/75{border-color:rgba(215,223,233,.75)}.border-gray-400{--tw-border-opacity:1;border-color:rgb(189 201 219/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(153 170 183/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(1 34 59/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-\[\#000e19\]{background-color:rgb(0 14 25/var(--tw-bg-opacity))}.bg-black\/20{background-color:rgba(0,0,0,.2)}.bg-blurple-400{background-color:rgb(74 46 198/var(--tw-bg-opacity))}.bg-gray-100{background-color:rgb(229 233 241/var(--tw-bg-opacity))}.bg-gray-50{background-color:rgb(242 244 248/var(--tw-bg-opacity))}.bg-green-100{background-color:rgb(219 235 153/var(--tw-bg-opacity))}.bg-orange-100{background-color:rgb(255 215 167/var(--tw-bg-opacity))}.bg-pink-100{background-color:rgb(255 188 255/var(--tw-bg-opacity))}.bg-pink-600{background-color:rgb(204 97 204/var(--tw-bg-opacity))}.bg-purple-600{background-color:rgb(111 83 243/var(--tw-bg-opacity))}.bg-red-100{background-color:rgb(255 173 181/var(--tw-bg-opacity))}.bg-slate-800{background-color:rgb(0 17 30/var(--tw-bg-opacity))}.bg-slate-900{background-color:rgb(0 8 15/var(--tw-bg-opacity))}.bg-teal-600{background-color:rgb(97 170 186/var(--tw-bg-opacity))}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-bl{background-image:linear-gradient(to bottom left,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-pink-400{--tw-gradient-from:#ff79ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,121,255,0) var(--tw-gradient-to-position)}.from-purple-600{--tw-gradient-from:#6f53f3 var(--tw-gradient-from-position);--tw-gradient-to:rgba(111,83,243,0) var(--tw-gradient-to-position)}.from-slate-600{--tw-gradient-from:#01192c var(--tw-gradient-from-position);--tw-gradient-to:rgba(1,25,44,0) var(--tw-gradient-to-position)}.from-slate-900{--tw-gradient-from:#00080f var(--tw-gradient-from-position);--tw-gradient-to:rgba(0,8,15,0) var(--tw-gradient-to-position)}.from-teal-400{--tw-gradient-from:#79d5e9 var(--tw-gradient-from-position);--tw-gradient-to:rgba(121,213,233,0) var(--tw-gradient-to-position)}.from-yellow-300{--tw-gradient-from:#fde047 var(--tw-gradient-from-position);--tw-gradient-to:rgba(253,224,71,0) var(--tw-gradient-to-position)}.via-blurple-600{--tw-gradient-to:rgba(59,37,158,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#3b259e var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-pink-900{--tw-gradient-to:rgba(76,36,76,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#4c244c var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-purple-600{--tw-gradient-to:rgba(111,83,243,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#6f53f3 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-teal-800{--tw-gradient-to:rgba(73,128,140,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#49808c var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-blurple-600{--tw-gradient-to:#3b259e var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to:#84a400 var(--tw-gradient-to-position)}.to-red-400{--tw-gradient-to:#ff5b6b var(--tw-gradient-to-position)}.to-slate-100{--tw-gradient-to:#677f92 var(--tw-gradient-to-position)}.to-slate-600{--tw-gradient-to:#01192c var(--tw-gradient-to-position)}.to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.p-0\.5{padding:.25rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-4{padding:2rem}.p-6{padding:3rem}.px-1{padding-left:.5rem;padding-right:.5rem}.px-2{padding-left:1rem;padding-right:1rem}.px-3{padding-left:1.5rem;padding-right:1.5rem}.px-4{padding-left:2rem;padding-right:2rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.25rem;padding-top:.25rem}.py-1{padding-bottom:.5rem;padding-top:.5rem}.py-10{padding-bottom:5rem;padding-top:5rem}.py-2{padding-bottom:1rem;padding-top:1rem}.py-3{padding-bottom:1.5rem;padding-top:1.5rem}.py-4{padding-bottom:2rem;padding-top:2rem}.pb-6{padding-bottom:3rem}.pl-1{padding-left:.5rem}.pl-2{padding-left:1rem}.pl-4{padding-left:2rem}.pl-5{padding-left:2.5rem}.pr-2{padding-right:1rem}.pt-1{padding-top:.5rem}.pt-2{padding-top:1rem}.pt-3{padding-top:1.5rem}.text-left{text-align:left}.text-center,.tsd-footer{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Plus Jakarta Sans,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal,.tsd-generics{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.tracking-wider{letter-spacing:.05em}.text-blurple-300{color:rgb(110 88 209/var(--tw-text-opacity))}.text-blurple-400{color:rgb(74 46 198/var(--tw-text-opacity))}.text-gray-200{color:rgb(215 223 233/var(--tw-text-opacity))}.text-gray-600{color:rgb(151 161 175/var(--tw-text-opacity))}.text-gray-700{color:rgb(132 141 153/var(--tw-text-opacity))}.hover\:text-gray-800:hover,.text-gray-800{--tw-text-opacity:1;color:rgb(95 101 110/var(--tw-text-opacity))}.text-gray-900{color:rgb(57 60 66/var(--tw-text-opacity))}.text-green-500{color:rgb(149 185 0/var(--tw-text-opacity))}.text-green-600{color:rgb(132 164 0/var(--tw-text-opacity))}.text-green-900{color:rgb(66 82 0/var(--tw-text-opacity))}.text-orange-900{color:rgb(76 46 11/var(--tw-text-opacity))}.text-pink-500{color:rgb(230 109 230/var(--tw-text-opacity))}.text-pink-600{color:rgb(204 97 204/var(--tw-text-opacity))}.text-pink-900{color:rgb(76 36 76/var(--tw-text-opacity))}.text-purple-400{color:rgb(154 135 247/var(--tw-text-opacity))}.text-purple-500{color:rgb(140 117 245/var(--tw-text-opacity))}.text-purple-600{color:rgb(111 83 243/var(--tw-text-opacity))}.text-purple-700{color:rgb(89 66 194/var(--tw-text-opacity))}.text-red-900{color:rgb(76 27 32/var(--tw-text-opacity))}.text-slate-900{color:rgb(0 8 15/var(--tw-text-opacity))}.text-teal-600{color:rgb(97 170 186/var(--tw-text-opacity))}.text-teal-700{color:rgb(85 149 163/var(--tw-text-opacity))}.hover\:text-white:hover,.text-white{color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder-gray-600::placeholder{--tw-placeholder-opacity:1;color:rgb(151 161 175/var(--tw-placeholder-opacity))}.codicon-modifier-disabled,.opacity-50{opacity:.5}.opacity-60{opacity:.6}.focus\:outline-none:focus,.outline-none{outline:transparent solid 2px;outline-offset:2px}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:bg-blurple-500:hover{--tw-bg-opacity:1;background-color:rgb(67 41 178/var(--tw-bg-opacity))}.hover\:bg-gray-100\/90:hover{background-color:rgba(229,233,241,.9)}.hover\:text-blurple-500:hover{color:rgb(67 41 178/var(--tw-text-opacity))}:is(.dark .dark\:border-slate-400){--tw-border-opacity:1;border-color:rgb(1 42 74/var(--tw-border-opacity))}:is(.dark .dark\:border-slate-900\/75){border-color:rgba(0,8,15,.75)}:is(.dark .dark\:border-transparent){border-color:transparent}:is(.dark .dark\:bg-purple-600){--tw-bg-opacity:1;background-color:rgb(111 83 243/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-600){--tw-bg-opacity:1;background-color:rgb(1 25 44/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1;background-color:rgb(1 21 37/var(--tw-bg-opacity))}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1;color:rgb(229 233 241/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-50){--tw-text-opacity:1;color:rgb(242 244 248/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-600){--tw-text-opacity:1;color:rgb(151 161 175/var(--tw-text-opacity))}:is(.dark .dark\:text-purple-400){--tw-text-opacity:1;color:rgb(154 135 247/var(--tw-text-opacity))}:is(.dark .dark\:text-slate-100){--tw-text-opacity:1;color:rgb(103 127 146/var(--tw-text-opacity))}:is(.dark .dark\:hover\:bg-purple-500:hover){--tw-bg-opacity:1;background-color:rgb(140 117 245/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-slate-600:hover){--tw-bg-opacity:1;background-color:rgb(1 25 44/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-gray-500:hover){--tw-text-opacity:1;color:rgb(170 181 197/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-purple-200:hover){--tw-text-opacity:1;color:rgb(197 186 250/var(--tw-text-opacity))}html:root{--ifm-toc-border-color:transparent;--ifm-font-family-base:var(--moon-font-family-sans);--ifm-font-family-monospace:var(--moon-font-family-mono);--ifm-navbar-background-color:var(--moon-color-slate-900);--ifm-navbar-link-color:var(--moon-color-purple-50);--ifm-navbar-link-hover-color:var(--moon-color-purple-400);--ifm-code-font-size:95%;--ifm-code-padding-vertical:var(--moon-padding-0_25);--ifm-code-padding-horizontal:var(--moon-padding-0_5);--doc-sidebar-width:350px;--ifm-menu-link-padding-vertical:var(--moon-padding-1);--ifm-menu-link-padding-horizontal:var(--moon-padding-1_5);--ifm-toc-padding-vertical:var(--moon-padding-1);--ifm-toc-padding-horizontal:var(--moon-padding-1);--ifm-leading-desktop:1.5;--ifm-list-item-margin:var(--moon-margin-1);--ifm-blockquote-padding-vertical:var(--moon-padding-1);--ifm-blockquote-padding-horizontal:var(--moon-padding-1_5);--ifm-blockquote-border-left-width:4px;--docusaurus-highlighted-code-line-bg:hsla(0,0%,100%,.05)}html[data-theme=light]{--ifm-color-primary-lightest:var(--moon-color-blurple-100);--ifm-color-primary-lighter:var(--moon-color-blurple-200);--ifm-color-primary-light:var(--moon-color-blurple-300);--ifm-color-primary:var(--moon-color-blurple-400);--ifm-color-primary-dark:var(--moon-color-blurple-600);--ifm-color-primary-darker:var(--moon-color-blurple-700);--ifm-color-primary-darkest:var(--moon-color-blurple-800);--ifm-color-secondary:var(--moon-color-slate-600);--ifm-color-success:var(--moon-color-green-600);--ifm-color-info:var(--moon-color-teal-600);--ifm-color-warning:var(--moon-color-yellow-600);--ifm-color-danger:var(--moon-color-red-600);--ifm-color-emphasis-200:var(--moon-color-gray-600);--ifm-color-emphasis-300:var(--moon-color-gray-700);--ifm-menu-color-background-active:var(--moon-color-blurple-50);--ifm-menu-color-background-hover:var(--moon-color-gray-50);--ifm-menu-color:var(--moon-color-gray-800);--ifm-menu-color-active:var(--moon-color-blurple-600);--ifm-toc-link-color:var(--moon-color-gray-800);--ifm-link-hover-color:var(--moon-color-blurple-800);--ifm-blockquote-border-color:var(--moon-color-teal-400);--ifm-blockquote-background-color:var(--moon-color-gray-100)}html[data-theme=light] .navbar-sidebar__item{background-color:var(--moon-color-white)}.navbar__logo{margin-bottom:-6px;width:125px}.navbar-sidebar__brand button:hover,.navbar-sidebar__close:hover,.navbar__items>div,.navbar__toggle:hover{color:var(--moon-color-white)}.navbar-sidebar__brand button,.navbar-sidebar__close,.navbar__toggle{color:var(--moon-color-gray-300)}.menu__list .menu__list,.menu__list-item:not(:first-child),ul ul{margin-top:var(--moon-padding-1)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_oPtH{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_oPtH:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_J5rP{line-height:0;padding:0}.content_bSb_{font-size:85%;padding:5px 0;text-align:center}.content_bSb_ a{color:inherit;text-decoration:underline}.announcementBar_zJRd{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_NpUd{flex:0 0 10px}.announcementBarClose_Jjdj{align-self:stretch;flex:0 0 30px}.toggle_ki11{height:2rem;width:2rem}.toggleButton_MMFG{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_MMFG:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_Uw7m{cursor:not-allowed}.darkNavbarColorModeToggle_m8pZ:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_bGx0,[data-theme=light] .themedImage--light_HAxW{display:initial}.iconExternalLink_nPrP{margin-left:.3rem}.iconLanguage_kvP7{margin-right:5px;vertical-align:text-bottom}.navbarHideable_hhpl{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nmcs{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_WE6Q{color:red;white-space:pre-wrap}.footerLogoLink_tutC{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_tutC:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_MB5r{display:flex;flex:1 0 auto;flex-direction:column}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_CLW8{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_DQfJ{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_iZB2,.sidebarItemList_rvuc{font-size:.9rem}.sidebarItem__RMN{margin-top:.7rem}.sidebarItemLink_Ony9{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_MJ75{color:var(--ifm-color-primary)!important}.cardContainer_H47c{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 rgba(0,0,0,.15);transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_H47c:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 rgba(0,0,0,.2)}.cardTitle_tTnA{font-size:1.2rem}.cardDescription_rTl4{font-size:.8rem}.searchQueryInput_RVvj,.searchVersionInput_QmSs{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_RVvj:focus,.searchVersionInput_QmSs:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_RVvj::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_Vh0c{font-size:.9rem;font-weight:700}.algoliaLogo_yiAH{max-width:150px}.algoliaLogoPathFill_tzCx{fill:var(--ifm-font-color-base)}.searchResultItem_q31K{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_Iq68{font-weight:400;margin-bottom:0}.searchResultItemPath_pr04{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_fqhL{font-style:italic;margin:.5rem 0 0}.loadingSpinner_hU64{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.authorCol_v1VX{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_RxZ1{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_iWtj{margin-left:.3rem;margin-right:.3rem}@font-face{font-display:block;font-family:codicon;src:url(/assets/fonts/codicon-b797181c93b3755f4fa1258a4cca14d4.ttf) format("truetype")}@keyframes a{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:1.5s steps(30) infinite a}.codicon-modifier-hidden{opacity:0}.codicon-loading{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.codicon-add:before,.codicon-gist-new:before,.codicon-plus:before,.codicon-repo-create:before{content:"\ea60"}.codicon-light-bulb:before,.codicon-lightbulb:before{content:"\ea61"}.codicon-repo-delete:before,.codicon-repo:before{content:"\ea62"}.codicon-gist-fork:before,.codicon-repo-forked:before{content:"\ea63"}.codicon-git-pull-request-abandoned:before,.codicon-git-pull-request:before{content:"\ea64"}.codicon-keyboard:before,.codicon-record-keys:before{content:"\ea65"}.codicon-tag-add:before,.codicon-tag-remove:before,.codicon-tag:before{content:"\ea66"}.codicon-person-filled:before,.codicon-person-follow:before,.codicon-person-outline:before,.codicon-person:before{content:"\ea67"}.codicon-git-branch-create:before,.codicon-git-branch-delete:before,.codicon-git-branch:before,.codicon-source-control:before{content:"\ea68"}.codicon-mirror-public:before,.codicon-mirror:before{content:"\ea69"}.codicon-star-add:before,.codicon-star-delete:before,.codicon-star-empty:before,.codicon-star:before{content:"\ea6a"}.codicon-comment-add:before,.codicon-comment:before{content:"\ea6b"}.codicon-alert:before,.codicon-warning:before{content:"\ea6c"}.codicon-search-save:before,.codicon-search:before{content:"\ea6d"}.codicon-log-out:before,.codicon-sign-out:before{content:"\ea6e"}.codicon-log-in:before,.codicon-sign-in:before{content:"\ea6f"}.codicon-eye-unwatch:before,.codicon-eye-watch:before,.codicon-eye:before{content:"\ea70"}.codicon-circle-filled:before,.codicon-close-dirty:before,.codicon-debug-breakpoint-disabled:before,.codicon-debug-breakpoint:before,.codicon-debug-hint:before,.codicon-primitive-dot:before{content:"\ea71"}.codicon-primitive-square:before{content:"\ea72"}.codicon-edit:before,.codicon-pencil:before{content:"\ea73"}.codicon-info:before,.codicon-issue-opened:before{content:"\ea74"}.codicon-gist-private:before,.codicon-git-fork-private:before,.codicon-lock:before,.codicon-mirror-private:before{content:"\ea75"}.codicon-close:before,.codicon-remove-close:before,.codicon-x:before{content:"\ea76"}.codicon-repo-sync:before,.codicon-sync:before{content:"\ea77"}.codicon-clone:before,.codicon-desktop-download:before{content:"\ea78"}.codicon-beaker:before,.codicon-microscope:before{content:"\ea79"}.codicon-device-desktop:before,.codicon-vm:before{content:"\ea7a"}.codicon-file-text:before,.codicon-file:before{content:"\ea7b"}.codicon-ellipsis:before,.codicon-kebab-horizontal:before,.codicon-more:before{content:"\ea7c"}.codicon-mail-reply:before,.codicon-reply:before{content:"\ea7d"}.codicon-organization-filled:before,.codicon-organization-outline:before,.codicon-organization:before{content:"\ea7e"}.codicon-file-add:before,.codicon-new-file:before{content:"\ea7f"}.codicon-file-directory-create:before,.codicon-new-folder:before{content:"\ea80"}.codicon-trash:before,.codicon-trashcan:before{content:"\ea81"}.codicon-clock:before,.codicon-history:before{content:"\ea82"}.codicon-file-directory:before,.codicon-folder:before,.codicon-symbol-folder:before{content:"\ea83"}.codicon-github:before,.codicon-logo-github:before,.codicon-mark-github:before{content:"\ea84"}.codicon-console:before,.codicon-repl:before,.codicon-terminal:before{content:"\ea85"}.codicon-symbol-event:before,.codicon-zap:before{content:"\ea86"}.codicon-error:before,.codicon-stop:before{content:"\ea87"}.codicon-symbol-variable:before,.codicon-variable:before{content:"\ea88"}.codicon-array:before,.codicon-symbol-array:before{content:"\ea8a"}.codicon-symbol-module:before,.codicon-symbol-namespace:before,.codicon-symbol-object:before,.codicon-symbol-package:before{content:"\ea8b"}.codicon-symbol-constructor:before,.codicon-symbol-function:before,.codicon-symbol-method:before{content:"\ea8c"}.codicon-symbol-boolean:before,.codicon-symbol-null:before{content:"\ea8f"}.codicon-symbol-number:before,.codicon-symbol-numeric:before{content:"\ea90"}.codicon-symbol-struct:before,.codicon-symbol-structure:before{content:"\ea91"}.codicon-symbol-parameter:before,.codicon-symbol-type-parameter:before{content:"\ea92"}.codicon-symbol-key:before,.codicon-symbol-text:before{content:"\ea93"}.codicon-go-to-file:before,.codicon-symbol-reference:before{content:"\ea94"}.codicon-symbol-enum:before,.codicon-symbol-value:before{content:"\ea95"}.codicon-symbol-ruler:before,.codicon-symbol-unit:before{content:"\ea96"}.codicon-activate-breakpoints:before{content:"\ea97"}.codicon-archive:before{content:"\ea98"}.codicon-arrow-both:before{content:"\ea99"}.codicon-arrow-down:before{content:"\ea9a"}.codicon-arrow-left:before{content:"\ea9b"}.codicon-arrow-right:before{content:"\ea9c"}.codicon-arrow-small-down:before{content:"\ea9d"}.codicon-arrow-small-left:before{content:"\ea9e"}.codicon-arrow-small-right:before{content:"\ea9f"}.codicon-arrow-small-up:before{content:"\eaa0"}.codicon-arrow-up:before{content:"\eaa1"}.codicon-bell:before{content:"\eaa2"}.codicon-bold:before{content:"\eaa3"}.codicon-book:before{content:"\eaa4"}.codicon-bookmark:before{content:"\eaa5"}.codicon-debug-breakpoint-conditional-unverified:before{content:"\eaa6"}.codicon-debug-breakpoint-conditional-disabled:before,.codicon-debug-breakpoint-conditional:before{content:"\eaa7"}.codicon-debug-breakpoint-data-unverified:before{content:"\eaa8"}.codicon-debug-breakpoint-data-disabled:before,.codicon-debug-breakpoint-data:before{content:"\eaa9"}.codicon-debug-breakpoint-log-unverified:before{content:"\eaaa"}.codicon-debug-breakpoint-log-disabled:before,.codicon-debug-breakpoint-log:before{content:"\eaab"}.codicon-briefcase:before{content:"\eaac"}.codicon-broadcast:before{content:"\eaad"}.codicon-browser:before{content:"\eaae"}.codicon-bug:before{content:"\eaaf"}.codicon-calendar:before{content:"\eab0"}.codicon-case-sensitive:before{content:"\eab1"}.codicon-check:before{content:"\eab2"}.codicon-checklist:before{content:"\eab3"}.codicon-chevron-down:before{content:"\eab4"}.codicon-chevron-left:before{content:"\eab5"}.codicon-chevron-right:before{content:"\eab6"}.codicon-chevron-up:before{content:"\eab7"}.codicon-chrome-close:before{content:"\eab8"}.codicon-chrome-maximize:before{content:"\eab9"}.codicon-chrome-minimize:before{content:"\eaba"}.codicon-chrome-restore:before{content:"\eabb"}.codicon-circle-outline:before,.codicon-debug-breakpoint-unverified:before{content:"\eabc"}.codicon-circle-slash:before{content:"\eabd"}.codicon-circuit-board:before{content:"\eabe"}.codicon-clear-all:before{content:"\eabf"}.codicon-clippy:before{content:"\eac0"}.codicon-close-all:before{content:"\eac1"}.codicon-cloud-download:before{content:"\eac2"}.codicon-cloud-upload:before{content:"\eac3"}.codicon-code:before{content:"\eac4"}.codicon-collapse-all:before{content:"\eac5"}.codicon-color-mode:before{content:"\eac6"}.codicon-comment-discussion:before{content:"\eac7"}.codicon-credit-card:before{content:"\eac9"}.codicon-dash:before{content:"\eacc"}.codicon-dashboard:before{content:"\eacd"}.codicon-database:before{content:"\eace"}.codicon-debug-continue:before{content:"\eacf"}.codicon-debug-disconnect:before{content:"\ead0"}.codicon-debug-pause:before{content:"\ead1"}.codicon-debug-restart:before{content:"\ead2"}.codicon-debug-start:before{content:"\ead3"}.codicon-debug-step-into:before{content:"\ead4"}.codicon-debug-step-out:before{content:"\ead5"}.codicon-debug-step-over:before{content:"\ead6"}.codicon-debug-stop:before{content:"\ead7"}.codicon-debug:before{content:"\ead8"}.codicon-device-camera-video:before{content:"\ead9"}.codicon-device-camera:before{content:"\eada"}.codicon-device-mobile:before{content:"\eadb"}.codicon-diff-added:before{content:"\eadc"}.codicon-diff-ignored:before{content:"\eadd"}.codicon-diff-modified:before{content:"\eade"}.codicon-diff-removed:before{content:"\eadf"}.codicon-diff-renamed:before{content:"\eae0"}.codicon-diff:before{content:"\eae1"}.codicon-discard:before{content:"\eae2"}.codicon-editor-layout:before{content:"\eae3"}.codicon-empty-window:before{content:"\eae4"}.codicon-exclude:before{content:"\eae5"}.codicon-extensions:before{content:"\eae6"}.codicon-eye-closed:before{content:"\eae7"}.codicon-file-binary:before{content:"\eae8"}.codicon-file-code:before{content:"\eae9"}.codicon-file-media:before{content:"\eaea"}.codicon-file-pdf:before{content:"\eaeb"}.codicon-file-submodule:before{content:"\eaec"}.codicon-file-symlink-directory:before{content:"\eaed"}.codicon-file-symlink-file:before{content:"\eaee"}.codicon-file-zip:before{content:"\eaef"}.codicon-files:before{content:"\eaf0"}.codicon-filter:before{content:"\eaf1"}.codicon-flame:before{content:"\eaf2"}.codicon-fold-down:before{content:"\eaf3"}.codicon-fold-up:before{content:"\eaf4"}.codicon-fold:before{content:"\eaf5"}.codicon-folder-active:before{content:"\eaf6"}.codicon-folder-opened:before{content:"\eaf7"}.codicon-gear:before{content:"\eaf8"}.codicon-gift:before{content:"\eaf9"}.codicon-gist-secret:before{content:"\eafa"}.codicon-gist:before{content:"\eafb"}.codicon-git-commit:before{content:"\eafc"}.codicon-compare-changes:before,.codicon-git-compare:before{content:"\eafd"}.codicon-git-merge:before{content:"\eafe"}.codicon-github-action:before{content:"\eaff"}.codicon-github-alt:before{content:"\eb00"}.codicon-globe:before{content:"\eb01"}.codicon-grabber:before{content:"\eb02"}.codicon-graph:before{content:"\eb03"}.codicon-gripper:before{content:"\eb04"}.codicon-heart:before{content:"\eb05"}.codicon-home:before{content:"\eb06"}.codicon-horizontal-rule:before{content:"\eb07"}.codicon-hubot:before{content:"\eb08"}.codicon-inbox:before{content:"\eb09"}.codicon-issue-reopened:before{content:"\eb0b"}.codicon-issues:before{content:"\eb0c"}.codicon-italic:before{content:"\eb0d"}.codicon-jersey:before{content:"\eb0e"}.codicon-bracket:before,.codicon-json:before{content:"\eb0f"}.codicon-kebab-vertical:before{content:"\eb10"}.codicon-key:before{content:"\eb11"}.codicon-law:before{content:"\eb12"}.codicon-lightbulb-autofix:before{content:"\eb13"}.codicon-link-external:before{content:"\eb14"}.codicon-link:before{content:"\eb15"}.codicon-list-ordered:before{content:"\eb16"}.codicon-list-unordered:before{content:"\eb17"}.codicon-live-share:before{content:"\eb18"}.codicon-loading:before{content:"\eb19"}.codicon-location:before{content:"\eb1a"}.codicon-mail-read:before{content:"\eb1b"}.codicon-mail:before{content:"\eb1c"}.codicon-markdown:before{content:"\eb1d"}.codicon-megaphone:before{content:"\eb1e"}.codicon-mention:before{content:"\eb1f"}.codicon-milestone:before{content:"\eb20"}.codicon-mortar-board:before{content:"\eb21"}.codicon-move:before{content:"\eb22"}.codicon-multiple-windows:before{content:"\eb23"}.codicon-mute:before{content:"\eb24"}.codicon-no-newline:before{content:"\eb25"}.codicon-note:before{content:"\eb26"}.codicon-octoface:before{content:"\eb27"}.codicon-open-preview:before{content:"\eb28"}.codicon-package:before{content:"\eb29"}.codicon-paintcan:before{content:"\eb2a"}.codicon-pin:before{content:"\eb2b"}.codicon-play:before,.codicon-run:before{content:"\eb2c"}.codicon-plug:before{content:"\eb2d"}.codicon-preserve-case:before{content:"\eb2e"}.codicon-preview:before{content:"\eb2f"}.codicon-project:before{content:"\eb30"}.codicon-pulse:before{content:"\eb31"}.codicon-question:before{content:"\eb32"}.codicon-quote:before{content:"\eb33"}.codicon-radio-tower:before{content:"\eb34"}.codicon-reactions:before{content:"\eb35"}.codicon-references:before{content:"\eb36"}.codicon-refresh:before{content:"\eb37"}.codicon-regex:before{content:"\eb38"}.codicon-remote-explorer:before{content:"\eb39"}.codicon-remote:before{content:"\eb3a"}.codicon-remove:before{content:"\eb3b"}.codicon-replace-all:before{content:"\eb3c"}.codicon-replace:before{content:"\eb3d"}.codicon-repo-clone:before{content:"\eb3e"}.codicon-repo-force-push:before{content:"\eb3f"}.codicon-repo-pull:before{content:"\eb40"}.codicon-repo-push:before{content:"\eb41"}.codicon-report:before{content:"\eb42"}.codicon-request-changes:before{content:"\eb43"}.codicon-rocket:before{content:"\eb44"}.codicon-root-folder-opened:before{content:"\eb45"}.codicon-root-folder:before{content:"\eb46"}.codicon-rss:before{content:"\eb47"}.codicon-ruby:before{content:"\eb48"}.codicon-save-all:before{content:"\eb49"}.codicon-save-as:before{content:"\eb4a"}.codicon-save:before{content:"\eb4b"}.codicon-screen-full:before{content:"\eb4c"}.codicon-screen-normal:before{content:"\eb4d"}.codicon-search-stop:before{content:"\eb4e"}.codicon-server:before{content:"\eb50"}.codicon-settings-gear:before{content:"\eb51"}.codicon-settings:before{content:"\eb52"}.codicon-shield:before{content:"\eb53"}.codicon-smiley:before{content:"\eb54"}.codicon-sort-precedence:before{content:"\eb55"}.codicon-split-horizontal:before{content:"\eb56"}.codicon-split-vertical:before{content:"\eb57"}.codicon-squirrel:before{content:"\eb58"}.codicon-star-full:before{content:"\eb59"}.codicon-star-half:before{content:"\eb5a"}.codicon-symbol-class:before{content:"\eb5b"}.codicon-symbol-color:before{content:"\eb5c"}.codicon-symbol-constant:before{content:"\eb5d"}.codicon-symbol-enum-member:before{content:"\eb5e"}.codicon-symbol-field:before{content:"\eb5f"}.codicon-symbol-file:before{content:"\eb60"}.codicon-symbol-interface:before{content:"\eb61"}.codicon-symbol-keyword:before{content:"\eb62"}.codicon-symbol-misc:before{content:"\eb63"}.codicon-symbol-operator:before{content:"\eb64"}.codicon-symbol-property:before,.codicon-wrench-subaction:before,.codicon-wrench:before{content:"\eb65"}.codicon-symbol-snippet:before{content:"\eb66"}.codicon-tasklist:before{content:"\eb67"}.codicon-telescope:before{content:"\eb68"}.codicon-text-size:before{content:"\eb69"}.codicon-three-bars:before{content:"\eb6a"}.codicon-thumbsdown:before{content:"\eb6b"}.codicon-thumbsup:before{content:"\eb6c"}.codicon-tools:before{content:"\eb6d"}.codicon-triangle-down:before{content:"\eb6e"}.codicon-triangle-left:before{content:"\eb6f"}.codicon-triangle-right:before{content:"\eb70"}.codicon-triangle-up:before{content:"\eb71"}.codicon-twitter:before{content:"\eb72"}.codicon-unfold:before{content:"\eb73"}.codicon-unlock:before{content:"\eb74"}.codicon-unmute:before{content:"\eb75"}.codicon-unverified:before{content:"\eb76"}.codicon-verified:before{content:"\eb77"}.codicon-versions:before{content:"\eb78"}.codicon-vm-active:before{content:"\eb79"}.codicon-vm-outline:before{content:"\eb7a"}.codicon-vm-running:before{content:"\eb7b"}.codicon-watch:before{content:"\eb7c"}.codicon-whitespace:before{content:"\eb7d"}.codicon-whole-word:before{content:"\eb7e"}.codicon-window:before{content:"\eb7f"}.codicon-word-wrap:before{content:"\eb80"}.codicon-zoom-in:before{content:"\eb81"}.codicon-zoom-out:before{content:"\eb82"}.codicon-list-filter:before{content:"\eb83"}.codicon-list-flat:before{content:"\eb84"}.codicon-list-selection:before,.codicon-selection:before{content:"\eb85"}.codicon-list-tree:before{content:"\eb86"}.codicon-debug-breakpoint-function-unverified:before{content:"\eb87"}.codicon-debug-breakpoint-function-disabled:before,.codicon-debug-breakpoint-function:before{content:"\eb88"}.codicon-debug-stackframe-active:before{content:"\eb89"}.codicon-circle-small-filled:before,.codicon-debug-stackframe-dot:before{content:"\eb8a"}.codicon-debug-stackframe-focused:before,.codicon-debug-stackframe:before{content:"\eb8b"}.codicon-debug-breakpoint-unsupported:before{content:"\eb8c"}.codicon-symbol-string:before{content:"\eb8d"}.codicon-debug-reverse-continue:before{content:"\eb8e"}.codicon-debug-step-back:before{content:"\eb8f"}.codicon-debug-restart-frame:before{content:"\eb90"}.codicon-debug-alt:before{content:"\eb91"}.codicon-call-incoming:before{content:"\eb92"}.codicon-call-outgoing:before{content:"\eb93"}.codicon-menu:before{content:"\eb94"}.codicon-expand-all:before{content:"\eb95"}.codicon-feedback:before{content:"\eb96"}.codicon-group-by-ref-type:before{content:"\eb97"}.codicon-ungroup-by-ref-type:before{content:"\eb98"}.codicon-account:before{content:"\eb99"}.codicon-bell-dot:before{content:"\eb9a"}.codicon-debug-console:before{content:"\eb9b"}.codicon-library:before{content:"\eb9c"}.codicon-output:before{content:"\eb9d"}.codicon-run-all:before{content:"\eb9e"}.codicon-sync-ignored:before{content:"\eb9f"}.codicon-pinned:before{content:"\eba0"}.codicon-github-inverted:before{content:"\eba1"}.codicon-server-process:before{content:"\eba2"}.codicon-server-environment:before{content:"\eba3"}.codicon-issue-closed:before,.codicon-pass:before{content:"\eba4"}.codicon-stop-circle:before{content:"\eba5"}.codicon-play-circle:before{content:"\eba6"}.codicon-record:before{content:"\eba7"}.codicon-debug-alt-small:before{content:"\eba8"}.codicon-vm-connect:before{content:"\eba9"}.codicon-cloud:before{content:"\ebaa"}.codicon-merge:before{content:"\ebab"}.codicon-export:before{content:"\ebac"}.codicon-graph-left:before{content:"\ebad"}.codicon-magnet:before{content:"\ebae"}.codicon-notebook:before{content:"\ebaf"}.codicon-redo:before{content:"\ebb0"}.codicon-check-all:before{content:"\ebb1"}.codicon-pinned-dirty:before{content:"\ebb2"}.codicon-pass-filled:before{content:"\ebb3"}.codicon-circle-large-filled:before{content:"\ebb4"}.codicon-circle-large-outline:before{content:"\ebb5"}.codicon-combine:before,.codicon-gather:before{content:"\ebb6"}.codicon-table:before{content:"\ebb7"}.codicon-variable-group:before{content:"\ebb8"}.codicon-type-hierarchy:before{content:"\ebb9"}.codicon-type-hierarchy-sub:before{content:"\ebba"}.codicon-type-hierarchy-super:before{content:"\ebbb"}.codicon-git-pull-request-create:before{content:"\ebbc"}.codicon-run-above:before{content:"\ebbd"}.codicon-run-below:before{content:"\ebbe"}.codicon-notebook-template:before{content:"\ebbf"}.codicon-debug-rerun:before{content:"\ebc0"}.codicon-workspace-trusted:before{content:"\ebc1"}.codicon-workspace-untrusted:before{content:"\ebc2"}.codicon-workspace-unknown:before{content:"\ebc3"}.codicon-terminal-cmd:before{content:"\ebc4"}.codicon-terminal-debian:before{content:"\ebc5"}.codicon-terminal-linux:before{content:"\ebc6"}.codicon-terminal-powershell:before{content:"\ebc7"}.codicon-terminal-tmux:before{content:"\ebc8"}.codicon-terminal-ubuntu:before{content:"\ebc9"}.codicon-terminal-bash:before{content:"\ebca"}.codicon-arrow-swap:before{content:"\ebcb"}.codicon-copy:before{content:"\ebcc"}.codicon-person-add:before{content:"\ebcd"}.codicon-filter-filled:before{content:"\ebce"}.codicon-wand:before{content:"\ebcf"}.codicon-debug-line-by-line:before{content:"\ebd0"}.codicon-inspect:before{content:"\ebd1"}.codicon-layers:before{content:"\ebd2"}.codicon-layers-dot:before{content:"\ebd3"}.codicon-layers-active:before{content:"\ebd4"}.codicon-compass:before{content:"\ebd5"}.codicon-compass-dot:before{content:"\ebd6"}.codicon-compass-active:before{content:"\ebd7"}.codicon-azure:before{content:"\ebd8"}.codicon-issue-draft:before{content:"\ebd9"}.codicon-git-pull-request-closed:before{content:"\ebda"}.codicon-git-pull-request-draft:before{content:"\ebdb"}.codicon-debug-all:before{content:"\ebdc"}.codicon-debug-coverage:before{content:"\ebdd"}.codicon-run-errors:before{content:"\ebde"}.codicon-folder-library:before{content:"\ebdf"}.codicon-debug-continue-small:before{content:"\ebe0"}.codicon-beaker-stop:before{content:"\ebe1"}.codicon-graph-line:before{content:"\ebe2"}.codicon-graph-scatter:before{content:"\ebe3"}.codicon-pie-chart:before{content:"\ebe4"}.codicon-bracket-dot:before{content:"\ebe5"}.codicon-bracket-error:before{content:"\ebe6"}.codicon-lock-small:before{content:"\ebe7"}.codicon-azure-devops:before{content:"\ebe8"}.codicon-verified-filled:before{content:"\ebe9"}.codicon-newline:before{content:"\ebea"}.codicon-layout:before{content:"\ebeb"}.codicon-layout-activitybar-left:before{content:"\ebec"}.codicon-layout-activitybar-right:before{content:"\ebed"}.codicon-layout-panel-left:before{content:"\ebee"}.codicon-layout-panel-center:before{content:"\ebef"}.codicon-layout-panel-justify:before{content:"\ebf0"}.codicon-layout-panel-right:before{content:"\ebf1"}.codicon-layout-panel:before{content:"\ebf2"}.codicon-layout-sidebar-left:before{content:"\ebf3"}.codicon-layout-sidebar-right:before{content:"\ebf4"}.codicon-layout-statusbar:before{content:"\ebf5"}.codicon-layout-menubar:before{content:"\ebf6"}.codicon-layout-centered:before{content:"\ebf7"}.codicon-target:before{content:"\ebf8"}.codicon-indent:before{content:"\ebf9"}.codicon-record-small:before{content:"\ebfa"}.codicon-error-small:before{content:"\ebfb"}.codicon-arrow-circle-down:before{content:"\ebfc"}.codicon-arrow-circle-left:before{content:"\ebfd"}.codicon-arrow-circle-right:before{content:"\ebfe"}.codicon-arrow-circle-up:before{content:"\ebff"}.codicon-layout-sidebar-right-off:before{content:"\ec00"}.codicon-layout-panel-off:before{content:"\ec01"}.codicon-layout-sidebar-left-off:before{content:"\ec02"}.codicon-blank:before{content:"\ec03"}.codicon-heart-filled:before{content:"\ec04"}.codicon-map:before{content:"\ec05"}.codicon-map-filled:before{content:"\ec06"}.codicon-circle-small:before{content:"\ec07"}.codicon-bell-slash:before{content:"\ec08"}.codicon-bell-slash-dot:before{content:"\ec09"}.codicon-comment-unresolved:before{content:"\ec0a"}.codicon-git-pull-request-go-to-changes:before{content:"\ec0b"}.codicon-git-pull-request-new-changes:before{content:"\ec0c"}.tsd-panel{border:1px solid var(--ifm-card-background-color);border-radius:var(--ifm-global-radius);margin-bottom:var(--ifm-spacing-vertical);overflow:hidden}.tsd-panel>.tsd-panel{margin:var(--tsd-spacing-horizontal)}.tsd-panel-header{background-color:var(--ifm-card-background-color);position:relative}.tsd-panel-content,.tsd-panel-header{margin:0;padding:var(--tsd-spacing-vertical) var(--tsd-spacing-horizontal)}.tsd-panel-content{border-bottom:1px solid var(--ifm-card-background-color)}.tsd-panel-content:last-child{border-bottom:0}.tsd-footer,.tsd-panel-group{margin-top:var(--tsd-spacing-vertical-full)}.tsd-panel-header .tsd-anchor{float:right;margin-left:.5rem}.tsd-panel-header .tsd-anchor-id{position:absolute;right:0;top:-4.5rem}.tsd-divider{border:1px solid var(--ifm-card-background-color);border-bottom:0;margin:var(--tsd-spacing-vertical) -1rem}html[data-theme=light] .tsd-panel,html[data-theme=light] .tsd-panel-content{border-color:var(--ifm-hover-overlay)}.tsd-hierarchy,.tsd-type-parameters{list-style:square;margin:0}.tsd-descriptions,.tsd-index-list,.tsd-signatures,.tsd-sources p,.tsd-sources ul{list-style:none;margin:0;padding:0}.tsd-index-list{display:flex;flex-wrap:wrap}.tsd-index-list li{padding-right:1rem;width:100%}.tsd-comment,.tsd-comment>.markdown,.tsd-descriptions,.tsd-parameters,.tsd-sources,.tsd-type-declaration,.tsd-type-parameters{margin-bottom:0;margin-top:var(--tsd-spacing-vertical)}.tsd-comment-root{margin-bottom:var(--tsd-spacing-vertical-full);margin-top:0}.tsd-footer,.tsd-sources{color:var(--tsd-muted-text);font-size:var(--tsd-font-small)}.tsd-footer a,.tsd-sources a{color:var(--tsd-muted-text);text-decoration:underline}.tsd-footer a:hover,.tsd-sources a:hover{color:var(--ifm-link-color)}.tsd-description>*,.tsd-parameters{margin-top:var(--tsd-spacing-vertical)}.tsd-signature-inactive{opacity:.35}.tsd-flag{background-color:var(--ifm-footer-background-color);border-radius:var(--ifm-global-radius);color:var(--ifm-footer-title-color);display:inline-block;font-weight:400;margin-right:.5rem;margin-top:-1px;opacity:.65;padding:3px 6px;text-indent:0}.badge-group,.tsd-flag{font-size:var(--tsd-font-small);vertical-align:middle}.tsd-panel-header .badge-group{display:inline-block;margin-left:.25em}.badge-group>span{margin-right:.25rem}.tsd-signature-symbol,.tsd-signature-type-generic{color:var(--tsd-muted-text);font-weight:400}.tsd-signature-type{font-style:italic;font-weight:400}.codicon[class*=codicon-]{-moz-osx-font-smoothing:grayscale;font:16px/1 codicon;text-align:center;text-decoration:none;text-rendering:auto;user-select:none;-webkit-user-select:none;-ms-user-select:none;display:inline-block;vertical-align:middle}.tsd-kind-icon{word-break:break-all}.apiPage .menu__link:not(.menu__link--sublist),.apiPage .table-of-contents__link,.tsd-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backToTopButton_iEvu{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_iEvu:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_DO8w{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_oTwn{display:none;margin:0}.docMainContainer_sTIZ,.docPage_KLoz{display:flex;width:100%}.docPage_KLoz{flex:1 0}.docsWrapper_ct1J{display:flex;flex:1 0 auto}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:focus{outline:0}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.tocCollapsibleContent_vea0 a{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.buttonGroup_aaMX button,.codeBlockContainer_mQmQ{background:var(--prism-background-color);color:var(--prism-color)}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.codeBlockContainer_mQmQ{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_D5yF{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_x_ju{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_RMoD{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_x_ju+.codeBlockContent_D5yF .codeBlock_RMoD{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_AclH{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_O625{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_aaMX{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_aaMX button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_aaMX button:focus-visible,.buttonGroup_aaMX button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_aaMX button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_FAqz{counter-increment:a;display:table-row}.codeLineNumber_BE9Z{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_BE9Z:before{content:counter(a);opacity:.4}.codeLineContent_EF2y{padding-right:var(--ifm-pre-padding)}.iconEdit_bHB7{margin-right:.3em;vertical-align:sub}.theme-code-block:hover .copyButtonCopied_TYdd{opacity:1!important}.copyButtonIcons_z5j7{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_FoOz,.copyButtonSuccessIcon_L0B6{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_L0B6{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TYdd .copyButtonIcon_FoOz{opacity:0;transform:scale(.33)}.copyButtonCopied_TYdd .copyButtonSuccessIcon_L0B6{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_otG2{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_otG2:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_s0E1{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_PGyn{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tag_DFxh,.tag_FHL6{display:inline-block}.tagWithCount_PGyn:after,.tagWithCount_PGyn:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_PGyn:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_PGyn:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_PGyn span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_FHL6{margin:.5rem .5rem 0 1rem}.wordWrapButtonIcon_HV9T{height:1.2rem;width:1.2rem}.tag_DFxh{margin:0 .4rem .5rem 0}.lastUpdated_pbO5{font-size:smaller;font-style:italic;margin-top:.2rem}.details_IpIu{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_IpIu>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_IpIu>summary::-webkit-details-marker{display:none}.details_IpIu>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_Fd2D{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.anchorWithStickyNavbar_JmGV{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_pMLv{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.title_Ww3I{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.details_jERq{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.tocCollapsibleButton_iI2p{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_iI2p:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_cHjC:after,.tocCollapsibleExpanded_BbRn{transform:none}.containsTaskList_QWGu{list-style:none}.tocCollapsible_wXna{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vea0>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vea0 ul li{margin:.4rem .8rem}.img_SS3x{height:auto}.admonition_uH4V{margin-bottom:1em}.admonitionHeading_P5_N{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_P5_N code{text-transform:none}.admonitionIcon_MF44{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_MF44 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.tableOfContents_XG6w{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}@media screen and (min-width:576px){.tsd-index-list li{width:50%}}@media (min-width:640px){.container{max-width:640px}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:ml-2{margin-left:1rem}.sm\:block{display:block}.sm\:grid{display:grid}.sm\:w-\[65\%\]{width:65%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-xl{max-width:36rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-end{align-items:flex-end}.sm\:gap-5{gap:2.5rem}.sm\:p-3{padding:1.5rem}.sm\:px-3{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-6{padding-left:3rem;padding-right:3rem}.sm\:py-2{padding-bottom:1rem;padding-top:1rem}.sm\:py-5{padding-bottom:2.5rem;padding-top:2.5rem}.sm\:py-6{padding-bottom:3rem;padding-top:3rem}.sm\:pb-8{padding-bottom:4rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (min-width:768px){.container{max-width:768px}.md\:mx-0{margin-left:0;margin-right:0}.md\:ml-2{margin-left:1rem}.md\:ml-4{margin-left:2rem}.md\:mr-4{margin-right:2rem}.md\:mt-0{margin-top:0}.md\:mt-4{margin-top:2rem}.md\:flex{display:flex}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-5\/12{width:41.666667%}.md\:w-6\/12{width:50%}.md\:w-7\/12{width:58.333333%}.md\:w-\[80\%\]{width:80%}.md\:w-full{width:100%}.md\:max-w-3xl{max-width:48rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-start{justify-content:flex-start}.md\:gap-3{gap:1.5rem}.md\:rounded-bl-lg{border-bottom-left-radius:.5rem}.md\:rounded-bl-none{border-bottom-left-radius:0}.md\:rounded-br-lg{border-bottom-right-radius:.5rem}.md\:rounded-br-none{border-bottom-right-radius:0}.md\:rounded-tl-lg{border-top-left-radius:.5rem}.md\:rounded-tl-none{border-top-left-radius:0}.md\:rounded-tr-lg{border-top-right-radius:.5rem}.md\:rounded-tr-none{border-top-right-radius:0}.md\:p-3{padding:1.5rem}.md\:pt-4,.md\:py-4{padding-top:2rem}.md\:p-4{padding:2rem}.md\:px-4{padding-left:2rem;padding-right:2rem}.md\:py-4{padding-bottom:2rem}.md\:pl-0{padding-left:0}.md\:pl-4{padding-left:2rem}.md\:pr-0{padding-right:0}.md\:pr-4{padding-right:2rem}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:997px){.collapseSidebarButton_oTwn,.expandButton_YOoA{background-color:var(--docusaurus-collapse-button-bg)}html .menu{padding:var(--moon-padding-1_5)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_Jjdj,.announcementBarPlaceholder_NpUd{flex-basis:50px}.searchBox_WqAV{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_oTwn{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_pMEX{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_GZLG,[dir=rtl] .collapseSidebarButtonIcon_pMEX{transform:rotate(0)}.collapseSidebarButton_oTwn:focus,.collapseSidebarButton_oTwn:hover,.expandButton_YOoA:focus,.expandButton_YOoA:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_OniL{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_jmj1{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_jmj1{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_YufC{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_CUen{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_w4KB{padding-top:0}.sidebarHidden_k6VE{opacity:0;visibility:hidden}.sidebarLogo_CYvI{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_CYvI img{height:2rem;margin-right:.5rem}.expandButton_YOoA{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_GZLG{transform:rotate(180deg)}.docSidebarContainer_y0RQ{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_uArb{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_EJ1r{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_sTIZ{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_iSjt{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_PxMR{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_pbO5{text-align:right}.docItemCol_Qr34,.generatedIndexPage_cf3v{max-width:75%!important}.list_qoTc article:nth-last-child(-n+2){margin-bottom:0!important}.tocMobile_Ojys{display:none}}@media only screen and (min-width:997px){.apiItemCol{max-width:75%!important}.apiTocMobile{display:none}}@media screen and (min-width:997px){.tsd-index-list li{width:33%}}@media (min-width:1024px){.container{max-width:1024px}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:ml-3{margin-left:1.5rem}.lg\:mt-0{margin-top:0}.lg\:grid{display:grid}.lg\:h-\[260px\]{height:260px}.lg\:w-\[75\%\]{width:75%}.lg\:max-w-7xl{max-width:80rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:gap-3{gap:1.5rem}.lg\:gap-4{gap:2rem}.lg\:gap-6{gap:3rem}.lg\:p-4{padding:2rem}.lg\:px-4{padding-left:2rem;padding-right:2rem}.lg\:px-6{padding-left:3rem;padding-right:3rem}.lg\:px-8{padding-left:4rem;padding-right:4rem}.lg\:py-6{padding-bottom:3rem;padding-top:3rem}.lg\:py-8{padding-bottom:4rem;padding-top:4rem}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (min-width:1536px){.container{max-width:1536px}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hewu,.footer__link-separator,.navbar__item,.sidebar_CLW8,.tableOfContents_XG6w{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_WqAV{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_Tr6w{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_YWTO,.searchResultsColumn_Vh0c{max-width:60%!important}.searchLogoColumn_ugtA,.searchVersionColumn_pdNL{max-width:40%!important}.searchLogoColumn_ugtA{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_Kdtz{font-size:2rem}}@media screen and (max-width:576px){.searchQueryColumn_YWTO{max-width:100%!important}.searchVersionColumn_pdNL{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_iEvu:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_zJRd,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_Ojys{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_AclH{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/css/styles.e73c05a4.css b/assets/css/styles.e73c05a4.css deleted file mode 100644 index 5054340e977..00000000000 --- a/assets/css/styles.e73c05a4.css +++ /dev/null @@ -1 +0,0 @@ -@import url(https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,200;0,300;0,400;0,500;0,600;0,700;0,800;1,400;1,500&display=swap);.col,.container{padding:0 var(--ifm-spacing-horizontal)}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.avatar__photo,.card,.text--truncate{overflow:hidden}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.button,.dropdown__link,.sr-only,.text--truncate,.truncate{white-space:nowrap}.text--truncate,.text-ellipsis,.truncate{text-overflow:ellipsis}.from-pink-400,.from-purple-600,.from-slate-600,.from-slate-900,.from-teal-400,.from-yellow-300{--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}.bg-\[\#000e19\],.bg-blurple-400,.bg-gray-100,.bg-gray-50,.bg-green-100,.bg-orange-100,.bg-pink-100,.bg-pink-600,.bg-purple-600,.bg-red-100,.bg-slate-800,.bg-slate-900,.bg-teal-600,.bg-white{--tw-bg-opacity:1}.hover\:text-blurple-500:hover,.hover\:text-white:hover,.text-blurple-300,.text-blurple-400,.text-gray-200,.text-gray-600,.text-gray-700,.text-gray-900,.text-green-500,.text-green-600,.text-green-900,.text-orange-900,.text-pink-500,.text-pink-600,.text-pink-900,.text-purple-400,.text-purple-500,.text-purple-600,.text-purple-700,.text-red-900,.text-slate-900,.text-teal-600,.text-teal-700,.text-white{--tw-text-opacity:1}.toggleButton_MMFG,html{-webkit-tap-highlight-color:transparent}.close,.float-right,.tsd-header-flags{float:right}.codicon[class*=codicon-],html{-webkit-font-smoothing:antialiased}*,.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:transparent;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:rgba(0,0,0,.05);--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 rgba(0,0,0,.1);--ifm-global-shadow-md:0 5px 40px rgba(0,0,0,.2);--ifm-global-shadow-tl:0 12px 28px 0 rgba(0,0,0,.2),0 2px 4px 0 rgba(0,0,0,.1);--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:transparent;--ifm-table-stripe-background:rgba(0,0,0,.03);--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--moon-color-current:currentColor;--moon-color-transparent:transparent;--moon-color-black:#000;--moon-color-white:#fff;--moon-color-blurple-50:#dbd5f4;--moon-color-blurple-100:#b7abe8;--moon-color-blurple-200:#9282dd;--moon-color-blurple-300:#6e58d1;--moon-color-blurple-400:#4a2ec6;--moon-color-blurple-500:#4329b2;--moon-color-blurple-600:#3b259e;--moon-color-blurple-700:#34208b;--moon-color-blurple-800:#251763;--moon-color-blurple-900:#160e3b;--moon-color-gray-50:#f2f4f8;--moon-color-gray-100:#e5e9f1;--moon-color-gray-200:#d7dfe9;--moon-color-gray-300:#cad4e2;--moon-color-gray-400:#bdc9db;--moon-color-gray-500:#aab5c5;--moon-color-gray-600:#97a1af;--moon-color-gray-700:#848d99;--moon-color-gray-800:#5f656e;--moon-color-gray-900:#393c42;--moon-color-green-50:#edf5cc;--moon-color-green-100:#dbeb99;--moon-color-green-200:#c9e166;--moon-color-green-300:#b7d733;--moon-color-green-400:#a5cd00;--moon-color-green-500:#95b900;--moon-color-green-600:#84a400;--moon-color-green-700:#739000;--moon-color-green-800:#637b00;--moon-color-green-900:#425200;--moon-color-lavendar-50:#eee4ff;--moon-color-lavendar-100:#dcc9ff;--moon-color-lavendar-200:#cbafff;--moon-color-lavendar-300:#b994ff;--moon-color-lavendar-400:#a879ff;--moon-color-lavendar-500:#976de6;--moon-color-lavendar-600:#8661cc;--moon-color-lavendar-700:#7655b3;--moon-color-lavendar-800:#543d80;--moon-color-lavendar-900:#32244c;--moon-color-orange-50:#ffebd3;--moon-color-orange-100:#ffd7a7;--moon-color-orange-200:#ffc37c;--moon-color-orange-300:#ffaf50;--moon-color-orange-400:#ff9b24;--moon-color-orange-500:#e68c20;--moon-color-orange-600:#cc7c1d;--moon-color-orange-700:#b36d19;--moon-color-orange-800:#804e12;--moon-color-orange-900:#4c2e0b;--moon-color-pink-50:#ffd7ff;--moon-color-pink-100:#ffbcff;--moon-color-pink-200:#ffafff;--moon-color-pink-300:#ff94ff;--moon-color-pink-400:#ff79ff;--moon-color-pink-500:#e66de6;--moon-color-pink-600:#cc61cc;--moon-color-pink-700:#b355b3;--moon-color-pink-800:#803d80;--moon-color-pink-900:#4c244c;--moon-color-purple-50:#f1eefe;--moon-color-purple-100:#d4cbfb;--moon-color-purple-200:#c5bafa;--moon-color-purple-300:#b7a9f9;--moon-color-purple-400:#9a87f7;--moon-color-purple-500:#8c75f5;--moon-color-purple-600:#6f53f3;--moon-color-purple-700:#5942c2;--moon-color-purple-800:#433292;--moon-color-purple-900:#2c2161;--moon-color-red-50:#ffced3;--moon-color-red-100:#ffadb5;--moon-color-red-200:#ff9da6;--moon-color-red-300:#ff7c89;--moon-color-red-400:#ff5b6b;--moon-color-red-500:#e65260;--moon-color-red-600:#cc4956;--moon-color-red-700:#b3404b;--moon-color-red-800:#802e36;--moon-color-red-900:#4c1b20;--moon-color-slate-50:#99aab7;--moon-color-slate-100:#677f92;--moon-color-slate-200:#34556e;--moon-color-slate-300:#1a3f5c;--moon-color-slate-400:#012a4a;--moon-color-slate-500:#01223b;--moon-color-slate-600:#01192c;--moon-color-slate-700:#011525;--moon-color-slate-800:#00111e;--moon-color-slate-900:#00080f;--moon-color-teal-50:#e4f7fb;--moon-color-teal-100:#c9eef6;--moon-color-teal-200:#afe6f2;--moon-color-teal-300:#94dded;--moon-color-teal-400:#79d5e9;--moon-color-teal-500:#6dc0d2;--moon-color-teal-600:#61aaba;--moon-color-teal-700:#5595a3;--moon-color-teal-800:#49808c;--moon-color-teal-900:#30555d;--moon-color-yellow-50:#fefce8;--moon-color-yellow-100:#fef9c3;--moon-color-yellow-200:#fef08a;--moon-color-yellow-300:#fde047;--moon-color-yellow-400:#facc15;--moon-color-yellow-500:#eab308;--moon-color-yellow-600:#ca8a04;--moon-color-yellow-700:#a16207;--moon-color-yellow-800:#854d0e;--moon-color-yellow-900:#713f12;--moon-color-yellow-950:#422006;--moon-font-family-sans:"Plus Jakarta Sans",ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--moon-font-family-serif:ui-serif,Georgia,Cambria,"Times New Roman",Times,serif;--moon-font-family-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--moon-margin-0:0rem;--moon-margin-1:0.5rem;--moon-margin-2:1rem;--moon-margin-3:1.5rem;--moon-margin-4:2rem;--moon-margin-5:2.5rem;--moon-margin-6:3rem;--moon-margin-7:3.5rem;--moon-margin-8:4rem;--moon-margin-9:4.5rem;--moon-margin-10:5rem;--moon-margin-auto:auto;--moon-margin-0_25:0.125rem;--moon-margin-0_5:0.25rem;--moon-margin-1_5:0.75rem;--moon-margin-2_5:1.25rem;--moon-padding-0:0rem;--moon-padding-1:0.5rem;--moon-padding-2:1rem;--moon-padding-3:1.5rem;--moon-padding-4:2rem;--moon-padding-5:2.5rem;--moon-padding-6:3rem;--moon-padding-7:3.5rem;--moon-padding-8:4rem;--moon-padding-9:4.5rem;--moon-padding-10:5rem;--moon-padding-0_25:0.125rem;--moon-padding-0_5:0.25rem;--moon-padding-1_5:0.75rem;--moon-padding-2_5:1.25rem;--docusaurus-announcement-bar-height:auto;--tsd-muted-text:var(--ifm-color-secondary-darkest);--tsd-font-small:var(--ifm-h6-font-size);--tsd-spacing-vertical:0.75rem;--tsd-spacing-vertical-full:2rem;--tsd-spacing-horizontal:1rem;--docusaurus-collapse-button-bg:transparent;--docusaurus-collapse-button-bg-hover:rgba(0,0,0,.1);--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px;--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12);--docsearch-primary-color:var(--ifm-color-primary);--docsearch-text-color:var(--ifm-font-color-base);--docusaurus-tag-list-border:var(--ifm-color-emphasis-300)}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:transparent}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.list_qoTc article:last-child,.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_l0OV{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.items-start,.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.items-center,.menuExternalLink_BiEj,.row--align-center{align-items:center}.items-stretch,.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width);width:100%}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid rgba(0,0,0,.1);border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:transparent;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}.max-w-full,img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList_J5MA{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration);text-decoration:none}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal);background-color:var(--ifm-blockquote-background-color)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_XzR1 .wordWrapButtonIcon_HV9T{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.capitalize,.text--capitalize{text-transform:capitalize}.lowercase,.text--lowercase{text-transform:lowercase}.admonitionHeading_P5_N,.alert__heading,.text--uppercase,.uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{list-style:none;padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:rgba(53,120,229,.15);--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:rgba(235,237,240,.15);--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:rgba(0,164,0,.15);--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:rgba(84,199,236,.15);--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:rgba(255,186,0,.15);--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:rgba(250,56,62,.15);--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);width:var(--ifm-avatar-photo-size)}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after,.inline-block{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs__link:any-link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;-webkit-user-select:none;user-select:none}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:transparent;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button,.grow{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column}.card--full-height{height:100%}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_BE9Z:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;list-style:none;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor transparent;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__links,.mb-2{margin-bottom:1rem}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_tjFy article>:first-child,.docItemContainer_tjFy header+*,.footer__item,.mt-0,.tsd-description>:first-child,.tsd-index-list li+li,.tsd-panel-content>:first-child{margin-top:0}.admonitionContent_yySL>:last-child,.cardContainer_H47c :last-child,.collapsibleContent_Fd2D>:last-child,.footer__items,.mb-0,.tabItem_wHwb>:last-child{margin-bottom:0}.codeBlockStandalone_wQog,.p-0,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title,.title_Kdtz{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{list-style:none;margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child),.mt-0\.5{margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_IpIu[data-collapsed=false].isBrowser_QD4r>summary:before,.details_IpIu[open]:not(.isBrowser_QD4r)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{opacity:0;top:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;bottom:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{content:"";height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.flex,.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_t7IR,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.h-full,.navbar__logo img,body,html{height:100%}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.m-0,.menu__list hr,.navbar__items--center .navbar__brand,.tsd-parameters h5,.tsd-parameters-title,.tsd-returns-title,.tsd-type-parameters-title{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:hsla(0,0%,100%,.1);--ifm-navbar-search-input-placeholder-color:hsla(0,0%,100%,.5);color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:hsla(0,0%,100%,.05);--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.cursor-pointer,.pills__item,.tabs__item,.tsd-pressable{cursor:pointer}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:rgba(0,0,0,.6);position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.inline-flex,.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover,.sidebarItemLink_Ony9:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_QWGu>li)>.containsTaskList_QWGu{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid transparent;border-radius:var(--ifm-global-radius);display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover,html[data-theme=light] .tsd-panel-header{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:hsla(0,0%,100%,.05);--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:hsla(0,0%,100%,.1);--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:hsla(0,0%,100%,.07);--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec;--ifm-color-primary-lightest:var(--moon-color-purple-100);--ifm-color-primary-lighter:var(--moon-color-purple-200);--ifm-color-primary-light:var(--moon-color-purple-300);--ifm-color-primary:var(--moon-color-purple-400);--ifm-color-primary-dark:var(--moon-color-purple-500);--ifm-color-primary-darker:var(--moon-color-purple-600);--ifm-color-primary-darkest:var(--moon-color-purple-700);--ifm-color-secondary:var(--moon-color-slate-500);--ifm-color-success:var(--moon-color-green-500);--ifm-color-info:var(--moon-color-teal-500);--ifm-color-warning:var(--moon-color-yellow-500);--ifm-color-danger:var(--moon-color-red-500);--ifm-color-emphasis-200:var(--moon-color-slate-600);--ifm-color-emphasis-300:var(--moon-color-slate-700);--ifm-background-color:var(--moon-color-slate-800);--ifm-background-surface-color:var(--moon-color-slate-600);--ifm-code-background:hsla(0,0%,100%,.075);--ifm-menu-color-background-active:var(--moon-color-purple-600);--ifm-menu-color-background-hover:var(--moon-color-slate-600);--ifm-menu-color:var(--moon-color-purple-50);--ifm-menu-color-active:var(--moon-color-white);--ifm-toc-link-color:var(--moon-color-purple-50);--ifm-link-hover-color:var(--moon-color-purple-300);--ifm-blockquote-border-color:var(--moon-color-teal-300);--ifm-blockquote-background-color:var(--moon-color-slate-600);--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container,.w-\[100\%\],.w-full{width:100%}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.invisible{visibility:hidden}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.markdown,.relative{position:relative}.bottom-0{bottom:0}.left-0{left:0}.right-0{right:0}.top-0{top:0}.top-1{top:.5rem}.top-1\.5{top:.75rem}.isolate{isolation:isolate}.z-0{z-index:0}.z-10{z-index:10}.order-1{order:1}.order-2{order:2}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-3{grid-column:span 3/span 3}.m-3{margin:1.5rem}.mx-2{margin-left:1rem;margin-right:1rem}.mx-auto{margin-left:auto;margin-right:auto}.my-4{margin-bottom:2rem;margin-top:2rem}.mb-0\.5{margin-bottom:.25rem}.mb-1{margin-bottom:.5rem}.mb-3{margin-bottom:1.5rem}.mb-4{margin-bottom:2rem}.ml-0{margin-left:0}.ml-0\.5{margin-left:.25rem}.ml-1{margin-left:.5rem}.ml-2{margin-left:1rem}.ml-4{margin-left:2rem}.mr-1,.tsd-kind-icon .codicon{margin-right:.5rem}.mr-2{margin-right:1rem}.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mt-3{margin-top:1.5rem}.loader_DZsO,.mt-4{margin-top:2rem}.docusaurus-mt-lg,.mt-6{margin-top:3rem}.block,svg{display:block}.inline,.tags_Ow0B,pre .table{display:inline}.table{display:table}.grid{display:grid}.contents{display:contents}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_y0RQ,.hidden,.sidebarLogo_CYvI,.themedImage_BQGR,.tsd-panel-content:empty,[data-theme=dark] .lightToggleIcon_lgto,[data-theme=light] .darkToggleIcon_U96C,html[data-announcement-bar-initially-dismissed=true] .announcementBar_zJRd{display:none}.h-3{height:1.5rem}.w-1\/4{width:25%}.w-3{width:1.5rem}.w-3\/4{width:75%}.w-5\/6{width:83.333333%}.w-9{width:4.5rem}.w-auto{width:auto}.min-w-0{min-width:0}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.flex-1{flex:1 1 0%}.flex-shrink-0,.shrink-0{flex-shrink:0}.flex-grow-0,.grow-0{flex-grow:0}.rotate-180{--tw-rotate:180deg}.hover\:scale-105:hover,.hover\:scale-110:hover,.rotate-180,.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.flex-row-reverse{flex-direction:row-reverse}.blogPostFooterDetailsFull_JgJa,.flex-col{flex-direction:column}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.5rem}.gap-2{gap:1rem}.gap-3{gap:1.5rem}.gap-4{gap:2rem}.gap-6{gap:3rem}.gap-8{gap:4rem}.gap-x-1{column-gap:.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden,.truncate{overflow:hidden}.text-clip{text-overflow:clip}.rounded{border-radius:.25rem}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-t{border-top-width:1px}.border-t-0{border-top-width:0}.border-solid{border-style:solid}.border-gray-200{--tw-border-opacity:1;border-color:rgb(215 223 233/var(--tw-border-opacity))}.border-gray-200\/75{border-color:rgba(215,223,233,.75)}.border-gray-400{--tw-border-opacity:1;border-color:rgb(189 201 219/var(--tw-border-opacity))}.border-slate-50{--tw-border-opacity:1;border-color:rgb(153 170 183/var(--tw-border-opacity))}.border-slate-500{--tw-border-opacity:1;border-color:rgb(1 34 59/var(--tw-border-opacity))}.border-transparent{border-color:transparent}.bg-\[\#000e19\]{background-color:rgb(0 14 25/var(--tw-bg-opacity))}.bg-black\/20{background-color:rgba(0,0,0,.2)}.bg-blurple-400{background-color:rgb(74 46 198/var(--tw-bg-opacity))}.bg-gray-100{background-color:rgb(229 233 241/var(--tw-bg-opacity))}.bg-gray-50{background-color:rgb(242 244 248/var(--tw-bg-opacity))}.bg-green-100{background-color:rgb(219 235 153/var(--tw-bg-opacity))}.bg-orange-100{background-color:rgb(255 215 167/var(--tw-bg-opacity))}.bg-pink-100{background-color:rgb(255 188 255/var(--tw-bg-opacity))}.bg-pink-600{background-color:rgb(204 97 204/var(--tw-bg-opacity))}.bg-purple-600{background-color:rgb(111 83 243/var(--tw-bg-opacity))}.bg-red-100{background-color:rgb(255 173 181/var(--tw-bg-opacity))}.bg-slate-800{background-color:rgb(0 17 30/var(--tw-bg-opacity))}.bg-slate-900{background-color:rgb(0 8 15/var(--tw-bg-opacity))}.bg-teal-600{background-color:rgb(97 170 186/var(--tw-bg-opacity))}.bg-white{background-color:rgb(255 255 255/var(--tw-bg-opacity))}.bg-white\/5{background-color:hsla(0,0%,100%,.05)}.bg-gradient-to-b{background-image:linear-gradient(to bottom,var(--tw-gradient-stops))}.bg-gradient-to-bl{background-image:linear-gradient(to bottom left,var(--tw-gradient-stops))}.bg-gradient-to-br{background-image:linear-gradient(to bottom right,var(--tw-gradient-stops))}.from-pink-400{--tw-gradient-from:#ff79ff var(--tw-gradient-from-position);--tw-gradient-to:rgba(255,121,255,0) var(--tw-gradient-to-position)}.from-purple-600{--tw-gradient-from:#6f53f3 var(--tw-gradient-from-position);--tw-gradient-to:rgba(111,83,243,0) var(--tw-gradient-to-position)}.from-slate-600{--tw-gradient-from:#01192c var(--tw-gradient-from-position);--tw-gradient-to:rgba(1,25,44,0) var(--tw-gradient-to-position)}.from-slate-900{--tw-gradient-from:#00080f var(--tw-gradient-from-position);--tw-gradient-to:rgba(0,8,15,0) var(--tw-gradient-to-position)}.from-teal-400{--tw-gradient-from:#79d5e9 var(--tw-gradient-from-position);--tw-gradient-to:rgba(121,213,233,0) var(--tw-gradient-to-position)}.from-yellow-300{--tw-gradient-from:#fde047 var(--tw-gradient-from-position);--tw-gradient-to:rgba(253,224,71,0) var(--tw-gradient-to-position)}.via-blurple-600{--tw-gradient-to:rgba(59,37,158,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#3b259e var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-pink-900{--tw-gradient-to:rgba(76,36,76,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#4c244c var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-purple-600{--tw-gradient-to:rgba(111,83,243,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#6f53f3 var(--tw-gradient-via-position),var(--tw-gradient-to)}.via-teal-800{--tw-gradient-to:rgba(73,128,140,0) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from),#49808c var(--tw-gradient-via-position),var(--tw-gradient-to)}.to-blurple-600{--tw-gradient-to:#3b259e var(--tw-gradient-to-position)}.to-green-600{--tw-gradient-to:#84a400 var(--tw-gradient-to-position)}.to-red-400{--tw-gradient-to:#ff5b6b var(--tw-gradient-to-position)}.to-slate-100{--tw-gradient-to:#677f92 var(--tw-gradient-to-position)}.to-slate-600{--tw-gradient-to:#01192c var(--tw-gradient-to-position)}.to-white{--tw-gradient-to:#fff var(--tw-gradient-to-position)}.p-0\.5{padding:.25rem}.p-1{padding:.5rem}.p-2{padding:1rem}.p-4{padding:2rem}.p-6{padding:3rem}.px-1{padding-left:.5rem;padding-right:.5rem}.px-2{padding-left:1rem;padding-right:1rem}.px-3{padding-left:1.5rem;padding-right:1.5rem}.px-4{padding-left:2rem;padding-right:2rem}.py-0{padding-bottom:0;padding-top:0}.py-0\.5{padding-bottom:.25rem;padding-top:.25rem}.py-1{padding-bottom:.5rem;padding-top:.5rem}.py-10{padding-bottom:5rem;padding-top:5rem}.py-2{padding-bottom:1rem;padding-top:1rem}.py-3{padding-bottom:1.5rem;padding-top:1.5rem}.py-4{padding-bottom:2rem;padding-top:2rem}.pb-6{padding-bottom:3rem}.pl-1{padding-left:.5rem}.pl-2{padding-left:1rem}.pl-4{padding-left:2rem}.pl-5{padding-left:2.5rem}.pr-2{padding-right:1rem}.pt-1{padding-top:.5rem}.pt-2{padding-top:1rem}.pt-3{padding-top:1.5rem}.text-left{text-align:left}.text-center,.tsd-footer{text-align:center}.text-right{text-align:right}.text-justify{text-align:justify}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:Plus Jakarta Sans,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-5xl{font-size:3rem;line-height:1}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal,.tsd-generics{font-weight:400}.font-semibold{font-weight:600}.font-thin{font-weight:100}.tracking-wider{letter-spacing:.05em}.text-blurple-300{color:rgb(110 88 209/var(--tw-text-opacity))}.text-blurple-400{color:rgb(74 46 198/var(--tw-text-opacity))}.text-gray-200{color:rgb(215 223 233/var(--tw-text-opacity))}.text-gray-600{color:rgb(151 161 175/var(--tw-text-opacity))}.text-gray-700{color:rgb(132 141 153/var(--tw-text-opacity))}.hover\:text-gray-800:hover,.text-gray-800{--tw-text-opacity:1;color:rgb(95 101 110/var(--tw-text-opacity))}.text-gray-900{color:rgb(57 60 66/var(--tw-text-opacity))}.text-green-500{color:rgb(149 185 0/var(--tw-text-opacity))}.text-green-600{color:rgb(132 164 0/var(--tw-text-opacity))}.text-green-900{color:rgb(66 82 0/var(--tw-text-opacity))}.text-orange-900{color:rgb(76 46 11/var(--tw-text-opacity))}.text-pink-500{color:rgb(230 109 230/var(--tw-text-opacity))}.text-pink-600{color:rgb(204 97 204/var(--tw-text-opacity))}.text-pink-900{color:rgb(76 36 76/var(--tw-text-opacity))}.text-purple-400{color:rgb(154 135 247/var(--tw-text-opacity))}.text-purple-500{color:rgb(140 117 245/var(--tw-text-opacity))}.text-purple-600{color:rgb(111 83 243/var(--tw-text-opacity))}.text-purple-700{color:rgb(89 66 194/var(--tw-text-opacity))}.text-red-900{color:rgb(76 27 32/var(--tw-text-opacity))}.text-slate-900{color:rgb(0 8 15/var(--tw-text-opacity))}.text-teal-600{color:rgb(97 170 186/var(--tw-text-opacity))}.text-teal-700{color:rgb(85 149 163/var(--tw-text-opacity))}.hover\:text-white:hover,.text-white{color:rgb(255 255 255/var(--tw-text-opacity))}.placeholder-gray-600::placeholder{--tw-placeholder-opacity:1;color:rgb(151 161 175/var(--tw-placeholder-opacity))}.codicon-modifier-disabled,.opacity-50{opacity:.5}.opacity-60{opacity:.6}.focus\:outline-none:focus,.outline-none{outline:transparent solid 2px;outline-offset:2px}.drop-shadow{--tw-drop-shadow:drop-shadow(0 1px 2px rgba(0,0,0,.1)) drop-shadow(0 1px 1px rgba(0,0,0,.06))}.drop-shadow,.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-transform{transition-duration:.15s;transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1)}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}.hover\:scale-110:hover{--tw-scale-x:1.1;--tw-scale-y:1.1}.hover\:bg-blurple-500:hover{--tw-bg-opacity:1;background-color:rgb(67 41 178/var(--tw-bg-opacity))}.hover\:bg-gray-100\/90:hover{background-color:rgba(229,233,241,.9)}.hover\:text-blurple-500:hover{color:rgb(67 41 178/var(--tw-text-opacity))}:is(.dark .dark\:border-slate-400){--tw-border-opacity:1;border-color:rgb(1 42 74/var(--tw-border-opacity))}:is(.dark .dark\:border-slate-900\/75){border-color:rgba(0,8,15,.75)}:is(.dark .dark\:border-transparent){border-color:transparent}:is(.dark .dark\:bg-purple-600){--tw-bg-opacity:1;background-color:rgb(111 83 243/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-600){--tw-bg-opacity:1;background-color:rgb(1 25 44/var(--tw-bg-opacity))}:is(.dark .dark\:bg-slate-700){--tw-bg-opacity:1;background-color:rgb(1 21 37/var(--tw-bg-opacity))}:is(.dark .dark\:text-gray-100){--tw-text-opacity:1;color:rgb(229 233 241/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-50){--tw-text-opacity:1;color:rgb(242 244 248/var(--tw-text-opacity))}:is(.dark .dark\:text-gray-600){--tw-text-opacity:1;color:rgb(151 161 175/var(--tw-text-opacity))}:is(.dark .dark\:text-purple-400){--tw-text-opacity:1;color:rgb(154 135 247/var(--tw-text-opacity))}:is(.dark .dark\:text-slate-100){--tw-text-opacity:1;color:rgb(103 127 146/var(--tw-text-opacity))}:is(.dark .dark\:hover\:bg-purple-500:hover){--tw-bg-opacity:1;background-color:rgb(140 117 245/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:bg-slate-600:hover){--tw-bg-opacity:1;background-color:rgb(1 25 44/var(--tw-bg-opacity))}:is(.dark .dark\:hover\:text-gray-500:hover){--tw-text-opacity:1;color:rgb(170 181 197/var(--tw-text-opacity))}:is(.dark .dark\:hover\:text-purple-200:hover){--tw-text-opacity:1;color:rgb(197 186 250/var(--tw-text-opacity))}html:root{--ifm-toc-border-color:transparent;--ifm-font-family-base:var(--moon-font-family-sans);--ifm-font-family-monospace:var(--moon-font-family-mono);--ifm-navbar-background-color:var(--moon-color-slate-900);--ifm-navbar-link-color:var(--moon-color-purple-50);--ifm-navbar-link-hover-color:var(--moon-color-purple-400);--ifm-code-font-size:95%;--ifm-code-padding-vertical:var(--moon-padding-0_25);--ifm-code-padding-horizontal:var(--moon-padding-0_5);--doc-sidebar-width:350px;--ifm-menu-link-padding-vertical:var(--moon-padding-1);--ifm-menu-link-padding-horizontal:var(--moon-padding-1_5);--ifm-toc-padding-vertical:var(--moon-padding-1);--ifm-toc-padding-horizontal:var(--moon-padding-1);--ifm-leading-desktop:1.5;--ifm-list-item-margin:var(--moon-margin-1);--ifm-blockquote-padding-vertical:var(--moon-padding-1);--ifm-blockquote-padding-horizontal:var(--moon-padding-1_5);--ifm-blockquote-border-left-width:4px;--docusaurus-highlighted-code-line-bg:hsla(0,0%,100%,.05)}html[data-theme=light]{--ifm-color-primary-lightest:var(--moon-color-blurple-100);--ifm-color-primary-lighter:var(--moon-color-blurple-200);--ifm-color-primary-light:var(--moon-color-blurple-300);--ifm-color-primary:var(--moon-color-blurple-400);--ifm-color-primary-dark:var(--moon-color-blurple-600);--ifm-color-primary-darker:var(--moon-color-blurple-700);--ifm-color-primary-darkest:var(--moon-color-blurple-800);--ifm-color-secondary:var(--moon-color-slate-600);--ifm-color-success:var(--moon-color-green-600);--ifm-color-info:var(--moon-color-teal-600);--ifm-color-warning:var(--moon-color-yellow-600);--ifm-color-danger:var(--moon-color-red-600);--ifm-color-emphasis-200:var(--moon-color-gray-600);--ifm-color-emphasis-300:var(--moon-color-gray-700);--ifm-menu-color-background-active:var(--moon-color-blurple-50);--ifm-menu-color-background-hover:var(--moon-color-gray-50);--ifm-menu-color:var(--moon-color-gray-800);--ifm-menu-color-active:var(--moon-color-blurple-600);--ifm-toc-link-color:var(--moon-color-gray-800);--ifm-link-hover-color:var(--moon-color-blurple-800);--ifm-blockquote-border-color:var(--moon-color-teal-400);--ifm-blockquote-background-color:var(--moon-color-gray-100)}html[data-theme=light] .navbar-sidebar__item{background-color:var(--moon-color-white)}.navbar__logo{margin-bottom:-6px;width:125px}.navbar-sidebar__brand button:hover,.navbar-sidebar__close:hover,.navbar__items>div,.navbar__toggle:hover{color:var(--moon-color-white)}.navbar-sidebar__brand button,.navbar-sidebar__close,.navbar__toggle{color:var(--moon-color-gray-300)}.menu__list .menu__list,.menu__list-item:not(:first-child),ul ul{margin-top:var(--moon-padding-1)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.skipToContent_oPtH{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_oPtH:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_J5rP{line-height:0;padding:0}.content_bSb_{font-size:85%;padding:5px 0;text-align:center}.content_bSb_ a{color:inherit;text-decoration:underline}.announcementBar_zJRd{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}.announcementBarPlaceholder_NpUd{flex:0 0 10px}.announcementBarClose_Jjdj{align-self:stretch;flex:0 0 30px}.toggle_ki11{height:2rem;width:2rem}.toggleButton_MMFG{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.toggleButton_MMFG:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_Uw7m{cursor:not-allowed}.darkNavbarColorModeToggle_m8pZ:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedImage--dark_bGx0,[data-theme=light] .themedImage--light_HAxW{display:initial}.iconExternalLink_nPrP{margin-left:.3rem}.iconLanguage_kvP7{margin-right:5px;vertical-align:text-bottom}.navbarHideable_hhpl{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_nmcs{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_WE6Q{color:red;white-space:pre-wrap}.footerLogoLink_tutC{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_tutC:hover,.hash-link:focus,:hover>.hash-link{opacity:1}.mainWrapper_MB5r{display:flex;flex:1 0 auto;flex-direction:column}#__docusaurus{display:flex;flex-direction:column;min-height:100%}.sidebar_CLW8{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 2rem)}.sidebarItemTitle_DQfJ{font-size:var(--ifm-h3-font-size);font-weight:var(--ifm-font-weight-bold)}.container_iZB2,.sidebarItemList_rvuc{font-size:.9rem}.sidebarItem__RMN{margin-top:.7rem}.sidebarItemLink_Ony9{color:var(--ifm-font-color-base);display:block}.sidebarItemLinkActive_MJ75{color:var(--ifm-color-primary)!important}.cardContainer_H47c{--ifm-link-color:var(--ifm-color-emphasis-800);--ifm-link-hover-color:var(--ifm-color-emphasis-700);--ifm-link-hover-decoration:none;border:1px solid var(--ifm-color-emphasis-200);box-shadow:0 1.5px 3px 0 rgba(0,0,0,.15);transition:all var(--ifm-transition-fast) ease;transition-property:border,box-shadow}.cardContainer_H47c:hover{border-color:var(--ifm-color-primary);box-shadow:0 3px 6px 0 rgba(0,0,0,.2)}.cardTitle_tTnA{font-size:1.2rem}.cardDescription_rTl4{font-size:.8rem}.searchQueryInput_RVvj,.searchVersionInput_QmSs{background:var(--docsearch-searchbox-focus-background);border:2px solid var(--ifm-toc-border-color);border-radius:var(--ifm-global-radius);color:var(--docsearch-text-color);font:var(--ifm-font-size-base) var(--ifm-font-family-base);margin-bottom:.5rem;padding:.8rem;transition:border var(--ifm-transition-fast) ease;width:100%}.searchQueryInput_RVvj:focus,.searchVersionInput_QmSs:focus{border-color:var(--docsearch-primary-color);outline:0}.searchQueryInput_RVvj::placeholder{color:var(--docsearch-muted-color)}.searchResultsColumn_Vh0c{font-size:.9rem;font-weight:700}.algoliaLogo_yiAH{max-width:150px}.algoliaLogoPathFill_tzCx{fill:var(--ifm-font-color-base)}.searchResultItem_q31K{border-bottom:1px solid var(--ifm-toc-border-color);padding:1rem 0}.searchResultItemHeading_Iq68{font-weight:400;margin-bottom:0}.searchResultItemPath_pr04{--ifm-breadcrumb-separator-size-multiplier:1;color:var(--ifm-color-content-secondary);font-size:.8rem}.searchResultItemSummary_fqhL{font-style:italic;margin:.5rem 0 0}.loadingSpinner_hU64{animation:1s linear infinite a;border:.4em solid #eee;border-radius:50%;border-top:.4em solid var(--ifm-color-primary);height:3rem;margin:0 auto;width:3rem}.search-result-match{background:rgba(255,215,142,.25);color:var(--docsearch-hit-color);padding:.09em 0}.authorCol_v1VX{flex-grow:1!important;max-width:inherit!important}.imageOnlyAuthorRow_RxZ1{display:flex;flex-flow:row wrap}.imageOnlyAuthorCol_iWtj{margin-left:.3rem;margin-right:.3rem}@font-face{font-display:block;font-family:codicon;src:url(/assets/fonts/codicon-b797181c93b3755f4fa1258a4cca14d4.ttf) format("truetype")}@keyframes a{to{transform:rotate(1turn)}}.codicon-gear.codicon-modifier-spin,.codicon-loading.codicon-modifier-spin,.codicon-sync.codicon-modifier-spin{animation:1.5s steps(30) infinite a}.codicon-modifier-hidden{opacity:0}.codicon-loading{animation-duration:1s!important;animation-timing-function:cubic-bezier(.53,.21,.29,.67)!important}.codicon-add:before,.codicon-gist-new:before,.codicon-plus:before,.codicon-repo-create:before{content:"\ea60"}.codicon-light-bulb:before,.codicon-lightbulb:before{content:"\ea61"}.codicon-repo-delete:before,.codicon-repo:before{content:"\ea62"}.codicon-gist-fork:before,.codicon-repo-forked:before{content:"\ea63"}.codicon-git-pull-request-abandoned:before,.codicon-git-pull-request:before{content:"\ea64"}.codicon-keyboard:before,.codicon-record-keys:before{content:"\ea65"}.codicon-tag-add:before,.codicon-tag-remove:before,.codicon-tag:before{content:"\ea66"}.codicon-person-filled:before,.codicon-person-follow:before,.codicon-person-outline:before,.codicon-person:before{content:"\ea67"}.codicon-git-branch-create:before,.codicon-git-branch-delete:before,.codicon-git-branch:before,.codicon-source-control:before{content:"\ea68"}.codicon-mirror-public:before,.codicon-mirror:before{content:"\ea69"}.codicon-star-add:before,.codicon-star-delete:before,.codicon-star-empty:before,.codicon-star:before{content:"\ea6a"}.codicon-comment-add:before,.codicon-comment:before{content:"\ea6b"}.codicon-alert:before,.codicon-warning:before{content:"\ea6c"}.codicon-search-save:before,.codicon-search:before{content:"\ea6d"}.codicon-log-out:before,.codicon-sign-out:before{content:"\ea6e"}.codicon-log-in:before,.codicon-sign-in:before{content:"\ea6f"}.codicon-eye-unwatch:before,.codicon-eye-watch:before,.codicon-eye:before{content:"\ea70"}.codicon-circle-filled:before,.codicon-close-dirty:before,.codicon-debug-breakpoint-disabled:before,.codicon-debug-breakpoint:before,.codicon-debug-hint:before,.codicon-primitive-dot:before{content:"\ea71"}.codicon-primitive-square:before{content:"\ea72"}.codicon-edit:before,.codicon-pencil:before{content:"\ea73"}.codicon-info:before,.codicon-issue-opened:before{content:"\ea74"}.codicon-gist-private:before,.codicon-git-fork-private:before,.codicon-lock:before,.codicon-mirror-private:before{content:"\ea75"}.codicon-close:before,.codicon-remove-close:before,.codicon-x:before{content:"\ea76"}.codicon-repo-sync:before,.codicon-sync:before{content:"\ea77"}.codicon-clone:before,.codicon-desktop-download:before{content:"\ea78"}.codicon-beaker:before,.codicon-microscope:before{content:"\ea79"}.codicon-device-desktop:before,.codicon-vm:before{content:"\ea7a"}.codicon-file-text:before,.codicon-file:before{content:"\ea7b"}.codicon-ellipsis:before,.codicon-kebab-horizontal:before,.codicon-more:before{content:"\ea7c"}.codicon-mail-reply:before,.codicon-reply:before{content:"\ea7d"}.codicon-organization-filled:before,.codicon-organization-outline:before,.codicon-organization:before{content:"\ea7e"}.codicon-file-add:before,.codicon-new-file:before{content:"\ea7f"}.codicon-file-directory-create:before,.codicon-new-folder:before{content:"\ea80"}.codicon-trash:before,.codicon-trashcan:before{content:"\ea81"}.codicon-clock:before,.codicon-history:before{content:"\ea82"}.codicon-file-directory:before,.codicon-folder:before,.codicon-symbol-folder:before{content:"\ea83"}.codicon-github:before,.codicon-logo-github:before,.codicon-mark-github:before{content:"\ea84"}.codicon-console:before,.codicon-repl:before,.codicon-terminal:before{content:"\ea85"}.codicon-symbol-event:before,.codicon-zap:before{content:"\ea86"}.codicon-error:before,.codicon-stop:before{content:"\ea87"}.codicon-symbol-variable:before,.codicon-variable:before{content:"\ea88"}.codicon-array:before,.codicon-symbol-array:before{content:"\ea8a"}.codicon-symbol-module:before,.codicon-symbol-namespace:before,.codicon-symbol-object:before,.codicon-symbol-package:before{content:"\ea8b"}.codicon-symbol-constructor:before,.codicon-symbol-function:before,.codicon-symbol-method:before{content:"\ea8c"}.codicon-symbol-boolean:before,.codicon-symbol-null:before{content:"\ea8f"}.codicon-symbol-number:before,.codicon-symbol-numeric:before{content:"\ea90"}.codicon-symbol-struct:before,.codicon-symbol-structure:before{content:"\ea91"}.codicon-symbol-parameter:before,.codicon-symbol-type-parameter:before{content:"\ea92"}.codicon-symbol-key:before,.codicon-symbol-text:before{content:"\ea93"}.codicon-go-to-file:before,.codicon-symbol-reference:before{content:"\ea94"}.codicon-symbol-enum:before,.codicon-symbol-value:before{content:"\ea95"}.codicon-symbol-ruler:before,.codicon-symbol-unit:before{content:"\ea96"}.codicon-activate-breakpoints:before{content:"\ea97"}.codicon-archive:before{content:"\ea98"}.codicon-arrow-both:before{content:"\ea99"}.codicon-arrow-down:before{content:"\ea9a"}.codicon-arrow-left:before{content:"\ea9b"}.codicon-arrow-right:before{content:"\ea9c"}.codicon-arrow-small-down:before{content:"\ea9d"}.codicon-arrow-small-left:before{content:"\ea9e"}.codicon-arrow-small-right:before{content:"\ea9f"}.codicon-arrow-small-up:before{content:"\eaa0"}.codicon-arrow-up:before{content:"\eaa1"}.codicon-bell:before{content:"\eaa2"}.codicon-bold:before{content:"\eaa3"}.codicon-book:before{content:"\eaa4"}.codicon-bookmark:before{content:"\eaa5"}.codicon-debug-breakpoint-conditional-unverified:before{content:"\eaa6"}.codicon-debug-breakpoint-conditional-disabled:before,.codicon-debug-breakpoint-conditional:before{content:"\eaa7"}.codicon-debug-breakpoint-data-unverified:before{content:"\eaa8"}.codicon-debug-breakpoint-data-disabled:before,.codicon-debug-breakpoint-data:before{content:"\eaa9"}.codicon-debug-breakpoint-log-unverified:before{content:"\eaaa"}.codicon-debug-breakpoint-log-disabled:before,.codicon-debug-breakpoint-log:before{content:"\eaab"}.codicon-briefcase:before{content:"\eaac"}.codicon-broadcast:before{content:"\eaad"}.codicon-browser:before{content:"\eaae"}.codicon-bug:before{content:"\eaaf"}.codicon-calendar:before{content:"\eab0"}.codicon-case-sensitive:before{content:"\eab1"}.codicon-check:before{content:"\eab2"}.codicon-checklist:before{content:"\eab3"}.codicon-chevron-down:before{content:"\eab4"}.codicon-chevron-left:before{content:"\eab5"}.codicon-chevron-right:before{content:"\eab6"}.codicon-chevron-up:before{content:"\eab7"}.codicon-chrome-close:before{content:"\eab8"}.codicon-chrome-maximize:before{content:"\eab9"}.codicon-chrome-minimize:before{content:"\eaba"}.codicon-chrome-restore:before{content:"\eabb"}.codicon-circle-outline:before,.codicon-debug-breakpoint-unverified:before{content:"\eabc"}.codicon-circle-slash:before{content:"\eabd"}.codicon-circuit-board:before{content:"\eabe"}.codicon-clear-all:before{content:"\eabf"}.codicon-clippy:before{content:"\eac0"}.codicon-close-all:before{content:"\eac1"}.codicon-cloud-download:before{content:"\eac2"}.codicon-cloud-upload:before{content:"\eac3"}.codicon-code:before{content:"\eac4"}.codicon-collapse-all:before{content:"\eac5"}.codicon-color-mode:before{content:"\eac6"}.codicon-comment-discussion:before{content:"\eac7"}.codicon-credit-card:before{content:"\eac9"}.codicon-dash:before{content:"\eacc"}.codicon-dashboard:before{content:"\eacd"}.codicon-database:before{content:"\eace"}.codicon-debug-continue:before{content:"\eacf"}.codicon-debug-disconnect:before{content:"\ead0"}.codicon-debug-pause:before{content:"\ead1"}.codicon-debug-restart:before{content:"\ead2"}.codicon-debug-start:before{content:"\ead3"}.codicon-debug-step-into:before{content:"\ead4"}.codicon-debug-step-out:before{content:"\ead5"}.codicon-debug-step-over:before{content:"\ead6"}.codicon-debug-stop:before{content:"\ead7"}.codicon-debug:before{content:"\ead8"}.codicon-device-camera-video:before{content:"\ead9"}.codicon-device-camera:before{content:"\eada"}.codicon-device-mobile:before{content:"\eadb"}.codicon-diff-added:before{content:"\eadc"}.codicon-diff-ignored:before{content:"\eadd"}.codicon-diff-modified:before{content:"\eade"}.codicon-diff-removed:before{content:"\eadf"}.codicon-diff-renamed:before{content:"\eae0"}.codicon-diff:before{content:"\eae1"}.codicon-discard:before{content:"\eae2"}.codicon-editor-layout:before{content:"\eae3"}.codicon-empty-window:before{content:"\eae4"}.codicon-exclude:before{content:"\eae5"}.codicon-extensions:before{content:"\eae6"}.codicon-eye-closed:before{content:"\eae7"}.codicon-file-binary:before{content:"\eae8"}.codicon-file-code:before{content:"\eae9"}.codicon-file-media:before{content:"\eaea"}.codicon-file-pdf:before{content:"\eaeb"}.codicon-file-submodule:before{content:"\eaec"}.codicon-file-symlink-directory:before{content:"\eaed"}.codicon-file-symlink-file:before{content:"\eaee"}.codicon-file-zip:before{content:"\eaef"}.codicon-files:before{content:"\eaf0"}.codicon-filter:before{content:"\eaf1"}.codicon-flame:before{content:"\eaf2"}.codicon-fold-down:before{content:"\eaf3"}.codicon-fold-up:before{content:"\eaf4"}.codicon-fold:before{content:"\eaf5"}.codicon-folder-active:before{content:"\eaf6"}.codicon-folder-opened:before{content:"\eaf7"}.codicon-gear:before{content:"\eaf8"}.codicon-gift:before{content:"\eaf9"}.codicon-gist-secret:before{content:"\eafa"}.codicon-gist:before{content:"\eafb"}.codicon-git-commit:before{content:"\eafc"}.codicon-compare-changes:before,.codicon-git-compare:before{content:"\eafd"}.codicon-git-merge:before{content:"\eafe"}.codicon-github-action:before{content:"\eaff"}.codicon-github-alt:before{content:"\eb00"}.codicon-globe:before{content:"\eb01"}.codicon-grabber:before{content:"\eb02"}.codicon-graph:before{content:"\eb03"}.codicon-gripper:before{content:"\eb04"}.codicon-heart:before{content:"\eb05"}.codicon-home:before{content:"\eb06"}.codicon-horizontal-rule:before{content:"\eb07"}.codicon-hubot:before{content:"\eb08"}.codicon-inbox:before{content:"\eb09"}.codicon-issue-reopened:before{content:"\eb0b"}.codicon-issues:before{content:"\eb0c"}.codicon-italic:before{content:"\eb0d"}.codicon-jersey:before{content:"\eb0e"}.codicon-bracket:before,.codicon-json:before{content:"\eb0f"}.codicon-kebab-vertical:before{content:"\eb10"}.codicon-key:before{content:"\eb11"}.codicon-law:before{content:"\eb12"}.codicon-lightbulb-autofix:before{content:"\eb13"}.codicon-link-external:before{content:"\eb14"}.codicon-link:before{content:"\eb15"}.codicon-list-ordered:before{content:"\eb16"}.codicon-list-unordered:before{content:"\eb17"}.codicon-live-share:before{content:"\eb18"}.codicon-loading:before{content:"\eb19"}.codicon-location:before{content:"\eb1a"}.codicon-mail-read:before{content:"\eb1b"}.codicon-mail:before{content:"\eb1c"}.codicon-markdown:before{content:"\eb1d"}.codicon-megaphone:before{content:"\eb1e"}.codicon-mention:before{content:"\eb1f"}.codicon-milestone:before{content:"\eb20"}.codicon-mortar-board:before{content:"\eb21"}.codicon-move:before{content:"\eb22"}.codicon-multiple-windows:before{content:"\eb23"}.codicon-mute:before{content:"\eb24"}.codicon-no-newline:before{content:"\eb25"}.codicon-note:before{content:"\eb26"}.codicon-octoface:before{content:"\eb27"}.codicon-open-preview:before{content:"\eb28"}.codicon-package:before{content:"\eb29"}.codicon-paintcan:before{content:"\eb2a"}.codicon-pin:before{content:"\eb2b"}.codicon-play:before,.codicon-run:before{content:"\eb2c"}.codicon-plug:before{content:"\eb2d"}.codicon-preserve-case:before{content:"\eb2e"}.codicon-preview:before{content:"\eb2f"}.codicon-project:before{content:"\eb30"}.codicon-pulse:before{content:"\eb31"}.codicon-question:before{content:"\eb32"}.codicon-quote:before{content:"\eb33"}.codicon-radio-tower:before{content:"\eb34"}.codicon-reactions:before{content:"\eb35"}.codicon-references:before{content:"\eb36"}.codicon-refresh:before{content:"\eb37"}.codicon-regex:before{content:"\eb38"}.codicon-remote-explorer:before{content:"\eb39"}.codicon-remote:before{content:"\eb3a"}.codicon-remove:before{content:"\eb3b"}.codicon-replace-all:before{content:"\eb3c"}.codicon-replace:before{content:"\eb3d"}.codicon-repo-clone:before{content:"\eb3e"}.codicon-repo-force-push:before{content:"\eb3f"}.codicon-repo-pull:before{content:"\eb40"}.codicon-repo-push:before{content:"\eb41"}.codicon-report:before{content:"\eb42"}.codicon-request-changes:before{content:"\eb43"}.codicon-rocket:before{content:"\eb44"}.codicon-root-folder-opened:before{content:"\eb45"}.codicon-root-folder:before{content:"\eb46"}.codicon-rss:before{content:"\eb47"}.codicon-ruby:before{content:"\eb48"}.codicon-save-all:before{content:"\eb49"}.codicon-save-as:before{content:"\eb4a"}.codicon-save:before{content:"\eb4b"}.codicon-screen-full:before{content:"\eb4c"}.codicon-screen-normal:before{content:"\eb4d"}.codicon-search-stop:before{content:"\eb4e"}.codicon-server:before{content:"\eb50"}.codicon-settings-gear:before{content:"\eb51"}.codicon-settings:before{content:"\eb52"}.codicon-shield:before{content:"\eb53"}.codicon-smiley:before{content:"\eb54"}.codicon-sort-precedence:before{content:"\eb55"}.codicon-split-horizontal:before{content:"\eb56"}.codicon-split-vertical:before{content:"\eb57"}.codicon-squirrel:before{content:"\eb58"}.codicon-star-full:before{content:"\eb59"}.codicon-star-half:before{content:"\eb5a"}.codicon-symbol-class:before{content:"\eb5b"}.codicon-symbol-color:before{content:"\eb5c"}.codicon-symbol-constant:before{content:"\eb5d"}.codicon-symbol-enum-member:before{content:"\eb5e"}.codicon-symbol-field:before{content:"\eb5f"}.codicon-symbol-file:before{content:"\eb60"}.codicon-symbol-interface:before{content:"\eb61"}.codicon-symbol-keyword:before{content:"\eb62"}.codicon-symbol-misc:before{content:"\eb63"}.codicon-symbol-operator:before{content:"\eb64"}.codicon-symbol-property:before,.codicon-wrench-subaction:before,.codicon-wrench:before{content:"\eb65"}.codicon-symbol-snippet:before{content:"\eb66"}.codicon-tasklist:before{content:"\eb67"}.codicon-telescope:before{content:"\eb68"}.codicon-text-size:before{content:"\eb69"}.codicon-three-bars:before{content:"\eb6a"}.codicon-thumbsdown:before{content:"\eb6b"}.codicon-thumbsup:before{content:"\eb6c"}.codicon-tools:before{content:"\eb6d"}.codicon-triangle-down:before{content:"\eb6e"}.codicon-triangle-left:before{content:"\eb6f"}.codicon-triangle-right:before{content:"\eb70"}.codicon-triangle-up:before{content:"\eb71"}.codicon-twitter:before{content:"\eb72"}.codicon-unfold:before{content:"\eb73"}.codicon-unlock:before{content:"\eb74"}.codicon-unmute:before{content:"\eb75"}.codicon-unverified:before{content:"\eb76"}.codicon-verified:before{content:"\eb77"}.codicon-versions:before{content:"\eb78"}.codicon-vm-active:before{content:"\eb79"}.codicon-vm-outline:before{content:"\eb7a"}.codicon-vm-running:before{content:"\eb7b"}.codicon-watch:before{content:"\eb7c"}.codicon-whitespace:before{content:"\eb7d"}.codicon-whole-word:before{content:"\eb7e"}.codicon-window:before{content:"\eb7f"}.codicon-word-wrap:before{content:"\eb80"}.codicon-zoom-in:before{content:"\eb81"}.codicon-zoom-out:before{content:"\eb82"}.codicon-list-filter:before{content:"\eb83"}.codicon-list-flat:before{content:"\eb84"}.codicon-list-selection:before,.codicon-selection:before{content:"\eb85"}.codicon-list-tree:before{content:"\eb86"}.codicon-debug-breakpoint-function-unverified:before{content:"\eb87"}.codicon-debug-breakpoint-function-disabled:before,.codicon-debug-breakpoint-function:before{content:"\eb88"}.codicon-debug-stackframe-active:before{content:"\eb89"}.codicon-circle-small-filled:before,.codicon-debug-stackframe-dot:before{content:"\eb8a"}.codicon-debug-stackframe-focused:before,.codicon-debug-stackframe:before{content:"\eb8b"}.codicon-debug-breakpoint-unsupported:before{content:"\eb8c"}.codicon-symbol-string:before{content:"\eb8d"}.codicon-debug-reverse-continue:before{content:"\eb8e"}.codicon-debug-step-back:before{content:"\eb8f"}.codicon-debug-restart-frame:before{content:"\eb90"}.codicon-debug-alt:before{content:"\eb91"}.codicon-call-incoming:before{content:"\eb92"}.codicon-call-outgoing:before{content:"\eb93"}.codicon-menu:before{content:"\eb94"}.codicon-expand-all:before{content:"\eb95"}.codicon-feedback:before{content:"\eb96"}.codicon-group-by-ref-type:before{content:"\eb97"}.codicon-ungroup-by-ref-type:before{content:"\eb98"}.codicon-account:before{content:"\eb99"}.codicon-bell-dot:before{content:"\eb9a"}.codicon-debug-console:before{content:"\eb9b"}.codicon-library:before{content:"\eb9c"}.codicon-output:before{content:"\eb9d"}.codicon-run-all:before{content:"\eb9e"}.codicon-sync-ignored:before{content:"\eb9f"}.codicon-pinned:before{content:"\eba0"}.codicon-github-inverted:before{content:"\eba1"}.codicon-server-process:before{content:"\eba2"}.codicon-server-environment:before{content:"\eba3"}.codicon-issue-closed:before,.codicon-pass:before{content:"\eba4"}.codicon-stop-circle:before{content:"\eba5"}.codicon-play-circle:before{content:"\eba6"}.codicon-record:before{content:"\eba7"}.codicon-debug-alt-small:before{content:"\eba8"}.codicon-vm-connect:before{content:"\eba9"}.codicon-cloud:before{content:"\ebaa"}.codicon-merge:before{content:"\ebab"}.codicon-export:before{content:"\ebac"}.codicon-graph-left:before{content:"\ebad"}.codicon-magnet:before{content:"\ebae"}.codicon-notebook:before{content:"\ebaf"}.codicon-redo:before{content:"\ebb0"}.codicon-check-all:before{content:"\ebb1"}.codicon-pinned-dirty:before{content:"\ebb2"}.codicon-pass-filled:before{content:"\ebb3"}.codicon-circle-large-filled:before{content:"\ebb4"}.codicon-circle-large-outline:before{content:"\ebb5"}.codicon-combine:before,.codicon-gather:before{content:"\ebb6"}.codicon-table:before{content:"\ebb7"}.codicon-variable-group:before{content:"\ebb8"}.codicon-type-hierarchy:before{content:"\ebb9"}.codicon-type-hierarchy-sub:before{content:"\ebba"}.codicon-type-hierarchy-super:before{content:"\ebbb"}.codicon-git-pull-request-create:before{content:"\ebbc"}.codicon-run-above:before{content:"\ebbd"}.codicon-run-below:before{content:"\ebbe"}.codicon-notebook-template:before{content:"\ebbf"}.codicon-debug-rerun:before{content:"\ebc0"}.codicon-workspace-trusted:before{content:"\ebc1"}.codicon-workspace-untrusted:before{content:"\ebc2"}.codicon-workspace-unknown:before{content:"\ebc3"}.codicon-terminal-cmd:before{content:"\ebc4"}.codicon-terminal-debian:before{content:"\ebc5"}.codicon-terminal-linux:before{content:"\ebc6"}.codicon-terminal-powershell:before{content:"\ebc7"}.codicon-terminal-tmux:before{content:"\ebc8"}.codicon-terminal-ubuntu:before{content:"\ebc9"}.codicon-terminal-bash:before{content:"\ebca"}.codicon-arrow-swap:before{content:"\ebcb"}.codicon-copy:before{content:"\ebcc"}.codicon-person-add:before{content:"\ebcd"}.codicon-filter-filled:before{content:"\ebce"}.codicon-wand:before{content:"\ebcf"}.codicon-debug-line-by-line:before{content:"\ebd0"}.codicon-inspect:before{content:"\ebd1"}.codicon-layers:before{content:"\ebd2"}.codicon-layers-dot:before{content:"\ebd3"}.codicon-layers-active:before{content:"\ebd4"}.codicon-compass:before{content:"\ebd5"}.codicon-compass-dot:before{content:"\ebd6"}.codicon-compass-active:before{content:"\ebd7"}.codicon-azure:before{content:"\ebd8"}.codicon-issue-draft:before{content:"\ebd9"}.codicon-git-pull-request-closed:before{content:"\ebda"}.codicon-git-pull-request-draft:before{content:"\ebdb"}.codicon-debug-all:before{content:"\ebdc"}.codicon-debug-coverage:before{content:"\ebdd"}.codicon-run-errors:before{content:"\ebde"}.codicon-folder-library:before{content:"\ebdf"}.codicon-debug-continue-small:before{content:"\ebe0"}.codicon-beaker-stop:before{content:"\ebe1"}.codicon-graph-line:before{content:"\ebe2"}.codicon-graph-scatter:before{content:"\ebe3"}.codicon-pie-chart:before{content:"\ebe4"}.codicon-bracket-dot:before{content:"\ebe5"}.codicon-bracket-error:before{content:"\ebe6"}.codicon-lock-small:before{content:"\ebe7"}.codicon-azure-devops:before{content:"\ebe8"}.codicon-verified-filled:before{content:"\ebe9"}.codicon-newline:before{content:"\ebea"}.codicon-layout:before{content:"\ebeb"}.codicon-layout-activitybar-left:before{content:"\ebec"}.codicon-layout-activitybar-right:before{content:"\ebed"}.codicon-layout-panel-left:before{content:"\ebee"}.codicon-layout-panel-center:before{content:"\ebef"}.codicon-layout-panel-justify:before{content:"\ebf0"}.codicon-layout-panel-right:before{content:"\ebf1"}.codicon-layout-panel:before{content:"\ebf2"}.codicon-layout-sidebar-left:before{content:"\ebf3"}.codicon-layout-sidebar-right:before{content:"\ebf4"}.codicon-layout-statusbar:before{content:"\ebf5"}.codicon-layout-menubar:before{content:"\ebf6"}.codicon-layout-centered:before{content:"\ebf7"}.codicon-target:before{content:"\ebf8"}.codicon-indent:before{content:"\ebf9"}.codicon-record-small:before{content:"\ebfa"}.codicon-error-small:before{content:"\ebfb"}.codicon-arrow-circle-down:before{content:"\ebfc"}.codicon-arrow-circle-left:before{content:"\ebfd"}.codicon-arrow-circle-right:before{content:"\ebfe"}.codicon-arrow-circle-up:before{content:"\ebff"}.codicon-layout-sidebar-right-off:before{content:"\ec00"}.codicon-layout-panel-off:before{content:"\ec01"}.codicon-layout-sidebar-left-off:before{content:"\ec02"}.codicon-blank:before{content:"\ec03"}.codicon-heart-filled:before{content:"\ec04"}.codicon-map:before{content:"\ec05"}.codicon-map-filled:before{content:"\ec06"}.codicon-circle-small:before{content:"\ec07"}.codicon-bell-slash:before{content:"\ec08"}.codicon-bell-slash-dot:before{content:"\ec09"}.codicon-comment-unresolved:before{content:"\ec0a"}.codicon-git-pull-request-go-to-changes:before{content:"\ec0b"}.codicon-git-pull-request-new-changes:before{content:"\ec0c"}.tsd-panel{border:1px solid var(--ifm-card-background-color);border-radius:var(--ifm-global-radius);margin-bottom:var(--ifm-spacing-vertical);overflow:hidden}.tsd-panel>.tsd-panel{margin:var(--tsd-spacing-horizontal)}.tsd-panel-header{background-color:var(--ifm-card-background-color);position:relative}.tsd-panel-content,.tsd-panel-header{margin:0;padding:var(--tsd-spacing-vertical) var(--tsd-spacing-horizontal)}.tsd-panel-content{border-bottom:1px solid var(--ifm-card-background-color)}.tsd-panel-content:last-child{border-bottom:0}.tsd-footer,.tsd-panel-group{margin-top:var(--tsd-spacing-vertical-full)}.tsd-panel-header .tsd-anchor{float:right;margin-left:.5rem}.tsd-panel-header .tsd-anchor-id{position:absolute;right:0;top:-4.5rem}.tsd-divider{border:1px solid var(--ifm-card-background-color);border-bottom:0;margin:var(--tsd-spacing-vertical) -1rem}html[data-theme=light] .tsd-panel,html[data-theme=light] .tsd-panel-content{border-color:var(--ifm-hover-overlay)}.tsd-hierarchy,.tsd-type-parameters{list-style:square;margin:0}.tsd-descriptions,.tsd-index-list,.tsd-signatures,.tsd-sources p,.tsd-sources ul{list-style:none;margin:0;padding:0}.tsd-index-list{display:flex;flex-wrap:wrap}.tsd-index-list li{padding-right:1rem;width:100%}.tsd-comment,.tsd-comment>.markdown,.tsd-descriptions,.tsd-parameters,.tsd-sources,.tsd-type-declaration,.tsd-type-parameters{margin-bottom:0;margin-top:var(--tsd-spacing-vertical)}.tsd-comment-root{margin-bottom:var(--tsd-spacing-vertical-full);margin-top:0}.tsd-footer,.tsd-sources{color:var(--tsd-muted-text);font-size:var(--tsd-font-small)}.tsd-footer a,.tsd-sources a{color:var(--tsd-muted-text);text-decoration:underline}.tsd-footer a:hover,.tsd-sources a:hover{color:var(--ifm-link-color)}.tsd-description>*,.tsd-parameters{margin-top:var(--tsd-spacing-vertical)}.tsd-signature-inactive{opacity:.35}.tsd-flag{background-color:var(--ifm-footer-background-color);border-radius:var(--ifm-global-radius);color:var(--ifm-footer-title-color);display:inline-block;font-weight:400;margin-right:.5rem;margin-top:-1px;opacity:.65;padding:3px 6px;text-indent:0}.badge-group,.tsd-flag{font-size:var(--tsd-font-small);vertical-align:middle}.tsd-panel-header .badge-group{display:inline-block;margin-left:.25em}.badge-group>span{margin-right:.25rem}.tsd-signature-symbol,.tsd-signature-type-generic{color:var(--tsd-muted-text);font-weight:400}.tsd-signature-type{font-style:italic;font-weight:400}.codicon[class*=codicon-]{-moz-osx-font-smoothing:grayscale;font:16px/1 codicon;text-align:center;text-decoration:none;text-rendering:auto;user-select:none;-webkit-user-select:none;-ms-user-select:none;display:inline-block;vertical-align:middle}.tsd-kind-icon{word-break:break-all}.apiPage .menu__link:not(.menu__link--sublist),.apiPage .table-of-contents__link,.tsd-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backToTopButton_iEvu{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;box-shadow:var(--ifm-global-shadow-lw);height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_iEvu:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_DO8w{opacity:1;transform:scale(1);visibility:visible}[data-theme=dark]:root{--docusaurus-collapse-button-bg:hsla(0,0%,100%,.05);--docusaurus-collapse-button-bg-hover:hsla(0,0%,100%,.1)}.collapseSidebarButton_oTwn{display:none;margin:0}.docMainContainer_sTIZ,.docPage_KLoz{display:flex;width:100%}.docPage_KLoz{flex:1 0}.docsWrapper_ct1J{display:flex;flex:1 0 auto}.DocSearch-Button,.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Button{background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;font-weight:500;height:36px;justify-content:space-between;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:0}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Hit-Tree,.DocSearch-Hit-action,.DocSearch-Hit-icon,.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Input,.DocSearch-Link{-webkit-appearance:none;font:inherit}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border:0;border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 2px;position:relative;top:-1px;width:20px}.DocSearch--active{overflow:hidden!important}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{appearance:none;background:0 0;border:0;color:var(--docsearch-text-color);flex:1;font-size:1.2em;height:100%;outline:0;padding:0 0 0 8px;width:80%}.DocSearch-Hit-action-button,.DocSearch-Reset{-webkit-appearance:none;border:0;cursor:pointer}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Cancel,.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator,.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset{animation:.1s ease-in forwards b;appearance:none;background:none;border-radius:50%;color:var(--docsearch-icon-color);padding:2px;right:0}.DocSearch-Help,.DocSearch-HitsFooter,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Reset:focus{outline:0}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:0 0}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}.DocSearch-Hit--deleting{opacity:0;transition:.25s linear}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:.25s linear .25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{appearance:none;background:none;border-radius:50%;color:inherit;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon,.tocCollapsibleContent_vea0 a{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:background-color .1s ease-in}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:0;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands li,.DocSearch-Commands-Key{align-items:center;display:flex}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{background:var(--docsearch-key-gradient);border:0;border-radius:2px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;width:20px}.buttonGroup_aaMX button,.codeBlockContainer_mQmQ{background:var(--prism-background-color);color:var(--prism-color)}@keyframes b{0%{opacity:0}to{opacity:1}}.DocSearch-Button{margin:0;transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.DocSearch-Container{z-index:calc(var(--ifm-z-index-fixed) + 1)}.codeBlockContainer_mQmQ{border-radius:var(--ifm-code-border-radius);box-shadow:var(--ifm-global-shadow-lw);margin-bottom:var(--ifm-leading)}.codeBlockContent_D5yF{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_x_ju{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_RMoD{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_x_ju+.codeBlockContent_D5yF .codeBlock_RMoD{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_AclH{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_O625{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup_aaMX{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup_aaMX button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup_aaMX button:focus-visible,.buttonGroup_aaMX button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup_aaMX button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_FAqz{counter-increment:a;display:table-row}.codeLineNumber_BE9Z{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_BE9Z:before{content:counter(a);opacity:.4}.codeLineContent_EF2y{padding-right:var(--ifm-pre-padding)}.iconEdit_bHB7{margin-right:.3em;vertical-align:sub}.theme-code-block:hover .copyButtonCopied_TYdd{opacity:1!important}.copyButtonIcons_z5j7{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_FoOz,.copyButtonSuccessIcon_L0B6{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_L0B6{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_TYdd .copyButtonIcon_FoOz{opacity:0;transform:scale(.33)}.copyButtonCopied_TYdd .copyButtonSuccessIcon_L0B6{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.tag_otG2{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_otG2:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_s0E1{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_PGyn{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tag_DFxh,.tag_FHL6{display:inline-block}.tagWithCount_PGyn:after,.tagWithCount_PGyn:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_PGyn:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_PGyn:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_PGyn span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tag_FHL6{margin:.5rem .5rem 0 1rem}.wordWrapButtonIcon_HV9T{height:1.2rem;width:1.2rem}.tag_DFxh{margin:0 .4rem .5rem 0}.lastUpdated_pbO5{font-size:smaller;font-style:italic;margin-top:.2rem}.details_IpIu{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_IpIu>summary{cursor:pointer;list-style:none;padding-left:1rem;position:relative}.details_IpIu>summary::-webkit-details-marker{display:none}.details_IpIu>summary:before{border-color:transparent transparent transparent var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_Fd2D{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.anchorWithStickyNavbar_JmGV{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_pMLv{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);-webkit-user-select:none;user-select:none}.hash-link:before{content:"#"}.title_Ww3I{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-leading)*1.25)}.details_jERq{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.tocCollapsibleButton_iI2p{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_iI2p:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_cHjC:after,.tocCollapsibleExpanded_BbRn{transform:none}.containsTaskList_QWGu{list-style:none}.tocCollapsible_wXna{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vea0>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vea0 ul li{margin:.4rem .8rem}.img_SS3x{height:auto}.admonition_uH4V{margin-bottom:1em}.admonitionHeading_P5_N{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.3rem}.admonitionHeading_P5_N code{text-transform:none}.admonitionIcon_MF44{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_MF44 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.tableOfContents_XG6w{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}@media screen and (min-width:576px){.tsd-index-list li{width:50%}}@media (min-width:640px){.container{max-width:640px}.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:ml-2{margin-left:1rem}.sm\:block{display:block}.sm\:grid{display:grid}.sm\:w-\[65\%\]{width:65%}.sm\:max-w-3xl{max-width:48rem}.sm\:max-w-xl{max-width:36rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:items-end{align-items:flex-end}.sm\:gap-5{gap:2.5rem}.sm\:p-3{padding:1.5rem}.sm\:px-3{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-6{padding-left:3rem;padding-right:3rem}.sm\:py-2{padding-bottom:1rem;padding-top:1rem}.sm\:py-5{padding-bottom:2.5rem;padding-top:2.5rem}.sm\:py-6{padding-bottom:3rem;padding-top:3rem}.sm\:pb-8{padding-bottom:4rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}.sm\:text-5xl{font-size:3rem;line-height:1}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}}@media (min-width:768px){.container{max-width:768px}.md\:mx-0{margin-left:0;margin-right:0}.md\:ml-2{margin-left:1rem}.md\:ml-4{margin-left:2rem}.md\:mr-4{margin-right:2rem}.md\:mt-0{margin-top:0}.md\:mt-4{margin-top:2rem}.md\:flex{display:flex}.md\:w-1\/3{width:33.333333%}.md\:w-2\/3{width:66.666667%}.md\:w-5\/12{width:41.666667%}.md\:w-6\/12{width:50%}.md\:w-7\/12{width:58.333333%}.md\:w-\[80\%\]{width:80%}.md\:w-full{width:100%}.md\:max-w-3xl{max-width:48rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:justify-start{justify-content:flex-start}.md\:gap-3{gap:1.5rem}.md\:rounded-bl-lg{border-bottom-left-radius:.5rem}.md\:rounded-bl-none{border-bottom-left-radius:0}.md\:rounded-br-lg{border-bottom-right-radius:.5rem}.md\:rounded-br-none{border-bottom-right-radius:0}.md\:rounded-tl-lg{border-top-left-radius:.5rem}.md\:rounded-tl-none{border-top-left-radius:0}.md\:rounded-tr-lg{border-top-right-radius:.5rem}.md\:rounded-tr-none{border-top-right-radius:0}.md\:p-3{padding:1.5rem}.md\:pt-4,.md\:py-4{padding-top:2rem}.md\:p-4{padding:2rem}.md\:px-4{padding-left:2rem;padding-right:2rem}.md\:py-4{padding-bottom:2rem}.md\:pl-0{padding-left:0}.md\:pl-4{padding-left:2rem}.md\:pr-0{padding-right:0}.md\:pr-4{padding-right:2rem}.md\:text-left{text-align:left}.md\:text-right{text-align:right}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media (min-width:997px){.collapseSidebarButton_oTwn,.expandButton_YOoA{background-color:var(--docusaurus-collapse-button-bg)}html .menu{padding:var(--moon-padding-1_5)}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_Jjdj,.announcementBarPlaceholder_NpUd{flex-basis:50px}.searchBox_WqAV{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.collapseSidebarButton_oTwn{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_pMEX{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_GZLG,[dir=rtl] .collapseSidebarButtonIcon_pMEX{transform:rotate(0)}.collapseSidebarButton_oTwn:focus,.collapseSidebarButton_oTwn:hover,.expandButton_YOoA:focus,.expandButton_YOoA:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_OniL{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_jmj1{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_jmj1{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_YufC{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_CUen{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_w4KB{padding-top:0}.sidebarHidden_k6VE{opacity:0;visibility:hidden}.sidebarLogo_CYvI{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_CYvI img{height:2rem;margin-right:.5rem}.expandButton_YOoA{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_GZLG{transform:rotate(180deg)}.docSidebarContainer_y0RQ{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_uArb{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_EJ1r{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_sTIZ{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_iSjt{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_PxMR{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.lastUpdated_pbO5{text-align:right}.docItemCol_Qr34,.generatedIndexPage_cf3v{max-width:75%!important}.list_qoTc article:nth-last-child(-n+2){margin-bottom:0!important}.tocMobile_Ojys{display:none}}@media only screen and (min-width:997px){.apiItemCol{max-width:75%!important}.apiTocMobile{display:none}}@media screen and (min-width:997px){.tsd-index-list li{width:33%}}@media (min-width:1024px){.container{max-width:1024px}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:ml-3{margin-left:1.5rem}.lg\:mt-0{margin-top:0}.lg\:grid{display:grid}.lg\:h-\[260px\]{height:260px}.lg\:w-\[75\%\]{width:75%}.lg\:max-w-7xl{max-width:80rem}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.lg\:gap-3{gap:1.5rem}.lg\:gap-4{gap:2rem}.lg\:gap-6{gap:3rem}.lg\:p-4{padding:2rem}.lg\:px-4{padding-left:2rem;padding-right:2rem}.lg\:px-6{padding-left:3rem;padding-right:3rem}.lg\:px-8{padding-left:4rem;padding-right:4rem}.lg\:py-6{padding-bottom:3rem;padding-top:3rem}.lg\:py-8{padding-bottom:4rem;padding-top:4rem}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (min-width:1536px){.container{max-width:1536px}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_Hewu,.footer__link-separator,.navbar__item,.sidebar_CLW8,.tableOfContents_XG6w{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.searchBox_WqAV{position:absolute;right:var(--ifm-navbar-padding-horizontal)}.docItemContainer_Tr6w{padding:0 .3rem}}@media only screen and (max-width:996px){.searchQueryColumn_YWTO,.searchResultsColumn_Vh0c{max-width:60%!important}.searchLogoColumn_ugtA,.searchVersionColumn_pdNL{max-width:40%!important}.searchLogoColumn_ugtA{padding-left:0!important}}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder,.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%;max-height:calc(var(--docsearch-vh,1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh,1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Cancel{-webkit-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:0;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}.title_Kdtz{font-size:2rem}}@media screen and (max-width:576px){.searchQueryColumn_YWTO{max-width:100%!important}.searchVersionColumn_pdNL{max-width:100%!important;padding-left:var(--ifm-spacing-horizontal)!important}}@media (hover:hover){.backToTopButton_iEvu:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{stroke-width:var(--docsearch-icon-stroke-width);animation:none;-webkit-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0}.DocSearch-Hit--deleting,.DocSearch-Hit--favoriting{transition:none}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:rgba(0,0,0,.2);transition:none}}@media print{.announcementBar_zJRd,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_Ojys{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_AclH{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/images/v0.17-c6f866913e8dd547a862c49630b6a96b.png b/assets/images/v0.17-c6f866913e8dd547a862c49630b6a96b.png new file mode 100644 index 00000000000..115d1caea37 Binary files /dev/null and b/assets/images/v0.17-c6f866913e8dd547a862c49630b6a96b.png differ diff --git a/assets/js/0627e785.229c3141.js b/assets/js/0627e785.229c3141.js new file mode 100644 index 00000000000..9062c359e09 --- /dev/null +++ b/assets/js/0627e785.229c3141.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4824],{35318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>g});var o=n(27378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,c=l(e,["components","mdxType","originalType","parentName"]),m=p(n),g=r,d=m["".concat(s,".").concat(g)]||m[g]||u[g]||a;return n?o.createElement(d,i(i({ref:t},c),{},{components:n})):o.createElement(d,i({ref:t},c))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p{n.d(t,{Z:()=>i});var o=n(27378),r=n(83469),a=n(9619);function i(e){let{text:t}=e;return o.createElement(a.Z,{text:t,icon:r.SZw,variant:"success",className:"absolute right-0 top-1.5"})}},9619:(e,t,n)=>{n.d(t,{Z:()=>l});var o=n(27378),r=n(40624),a=n(31792);const i={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function l(e){let{className:t,icon:n,text:l,variant:s}=e;return o.createElement("span",{className:(0,r.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",s?i[s]:"bg-gray-100 text-gray-800",t)},n&&o.createElement(a.Z,{icon:n,className:"mr-1"}),l)}},33440:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>c});var o=n(25773),r=(n(27378),n(35318)),a=n(27915);const i={title:"Configuration"},l=void 0,s={unversionedId:"proto/config",id:"proto/config",title:"Configuration",description:"We support configuration for both projects and users. Both config files are in",source:"@site/docs/proto/config.mdx",sourceDirName:"proto",slug:"/proto/config",permalink:"/docs/proto/config",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/config.mdx",tags:[],version:"current",frontMatter:{title:"Configuration"},sidebar:"proto",previous:{title:"Version detection",permalink:"/docs/proto/detection"},next:{title:"Supported tools",permalink:"/docs/proto/tools"}},p={},c=[{value:"Project configuration",id:"project-configuration",level:2},{value:"Plugins",id:"plugins",level:3},{value:"User configuration",id:"user-configuration",level:2},{value:"Settings",id:"settings",level:3},{value:"GitHub Action",id:"github-action",level:2}],u={toc:c};function m(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,o.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(a.Z,{text:"1 min",mdxType:"HeaderLabel"}),(0,r.kt)("p",null,"We support configuration for both projects and users. Both config files are in\n",(0,r.kt)("a",{parentName:"p",href:"https://toml.io/en/"},"TOML"),"."),(0,r.kt)("h2",{id:"project-configuration"},"Project configuration"),(0,r.kt)("p",null,"proto supports pinning versions of tools on a per-project or per-directory basis through our\n",(0,r.kt)("inlineCode",{parentName:"p"},".prototools")," configuration file. This file takes precedence during ",(0,r.kt)("a",{parentName:"p",href:"./detection"},"version detection"),"\nand can be created/updated with ",(0,r.kt)("a",{parentName:"p",href:"./commands/local"},(0,r.kt)("inlineCode",{parentName:"a"},"proto local")),"."),(0,r.kt)("p",null,"This configuration simply maps tools to fully-qualified semantic versions for the current directory."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title=".prototools"',title:'".prototools"'},'node = "16.16.0"\nnpm = "9"\ngo = "1.20"\nrust = "1.68.0"\n')),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"The names of tools are the same used on the command line!")),(0,r.kt)("h3",{id:"plugins"},"Plugins"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"./plugins"},"Plugins")," can also be configured on a per-project basis with the ",(0,r.kt)("inlineCode",{parentName:"p"},"[plugins]")," section."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title=".prototools"',title:'".prototools"'},'[plugins]\nmy-tool = "source:https://raw.githubusercontent.com/my/tool/master/proto-plugin.toml"\n')),(0,r.kt)("p",null,"Once configured, you can run a plugin as if it was a built-in tool:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install my-tool\n")),(0,r.kt)("h2",{id:"user-configuration"},"User configuration"),(0,r.kt)("p",null,"proto operates with sane defaults and accomplishes its goals very well. However, we also believe in\nuser choice and customization, and as such, support a user configuration file located at\n",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/config.toml"),", which can be used to customize the behavior of proto."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="~/.proto/config.toml"',title:'"~/.proto/config.toml"'},"auto-install = true\n")),(0,r.kt)("p",null,"These settings (excluding plugins) can also be configured via environment variables."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"PROTO_AUTO_INSTALL=true proto run node\n")),(0,r.kt)("h3",{id:"settings"},"Settings"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"auto-install")," - When enabled, will automatically installing missing tools when\n",(0,r.kt)("a",{parentName:"li",href:"./commands/run"},(0,r.kt)("inlineCode",{parentName:"a"},"proto run"))," is run, instead of erroring. Defaults to ",(0,r.kt)("inlineCode",{parentName:"li"},"false"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"auto-clean")," - When enabled, will automatically clean up the proto cache when\n",(0,r.kt)("a",{parentName:"li",href:"./commands/use"},(0,r.kt)("inlineCode",{parentName:"a"},"proto use"))," is run. Defaults to ",(0,r.kt)("inlineCode",{parentName:"li"},"false"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"node-intercept-globals")," - When enabled, will intercept global package installs for npm/pnpm/yarn\nand suggest using ",(0,r.kt)("a",{parentName:"li",href:"./commands/install-global"},(0,r.kt)("inlineCode",{parentName:"a"},"proto install-global"))," instead. Defaults to ",(0,r.kt)("inlineCode",{parentName:"li"},"true"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[plugins]")," - A mapping of plugins available to the user. Refer to the ",(0,r.kt)("a",{parentName:"li",href:"#plugins"},"plugins")," section\nabove for more information.")),(0,r.kt)("h2",{id:"github-action"},"GitHub Action"),(0,r.kt)("p",null,"To streamline GitHub CI workflows, we provide the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/setup-proto"},(0,r.kt)("inlineCode",{parentName:"a"},"moonrepo/setup-proto"))," action, which can be used to\ninstall ",(0,r.kt)("inlineCode",{parentName:"p"},"proto")," globally, and cache the toolchain found at ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title=".github/workflows/ci.yml"',title:'".github/workflows/ci.yml"'},"# ...\njobs:\n ci:\n name: 'CI'\n runs-on: 'ubuntu-latest'\n steps:\n - uses: 'actions/checkout@v3'\n - uses: 'moonrepo/setup-proto@v1'\n - run: 'proto use'\n")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/0627e785.94c03be0.js b/assets/js/0627e785.94c03be0.js deleted file mode 100644 index 3764417de03..00000000000 --- a/assets/js/0627e785.94c03be0.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4824],{35318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var o=n(27378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),m=p(n),g=r,d=m["".concat(s,".").concat(g)]||m[g]||c[g]||a;return n?o.createElement(d,i(i({ref:t},u),{},{components:n})):o.createElement(d,i({ref:t},u))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=m;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l.mdxType="string"==typeof e?e:r,i[1]=l;for(var p=2;p{n.d(t,{Z:()=>i});var o=n(27378),r=n(83469),a=n(9619);function i(e){let{text:t}=e;return o.createElement(a.Z,{text:t,icon:r.SZw,variant:"success",className:"absolute right-0 top-1.5"})}},9619:(e,t,n)=>{n.d(t,{Z:()=>l});var o=n(27378),r=n(40624),a=n(31792);const i={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function l(e){let{className:t,icon:n,text:l,variant:s}=e;return o.createElement("span",{className:(0,r.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",s?i[s]:"bg-gray-100 text-gray-800",t)},n&&o.createElement(a.Z,{icon:n,className:"mr-1"}),l)}},33440:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>i,metadata:()=>s,toc:()=>u});var o=n(25773),r=(n(27378),n(35318)),a=n(27915);const i={title:"Configuration"},l=void 0,s={unversionedId:"proto/config",id:"proto/config",title:"Configuration",description:"We support configuration for both projects and users. Both config files are in",source:"@site/docs/proto/config.mdx",sourceDirName:"proto",slug:"/proto/config",permalink:"/docs/proto/config",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/config.mdx",tags:[],version:"current",frontMatter:{title:"Configuration"},sidebar:"proto",previous:{title:"Version detection",permalink:"/docs/proto/detection"},next:{title:"Supported tools",permalink:"/docs/proto/tools"}},p={},u=[{value:"Project configuration",id:"project-configuration",level:2},{value:"Plugins",id:"plugins",level:3},{value:"User configuration",id:"user-configuration",level:2},{value:"Settings",id:"settings",level:3},{value:"GitHub Action",id:"github-action",level:2}],c={toc:u};function m(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(a.Z,{text:"1 min",mdxType:"HeaderLabel"}),(0,r.kt)("p",null,"We support configuration for both projects and users. Both config files are in\n",(0,r.kt)("a",{parentName:"p",href:"https://toml.io/en/"},"TOML"),"."),(0,r.kt)("h2",{id:"project-configuration"},"Project configuration"),(0,r.kt)("p",null,"proto supports pinning versions of tools on a per-project or per-directory basis through our\n",(0,r.kt)("inlineCode",{parentName:"p"},".prototools")," configuration file. This file takes precedence during ",(0,r.kt)("a",{parentName:"p",href:"./detection"},"version detection"),"\nand can be created/updated with ",(0,r.kt)("a",{parentName:"p",href:"./commands/local"},(0,r.kt)("inlineCode",{parentName:"a"},"proto local")),"."),(0,r.kt)("p",null,"This configuration simply maps tools to fully-qualified semantic versions for the current directory.\nPartial versions are not supported."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title=".prototools"',title:'".prototools"'},'node = "16.16.0"\nnpm = "9.0.0"\ngo = "1.20.0"\nrust = "1.68.0"\n')),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"The names of tools are the same used on the command line!")),(0,r.kt)("h3",{id:"plugins"},"Plugins"),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"./plugins"},"Plugins")," can also be configured on a per-project basis with the ",(0,r.kt)("inlineCode",{parentName:"p"},"[plugins]")," section."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title=".prototools"',title:'".prototools"'},'[plugins]\nmy-tool = "source:https://raw.githubusercontent.com/my/tool/master/proto-plugin.toml"\n')),(0,r.kt)("p",null,"Once configured, you can run a plugin as if it was a built-in tool:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install my-tool\n")),(0,r.kt)("h2",{id:"user-configuration"},"User configuration"),(0,r.kt)("p",null,"proto operates with sane defaults and accomplishes its goals very well. However, we also believe in\nuser choice and customization, and as such, support a user configuration file located at\n",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/config.toml"),", which can be used to customize the behavior of proto."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="~/.proto/config.toml"',title:'"~/.proto/config.toml"'},"auto-install = true\n")),(0,r.kt)("p",null,"These settings (excluding plugins) can also be configured via environment variables."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"PROTO_AUTO_INSTALL=true proto run node\n")),(0,r.kt)("h3",{id:"settings"},"Settings"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"auto-install")," - When enabled, will automatically installing missing tools when\n",(0,r.kt)("a",{parentName:"li",href:"./commands/run"},(0,r.kt)("inlineCode",{parentName:"a"},"proto run"))," is run, instead of erroring. Defaults to ",(0,r.kt)("inlineCode",{parentName:"li"},"false"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"auto-clean")," - When enabled, will automatically clean up the proto cache when\n",(0,r.kt)("a",{parentName:"li",href:"./commands/use"},(0,r.kt)("inlineCode",{parentName:"a"},"proto use"))," is run. Defaults to ",(0,r.kt)("inlineCode",{parentName:"li"},"false"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"node-intercept-globals")," - When enabled, will intercept global package installs for npm/pnpm/yarn\nand suggest using ",(0,r.kt)("a",{parentName:"li",href:"./commands/install-global"},(0,r.kt)("inlineCode",{parentName:"a"},"proto install-global"))," instead. Defaults to ",(0,r.kt)("inlineCode",{parentName:"li"},"true"),"."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[plugins]")," - A mapping of plugins available to the user. Refer to the ",(0,r.kt)("a",{parentName:"li",href:"#plugins"},"plugins")," section\nabove for more information.")),(0,r.kt)("h2",{id:"github-action"},"GitHub Action"),(0,r.kt)("p",null,"To streamline GitHub CI workflows, we provide the\n",(0,r.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/setup-proto"},(0,r.kt)("inlineCode",{parentName:"a"},"moonrepo/setup-proto"))," action, which can be used to\ninstall ",(0,r.kt)("inlineCode",{parentName:"p"},"proto")," globally, and cache the toolchain found at ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml",metastring:'title=".github/workflows/ci.yml"',title:'".github/workflows/ci.yml"'},"# ...\njobs:\n ci:\n name: 'CI'\n runs-on: 'ubuntu-latest'\n steps:\n - uses: 'actions/checkout@v3'\n - uses: 'moonrepo/setup-proto@v1'\n - run: 'proto use'\n")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/11ce4159.c5977400.js b/assets/js/11ce4159.494cee7c.js similarity index 77% rename from assets/js/11ce4159.c5977400.js rename to assets/js/11ce4159.494cee7c.js index 1009cc2ab03..2c2331c02c0 100644 --- a/assets/js/11ce4159.c5977400.js +++ b/assets/js/11ce4159.494cee7c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1531],{75034:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/5","page":5,"postsPerPage":10,"totalPages":5,"totalCount":46,"previousPage":"/blog/page/4","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1531],{75034:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/5","page":5,"postsPerPage":10,"totalPages":5,"totalCount":47,"previousPage":"/blog/page/4","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/17ae22f4.ce9d31e5.js b/assets/js/17ae22f4.ce9d31e5.js new file mode 100644 index 00000000000..9836e715e99 --- /dev/null +++ b/assets/js/17ae22f4.ce9d31e5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6352],{35318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(27378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}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 l(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}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},c=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,s=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),c=p(n),h=o,d=c["".concat(s,".").concat(h)]||c[h]||m[h]||r;return n?a.createElement(d,l(l({ref:t},u),{},{components:n})):a.createElement(d,l({ref:t},u))}));function h(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,l=new Array(r);l[0]=c;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:o,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>r,metadata:()=>i,toc:()=>p});var a=n(25773),o=(n(27378),n(35318));const r={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"},l=void 0,i={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:!0,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"},nextItem:{title:"moon v1.13 - Toolchain now uses WASM plugins",permalink:"/blog/moon-v1.13"}},s={image:n(72679).Z,authorsImageUrls:[void 0]},p=[{value:"Experimental Python support",id:"experimental-python-support",level:2},{value:"Install canary releases",id:"install-canary-releases",level:2},{value:"Other changes",id:"other-changes",level:2}],u={toc:p};function m(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"This release implements two long requested features, Python language support and canary releases."),(0,o.kt)("h2",{id:"experimental-python-support"},"Experimental Python support"),(0,o.kt)("p",null,"It'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",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/python-plugin"},"officially supported language"),", installing Python (and\npip) is as simple as:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install python\n")),(0,o.kt)("p",null,"However, 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:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"proto will install pre-built binaries from\n",(0,o.kt)("a",{parentName:"li",href:"https://github.com/indygreg/python-build-standalone"},"indygreg/python-build-standalone"),". This is\nan unofficial project, and ",(0,o.kt)("em",{parentName:"li"},"does not")," support all Python versions."),(0,o.kt)("li",{parentName:"ul"},"If ",(0,o.kt)("a",{parentName:"li",href:"https://github.com/pyenv/pyenv/blob/master/plugins/python-build/README.md"},(0,o.kt)("inlineCode",{parentName:"a"},"python-build"))," is\navailable, we'll attempt to use it to build + install Python. This currently requires ",(0,o.kt)("inlineCode",{parentName:"li"},"pyenv")," to\nbe installed, and ",(0,o.kt)("em",{parentName:"li"},"does not")," work on Windows."),(0,o.kt)("li",{parentName:"ul"},"Furthermore, we only support ",(0,o.kt)("inlineCode",{parentName:"li"},"cpython")," at the moment, and do not support ",(0,o.kt)("inlineCode",{parentName:"li"},"pypy"),", ",(0,o.kt)("inlineCode",{parentName:"li"},"jython"),", or\nother Python implementations. It's unknown whether this functionality should be in the core Python\nplugin, or another plugin entirely.")),(0,o.kt)("p",null,'In 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!'),(0,o.kt)("h2",{id:"install-canary-releases"},"Install canary releases"),(0,o.kt)("p",null,"A 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."),(0,o.kt)("p",null,"We now support this workflow in proto. To install a canary release, simply use the\n",(0,o.kt)("a",{parentName:"p",href:"/docs/proto/commands/install"},(0,o.kt)("inlineCode",{parentName:"a"},"--canary")," flag when installing a tool"),":"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install --canary\n")),(0,o.kt)("p",null,"This will install the latest canary release to ",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/tools//canary"),", and ",(0,o.kt)("em",{parentName:"p"},"only")," the latest\nrelease can be used. Re-installing with ",(0,o.kt)("inlineCode",{parentName:"p"},"--canary")," will overwrite the previous canary installation."),(0,o.kt)("p",null,"However, because we ",(0,o.kt)("a",{parentName:"p",href:"/docs/proto/detection"},"detect a version to run with at runtime"),", how should you\nactually run canary? The easiest way is to prefix the shim with an environment variable:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"$ PROTO_BUN_VERSION=canary bun ./index.ts\n")),(0,o.kt)("p",null,"Or to explicitly configure the version in ",(0,o.kt)("a",{parentName:"p",href:"/docs/proto/config"},(0,o.kt)("inlineCode",{parentName:"a"},".prototools")),":"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-toml"},'bun = "canary"\n')),(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/proto/releases/tag/v0.17.0"},"official release")," for a full list\nof changes."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Added colors to command line ",(0,o.kt)("inlineCode",{parentName:"li"},"--help")," menus."),(0,o.kt)("li",{parentName:"ul"},"Updated the following locations to support partial versions and aliases:",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},"Tool versions in ",(0,o.kt)("inlineCode",{parentName:"li"},".prototools"),"."),(0,o.kt)("li",{parentName:"ul"},"Pinning a default version with ",(0,o.kt)("inlineCode",{parentName:"li"},"proto install --pin"),"."),(0,o.kt)("li",{parentName:"ul"},"Setting global version with ",(0,o.kt)("inlineCode",{parentName:"li"},"proto global"),"."),(0,o.kt)("li",{parentName:"ul"},"Setting local version with ",(0,o.kt)("inlineCode",{parentName:"li"},"proto local"),"."))),(0,o.kt)("li",{parentName:"ul"},"Node, npm, pnpm, and yarn will again extract a version from ",(0,o.kt)("inlineCode",{parentName:"li"},"package.json")," engines.")))}m.isMDXComponent=!0},72679:(e,t,n)=>{n.d(t,{Z:()=>a});const a=n.p+"assets/images/v0.17-c6f866913e8dd547a862c49630b6a96b.png"}}]); \ No newline at end of file diff --git a/assets/js/1a2b669c.d6adcd86.js b/assets/js/1a2b669c.133309ab.js similarity index 78% rename from assets/js/1a2b669c.d6adcd86.js rename to assets/js/1a2b669c.133309ab.js index c8f88c78b17..9730454868e 100644 --- a/assets/js/1a2b669c.d6adcd86.js +++ b/assets/js/1a2b669c.133309ab.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7999],{85824:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/proto/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":18,"previousPage":"/blog/tags/proto","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7999],{85824:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/proto/page/2","page":2,"postsPerPage":10,"totalPages":2,"totalCount":19,"previousPage":"/blog/tags/proto","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/1b469a71.01b3b111.js b/assets/js/1b469a71.e89292ef.js similarity index 96% rename from assets/js/1b469a71.01b3b111.js rename to assets/js/1b469a71.e89292ef.js index 9c9d078c910..8e267f67038 100644 --- a/assets/js/1b469a71.01b3b111.js +++ b/assets/js/1b469a71.e89292ef.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7451],{457:e=>{e.exports=JSON.parse('[{"entryPoints":[{"index":true,"label":"Index","reflection":{"id":1,"name":"@moonrepo/report","kind":2,"kindString":"Module","flags":{},"children":[{"id":29,"name":"PreparedAction","kind":256,"kindString":"Interface","flags":{},"children":[{"id":30,"name":"comments","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":4,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":31,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","name":"Duration"}]}},{"id":32,"name":"icon","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":6,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":33,"name":"label","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":7,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":34,"name":"status","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":8,"character":4}],"type":{"type":"reference","name":"ActionStatus"}},{"id":35,"name":"time","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":9,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[30,31,32,33,34,35]}],"sources":[{"fileName":"report/cjs/report.d.ts","line":3,"character":17}],"permalink":"/api/report/interface/PreparedAction","previousId":20},{"id":44,"name":"formatDuration","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/time.d.ts","line":4,"character":24}],"signatures":[{"id":45,"name":"formatDuration","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":46,"name":"duration","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","name":"Duration"}]}}],"type":{"type":"intrinsic","name":"string"}}],"permalink":"/api/report/function/formatDuration","nextId":39},{"id":39,"name":"formatTime","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/time.d.ts","line":3,"character":24}],"signatures":[{"id":40,"name":"formatTime","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":41,"name":"mins","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}},{"id":42,"name":"secs","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}},{"id":43,"name":"millis","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"string"}}],"permalink":"/api/report/function/formatTime","previousId":44,"nextId":36},{"id":36,"name":"getDurationInMillis","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/time.d.ts","line":2,"character":24}],"signatures":[{"id":37,"name":"getDurationInMillis","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":38,"name":"duration","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Duration"}}],"type":{"type":"intrinsic","name":"number"}}],"permalink":"/api/report/function/getDurationInMillis","previousId":39,"nextId":4},{"id":4,"name":"getIconForStatus","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":4,"character":16,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/report/src/action.ts#L4"}],"signatures":[{"id":5,"name":"getIconForStatus","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":6,"name":"status","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"ActionStatus"}}],"type":{"type":"intrinsic","name":"string"}}],"permalink":"/api/report/function/getIconForStatus","previousId":36,"nextId":7},{"id":7,"name":"hasFailed","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":27,"character":16,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/report/src/action.ts#L27"}],"signatures":[{"id":8,"name":"hasFailed","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":9,"name":"status","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"ActionStatus"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/hasFailed","previousId":4,"nextId":10},{"id":10,"name":"hasPassed","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":31,"character":16,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/report/src/action.ts#L31"}],"signatures":[{"id":11,"name":"hasPassed","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":12,"name":"status","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"ActionStatus"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/hasPassed","previousId":7,"nextId":13},{"id":13,"name":"isFlaky","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":35,"character":16,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/report/src/action.ts#L35"}],"signatures":[{"id":14,"name":"isFlaky","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":15,"name":"action","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Action"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/isFlaky","previousId":10,"nextId":16},{"id":16,"name":"isSlow","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":48,"character":16,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/report/src/action.ts#L48"}],"signatures":[{"id":17,"name":"isSlow","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":18,"name":"action","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Action"}},{"id":19,"name":"slowThreshold","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/isSlow","previousId":13,"nextId":25},{"id":25,"name":"prepareReportActions","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":11,"character":24}],"signatures":[{"id":26,"name":"prepareReportActions","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":27,"name":"report","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"RunReport"}},{"id":28,"name":"slowThreshold","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"array","elementType":{"type":"reference","id":29,"name":"PreparedAction"}}}],"permalink":"/api/report/function/prepareReportActions","previousId":16,"nextId":20},{"id":20,"name":"sortReport","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":2,"character":24}],"signatures":[{"id":21,"name":"sortReport","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":22,"name":"report","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"RunReport"}},{"id":23,"name":"sortBy","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"union","types":[{"type":"literal","value":"label"},{"type":"literal","value":"time"}]}},{"id":24,"name":"sortDir","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"union","types":[{"type":"literal","value":"asc"},{"type":"literal","value":"desc"}]}}],"type":{"type":"intrinsic","name":"void"}}],"permalink":"/api/report/function/sortReport","previousId":25,"nextId":29}],"groups":[{"title":"Functions","children":[44,39,36,4,7,10,13,16,25,20]},{"title":"Interfaces","children":[29]}],"sources":[{"fileName":"report/src/index.ts","line":1,"character":0,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/report/src/index.ts#L1"}],"permalink":"/api/report"},"urlSlug":"report"}],"packageName":"@moonrepo/report","packageVersion":"1.0.4"},{"entryPoints":[{"index":true,"label":"Index","reflection":{"id":2,"name":"@moonrepo/runtime","kind":2,"kindString":"Module","flags":{},"children":[{"id":49,"name":"RuntimeContext","kind":256,"kindString":"Interface","flags":{},"children":[{"id":50,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":6,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/context.ts#L6"}],"type":{"type":"reference","name":"Project"}},{"id":51,"name":"projectRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":7,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/context.ts#L7"}],"type":{"type":"reference","name":"Path","qualifiedName":"Path","package":"@boost/common"}},{"id":52,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":8,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/context.ts#L8"}],"type":{"type":"intrinsic","name":"string"}},{"id":53,"name":"workspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":9,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/context.ts#L9"}],"type":{"type":"reference","name":"Path","qualifiedName":"Path","package":"@boost/common"}}],"groups":[{"title":"Properties","children":[50,51,52,53]}],"sources":[{"fileName":"runtime/src/context.ts","line":5,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/context.ts#L5"}],"permalink":"/api/runtime/interface/RuntimeContext","previousId":47},{"id":47,"name":"getContext","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":12,"character":22,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/context.ts#L12"}],"signatures":[{"id":48,"name":"getContext","kind":4096,"kindString":"Call signature","flags":{},"type":{"type":"reference","typeArguments":[{"type":"reference","id":49,"name":"RuntimeContext"}],"name":"Promise","qualifiedName":"Promise","package":"typescript"}}],"permalink":"/api/runtime/function/getContext","nextId":49}],"groups":[{"title":"Functions","children":[47]},{"title":"Interfaces","children":[49]}],"sources":[{"fileName":"runtime/src/index.ts","line":1,"character":0,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/runtime/src/index.ts#L1"}],"permalink":"/api/runtime"},"urlSlug":"runtime"}],"packageName":"@moonrepo/runtime","packageVersion":"0.0.14"},{"entryPoints":[{"index":true,"label":"Index","reflection":{"id":3,"name":"@moonrepo/types","kind":2,"kindString":"Module","flags":{},"children":[{"id":179,"name":"Action","kind":256,"kindString":"Interface","flags":{},"children":[{"id":180,"name":"attempts","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":173,"name":"Attempt"}}]}},{"id":181,"name":"createdAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":12,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":182,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":13,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":183,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":184,"name":"finishedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":185,"name":"flaky","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":16,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":186,"name":"label","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":187,"name":"nodeIndex","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":18,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":188,"name":"startedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":19,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":189,"name":"status","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":20,"character":4}],"type":{"type":"reference","id":172,"name":"ActionStatus"}}],"groups":[{"title":"Properties","children":[180,181,182,183,184,185,186,187,188,189]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":10,"character":17}],"permalink":"/api/types/interface/Action","nextId":193},{"id":193,"name":"ActionContext","kind":256,"kindString":"Interface","flags":{},"children":[{"id":194,"name":"affectedOnly","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":27,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":195,"name":"initialTargets","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":28,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":196,"name":"interactive","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":29,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":197,"name":"passthroughArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":30,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":198,"name":"primaryTargets","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":31,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":199,"name":"profile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"cpu"},{"type":"literal","value":"heap"}]}},{"id":200,"name":"targetStates","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":33,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":190,"name":"TargetState"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":201,"name":"touchedFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":34,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":202,"name":"workspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":35,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[194,195,196,197,198,199,200,201,202]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":26,"character":17}],"permalink":"/api/types/interface/ActionContext","previousId":179,"nextId":220},{"id":220,"name":"ActionNodeInstallDeps","kind":256,"kindString":"Interface","flags":{},"children":[{"id":221,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":56,"character":4}],"type":{"type":"literal","value":"InstallDeps"}},{"id":222,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":57,"character":4}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[221,222]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":55,"character":17}],"permalink":"/api/types/interface/ActionNodeInstallDeps","previousId":193,"nextId":223},{"id":223,"name":"ActionNodeInstallProjectDeps","kind":256,"kindString":"Interface","flags":{},"children":[{"id":224,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":60,"character":4}],"type":{"type":"literal","value":"InstallProjectDeps"}},{"id":225,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":61,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[224,225]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":59,"character":17}],"permalink":"/api/types/interface/ActionNodeInstallProjectDeps","previousId":220,"nextId":229},{"id":229,"name":"ActionNodeRunPersistentTarget","kind":256,"kindString":"Interface","flags":{},"children":[{"id":230,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":68,"character":4}],"type":{"type":"literal","value":"RunPersistentTarget"}},{"id":231,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":69,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[230,231]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":67,"character":17}],"permalink":"/api/types/interface/ActionNodeRunPersistentTarget","previousId":223,"nextId":226},{"id":226,"name":"ActionNodeRunTarget","kind":256,"kindString":"Interface","flags":{},"children":[{"id":227,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":64,"character":4}],"type":{"type":"literal","value":"RunTarget"}},{"id":228,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":65,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[227,228]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":63,"character":17}],"permalink":"/api/types/interface/ActionNodeRunTarget","previousId":229,"nextId":232},{"id":232,"name":"ActionNodeSetupTool","kind":256,"kindString":"Interface","flags":{},"children":[{"id":233,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":72,"character":4}],"type":{"type":"literal","value":"SetupTool"}},{"id":234,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":73,"character":4}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[233,234]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":71,"character":17}],"permalink":"/api/types/interface/ActionNodeSetupTool","previousId":226,"nextId":235},{"id":235,"name":"ActionNodeSyncProject","kind":256,"kindString":"Interface","flags":{},"children":[{"id":236,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":76,"character":4}],"type":{"type":"literal","value":"SyncProject"}},{"id":237,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":77,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[236,237]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":75,"character":17}],"permalink":"/api/types/interface/ActionNodeSyncProject","previousId":232,"nextId":173},{"id":173,"name":"Attempt","kind":256,"kindString":"Interface","flags":{},"children":[{"id":174,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":175,"name":"finishedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":176,"name":"index","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":6,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":177,"name":"startedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":7,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":178,"name":"status","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":8,"character":4}],"type":{"type":"reference","id":172,"name":"ActionStatus"}}],"groups":[{"title":"Properties","children":[174,175,176,177,178]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":3,"character":17}],"permalink":"/api/types/interface/Attempt","previousId":235,"nextId":604},{"id":604,"name":"BinConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":605,"name":"bin","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":75,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":606,"name":"force","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":76,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":607,"name":"local","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":77,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":608,"name":"name","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":78,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[605,606,607,608]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":74,"character":17}],"permalink":"/api/types/interface/BinConfig","previousId":173,"nextId":709},{"id":709,"name":"CodeownersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":710,"name":"globalPaths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":76,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":711,"name":"orderBy","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":77,"character":4}],"type":{"type":"reference","id":654,"name":"CodeownersOrderBy"}},{"id":712,"name":"syncOnRun","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":78,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[710,711,712]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":75,"character":17}],"permalink":"/api/types/interface/CodeownersConfig","previousId":604,"nextId":713},{"id":713,"name":"ConstraintsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":714,"name":"enforceProjectTypeRelationships","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":82,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":715,"name":"tagRelationships","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":83,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[714,715]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":80,"character":17}],"permalink":"/api/types/interface/ConstraintsConfig","previousId":709,"nextId":610},{"id":610,"name":"DenoConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":611,"name":"bins","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":82,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":609,"name":"BinEntry"}}},{"id":612,"name":"depsFile","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'deps.ts\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":84,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":613,"name":"lockfile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":85,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[611,612,613]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":81,"character":17}],"permalink":"/api/types/interface/DenoConfig","previousId":713,"nextId":346},{"id":346,"name":"DependencyConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":347,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":68,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":348,"name":"scope","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":69,"character":4}],"type":{"type":"reference","id":292,"name":"DependencyScope"}},{"id":349,"name":"source","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":70,"character":4}],"type":{"type":"reference","id":293,"name":"DependencySource"}},{"id":350,"name":"via","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":71,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[347,348,349,350]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":67,"character":17}],"permalink":"/api/types/interface/DependencyConfig","previousId":610,"nextId":56},{"id":56,"name":"Duration","kind":256,"kindString":"Interface","flags":{},"children":[{"id":58,"name":"nanos","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/common.ts","line":7,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L7"}],"type":{"type":"intrinsic","name":"number"}},{"id":57,"name":"secs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/common.ts","line":6,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L6"}],"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[58,57]}],"sources":[{"fileName":"types/src/common.ts","line":5,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L5"}],"permalink":"/api/types/interface/Duration","previousId":346,"nextId":84},{"id":84,"name":"EventActionFinished","kind":256,"kindString":"Interface","flags":{},"children":[{"id":85,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":54,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L54"}],"type":{"type":"reference","id":179,"name":"Action"}},{"id":86,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":55,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L55"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":87,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":56,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L56"}],"type":{"type":"reference","id":219,"name":"ActionNode"}}],"groups":[{"title":"Properties","children":[85,86,87]}],"sources":[{"fileName":"types/src/events.ts","line":53,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L53"}],"permalink":"/api/types/interface/EventActionFinished","previousId":56,"nextId":80},{"id":80,"name":"EventActionStarted","kind":256,"kindString":"Interface","flags":{},"children":[{"id":81,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":47,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L47"}],"type":{"type":"reference","id":179,"name":"Action"}},{"id":82,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":48,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L48"}],"type":{"type":"reference","id":219,"name":"ActionNode"}}],"groups":[{"title":"Properties","children":[81,82]}],"sources":[{"fileName":"types/src/events.ts","line":46,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L46"}],"permalink":"/api/types/interface/EventActionStarted","previousId":84,"nextId":93},{"id":93,"name":"EventDependenciesInstalled","kind":256,"kindString":"Interface","flags":{},"children":[{"id":94,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":72,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L72"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":95,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":73,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L73"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":275,"name":"Project"}]}},{"id":96,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":74,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L74"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[94,95,96]}],"sources":[{"fileName":"types/src/events.ts","line":71,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L71"}],"permalink":"/api/types/interface/EventDependenciesInstalled","previousId":80,"nextId":89},{"id":89,"name":"EventDependenciesInstalling","kind":256,"kindString":"Interface","flags":{},"children":[{"id":90,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":62,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L62"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":275,"name":"Project"}]}},{"id":91,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":63,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L63"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[90,91]}],"sources":[{"fileName":"types/src/events.ts","line":61,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L61"}],"permalink":"/api/types/interface/EventDependenciesInstalling","previousId":93,"nextId":107},{"id":107,"name":"EventPipelineAborted","kind":256,"kindString":"Interface","flags":{},"children":[{"id":108,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":98,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L98"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[108]}],"sources":[{"fileName":"types/src/events.ts","line":97,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L97"}],"permalink":"/api/types/interface/EventPipelineAborted","previousId":89,"nextId":114},{"id":114,"name":"EventPipelineFinished","kind":256,"kindString":"Interface","flags":{},"children":[{"id":115,"name":"baselineDuration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":111,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L111"}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":116,"name":"cachedCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":112,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L112"}],"type":{"type":"intrinsic","name":"number"}},{"id":117,"name":"context","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":113,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L113"}],"type":{"type":"reference","id":193,"name":"ActionContext"}},{"id":118,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":114,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L114"}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":119,"name":"estimatedSavings","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":115,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L115"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":120,"name":"failedCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":116,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L116"}],"type":{"type":"intrinsic","name":"number"}},{"id":121,"name":"passedCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":117,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L117"}],"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[115,116,117,118,119,120,121]}],"sources":[{"fileName":"types/src/events.ts","line":110,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L110"}],"permalink":"/api/types/interface/EventPipelineFinished","previousId":107,"nextId":110},{"id":110,"name":"EventPipelineStarted","kind":256,"kindString":"Interface","flags":{},"children":[{"id":111,"name":"actionsCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":104,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L104"}],"type":{"type":"intrinsic","name":"number"}},{"id":112,"name":"context","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":105,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L105"}],"type":{"type":"reference","id":193,"name":"ActionContext"}}],"groups":[{"title":"Properties","children":[111,112]}],"sources":[{"fileName":"types/src/events.ts","line":103,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L103"}],"permalink":"/api/types/interface/EventPipelineStarted","previousId":114,"nextId":102},{"id":102,"name":"EventProjectSynced","kind":256,"kindString":"Interface","flags":{},"children":[{"id":103,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":90,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L90"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":104,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":91,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L91"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":105,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":92,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L92"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[103,104,105]}],"sources":[{"fileName":"types/src/events.ts","line":89,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L89"}],"permalink":"/api/types/interface/EventProjectSynced","previousId":110,"nextId":98},{"id":98,"name":"EventProjectSyncing","kind":256,"kindString":"Interface","flags":{},"children":[{"id":99,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":83,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L83"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":100,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":84,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L84"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[99,100]}],"sources":[{"fileName":"types/src/events.ts","line":82,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L82"}],"permalink":"/api/types/interface/EventProjectSyncing","previousId":102,"nextId":136},{"id":136,"name":"EventTargetOutputArchived","kind":256,"kindString":"Interface","flags":{},"children":[{"id":137,"name":"archivePath","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":148,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L148"}],"type":{"type":"intrinsic","name":"string"}},{"id":138,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":149,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L149"}],"type":{"type":"intrinsic","name":"string"}},{"id":139,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":150,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L150"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":140,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":151,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L151"}],"type":{"type":"intrinsic","name":"string"}},{"id":141,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":152,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L152"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[137,138,139,140,141]}],"sources":[{"fileName":"types/src/events.ts","line":147,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L147"}],"permalink":"/api/types/interface/EventTargetOutputArchived","previousId":98,"nextId":130},{"id":130,"name":"EventTargetOutputArchiving","kind":256,"kindString":"Interface","flags":{},"children":[{"id":131,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":136,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L136"}],"type":{"type":"intrinsic","name":"string"}},{"id":132,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":137,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L137"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":133,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":138,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L138"}],"type":{"type":"intrinsic","name":"string"}},{"id":134,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":139,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L139"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[131,132,133,134]}],"sources":[{"fileName":"types/src/events.ts","line":135,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L135"}],"permalink":"/api/types/interface/EventTargetOutputArchiving","previousId":136,"nextId":156},{"id":156,"name":"EventTargetOutputCacheCheck","kind":256,"kindString":"Interface","flags":{},"children":[{"id":157,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":186,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L186"}],"type":{"type":"intrinsic","name":"string"}},{"id":158,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":187,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L187"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[157,158]}],"sources":[{"fileName":"types/src/events.ts","line":185,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L185"}],"permalink":"/api/types/interface/EventTargetOutputCacheCheck","previousId":130,"nextId":149},{"id":149,"name":"EventTargetOutputHydrated","kind":256,"kindString":"Interface","flags":{},"children":[{"id":150,"name":"archivePath","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":173,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L173"}],"type":{"type":"intrinsic","name":"string"}},{"id":151,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":174,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L174"}],"type":{"type":"intrinsic","name":"string"}},{"id":152,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":175,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L175"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":153,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":176,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L176"}],"type":{"type":"intrinsic","name":"string"}},{"id":154,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":177,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L177"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[150,151,152,153,154]}],"sources":[{"fileName":"types/src/events.ts","line":172,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L172"}],"permalink":"/api/types/interface/EventTargetOutputHydrated","previousId":156,"nextId":143},{"id":143,"name":"EventTargetOutputHydrating","kind":256,"kindString":"Interface","flags":{},"children":[{"id":144,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":161,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L161"}],"type":{"type":"intrinsic","name":"string"}},{"id":145,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":162,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L162"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":146,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":163,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L163"}],"type":{"type":"intrinsic","name":"string"}},{"id":147,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":164,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L164"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[144,145,146,147]}],"sources":[{"fileName":"types/src/events.ts","line":160,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L160"}],"permalink":"/api/types/interface/EventTargetOutputHydrating","previousId":149,"nextId":126},{"id":126,"name":"EventTargetRan","kind":256,"kindString":"Interface","flags":{},"children":[{"id":127,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":129,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L129"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":128,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":130,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L130"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[127,128]}],"sources":[{"fileName":"types/src/events.ts","line":128,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L128"}],"permalink":"/api/types/interface/EventTargetRan","previousId":143,"nextId":123},{"id":123,"name":"EventTargetRunning","kind":256,"kindString":"Interface","flags":{},"children":[{"id":124,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":123,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L123"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[124]}],"sources":[{"fileName":"types/src/events.ts","line":122,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L122"}],"permalink":"/api/types/interface/EventTargetRunning","previousId":126,"nextId":163},{"id":163,"name":"EventToolInstalled","kind":256,"kindString":"Interface","flags":{},"children":[{"id":164,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":202,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L202"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":165,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":203,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L203"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[164,165]}],"sources":[{"fileName":"types/src/events.ts","line":201,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L201"}],"permalink":"/api/types/interface/EventToolInstalled","previousId":123,"nextId":160},{"id":160,"name":"EventToolInstalling","kind":256,"kindString":"Interface","flags":{},"children":[{"id":161,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":196,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L196"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[161]}],"sources":[{"fileName":"types/src/events.ts","line":195,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L195"}],"permalink":"/api/types/interface/EventToolInstalling","previousId":163,"nextId":169},{"id":169,"name":"EventWorkspaceSynced","kind":256,"kindString":"Interface","flags":{},"children":[{"id":170,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":211,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L211"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[170]}],"sources":[{"fileName":"types/src/events.ts","line":210,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L210"}],"permalink":"/api/types/interface/EventWorkspaceSynced","previousId":160,"nextId":716},{"id":716,"name":"ExperimentsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":717,"name":"taskOutputBoundaries","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":87,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[717]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":85,"character":17}],"permalink":"/api/types/interface/ExperimentsConfig","previousId":169,"nextId":238},{"id":238,"name":"FileGroup","kind":256,"kindString":"Interface","flags":{},"children":[{"id":239,"name":"files","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":4,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":240,"name":"globs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":5,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":241,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":6,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[239,240,241]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":3,"character":17}],"permalink":"/api/types/interface/FileGroup","previousId":716,"nextId":718},{"id":718,"name":"GeneratorConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":719,"name":"templates","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":90,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}}],"groups":[{"title":"Properties","children":[719]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":89,"character":17}],"permalink":"/api/types/interface/GeneratorConfig","previousId":238,"nextId":720},{"id":720,"name":"HasherConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":721,"name":"batchSize","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"2500"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":94,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":722,"name":"ignoreMissingPatterns","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":95,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":723,"name":"ignorePatterns","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":96,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":724,"name":"optimization","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":97,"character":4}],"type":{"type":"reference","id":666,"name":"HasherOptimization"}},{"id":725,"name":"walkStrategy","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":98,"character":4}],"type":{"type":"reference","id":667,"name":"HasherWalkStrategy"}},{"id":726,"name":"warnOnMissingInputs","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":100,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[721,722,723,724,725,726]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":92,"character":17}],"permalink":"/api/types/interface/HasherConfig","previousId":718,"nextId":471},{"id":471,"name":"InheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":472,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/tasks.json\'"}]}]},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":84,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":473,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":85,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":474,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":86,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":475,"name":"implicitDeps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":87,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":476,"name":"implicitInputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":88,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":477,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":89,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":459,"name":"TaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[472,473,474,475,476,477]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":82,"character":17}],"permalink":"/api/types/interface/InheritedTasksConfig","previousId":720,"nextId":621},{"id":621,"name":"NodeConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":622,"name":"addEnginesConstraint","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":99,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":623,"name":"aliasPackageNames","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":100,"character":4}],"type":{"type":"reference","id":560,"name":"NodeProjectAliasFormat"}},{"id":624,"name":"binExecArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":101,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":625,"name":"dedupeOnLockfileChange","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":103,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":626,"name":"dependencyVersionFormat","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":104,"character":4}],"type":{"type":"reference","id":561,"name":"NodeVersionFormat"}},{"id":627,"name":"inferTasksFromScripts","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":105,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":628,"name":"npm","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":106,"character":4}],"type":{"type":"reference","id":614,"name":"NpmConfig"}},{"id":629,"name":"packageManager","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":107,"character":4}],"type":{"type":"reference","id":564,"name":"NodePackageManager"}},{"id":630,"name":"pnpm","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":108,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":616,"name":"PnpmConfig"}]}},{"id":631,"name":"syncProjectWorkspaceDependencies","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":110,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":632,"name":"syncVersionManagerConfig","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":111,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":567,"name":"NodeVersionManager"}]}},{"id":633,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":112,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":634,"name":"yarn","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":113,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":618,"name":"YarnConfig"}]}}],"groups":[{"title":"Properties","children":[622,623,624,625,626,627,628,629,630,631,632,633,634]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":97,"character":17}],"permalink":"/api/types/interface/NodeConfig","previousId":471,"nextId":727},{"id":727,"name":"NotifierConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":728,"name":"webhookUrl","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":103,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[728]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":102,"character":17}],"permalink":"/api/types/interface/NotifierConfig","previousId":621,"nextId":614},{"id":614,"name":"NpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":615,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":88,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[615]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":87,"character":17}],"permalink":"/api/types/interface/NpmConfig","previousId":727,"nextId":353},{"id":353,"name":"OwnersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":354,"name":"customGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":76,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":355,"name":"defaultOwner","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":77,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":356,"name":"optional","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":78,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":357,"name":"paths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":79,"character":4}],"type":{"type":"reference","id":352,"name":"OwnersPaths"}},{"id":358,"name":"requiredApprovals","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":81,"character":4}],"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[354,355,356,357,358]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":75,"character":17}],"permalink":"/api/types/interface/OwnersConfig","previousId":614,"nextId":550},{"id":550,"name":"PartialBinConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":551,"name":"bin","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":2,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":552,"name":"force","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":3,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":553,"name":"local","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":554,"name":"name","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[551,552,553,554]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":1,"character":17}],"permalink":"/api/types/interface/PartialBinConfig","previousId":353,"nextId":655},{"id":655,"name":"PartialCodeownersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":656,"name":"globalPaths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":3,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":657,"name":"orderBy","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":654,"name":"CodeownersOrderBy"}]}},{"id":658,"name":"syncOnRun","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[656,657,658]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":2,"character":17}],"permalink":"/api/types/interface/PartialCodeownersConfig","previousId":550,"nextId":659},{"id":659,"name":"PartialConstraintsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":660,"name":"enforceProjectTypeRelationships","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":661,"name":"tagRelationships","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":10,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[660,661]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":7,"character":17}],"permalink":"/api/types/interface/PartialConstraintsConfig","previousId":655,"nextId":556},{"id":556,"name":"PartialDenoConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":557,"name":"bins","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":555,"name":"PartialBinEntry"}}]}},{"id":558,"name":"depsFile","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'deps.ts\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":559,"name":"lockfile","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":12,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[557,558,559]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":8,"character":17}],"permalink":"/api/types/interface/PartialDenoConfig","previousId":659,"nextId":294},{"id":294,"name":"PartialDependencyConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":295,"name":"id","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":296,"name":"scope","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":6,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":292,"name":"DependencyScope"}]}},{"id":297,"name":"source","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":7,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":293,"name":"DependencySource"}]}},{"id":298,"name":"via","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":8,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[295,296,297,298]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":4,"character":17}],"permalink":"/api/types/interface/PartialDependencyConfig","previousId":556,"nextId":662},{"id":662,"name":"PartialExperimentsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":663,"name":"taskOutputBoundaries","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[663]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":12,"character":17}],"permalink":"/api/types/interface/PartialExperimentsConfig","previousId":294,"nextId":664},{"id":664,"name":"PartialGeneratorConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":665,"name":"templates","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}}],"groups":[{"title":"Properties","children":[665]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":16,"character":17}],"permalink":"/api/types/interface/PartialGeneratorConfig","previousId":662,"nextId":668},{"id":668,"name":"PartialHasherConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":669,"name":"batchSize","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"2500"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":670,"name":"ignoreMissingPatterns","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":24,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":671,"name":"ignorePatterns","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":25,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":672,"name":"optimization","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":666,"name":"HasherOptimization"}]}},{"id":673,"name":"walkStrategy","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":27,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":667,"name":"HasherWalkStrategy"}]}},{"id":674,"name":"warnOnMissingInputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":29,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[669,670,671,672,673,674]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":21,"character":17}],"permalink":"/api/types/interface/PartialHasherConfig","previousId":664,"nextId":433},{"id":433,"name":"PartialInheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":434,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/tasks.json\'"}]}]},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":435,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":43,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":436,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":437,"name":"implicitDeps","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":45,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":438,"name":"implicitInputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":46,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":439,"name":"tasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":47,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":421,"name":"PartialTaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[434,435,436,437,438,439]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":40,"character":17}],"permalink":"/api/types/interface/PartialInheritedTasksConfig","previousId":668,"nextId":571},{"id":571,"name":"PartialNodeConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":572,"name":"addEnginesConstraint","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":30,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":573,"name":"aliasPackageNames","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":31,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":560,"name":"NodeProjectAliasFormat"}]}},{"id":574,"name":"binExecArgs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":575,"name":"dedupeOnLockfileChange","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":576,"name":"dependencyVersionFormat","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":561,"name":"NodeVersionFormat"}]}},{"id":577,"name":"inferTasksFromScripts","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":578,"name":"npm","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":37,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":562,"name":"PartialNpmConfig"}]}},{"id":579,"name":"packageManager","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":38,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":564,"name":"NodePackageManager"}]}},{"id":580,"name":"pnpm","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":39,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":565,"name":"PartialPnpmConfig"}]}},{"id":581,"name":"syncProjectWorkspaceDependencies","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":41,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":582,"name":"syncVersionManagerConfig","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":567,"name":"NodeVersionManager"}]}},{"id":583,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":43,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":584,"name":"yarn","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":568,"name":"PartialYarnConfig"}]}}],"groups":[{"title":"Properties","children":[572,573,574,575,576,577,578,579,580,581,582,583,584]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":28,"character":17}],"permalink":"/api/types/interface/PartialNodeConfig","previousId":433,"nextId":675},{"id":675,"name":"PartialNotifierConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":676,"name":"webhookUrl","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[676]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":31,"character":17}],"permalink":"/api/types/interface/PartialNotifierConfig","previousId":571,"nextId":562},{"id":562,"name":"PartialNpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":563,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[563]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":16,"character":17}],"permalink":"/api/types/interface/PartialNpmConfig","previousId":675,"nextId":302},{"id":302,"name":"PartialOwnersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":303,"name":"customGroups","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":304,"name":"defaultOwner","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":305,"name":"optional","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":16,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":306,"name":"paths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":301,"name":"PartialOwnersPaths"}]}},{"id":307,"name":"requiredApprovals","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":19,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}}],"groups":[{"title":"Properties","children":[303,304,305,306,307]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":13,"character":17}],"permalink":"/api/types/interface/PartialOwnersConfig","previousId":562,"nextId":565},{"id":565,"name":"PartialPnpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":566,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":21,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[566]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":20,"character":17}],"permalink":"/api/types/interface/PartialPnpmConfig","previousId":302,"nextId":332},{"id":332,"name":"PartialProjectConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":333,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/project.json\'"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":334,"name":"dependsOn","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":54,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":299,"name":"PartialProjectDependsOn"}}]}},{"id":335,"name":"env","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":336,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":56,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":337,"name":"language","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":57,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":300,"name":"LanguageType"}]}},{"id":338,"name":"owners","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":58,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":302,"name":"PartialOwnersConfig"}]}},{"id":339,"name":"platform","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":419,"name":"PlatformType"}]}},{"id":340,"name":"project","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":308,"name":"PartialProjectMetadataConfig"}]}},{"id":341,"name":"tags","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":61,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":342,"name":"tasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":421,"name":"PartialTaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":343,"name":"toolchain","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":321,"name":"PartialProjectToolchainConfig"}]}},{"id":344,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":64,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":325,"name":"ProjectType"}]}},{"id":345,"name":"workspace","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":65,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":330,"name":"PartialProjectWorkspaceConfig"}]}}],"groups":[{"title":"Properties","children":[333,334,335,336,337,338,339,340,341,342,343,344,345]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":51,"character":17}],"permalink":"/api/types/interface/PartialProjectConfig","previousId":565,"nextId":308},{"id":308,"name":"PartialProjectMetadataConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":309,"name":"channel","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":22,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":310,"name":"description","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":311,"name":"maintainers","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":24,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":312,"name":"name","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":25,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":313,"name":"owner","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[309,310,311,312,313]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":21,"character":17}],"permalink":"/api/types/interface/PartialProjectMetadataConfig","previousId":332,"nextId":314},{"id":314,"name":"PartialProjectToolchainCommonToolConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":315,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":29,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[315]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":28,"character":17}],"permalink":"/api/types/interface/PartialProjectToolchainCommonToolConfig","previousId":308,"nextId":321},{"id":321,"name":"PartialProjectToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":322,"name":"node","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":38,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":314,"name":"PartialProjectToolchainCommonToolConfig"}]}},{"id":323,"name":"rust","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":39,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":314,"name":"PartialProjectToolchainCommonToolConfig"}]}},{"id":324,"name":"typescript","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":40,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":316,"name":"PartialProjectToolchainTypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[322,323,324]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":37,"character":17}],"permalink":"/api/types/interface/PartialProjectToolchainConfig","previousId":314,"nextId":316},{"id":316,"name":"PartialProjectToolchainTypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":317,"name":"disabled","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":318,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":33,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":319,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":320,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[317,318,319,320]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":31,"character":17}],"permalink":"/api/types/interface/PartialProjectToolchainTypeScriptConfig","previousId":321,"nextId":330},{"id":330,"name":"PartialProjectWorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":331,"name":"inheritedTasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":49,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":326,"name":"PartialProjectWorkspaceInheritedTasksConfig"}]}}],"groups":[{"title":"Properties","children":[331]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":48,"character":17}],"permalink":"/api/types/interface/PartialProjectWorkspaceConfig","previousId":316,"nextId":326},{"id":326,"name":"PartialProjectWorkspaceInheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":327,"name":"exclude","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":328,"name":"include","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":45,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":329,"name":"rename","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":46,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[327,328,329]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":43,"character":17}],"permalink":"/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig","previousId":330,"nextId":681},{"id":681,"name":"PartialRunnerConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":682,"name":"archivableTargets","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":40,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":683,"name":"cacheLifetime","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'7 days\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":684,"name":"inheritColorsForPipedTasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":685,"name":"logRunningCommand","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":45,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[682,683,684,685]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":39,"character":17}],"permalink":"/api/types/interface/PartialRunnerConfig","previousId":326,"nextId":585},{"id":585,"name":"PartialRustConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":586,"name":"bins","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":47,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":555,"name":"PartialBinEntry"}}]}},{"id":587,"name":"syncToolchainConfig","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":48,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":588,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":49,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[586,587,588]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":46,"character":17}],"permalink":"/api/types/interface/PartialRustConfig","previousId":681,"nextId":421},{"id":421,"name":"PartialTaskConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":422,"name":"args","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":28,"character":4}],"type":{"type":"reference","id":396,"name":"PartialTaskCommandArgs"}},{"id":423,"name":"command","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":29,"character":4}],"type":{"type":"reference","id":396,"name":"PartialTaskCommandArgs"}},{"id":424,"name":"deps","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":30,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":425,"name":"env","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":31,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":426,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":427,"name":"inputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":33,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":428,"name":"local","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":429,"name":"options","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":401,"name":"PartialTaskOptionsConfig"}]}},{"id":430,"name":"outputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":431,"name":"platform","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":37,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":419,"name":"PlatformType"}]}},{"id":432,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":38,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":420,"name":"TaskType"}]}}],"groups":[{"title":"Properties","children":[422,423,424,425,426,427,428,429,430,431,432]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":27,"character":17}],"permalink":"/api/types/interface/PartialTaskConfig","previousId":585,"nextId":401},{"id":401,"name":"PartialTaskOptionsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":402,"name":"affectedFiles","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":7,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":397,"name":"TaskOptionAffectedFiles"}]}},{"id":403,"name":"allowFailure","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":8,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":404,"name":"cache","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":405,"name":"envFile","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":10,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":398,"name":"TaskOptionEnvFile"}]}},{"id":406,"name":"interactive","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":407,"name":"mergeArgs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":12,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":408,"name":"mergeDeps","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":13,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":409,"name":"mergeEnv","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":410,"name":"mergeInputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":411,"name":"mergeOutputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":16,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":412,"name":"outputStyle","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":400,"name":"TaskOutputStyle"}]}},{"id":413,"name":"persistent","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":18,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":414,"name":"retryCount","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":19,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":415,"name":"runDepsInParallel","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":20,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":416,"name":"runFromWorkspaceRoot","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":21,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":417,"name":"runInCI","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":22,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":418,"name":"shell","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":6,"character":17}],"permalink":"/api/types/interface/PartialTaskOptionsConfig","previousId":421,"nextId":504},{"id":504,"name":"PartialTemplateConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":505,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":506,"name":"description","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":507,"name":"title","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":508,"name":"variables","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":37,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":503,"name":"PartialTemplateVariable"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[505,506,507,508]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":32,"character":17}],"permalink":"/api/types/interface/PartialTemplateConfig","previousId":401,"nextId":509},{"id":509,"name":"PartialTemplateFrontmatterConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":510,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template-frontmatter.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":41,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":511,"name":"force","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":512,"name":"skip","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":43,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":513,"name":"to","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[510,511,512,513]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":39,"character":17}],"permalink":"/api/types/interface/PartialTemplateFrontmatterConfig","previousId":504,"nextId":478},{"id":478,"name":"PartialTemplateVariableBoolSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":479,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":2,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":480,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":3,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":481,"name":"required","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":482,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"boolean"}]}}],"groups":[{"title":"Properties","children":[479,480,481,482]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":1,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableBoolSetting","previousId":509,"nextId":487},{"id":487,"name":"PartialTemplateVariableEnumSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":488,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":13,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":489,"name":"multiple","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":490,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":491,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":16,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"enum"}]}},{"id":492,"name":"values","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":486,"name":"PartialTemplateVariableEnumValue"}}]}}],"groups":[{"title":"Properties","children":[488,489,490,491,492]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":12,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableEnumSetting","previousId":478,"nextId":483},{"id":483,"name":"PartialTemplateVariableEnumValueConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":484,"name":"label","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":8,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":485,"name":"value","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[484,485]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":7,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableEnumValueConfig","previousId":487,"nextId":493},{"id":493,"name":"PartialTemplateVariableNumberSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":494,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":20,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":495,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":21,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":496,"name":"required","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":22,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":497,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"number"}]}}],"groups":[{"title":"Properties","children":[494,495,496,497]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":19,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableNumberSetting","previousId":483,"nextId":498},{"id":498,"name":"PartialTemplateVariableStringSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":499,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":500,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":27,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":501,"name":"required","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":28,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":502,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":29,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"string"}]}}],"groups":[{"title":"Properties","children":[499,500,501,502]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":25,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableStringSetting","previousId":493,"nextId":597},{"id":597,"name":"PartialToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":598,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/toolchain.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":599,"name":"deno","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":68,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":556,"name":"PartialDenoConfig"}]}},{"id":600,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":69,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":601,"name":"node","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":70,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":571,"name":"PartialNodeConfig"}]}},{"id":602,"name":"rust","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":71,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":585,"name":"PartialRustConfig"}]}},{"id":603,"name":"typescript","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":72,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":589,"name":"PartialTypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[598,599,600,601,602,603]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":65,"character":17}],"permalink":"/api/types/interface/PartialToolchainConfig","previousId":498,"nextId":589},{"id":589,"name":"PartialTypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":590,"name":"createMissingConfig","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":591,"name":"projectConfigFileName","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":592,"name":"rootConfigFileName","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":57,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":593,"name":"rootOptionsConfigFileName","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.options.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":594,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":595,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":596,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[590,591,592,593,594,595,596]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":51,"character":17}],"permalink":"/api/types/interface/PartialTypeScriptConfig","previousId":597,"nextId":688},{"id":688,"name":"PartialVcsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":689,"name":"defaultBranch","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'master\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":51,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":690,"name":"hooks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":52,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":691,"name":"manager","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"git"}]}},{"id":692,"name":"provider","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":54,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":687,"name":"VcsProvider"}]}},{"id":693,"name":"remoteCandidates","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":694,"name":"syncHooks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":56,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[689,690,691,692,693,694]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":49,"character":17}],"permalink":"/api/types/interface/PartialVcsConfig","previousId":589,"nextId":695},{"id":695,"name":"PartialWorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":696,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/workspace.json\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":697,"name":"codeowners","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":61,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":655,"name":"PartialCodeownersConfig"}]}},{"id":698,"name":"constraints","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":659,"name":"PartialConstraintsConfig"}]}},{"id":699,"name":"experiments","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":662,"name":"PartialExperimentsConfig"}]}},{"id":700,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":64,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":701,"name":"generator","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":65,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":664,"name":"PartialGeneratorConfig"}]}},{"id":702,"name":"hasher","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":66,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":668,"name":"PartialHasherConfig"}]}},{"id":703,"name":"notifier","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":675,"name":"PartialNotifierConfig"}]}},{"id":704,"name":"projects","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":68,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":680,"name":"PartialWorkspaceProjects"}]}},{"id":705,"name":"runner","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":69,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":681,"name":"PartialRunnerConfig"}]}},{"id":706,"name":"telemetry","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":71,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":707,"name":"vcs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":72,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":688,"name":"PartialVcsConfig"}]}},{"id":708,"name":"versionConstraint","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":73,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[696,697,698,699,700,701,702,703,704,705,706,707,708]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":58,"character":17}],"permalink":"/api/types/interface/PartialWorkspaceConfig","previousId":688,"nextId":677},{"id":677,"name":"PartialWorkspaceProjectsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":678,"name":"globs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":679,"name":"sources","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[678,679]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":34,"character":17}],"permalink":"/api/types/interface/PartialWorkspaceProjectsConfig","previousId":695,"nextId":568},{"id":568,"name":"PartialYarnConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":569,"name":"plugins","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":25,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":570,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[569,570]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":24,"character":17}],"permalink":"/api/types/interface/PartialYarnConfig","previousId":677,"nextId":616},{"id":616,"name":"PnpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":617,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":91,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[617]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":90,"character":17}],"permalink":"/api/types/interface/PnpmConfig","previousId":568,"nextId":275},{"id":275,"name":"Project","kind":256,"kindString":"Interface","flags":{},"children":[{"id":276,"name":"alias","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":277,"name":"config","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":45,"character":4}],"type":{"type":"reference","id":382,"name":"ProjectConfig"}},{"id":278,"name":"dependencies","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":46,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":346,"name":"DependencyConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":279,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":47,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":238,"name":"FileGroup"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":280,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":48,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":281,"name":"inherited","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":49,"character":4}],"type":{"type":"reflection","declaration":{"id":282,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":285,"name":"config","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":52,"character":8}],"type":{"type":"reference","id":471,"name":"InheritedTasksConfig"}},{"id":284,"name":"layers","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":51,"character":8}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":433,"name":"PartialInheritedTasksConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":283,"name":"order","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":50,"character":8}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}}],"groups":[{"title":"Properties","children":[285,284,283]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":49,"character":15}]}}},{"id":286,"name":"language","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":54,"character":4}],"type":{"type":"reference","id":300,"name":"LanguageType"}},{"id":287,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":55,"character":4}],"type":{"type":"reference","id":419,"name":"PlatformType"}},{"id":288,"name":"root","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":56,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":289,"name":"source","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":57,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":290,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":58,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":258,"name":"Task"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":291,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":59,"character":4}],"type":{"type":"reference","id":325,"name":"ProjectType"}}],"groups":[{"title":"Properties","children":[276,277,278,279,280,281,286,287,288,289,290,291]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":43,"character":17}],"permalink":"/api/types/interface/Project","previousId":616,"nextId":382},{"id":382,"name":"ProjectConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":383,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/project.json\'"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":114,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":384,"name":"dependsOn","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":115,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":351,"name":"ProjectDependsOn"}}},{"id":385,"name":"env","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":116,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":386,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":117,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":387,"name":"language","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":118,"character":4}],"type":{"type":"reference","id":300,"name":"LanguageType"}},{"id":388,"name":"owners","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":119,"character":4}],"type":{"type":"reference","id":353,"name":"OwnersConfig"}},{"id":389,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":120,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":419,"name":"PlatformType"}]}},{"id":390,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":121,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":359,"name":"ProjectMetadataConfig"}]}},{"id":391,"name":"tags","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":122,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":392,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":123,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":459,"name":"TaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":393,"name":"toolchain","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":124,"character":4}],"type":{"type":"reference","id":372,"name":"ProjectToolchainConfig"}},{"id":394,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":125,"character":4}],"type":{"type":"reference","id":325,"name":"ProjectType"}},{"id":395,"name":"workspace","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":126,"character":4}],"type":{"type":"reference","id":380,"name":"ProjectWorkspaceConfig"}}],"groups":[{"title":"Properties","children":[383,384,385,386,387,388,389,390,391,392,393,394,395]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":112,"character":17}],"permalink":"/api/types/interface/ProjectConfig","previousId":275,"nextId":359},{"id":359,"name":"ProjectMetadataConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":360,"name":"channel","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":84,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":361,"name":"description","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":85,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":362,"name":"maintainers","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":86,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":363,"name":"name","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":87,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":364,"name":"owner","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":88,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[360,361,362,363,364]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":83,"character":17}],"permalink":"/api/types/interface/ProjectMetadataConfig","previousId":382,"nextId":365},{"id":365,"name":"ProjectToolchainCommonToolConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":366,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":91,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[366]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":90,"character":17}],"permalink":"/api/types/interface/ProjectToolchainCommonToolConfig","previousId":359,"nextId":372},{"id":372,"name":"ProjectToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":373,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":100,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":365,"name":"ProjectToolchainCommonToolConfig"}]}},{"id":374,"name":"rust","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":101,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":365,"name":"ProjectToolchainCommonToolConfig"}]}},{"id":375,"name":"typescript","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":102,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":367,"name":"ProjectToolchainTypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[373,374,375]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":99,"character":17}],"permalink":"/api/types/interface/ProjectToolchainConfig","previousId":365,"nextId":367},{"id":367,"name":"ProjectToolchainTypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":368,"name":"disabled","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":94,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":369,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":95,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":370,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":96,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":371,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":97,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[368,369,370,371]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":93,"character":17}],"permalink":"/api/types/interface/ProjectToolchainTypeScriptConfig","previousId":372,"nextId":380},{"id":380,"name":"ProjectWorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":381,"name":"inheritedTasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":110,"character":4}],"type":{"type":"reference","id":376,"name":"ProjectWorkspaceInheritedTasksConfig"}}],"groups":[{"title":"Properties","children":[381]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":109,"character":17}],"permalink":"/api/types/interface/ProjectWorkspaceConfig","previousId":367,"nextId":376},{"id":376,"name":"ProjectWorkspaceInheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":377,"name":"exclude","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":105,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":378,"name":"include","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":106,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":379,"name":"rename","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":107,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[377,378,379]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":104,"character":17}],"permalink":"/api/types/interface/ProjectWorkspaceInheritedTasksConfig","previousId":380,"nextId":62},{"id":62,"name":"ProviderEnvironment","kind":256,"kindString":"Interface","flags":{},"children":[{"id":63,"name":"baseBranch","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":6,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L6"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":64,"name":"branch","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":7,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L7"}],"type":{"type":"intrinsic","name":"string"}},{"id":65,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":8,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L8"}],"type":{"type":"intrinsic","name":"string"}},{"id":66,"name":"provider","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":9,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L9"}],"type":{"type":"intrinsic","name":"string"}},{"id":67,"name":"requestId","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":10,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L10"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":68,"name":"requestUrl","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":11,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L11"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":69,"name":"revision","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":12,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L12"}],"type":{"type":"intrinsic","name":"string"}},{"id":70,"name":"url","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":13,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L13"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[63,64,65,66,67,68,69,70]}],"sources":[{"fileName":"types/src/events.ts","line":5,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L5"}],"permalink":"/api/types/interface/ProviderEnvironment","previousId":376,"nextId":203},{"id":203,"name":"RunReport","kind":256,"kindString":"Interface","flags":{},"children":[{"id":204,"name":"actions","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":38,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":179,"name":"Action"}}},{"id":207,"name":"comparisonEstimate","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":41,"character":4}],"type":{"type":"reflection","declaration":{"id":208,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":209,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":42,"character":8}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":210,"name":"gain","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":43,"character":8}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":211,"name":"loss","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":44,"character":8}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":212,"name":"percent","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":45,"character":8}],"type":{"type":"intrinsic","name":"number"}},{"id":213,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":46,"character":8}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"id":214,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":215,"name":"count","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":47,"character":12}],"type":{"type":"intrinsic","name":"number"}},{"id":216,"name":"total","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":48,"character":12}],"type":{"type":"reference","id":56,"name":"Duration"}}],"groups":[{"title":"Properties","children":[215,216]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":46,"character":30}]}}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[209,210,211,212,213]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":41,"character":24}]}}},{"id":205,"name":"context","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":39,"character":4}],"type":{"type":"reference","id":193,"name":"ActionContext"}},{"id":206,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":40,"character":4}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":217,"name":"estimatedSavings","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":51,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":218,"name":"projectedDuration","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":52,"character":4}],"type":{"type":"reference","id":56,"name":"Duration"}}],"groups":[{"title":"Properties","children":[204,207,205,206,217,218]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":37,"character":17}],"permalink":"/api/types/interface/RunReport","previousId":62,"nextId":733},{"id":733,"name":"RunnerConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":734,"name":"archivableTargets","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":111,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":735,"name":"cacheLifetime","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'7 days\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":113,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":736,"name":"inheritColorsForPipedTasks","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":115,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":737,"name":"logRunningCommand","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":116,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[734,735,736,737]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":110,"character":17}],"permalink":"/api/types/interface/RunnerConfig","previousId":203,"nextId":59},{"id":59,"name":"Runtime","kind":256,"kindString":"Interface","flags":{},"children":[{"id":60,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/common.ts","line":11,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L11"}],"type":{"type":"union","types":[{"type":"literal","value":"Deno"},{"type":"literal","value":"Node"},{"type":"literal","value":"Rust"},{"type":"literal","value":"System"},{"type":"literal","value":"Unknown"}]}},{"id":61,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/src/common.ts","line":12,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L12"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[60,61]}],"sources":[{"fileName":"types/src/common.ts","line":10,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L10"}],"permalink":"/api/types/interface/Runtime","previousId":733,"nextId":635},{"id":635,"name":"RustConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":636,"name":"bins","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":116,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":609,"name":"BinEntry"}}},{"id":637,"name":"syncToolchainConfig","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":117,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":638,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":118,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[636,637,638]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":115,"character":17}],"permalink":"/api/types/interface/RustConfig","previousId":59,"nextId":190},{"id":190,"name":"TargetState","kind":256,"kindString":"Interface","flags":{},"children":[{"id":192,"name":"hash","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":24,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":191,"name":"state","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":"failed"},{"type":"literal","value":"skipped"},{"type":"literal","value":"completed"},{"type":"literal","value":"passthrough"}]}}],"groups":[{"title":"Properties","children":[192,191]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":22,"character":17}],"permalink":"/api/types/interface/TargetState","previousId":635,"nextId":258},{"id":258,"name":"Task","kind":256,"kindString":"Interface","flags":{},"children":[{"id":259,"name":"args","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":26,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":260,"name":"command","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":27,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":261,"name":"deps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":28,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":262,"name":"env","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":29,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":263,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":30,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":265,"name":"inputFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":32,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":266,"name":"inputGlobs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":33,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":267,"name":"inputVars","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":34,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":264,"name":"inputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":31,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":268,"name":"options","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":35,"character":4}],"type":{"type":"reference","id":242,"name":"TaskOptions"}},{"id":270,"name":"outputFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":37,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":271,"name":"outputGlobs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":38,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":269,"name":"outputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":36,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":272,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":39,"character":4}],"type":{"type":"reference","id":419,"name":"PlatformType"}},{"id":273,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":40,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":274,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":41,"character":4}],"type":{"type":"reference","id":420,"name":"TaskType"}}],"groups":[{"title":"Properties","children":[259,260,261,262,263,265,266,267,264,268,270,271,269,272,273,274]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":25,"character":17}],"permalink":"/api/types/interface/Task","previousId":190,"nextId":459},{"id":459,"name":"TaskConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":460,"name":"args","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":70,"character":4}],"type":{"type":"reference","id":440,"name":"TaskCommandArgs"}},{"id":461,"name":"command","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":71,"character":4}],"type":{"type":"reference","id":440,"name":"TaskCommandArgs"}},{"id":462,"name":"deps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":72,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":463,"name":"env","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":73,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":464,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":74,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":465,"name":"inputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":75,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":466,"name":"local","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":76,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":467,"name":"options","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":77,"character":4}],"type":{"type":"reference","id":441,"name":"TaskOptionsConfig"}},{"id":468,"name":"outputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":78,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":469,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":79,"character":4}],"type":{"type":"reference","id":419,"name":"PlatformType"}},{"id":470,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":80,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":420,"name":"TaskType"}]}}],"groups":[{"title":"Properties","children":[460,461,462,463,464,465,466,467,468,469,470]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":69,"character":17}],"permalink":"/api/types/interface/TaskConfig","previousId":258,"nextId":242},{"id":242,"name":"TaskOptions","kind":256,"kindString":"Interface","flags":{},"children":[{"id":243,"name":"affectedFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"literal","value":"args"},{"type":"literal","value":"env"}]}},{"id":244,"name":"cache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":10,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":245,"name":"envFile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":246,"name":"mergeArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":12,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":247,"name":"mergeDeps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":13,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":248,"name":"mergeEnv","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":14,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":249,"name":"mergeInputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":15,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":250,"name":"mergeOutputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":16,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":251,"name":"outputStyle","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":400,"name":"TaskOutputStyle"}]}},{"id":252,"name":"persistent","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":18,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":253,"name":"retryCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":19,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":254,"name":"runDepsInParallel","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":20,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":256,"name":"runFromWorkspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":22,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":255,"name":"runInCI","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":21,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":257,"name":"shell","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":23,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[243,244,245,246,247,248,249,250,251,252,253,254,256,255,257]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":8,"character":17}],"permalink":"/api/types/interface/TaskOptions","previousId":459,"nextId":441},{"id":441,"name":"TaskOptionsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":442,"name":"affectedFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":51,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":397,"name":"TaskOptionAffectedFiles"}]}},{"id":443,"name":"allowFailure","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":52,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":444,"name":"cache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":445,"name":"envFile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":54,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":398,"name":"TaskOptionEnvFile"}]}},{"id":446,"name":"interactive","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":447,"name":"mergeArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":56,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":448,"name":"mergeDeps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":57,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":449,"name":"mergeEnv","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":58,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":450,"name":"mergeInputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":451,"name":"mergeOutputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":452,"name":"outputStyle","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":61,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":400,"name":"TaskOutputStyle"}]}},{"id":453,"name":"persistent","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":454,"name":"retryCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":455,"name":"runDepsInParallel","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":64,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":456,"name":"runFromWorkspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":65,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":457,"name":"runInCI","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":66,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":458,"name":"shell","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":50,"character":17}],"permalink":"/api/types/interface/TaskOptionsConfig","previousId":242,"nextId":540},{"id":540,"name":"TemplateConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":541,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":79,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":542,"name":"description","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":80,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":543,"name":"title","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":81,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":544,"name":"variables","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":82,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":539,"name":"TemplateVariable"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[541,542,543,544]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":77,"character":17}],"permalink":"/api/types/interface/TemplateConfig","previousId":441,"nextId":545},{"id":545,"name":"TemplateFrontmatterConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":546,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template-frontmatter.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":86,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":547,"name":"force","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":87,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":548,"name":"skip","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":88,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":549,"name":"to","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":89,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[546,547,548,549]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":84,"character":17}],"permalink":"/api/types/interface/TemplateFrontmatterConfig","previousId":540,"nextId":514},{"id":514,"name":"TemplateVariableBoolSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":515,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":47,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":516,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":48,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":517,"name":"required","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":49,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":518,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":50,"character":4}],"type":{"type":"literal","value":"boolean"}}],"groups":[{"title":"Properties","children":[515,516,517,518]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":46,"character":17}],"permalink":"/api/types/interface/TemplateVariableBoolSetting","previousId":545,"nextId":523},{"id":523,"name":"TemplateVariableEnumSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":524,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":58,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":525,"name":"multiple","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":526,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":60,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":527,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":61,"character":4}],"type":{"type":"literal","value":"enum"}},{"id":528,"name":"values","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":62,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":522,"name":"TemplateVariableEnumValue"}}}],"groups":[{"title":"Properties","children":[524,525,526,527,528]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":57,"character":17}],"permalink":"/api/types/interface/TemplateVariableEnumSetting","previousId":514,"nextId":519},{"id":519,"name":"TemplateVariableEnumValueConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":520,"name":"label","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":53,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":521,"name":"value","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":54,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[520,521]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":52,"character":17}],"permalink":"/api/types/interface/TemplateVariableEnumValueConfig","previousId":523,"nextId":529},{"id":529,"name":"TemplateVariableNumberSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":530,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":65,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":531,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":66,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":532,"name":"required","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":533,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":68,"character":4}],"type":{"type":"literal","value":"number"}}],"groups":[{"title":"Properties","children":[530,531,532,533]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":64,"character":17}],"permalink":"/api/types/interface/TemplateVariableNumberSetting","previousId":519,"nextId":534},{"id":534,"name":"TemplateVariableStringSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":535,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":71,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":536,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":72,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":537,"name":"required","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":73,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":538,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":74,"character":4}],"type":{"type":"literal","value":"string"}}],"groups":[{"title":"Properties","children":[535,536,537,538]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":70,"character":17}],"permalink":"/api/types/interface/TemplateVariableStringSetting","previousId":529,"nextId":647},{"id":647,"name":"ToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":648,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/toolchain.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":136,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":649,"name":"deno","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":137,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":610,"name":"DenoConfig"}]}},{"id":650,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":138,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":651,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":139,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":621,"name":"NodeConfig"}]}},{"id":652,"name":"rust","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":140,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":635,"name":"RustConfig"}]}},{"id":653,"name":"typescript","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":141,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":639,"name":"TypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[648,649,650,651,652,653]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":134,"character":17}],"permalink":"/api/types/interface/ToolchainConfig","previousId":534,"nextId":639},{"id":639,"name":"TypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":640,"name":"createMissingConfig","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":122,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":641,"name":"projectConfigFileName","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":124,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":642,"name":"rootConfigFileName","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":126,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":643,"name":"rootOptionsConfigFileName","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.options.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":128,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":644,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":129,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":645,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":131,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":646,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":132,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[640,641,642,643,644,645,646]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":120,"character":17}],"permalink":"/api/types/interface/TypeScriptConfig","previousId":647,"nextId":738},{"id":738,"name":"VcsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":739,"name":"defaultBranch","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'master\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":120,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":740,"name":"hooks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":121,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":741,"name":"manager","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":122,"character":4}],"type":{"type":"literal","value":"git"}},{"id":742,"name":"provider","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":123,"character":4}],"type":{"type":"reference","id":687,"name":"VcsProvider"}},{"id":743,"name":"remoteCandidates","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":124,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":744,"name":"syncHooks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":125,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[739,740,741,742,743,744]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":118,"character":17}],"permalink":"/api/types/interface/VcsConfig","previousId":639,"nextId":71},{"id":71,"name":"WebhookPayload","kind":256,"kindString":"Interface","flags":{},"children":[{"id":72,"name":"createdAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":17,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L17"}],"type":{"type":"intrinsic","name":"string"}},{"id":73,"name":"environment","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":18,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L18"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":62,"name":"ProviderEnvironment"}]}},{"id":74,"name":"event","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":19,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L19"}],"type":{"type":"reference","id":78,"name":"E"}},{"id":75,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":20,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L20"}],"type":{"type":"reference","id":77,"name":"T"}},{"id":76,"name":"uuid","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":21,"character":1,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L21"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[72,73,74,75,76]}],"sources":[{"fileName":"types/src/events.ts","line":16,"character":17,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L16"}],"typeParameters":[{"id":77,"name":"T","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","id":79,"name":"EventType"}},{"id":78,"name":"E","kind":131072,"kindString":"Type parameter","flags":{}}],"permalink":"/api/types/interface/WebhookPayload","previousId":738,"nextId":745},{"id":745,"name":"WorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":746,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/workspace.json\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":129,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":747,"name":"codeowners","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":130,"character":4}],"type":{"type":"reference","id":709,"name":"CodeownersConfig"}},{"id":748,"name":"constraints","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":131,"character":4}],"type":{"type":"reference","id":713,"name":"ConstraintsConfig"}},{"id":749,"name":"experiments","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":132,"character":4}],"type":{"type":"reference","id":716,"name":"ExperimentsConfig"}},{"id":750,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":133,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":751,"name":"generator","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":134,"character":4}],"type":{"type":"reference","id":718,"name":"GeneratorConfig"}},{"id":752,"name":"hasher","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":135,"character":4}],"type":{"type":"reference","id":720,"name":"HasherConfig"}},{"id":753,"name":"notifier","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":136,"character":4}],"type":{"type":"reference","id":727,"name":"NotifierConfig"}},{"id":754,"name":"projects","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":137,"character":4}],"type":{"type":"reference","id":732,"name":"WorkspaceProjects"}},{"id":755,"name":"runner","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":138,"character":4}],"type":{"type":"reference","id":733,"name":"RunnerConfig"}},{"id":756,"name":"telemetry","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":140,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":757,"name":"vcs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":141,"character":4}],"type":{"type":"reference","id":738,"name":"VcsConfig"}},{"id":758,"name":"versionConstraint","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":142,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[746,747,748,749,750,751,752,753,754,755,756,757,758]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":127,"character":17}],"permalink":"/api/types/interface/WorkspaceConfig","previousId":71,"nextId":729},{"id":729,"name":"WorkspaceProjectsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":730,"name":"globs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":106,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":731,"name":"sources","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":107,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[730,731]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":105,"character":17}],"permalink":"/api/types/interface/WorkspaceProjectsConfig","previousId":745,"nextId":618},{"id":618,"name":"YarnConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":619,"name":"plugins","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":94,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":620,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":95,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[619,620]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":93,"character":17}],"permalink":"/api/types/interface/YarnConfig","previousId":729,"nextId":219},{"id":219,"name":"ActionNode","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":54,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":220,"name":"ActionNodeInstallDeps"},{"type":"reference","id":223,"name":"ActionNodeInstallProjectDeps"},{"type":"reference","id":229,"name":"ActionNodeRunPersistentTarget"},{"type":"reference","id":226,"name":"ActionNodeRunTarget"},{"type":"reference","id":232,"name":"ActionNodeSetupTool"},{"type":"reference","id":235,"name":"ActionNodeSyncProject"}]},"permalink":"/api/types#ActionNode","previousId":618,"nextId":172},{"id":172,"name":"ActionStatus","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":2,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"cached-from-remote"},{"type":"literal","value":"cached"},{"type":"literal","value":"failed-and-abort"},{"type":"literal","value":"failed"},{"type":"literal","value":"invalid"},{"type":"literal","value":"passed"},{"type":"literal","value":"running"},{"type":"literal","value":"skipped"}]},"permalink":"/api/types#ActionStatus","previousId":219,"nextId":609},{"id":609,"name":"BinEntry","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":80,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":604,"name":"BinConfig"}]},"permalink":"/api/types#BinEntry","previousId":172,"nextId":654},{"id":654,"name":"CodeownersOrderBy","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":1,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"file-source"},{"type":"literal","value":"project-name"}]},"permalink":"/api/types#CodeownersOrderBy","previousId":609,"nextId":292},{"id":292,"name":"DependencyScope","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":2,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"build"},{"type":"literal","value":"development"},{"type":"literal","value":"peer"},{"type":"literal","value":"production"}]},"permalink":"/api/types#DependencyScope","previousId":654,"nextId":293},{"id":293,"name":"DependencySource","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":3,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"explicit"},{"type":"literal","value":"implicit"}]},"permalink":"/api/types#DependencySource","previousId":292,"nextId":79},{"id":79,"name":"EventType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":24,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L24"}],"type":{"type":"union","types":[{"type":"literal","value":"action.finished"},{"type":"literal","value":"action.started"},{"type":"literal","value":"dependencies.installed"},{"type":"literal","value":"dependencies.installing"},{"type":"literal","value":"pipeline.aborted"},{"type":"literal","value":"pipeline.finished"},{"type":"literal","value":"pipeline.started"},{"type":"literal","value":"project.synced"},{"type":"literal","value":"project.syncing"},{"type":"literal","value":"target-output.archived"},{"type":"literal","value":"target-output.archiving"},{"type":"literal","value":"target-output.cache-check"},{"type":"literal","value":"target-output.hydrated"},{"type":"literal","value":"target-output.hydrating"},{"type":"literal","value":"target.ran"},{"type":"literal","value":"target.running"},{"type":"literal","value":"tool.installed"},{"type":"literal","value":"tool.installing"},{"type":"literal","value":"workspace.synced"},{"type":"literal","value":"workspace.syncing"}]},"permalink":"/api/types#EventType","previousId":293,"nextId":666},{"id":666,"name":"HasherOptimization","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":19,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"accuracy"},{"type":"literal","value":"performance"}]},"permalink":"/api/types#HasherOptimization","previousId":79,"nextId":667},{"id":667,"name":"HasherWalkStrategy","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":20,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"glob"},{"type":"literal","value":"vcs"}]},"permalink":"/api/types#HasherWalkStrategy","previousId":666,"nextId":300},{"id":300,"name":"LanguageType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":11,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"bash"},{"type":"literal","value":"batch"},{"type":"literal","value":"go"},{"type":"literal","value":"javascript"},{"type":"literal","value":"php"},{"type":"literal","value":"python"},{"type":"literal","value":"ruby"},{"type":"literal","value":"rust"},{"type":"literal","value":"typescript"},{"type":"literal","value":"unknown"}]},"permalink":"/api/types#LanguageType","previousId":667,"nextId":564},{"id":564,"name":"NodePackageManager","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":19,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"npm"},{"type":"literal","value":"pnpm"},{"type":"literal","value":"yarn"}]},"permalink":"/api/types#NodePackageManager","previousId":300,"nextId":560},{"id":560,"name":"NodeProjectAliasFormat","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":14,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"name-and-scope"},{"type":"literal","value":"name-only"}]},"permalink":"/api/types#NodeProjectAliasFormat","previousId":564,"nextId":561},{"id":561,"name":"NodeVersionFormat","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":15,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"file"},{"type":"literal","value":"link"},{"type":"literal","value":"star"},{"type":"literal","value":"version"},{"type":"literal","value":"version-caret"},{"type":"literal","value":"version-tilde"},{"type":"literal","value":"workspace"},{"type":"literal","value":"workspace-caret"},{"type":"literal","value":"workspace-tilde"}]},"permalink":"/api/types#NodeVersionFormat","previousId":560,"nextId":567},{"id":567,"name":"NodeVersionManager","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":23,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"nodenv"},{"type":"literal","value":"nvm"}]},"permalink":"/api/types#NodeVersionManager","previousId":561,"nextId":54},{"id":54,"name":"Nullable","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/common.ts","line":3,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/common.ts#L3"}],"typeParameters":[{"id":55,"name":"T","kind":131072,"kindString":"Type parameter","flags":{}}],"type":{"type":"mapped","parameter":"K","parameterType":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","id":55,"name":"T"}},"templateType":{"type":"union","types":[{"type":"indexedAccess","indexType":{"type":"reference","name":"K"},"objectType":{"type":"reference","id":55,"name":"T"}},{"type":"literal","value":null}]}},"permalink":"/api/types#Nullable","previousId":567,"nextId":352},{"id":352,"name":"OwnersPaths","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":74,"character":12}],"type":{"type":"union","types":[{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#OwnersPaths","previousId":54,"nextId":555},{"id":555,"name":"PartialBinEntry","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":7,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":550,"name":"PartialBinConfig"}]},"permalink":"/api/types#PartialBinEntry","previousId":352,"nextId":301},{"id":301,"name":"PartialOwnersPaths","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":12,"character":12}],"type":{"type":"union","types":[{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#PartialOwnersPaths","previousId":555,"nextId":299},{"id":299,"name":"PartialProjectDependsOn","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":10,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":294,"name":"PartialDependencyConfig"}]},"permalink":"/api/types#PartialProjectDependsOn","previousId":301,"nextId":396},{"id":396,"name":"PartialTaskCommandArgs","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":1,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]},"permalink":"/api/types#PartialTaskCommandArgs","previousId":299,"nextId":503},{"id":503,"name":"PartialTemplateVariable","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":31,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":478,"name":"PartialTemplateVariableBoolSetting"},{"type":"reference","id":487,"name":"PartialTemplateVariableEnumSetting"},{"type":"reference","id":493,"name":"PartialTemplateVariableNumberSetting"},{"type":"reference","id":498,"name":"PartialTemplateVariableStringSetting"}]},"permalink":"/api/types#PartialTemplateVariable","previousId":396,"nextId":486},{"id":486,"name":"PartialTemplateVariableEnumValue","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":11,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":483,"name":"PartialTemplateVariableEnumValueConfig"}]},"permalink":"/api/types#PartialTemplateVariableEnumValue","previousId":503,"nextId":680},{"id":680,"name":"PartialWorkspaceProjects","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":38,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":677,"name":"PartialWorkspaceProjectsConfig"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#PartialWorkspaceProjects","previousId":486,"nextId":88},{"id":88,"name":"PayloadActionFinished","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":59,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L59"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"action.finished"},{"type":"reference","id":84,"name":"EventActionFinished"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadActionFinished","previousId":680,"nextId":83},{"id":83,"name":"PayloadActionStarted","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":51,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L51"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"action.started"},{"type":"reference","id":80,"name":"EventActionStarted"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadActionStarted","previousId":88,"nextId":97},{"id":97,"name":"PayloadDependenciesInstalled","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":77,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L77"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"dependencies.installed"},{"type":"reference","id":93,"name":"EventDependenciesInstalled"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadDependenciesInstalled","previousId":83,"nextId":92},{"id":92,"name":"PayloadDependenciesInstalling","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":66,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L66"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"dependencies.installing"},{"type":"reference","id":89,"name":"EventDependenciesInstalling"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadDependenciesInstalling","previousId":97,"nextId":109},{"id":109,"name":"PayloadPipelineAborted","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":101,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L101"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"pipeline.aborted"},{"type":"reference","id":107,"name":"EventPipelineAborted"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadPipelineAborted","previousId":92,"nextId":122},{"id":122,"name":"PayloadPipelineFinished","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":120,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L120"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"pipeline.finished"},{"type":"reference","id":114,"name":"EventPipelineFinished"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadPipelineFinished","previousId":109,"nextId":113},{"id":113,"name":"PayloadPipelineStarted","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":108,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L108"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"pipeline.started"},{"type":"reference","id":110,"name":"EventPipelineStarted"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadPipelineStarted","previousId":122,"nextId":106},{"id":106,"name":"PayloadProjectSynced","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":95,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L95"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"project.synced"},{"type":"reference","id":102,"name":"EventProjectSynced"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadProjectSynced","previousId":113,"nextId":101},{"id":101,"name":"PayloadProjectSyncing","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":87,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L87"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"project.syncing"},{"type":"reference","id":98,"name":"EventProjectSyncing"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadProjectSyncing","previousId":106,"nextId":142},{"id":142,"name":"PayloadTargetOutputArchived","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":155,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L155"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.archived"},{"type":"reference","id":136,"name":"EventTargetOutputArchived"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputArchived","previousId":101,"nextId":135},{"id":135,"name":"PayloadTargetOutputArchiving","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":142,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L142"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.archiving"},{"type":"reference","id":130,"name":"EventTargetOutputArchiving"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputArchiving","previousId":142,"nextId":159},{"id":159,"name":"PayloadTargetOutputCacheCheck","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":190,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L190"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.cache-check"},{"type":"reference","id":156,"name":"EventTargetOutputCacheCheck"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputCacheCheck","previousId":135,"nextId":155},{"id":155,"name":"PayloadTargetOutputHydrated","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":180,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L180"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.hydrated"},{"type":"reference","id":149,"name":"EventTargetOutputHydrated"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputHydrated","previousId":159,"nextId":148},{"id":148,"name":"PayloadTargetOutputHydrating","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":167,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L167"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.hydrating"},{"type":"reference","id":143,"name":"EventTargetOutputHydrating"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputHydrating","previousId":155,"nextId":129},{"id":129,"name":"PayloadTargetRan","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":133,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L133"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target.ran"},{"type":"reference","id":126,"name":"EventTargetRan"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetRan","previousId":148,"nextId":125},{"id":125,"name":"PayloadTargetRunning","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":126,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L126"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target.running"},{"type":"reference","id":123,"name":"EventTargetRunning"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetRunning","previousId":129,"nextId":166},{"id":166,"name":"PayloadToolInstalled","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":206,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L206"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"tool.installed"},{"type":"reference","id":163,"name":"EventToolInstalled"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadToolInstalled","previousId":125,"nextId":162},{"id":162,"name":"PayloadToolInstalling","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":199,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L199"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"tool.installing"},{"type":"reference","id":160,"name":"EventToolInstalling"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadToolInstalling","previousId":166,"nextId":171},{"id":171,"name":"PayloadWorkspaceSynced","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":214,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L214"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"workspace.synced"},{"type":"reference","id":169,"name":"EventWorkspaceSynced"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadWorkspaceSynced","previousId":162,"nextId":167},{"id":167,"name":"PayloadWorkspaceSyncing","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":208,"character":12,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L208"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"workspace.syncing"},{"type":"reflection","declaration":{"id":168,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"sources":[{"fileName":"types/src/events.ts","line":208,"character":74,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/events.ts#L208"}]}}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadWorkspaceSyncing","previousId":171,"nextId":419},{"id":419,"name":"PlatformType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":25,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"deno"},{"type":"literal","value":"node"},{"type":"literal","value":"rust"},{"type":"literal","value":"system"},{"type":"literal","value":"unknown"}]},"permalink":"/api/types#PlatformType","previousId":167,"nextId":351},{"id":351,"name":"ProjectDependsOn","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":73,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":346,"name":"DependencyConfig"}]},"permalink":"/api/types#ProjectDependsOn","previousId":419,"nextId":325},{"id":325,"name":"ProjectType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":42,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"application"},{"type":"literal","value":"library"},{"type":"literal","value":"tool"},{"type":"literal","value":"unknown"}]},"permalink":"/api/types#ProjectType","previousId":351,"nextId":440},{"id":440,"name":"TaskCommandArgs","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":49,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]},"permalink":"/api/types#TaskCommandArgs","previousId":325,"nextId":399},{"id":399,"name":"TaskMergeStrategy","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":4,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"append"},{"type":"literal","value":"prepend"},{"type":"literal","value":"replace"}]},"permalink":"/api/types#TaskMergeStrategy","previousId":440,"nextId":397},{"id":397,"name":"TaskOptionAffectedFiles","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":2,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"literal","value":"args"},{"type":"literal","value":"env"}]},"permalink":"/api/types#TaskOptionAffectedFiles","previousId":399,"nextId":398},{"id":398,"name":"TaskOptionEnvFile","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":3,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"intrinsic","name":"string"}]},"permalink":"/api/types#TaskOptionEnvFile","previousId":397,"nextId":400},{"id":400,"name":"TaskOutputStyle","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":5,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"buffer"},{"type":"literal","value":"buffer-only-failure"},{"type":"literal","value":"hash"},{"type":"literal","value":"none"},{"type":"literal","value":"stream"}]},"permalink":"/api/types#TaskOutputStyle","previousId":398,"nextId":420},{"id":420,"name":"TaskType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":26,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"build"},{"type":"literal","value":"run"},{"type":"literal","value":"test"}]},"permalink":"/api/types#TaskType","previousId":400,"nextId":539},{"id":539,"name":"TemplateVariable","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":76,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":514,"name":"TemplateVariableBoolSetting"},{"type":"reference","id":523,"name":"TemplateVariableEnumSetting"},{"type":"reference","id":529,"name":"TemplateVariableNumberSetting"},{"type":"reference","id":534,"name":"TemplateVariableStringSetting"}]},"permalink":"/api/types#TemplateVariable","previousId":420,"nextId":522},{"id":522,"name":"TemplateVariableEnumValue","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":56,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":519,"name":"TemplateVariableEnumValueConfig"}]},"permalink":"/api/types#TemplateVariableEnumValue","previousId":539,"nextId":686},{"id":686,"name":"VcsManager","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":47,"character":12}],"type":{"type":"literal","value":"git"},"permalink":"/api/types#VcsManager","previousId":522,"nextId":687},{"id":687,"name":"VcsProvider","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":48,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"bitbucket"},{"type":"literal","value":"github"},{"type":"literal","value":"gitlab"},{"type":"literal","value":"other"}]},"permalink":"/api/types#VcsProvider","previousId":686,"nextId":732},{"id":732,"name":"WorkspaceProjects","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":109,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":729,"name":"WorkspaceProjectsConfig"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#WorkspaceProjects","previousId":687}],"groups":[{"title":"Interfaces","children":[179,193,220,223,229,226,232,235,173,604,709,713,610,346,56,84,80,93,89,107,114,110,102,98,136,130,156,149,143,126,123,163,160,169,716,238,718,720,471,621,727,614,353,550,655,659,556,294,662,664,668,433,571,675,562,302,565,332,308,314,321,316,330,326,681,585,421,401,504,509,478,487,483,493,498,597,589,688,695,677,568,616,275,382,359,365,372,367,380,376,62,203,733,59,635,190,258,459,242,441,540,545,514,523,519,529,534,647,639,738,71,745,729,618]},{"title":"Type Aliases","children":[219,172,609,654,292,293,79,666,667,300,564,560,561,567,54,352,555,301,299,396,503,486,680,88,83,97,92,109,122,113,106,101,142,135,159,155,148,129,125,166,162,171,167,419,351,325,440,399,397,398,400,420,539,522,686,687,732]}],"sources":[{"fileName":"types/src/index.ts","line":1,"character":0,"url":"https://github.com/moonrepo/moon/blob/ef50c03/packages/types/src/index.ts#L1"}],"permalink":"/api/types"},"urlSlug":"types"}],"packageName":"@moonrepo/types","packageVersion":"1.6.0"}]')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7451],{457:e=>{e.exports=JSON.parse('[{"entryPoints":[{"index":true,"label":"Index","reflection":{"id":1,"name":"@moonrepo/report","kind":2,"kindString":"Module","flags":{},"children":[{"id":29,"name":"PreparedAction","kind":256,"kindString":"Interface","flags":{},"children":[{"id":30,"name":"comments","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":4,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":31,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","name":"Duration"}]}},{"id":32,"name":"icon","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":6,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":33,"name":"label","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":7,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":34,"name":"status","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":8,"character":4}],"type":{"type":"reference","name":"ActionStatus"}},{"id":35,"name":"time","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":9,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[30,31,32,33,34,35]}],"sources":[{"fileName":"report/cjs/report.d.ts","line":3,"character":17}],"permalink":"/api/report/interface/PreparedAction","previousId":20},{"id":44,"name":"formatDuration","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/time.d.ts","line":4,"character":24}],"signatures":[{"id":45,"name":"formatDuration","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":46,"name":"duration","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","name":"Duration"}]}}],"type":{"type":"intrinsic","name":"string"}}],"permalink":"/api/report/function/formatDuration","nextId":39},{"id":39,"name":"formatTime","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/time.d.ts","line":3,"character":24}],"signatures":[{"id":40,"name":"formatTime","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":41,"name":"mins","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}},{"id":42,"name":"secs","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}},{"id":43,"name":"millis","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"string"}}],"permalink":"/api/report/function/formatTime","previousId":44,"nextId":36},{"id":36,"name":"getDurationInMillis","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/time.d.ts","line":2,"character":24}],"signatures":[{"id":37,"name":"getDurationInMillis","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":38,"name":"duration","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Duration"}}],"type":{"type":"intrinsic","name":"number"}}],"permalink":"/api/report/function/getDurationInMillis","previousId":39,"nextId":4},{"id":4,"name":"getIconForStatus","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":4,"character":16,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/report/src/action.ts#L4"}],"signatures":[{"id":5,"name":"getIconForStatus","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":6,"name":"status","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"ActionStatus"}}],"type":{"type":"intrinsic","name":"string"}}],"permalink":"/api/report/function/getIconForStatus","previousId":36,"nextId":7},{"id":7,"name":"hasFailed","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":27,"character":16,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/report/src/action.ts#L27"}],"signatures":[{"id":8,"name":"hasFailed","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":9,"name":"status","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"ActionStatus"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/hasFailed","previousId":4,"nextId":10},{"id":10,"name":"hasPassed","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":31,"character":16,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/report/src/action.ts#L31"}],"signatures":[{"id":11,"name":"hasPassed","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":12,"name":"status","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"ActionStatus"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/hasPassed","previousId":7,"nextId":13},{"id":13,"name":"isFlaky","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":35,"character":16,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/report/src/action.ts#L35"}],"signatures":[{"id":14,"name":"isFlaky","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":15,"name":"action","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Action"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/isFlaky","previousId":10,"nextId":16},{"id":16,"name":"isSlow","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/src/action.ts","line":48,"character":16,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/report/src/action.ts#L48"}],"signatures":[{"id":17,"name":"isSlow","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":18,"name":"action","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"Action"}},{"id":19,"name":"slowThreshold","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"intrinsic","name":"boolean"}}],"permalink":"/api/report/function/isSlow","previousId":13,"nextId":25},{"id":25,"name":"prepareReportActions","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":11,"character":24}],"signatures":[{"id":26,"name":"prepareReportActions","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":27,"name":"report","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"RunReport"}},{"id":28,"name":"slowThreshold","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"intrinsic","name":"number"}}],"type":{"type":"array","elementType":{"type":"reference","id":29,"name":"PreparedAction"}}}],"permalink":"/api/report/function/prepareReportActions","previousId":16,"nextId":20},{"id":20,"name":"sortReport","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"report/cjs/report.d.ts","line":2,"character":24}],"signatures":[{"id":21,"name":"sortReport","kind":4096,"kindString":"Call signature","flags":{},"parameters":[{"id":22,"name":"report","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"reference","name":"RunReport"}},{"id":23,"name":"sortBy","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"union","types":[{"type":"literal","value":"label"},{"type":"literal","value":"time"}]}},{"id":24,"name":"sortDir","kind":32768,"kindString":"Parameter","flags":{},"type":{"type":"union","types":[{"type":"literal","value":"asc"},{"type":"literal","value":"desc"}]}}],"type":{"type":"intrinsic","name":"void"}}],"permalink":"/api/report/function/sortReport","previousId":25,"nextId":29}],"groups":[{"title":"Functions","children":[44,39,36,4,7,10,13,16,25,20]},{"title":"Interfaces","children":[29]}],"sources":[{"fileName":"report/src/index.ts","line":1,"character":0,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/report/src/index.ts#L1"}],"permalink":"/api/report"},"urlSlug":"report"}],"packageName":"@moonrepo/report","packageVersion":"1.0.4"},{"entryPoints":[{"index":true,"label":"Index","reflection":{"id":2,"name":"@moonrepo/runtime","kind":2,"kindString":"Module","flags":{},"children":[{"id":49,"name":"RuntimeContext","kind":256,"kindString":"Interface","flags":{},"children":[{"id":50,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":6,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/context.ts#L6"}],"type":{"type":"reference","name":"Project"}},{"id":51,"name":"projectRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":7,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/context.ts#L7"}],"type":{"type":"reference","name":"Path","qualifiedName":"Path","package":"@boost/common"}},{"id":52,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":8,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/context.ts#L8"}],"type":{"type":"intrinsic","name":"string"}},{"id":53,"name":"workspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":9,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/context.ts#L9"}],"type":{"type":"reference","name":"Path","qualifiedName":"Path","package":"@boost/common"}}],"groups":[{"title":"Properties","children":[50,51,52,53]}],"sources":[{"fileName":"runtime/src/context.ts","line":5,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/context.ts#L5"}],"permalink":"/api/runtime/interface/RuntimeContext","previousId":47},{"id":47,"name":"getContext","kind":64,"kindString":"Function","flags":{},"sources":[{"fileName":"runtime/src/context.ts","line":12,"character":22,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/context.ts#L12"}],"signatures":[{"id":48,"name":"getContext","kind":4096,"kindString":"Call signature","flags":{},"type":{"type":"reference","typeArguments":[{"type":"reference","id":49,"name":"RuntimeContext"}],"name":"Promise","qualifiedName":"Promise","package":"typescript"}}],"permalink":"/api/runtime/function/getContext","nextId":49}],"groups":[{"title":"Functions","children":[47]},{"title":"Interfaces","children":[49]}],"sources":[{"fileName":"runtime/src/index.ts","line":1,"character":0,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/runtime/src/index.ts#L1"}],"permalink":"/api/runtime"},"urlSlug":"runtime"}],"packageName":"@moonrepo/runtime","packageVersion":"0.0.14"},{"entryPoints":[{"index":true,"label":"Index","reflection":{"id":3,"name":"@moonrepo/types","kind":2,"kindString":"Module","flags":{},"children":[{"id":179,"name":"Action","kind":256,"kindString":"Interface","flags":{},"children":[{"id":180,"name":"attempts","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":173,"name":"Attempt"}}]}},{"id":181,"name":"createdAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":12,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":182,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":13,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":183,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":184,"name":"finishedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":185,"name":"flaky","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":16,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":186,"name":"label","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":187,"name":"nodeIndex","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":18,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":188,"name":"startedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":19,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":189,"name":"status","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":20,"character":4}],"type":{"type":"reference","id":172,"name":"ActionStatus"}}],"groups":[{"title":"Properties","children":[180,181,182,183,184,185,186,187,188,189]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":10,"character":17}],"permalink":"/api/types/interface/Action","nextId":193},{"id":193,"name":"ActionContext","kind":256,"kindString":"Interface","flags":{},"children":[{"id":194,"name":"affectedOnly","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":27,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":195,"name":"initialTargets","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":28,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":196,"name":"interactive","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":29,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":197,"name":"passthroughArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":30,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":198,"name":"primaryTargets","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":31,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":199,"name":"profile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"cpu"},{"type":"literal","value":"heap"}]}},{"id":200,"name":"targetStates","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":33,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":190,"name":"TargetState"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":201,"name":"touchedFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":34,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":202,"name":"workspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":35,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[194,195,196,197,198,199,200,201,202]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":26,"character":17}],"permalink":"/api/types/interface/ActionContext","previousId":179,"nextId":220},{"id":220,"name":"ActionNodeInstallDeps","kind":256,"kindString":"Interface","flags":{},"children":[{"id":221,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":56,"character":4}],"type":{"type":"literal","value":"InstallDeps"}},{"id":222,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":57,"character":4}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[221,222]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":55,"character":17}],"permalink":"/api/types/interface/ActionNodeInstallDeps","previousId":193,"nextId":223},{"id":223,"name":"ActionNodeInstallProjectDeps","kind":256,"kindString":"Interface","flags":{},"children":[{"id":224,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":60,"character":4}],"type":{"type":"literal","value":"InstallProjectDeps"}},{"id":225,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":61,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[224,225]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":59,"character":17}],"permalink":"/api/types/interface/ActionNodeInstallProjectDeps","previousId":220,"nextId":229},{"id":229,"name":"ActionNodeRunPersistentTarget","kind":256,"kindString":"Interface","flags":{},"children":[{"id":230,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":68,"character":4}],"type":{"type":"literal","value":"RunPersistentTarget"}},{"id":231,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":69,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[230,231]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":67,"character":17}],"permalink":"/api/types/interface/ActionNodeRunPersistentTarget","previousId":223,"nextId":226},{"id":226,"name":"ActionNodeRunTarget","kind":256,"kindString":"Interface","flags":{},"children":[{"id":227,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":64,"character":4}],"type":{"type":"literal","value":"RunTarget"}},{"id":228,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":65,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[227,228]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":63,"character":17}],"permalink":"/api/types/interface/ActionNodeRunTarget","previousId":229,"nextId":232},{"id":232,"name":"ActionNodeSetupTool","kind":256,"kindString":"Interface","flags":{},"children":[{"id":233,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":72,"character":4}],"type":{"type":"literal","value":"SetupTool"}},{"id":234,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":73,"character":4}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[233,234]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":71,"character":17}],"permalink":"/api/types/interface/ActionNodeSetupTool","previousId":226,"nextId":235},{"id":235,"name":"ActionNodeSyncProject","kind":256,"kindString":"Interface","flags":{},"children":[{"id":236,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":76,"character":4}],"type":{"type":"literal","value":"SyncProject"}},{"id":237,"name":"params","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":77,"character":4}],"type":{"type":"tuple","elements":[{"type":"reference","id":59,"name":"Runtime"},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[236,237]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":75,"character":17}],"permalink":"/api/types/interface/ActionNodeSyncProject","previousId":232,"nextId":173},{"id":173,"name":"Attempt","kind":256,"kindString":"Interface","flags":{},"children":[{"id":174,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":175,"name":"finishedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":176,"name":"index","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":6,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":177,"name":"startedAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":7,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":178,"name":"status","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":8,"character":4}],"type":{"type":"reference","id":172,"name":"ActionStatus"}}],"groups":[{"title":"Properties","children":[174,175,176,177,178]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":3,"character":17}],"permalink":"/api/types/interface/Attempt","previousId":235,"nextId":604},{"id":604,"name":"BinConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":605,"name":"bin","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":75,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":606,"name":"force","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":76,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":607,"name":"local","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":77,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":608,"name":"name","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":78,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[605,606,607,608]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":74,"character":17}],"permalink":"/api/types/interface/BinConfig","previousId":173,"nextId":709},{"id":709,"name":"CodeownersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":710,"name":"globalPaths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":76,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":711,"name":"orderBy","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":77,"character":4}],"type":{"type":"reference","id":654,"name":"CodeownersOrderBy"}},{"id":712,"name":"syncOnRun","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":78,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[710,711,712]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":75,"character":17}],"permalink":"/api/types/interface/CodeownersConfig","previousId":604,"nextId":713},{"id":713,"name":"ConstraintsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":714,"name":"enforceProjectTypeRelationships","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":82,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":715,"name":"tagRelationships","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":83,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[714,715]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":80,"character":17}],"permalink":"/api/types/interface/ConstraintsConfig","previousId":709,"nextId":610},{"id":610,"name":"DenoConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":611,"name":"bins","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":82,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":609,"name":"BinEntry"}}},{"id":612,"name":"depsFile","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'deps.ts\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":84,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":613,"name":"lockfile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":85,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[611,612,613]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":81,"character":17}],"permalink":"/api/types/interface/DenoConfig","previousId":713,"nextId":346},{"id":346,"name":"DependencyConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":347,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":68,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":348,"name":"scope","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":69,"character":4}],"type":{"type":"reference","id":292,"name":"DependencyScope"}},{"id":349,"name":"source","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":70,"character":4}],"type":{"type":"reference","id":293,"name":"DependencySource"}},{"id":350,"name":"via","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":71,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[347,348,349,350]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":67,"character":17}],"permalink":"/api/types/interface/DependencyConfig","previousId":610,"nextId":56},{"id":56,"name":"Duration","kind":256,"kindString":"Interface","flags":{},"children":[{"id":58,"name":"nanos","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/common.ts","line":7,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L7"}],"type":{"type":"intrinsic","name":"number"}},{"id":57,"name":"secs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/common.ts","line":6,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L6"}],"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[58,57]}],"sources":[{"fileName":"types/src/common.ts","line":5,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L5"}],"permalink":"/api/types/interface/Duration","previousId":346,"nextId":84},{"id":84,"name":"EventActionFinished","kind":256,"kindString":"Interface","flags":{},"children":[{"id":85,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":54,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L54"}],"type":{"type":"reference","id":179,"name":"Action"}},{"id":86,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":55,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L55"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":87,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":56,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L56"}],"type":{"type":"reference","id":219,"name":"ActionNode"}}],"groups":[{"title":"Properties","children":[85,86,87]}],"sources":[{"fileName":"types/src/events.ts","line":53,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L53"}],"permalink":"/api/types/interface/EventActionFinished","previousId":56,"nextId":80},{"id":80,"name":"EventActionStarted","kind":256,"kindString":"Interface","flags":{},"children":[{"id":81,"name":"action","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":47,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L47"}],"type":{"type":"reference","id":179,"name":"Action"}},{"id":82,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":48,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L48"}],"type":{"type":"reference","id":219,"name":"ActionNode"}}],"groups":[{"title":"Properties","children":[81,82]}],"sources":[{"fileName":"types/src/events.ts","line":46,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L46"}],"permalink":"/api/types/interface/EventActionStarted","previousId":84,"nextId":93},{"id":93,"name":"EventDependenciesInstalled","kind":256,"kindString":"Interface","flags":{},"children":[{"id":94,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":72,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L72"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":95,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":73,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L73"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":275,"name":"Project"}]}},{"id":96,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":74,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L74"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[94,95,96]}],"sources":[{"fileName":"types/src/events.ts","line":71,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L71"}],"permalink":"/api/types/interface/EventDependenciesInstalled","previousId":80,"nextId":89},{"id":89,"name":"EventDependenciesInstalling","kind":256,"kindString":"Interface","flags":{},"children":[{"id":90,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":62,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L62"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":275,"name":"Project"}]}},{"id":91,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":63,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L63"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[90,91]}],"sources":[{"fileName":"types/src/events.ts","line":61,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L61"}],"permalink":"/api/types/interface/EventDependenciesInstalling","previousId":93,"nextId":107},{"id":107,"name":"EventPipelineAborted","kind":256,"kindString":"Interface","flags":{},"children":[{"id":108,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":98,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L98"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[108]}],"sources":[{"fileName":"types/src/events.ts","line":97,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L97"}],"permalink":"/api/types/interface/EventPipelineAborted","previousId":89,"nextId":114},{"id":114,"name":"EventPipelineFinished","kind":256,"kindString":"Interface","flags":{},"children":[{"id":115,"name":"baselineDuration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":111,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L111"}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":116,"name":"cachedCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":112,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L112"}],"type":{"type":"intrinsic","name":"number"}},{"id":117,"name":"context","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":113,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L113"}],"type":{"type":"reference","id":193,"name":"ActionContext"}},{"id":118,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":114,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L114"}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":119,"name":"estimatedSavings","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":115,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L115"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":120,"name":"failedCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":116,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L116"}],"type":{"type":"intrinsic","name":"number"}},{"id":121,"name":"passedCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":117,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L117"}],"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[115,116,117,118,119,120,121]}],"sources":[{"fileName":"types/src/events.ts","line":110,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L110"}],"permalink":"/api/types/interface/EventPipelineFinished","previousId":107,"nextId":110},{"id":110,"name":"EventPipelineStarted","kind":256,"kindString":"Interface","flags":{},"children":[{"id":111,"name":"actionsCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":104,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L104"}],"type":{"type":"intrinsic","name":"number"}},{"id":112,"name":"context","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":105,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L105"}],"type":{"type":"reference","id":193,"name":"ActionContext"}}],"groups":[{"title":"Properties","children":[111,112]}],"sources":[{"fileName":"types/src/events.ts","line":103,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L103"}],"permalink":"/api/types/interface/EventPipelineStarted","previousId":114,"nextId":102},{"id":102,"name":"EventProjectSynced","kind":256,"kindString":"Interface","flags":{},"children":[{"id":103,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":90,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L90"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":104,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":91,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L91"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":105,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":92,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L92"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[103,104,105]}],"sources":[{"fileName":"types/src/events.ts","line":89,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L89"}],"permalink":"/api/types/interface/EventProjectSynced","previousId":110,"nextId":98},{"id":98,"name":"EventProjectSyncing","kind":256,"kindString":"Interface","flags":{},"children":[{"id":99,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":83,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L83"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":100,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":84,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L84"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[99,100]}],"sources":[{"fileName":"types/src/events.ts","line":82,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L82"}],"permalink":"/api/types/interface/EventProjectSyncing","previousId":102,"nextId":136},{"id":136,"name":"EventTargetOutputArchived","kind":256,"kindString":"Interface","flags":{},"children":[{"id":137,"name":"archivePath","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":148,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L148"}],"type":{"type":"intrinsic","name":"string"}},{"id":138,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":149,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L149"}],"type":{"type":"intrinsic","name":"string"}},{"id":139,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":150,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L150"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":140,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":151,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L151"}],"type":{"type":"intrinsic","name":"string"}},{"id":141,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":152,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L152"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[137,138,139,140,141]}],"sources":[{"fileName":"types/src/events.ts","line":147,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L147"}],"permalink":"/api/types/interface/EventTargetOutputArchived","previousId":98,"nextId":130},{"id":130,"name":"EventTargetOutputArchiving","kind":256,"kindString":"Interface","flags":{},"children":[{"id":131,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":136,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L136"}],"type":{"type":"intrinsic","name":"string"}},{"id":132,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":137,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L137"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":133,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":138,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L138"}],"type":{"type":"intrinsic","name":"string"}},{"id":134,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":139,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L139"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[131,132,133,134]}],"sources":[{"fileName":"types/src/events.ts","line":135,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L135"}],"permalink":"/api/types/interface/EventTargetOutputArchiving","previousId":136,"nextId":156},{"id":156,"name":"EventTargetOutputCacheCheck","kind":256,"kindString":"Interface","flags":{},"children":[{"id":157,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":186,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L186"}],"type":{"type":"intrinsic","name":"string"}},{"id":158,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":187,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L187"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[157,158]}],"sources":[{"fileName":"types/src/events.ts","line":185,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L185"}],"permalink":"/api/types/interface/EventTargetOutputCacheCheck","previousId":130,"nextId":149},{"id":149,"name":"EventTargetOutputHydrated","kind":256,"kindString":"Interface","flags":{},"children":[{"id":150,"name":"archivePath","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":173,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L173"}],"type":{"type":"intrinsic","name":"string"}},{"id":151,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":174,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L174"}],"type":{"type":"intrinsic","name":"string"}},{"id":152,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":175,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L175"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":153,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":176,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L176"}],"type":{"type":"intrinsic","name":"string"}},{"id":154,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":177,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L177"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[150,151,152,153,154]}],"sources":[{"fileName":"types/src/events.ts","line":172,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L172"}],"permalink":"/api/types/interface/EventTargetOutputHydrated","previousId":156,"nextId":143},{"id":143,"name":"EventTargetOutputHydrating","kind":256,"kindString":"Interface","flags":{},"children":[{"id":144,"name":"hash","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":161,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L161"}],"type":{"type":"intrinsic","name":"string"}},{"id":145,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":162,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L162"}],"type":{"type":"reference","id":275,"name":"Project"}},{"id":146,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":163,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L163"}],"type":{"type":"intrinsic","name":"string"}},{"id":147,"name":"task","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":164,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L164"}],"type":{"type":"reference","id":258,"name":"Task"}}],"groups":[{"title":"Properties","children":[144,145,146,147]}],"sources":[{"fileName":"types/src/events.ts","line":160,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L160"}],"permalink":"/api/types/interface/EventTargetOutputHydrating","previousId":149,"nextId":126},{"id":126,"name":"EventTargetRan","kind":256,"kindString":"Interface","flags":{},"children":[{"id":127,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":129,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L129"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":128,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":130,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L130"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[127,128]}],"sources":[{"fileName":"types/src/events.ts","line":128,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L128"}],"permalink":"/api/types/interface/EventTargetRan","previousId":143,"nextId":123},{"id":123,"name":"EventTargetRunning","kind":256,"kindString":"Interface","flags":{},"children":[{"id":124,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":123,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L123"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[124]}],"sources":[{"fileName":"types/src/events.ts","line":122,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L122"}],"permalink":"/api/types/interface/EventTargetRunning","previousId":126,"nextId":163},{"id":163,"name":"EventToolInstalled","kind":256,"kindString":"Interface","flags":{},"children":[{"id":164,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":202,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L202"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":165,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":203,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L203"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[164,165]}],"sources":[{"fileName":"types/src/events.ts","line":201,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L201"}],"permalink":"/api/types/interface/EventToolInstalled","previousId":123,"nextId":160},{"id":160,"name":"EventToolInstalling","kind":256,"kindString":"Interface","flags":{},"children":[{"id":161,"name":"runtime","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":196,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L196"}],"type":{"type":"reference","id":59,"name":"Runtime"}}],"groups":[{"title":"Properties","children":[161]}],"sources":[{"fileName":"types/src/events.ts","line":195,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L195"}],"permalink":"/api/types/interface/EventToolInstalling","previousId":163,"nextId":169},{"id":169,"name":"EventWorkspaceSynced","kind":256,"kindString":"Interface","flags":{},"children":[{"id":170,"name":"error","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":211,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L211"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[170]}],"sources":[{"fileName":"types/src/events.ts","line":210,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L210"}],"permalink":"/api/types/interface/EventWorkspaceSynced","previousId":160,"nextId":716},{"id":716,"name":"ExperimentsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":717,"name":"taskOutputBoundaries","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":87,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[717]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":85,"character":17}],"permalink":"/api/types/interface/ExperimentsConfig","previousId":169,"nextId":238},{"id":238,"name":"FileGroup","kind":256,"kindString":"Interface","flags":{},"children":[{"id":239,"name":"files","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":4,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":240,"name":"globs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":5,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":241,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":6,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[239,240,241]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":3,"character":17}],"permalink":"/api/types/interface/FileGroup","previousId":716,"nextId":718},{"id":718,"name":"GeneratorConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":719,"name":"templates","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":90,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}}],"groups":[{"title":"Properties","children":[719]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":89,"character":17}],"permalink":"/api/types/interface/GeneratorConfig","previousId":238,"nextId":720},{"id":720,"name":"HasherConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":721,"name":"batchSize","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"2500"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":94,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":722,"name":"ignoreMissingPatterns","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":95,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":723,"name":"ignorePatterns","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":96,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":724,"name":"optimization","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":97,"character":4}],"type":{"type":"reference","id":666,"name":"HasherOptimization"}},{"id":725,"name":"walkStrategy","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":98,"character":4}],"type":{"type":"reference","id":667,"name":"HasherWalkStrategy"}},{"id":726,"name":"warnOnMissingInputs","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":100,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[721,722,723,724,725,726]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":92,"character":17}],"permalink":"/api/types/interface/HasherConfig","previousId":718,"nextId":471},{"id":471,"name":"InheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":472,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/tasks.json\'"}]}]},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":84,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":473,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":85,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":474,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":86,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":475,"name":"implicitDeps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":87,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":476,"name":"implicitInputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":88,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":477,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":89,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":459,"name":"TaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[472,473,474,475,476,477]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":82,"character":17}],"permalink":"/api/types/interface/InheritedTasksConfig","previousId":720,"nextId":621},{"id":621,"name":"NodeConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":622,"name":"addEnginesConstraint","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":99,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":623,"name":"aliasPackageNames","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":100,"character":4}],"type":{"type":"reference","id":560,"name":"NodeProjectAliasFormat"}},{"id":624,"name":"binExecArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":101,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":625,"name":"dedupeOnLockfileChange","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":103,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":626,"name":"dependencyVersionFormat","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":104,"character":4}],"type":{"type":"reference","id":561,"name":"NodeVersionFormat"}},{"id":627,"name":"inferTasksFromScripts","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":105,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":628,"name":"npm","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":106,"character":4}],"type":{"type":"reference","id":614,"name":"NpmConfig"}},{"id":629,"name":"packageManager","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":107,"character":4}],"type":{"type":"reference","id":564,"name":"NodePackageManager"}},{"id":630,"name":"pnpm","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":108,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":616,"name":"PnpmConfig"}]}},{"id":631,"name":"syncProjectWorkspaceDependencies","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":110,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":632,"name":"syncVersionManagerConfig","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":111,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":567,"name":"NodeVersionManager"}]}},{"id":633,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":112,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":634,"name":"yarn","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":113,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":618,"name":"YarnConfig"}]}}],"groups":[{"title":"Properties","children":[622,623,624,625,626,627,628,629,630,631,632,633,634]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":97,"character":17}],"permalink":"/api/types/interface/NodeConfig","previousId":471,"nextId":727},{"id":727,"name":"NotifierConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":728,"name":"webhookUrl","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":103,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[728]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":102,"character":17}],"permalink":"/api/types/interface/NotifierConfig","previousId":621,"nextId":614},{"id":614,"name":"NpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":615,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":88,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[615]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":87,"character":17}],"permalink":"/api/types/interface/NpmConfig","previousId":727,"nextId":353},{"id":353,"name":"OwnersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":354,"name":"customGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":76,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":355,"name":"defaultOwner","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":77,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":356,"name":"optional","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":78,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":357,"name":"paths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":79,"character":4}],"type":{"type":"reference","id":352,"name":"OwnersPaths"}},{"id":358,"name":"requiredApprovals","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":81,"character":4}],"type":{"type":"intrinsic","name":"number"}}],"groups":[{"title":"Properties","children":[354,355,356,357,358]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":75,"character":17}],"permalink":"/api/types/interface/OwnersConfig","previousId":614,"nextId":550},{"id":550,"name":"PartialBinConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":551,"name":"bin","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":2,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":552,"name":"force","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":3,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":553,"name":"local","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":554,"name":"name","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[551,552,553,554]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":1,"character":17}],"permalink":"/api/types/interface/PartialBinConfig","previousId":353,"nextId":655},{"id":655,"name":"PartialCodeownersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":656,"name":"globalPaths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":3,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":657,"name":"orderBy","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":654,"name":"CodeownersOrderBy"}]}},{"id":658,"name":"syncOnRun","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[656,657,658]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":2,"character":17}],"permalink":"/api/types/interface/PartialCodeownersConfig","previousId":550,"nextId":659},{"id":659,"name":"PartialConstraintsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":660,"name":"enforceProjectTypeRelationships","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":661,"name":"tagRelationships","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":10,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[660,661]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":7,"character":17}],"permalink":"/api/types/interface/PartialConstraintsConfig","previousId":655,"nextId":556},{"id":556,"name":"PartialDenoConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":557,"name":"bins","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":555,"name":"PartialBinEntry"}}]}},{"id":558,"name":"depsFile","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'deps.ts\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":559,"name":"lockfile","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":12,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[557,558,559]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":8,"character":17}],"permalink":"/api/types/interface/PartialDenoConfig","previousId":659,"nextId":294},{"id":294,"name":"PartialDependencyConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":295,"name":"id","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":296,"name":"scope","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":6,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":292,"name":"DependencyScope"}]}},{"id":297,"name":"source","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":7,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":293,"name":"DependencySource"}]}},{"id":298,"name":"via","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":8,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[295,296,297,298]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":4,"character":17}],"permalink":"/api/types/interface/PartialDependencyConfig","previousId":556,"nextId":662},{"id":662,"name":"PartialExperimentsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":663,"name":"taskOutputBoundaries","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[663]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":12,"character":17}],"permalink":"/api/types/interface/PartialExperimentsConfig","previousId":294,"nextId":664},{"id":664,"name":"PartialGeneratorConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":665,"name":"templates","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}}],"groups":[{"title":"Properties","children":[665]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":16,"character":17}],"permalink":"/api/types/interface/PartialGeneratorConfig","previousId":662,"nextId":668},{"id":668,"name":"PartialHasherConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":669,"name":"batchSize","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"2500"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":670,"name":"ignoreMissingPatterns","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":24,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":671,"name":"ignorePatterns","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":25,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":672,"name":"optimization","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":666,"name":"HasherOptimization"}]}},{"id":673,"name":"walkStrategy","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":27,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":667,"name":"HasherWalkStrategy"}]}},{"id":674,"name":"warnOnMissingInputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":29,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[669,670,671,672,673,674]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":21,"character":17}],"permalink":"/api/types/interface/PartialHasherConfig","previousId":664,"nextId":433},{"id":433,"name":"PartialInheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":434,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/tasks.json\'"}]}]},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":435,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":43,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":436,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":437,"name":"implicitDeps","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":45,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":438,"name":"implicitInputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":46,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":439,"name":"tasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":47,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":421,"name":"PartialTaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[434,435,436,437,438,439]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":40,"character":17}],"permalink":"/api/types/interface/PartialInheritedTasksConfig","previousId":668,"nextId":571},{"id":571,"name":"PartialNodeConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":572,"name":"addEnginesConstraint","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":30,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":573,"name":"aliasPackageNames","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":31,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":560,"name":"NodeProjectAliasFormat"}]}},{"id":574,"name":"binExecArgs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":575,"name":"dedupeOnLockfileChange","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":576,"name":"dependencyVersionFormat","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":561,"name":"NodeVersionFormat"}]}},{"id":577,"name":"inferTasksFromScripts","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":578,"name":"npm","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":37,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":562,"name":"PartialNpmConfig"}]}},{"id":579,"name":"packageManager","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":38,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":564,"name":"NodePackageManager"}]}},{"id":580,"name":"pnpm","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":39,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":565,"name":"PartialPnpmConfig"}]}},{"id":581,"name":"syncProjectWorkspaceDependencies","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":41,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":582,"name":"syncVersionManagerConfig","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":567,"name":"NodeVersionManager"}]}},{"id":583,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":43,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":584,"name":"yarn","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":568,"name":"PartialYarnConfig"}]}}],"groups":[{"title":"Properties","children":[572,573,574,575,576,577,578,579,580,581,582,583,584]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":28,"character":17}],"permalink":"/api/types/interface/PartialNodeConfig","previousId":433,"nextId":675},{"id":675,"name":"PartialNotifierConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":676,"name":"webhookUrl","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[676]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":31,"character":17}],"permalink":"/api/types/interface/PartialNotifierConfig","previousId":571,"nextId":562},{"id":562,"name":"PartialNpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":563,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[563]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":16,"character":17}],"permalink":"/api/types/interface/PartialNpmConfig","previousId":675,"nextId":302},{"id":302,"name":"PartialOwnersConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":303,"name":"customGroups","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":304,"name":"defaultOwner","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":305,"name":"optional","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":16,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":306,"name":"paths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":301,"name":"PartialOwnersPaths"}]}},{"id":307,"name":"requiredApprovals","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"1"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":19,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}}],"groups":[{"title":"Properties","children":[303,304,305,306,307]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":13,"character":17}],"permalink":"/api/types/interface/PartialOwnersConfig","previousId":562,"nextId":565},{"id":565,"name":"PartialPnpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":566,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":21,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[566]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":20,"character":17}],"permalink":"/api/types/interface/PartialPnpmConfig","previousId":302,"nextId":332},{"id":332,"name":"PartialProjectConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":333,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/project.json\'"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":334,"name":"dependsOn","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":54,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":299,"name":"PartialProjectDependsOn"}}]}},{"id":335,"name":"env","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":336,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":56,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":337,"name":"language","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":57,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":300,"name":"LanguageType"}]}},{"id":338,"name":"owners","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":58,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":302,"name":"PartialOwnersConfig"}]}},{"id":339,"name":"platform","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":419,"name":"PlatformType"}]}},{"id":340,"name":"project","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":308,"name":"PartialProjectMetadataConfig"}]}},{"id":341,"name":"tags","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":61,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":342,"name":"tasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":421,"name":"PartialTaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":343,"name":"toolchain","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":321,"name":"PartialProjectToolchainConfig"}]}},{"id":344,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":64,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":325,"name":"ProjectType"}]}},{"id":345,"name":"workspace","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":65,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":330,"name":"PartialProjectWorkspaceConfig"}]}}],"groups":[{"title":"Properties","children":[333,334,335,336,337,338,339,340,341,342,343,344,345]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":51,"character":17}],"permalink":"/api/types/interface/PartialProjectConfig","previousId":565,"nextId":308},{"id":308,"name":"PartialProjectMetadataConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":309,"name":"channel","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":22,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":310,"name":"description","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":311,"name":"maintainers","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":24,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":312,"name":"name","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":25,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":313,"name":"owner","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[309,310,311,312,313]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":21,"character":17}],"permalink":"/api/types/interface/PartialProjectMetadataConfig","previousId":332,"nextId":314},{"id":314,"name":"PartialProjectToolchainCommonToolConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":315,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":29,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[315]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":28,"character":17}],"permalink":"/api/types/interface/PartialProjectToolchainCommonToolConfig","previousId":308,"nextId":321},{"id":321,"name":"PartialProjectToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":322,"name":"node","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":38,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":314,"name":"PartialProjectToolchainCommonToolConfig"}]}},{"id":323,"name":"rust","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":39,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":314,"name":"PartialProjectToolchainCommonToolConfig"}]}},{"id":324,"name":"typescript","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":40,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":316,"name":"PartialProjectToolchainTypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[322,323,324]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":37,"character":17}],"permalink":"/api/types/interface/PartialProjectToolchainConfig","previousId":314,"nextId":316},{"id":316,"name":"PartialProjectToolchainTypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":317,"name":"disabled","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":318,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":33,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":319,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":320,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[317,318,319,320]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":31,"character":17}],"permalink":"/api/types/interface/PartialProjectToolchainTypeScriptConfig","previousId":321,"nextId":330},{"id":330,"name":"PartialProjectWorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":331,"name":"inheritedTasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":49,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":326,"name":"PartialProjectWorkspaceInheritedTasksConfig"}]}}],"groups":[{"title":"Properties","children":[331]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":48,"character":17}],"permalink":"/api/types/interface/PartialProjectWorkspaceConfig","previousId":316,"nextId":326},{"id":326,"name":"PartialProjectWorkspaceInheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":327,"name":"exclude","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":328,"name":"include","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":45,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":329,"name":"rename","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":46,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[327,328,329]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":43,"character":17}],"permalink":"/api/types/interface/PartialProjectWorkspaceInheritedTasksConfig","previousId":330,"nextId":681},{"id":681,"name":"PartialRunnerConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":682,"name":"archivableTargets","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":40,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":683,"name":"cacheLifetime","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'7 days\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":684,"name":"inheritColorsForPipedTasks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":685,"name":"logRunningCommand","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":45,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[682,683,684,685]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":39,"character":17}],"permalink":"/api/types/interface/PartialRunnerConfig","previousId":326,"nextId":585},{"id":585,"name":"PartialRustConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":586,"name":"bins","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":47,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":555,"name":"PartialBinEntry"}}]}},{"id":587,"name":"syncToolchainConfig","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":48,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":588,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":49,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[586,587,588]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":46,"character":17}],"permalink":"/api/types/interface/PartialRustConfig","previousId":681,"nextId":421},{"id":421,"name":"PartialTaskConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":422,"name":"args","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":28,"character":4}],"type":{"type":"reference","id":396,"name":"PartialTaskCommandArgs"}},{"id":423,"name":"command","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":29,"character":4}],"type":{"type":"reference","id":396,"name":"PartialTaskCommandArgs"}},{"id":424,"name":"deps","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":30,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":425,"name":"env","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":31,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":426,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":32,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":427,"name":"inputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":33,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":428,"name":"local","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":429,"name":"options","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":401,"name":"PartialTaskOptionsConfig"}]}},{"id":430,"name":"outputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":431,"name":"platform","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":37,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":419,"name":"PlatformType"}]}},{"id":432,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":38,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":420,"name":"TaskType"}]}}],"groups":[{"title":"Properties","children":[422,423,424,425,426,427,428,429,430,431,432]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":27,"character":17}],"permalink":"/api/types/interface/PartialTaskConfig","previousId":585,"nextId":401},{"id":401,"name":"PartialTaskOptionsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":402,"name":"affectedFiles","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":7,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":397,"name":"TaskOptionAffectedFiles"}]}},{"id":403,"name":"allowFailure","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":8,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":404,"name":"cache","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":405,"name":"envFile","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":10,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":398,"name":"TaskOptionEnvFile"}]}},{"id":406,"name":"interactive","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":407,"name":"mergeArgs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":12,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":408,"name":"mergeDeps","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":13,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":409,"name":"mergeEnv","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":410,"name":"mergeInputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":411,"name":"mergeOutputs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":16,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":412,"name":"outputStyle","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":400,"name":"TaskOutputStyle"}]}},{"id":413,"name":"persistent","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":18,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":414,"name":"retryCount","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":19,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":415,"name":"runDepsInParallel","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":20,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":416,"name":"runFromWorkspaceRoot","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":21,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":417,"name":"runInCI","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":22,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":418,"name":"shell","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[402,403,404,405,406,407,408,409,410,411,412,413,414,415,416,417,418]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":6,"character":17}],"permalink":"/api/types/interface/PartialTaskOptionsConfig","previousId":421,"nextId":504},{"id":504,"name":"PartialTemplateConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":505,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":34,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":506,"name":"description","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":507,"name":"title","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":508,"name":"variables","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":37,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":503,"name":"PartialTemplateVariable"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[505,506,507,508]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":32,"character":17}],"permalink":"/api/types/interface/PartialTemplateConfig","previousId":401,"nextId":509},{"id":509,"name":"PartialTemplateFrontmatterConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":510,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template-frontmatter.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":41,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":511,"name":"force","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":42,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":512,"name":"skip","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":43,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":513,"name":"to","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[510,511,512,513]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":39,"character":17}],"permalink":"/api/types/interface/PartialTemplateFrontmatterConfig","previousId":504,"nextId":478},{"id":478,"name":"PartialTemplateVariableBoolSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":479,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":2,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":480,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":3,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":481,"name":"required","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":4,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":482,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":5,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"boolean"}]}}],"groups":[{"title":"Properties","children":[479,480,481,482]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":1,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableBoolSetting","previousId":509,"nextId":487},{"id":487,"name":"PartialTemplateVariableEnumSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":488,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":13,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":489,"name":"multiple","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":14,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":490,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":15,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":491,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":16,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"enum"}]}},{"id":492,"name":"values","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"reference","id":486,"name":"PartialTemplateVariableEnumValue"}}]}}],"groups":[{"title":"Properties","children":[488,489,490,491,492]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":12,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableEnumSetting","previousId":478,"nextId":483},{"id":483,"name":"PartialTemplateVariableEnumValueConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":484,"name":"label","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":8,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":485,"name":"value","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[484,485]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":7,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableEnumValueConfig","previousId":487,"nextId":493},{"id":493,"name":"PartialTemplateVariableNumberSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":494,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":20,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":495,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":21,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":496,"name":"required","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":22,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":497,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"number"}]}}],"groups":[{"title":"Properties","children":[494,495,496,497]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":19,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableNumberSetting","previousId":483,"nextId":498},{"id":498,"name":"PartialTemplateVariableStringSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":499,"name":"default","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":500,"name":"prompt","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":27,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":501,"name":"required","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":28,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":502,"name":"type","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":29,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"string"}]}}],"groups":[{"title":"Properties","children":[499,500,501,502]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":25,"character":17}],"permalink":"/api/types/interface/PartialTemplateVariableStringSetting","previousId":493,"nextId":597},{"id":597,"name":"PartialToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":598,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/toolchain.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":599,"name":"deno","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":68,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":556,"name":"PartialDenoConfig"}]}},{"id":600,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":69,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":601,"name":"node","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":70,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":571,"name":"PartialNodeConfig"}]}},{"id":602,"name":"rust","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":71,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":585,"name":"PartialRustConfig"}]}},{"id":603,"name":"typescript","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":72,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":589,"name":"PartialTypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[598,599,600,601,602,603]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":65,"character":17}],"permalink":"/api/types/interface/PartialToolchainConfig","previousId":498,"nextId":589},{"id":589,"name":"PartialTypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":590,"name":"createMissingConfig","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":591,"name":"projectConfigFileName","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":592,"name":"rootConfigFileName","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":57,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":593,"name":"rootOptionsConfigFileName","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.options.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":594,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":595,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":596,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[590,591,592,593,594,595,596]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":51,"character":17}],"permalink":"/api/types/interface/PartialTypeScriptConfig","previousId":597,"nextId":688},{"id":688,"name":"PartialVcsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":689,"name":"defaultBranch","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'master\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":51,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":690,"name":"hooks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":52,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}},{"id":691,"name":"manager","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"literal","value":"git"}]}},{"id":692,"name":"provider","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":54,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":687,"name":"VcsProvider"}]}},{"id":693,"name":"remoteCandidates","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":694,"name":"syncHooks","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":56,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[689,690,691,692,693,694]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":49,"character":17}],"permalink":"/api/types/interface/PartialVcsConfig","previousId":589,"nextId":695},{"id":695,"name":"PartialWorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":696,"name":"$schema","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/workspace.json\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":697,"name":"codeowners","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":61,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":655,"name":"PartialCodeownersConfig"}]}},{"id":698,"name":"constraints","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":659,"name":"PartialConstraintsConfig"}]}},{"id":699,"name":"experiments","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":662,"name":"PartialExperimentsConfig"}]}},{"id":700,"name":"extends","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":64,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":701,"name":"generator","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":65,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":664,"name":"PartialGeneratorConfig"}]}},{"id":702,"name":"hasher","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":66,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":668,"name":"PartialHasherConfig"}]}},{"id":703,"name":"notifier","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":675,"name":"PartialNotifierConfig"}]}},{"id":704,"name":"projects","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":68,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":680,"name":"PartialWorkspaceProjects"}]}},{"id":705,"name":"runner","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":69,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":681,"name":"PartialRunnerConfig"}]}},{"id":706,"name":"telemetry","kind":1024,"kindString":"Property","flags":{"isOptional":true},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":71,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":707,"name":"vcs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":72,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":688,"name":"PartialVcsConfig"}]}},{"id":708,"name":"versionConstraint","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":73,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[696,697,698,699,700,701,702,703,704,705,706,707,708]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":58,"character":17}],"permalink":"/api/types/interface/PartialWorkspaceConfig","previousId":688,"nextId":677},{"id":677,"name":"PartialWorkspaceProjectsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":678,"name":"globs","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":35,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":679,"name":"sources","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":36,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]}}],"groups":[{"title":"Properties","children":[678,679]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":34,"character":17}],"permalink":"/api/types/interface/PartialWorkspaceProjectsConfig","previousId":695,"nextId":568},{"id":568,"name":"PartialYarnConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":569,"name":"plugins","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":25,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":570,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":26,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[569,570]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":24,"character":17}],"permalink":"/api/types/interface/PartialYarnConfig","previousId":677,"nextId":616},{"id":616,"name":"PnpmConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":617,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":91,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[617]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":90,"character":17}],"permalink":"/api/types/interface/PnpmConfig","previousId":568,"nextId":275},{"id":275,"name":"Project","kind":256,"kindString":"Interface","flags":{},"children":[{"id":276,"name":"alias","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":44,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":277,"name":"config","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":45,"character":4}],"type":{"type":"reference","id":382,"name":"ProjectConfig"}},{"id":278,"name":"dependencies","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":46,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":346,"name":"DependencyConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":279,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":47,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":238,"name":"FileGroup"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":280,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":48,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":281,"name":"inherited","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":49,"character":4}],"type":{"type":"reflection","declaration":{"id":282,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":285,"name":"config","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":52,"character":8}],"type":{"type":"reference","id":471,"name":"InheritedTasksConfig"}},{"id":284,"name":"layers","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":51,"character":8}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":433,"name":"PartialInheritedTasksConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":283,"name":"order","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":50,"character":8}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}}],"groups":[{"title":"Properties","children":[285,284,283]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":49,"character":15}]}}},{"id":286,"name":"language","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":54,"character":4}],"type":{"type":"reference","id":300,"name":"LanguageType"}},{"id":287,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":55,"character":4}],"type":{"type":"reference","id":419,"name":"PlatformType"}},{"id":288,"name":"root","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":56,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":289,"name":"source","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":57,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":290,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":58,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":258,"name":"Task"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":291,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":59,"character":4}],"type":{"type":"reference","id":325,"name":"ProjectType"}}],"groups":[{"title":"Properties","children":[276,277,278,279,280,281,286,287,288,289,290,291]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":43,"character":17}],"permalink":"/api/types/interface/Project","previousId":616,"nextId":382},{"id":382,"name":"ProjectConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":383,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/project.json\'"}]}]},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":114,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":384,"name":"dependsOn","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":115,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":351,"name":"ProjectDependsOn"}}},{"id":385,"name":"env","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":116,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":386,"name":"fileGroups","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":117,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":387,"name":"language","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":118,"character":4}],"type":{"type":"reference","id":300,"name":"LanguageType"}},{"id":388,"name":"owners","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":119,"character":4}],"type":{"type":"reference","id":353,"name":"OwnersConfig"}},{"id":389,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":120,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":419,"name":"PlatformType"}]}},{"id":390,"name":"project","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":121,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":359,"name":"ProjectMetadataConfig"}]}},{"id":391,"name":"tags","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":122,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":392,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":123,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":459,"name":"TaskConfig"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":393,"name":"toolchain","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":124,"character":4}],"type":{"type":"reference","id":372,"name":"ProjectToolchainConfig"}},{"id":394,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":125,"character":4}],"type":{"type":"reference","id":325,"name":"ProjectType"}},{"id":395,"name":"workspace","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":126,"character":4}],"type":{"type":"reference","id":380,"name":"ProjectWorkspaceConfig"}}],"groups":[{"title":"Properties","children":[383,384,385,386,387,388,389,390,391,392,393,394,395]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":112,"character":17}],"permalink":"/api/types/interface/ProjectConfig","previousId":275,"nextId":359},{"id":359,"name":"ProjectMetadataConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":360,"name":"channel","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":84,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":361,"name":"description","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":85,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":362,"name":"maintainers","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":86,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":363,"name":"name","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":87,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":364,"name":"owner","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":88,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[360,361,362,363,364]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":83,"character":17}],"permalink":"/api/types/interface/ProjectMetadataConfig","previousId":382,"nextId":365},{"id":365,"name":"ProjectToolchainCommonToolConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":366,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":91,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[366]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":90,"character":17}],"permalink":"/api/types/interface/ProjectToolchainCommonToolConfig","previousId":359,"nextId":372},{"id":372,"name":"ProjectToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":373,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":100,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":365,"name":"ProjectToolchainCommonToolConfig"}]}},{"id":374,"name":"rust","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":101,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":365,"name":"ProjectToolchainCommonToolConfig"}]}},{"id":375,"name":"typescript","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":102,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":367,"name":"ProjectToolchainTypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[373,374,375]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":99,"character":17}],"permalink":"/api/types/interface/ProjectToolchainConfig","previousId":365,"nextId":367},{"id":367,"name":"ProjectToolchainTypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":368,"name":"disabled","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":94,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":369,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":95,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":370,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":96,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":371,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":97,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[368,369,370,371]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":93,"character":17}],"permalink":"/api/types/interface/ProjectToolchainTypeScriptConfig","previousId":372,"nextId":380},{"id":380,"name":"ProjectWorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":381,"name":"inheritedTasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":110,"character":4}],"type":{"type":"reference","id":376,"name":"ProjectWorkspaceInheritedTasksConfig"}}],"groups":[{"title":"Properties","children":[381]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":109,"character":17}],"permalink":"/api/types/interface/ProjectWorkspaceConfig","previousId":367,"nextId":376},{"id":376,"name":"ProjectWorkspaceInheritedTasksConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":377,"name":"exclude","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":105,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":378,"name":"include","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":106,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":379,"name":"rename","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":107,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[377,378,379]}],"sources":[{"fileName":"types/cjs/project-config.d.ts","line":104,"character":17}],"permalink":"/api/types/interface/ProjectWorkspaceInheritedTasksConfig","previousId":380,"nextId":62},{"id":62,"name":"ProviderEnvironment","kind":256,"kindString":"Interface","flags":{},"children":[{"id":63,"name":"baseBranch","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":6,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L6"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":64,"name":"branch","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":7,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L7"}],"type":{"type":"intrinsic","name":"string"}},{"id":65,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":8,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L8"}],"type":{"type":"intrinsic","name":"string"}},{"id":66,"name":"provider","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":9,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L9"}],"type":{"type":"intrinsic","name":"string"}},{"id":67,"name":"requestId","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":10,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L10"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":68,"name":"requestUrl","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":11,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L11"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":69,"name":"revision","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":12,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L12"}],"type":{"type":"intrinsic","name":"string"}},{"id":70,"name":"url","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":13,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L13"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[63,64,65,66,67,68,69,70]}],"sources":[{"fileName":"types/src/events.ts","line":5,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L5"}],"permalink":"/api/types/interface/ProviderEnvironment","previousId":376,"nextId":203},{"id":203,"name":"RunReport","kind":256,"kindString":"Interface","flags":{},"children":[{"id":204,"name":"actions","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":38,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":179,"name":"Action"}}},{"id":207,"name":"comparisonEstimate","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":41,"character":4}],"type":{"type":"reflection","declaration":{"id":208,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":209,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":42,"character":8}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":210,"name":"gain","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":43,"character":8}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":211,"name":"loss","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":44,"character":8}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":212,"name":"percent","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":45,"character":8}],"type":{"type":"intrinsic","name":"number"}},{"id":213,"name":"tasks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":46,"character":8}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reflection","declaration":{"id":214,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"children":[{"id":215,"name":"count","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":47,"character":12}],"type":{"type":"intrinsic","name":"number"}},{"id":216,"name":"total","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":48,"character":12}],"type":{"type":"reference","id":56,"name":"Duration"}}],"groups":[{"title":"Properties","children":[215,216]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":46,"character":30}]}}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[209,210,211,212,213]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":41,"character":24}]}}},{"id":205,"name":"context","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":39,"character":4}],"type":{"type":"reference","id":193,"name":"ActionContext"}},{"id":206,"name":"duration","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":40,"character":4}],"type":{"type":"reference","id":56,"name":"Duration"}},{"id":217,"name":"estimatedSavings","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":51,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":56,"name":"Duration"}]}},{"id":218,"name":"projectedDuration","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":52,"character":4}],"type":{"type":"reference","id":56,"name":"Duration"}}],"groups":[{"title":"Properties","children":[204,207,205,206,217,218]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":37,"character":17}],"permalink":"/api/types/interface/RunReport","previousId":62,"nextId":733},{"id":733,"name":"RunnerConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":734,"name":"archivableTargets","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":111,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":735,"name":"cacheLifetime","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'7 days\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":113,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":736,"name":"inheritColorsForPipedTasks","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":115,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":737,"name":"logRunningCommand","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":116,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[734,735,736,737]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":110,"character":17}],"permalink":"/api/types/interface/RunnerConfig","previousId":203,"nextId":59},{"id":59,"name":"Runtime","kind":256,"kindString":"Interface","flags":{},"children":[{"id":60,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/common.ts","line":11,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L11"}],"type":{"type":"union","types":[{"type":"literal","value":"Deno"},{"type":"literal","value":"Node"},{"type":"literal","value":"Rust"},{"type":"literal","value":"System"},{"type":"literal","value":"Unknown"}]}},{"id":61,"name":"version","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/src/common.ts","line":12,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L12"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[60,61]}],"sources":[{"fileName":"types/src/common.ts","line":10,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L10"}],"permalink":"/api/types/interface/Runtime","previousId":733,"nextId":635},{"id":635,"name":"RustConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":636,"name":"bins","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":116,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":609,"name":"BinEntry"}}},{"id":637,"name":"syncToolchainConfig","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":117,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":638,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":118,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[636,637,638]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":115,"character":17}],"permalink":"/api/types/interface/RustConfig","previousId":59,"nextId":190},{"id":190,"name":"TargetState","kind":256,"kindString":"Interface","flags":{},"children":[{"id":192,"name":"hash","kind":1024,"kindString":"Property","flags":{"isOptional":true},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":24,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":191,"name":"state","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":23,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":"failed"},{"type":"literal","value":"skipped"},{"type":"literal","value":"completed"},{"type":"literal","value":"passthrough"}]}}],"groups":[{"title":"Properties","children":[192,191]}],"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":22,"character":17}],"permalink":"/api/types/interface/TargetState","previousId":635,"nextId":258},{"id":258,"name":"Task","kind":256,"kindString":"Interface","flags":{},"children":[{"id":259,"name":"args","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":26,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":260,"name":"command","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":27,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":261,"name":"deps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":28,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":262,"name":"env","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":29,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":263,"name":"id","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":30,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":265,"name":"inputFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":32,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":266,"name":"inputGlobs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":33,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":267,"name":"inputVars","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":34,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":264,"name":"inputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":31,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":268,"name":"options","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":35,"character":4}],"type":{"type":"reference","id":242,"name":"TaskOptions"}},{"id":270,"name":"outputFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":37,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":271,"name":"outputGlobs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":38,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":269,"name":"outputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":36,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":272,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":39,"character":4}],"type":{"type":"reference","id":419,"name":"PlatformType"}},{"id":273,"name":"target","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":40,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":274,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":41,"character":4}],"type":{"type":"reference","id":420,"name":"TaskType"}}],"groups":[{"title":"Properties","children":[259,260,261,262,263,265,266,267,264,268,270,271,269,272,273,274]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":25,"character":17}],"permalink":"/api/types/interface/Task","previousId":190,"nextId":459},{"id":459,"name":"TaskConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":460,"name":"args","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":70,"character":4}],"type":{"type":"reference","id":440,"name":"TaskCommandArgs"}},{"id":461,"name":"command","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":71,"character":4}],"type":{"type":"reference","id":440,"name":"TaskCommandArgs"}},{"id":462,"name":"deps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":72,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":463,"name":"env","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":73,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":464,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":74,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":465,"name":"inputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":75,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":466,"name":"local","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":76,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":467,"name":"options","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":77,"character":4}],"type":{"type":"reference","id":441,"name":"TaskOptionsConfig"}},{"id":468,"name":"outputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":78,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]}},{"id":469,"name":"platform","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":79,"character":4}],"type":{"type":"reference","id":419,"name":"PlatformType"}},{"id":470,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":80,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":420,"name":"TaskType"}]}}],"groups":[{"title":"Properties","children":[460,461,462,463,464,465,466,467,468,469,470]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":69,"character":17}],"permalink":"/api/types/interface/TaskConfig","previousId":258,"nextId":242},{"id":242,"name":"TaskOptions","kind":256,"kindString":"Interface","flags":{},"children":[{"id":243,"name":"affectedFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":9,"character":4}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"literal","value":"args"},{"type":"literal","value":"env"}]}},{"id":244,"name":"cache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":10,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":245,"name":"envFile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":11,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":246,"name":"mergeArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":12,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":247,"name":"mergeDeps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":13,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":248,"name":"mergeEnv","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":14,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":249,"name":"mergeInputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":15,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":250,"name":"mergeOutputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":16,"character":4}],"type":{"type":"reference","id":399,"name":"TaskMergeStrategy"}},{"id":251,"name":"outputStyle","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":17,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":400,"name":"TaskOutputStyle"}]}},{"id":252,"name":"persistent","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":18,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":253,"name":"retryCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":19,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":254,"name":"runDepsInParallel","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":20,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":256,"name":"runFromWorkspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":22,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":255,"name":"runInCI","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":21,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":257,"name":"shell","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/project.d.ts","line":23,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[243,244,245,246,247,248,249,250,251,252,253,254,256,255,257]}],"sources":[{"fileName":"types/cjs/project.d.ts","line":8,"character":17}],"permalink":"/api/types/interface/TaskOptions","previousId":459,"nextId":441},{"id":441,"name":"TaskOptionsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":442,"name":"affectedFiles","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":51,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":397,"name":"TaskOptionAffectedFiles"}]}},{"id":443,"name":"allowFailure","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":52,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":444,"name":"cache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":53,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":445,"name":"envFile","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":54,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":398,"name":"TaskOptionEnvFile"}]}},{"id":446,"name":"interactive","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":55,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":447,"name":"mergeArgs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":56,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":448,"name":"mergeDeps","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":57,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":449,"name":"mergeEnv","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":58,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":450,"name":"mergeInputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":451,"name":"mergeOutputs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":60,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":399,"name":"TaskMergeStrategy"}]}},{"id":452,"name":"outputStyle","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":61,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":400,"name":"TaskOutputStyle"}]}},{"id":453,"name":"persistent","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":62,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":454,"name":"retryCount","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":63,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"number"}]}},{"id":455,"name":"runDepsInParallel","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":64,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":456,"name":"runFromWorkspaceRoot","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":65,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":457,"name":"runInCI","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":66,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":458,"name":"shell","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}}],"groups":[{"title":"Properties","children":[442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458]}],"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":50,"character":17}],"permalink":"/api/types/interface/TaskOptionsConfig","previousId":242,"nextId":540},{"id":540,"name":"TemplateConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":541,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":79,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":542,"name":"description","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":80,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":543,"name":"title","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":81,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":544,"name":"variables","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":82,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"reference","id":539,"name":"TemplateVariable"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[541,542,543,544]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":77,"character":17}],"permalink":"/api/types/interface/TemplateConfig","previousId":441,"nextId":545},{"id":545,"name":"TemplateFrontmatterConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":546,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/template-frontmatter.json\'"}]}]},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":86,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":547,"name":"force","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":87,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":548,"name":"skip","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":88,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":549,"name":"to","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":89,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[546,547,548,549]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":84,"character":17}],"permalink":"/api/types/interface/TemplateFrontmatterConfig","previousId":540,"nextId":514},{"id":514,"name":"TemplateVariableBoolSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":515,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":47,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":516,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":48,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":517,"name":"required","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":49,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":518,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":50,"character":4}],"type":{"type":"literal","value":"boolean"}}],"groups":[{"title":"Properties","children":[515,516,517,518]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":46,"character":17}],"permalink":"/api/types/interface/TemplateVariableBoolSetting","previousId":545,"nextId":523},{"id":523,"name":"TemplateVariableEnumSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":524,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":58,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":525,"name":"multiple","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":59,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":526,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":60,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":527,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":61,"character":4}],"type":{"type":"literal","value":"enum"}},{"id":528,"name":"values","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":62,"character":4}],"type":{"type":"array","elementType":{"type":"reference","id":522,"name":"TemplateVariableEnumValue"}}}],"groups":[{"title":"Properties","children":[524,525,526,527,528]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":57,"character":17}],"permalink":"/api/types/interface/TemplateVariableEnumSetting","previousId":514,"nextId":519},{"id":519,"name":"TemplateVariableEnumValueConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":520,"name":"label","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":53,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":521,"name":"value","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":54,"character":4}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[520,521]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":52,"character":17}],"permalink":"/api/types/interface/TemplateVariableEnumValueConfig","previousId":523,"nextId":529},{"id":529,"name":"TemplateVariableNumberSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":530,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":65,"character":4}],"type":{"type":"intrinsic","name":"number"}},{"id":531,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":66,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":532,"name":"required","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":67,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":533,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":68,"character":4}],"type":{"type":"literal","value":"number"}}],"groups":[{"title":"Properties","children":[530,531,532,533]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":64,"character":17}],"permalink":"/api/types/interface/TemplateVariableNumberSetting","previousId":519,"nextId":534},{"id":534,"name":"TemplateVariableStringSetting","kind":256,"kindString":"Interface","flags":{},"children":[{"id":535,"name":"default","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":71,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":536,"name":"prompt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":72,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":537,"name":"required","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":73,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"boolean"}]}},{"id":538,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":74,"character":4}],"type":{"type":"literal","value":"string"}}],"groups":[{"title":"Properties","children":[535,536,537,538]}],"sources":[{"fileName":"types/cjs/template-config.d.ts","line":70,"character":17}],"permalink":"/api/types/interface/TemplateVariableStringSetting","previousId":529,"nextId":647},{"id":647,"name":"ToolchainConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":648,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/toolchain.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":136,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":649,"name":"deno","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":137,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":610,"name":"DenoConfig"}]}},{"id":650,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":138,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":651,"name":"node","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":139,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":621,"name":"NodeConfig"}]}},{"id":652,"name":"rust","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":140,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":635,"name":"RustConfig"}]}},{"id":653,"name":"typescript","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":141,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":639,"name":"TypeScriptConfig"}]}}],"groups":[{"title":"Properties","children":[648,649,650,651,652,653]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":134,"character":17}],"permalink":"/api/types/interface/ToolchainConfig","previousId":534,"nextId":639},{"id":639,"name":"TypeScriptConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":640,"name":"createMissingConfig","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":122,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":641,"name":"projectConfigFileName","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":124,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":642,"name":"rootConfigFileName","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":126,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":643,"name":"rootOptionsConfigFileName","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'tsconfig.options.json\'"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":128,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":644,"name":"routeOutDirToCache","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":129,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":645,"name":"syncProjectReferences","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":131,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":646,"name":"syncProjectReferencesToPaths","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":132,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[640,641,642,643,644,645,646]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":120,"character":17}],"permalink":"/api/types/interface/TypeScriptConfig","previousId":647,"nextId":738},{"id":738,"name":"VcsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":739,"name":"defaultBranch","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'master\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":120,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":740,"name":"hooks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":121,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}},{"id":741,"name":"manager","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":122,"character":4}],"type":{"type":"literal","value":"git"}},{"id":742,"name":"provider","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":123,"character":4}],"type":{"type":"reference","id":687,"name":"VcsProvider"}},{"id":743,"name":"remoteCandidates","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":124,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":744,"name":"syncHooks","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":125,"character":4}],"type":{"type":"intrinsic","name":"boolean"}}],"groups":[{"title":"Properties","children":[739,740,741,742,743,744]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":118,"character":17}],"permalink":"/api/types/interface/VcsConfig","previousId":639,"nextId":71},{"id":71,"name":"WebhookPayload","kind":256,"kindString":"Interface","flags":{},"children":[{"id":72,"name":"createdAt","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":17,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L17"}],"type":{"type":"intrinsic","name":"string"}},{"id":73,"name":"environment","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":18,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L18"}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"reference","id":62,"name":"ProviderEnvironment"}]}},{"id":74,"name":"event","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":19,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L19"}],"type":{"type":"reference","id":78,"name":"E"}},{"id":75,"name":"type","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":20,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L20"}],"type":{"type":"reference","id":77,"name":"T"}},{"id":76,"name":"uuid","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/src/events.ts","line":21,"character":1,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L21"}],"type":{"type":"intrinsic","name":"string"}}],"groups":[{"title":"Properties","children":[72,73,74,75,76]}],"sources":[{"fileName":"types/src/events.ts","line":16,"character":17,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L16"}],"typeParameters":[{"id":77,"name":"T","kind":131072,"kindString":"Type parameter","flags":{},"type":{"type":"reference","id":79,"name":"EventType"}},{"id":78,"name":"E","kind":131072,"kindString":"Type parameter","flags":{}}],"permalink":"/api/types/interface/WebhookPayload","previousId":738,"nextId":745},{"id":745,"name":"WorkspaceConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":746,"name":"$schema","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"\'https://moonrepo.dev/schemas/workspace.json\'"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":129,"character":4}],"type":{"type":"intrinsic","name":"string"}},{"id":747,"name":"codeowners","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":130,"character":4}],"type":{"type":"reference","id":709,"name":"CodeownersConfig"}},{"id":748,"name":"constraints","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":131,"character":4}],"type":{"type":"reference","id":713,"name":"ConstraintsConfig"}},{"id":749,"name":"experiments","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":132,"character":4}],"type":{"type":"reference","id":716,"name":"ExperimentsConfig"}},{"id":750,"name":"extends","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":133,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}},{"id":751,"name":"generator","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":134,"character":4}],"type":{"type":"reference","id":718,"name":"GeneratorConfig"}},{"id":752,"name":"hasher","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":135,"character":4}],"type":{"type":"reference","id":720,"name":"HasherConfig"}},{"id":753,"name":"notifier","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":136,"character":4}],"type":{"type":"reference","id":727,"name":"NotifierConfig"}},{"id":754,"name":"projects","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":137,"character":4}],"type":{"type":"reference","id":732,"name":"WorkspaceProjects"}},{"id":755,"name":"runner","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":138,"character":4}],"type":{"type":"reference","id":733,"name":"RunnerConfig"}},{"id":756,"name":"telemetry","kind":1024,"kindString":"Property","flags":{},"comment":{"summary":[],"blockTags":[{"tag":"@default","content":[{"kind":"text","text":"true"}]}]},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":140,"character":4}],"type":{"type":"intrinsic","name":"boolean"}},{"id":757,"name":"vcs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":141,"character":4}],"type":{"type":"reference","id":738,"name":"VcsConfig"}},{"id":758,"name":"versionConstraint","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":142,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[746,747,748,749,750,751,752,753,754,755,756,757,758]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":127,"character":17}],"permalink":"/api/types/interface/WorkspaceConfig","previousId":71,"nextId":729},{"id":729,"name":"WorkspaceProjectsConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":730,"name":"globs","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":106,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":731,"name":"sources","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":107,"character":4}],"type":{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}}],"groups":[{"title":"Properties","children":[730,731]}],"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":105,"character":17}],"permalink":"/api/types/interface/WorkspaceProjectsConfig","previousId":745,"nextId":618},{"id":618,"name":"YarnConfig","kind":256,"kindString":"Interface","flags":{},"children":[{"id":619,"name":"plugins","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":94,"character":4}],"type":{"type":"array","elementType":{"type":"intrinsic","name":"string"}}},{"id":620,"name":"version","kind":1024,"kindString":"Property","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":95,"character":4}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"}]}}],"groups":[{"title":"Properties","children":[619,620]}],"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":93,"character":17}],"permalink":"/api/types/interface/YarnConfig","previousId":729,"nextId":219},{"id":219,"name":"ActionNode","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":54,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":220,"name":"ActionNodeInstallDeps"},{"type":"reference","id":223,"name":"ActionNodeInstallProjectDeps"},{"type":"reference","id":229,"name":"ActionNodeRunPersistentTarget"},{"type":"reference","id":226,"name":"ActionNodeRunTarget"},{"type":"reference","id":232,"name":"ActionNodeSetupTool"},{"type":"reference","id":235,"name":"ActionNodeSyncProject"}]},"permalink":"/api/types#ActionNode","previousId":618,"nextId":172},{"id":172,"name":"ActionStatus","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/pipeline.d.ts","line":2,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"cached-from-remote"},{"type":"literal","value":"cached"},{"type":"literal","value":"failed-and-abort"},{"type":"literal","value":"failed"},{"type":"literal","value":"invalid"},{"type":"literal","value":"passed"},{"type":"literal","value":"running"},{"type":"literal","value":"skipped"}]},"permalink":"/api/types#ActionStatus","previousId":219,"nextId":609},{"id":609,"name":"BinEntry","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":80,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":604,"name":"BinConfig"}]},"permalink":"/api/types#BinEntry","previousId":172,"nextId":654},{"id":654,"name":"CodeownersOrderBy","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":1,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"file-source"},{"type":"literal","value":"project-name"}]},"permalink":"/api/types#CodeownersOrderBy","previousId":609,"nextId":292},{"id":292,"name":"DependencyScope","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":2,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"build"},{"type":"literal","value":"development"},{"type":"literal","value":"peer"},{"type":"literal","value":"production"}]},"permalink":"/api/types#DependencyScope","previousId":654,"nextId":293},{"id":293,"name":"DependencySource","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":3,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"explicit"},{"type":"literal","value":"implicit"}]},"permalink":"/api/types#DependencySource","previousId":292,"nextId":79},{"id":79,"name":"EventType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":24,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L24"}],"type":{"type":"union","types":[{"type":"literal","value":"action.finished"},{"type":"literal","value":"action.started"},{"type":"literal","value":"dependencies.installed"},{"type":"literal","value":"dependencies.installing"},{"type":"literal","value":"pipeline.aborted"},{"type":"literal","value":"pipeline.finished"},{"type":"literal","value":"pipeline.started"},{"type":"literal","value":"project.synced"},{"type":"literal","value":"project.syncing"},{"type":"literal","value":"target-output.archived"},{"type":"literal","value":"target-output.archiving"},{"type":"literal","value":"target-output.cache-check"},{"type":"literal","value":"target-output.hydrated"},{"type":"literal","value":"target-output.hydrating"},{"type":"literal","value":"target.ran"},{"type":"literal","value":"target.running"},{"type":"literal","value":"tool.installed"},{"type":"literal","value":"tool.installing"},{"type":"literal","value":"workspace.synced"},{"type":"literal","value":"workspace.syncing"}]},"permalink":"/api/types#EventType","previousId":293,"nextId":666},{"id":666,"name":"HasherOptimization","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":19,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"accuracy"},{"type":"literal","value":"performance"}]},"permalink":"/api/types#HasherOptimization","previousId":79,"nextId":667},{"id":667,"name":"HasherWalkStrategy","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":20,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"glob"},{"type":"literal","value":"vcs"}]},"permalink":"/api/types#HasherWalkStrategy","previousId":666,"nextId":300},{"id":300,"name":"LanguageType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":11,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"bash"},{"type":"literal","value":"batch"},{"type":"literal","value":"go"},{"type":"literal","value":"javascript"},{"type":"literal","value":"php"},{"type":"literal","value":"python"},{"type":"literal","value":"ruby"},{"type":"literal","value":"rust"},{"type":"literal","value":"typescript"},{"type":"literal","value":"unknown"}]},"permalink":"/api/types#LanguageType","previousId":667,"nextId":564},{"id":564,"name":"NodePackageManager","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":19,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"npm"},{"type":"literal","value":"pnpm"},{"type":"literal","value":"yarn"}]},"permalink":"/api/types#NodePackageManager","previousId":300,"nextId":560},{"id":560,"name":"NodeProjectAliasFormat","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":14,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"name-and-scope"},{"type":"literal","value":"name-only"}]},"permalink":"/api/types#NodeProjectAliasFormat","previousId":564,"nextId":561},{"id":561,"name":"NodeVersionFormat","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":15,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"file"},{"type":"literal","value":"link"},{"type":"literal","value":"star"},{"type":"literal","value":"version"},{"type":"literal","value":"version-caret"},{"type":"literal","value":"version-tilde"},{"type":"literal","value":"workspace"},{"type":"literal","value":"workspace-caret"},{"type":"literal","value":"workspace-tilde"}]},"permalink":"/api/types#NodeVersionFormat","previousId":560,"nextId":567},{"id":567,"name":"NodeVersionManager","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":23,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"nodenv"},{"type":"literal","value":"nvm"}]},"permalink":"/api/types#NodeVersionManager","previousId":561,"nextId":54},{"id":54,"name":"Nullable","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/common.ts","line":3,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/common.ts#L3"}],"typeParameters":[{"id":55,"name":"T","kind":131072,"kindString":"Type parameter","flags":{}}],"type":{"type":"mapped","parameter":"K","parameterType":{"type":"typeOperator","operator":"keyof","target":{"type":"reference","id":55,"name":"T"}},"templateType":{"type":"union","types":[{"type":"indexedAccess","indexType":{"type":"reference","name":"K"},"objectType":{"type":"reference","id":55,"name":"T"}},{"type":"literal","value":null}]}},"permalink":"/api/types#Nullable","previousId":567,"nextId":352},{"id":352,"name":"OwnersPaths","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":74,"character":12}],"type":{"type":"union","types":[{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#OwnersPaths","previousId":54,"nextId":555},{"id":555,"name":"PartialBinEntry","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/toolchain-config.d.ts","line":7,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":550,"name":"PartialBinConfig"}]},"permalink":"/api/types#PartialBinEntry","previousId":352,"nextId":301},{"id":301,"name":"PartialOwnersPaths","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":12,"character":12}],"type":{"type":"union","types":[{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#PartialOwnersPaths","previousId":555,"nextId":299},{"id":299,"name":"PartialProjectDependsOn","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":10,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":294,"name":"PartialDependencyConfig"}]},"permalink":"/api/types#PartialProjectDependsOn","previousId":301,"nextId":396},{"id":396,"name":"PartialTaskCommandArgs","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":1,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]},"permalink":"/api/types#PartialTaskCommandArgs","previousId":299,"nextId":503},{"id":503,"name":"PartialTemplateVariable","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":31,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":478,"name":"PartialTemplateVariableBoolSetting"},{"type":"reference","id":487,"name":"PartialTemplateVariableEnumSetting"},{"type":"reference","id":493,"name":"PartialTemplateVariableNumberSetting"},{"type":"reference","id":498,"name":"PartialTemplateVariableStringSetting"}]},"permalink":"/api/types#PartialTemplateVariable","previousId":396,"nextId":486},{"id":486,"name":"PartialTemplateVariableEnumValue","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":11,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":483,"name":"PartialTemplateVariableEnumValueConfig"}]},"permalink":"/api/types#PartialTemplateVariableEnumValue","previousId":503,"nextId":680},{"id":680,"name":"PartialWorkspaceProjects","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":38,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":677,"name":"PartialWorkspaceProjectsConfig"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#PartialWorkspaceProjects","previousId":486,"nextId":88},{"id":88,"name":"PayloadActionFinished","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":59,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L59"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"action.finished"},{"type":"reference","id":84,"name":"EventActionFinished"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadActionFinished","previousId":680,"nextId":83},{"id":83,"name":"PayloadActionStarted","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":51,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L51"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"action.started"},{"type":"reference","id":80,"name":"EventActionStarted"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadActionStarted","previousId":88,"nextId":97},{"id":97,"name":"PayloadDependenciesInstalled","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":77,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L77"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"dependencies.installed"},{"type":"reference","id":93,"name":"EventDependenciesInstalled"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadDependenciesInstalled","previousId":83,"nextId":92},{"id":92,"name":"PayloadDependenciesInstalling","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":66,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L66"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"dependencies.installing"},{"type":"reference","id":89,"name":"EventDependenciesInstalling"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadDependenciesInstalling","previousId":97,"nextId":109},{"id":109,"name":"PayloadPipelineAborted","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":101,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L101"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"pipeline.aborted"},{"type":"reference","id":107,"name":"EventPipelineAborted"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadPipelineAborted","previousId":92,"nextId":122},{"id":122,"name":"PayloadPipelineFinished","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":120,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L120"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"pipeline.finished"},{"type":"reference","id":114,"name":"EventPipelineFinished"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadPipelineFinished","previousId":109,"nextId":113},{"id":113,"name":"PayloadPipelineStarted","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":108,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L108"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"pipeline.started"},{"type":"reference","id":110,"name":"EventPipelineStarted"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadPipelineStarted","previousId":122,"nextId":106},{"id":106,"name":"PayloadProjectSynced","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":95,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L95"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"project.synced"},{"type":"reference","id":102,"name":"EventProjectSynced"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadProjectSynced","previousId":113,"nextId":101},{"id":101,"name":"PayloadProjectSyncing","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":87,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L87"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"project.syncing"},{"type":"reference","id":98,"name":"EventProjectSyncing"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadProjectSyncing","previousId":106,"nextId":142},{"id":142,"name":"PayloadTargetOutputArchived","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":155,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L155"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.archived"},{"type":"reference","id":136,"name":"EventTargetOutputArchived"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputArchived","previousId":101,"nextId":135},{"id":135,"name":"PayloadTargetOutputArchiving","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":142,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L142"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.archiving"},{"type":"reference","id":130,"name":"EventTargetOutputArchiving"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputArchiving","previousId":142,"nextId":159},{"id":159,"name":"PayloadTargetOutputCacheCheck","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":190,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L190"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.cache-check"},{"type":"reference","id":156,"name":"EventTargetOutputCacheCheck"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputCacheCheck","previousId":135,"nextId":155},{"id":155,"name":"PayloadTargetOutputHydrated","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":180,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L180"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.hydrated"},{"type":"reference","id":149,"name":"EventTargetOutputHydrated"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputHydrated","previousId":159,"nextId":148},{"id":148,"name":"PayloadTargetOutputHydrating","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":167,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L167"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target-output.hydrating"},{"type":"reference","id":143,"name":"EventTargetOutputHydrating"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetOutputHydrating","previousId":155,"nextId":129},{"id":129,"name":"PayloadTargetRan","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":133,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L133"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target.ran"},{"type":"reference","id":126,"name":"EventTargetRan"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetRan","previousId":148,"nextId":125},{"id":125,"name":"PayloadTargetRunning","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":126,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L126"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"target.running"},{"type":"reference","id":123,"name":"EventTargetRunning"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadTargetRunning","previousId":129,"nextId":166},{"id":166,"name":"PayloadToolInstalled","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":206,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L206"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"tool.installed"},{"type":"reference","id":163,"name":"EventToolInstalled"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadToolInstalled","previousId":125,"nextId":162},{"id":162,"name":"PayloadToolInstalling","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":199,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L199"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"tool.installing"},{"type":"reference","id":160,"name":"EventToolInstalling"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadToolInstalling","previousId":166,"nextId":171},{"id":171,"name":"PayloadWorkspaceSynced","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":214,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L214"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"workspace.synced"},{"type":"reference","id":169,"name":"EventWorkspaceSynced"}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadWorkspaceSynced","previousId":162,"nextId":167},{"id":167,"name":"PayloadWorkspaceSyncing","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/src/events.ts","line":208,"character":12,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L208"}],"type":{"type":"reference","id":71,"typeArguments":[{"type":"literal","value":"workspace.syncing"},{"type":"reflection","declaration":{"id":168,"name":"__type","kind":65536,"kindString":"Type literal","flags":{},"sources":[{"fileName":"types/src/events.ts","line":208,"character":74,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/events.ts#L208"}]}}],"name":"WebhookPayload"},"permalink":"/api/types#PayloadWorkspaceSyncing","previousId":171,"nextId":419},{"id":419,"name":"PlatformType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":25,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"deno"},{"type":"literal","value":"node"},{"type":"literal","value":"rust"},{"type":"literal","value":"system"},{"type":"literal","value":"unknown"}]},"permalink":"/api/types#PlatformType","previousId":167,"nextId":351},{"id":351,"name":"ProjectDependsOn","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":73,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":346,"name":"DependencyConfig"}]},"permalink":"/api/types#ProjectDependsOn","previousId":419,"nextId":325},{"id":325,"name":"ProjectType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/project-config.d.ts","line":42,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"application"},{"type":"literal","value":"library"},{"type":"literal","value":"tool"},{"type":"literal","value":"unknown"}]},"permalink":"/api/types#ProjectType","previousId":351,"nextId":440},{"id":440,"name":"TaskCommandArgs","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":49,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":null},{"type":"intrinsic","name":"string"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}}]},"permalink":"/api/types#TaskCommandArgs","previousId":325,"nextId":399},{"id":399,"name":"TaskMergeStrategy","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":4,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"append"},{"type":"literal","value":"prepend"},{"type":"literal","value":"replace"}]},"permalink":"/api/types#TaskMergeStrategy","previousId":440,"nextId":397},{"id":397,"name":"TaskOptionAffectedFiles","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":2,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"literal","value":"args"},{"type":"literal","value":"env"}]},"permalink":"/api/types#TaskOptionAffectedFiles","previousId":399,"nextId":398},{"id":398,"name":"TaskOptionEnvFile","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":3,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"boolean"},{"type":"intrinsic","name":"string"}]},"permalink":"/api/types#TaskOptionEnvFile","previousId":397,"nextId":400},{"id":400,"name":"TaskOutputStyle","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":5,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"buffer"},{"type":"literal","value":"buffer-only-failure"},{"type":"literal","value":"hash"},{"type":"literal","value":"none"},{"type":"literal","value":"stream"}]},"permalink":"/api/types#TaskOutputStyle","previousId":398,"nextId":420},{"id":420,"name":"TaskType","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/tasks-config.d.ts","line":26,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"build"},{"type":"literal","value":"run"},{"type":"literal","value":"test"}]},"permalink":"/api/types#TaskType","previousId":400,"nextId":539},{"id":539,"name":"TemplateVariable","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":76,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":514,"name":"TemplateVariableBoolSetting"},{"type":"reference","id":523,"name":"TemplateVariableEnumSetting"},{"type":"reference","id":529,"name":"TemplateVariableNumberSetting"},{"type":"reference","id":534,"name":"TemplateVariableStringSetting"}]},"permalink":"/api/types#TemplateVariable","previousId":420,"nextId":522},{"id":522,"name":"TemplateVariableEnumValue","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/template-config.d.ts","line":56,"character":12}],"type":{"type":"union","types":[{"type":"intrinsic","name":"string"},{"type":"reference","id":519,"name":"TemplateVariableEnumValueConfig"}]},"permalink":"/api/types#TemplateVariableEnumValue","previousId":539,"nextId":686},{"id":686,"name":"VcsManager","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":47,"character":12}],"type":{"type":"literal","value":"git"},"permalink":"/api/types#VcsManager","previousId":522,"nextId":687},{"id":687,"name":"VcsProvider","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":48,"character":12}],"type":{"type":"union","types":[{"type":"literal","value":"bitbucket"},{"type":"literal","value":"github"},{"type":"literal","value":"gitlab"},{"type":"literal","value":"other"}]},"permalink":"/api/types#VcsProvider","previousId":686,"nextId":732},{"id":732,"name":"WorkspaceProjects","kind":4194304,"kindString":"Type alias","flags":{},"sources":[{"fileName":"types/cjs/workspace-config.d.ts","line":109,"character":12}],"type":{"type":"union","types":[{"type":"reference","id":729,"name":"WorkspaceProjectsConfig"},{"type":"array","elementType":{"type":"intrinsic","name":"string"}},{"type":"reference","typeArguments":[{"type":"intrinsic","name":"string"},{"type":"intrinsic","name":"string"}],"name":"Record","qualifiedName":"Record","package":"typescript"}]},"permalink":"/api/types#WorkspaceProjects","previousId":687}],"groups":[{"title":"Interfaces","children":[179,193,220,223,229,226,232,235,173,604,709,713,610,346,56,84,80,93,89,107,114,110,102,98,136,130,156,149,143,126,123,163,160,169,716,238,718,720,471,621,727,614,353,550,655,659,556,294,662,664,668,433,571,675,562,302,565,332,308,314,321,316,330,326,681,585,421,401,504,509,478,487,483,493,498,597,589,688,695,677,568,616,275,382,359,365,372,367,380,376,62,203,733,59,635,190,258,459,242,441,540,545,514,523,519,529,534,647,639,738,71,745,729,618]},{"title":"Type Aliases","children":[219,172,609,654,292,293,79,666,667,300,564,560,561,567,54,352,555,301,299,396,503,486,680,88,83,97,92,109,122,113,106,101,142,135,159,155,148,129,125,166,162,171,167,419,351,325,440,399,397,398,400,420,539,522,686,687,732]}],"sources":[{"fileName":"types/src/index.ts","line":1,"character":0,"url":"https://github.com/moonrepo/moon/blob/a13214f/packages/types/src/index.ts#L1"}],"permalink":"/api/types"},"urlSlug":"types"}],"packageName":"@moonrepo/types","packageVersion":"1.6.0"}]')}}]); \ No newline at end of file diff --git a/assets/js/1cb65c7d.29556c11.js b/assets/js/1cb65c7d.29556c11.js new file mode 100644 index 00000000000..4fd9612086d --- /dev/null +++ b/assets/js/1cb65c7d.29556c11.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3168],{59220:(A,e,t)=>{t.d(e,{Z:()=>l});var g=t(27378),C=t(9619);function l(A){let{className:e,status:t}=A;switch(t){case"experimental":return g.createElement(C.Z,{className:e,text:"Experimental",variant:"failure"});case"in-development":return g.createElement(C.Z,{className:e,text:"In development",variant:"success"});case"coming-soon":return g.createElement(C.Z,{className:e,text:"Coming soon",variant:"warning"});case"new":return g.createElement(C.Z,{className:e,text:"New",variant:"info"});default:return null}}},33453:(A,e,t)=>{t.d(e,{Z:()=>I});var g=t(27378),C=t(40624),l=t(81884);function I(A){let{children:e,href:t,color:I}=A;return g.createElement(l.default,{href:t,className:(0,C.Z)("inline-flex items-center justify-center px-2 py-1 sm:px-3 sm:py-2 text-base font-bold rounded-md text-white hover:text-white hover:scale-105 md:text-lg transition-transform",I??"bg-purple-600")},e)}},75969:(A,e,t)=>{t.d(e,{Z:()=>r});var g=t(27378),C=t(40624),l=t(31792),I=t(9187),a=t(30658),c=t(59220);const m={1:"from-purple-600 to-blurple-600",2:"from-pink-400 to-red-400",3:"from-teal-400 to-slate-100",4:"from-yellow-300 to-green-600"},F={1:"text-blurple-300",2:"text-pink-500",3:"text-teal-600",4:"text-green-600"};function r(A){let{header:e,description:t,features:r,reversed:n,tier:d}=A;return g.createElement("div",null,g.createElement("div",{className:"relative py-4 sm:py-5 lg:py-6"},g.createElement("div",{className:"mx-auto max-w-md px-2 sm:max-w-3xl sm:px-3 lg:max-w-7xl lg:px-4"},g.createElement("div",{className:(0,C.Z)("md:flex items-center justify-between",n&&"flex-row-reverse")},g.createElement("aside",{className:(0,C.Z)("md:w-1/3 mx-2 md:mx-0 p-2 sm:p-3 md:p-4 drop-shadow z-0 rounded-t-lg text-center",n?"md:rounded-tl-none md:rounded-tr-lg md:rounded-bl-none md:rounded-br-lg bg-gradient-to-bl md:pl-0 md:text-left":"md:rounded-tl-lg md:rounded-tr-none md:rounded-bl-lg md:rounded-br-none bg-gradient-to-br md:pr-0 md:text-right",m[d])},g.createElement("h2",{className:(0,C.Z)("m-0 px-1 py-0.5 inline-block text-base font-semibold uppercase tracking-wider text-white bg-black/20 rounded",n?"md:rounded-tl-none md:rounded-bl-none md:pl-4":"md:rounded-tr-none md:rounded-br-none md:pr-4")},e),g.createElement(I.Z,{className:(0,C.Z)("mt-2 text-white",n?"md:ml-4":"md:mr-4"),level:2},t)),g.createElement("section",{className:"md:w-2/3 bg-white rounded-lg p-2 md:p-3 lg:p-4 drop-shadow z-10"},g.createElement("ul",{className:"m-0 p-0 list-none grid grid-cols-1 sm:grid-cols-2 gap-2 md:gap-3 lg:gap-4"},r.map((A=>g.createElement("li",{key:A.title,className:"flex"},g.createElement("div",{className:"pt-1 w-9 shrink-0 grow-0"},g.createElement(l.Z,{icon:A.icon,className:(0,C.Z)("text-5xl justify-center flex",F[d]),style:{maxWidth:54}})),g.createElement("div",{className:"ml-1"},g.createElement(I.Z,{level:4,className:"text-gray-900"},A.title),A.status&&g.createElement("p",{className:"m-0"},g.createElement(c.Z,{status:A.status})),g.createElement(a.ZP,{className:"mt-1 mb-0",variant:"muted"},A.description)))))))))))}},81271:(A,e,t)=>{t.d(e,{Z:()=>C});var g=t(27378);function C(A){let{icon:e,text:t}=A;return g.createElement("h1",{className:"text-white flex justify-center md:justify-start items-stretch gap-3",style:{height:85}},g.createElement("div",{className:"relative"},e),g.createElement("div",{className:"relative"},t))}},87129:(A,e,t)=>{t.d(e,{Z:()=>a});var g=t(27378),C=t(40624),l=t(81884),I=t(30658);function a(A){let{cols:e=3}=A;return g.createElement("div",{className:(0,C.Z)("grid gap-4 px-4",6===e?"grid-cols-6":"grid-cols-3")},g.createElement("div",{className:"text-center"},g.createElement(l.default,{href:"/docs/proto/tools#bun"},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},g.createElement("path",{fill:"currentColor",d:"M64 10.308c-5.12 0-10.24 2.288-16.231 5.71a360.541 360.541 0 0 0-6.144 3.605c-3.908 2.32-8.295 4.97-13.415 7.604C10.546 36.427 0 51.78 0 68.237c0 27.27 28.706 49.455 64 49.455s64-22.185 64-49.454c0-16.474-10.549-31.811-28.213-41.01-6.314-3.276-11.11-6.14-15.36-8.674-1.826-1.119-3.533-2.141-5.24-3.079C73.59 12.282 69.12 10.308 64 10.308Zm0 4.115c4.13 0 7.902 1.646 13.073 4.608 1.553.905 3.258 1.925 5.119 3.027 4.079 2.436 9.113 5.53 15.564 8.821 16.265 8.443 25.977 22.415 25.977 37.359 0 24.998-26.794 45.34-59.733 45.34-32.939 0-59.733-20.342-59.733-45.34 0-14.944 9.71-28.917 25.958-37.392 5.12-2.683 9.676-5.364 13.652-7.733 2.116-1.251 4.113-2.454 6.042-3.54 5.546-3.094 9.95-5.15 14.081-5.15zm3.987 2.75c-.534-.001-.811.721-.318 1.067v.066a27.418 27.418 0 0 1 8.023 8.454 26.356 26.356 0 0 1 3.666 10.9.528.528 0 0 0 .109.39.577.577 0 0 0 .767.125.542.542 0 0 0 .235-.333c1.57-5.744.682-15.536-12.238-20.621a.68.68 0 0 0-.243-.048zm-4.508.406c-.409.032-.777.51-.52.942v.064a26.113 26.113 0 0 1 3.889 10.796 25.818 25.818 0 0 1-1.142 11.373c-.205.576.528 1.07.938.592 3.737-4.608 6.997-13.757-2.765-23.631a.536.536 0 0 0-.4-.136zm-3.875.41a.6.6 0 0 0-.52.596 26.19 26.19 0 0 1-2.48 11.273 27.107 27.107 0 0 1-7.129 9.25c-.478.412-.102 1.202.512.971 5.752-2.156 13.517-8.607 10.24-21.625-.068-.37-.354-.506-.623-.464zm-5.04 2.282a.628.628 0 0 0-.533.34 28.014 28.014 0 0 1-7.298 9.241 29.244 29.244 0 0 1-10.57 5.569c-.615.181-.63 1.054.018 1.037 6.144.362 16.025-2.386 18.977-15.552.096-.411-.247-.654-.593-.635zM42.797 55.206a9.7 9.7 0 0 0-3.367.686 9.339 9.339 0 0 0-4.223 3.34 8.84 8.84 0 0 0-1.585 5.039c0 2.402.988 4.706 2.748 6.406 1.76 1.7 4.146 2.658 6.637 2.663a9.656 9.656 0 0 0 5.23-1.521 9.15 9.15 0 0 0 3.47-4.067 8.765 8.765 0 0 0 .544-5.24 8.975 8.975 0 0 0-2.57-4.647 9.513 9.513 0 0 0-4.815-2.486 9.744 9.744 0 0 0-2.07-.173zm42.344 0a9.707 9.707 0 0 0-3.373.681 9.34 9.34 0 0 0-4.232 3.34 8.837 8.837 0 0 0-1.59 5.044c-.004 2.395.976 4.694 2.726 6.394 1.75 1.7 4.127 2.661 6.61 2.675a9.66 9.66 0 0 0 5.244-1.496 9.155 9.155 0 0 0 3.494-4.057 8.766 8.766 0 0 0 .562-5.243 8.971 8.971 0 0 0-2.558-4.66 9.51 9.51 0 0 0-4.813-2.5 9.747 9.747 0 0 0-2.07-.178zM40.3 58.037a3.574 3.574 0 0 1 2.327 1c.494.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525 3.625 3.625 0 0 1-1.967.567 3.6 3.6 0 0 1-2.487-1.004 3.349 3.349 0 0 1-1.03-2.404c0-.675.21-1.334.598-1.894.39-.56.941-.997 1.588-1.254a3.647 3.647 0 0 1 1.525-.255zm42.275 0c.173.009.345.03.517.063a3.58 3.58 0 0 1 1.81.937c.493.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525c-.583.373-1.27.57-1.969.567h-.033a3.598 3.598 0 0 1-2.465-1.017 3.346 3.346 0 0 1-1.016-2.391c0-.675.207-1.334.595-1.894.39-.56.944-.997 1.59-1.254a3.647 3.647 0 0 1 1.525-.255zM53.623 77.996a2.482 2.482 0 0 0-1.065.204c-.334.145-.63.363-.864.635-.197.226-.338.49-.415.775a1.904 1.904 0 0 0-.029.871c.806 3.245 2.667 6.156 5.308 8.31a12.881 12.881 0 0 0 7.594 3.292c2.838-.244 5.51-1.403 7.58-3.291 2.641-2.155 4.5-5.066 5.305-8.31a1.886 1.886 0 0 0-.018-.87 1.937 1.937 0 0 0-.409-.777 2.446 2.446 0 0 0-.864-.629 2.538 2.538 0 0 0-1.063-.21zm0 1.91 21.06.031a.369.369 0 0 1 .342.15 13.448 13.448 0 0 1-2.402 4.898l-.073-.06c-2.171-1.994-5.042-3.129-8.04-3.177-1.602.013-3.18.37-4.623 1.042a10.806 10.806 0 0 0-3.685 2.802 13.47 13.47 0 0 1-2.937-5.538c.017-.033.085-.148.358-.148zm10.973 3.504c2.556.073 4.991 1.065 6.827 2.782l.083.068c-.354.358-.73.699-1.125 1.02a10.885 10.885 0 0 1-6.229 2.845 10.795 10.795 0 0 1-6.23-2.88 13.946 13.946 0 0 1-.482-.412h.006a9.078 9.078 0 0 1 3.166-2.502 9.427 9.427 0 0 1 3.984-.92z"})))),g.createElement("div",{className:"text-center"},g.createElement(l.default,{href:"/docs/proto/tools#deno"},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},g.createElement("path",{fill:"currentColor",d:"M59.016 13.328c-.239.024-1 .113-1.688.176-9.777 1.023-19.406 5.164-27.258 11.738-1.449 1.203-4.75 4.504-5.953 5.953-6.5 7.766-10.3 16.48-11.703 26.793-.312 2.29-.312 10.016 0 12.305 1.402 10.312 5.203 19.027 11.703 26.793 1.203 1.45 4.504 4.75 5.953 5.953 7.766 6.5 16.48 10.3 26.793 11.703 2.29.313 10.016.313 12.305 0 10.312-1.402 19.027-5.203 26.793-11.703 1.45-1.203 4.75-4.504 5.953-5.953 6.5-7.766 10.3-16.48 11.7-26.793.316-2.29.316-10.016 0-12.305-1.4-10.312-5.2-19.027-11.7-26.793-1.203-1.449-4.504-4.75-5.953-5.953-7.738-6.476-16.543-10.324-26.719-11.687-1.101-.153-2.699-.215-5.664-.239-2.262-.027-4.328-.011-4.562.012zm.625 5.402c0 1.461.097 4.637.238 7.653.074 1.472.16 3.586.2 4.687.136 3.903.55 14.14.612 15.055l.063.91-.563-.062c-.312-.024-.601-.098-.652-.137-.035-.05-.125-.914-.176-1.926-.222-4.45-.96-21.719-1.035-24.242l-.078-2.777.352-.047c.187-.028.5-.063.699-.078l.34-.012zm11.964-.3c.012.011.051 3.789.086 8.39.051 4.614.114 8.75.153 9.2.035.464.023.863-.04.89-.05.035-.363.035-.675 0l-.574-.05-.086-3.641a692.868 692.868 0 00-.14-4.961c-.099-2.215-.188-9.727-.11-9.914.047-.14.187-.153.71-.063.364.074.665.137.676.149zm-28.921 4.187c.078.113.664 7.004 1.39 16.016.239 3.066.473 5.867.512 6.215.062.636.05.664-.352.914-.222.136-.449.25-.5.25-.035 0-.109-.325-.148-.727-.176-1.625-.852-9.476-1.324-15.152-.278-3.34-.528-6.328-.563-6.653-.062-.55-.05-.601.274-.773.398-.215.625-.25.71-.09zm34.421 2.516c.352.125.387.187.465.898.125 1.25.086 7.227-.05 7.227-.364 0-1.114-.426-1.176-.664-.04-.149-.074-1.922-.074-3.938 0-4.062-.051-3.824.835-3.523zm-23.093.586c0 .336.09 2.199.187 4.164.102 1.96.215 4.449.266 5.527.086 2.176.11 2.098-.727 2.149-.414.011-.414.011-.437-.614-.024-.347-.086-1.437-.164-2.437-.063-1-.211-3.164-.313-4.813a117.11 117.11 0 00-.261-3.64c-.075-.625-.063-.649.273-.774.203-.074.55-.136.777-.136.399-.012.399-.012.399.574zm34.683 1.715l.426.171.09 1.676c.035.914.062 2.89.035 4.38l-.035 2.722-.527-.262-.524-.25-.039-4.152c-.023-2.285-.012-4.223.012-4.313.05-.187.05-.187.562.028zM65.867 29.07c.074.075.25 6.137.262 9.215l.012 1.852-.586-.09c-.34-.04-.614-.074-.625-.086-.04-.027-.414-9.29-.414-10.191v-.926l.636.074c.364.05.676.113.715.152zm28.793.887c.153.176.176 2.914.215 18.016.035 17.343.035 17.793-.188 17.793a.806.806 0 01-.44-.164c-.188-.137-.212-1.649-.274-16.465-.051-8.977-.114-17.13-.149-18.117l-.078-1.801.363.261c.215.153.454.364.551.477zM83.445 32.52c.063.05.125.761.137 1.578.063 2.761.074 19.703.012 19.754-.024.023-.25-.04-.5-.137l-.45-.188v-21.27l.352.075c.188.05.387.125.45.188zm-34.507.699c.035.34.097 1.101.136 1.726.04.614.125 2.016.2 3.102.152 2.2.124 2.34-.587 2.34-.374 0-.425-.04-.476-.414-.125-.739-.563-6.891-.5-6.989.062-.09.715-.312 1.012-.34.078-.011.175.25.215.575zm-20.68 3.191c.137 1.324.41 4.102.613 6.164.211 2.063.387 3.813.387 3.887 0 .152-.965.625-1.063.527-.062-.062-1.312-11.129-1.312-11.629 0-.3.96-1.562 1.086-1.425.039.023.164 1.136.289 2.476zm49.023 1.313l.364.21.011 2.704c.012 1.472.04 3.125.04 3.66.023 1.125-.114 1.312-.79 1.078l-.386-.14V44.16c0-.597-.04-2.336-.09-3.875l-.075-2.777h.29c.148 0 .437.101.636.215zm-43.535 4.851c.227 2.399.586 6.45.824 9l.426 4.63-.488.483-.473.489-.09-.989c-.05-.55-.3-3.097-.562-5.675a1449.23 1449.23 0 01-.824-8.301l-.352-3.602.488-.449c.438-.414.489-.426.575-.2.05.126.261 2.2.476 4.614zm-9.363 1.512c.273 2.465 1 9.016 1.625 14.555s1.21 10.875 1.324 11.875c.102 1 .273 2.515.375 3.379.176 1.46.176 1.562-.023 1.71-.301.227-.426.2-.426-.062 0-.113-.113-1.063-.25-2.086-.227-1.715-.602-4.617-1.438-11.129a740.832 740.832 0 01-.75-5.812c-.25-1.891-.613-4.703-.816-6.254-.2-1.551-.535-4.2-.75-5.914-.223-1.7-.36-3.211-.324-3.375.09-.336.824-1.512.902-1.438.023.035.273 2.074.55 4.55zm-3.828 5.387c.187 1.504.539 4.242.777 6.101.234 1.852.535 4.164.672 5.13l.238 1.75-.262.226c-.148.125-.3.172-.351.125-.047-.051-.149-.551-.223-1.102a995.27 995.27 0 00-1.039-7.129l-.887-6.125.286-.851c.152-.461.312-.836.351-.836.051 0 .238 1.226.438 2.71zm68.64-1.637c.176.176.203.95.203 6.691v6.489h-.351c-.762 0-.75.187-.8-6.914l-.036-6.465h.398c.211 0 .489.086.586.199zm-27.367 2.238c2.824.426 5.29 1.215 7.727 2.465 1.574.813 2.324 1.375 4.074 3.05 2.601 2.49 4.203 4.665 5.703 7.74 2.188 4.476 3.04 8.437 4.113 19.066.489 4.765 1.125 13.402 1.262 16.94.04 1.028.125 2.716.203 3.75.137 2.204.297 1.903-1.64 2.84-2.688 1.302-5.278 2.2-8.688 3.04-4.176 1.023-6.879 1.347-11.004 1.363l-3 .012.024-1.438c0-.789.074-2.625.152-4.062.375-6.965.297-15.754-.188-20.633-.277-2.8-.812-6.2-1.113-6.95-.062-.163.223-.3 1.461-.726 2.266-.789 4.227-1.777 4.527-2.261.54-.926-.425-2.254-1.652-2.254-.21 0-.848.226-1.437.488-2.801 1.289-8.414 2.8-11.653 3.14-2.238.239-5.715.098-8.125-.34-1.312-.238-3.664-1.124-5.629-2.136-2.261-1.176-3.648-2.738-4.062-4.59-.227-1-.164-3 .125-4.125.312-1.238 1.187-3.039 1.988-4.09 3.563-4.687 10.914-8.75 18.453-10.175 2.403-.45 5.801-.5 8.38-.114zm38.57.387c.45.187.5.238.5.664.028 3.414-.05 11.215-.113 11.54-.012.112-.66.124-.937.026-.172-.062-.2-.738-.2-6.254 0-3.949.051-6.175.125-6.175.063 0 .352.09.625.199zm5.465 6.867l.45.188-.086 10.351c-.102 13.192-.114 13.578-.59 14.715-.774 1.863-.735 2.238-.66-5.937.023-4.09.085-8.227.113-9.192.023-.96.047-3.676.062-6.039 0-2.852.035-4.273.125-4.273.075 0 .336.086.586.187zm-75.191 3.113c.074 1.012.047 1.11-.317 1.91l-.398.852-.148-1.25c-.239-2-.239-2.09.234-2.387.215-.152.441-.25.477-.226.039.023.113.523.152 1.101zm-7.73 7.54c.113 1.023.988 7.824 1.44 11.164.673 5.164.723 5.902.423 5.59-.035-.04-.325-1.778-.625-3.864-1.95-13.48-1.938-13.39-1.774-13.492.336-.227.45-.102.535.601zm9.003 5.726c.075.313.438 3.7.438 4.113 0 .348-.45.676-.649.473-.062-.063-.226-1.125-.351-2.348-.137-1.238-.274-2.527-.313-2.863l-.074-.625.438.5c.25.273.472.61.511.75zm10.09 4.711c.137.125.227.625.336 1.977.188 2.437.215 2.25-.297 2.25-.527 0-.515.039-.687-2.165-.176-2.238-.176-2.21.16-2.21.164 0 .375.074.488.148zm9.903.187c.023.125.085.875.136 1.665.04.789.153 2.562.25 3.937.352 5.05.364 5.691.153 5.691-.239 0-.266-.187-.54-3.753a274.195 274.195 0 00-.414-5.165c-.109-1.359-.187-2.5-.148-2.523.137-.152.5-.039.563.148zm-23.504 2.403c.074.113.546 4.113 1.136 9.578.176 1.648.348 3.238.387 3.535l.063.54-.313-.2c-.238-.164-.324-.324-.324-.613 0-.79-.54-5.977-.95-9.153-.238-1.8-.425-3.386-.425-3.539 0-.261.3-.363.426-.148zm72.152 5.226l-.086 5.227-.313.46c-.714 1.052-.675 1.25-.636-4.6l.023-5.364.461-.477c.25-.25.5-.46.55-.46.04 0 .04 2.351 0 5.214zm-11.563 8.29c.063 7.265.047 7.828-.152 8.05-.125.137-.238.227-.273.188-.09-.098-.215-15.942-.114-16.028.051-.05.176-.074.29-.062.16.035.199.926.25 7.851zm-40.835-4.977c.085.773.398 4.488.523 6.238.074 1.176.074 1.215-.2 1.3-.148.052-.324.04-.374-.022-.086-.09-.364-2.864-.7-7.141l-.09-1.024h.391c.36 0 .387.024.45.649zm-9.829 4.375c.086.09.149.402.149.715 0 .324.152 2.011.312 3.761.477 4.79.516 5.438.301 5.313-.324-.188-.613-.473-.55-.547.027-.05-.024-.676-.126-1.39a65.54 65.54 0 01-.25-2.626c-.047-.722-.16-2.05-.261-2.937-.239-2.188-.223-2.438.05-2.438a.59.59 0 01.375.149zm5.914 8.414c.04.277.114 1.3.164 2.277.086 1.875.047 2.012-.464 1.625-.149-.113-.25-.586-.399-2.011-.261-2.579-.277-2.477.211-2.426.363.035.414.086.488.535zm0 0"}),g.createElement("path",{d:"M39.809 56.063c-1.301.562-1.399 2.328-.176 2.953.89.449 1.789.234 2.254-.54.875-1.425-.551-3.074-2.078-2.413zm8.476 1.203c-1.2.734-1.2 2.511 0 3.25 1.188.71 2.727-.227 2.727-1.653 0-1.375-1.575-2.3-2.727-1.597zm0 0",fill:"currentColor"})))),g.createElement("div",{className:"text-center"},g.createElement(l.default,{href:"/docs/proto/tools#go"},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},g.createElement("g",{fill:"currentColor","fill-rule":"evenodd"},g.createElement("path",{d:"M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zM2.004 60.404c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zM79.58 53.738c-3.819.97-6.425 1.697-10.182 2.666-.91.243-.97.303-1.758-.606-.909-1.03-1.576-1.697-2.848-2.303-3.819-1.878-7.516-1.333-10.97.91-4.121 2.666-6.242 6.605-6.182 11.514.06 4.849 3.394 8.849 8.182 9.516 4.121.545 7.576-.91 10.303-4 .545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818.788-1.879 2.242-5.03 3.09-6.606.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91-.667 4.363-2.303 8.363-4.97 11.878-4.364 5.758-10.06 9.333-17.273 10.303-5.939.788-11.454-.364-16.302-4-4.485-3.394-7.03-7.879-7.697-13.454-.788-6.606 1.151-12.546 5.151-17.758 4.303-5.636 10-9.212 16.97-10.485 5.697-1.03 11.151-.363 16.06 2.97 3.212 2.121 5.515 5.03 7.03 8.545.364.546.122.849-.606 1.03z"}),g.createElement("path",{d:"M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334-3.576-3.09-5.818-7.03-6.545-11.697-1.091-6.848.787-12.909 4.909-18.302 4.424-5.819 9.757-8.849 16.97-10.122 6.181-1.09 12-.484 17.272 3.091 4.788 3.273 7.757 7.697 8.545 13.515 1.03 8.182-1.333 14.849-6.97 20.546-4 4.06-8.909 6.606-14.545 7.757-1.636.303-3.273.364-4.848.546zm14.424-24.485c-.06-.788-.06-1.394-.182-2-1.09-6-6.606-9.394-12.363-8.06-5.637 1.272-9.273 4.848-10.606 10.545-1.091 4.727 1.212 9.515 5.575 11.454 3.334 1.455 6.667 1.273 9.879-.363 4.788-2.485 7.394-6.364 7.697-11.576z","fill-rule":"nonzero"}))))),g.createElement("div",{className:"text-center"},g.createElement(l.default,{href:"/docs/proto/tools#node"},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},g.createElement("path",{fill:"currentColor",d:"M112.678 30.334L68.535 4.729c-2.781-1.584-6.424-1.584-9.227 0L14.82 30.334C11.951 31.985 10 35.088 10 38.407v51.142c0 3.319 1.992 6.423 4.862 8.083l11.729 6.688c5.627 2.772 7.186 2.772 9.746 2.772 8.334 0 12.662-5.039 12.662-13.828v-50.49C49 42.061 49.445 41 48.744 41h-5.622C42.41 41 41 42.061 41 42.773v50.49c0 3.896-3.616 7.773-10.202 4.48L18.676 90.73c-.422-.23-.676-.693-.676-1.181V38.407c0-.482.463-.966.891-1.213l44.378-25.561a1.508 1.508 0 011.415 0l43.963 25.555c.421.253.354.722.354 1.219v51.142c0 .488.092.963-.323 1.198l-44.133 25.576c-.378.227-.87.227-1.285 0l-11.317-6.749c-.341-.198-.752-.269-1.08-.086-3.145 1.783-3.729 2.02-6.679 3.043-.727.253-1.799.692.408 1.929l14.798 8.754a9.29 9.29 0 004.647 1.246 9.303 9.303 0 004.666-1.246l43.976-25.582c2.871-1.672 4.322-4.764 4.322-8.083V38.407c-.001-3.319-1.452-6.414-4.323-8.073zM77.727 81.445c-11.727 0-14.309-3.235-15.17-9.066-.102-.628-.634-1.379-1.274-1.379h-5.73c-.709 0-1.28.86-1.28 1.566 0 7.466 4.06 16.512 23.454 16.512 14.038 0 22.088-5.455 22.088-15.109 0-9.572-6.467-12.084-20.082-13.886-13.762-1.819-15.16-2.738-15.16-5.962 0-2.658 1.184-6.203 11.374-6.203 9.104 0 12.46 1.954 13.841 8.091.119.577.646.991 1.241.991h5.754c.354 0 .691-.143.939-.396.241-.272.367-.613.336-.979-.893-10.569-7.913-15.494-22.112-15.494-12.632 0-20.166 5.334-20.166 14.275 0 9.698 7.497 12.378 19.622 13.577 14.505 1.422 15.633 3.542 15.633 6.395 0 4.956-3.978 7.067-13.308 7.067z"}))),g.createElement(I.ZP,{className:"m-0",variant:"muted"},"+ npm, pnpm, yarn")),g.createElement("div",{className:"text-center"},g.createElement(l.default,{href:"/docs/proto/tools#python"},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},g.createElement("path",{fill:"currentColor",d:"M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545zm74.789 25.921C120.183 40.363 116.178 34 107.682 34H97v12.981C97 57.031 88.206 65 78.489 65H49.33C41.342 65 35 72.326 35 80.326v27.8c0 7.91 6.745 12.564 14.462 14.834 9.242 2.717 17.994 3.208 29.051 0C85.862 120.831 93 116.549 93 108.126V97H64v-4h43.682c8.484 0 11.647-5.776 14.599-14.66 3.047-9.145 2.916-17.799 0-29.529zm-41.955 55.606c3.027 0 5.479 2.479 5.479 5.547 0 3.076-2.451 5.579-5.479 5.579-3.015 0-5.478-2.502-5.478-5.579 0-3.068 2.463-5.547 5.478-5.547z"})))),g.createElement("div",{className:"text-center"},g.createElement(l.default,{href:"/docs/proto/tools#rust"},g.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},g.createElement("path",{d:"M62.271 10.88c-.189.11-.982 1.248-1.763 2.529-1.96 3.217-1.982 3.219-4.615.448-1.713-1.802-2.127-2.132-2.679-2.128-.359.002-.812.124-1.008.271-.195.147-.748 1.317-1.228 2.6-1.099 2.939-1.152 3.034-1.761 3.151-.375.071-1.097-.331-2.828-1.574-1.278-.919-2.532-1.67-2.786-1.67-1.054 0-1.351.576-1.853 3.593-.638 3.836-.616 3.823-4.074 2.252-1.396-.633-2.72-1.152-2.943-1.152-.223 0-.646.24-.939.533-.532.533-.533.535-.388 3.468l.146 2.936-.555.297c-.492.263-.831.231-3.009-.284-2.843-.671-3.443-.653-4.019.122l-.421.566.565 2.421c.31 1.331.609 2.613.665 2.848.055.234-.04.609-.212.832-.284.367-.586.4-3.217.36-4.453-.07-4.706.312-2.866 4.328.585 1.275 1.064 2.433 1.064 2.572 0 .734-.585 1.001-3.098 1.411-1.406.229-2.628.417-2.716.417-.088 0-.352.192-.586.426-.765.765-.548 1.483 1.187 3.932 2.161 3.05 2.157 3.061-1.413 4.427-4.06 1.553-4.142 1.936-1.051 4.868 2.879 2.73 2.882 2.69-.377 4.739-2.469 1.551-2.507 1.588-2.57 2.429-.076 1.023-.058 1.041 2.89 2.842 2.915 1.78 2.915 1.834.054 4.541-3.077 2.91-2.982 3.335 1.081 4.868 3.55 1.339 3.555 1.355 1.39 4.405-1.227 1.729-1.618 2.449-1.618 2.983 0 .999.52 1.254 3.627 1.776 2.617.441 3.2.7 3.2 1.422 0 .148-.48 1.316-1.067 2.594-1.826 3.977-1.618 4.308 2.704 4.308 4.025 0 3.918-.123 3.051 3.507-.654 2.736-.664 3.26-.072 3.851.453.454 1.307.403 3.978-.236 2.04-.487 2.398-.521 2.871-.268l.54.289-.146 2.935c-.145 2.934-.144 2.936.388 3.469.293.293.722.533.952.533.23 0 1.554-.516 2.943-1.147 3.447-1.565 3.425-1.578 4.061 2.246.504 3.031.798 3.594 1.874 3.594.267 0 1.494-.72 2.728-1.6 2.167-1.546 2.729-1.788 3.306-1.421.149.094.727 1.364 1.284 2.822.819 2.144 1.119 2.702 1.575 2.92.868.416 1.405.082 3.445-2.14 2.463-2.683 2.564-2.67 4.575.589 2.221 3.598 2.796 3.59 5.073-.073 1.962-3.156 1.939-3.154 4.591-.384 1.761 1.838 2.136 2.131 2.73 2.131.379 0 .832-.142 1.005-.316.174-.174.75-1.459 1.28-2.855.53-1.397 1.079-2.613 1.221-2.703.561-.357 1.142-.106 3.306 1.43 1.274.905 2.473 1.6 2.758 1.6 1.058 0 1.44-.751 1.88-3.703.376-2.517.452-2.758.947-3.009.487-.247.779-.164 3.063.873 1.389.63 2.713 1.146 2.943 1.146.23 0 .666-.247.967-.549l.549-.548-.151-2.815c-.144-2.688-.131-2.832.298-3.22.441-.399.486-.397 2.952.166 2.986.682 3.543.7 4.104.139.548-.548.542-.668-.208-3.831-.841-3.548-.954-3.422 3.088-3.422 2.755 0 3.062-.039 3.413-.426.586-.648.447-1.39-.732-3.903-.595-1.266-1.078-2.418-1.074-2.56.02-.747.607-1.002 3.32-1.443 1.66-.269 2.902-.581 3.127-.784.754-.681.477-1.567-1.244-3.98-2.157-3.024-2.148-3.053 1.306-4.326 4.136-1.524 4.254-2.032 1.159-4.973-2.867-2.724-2.868-2.709.272-4.637 3.796-2.33 3.802-2.855.067-5.173-3.212-1.993-3.21-1.965-.331-4.699 3.088-2.934 3.004-3.318-1.057-4.871-3.584-1.371-3.595-1.405-1.417-4.394 1.297-1.78 1.618-2.371 1.618-2.981 0-1.066-.478-1.305-3.622-1.813-2.627-.424-3.205-.682-3.205-1.429 0-.142.48-1.285 1.067-2.542 1.149-2.461 1.31-3.446.66-4.035-.349-.316-.817-.361-3.321-.32-2.62.044-2.955.007-3.318-.358-.397-.399-.393-.455.227-3.042.76-3.17.763-3.247.138-3.834-.634-.596-1.03-.586-3.941.099-2.121.5-2.472.533-2.954.275l-.547-.293.151-2.926.152-2.925-.547-.547c-.301-.301-.728-.547-.95-.547-.221 0-1.538.523-2.926 1.161-2.318 1.067-2.567 1.138-3.068.876-.5-.262-.583-.52-1.01-3.127-.493-3.016-.798-3.603-1.869-3.603-.254 0-1.513.755-2.798 1.678-2.11 1.516-2.393 1.659-2.919 1.476-.435-.152-.688-.483-.997-1.306-.229-.606-.667-1.774-.975-2.595-.622-1.656-.969-2.027-1.901-2.027-.52 0-.991.374-2.679 2.127-2.653 2.756-2.663 2.755-4.614-.445-.78-1.279-1.595-2.421-1.812-2.537-.488-.262-1.062-.261-1.511.002m2.418 9.635c2.311 1.645 1.082 5.512-1.752 5.512-2.75 0-4.135-3.313-2.171-5.194 1.108-1.062 2.697-1.191 3.923-.318m-2.906 10.214c1.515.576 2.137.23 5.596-3.104l2.599-2.506 1.1.146c3.45.458 10.312 3.472 14.255 6.261 3.623 2.564 8.438 7.786 10.49 11.377l.439.769-1.944 4.38c-1.07 2.409-1.945 4.633-1.945 4.944 0 .717.47 1.851.923 2.226.191.159 2.006 1.033 4.033 1.942l3.684 1.654.145.937c.187 1.221.212 4.22.042 5.072l-.133.666h-2.103c-2.439 0-2.251-.218-2.383 2.774-.096 2.169-.62 3.368-1.812 4.144-1.942 1.267-5.149 1.037-6.509-.466-.209-.231-.615-1.392-.903-2.581-.841-3.473-1.971-5.423-4.241-7.32-.717-.599-1.303-1.158-1.303-1.243 0-.084.788-.748 1.752-1.473 3.51-2.646 5.528-5.726 5.75-8.777.423-5.819-4.213-11.243-11.109-13.001-1.635-.417-2.333-.43-22.56-.43-11.48 0-20.873-.075-20.873-.166 0-.215 2.551-2.691 4.054-3.933 4.127-3.412 9.488-6.097 15.04-7.531l1.92-.497 2.728 2.766c1.501 1.521 2.972 2.857 3.268 2.97M27.432 48.526c1.257.823 1.772 2.891 1.03 4.134-1.148 1.924-4.056 2.005-5.205.145-1.671-2.702 1.547-6.001 4.175-4.279m74.05.105c3.288 2.005.74 6.937-2.78 5.38-2.35-1.04-2.425-4.252-.127-5.424.959-.489 2.061-.472 2.907.044M37.12 60.907v12.266H26.276l-.43-1.866c-.846-3.675-1.202-7.477-.989-10.591l.149-2.188 3.728-1.672c2.339-1.048 3.843-1.847 4.037-2.144.848-1.293.767-2.217-.423-4.845l-.556-1.227h5.328v12.267m31.22-11.733c2.322.604 3.549 1.833 3.552 3.556.002 1.265-.625 2.059-2.18 2.761-1.101.498-1.276.51-8.219.578l-7.093.068v-7.284h6.355c4.964 0 6.625.07 7.585.321m-2.396 17.602c1.151.32 2.512 1.32 3.21 2.359.733 1.092 1.162 2.512 2.178 7.216.858 3.976 1.41 5.276 2.956 6.968 1.915 2.095 1.471 2.014 11.037 2.014 4.581 0 8.328.073 8.328.163 0 .161-3.155 3.891-3.291 3.891-.039 0-1.687-.345-3.662-.767-5.577-1.191-5.778-1.051-7.058 4.926l-.823 3.84-.743.366c-1.24.612-5.27 1.872-7.359 2.302-3.452.71-7.209.95-10.511.671-5.629-.477-13.083-2.661-13.374-3.92-.062-.267-.437-1.995-.832-3.841-.396-1.846-.877-3.597-1.069-3.891-.923-1.408-1.894-1.495-6.164-.55-1.617.358-3.028.65-3.136.65-.203 0-3.204-3.47-3.204-3.704 0-.073 7.128-.158 15.84-.188l15.84-.054.057-5.627c.04-3.973-.015-5.714-.187-5.92-.192-.232-1.214-.293-4.91-.293H54.4V66.56l5.387.001c2.962.001 5.733.098 6.157.215M41.536 92.365c2.519 1.535 1.311 5.557-1.668 5.554-3.055-.002-4.187-3.987-1.584-5.575.861-.525 2.374-.515 3.252.021m46.126.168c1.235.905 1.646 2.788.881 4.042-2.009 3.295-7.033.676-5.355-2.791.825-1.703 3.018-2.317 4.474-1.251","fill-rule":"evenodd",fill:"currentColor"})))))}},79090:(A,e,t)=>{t.r(e),t.d(e,{default:()=>b});var g,C,l,I,a=t(27378),c=t(21947),m=t(83469),F=t(75969),r=t(81884);function n(){return n=Object.assign?Object.assign.bind():function(A){for(var e=1;e{let{title:e,titleId:t,...c}=A;return a.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",fill:"none",viewBox:"0 0 82 82",role:"img","aria-labelledby":t},c),e?a.createElement("title",{id:t},e):null,a.createElement("g",{clipPath:"url(#a)"},a.createElement("mask",{id:"b",width:82,height:82,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"}},g||(g=a.createElement("path",{fill:"#fff",d:"m81.7 57.522-5.634-17.97a26.648 26.648 0 0 1 0-15.982l5.743-18.3c.977-3.129-1.954-6.057-5.065-5.078L58.488 5.95a26.46 26.46 0 0 1-15.943 0L24.618.302c-3.18-1-6.132 2.069-5.025 5.217l3.27 9.275a26.709 26.709 0 0 1-1.505 21.23L.48 76.051c-1.855 3.559 2.024 7.357 5.533 5.428l37.998-20.97a26.558 26.558 0 0 1 21.685-1.779l10.819 3.838c3.12 1.1 6.181-1.858 5.184-5.047Z"}))),a.createElement("g",{mask:"url(#b)"},a.createElement("mask",{id:"c",width:92,height:93,x:-5,y:-6,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"}},C||(C=a.createElement("path",{fill:"#fff",d:"M-4.994-5.005h91.977v91.982H-4.994V-5.005Z"}))),l||(l=a.createElement("g",{mask:"url(#c)"},a.createElement("path",{fill:"url(#d)",d:"M-5.323-5.025h92.366v92.112H-5.323z"}))))),I||(I=a.createElement("defs",null,a.createElement("clipPath",{id:"a"},a.createElement("path",{fill:"#fff",d:"M0 0h82v82H0z"})),a.createElement("pattern",{id:"d",width:1,height:1,patternContentUnits:"objectBoundingBox"},a.createElement("use",{xlinkHref:"#e",transform:"scale(.00518 .0052)"})),a.createElement("image",{xlinkHref:"data:image/jpeg;base64,/9j/4g1YSUNDX1BST0ZJTEUAAQEAAA1IYXBwbAIQAABtbnRyUkdCIFhZWiAH5wABAAUACQA0ABBhY3NwQVBQTAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJkZXNjAAABXAAAAGJkc2NtAAABwAAAAepjcHJ0AAADrAAAACN3dHB0AAAD0AAAABRyWFlaAAAD5AAAABRnWFlaAAAD+AAAABRiWFlaAAAEDAAAABRyVFJDAAAEIAAACAxhYXJnAAAMLAAAACB2Y2d0AAAMTAAAADBuZGluAAAMfAAAAD5jaGFkAAAMvAAAACxtbW9kAAAM6AAAACh2Y2dwAAANEAAAADhiVFJDAAAEIAAACAxnVFJDAAAEIAAACAxhYWJnAAAMLAAAACBhYWdnAAAMLAAAACBkZXNjAAAAAAAAAAhEaXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAmAAAADGhySFIAAAAIAAAB2GtvS1IAAAAIAAAB2G5iTk8AAAAIAAAB2GlkAAAAAAAIAAAB2Gh1SFUAAAAIAAAB2GNzQ1oAAAAIAAAB2GRhREsAAAAIAAAB2G5sTkwAAAAIAAAB2GZpRkkAAAAIAAAB2Gl0SVQAAAAIAAAB2GVzRVMAAAAIAAAB2HJvUk8AAAAIAAAB2GZyQ0EAAAAIAAAB2GFyAAAAAAAKAAAB4HVrVUEAAAAIAAAB2GhlSUwAAAAIAAAB2HpoVFcAAAAIAAAB2HZpVk4AAAAIAAAB2HNrU0sAAAAIAAAB2HpoQ04AAAAIAAAB2HJ1UlUAAAAIAAAB2GVuR0IAAAAIAAAB2GZyRlIAAAAIAAAB2G1zAAAAAAAIAAAB2GhpSU4AAAAIAAAB2HRoVEgAAAAIAAAB2GNhRVMAAAAIAAAB2GVuQVUAAAAIAAAB2GVzWEwAAAAIAAAB2GRlREUAAAAIAAAB2GVuVVMAAAAIAAAB2HB0QlIAAAAIAAAB2HBsUEwAAAAIAAAB2GVsR1IAAAAIAAAB2HN2U0UAAAAIAAAB2HRyVFIAAAAIAAAB2HB0UFQAAAAIAAAB2GphSlAAAAAIAAAB2ABpAE0AYQBjIA8AaQBNAGEAYwAAdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAyMwAAWFlaIAAAAAAAAPPYAAEAAAABFghYWVogAAAAAAAAc9QAADomAAABblhZWiAAAAAAAABehgAAujcAABPtWFlaIAAAAAAAACR8AAALowAAvdJjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbdmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnwAAAVQAAAEuAAACgAAAAJgAAAAwAAABQQAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAELtwAABZb///NXAAAHKQAA/df///u3///9pgAAA9oAAMD2bW1vZAAAAAAAAAYQAACuAxtimhfPTo6AAAAAAAAAAAAAAAAAAAAAAHZjZ3AAAAAAAAMAAAACZmYAAwAAAAJmZgADAAAAAmZmAAAAAjMzNAAAAAACMzM0AAAAAAIzMzQA/+E4XGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuZjg0NWViMSwgMjAyMi8xMS8wMy0xOToyODo0NSAgICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcEdJbWc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9nL2ltZy8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6aWxsdXN0cmF0b3I9Imh0dHA6Ly9ucy5hZG9iZS5jb20vaWxsdXN0cmF0b3IvMS4wLyIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIgogICAgICAgICAgICB4bWxuczpwZGZ4PSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZngvMS4zLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvanBlZzwvZGM6Zm9ybWF0PgogICAgICAgICA8ZGM6dGl0bGU+CiAgICAgICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlByb3RvIC0gSWNvbjwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6dGl0bGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgSWxsdXN0cmF0b3IgMjcuMiAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyMy0wMi0wOFQxMjozNjoyNC0wNTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDIzLTAyLTA4VDE3OjM2OjI0WjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMjMtMDItMDhUMTI6MzY6MjQtMDU6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6VGh1bWJuYWlscz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wR0ltZzp3aWR0aD4yNTY8L3htcEdJbWc6d2lkdGg+CiAgICAgICAgICAgICAgICAgIDx4bXBHSW1nOmhlaWdodD40MDwveG1wR0ltZzpoZWlnaHQ+CiAgICAgICAgICAgICAgICAgIDx4bXBHSW1nOmZvcm1hdD5KUEVHPC94bXBHSW1nOmZvcm1hdD4KICAgICAgICAgICAgICAgICAgPHhtcEdJbWc6aW1hZ2U+LzlqLzRBQVFTa1pKUmdBQkFnRUJMQUVzQUFELzdRQXNVR2h2ZEc5emFHOXdJRE11TUFBNFFrbE5BKzBBQUFBQUFCQUJMQUFBQUFFQSYjeEE7QVFFc0FBQUFBUUFCLytJTldFbERRMTlRVWs5R1NVeEZBQUVCQUFBTlNHRndjR3dDRUFBQWJXNTBjbEpIUWlCWVdWb2dCK2NBQVFBRiYjeEE7QUFrQU5BQVFZV056Y0VGUVVFd0FBQUFBUVZCUVRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQYldBQUVBQUFBQTB5MWhjSEJzQUFBQSYjeEE7QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTWkdWell3QUFBVndBQUFCaSYjeEE7WkhOamJRQUFBY0FBQUFIcVkzQnlkQUFBQTZ3QUFBQWpkM1J3ZEFBQUE5QUFBQUFVY2xoWldnQUFBK1FBQUFBVVoxaFpXZ0FBQS9nQSYjeEE7QUFBVVlsaFpXZ0FBQkF3QUFBQVVjbFJTUXdBQUJDQUFBQWdNWVdGeVp3QUFEQ3dBQUFBZ2RtTm5kQUFBREV3QUFBQXdibVJwYmdBQSYjeEE7REh3QUFBQStZMmhoWkFBQURMd0FBQUFzYlcxdlpBQUFET2dBQUFBb2RtTm5jQUFBRFJBQUFBQTRZbFJTUXdBQUJDQUFBQWdNWjFSUyYjeEE7UXdBQUJDQUFBQWdNWVdGaVp3QUFEQ3dBQUFBZ1lXRm5ad0FBREN3QUFBQWdaR1Z6WXdBQUFBQUFBQUFJUkdsemNHeGhlUUFBQUFBQSYjeEE7QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSYjeEE7QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUcxc2RXTUFBQUFBQUFBQUpnQUFBQXhvY2toU0FBQUFDQUFBQWRocmIwdFNBQUFBQ0FBQSYjeEE7QWRodVlrNVBBQUFBQ0FBQUFkaHBaQUFBQUFBQUNBQUFBZGhvZFVoVkFBQUFDQUFBQWRoamMwTmFBQUFBQ0FBQUFkaGtZVVJMQUFBQSYjeEE7Q0FBQUFkaHViRTVNQUFBQUNBQUFBZGhtYVVaSkFBQUFDQUFBQWRocGRFbFVBQUFBQ0FBQUFkaGxjMFZUQUFBQUNBQUFBZGh5YjFKUCYjeEE7QUFBQUNBQUFBZGhtY2tOQkFBQUFDQUFBQWRoaGNnQUFBQUFBQ2dBQUFlQjFhMVZCQUFBQUNBQUFBZGhvWlVsTUFBQUFDQUFBQWRoNiYjeEE7YUZSWEFBQUFDQUFBQWRoMmFWWk9BQUFBQ0FBQUFkaHphMU5MQUFBQUNBQUFBZGg2YUVOT0FBQUFDQUFBQWRoeWRWSlZBQUFBQ0FBQSYjeEE7QWRobGJrZENBQUFBQ0FBQUFkaG1ja1pTQUFBQUNBQUFBZGh0Y3dBQUFBQUFDQUFBQWRob2FVbE9BQUFBQ0FBQUFkaDBhRlJJQUFBQSYjeEE7Q0FBQUFkaGpZVVZUQUFBQUNBQUFBZGhsYmtGVkFBQUFDQUFBQWRobGMxaE1BQUFBQ0FBQUFkaGtaVVJGQUFBQUNBQUFBZGhsYmxWVCYjeEE7QUFBQUNBQUFBZGh3ZEVKU0FBQUFDQUFBQWRod2JGQk1BQUFBQ0FBQUFkaGxiRWRTQUFBQUNBQUFBZGh6ZGxORkFBQUFDQUFBQWRoMCYjeEE7Y2xSU0FBQUFDQUFBQWRod2RGQlVBQUFBQ0FBQUFkaHFZVXBRQUFBQUNBQUFBZGdBYVFCTkFHRUFZeUFQQUdrQVRRQmhBR01BQUhSbCYjeEE7ZUhRQUFBQUFRMjl3ZVhKcFoyaDBJRUZ3Y0d4bElFbHVZeTRzSURJd01qTUFBRmhaV2lBQUFBQUFBQUR6MkFBQkFBQUFBUllJV0ZsYSYjeEE7SUFBQUFBQUFBSFBVQUFBNkpnQUFBVzVZV1ZvZ0FBQUFBQUFBWG9ZQUFMbzNBQUFUN1ZoWldpQUFBQUFBQUFBa2ZBQUFDNk1BQUwzUyYjeEE7WTNWeWRnQUFBQUFBQUFRQUFBQUFCUUFLQUE4QUZBQVpBQjRBSXdBb0FDMEFNZ0EyQURzQVFBQkZBRW9BVHdCVUFGa0FYZ0JqQUdnQSYjeEE7YlFCeUFIY0FmQUNCQUlZQWl3Q1FBSlVBbWdDZkFLTUFxQUN0QUxJQXR3QzhBTUVBeGdETEFOQUExUURiQU9BQTVRRHJBUEFBOWdENyYjeEE7QVFFQkJ3RU5BUk1CR1FFZkFTVUJLd0V5QVRnQlBnRkZBVXdCVWdGWkFXQUJad0Z1QVhVQmZBR0RBWXNCa2dHYUFhRUJxUUd4QWJrQiYjeEE7d1FISkFkRUIyUUhoQWVrQjhnSDZBZ01DREFJVUFoMENKZ0l2QWpnQ1FRSkxBbFFDWFFKbkFuRUNlZ0tFQW80Q21BS2lBcXdDdGdMQiYjeEE7QXNzQzFRTGdBdXNDOVFNQUF3c0RGZ01oQXkwRE9BTkRBMDhEV2dObUEzSURmZ09LQTVZRG9nT3VBN29EeHdQVEErQUQ3QVA1QkFZRSYjeEE7RXdRZ0JDMEVPd1JJQkZVRVl3UnhCSDRFakFTYUJLZ0V0Z1RFQk5NRTRRVHdCUDRGRFFVY0JTc0ZPZ1ZKQlZnRlp3VjNCWVlGbGdXbSYjeEE7QmJVRnhRWFZCZVVGOWdZR0JoWUdKd1kzQmtnR1dRWnFCbnNHakFhZEJxOEd3QWJSQnVNRzlRY0hCeGtIS3djOUIwOEhZUWQwQjRZSCYjeEE7bVFlc0I3OEgwZ2ZsQi9nSUN3Z2ZDRElJUmdoYUNHNElnZ2lXQ0tvSXZnalNDT2NJK3drUUNTVUpPZ2xQQ1dRSmVRbVBDYVFKdWduUCYjeEE7Q2VVSit3b1JDaWNLUFFwVUNtb0tnUXFZQ3E0S3hRcmNDdk1MQ3dzaUN6a0xVUXRwQzRBTG1BdXdDOGdMNFF2NURCSU1LZ3hEREZ3TSYjeEE7ZFF5T0RLY013QXpaRFBNTkRRMG1EVUFOV2cxMERZNE5xUTNERGQ0TitBNFREaTRPU1E1a0RuOE9tdzYyRHRJTzdnOEpEeVVQUVE5ZSYjeEE7RDNvUGxnK3pEODhQN0JBSkVDWVFReEJoRUg0UW14QzVFTmNROVJFVEVURVJUeEZ0RVl3UnFoSEpFZWdTQnhJbUVrVVNaQktFRXFNUyYjeEE7d3hMakV3TVRJeE5ERTJNVGd4T2tFOFVUNVJRR0ZDY1VTUlJxRklzVXJSVE9GUEFWRWhVMEZWWVZlQldiRmIwVjRCWURGaVlXU1JacyYjeEE7Rm84V3NoYldGdm9YSFJkQkYyVVhpUmV1RjlJWDl4Z2JHRUFZWlJpS0dLOFkxUmo2R1NBWlJSbHJHWkVadHhuZEdnUWFLaHBSR25jYSYjeEE7bmhyRkd1d2JGQnM3RzJNYmlodXlHOW9jQWh3cUhGSWNleHlqSE13YzlSMGVIVWNkY0IyWkhjTWQ3QjRXSGtBZWFoNlVIcjRlNlI4VCYjeEE7SHo0ZmFSK1VINzhmNmlBVklFRWdiQ0NZSU1RZzhDRWNJVWdoZFNHaEljNGgreUluSWxVaWdpS3ZJdDBqQ2lNNEkyWWpsQ1BDSS9BayYjeEE7SHlSTkpId2txeVRhSlFrbE9DVm9KWmNseHlYM0ppY21WeWFISnJjbTZDY1lKMGtuZWllcko5d29EU2cvS0hFb29palVLUVlwT0NsciYjeEE7S1owcDBDb0NLalVxYUNxYktzOHJBaXMySzJrcm5TdlJMQVVzT1N4dUxLSXMxeTBNTFVFdGRpMnJMZUV1Rmk1TUxvSXV0eTd1THlRdiYjeEE7V2krUkw4Y3YvakExTUd3d3BERGJNUkl4U2pHQ01ib3g4aklxTW1NeW16TFVNdzB6UmpOL003Z3o4VFFyTkdVMG5qVFlOUk0xVFRXSCYjeEE7TmNJMS9UWTNObkkycmpicE55UTNZRGVjTjljNEZEaFFPSXc0eURrRk9VSTVmem04T2ZrNk5qcDBPckk2N3pzdE8yczdxanZvUENjOCYjeEE7WlR5a1BPTTlJajFoUGFFOTRENGdQbUErb0Q3Z1B5RS9ZVCtpUCtKQUkwQmtRS1pBNTBFcFFXcEJyRUh1UWpCQ2NrSzFRdmRET2tOOSYjeEE7UThCRUEwUkhSSXBFemtVU1JWVkZta1hlUmlKR1owYXJSdkJITlVkN1I4QklCVWhMU0pGSTEwa2RTV05KcVVud1NqZEtmVXJFU3d4TCYjeEE7VTB1YVMrSk1La3h5VExwTkFrMUtUWk5OM0U0bFRtNU90MDhBVDBsUGswL2RVQ2RRY1ZDN1VRWlJVRkdiVWVaU01WSjhVc2RURTFOZiYjeEE7VTZwVDlsUkNWSTlVMjFVb1ZYVlZ3bFlQVmx4V3FWYjNWMFJYa2xmZ1dDOVlmVmpMV1JwWmFWbTRXZ2RhVmxxbVd2VmJSVnVWVytWYyYjeEE7TlZ5R1hOWmRKMTE0WGNsZUdsNXNYcjFmRDE5aFg3TmdCV0JYWUtwZy9HRlBZYUpoOVdKSllweGk4R05EWTVkajYyUkFaSlJrNldVOSYjeEE7WlpKbDUyWTlacEptNkdjOVo1Tm42V2cvYUpabzdHbERhWnBwOFdwSWFwOXE5MnRQYTZkci8yeFhiSzl0Q0cxZ2JibHVFbTVyYnNSdiYjeEE7SG05NGI5RndLM0NHY09CeE9uR1ZjZkJ5UzNLbWN3RnpYWE80ZEJSMGNIVE1kU2gxaFhYaGRqNTJtM2I0ZDFaM3MzZ1JlRzU0ekhrcSYjeEE7ZVlsNTUzcEdlcVY3Qkh0amU4SjhJWHlCZk9GOVFYMmhmZ0YrWW43Q2Z5Ti9oSC9sZ0VlQXFJRUtnV3VCellJd2dwS0M5SU5YZzdxRSYjeEE7SFlTQWhPT0ZSNFdyaGc2R2NvYlhoenVIbjRnRWlHbUl6b2t6aVptSi9vcGtpc3FMTUl1V2kveU1ZNHpLalRHTm1JMy9qbWFPem84MiYjeEE7ajU2UUJwQnVrTmFSUDVHb2toR1NlcExqazAyVHRwUWdsSXFVOUpWZmxjbVdOSmFmbHdxWGRaZmdtRXlZdUpra21aQ1ovSnBvbXRXYiYjeEE7UXB1dm5CeWNpWnozbldTZDBwNUFucTZmSForTG4vcWdhYURZb1VlaHRxSW1vcGFqQnFOMm8rYWtWcVRIcFRpbHFhWWFwb3VtL2FkdSYjeEE7cCtDb1VxakVxVGVwcWFvY3FvK3JBcXQxcSttc1hLelFyVVN0dUs0dHJxR3ZGcStMc0FDd2RiRHFzV0N4MXJKTHNzS3pPTE91dENXMCYjeEE7bkxVVHRZcTJBYlo1dHZDM2FMZmd1Rm00MGJsS3VjSzZPN3ExdXk2N3A3d2h2SnU5RmIyUHZncStoTDcvdjNxLzljQnd3T3pCWjhIaiYjeEE7d2wvQzI4Tll3OVRFVWNUT3hVdkZ5TVpHeHNQSFFjZS95RDNJdk1rNnlibktPTXEzeXpiTHRzdzF6TFhOTmMyMXpqYk90czgzejdqUSYjeEE7T2RDNjBUelJ2dEkvMHNIVFJOUEcxRW5VeTlWTzFkSFdWZGJZMTF6WDROaGsyT2paYk5ueDJuYmErOXVBM0FYY2l0MFEzWmJlSE42aSYjeEE7M3luZnIrQTI0TDNoUk9ITTRsUGkyK05qNCt2a2MrVDg1WVRtRGVhVzV4L25xZWd5Nkx6cFJ1blE2bHZxNWV0dzYvdnNodTBSN1p6dSYjeEE7S082MDcwRHZ6UEJZOE9YeGN2SC84b3p6R2ZPbjlEVDB3dlZROWQ3MmJmYjc5NHI0R2ZpbytUajV4L3BYK3VmN2Qvd0gvSmo5S2YyNiYjeEE7L2t2KzNQOXQvLzl3WVhKaEFBQUFBQUFEQUFBQUFtWm1BQUR5cHdBQURWa0FBQlBRQUFBS1czWmpaM1FBQUFBQUFBQUFBUUFCQUFBQSYjeEE7QUFBQUFBRUFBQUFCQUFBQUFBQUFBQUVBQUFBQkFBQUFBQUFBQUFFQUFHNWthVzRBQUFBQUFBQUFOZ0FBcDhBQUFGVUFBQUJMZ0FBQSYjeEE7b0FBQUFDWUFBQUFNQUFBQVVFQUFBRlJBQUFJek13QUNNek1BQWpNekFBQUFBQUFBQUFCelpqTXlBQUFBQUFBQkM3Y0FBQVdXLy8veiYjeEE7VndBQUJ5a0FBUDNYLy8vN3QvLy8vYVlBQUFQYUFBREE5bTF0YjJRQUFBQUFBQUFHRUFBQXJnTWJZcG9YejA2T2dBQUFBQUFBQUFBQSYjeEE7QUFBQUFBQUFBQUIyWTJkd0FBQUFBQUFEQUFBQUFtWm1BQU1BQUFBQ1ptWUFBd0FBQUFKbVpnQUFBQUl6TXpRQUFBQUFBak16TkFBQSYjeEE7QUFBQ016TTBBUC91QUE1QlpHOWlaUUJrd0FBQUFBSC8yd0NFQUFZRUJBUUZCQVlGQlFZSkJnVUdDUXNJQmdZSUN3d0tDZ3NLQ2d3USYjeEE7REF3TURBd01FQXdPRHhBUERnd1RFeFFVRXhNY0d4c2JIQjhmSHg4Zkh4OGZIeDhCQndjSERRd05HQkFRR0JvVkVSVWFIeDhmSHg4ZiYjeEE7SHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZILy9BQUJFSUFDZ0JBQU1CRVFBQyYjeEE7RVFFREVRSC94QUdpQUFBQUJ3RUJBUUVCQUFBQUFBQUFBQUFFQlFNQ0JnRUFCd2dKQ2dzQkFBSUNBd0VCQVFFQkFBQUFBQUFBQUFFQSYjeEE7QWdNRUJRWUhDQWtLQ3hBQUFnRURBd0lFQWdZSEF3UUNCZ0p6QVFJREVRUUFCU0VTTVVGUkJoTmhJbkdCRkRLUm9RY1ZzVUlqd1ZMUiYjeEE7NFRNV1l2QWtjb0x4SlVNMFU1S2lzbU56d2pWRUo1T2pzellYVkdSMHc5TGlDQ2FEQ1FvWUdZU1VSVWFrdEZiVFZTZ2E4dVB6eE5UayYjeEE7OUdWMWhaV2x0Y1hWNWZWbWRvYVdwcmJHMXViMk4wZFhaM2VIbDZlM3g5Zm45emhJV0doNGlKaW91TWpZNlBncE9VbFphWG1KbWFtNSYjeEE7eWRucCtTbzZTbHBxZW9xYXFycksydXI2RVFBQ0FnRUNBd1VGQkFVR0JBZ0RBMjBCQUFJUkF3UWhFakZCQlZFVFlTSUdjWUdSTXFHeCYjeEE7OEJUQjBlRWpRaFZTWW5MeE15UTBRNElXa2xNbG9tT3l3Z2R6MGpYaVJJTVhWSk1JQ1FvWUdTWTJSUm9uWkhSVk4vS2pzOE1vS2RQaiYjeEE7ODRTVXBMVEUxT1QwWlhXRmxhVzF4ZFhsOVVaV1puYUdscWEyeHRibTlrZFhaM2VIbDZlM3g5Zm45emhJV0doNGlKaW91TWpZNlBnNSYjeEE7U1ZscGVZbVpxYm5KMmVuNUtqcEtXbXA2aXBxcXVzcmE2dnIvMmdBTUF3RUFBaEVERVFBL0FQVk9Lc0k4N2VhZGYwWFY0RnRUSDlUZSYjeEE7SU1xdW5JTXdKRGNqczIyM1E1dSt6dEZpell6eFh4VzVtRERHY2QrYWpwLzVyV3BBWFViSjQyN3lRRU9EL3NXS2tmZWNubDdEbC9CTCYjeEE7NW9ucFNPUmIxSDgydE9qV2xoWnl6UDhBelRGWTFIM2N5Znd3WXV3cG42NUFlN2Y5VFY0SkhOQWVXUFBYbWJXdk05cmJNWWt0SDVtYSYjeEE7QkUrSGdxazE1TnlldjA1ZnJlek1HSEFaYjhYUXNKUnA2WG5Oc0hZcTdGWFlxN0ZXRytlL01ldWFMZDJiV1RJdHRLckZneWh1VHFSVSYjeEE7RTlRS0VkTTNIWm1reFpveTR2cURsNmZGR1lOODBEcC81clJVQzZsWkZUM2t0elVmOEE1SC9Fc3Z5OWhuK0NYei9INkV6MHRjaXJYLyYjeEE7QU9iT2xSb1JaV2MwOG5iMVNzYS9nWFA0WkRGMkZrSjlVZ0I1Yi9xYWZCSTVwVG8zNWdlWjlYOHlXTnFucFJXOHNvV1dCRXFER04zSiYjeEE7WnVUVkNnbllqTXZVZGxZTVdHVWpaSUhQelltTlBVTTVocmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnh2L25Kcjh3ZiYjeEE7UG5rWHl4cE9zZVZaWW9JcEwzNnZxTXNrU3pHalJsNGxvNElDdHdia2V2VGZGWG1YbEwvbk51OWpDUStiZkw2VGdDajN1bU9ZMjI3KyYjeEE7aE1XVWsvOEFHVWZMRldWNnYvem10K1hzRnB6MHJSOVR2cnNpcXd6aUcyakI4R2tFazVIMEljVmVZMzMvQURsdCtidm1IWGJHeTh1MiYjeEE7OWxwZjFpNWlodHJPT0w2dzh6U09GV09TU2F2MmlhVlJVT0t2dFRGV0UvbWxIRzJuV1RrRDFWbVlLZS9FcjhYNmhtNjdGSjQ1RHBUbiYjeEE7NkFFeVB1ZVp1bWRLQzVzNEtEcGt3WEZuQjZCK1VtbXI2dC9xTEQ0a0MyOFovd0JiNDMvVXVhSHQzTnRHSHhjUExzOUp6bTJsMkt1eCYjeEE7VjJLdXhWaVg1bXh4dG9FVE5UbXR3dkE5OTFhdWJic1lrWlQvQUZmMU9ab1FUUDRQSzNUT3BCZGpPQ2c2Wk1GeEp4WnIrVSttckxxMSYjeEE7M2ZOL3g2eEJFSCtWTVR2L0FNQ2hHYVh0ek5XT01mNXgrNXhNd3A2bm5MdERzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzViYjeEE7ZVovODVKMjloUDhBa241bkY3UUpIRERKRXg2aVpiaU14VStiMFg2Y1ZmbnZpcnNWZXZmODRyZVY0OWUvT0hUcEpoeWcwV0dYVkhVOSYjeEE7Mmg0eHhIL1l6VEkzMFlxKzlzVmVYK2V0Vy9TR3JHR00xdDdPc2FlQmY5dHZ2RlBvenArek1IaDQ3UE9YNEQwZWgwdkJqczg1TVZraiYjeEE7emFBdGs0SWQweXdGdzV3WjcrVkY4cXZmYWV4M1lMUEdQbDhML3JYTkQyNWkyalA0T3YxTU9SZWk1enppT3hWMkt1eFYyS3ZOL3dBdyYjeEE7TlcrdWFndGpFYXcyZFE1OFpUOXIvZ2VuMzUwZlpXRGdoeEhuTDdub096dEx3dzRqemw5ekRwSTgzQUxrWklJWjB5d0Z3NXdacCtWViYjeEE7OGtPcVhkazIzMXFOWFQzYUluYjduSnpUZHQ0N2hHWDgwL2YvQUdPQnFZYlc5T3ptWENkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZCYjeEE7aXJzVmRpcjVYLzV6TS9NdWkyWDVmMkVnMzRYK3RGZW8vd0NXZUUvOG5HSCtwaXI1VHhWMkt2WVArY1ZQTThXaGZuRnA4VXpCSWRhZyYjeEE7bTB4M1BacGVNc1EvMlVzS0w5T0t2dDN6VHE0MDNTcEhRMHVKdjNjSGlDUnUzK3hHWmVpd2VKa0hjT2JuZG42Ynhjb0Ira2JsNVd5MSYjeEE7enFRWHI1UlRiU1BKZXE2cFNRcjlXdGovQUx1a0c1SCtTdlUvcXpFejlvNDhXMzFTZFBxOVpqeDdjNUoxTCtWZHUwWDd2VUhFdmkwWSYjeEE7S2svSU5YOGN3NDl0bTk0N2U5MUoxeEo1SWZ5NTVMOHhhUDVrdDdraU43UmVZbG1SOWlqS1JUaWFOWDZNczFmYU9ITmhNZCtKamx6eCYjeEE7bEh6ZWg1enpoT3hWMkt1eFZMdk1HcXJwbWx5M05SNnRPRUFQZDI2ZmQxekkwdUR4WmlQVHE1V2kwL2paQkhwMTl6eWFRczdNN0VzeiYjeEE7RWxtUFVrOVRuVmpaN0l3QUZCTXRKOG9hdHF0SGpUMGJZLzd2bHFBUi9ranEzNnN4OCt2eDR0anZMdURxdFhxOGVQWW01ZHlmUCtWZCYjeEE7c1lxRFVIOVduMnZUSEd2K3J5citPWUE3YmxmMDdlOTFFdGVTZVNCMGp5TDVpMHJ6RlozTVppbHQ0cFFaSjBhbEl6czlWYWpWS2tqYSYjeEE7dVg1KzA4T1hES0pzRWpsNXNaNTRTaVhwR2M0NExzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXFUZWN2TmVsK1UvSytwZVl0VCYjeEE7YmpaNmJDMHJxRFF1M1NPTmY4cVJ5RVgzT0t2elk4eitZdFQ4eWVZTlExN1ZKUFZ2OVNuZTRuYmVnTG5aVnIwVkJSVkhZQ21Lc2svTCYjeEE7bjhtZlB2NWdYQUdoV0JYVHczR2JWcm1zVnBIVHI4ZENYSS9sUU1jVmUrV2YvT0QybUN4QXZmTmN4dmlOM2h0RUVTbnc0dElXYW4rcyYjeEE7TVZZZHFIL09KUDVzK1hQTU5oZmVXcml5MWRiYTZpbXRyc1NDMmVGb25EckpMRktlaWtWcEc3bkZYMUI1bjBQWE5XMXBFalFDeWpRQyYjeEE7S1ZtQVVWM2NrZGExOXMzR2kxT0xGanMvVTc3cy9WNGNHR3lmV1R1UHVUUFJ2SjJtYWZ4a2xIMXE1Ry9xT1BoQi93QWxlbjM1amFqdCYjeEE7Q2VUWWVtTGg2cnRUSmwySHBqK09xZlpnT3RkaXJzVmRpcnNWZGlyc1ZZbDV1MGZXOVUxRzNodDR3YlJFcUpDd0NoeWZpTGQrbE8yYiYjeEE7YlFhakZpZ1NUNm5kOW1hckRoeGt5UHF0RjZONUswMng0eTNQK2wzQTNxdy9kcWZaZS8wNVZxTzBaejJqNlEwNnJ0WEprMmo2WS9heSYjeEE7TE5jNnAyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdkRQK2NwZktQNWxlY05MMEhRUEtkZ2J6VFpybDVkVVpaRSYjeEE7ajR5SUZGdjZuTmwvZGdPN2Q5d085S3FwVitWLy9PSUhsclJURHFQbldaZGQxSmFNTk9qNUxZeHQ0TlhpODlQOG9LdmlweFY5QjJ0ciYjeEE7YTJsdEhhMmtLVzl0Q29TR0NKUWlJbzJDcXFnQUFlQXhWVnhWMkt2LzJRPT08L3htcEdJbWc6aW1hZ2U+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwveG1wOlRodW1ibmFpbHM+CiAgICAgICAgIDx4bXBNTTpSZW5kaXRpb25DbGFzcz5kZWZhdWx0PC94bXBNTTpSZW5kaXRpb25DbGFzcz4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD51dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6YzVhYzExYmEtYzJlYi00N2Q3LWIxNDMtYTg4YTE5OWMzYmMyPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmM1YWMxMWJhLWMyZWItNDdkNy1iMTQzLWE4OGExOTljM2JjMjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDoxYzQzNTQ3OC05ZDM5LTQ3Y2QtYWIyZi1mZWM0OWRlZGFhZGU8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6MWM0MzU0NzgtOWQzOS00N2NkLWFiMmYtZmVjNDlkZWRhYWRlPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6NjVFNjM5MDY4NkNGMTFEQkE2RTJEODg3Q0VBQ0I0MDc8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOnJlbmRpdGlvbkNsYXNzPmRlZmF1bHQ8L3N0UmVmOnJlbmRpdGlvbkNsYXNzPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OTllNjRlZDMtYTUzNC00OTM2LThhMDUtYjE1MzZmNmM5ZTliPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDIyLTAzLTI4VDExOjMyOjA0LTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1c3RyYXRvciAyNi4xIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpjNWFjMTFiYS1jMmViLTQ3ZDctYjE0My1hODhhMTk5YzNiYzI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjMtMDItMDhUMTI6MzY6MjQtMDU6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIElsbHVzdHJhdG9yIDI3LjIgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPGlsbHVzdHJhdG9yOlN0YXJ0dXBQcm9maWxlPldlYjwvaWxsdXN0cmF0b3I6U3RhcnR1cFByb2ZpbGU+CiAgICAgICAgIDxpbGx1c3RyYXRvcjpDcmVhdG9yU3ViVG9vbD5BZG9iZSBJbGx1c3RyYXRvcjwvaWxsdXN0cmF0b3I6Q3JlYXRvclN1YlRvb2w+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWRvYmUgUERGIGxpYnJhcnkgMTcuMDA8L3BkZjpQcm9kdWNlcj4KICAgICAgICAgPHBkZng6Q3JlYXRvclZlcnNpb24+MjEuMC4wPC9wZGZ4OkNyZWF0b3JWZXJzaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+/+AAEEpGSUYAAQIBAJYAlgAA/+0ALFBob3Rvc2hvcCAzLjAAOEJJTQPtAAAAAAAQAJYAAAABAAEAlgAAAAEAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/90ABAAZ/+4ADkFkb2JlAGTAAAAAAf/AABEIAMAAwQMAEQABEQECEQH/xAGiAAEBAAIBBAMAAAAAAAAAAAAKBwAJCAECAwQFBgsBAAMBAAIBBQAAAAAAAAAAAAAICQYCBwQBAwUKCxAAAQMBAwIDBQONAAAAAAAAAgABAwQFBgcREggTFAkVFiFhIkPBChcYGRojJCUmJygpKjEyMzQ1Njc4OTpBQkRFRkdISUpRUlNUVVZXWFlaYmNkZWZnaGlqcXJzdHV2d3h5eoGCg4SFhoeIiYqRkpOUlZaXmJmaoaKjpKWmp6ipqrGys7S1tre4ubrCw8TFxsfIycrR0tPU1dbX2Nna4eLj5OXm5+jp6vDx8vP09fb3+Pn6EQABAwECBAIHCX4HAAAAAAABAAIDEQQGBQcSIRMiCDEyQVFSYRUWIzNCcZGSoQkKFBcYGRokJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpiY2RlZmdoaWpyc3R1dnd4eXqBgoOEhYaHiImKk5SVlpeYmZqio6SlpqeoqaqxsrO0tba3uLm6wcLDxMXGx8jJytHS09TV1tfY2drh4uPk5ebn6Onq8PHy8/T19vf4+fr/2gAMAwAAARECEQA/AH8IQsQhYhCxCFiELh3outFdY2hwuxDQ2bBDbOJt5qOc7q2JOMhUFn0wmVPJeW3iBwdrMpJ2cYoBIZayYXAXABllj7vxLYnbdjRws60WpzoLqWR4FolFMt7qZQghrXcRwzueQWxNOUcpxYx+vuldWa8VpL5CWYNiIy3DVk6vIbtSNWdU0Z85oCfLEfFTEDFu35ry4h3ptW81pmc70w11Sb0FlQ1BtJJRWJZgONn2NQZ4s+k00ccbk2c7OTu70ouvdC7dzMGtwVdmxw2SyADKyGjLkIFA6WQ6eV9N1Pc40zCgoB39g7BdgwTZxZsHxMjizVoM7iNe52rcdqSSp6tKvMIoqxh7jvjFhS8Q4fYi3ou3SRHpg2RT2idXd95NVBWPJJd20mrbBmM6gXcnOnJzEzEsombFjry4vLkXxqbyYLslqmIpojmBs1MnJoJmZMwAGqo8UIaRQtaR8RhHAmCcKZ7fZ4pHndRFHaqmtijtVtdhrwKc8sOdalYi2MFPRYm3FsC+0AZkR2xYFXLdK280qiMpauqpnp7XsS0JoadzYIYYbPA3YMpjkIiXa9Goi3YtznWi6eELTYJDUiKZotEWsmjWuyo5WAuoS5zpiNNRpzAYTCOLXB8pL8Gzvhdsrhlt1WqBq1wz68l2vzaoDnthxo/dDXiCFPDVXvmw/tabME7Lv/RvY0UZFUR0uc94KeWvuwMOmSiTPJWxm0LuZgDBJmLpejUcMad2nOfDYm4SsTa7iWN2ik6Uu3JcGT1oCKCJwytKHOLm5WGwhci8FgJLYhPEN1RHK11dZNH7w058wJqK8w7Ltay7coKa1rFtKz7YsutB5KO0rLrKe0KCrjEyjKSmrKSSannAZAIXcSdmJnbf7LpG12O14PtL7Hb4pILXGaOZI1zHtNK0c1wDgaEHOBmKykkUkLzFM1zJBqwQQRu4OdfILxlwWIQsQhYhCxCF8Pbt4bAuvZlTbd5rcse7tjUQFLWWvbtpUVkWZSRgBSHJU19oTU9JAARgRO5mzMzO+/mXm4PwbhHC9rZYME2ee1W6Q0bHEx0kjiTQBrGBziakCgBzlcmtc85LAS7YDOuE+J+tHdDBhxJNRUN6LRxJtaE54ZKLDqz47Xoo5IiaOMyvHaNVZF2qqlmky5JKOrq3zBcs12cM/vu6WovY2r0NbPaLJFgqxuAIdbXmNxBzkaAxsk7XAa6SOPOQK5nZPmR4OtTxUjJG1+Rq1rwxN1rVirbZ1dFhZcS61xbPk0+GG1rwSVN8LyiIzRPS1tKG8ou9QTyQxk0sE1JaIDpmQTdwYyZi6eoZ3PsAZPe/CNswhaRQmOENs0GqOU125kzwCRkubJCTk1LaOyR5bcGxtzyOJO0zD+N4WvLEjRAY14uFVNiNidfC9FHVz6plsWrteemu0MzTNUCdNdazno7uUWZMIkLQ0sbDmDkZmEWZmLrYt7h3LDDdfBNhsk7G5IlbGHT0pk0daH5U7qioOVIa1NdWa++2GOPMxoB33eVHFuEL77h3iliJhLb9PebDe+Ft3QtmnnppynsmrIKatekIyggtezJmmsu26FnlNipqyGenMTISB2J2fO3nujdm+eDnYJvRYrPbbC5rhSRtXNyqVMcgpJE/MKPicx4IBDgQCPacxrxkuFQkg6CHRl0Wifu7aVh3np7KsLFq6cDVdt2RZhSw2fb1gHPFTwXosOkqp6iqgggqqiOmrodNmannOI89hqI4wlzj9xGT4pcJxYQwS6a0XMtjsmKSShfDMAXGzyuaGtJLWufE7JblsDxkkxOc74yeDQjUawVzxS7rx1//0H8IQsQhYhCxCFiEIrGiHxNrsYMZb/X7qqvVVHaNv1lJd9hd9IprrWTIVm3cpoAznjDJZNNEcpAwjLUHJK7MUhZa/wCLO6dnuTcbBt3oWZE8Vma6bYutEgy53E6vcxzg0GpawNZWjQmlu/gtmCMDWewsFHtjBftXuzvO9iQNgABrlFVvF8xRdHZC4kVXa65Be27VLsdeq9py8b7iuYXsOX3O5OJuIWGtcVpXAvreW6FXJspysG2K2z4awcsb6XX0kEo0loQuUQvmThIDuAvkys2T4LD11Ls3qs4st47BZLbCNVo0TXlurzscRlMOc52kHOc+c1+Lt1gsVvZkWyKOVuuymg03Y6sdqouc2GmtO8b7pDBR3+si7mKNmxA4nU1MQ3TvNI7SM8Ta97FpZbGcI4XcHc7LklN2EikcmPPX29Wom3AwyXT3cmtWCLU46y08BEAzZ9w5XCWpOfNaA0ZwG0pk4jCNxcFTkusbn2d+wGnbvDjlePgbTVU5lXU1qfgdaojHey6WIF0at88nkgo7JvHZIiMMRML1lJaVFajzSTkYizUGZmiJObOTiPRuGdRCxgWM5WBrbg22w7Aukgk1Z3S5j46AUJOi1qSA00qcnabj4ShNYJIpG7uWneCCPHvu/dX1ploXG3/at8++PrPjhfAjUU8bh5M2DwJb8qvAddPC7dWI97BTe+WtXcFrIaohubce/wBfCqiA3hnrwse6tjVUj0oywBHWS11sWvGGqi0mUjs8XDNIwGVs1i1OA9Q6v5bcl+HMIYNsMLiKhhktErRlUNWhkUZOTpmgTGtQHFhrTlHda2nPO+Ng2lXH0AG+7wuC2JmtPtETfIKuhugF18L7Km0+OKSwLNe2byalqIYoziqbdvCVdSNPGQm8U9HQ0M0embIs8RNmDupqJmLLAbmWjDZteF7Y2hImfoUGUCSC2KHIdQ5g5kssrXU1VCWnz48AWKHPJlSO2uYbwPakrgRfPEC/eIdeFqX8vlei+VoRaa0FXee3rTtyalGdweWKkK0qqo1JAWlC2lxZgMwCzNkFmZjMBXbu9dmzmyXdsNksNmNKtghjiDqVoXZDW5RznO6pzk1qTXydBihGTE1rRtAAvpJMvngvHeF4nZcwvGcF4nXML2HBdjr1XtEUXR2XquBGvCuGhsxVtHBfHDDjECitE7Oo7LvNZtLeV2zHhrLn2rUxWdeqgqY5hOAwnsSomcCIXeCcY5gySRgQ4DGnc+y37uBhS7doiEs81ke6DV1baY2l9ne0ihqJWtqARlsLmOq1zgfZlZlxlu0S/wBROXwy/9F/CELEIWIQsQhYhCIBatmVVjWpaVj1rANbZVfWWbVjGbSRtVUNRJS1DRyNkYwaWJ8j8TZWxsdqht1kittnroE0bXtqKHJe0OFRrjQ6pN7E9s0TZmaw9oI3YioXoZF5C9wjYrtyL1quBbsF2uy5Be24Lxuy5Bey4LxEuQXjvC8JL3AvFevAa9wLw5F6xr3WrwZV6pr3Wr46UL1TXvNXx0oXqmy94L4+UL1yZe4CvAkC8BMvdBXiPavC7LmF4rgvG7LkF7DgvG7LkvZI3hduReq9sii+UsKxq+8dt2Pd6yodUWpb1q2fY1mwbNtOr7Uq4aGjiyixE2mVE4tsmd9mvEwhbrPguwT4StjsmyWeF8rzsGRtL3HtTQSuJoASdUmtKDa+AX//0n8IQsQhYhCxCFiEI42j4wukw40RN6K+nhMLExGAL/2XLmk4PWWxNNHeWnOZoooSqQvJTVM7xjlKOnqYXN3cmIqg6jne5t6MWNks8jgbfgsmxyDX5MQBgIFScnQHMZU0Bex9KAUDI3AwmMJ3cijcRo9m3CduzQMg02GQWiuvIdTVUHC3Iu96ra5K6ZEVXEtXY7LkCvbc1eN2XIFey5q8RMuYK8Z7V4SZe4F4jwvXJl7gK8KRq9Y2XuheBKF6xsvdaV4ErV6psveaV8dK1esTL3QV4EjV6xMvdBXgyNXgJl7gK8N7V4SZcwV4r2rxuy5gr2HNXjdl6gr2SF25FyqvbLdgucms7MKyxM0UNy6mppzlsXDgKnEm1jF4waOe70lPHdrIczELnsXVtBI4CxSFFHI45rC5gv2pN3vF1MUlviicG27ChbYYxnNRMHGfMNdwDMlFSQ0Oc2tahrvDtjhHCdic38dqSh1JJfCr/9N/CELEIWIQsQhYhC1s60xwukvXhDYeI1n0oS2jhnbeS05M8glG6t6jpbMriCMcuqzp7egs0mFxfSoSmkZxFjYmm1FO9zcD31tF17S8tsuFrPpBSo4CLOHSMqd0h0JnFa6ZwY2hOTTs3FdhQWXDMmDJTSO1R6XYaJHVw3arC/dzkjPmpofzf0yKh9UwOQumaiq9CxdjiuQK9tzF43FcgV47mLwkK5grxnsXhIV7gK8SRi9cmXugrwZGr1jZe60rwZGr1TZe60r4+Vq9Y2XutK+PlavWNl7wK8CRq9YmXuArwZGrwEy9wFeG9q8TsvcBXivavE7LkCvYc1djsuVV7Jaux2XrVe2WrfprJTCwrEw3v9i1X05hV35t+nuzYRyvE4vd+6QSHWVlLmM5gFo2/ak0ErGWVys4XYRbbRzl1M294t96MHXMszgYcH2Yzy0rudaCA1rq5iWQxte2g1U5qSczfhMJPrIIhrhXtZ+56Fbc0ly+NX//1H8IQsQhYhCxCFiEL6lf259nYg3JvZce1mDXdey71rWBUyHAFS9MNp0U1KFbFCZAz1NBLIM0TsQEMsYkJCTM7fM3cw3artYfsd4LFXgJsdpjmaAcnK0NwcWE59K8AtdmILSQQQSD5mDrbLg23w4Qh3Nhla8Z6VySDSuwOqOrzHVHVIn1s2PXWDbFq2FacWkWjYtpV1k2hDs30mts6qlo6uLZsLvpc8JNs2bfysdYbdZ8I2KHCFlOVZZ4mSMOxY9oc09rBCciB8dpgZaIs8UjA4HYhwqDvBXxrivKqvdMa7HFcgV7To14yFcwV472LwkK5grxXsXrkK9wFeHIxeuYr3QV4UjF6xivdBXx8jF6xivdaV4ErF6piveaV8fKxesTL3QV8fIxeuQr3AV4MjF4CFe4CvEexeF2XMFeK5q8TiuYK9hzF2OK5VXsuYuscMs8scMMZzTTGEUUUQFJLLJITBHHGAM5GZk7MzMzu7uh0jY2GSQhrGipJzAAask64DXr2nNS+NDxhkGDmCWGmG2l6XV3ZutQxWyLSQyg95LSeS2b0SRSU+WEoJbx2jVFHmue2CbbRvlJ4o4zL2Ovxf7Ct6a1htdreYsxG4DKRWcEOz1EDIwagZwczdUMhaJNFmdJric27a7fFZlhl7K//9V/CELEIWIQsQhYhCxCEanRoXcortaJ/F2zrPHJBU29Z94JNssG8be27tjXqtN8jO7PltK2ZXy8Vb/4mqo4isKWjCuKXAtptO5jLO+EdYWeaWzs8cibuybjF/LJbbnWGeTWhG5naopHxt8dYFxezNou28pbAxLscFyDl7Tol4iBcwV4z414CFe4CvEkjXgMV7gK8KSNesYr3QV4Mka9UxXutK+PljXrGK95pXx8sa9UxXugr4+SNesYr3QV4EjF6xCvdBXgSMXhIV7gK8R7F4XFcwV4zmLxuK5Ar2HMXjcVyBXsujXKnQUYWFizolcM7Bnpznsaw7YG+94nF42jCyLoZtsBDVDIxEdLatrQUtCbAznkqtk47Mx6gx83vFzcVeFcIxuDbdaIOAWHV1Mlp3CJbTdUcZklFc24evzNPxuEX8A9ke7dRFBu5zb4KntSVgo9rGLEIX//1n8IQsQhYhCxCFiELEIR8NaEV1NX6Jq89PA5vLY937oWdW5wOIjUyWFS2sDRvt4Go7UifLyc7txJUp1Gqzy2fFRZJZKZE9ptL2590iV0efYHKjdm2FDr02uKWySNuTBK8DJkllc3dg8s9C0rhG8a79Dl2O6FeNwXIOXsOhXhIFzDl4r4l65AvdDl4UkS9cgXuBy8KSJesYL3WlfHyx/x/H8e09UwXvNK+Plj/j+P49p6pivdaV8fLGvWMV7zSvj5Y16pCvdBXx8ka9chXugrwZI14CFe4CvEfGvE4rmCvFdGvG4rkCvZdGvG4rlVeyY1u11klhicFBijjBW02a1dNQYeXeqCjpmIoqNoLw3pYTKMq1oJJp7KZnAghM4jYmkMG0pCdTOvY2S0YIuTA6pja+2zNq7VurDZ9fk1AFoJqC4BzSMlrjl5O8UoDo7MNXTKPoB7X+NXucSLLMrEIX//138IQsQhYhCxCFiELEIRndFBeob86IDFe8Uc2qKeS9tbZFHUMMIjPZ92I4bsWdNHpMcQvDJQ2PG4O7Z5A7Obubk71YxS4HN38W+BsGObkyCxNkcM+Z85M7wak5w+RwNMwNQ2jaAPZcTA7sF3NwdY3DJk4BmvcM+Z0tZXA1rnDnkHXV1VBQCBvGuxg5aZ0C8JRrmHLxnwrwkC9wOXhvhXrkC90OXhSRL1jBe6HLwJIl6pgvda5fHyxfx/H8e09UxXvNK+OljXqmC91pXx0sa9UxXvNK+PljXrGC91rl8fJGvWIF7oK8GSNeEhXuArxHxrwuC5hy8Z0a8bhtFyDl7Dol2OC5ZS9oxJP+gCuvT3W0KGFkcWYVTbtLbl6LQmjKdxnqLbvDalRTZQmkMYjpbKGmpyaNhAihcsmUnd5LakfheTC+OPC7n1EVnfFAwGmYRQxtdnAFQ6TLeK1IDqVoAB1phx5fhSUa5pAHagPa1K5kro5fErEIX/0H8IQsQhYhCxCFiEKEaJbE0MJsFr73sjnOG2DsuSwrs6TO1PVPeO32KzbMqaY3ICI7JKcq4xF2N4aU812fI7dh4q7qOvlfvB+BnNDrEJhLPUZTdAh08jXbSSgiBObKkbXMtti7u269V77HgogGy6Jok1RUaFFp3g9Z0EYJzZT21zI1hR7RVQD0/z4F4SjXMOXiSQLwFGvcDl4kkK9c417ocvCkhXrEC90OXgSRL1jBe6HL4+WJeqYL3WuXx8sS9UwXvNcvjZYl6hgvea5fHSxL1TBe80r46WNesYr3QV8fJGvXIF7ocvBkjXrkC9wFeG+NeJxXMFeM6NeNwXIFey6NduYvXKXAxJWehFls+bQyYHnZlGdDTDh3d+GSGSY5yO0KelanterY5DkIQtC1YpqgQysMYyMLMLCzNHrHSy0x417wNtbxJKcJzEEACjHOrG2gAzsjLWE6sltSSSSeoMMtc3CtoDzU6Kd41w7UKBci11gvjFiEL/0X8IQsQhYhCxCFiELSJo+Matj3EMMNrGnzrtYa1dTTV0kUudDal8JYo4rVkMGYcmw9kOgFibOGdqjI7iTJ+tRzuHt3Lsm9NubTCuFWNcwEZ47MCTGK9Js0xpmLNC17SncxD3FOA7ubeW3NphLCbGuYCM7LOCTH3+zSmmYtMevBWv8o0yIcu8HwLwFGvcDl4ckK9c417gcvCkhXrEG0Xuhy8GSJesYL3WuXx8kK9UwXvNcvjpYl6hgvea5fHSxL1TBe81y+NliXqGC95pXxssa9QwXvNcvjZY16xgvdBXx8kf8fx/HtPWIV7oK8GSNeAhXuArw3xrxOK5grxnRrxuC5VXsmNduYvWq4aGksazxve169CxcenkqAqK259oXkufXEB0udG9DbFRadl08kNKIanOC79sUYZJGaWQWaUnLTGIpW6kxgXbHxvYQla0tgt0cFpZrWfLibHIQXa0DNHKat0oNWCmTQdQ3rs3APhqSgo2QNeNXrxQ6vo4Haa7XZubq6CWcWIQv//SfwhCxCFiELEIUM0RWL9Jgthbb969Oia8FTCdi3Oo5AaV6u81oQyjQyFCQlHJS2VGB1lQJuAnDTlGxZ5gxdg4sblTX7vdZsD5J2zWO0W0uBpkwMIyxXVh0hIiYRUhzw6mS1xHYOLG5M9/L3WfA4ads1h0W0uGbJgYRliurDpCREwipDnhxGS1xB0amSeqnmqaqaWpqamWSeoqJ5DmnnnmN5JZppZHKSWWWQnIiJ3InfK+zVO4mxwxtiia1sTWgNaAAAAKAADMABmAGYBUr4BY4oxFE0NiaAAAKAACgAAzAAZgBmAXpFGvfDl4z4V4CjXuBy8KSFesUa90OXgyQr1jjXutcvAlhXqmC95rl8dLEvVMF7zXL42WJeoYL3muXxssS9QwXvNcvjJYl6Zgvfa5fGyxL1TBe61y+NliXqmK95pXx0ka9YxXugrwJI165CvcBXhvjXicVzBXiujXjcVzqvZMa7c1etVw0NbdNZSYilRXoxJwqrawBprcsmhvrYVJMUcbNaVizhZNuDSO+ac9VXWfaVKZx5SdoqFzFmYZHdLdTEuwJ8EYKvhBGTLZ5n2WVwqdJKDJFla4NY9kgBzDKlAJJLQOv7+2GsENvaM7XFjjtHZ212gIPa3bst3KQZdYrEIX/9N/CELEIWIQsQhaOdG/i5ucbFWW7Fl1WnXYw51VYdLpZ5YKy8MhhsR17ZHyFpVRAFGD7NslK5DspHy0AxA3L27Fzxha1sycLYUyZXVGdsIB0Bna2kyHrYAdZCohqPlwzde5bcMW1mThfCuTM6oztgodAZ2tpMp19ZADnaKcKiBd8By7yfEvAUa9wOXiPhXgIF7gcvDkhXrGC91rl4EsK9YwXutcvAliXqGC95rl8bLEvUMF77XL4yWJeoYbRe81y+MmiXpyAvfa5fFzRL0zBe80r4yWNeoYr32lfGSxr1TFe60r46WNesQr3gV8fJGvXIV7gK8J7F4XFcwV4rmLxuK5gr2HMXbmr1quGQrpoZsRCwpx4wwvsdYFBZ1BemgoLfqpjjGniuzbzlYV45Z9O3cuFPY1ozSs5ZGAwEmISFiHr3GtdgXxxd4WwC1hktUlje+FoBqZ4dxYAKZ6mVjW5tWCRQgkH4nDlg20MEz2UNrIYyWjo5umb48AErJR6S+LEIX/1H8IQsQhYhC46aKLF8sHcKLXtizakIb2W8Ww5dFsgHJBaldFK9Ra7RG0jZlh2fHLUCRgcL1Iwxm2SVsvZ2KO5QvvfGGxWppdgazjR7TqwDGwikdRTc15awgEOyC9zc7c3bWJa4PAwb8QYPtbC7AdlHARatWAY2EZMVRTPNIWxkAhwjMj252ZtAMrnKZyymUkkhFJJJITmchm7kZmZZSIiJ8ru75XdUgYGsaGMADQKADMABrhtFUHQWsaGMADAKADMABqgBsF4CBe4HL2HxLwkC9wOXiviXrkC9wOXhyRL1zBe6HLwJIl6pgvda5fHyxL1DBe81y+NliXqSAvfa5fFzRL05AXvtcvi5ol6UgL32lfFzRr05BXvtK+KmjXpmK95pXxc0a9QxXvNK+NlYvVIV7wK+PkYvXIV7oK8F7F4SZcwV4j2rxOK5gr2HNXbkXrVe0WrpkXrVemSlMaE7EiTFXQ94Y3tq6jVNr64AsC35DOnKpO3LrTzXdtCrq4qYzCnmtU7NatEHYH0qpAswWJmaRGOS6zbn4y8LYGhbk2LgJM0IAdkiK0ATMa0uALhGH6ETn0zHDKJBJXu8lg2zsN2izNFI8vKbq6ZL9MAK6ulcndwVyKXWK+DX//1X8IQsQhYhC0U6LzGPc7OKFRS2ZNn3SuNq27tgZkumU9dUtVbzu349lkbXrUU8cYOLuJ01LCWyJyy0JxK3H25t0mzWttMM4QyZpqihY3J3ChPWtrnONc4fI8aoBU9xBYutuHchk9tbTD2E8i0T1FHMbk7gwHrU1znGucSSSDVAU4pOK7iBXdrmLxuK5Ar2HRrwkC5grxnxrwkC9wOXiSRL1jBe61y8CSJeqYL3WuXx8sS9Qw2i99rl8bNEvTMF7zSvi5ol6cgL32lfFTRr0pBXkNK+JmjXpSCvfaV8TNGvSkFe+0r4qZi9QxXvtK+MlYvUNl7zSvjZWr1yZe4CvBkavATL3AV4b2rxOy5grx3NXY7LkvaLdiu3IvVcaFbnNZUYjyS0OJmEtZUZzUc1Df+wKcjp3IYqtoLAvO4iRjWaTHNDZbswCcIHKblpZm2mItqYV12stGCr5wNzyNfY5jR2rbWaDXZNSDPWpDiGtplBpyOqcY+D8l9nwm0asGNxz67TM2mz7XMNWBm3BpJV1ev//WfwhCxCFxh0WmLW5qsJ7T13VOkXpvhp12ru6WebUU2qoX17WvHkdjDXXZxFmG3AFTLDl3+u2cTNzNvhfKLgJZlYIsVJ5qjM7JO4cZ124j6VGvY1+wXd2IG4G37v7DwFsysB4OpabRUaV2SdwojrjoslKtOrjbJsFoiyKhtVUktXbkXKq4Fi7HFeoK9tzF4yFcgV47414SFe4CvFkjXrGC91pXgyxr1TBe60r46WNeqYL3mlfGzRr0pBXvtK+KmjXpSDv9eQ0r4qaNelIK99pXxE0a9GQV5DSviJ2L0ZGXkNK+ImavSNl77SviZmr1DZe81fGyhesTL3QvAkC8BMvcBXhvC8TsuYXjOC7HZcl7RC7ci9argRsFyh0GeI54Y6I7Da15KjU9lW9bMdybezjp4acrLveQWPHNWz1JxR09FZdrT0tdIeeLiNLxU2UC6kx53XbezFfhWxNblWyzwG1Q5nE6JZtxSGhoJLpIxJE0UNTJrjQjN3rsAwhgG0RAVlYzRG6utWabMBqyQC0bv2sJ7UmUvK//138IQsQhaEdFFi1udzFi2bToKnT7rXfy3auppZ51PPZtnzS6ptePNdgk192ictQBuIyamKGMuBbZKLYpLmbcu5sFktLMnC9p3HtFRnD3gZMZ140JgawipGWHuGtFVbxG3A4F9cGzWG1syMO2vhZtVRpmySAZMR140GMNjLaluiCR7dbK46rs5dwrpkXrVemSumRetVxLV2OK5Ar2nMXhIVzBXiyMXrkK9wFeFIxesYr3mlfHyxr1DFe80r42aNenIK99pXxU0a9GQV77SviZo16MgryGlfDzxr0JBXksK+GnYvQlZeQwr4W0NXoSLyGr4eYL0zXvtXxcoXrEvdC8CReAl7gXhvXidcwvHcux1yXska5dq9VwXzd2CtULy3eOwYwmtwLcskrGhkeFo5bVGvp3s6OR55IoGA6tgZ88hDI+zdmyu3gYWFjdgq0twiS3B5s8mikVqI8h2WRQE1Da6oE7AEr2LQIjZ5BNmhyHZXWNDXfEv9ROSsr/0H8IQuH+jNxglw1wyOwLFq9T3qv/AKqsSiOJx1RQWEMIjeG0onfKUUr09QFLEbZphJU6ZG7FHlbuzEXcll6r2DCNuZlYHwbkyuB1l8tdwWHYjKaZHDOCGZLgQ6hYjUbsXbL632GFsIx5eAcEZEzwdZfPXhXjOxGU0yuaatc2PIeC19DpHT8KmixCFiF6rEL0XR2XqvQiq8RMuYK8d7V4CZe4CvDkavXMV7rSvAlYvUMV7zSvjpWL05BXvNK+LmYvSkHf68hpXxM8a62dY1rW9aNJY9hWXaNtWvaErU9BZVk0VTaNo1s7s5NBR0NHFNU1MziLuwgJFkZelqt1jwdZX27CE0UFijbV8kjmsYwbFz3ENaNqSAs9hKey2GzvtdtkjhssYq573BjGjYuc4hoG1JC5jXC1nxjzfEQqrw09hYd2eWe7PeO0GrLXlDSs6I4LIsNrQePPndgIaqalkEWIs18gsfR94tSUxd4EJhwY60YTtIpuQzJjBrnBklyK0GcGNsgJIFRnLejLwY6bmYOJisDprdP0ibksGfPV8mTXNnqxrwcwrqyOSFk6y4sAYC1/4v2vWVR6WQ657p0VmQQbYbTYi1bbVrSVWSTgE93O2d/hl391dbNS5wiZBtm4EgZEK7m2h0hOfMdLFGG5tWNNn3Uus7Zj1tUr+FTB0bI8+tylxOwOlYwDNrs+7ryWjrLO6M1JKFl4uXjo64szSKmvuxZlpUkeSQHl02ip7TsqabPhYhHJUR5pOxPnMziXGy6l3hpkzXWvAtlks+erWTyMccxpRzo5AKGhNWGoqM1aj45uOm3ueDNYITHrw2RzTqtiWuAz9GnYZtWOPd/9ZkYx2CEtTcS8t1cQaYNNzKOQ5Lo27PmQyyx5lJac1ZYY6cUbR7btIc2Qxy7YzzDsq7epX3Hwi4RXhstswbKaVcKWmIZwDV0YbLmrlZoDUA7qo13zVhxsYEtdG4Qimszzr9zGDXatoD9ruXqgdfQHghiBhViRhbXtZuIVyrw3TqJDKOmltazpoaCvIAAzey7VBpLLtUIxNs4qaaURLKzuzs7Mw9274XWvdZ+Aq7Vvs1sjAq4RvBezPQaJGaSRk0zB7WkjOMxBOzsWF8GYWj0XBs8czRq8kio6ybrTe2gFOHWoC95y8TrmF47l2uuS9py7XZC4ELmfoEcGK/FjHm7dqS0VTJdLDSvs6+l5LQCMCpIayzp5Ky6tlVEkrtGR2zbdAO7nIRy00E7sOaBEPRepDX6s1zcXdqsbJGDDOFY32WBhJyi14DbRI0DPSKJ502YNkfHnq4A4++mFmYMwLJGCOAq0NMbBr6HM9w6xadXriW7EVSUpaLoBf//RfnPPDTQzVNTNFT09PFJPUVE8gRQwQxA8ks00sjjHFFFGLkRE7MLNldc445JZGxRNLpXEAACpJOYAAZyScwA1a5xRSzythha58z3BrWtBLnOJoAAM5JOYAZyVoD0RuLRYxYpW1eWlmlO7lDm2HdOKQJYs2wrPOXSqt4JRCWGW1qqSWqITFjDTmAuAGZqPYr7mC5F0YMFTNAwpJuLaCKHcV4FW1FQRG0NjBBIOSXDWs9Z8TVwRi5uNZsDWhrRhiXce1EEHceQCrMoVBETQ2IEEtOQXDWjWFLsJdrLHZeq9CFiF6gUXR0Li5dELiux2XIL23BeEmXuArxXheAmXuArwpGr1TFe60r4+Vi8MdNPVTw0tLDLUVNTLHBT08EZzTzzzG0cUMMUbFJLLLITCIizuTvkZe46WOGN0srg2JoJc4kAAAVJJOYADOScwC+JtRjhjdLK5rYmtJc4kAAAVJJOYADOScwC544LaAS/N9SoLcxRnqLgXXnAKgrGjaPY4rYJAzwB6Opp6iku4ZZzZ2rAOpidnE6Zn2bLvfvUjbv4BEmD7otbhLCzSW6Ka8ArCDQnKaQ6YbDQiGOGcS7FZL+6kFd7A2iYPuoG4Rwo0luiZ+AVpBznKBDptpoZDHDOJTr9reGWD+HWD9jvYtwLt0ljRTZpV9cRS1tsWrMwizzWla1Wc1bU5SHOGLPGCJ3doowHZMnd7L7XnvtbuA68dqfO9usMzNijGwZG0BrdgXUL3U07nHOlEvNe+8N77ZwG4ftLpnjWW5mxsGwZG2jRsCaFzt1Occ6piyizSxCFiELEIXoWpZVl23QVNlW1ZtBa9l1gNHWWbalHT19BVxiYyDHU0dXHNTzg0gCTMQuzEzPv9l5FktlrsFpZbLBLJBa4zVr43OY9ppSrXNIcDQkZiMxXuRSywSCWBzmSt1TmkgjdiM4XCvFLWfOh5xF0yssexKzDO2zmmnKuuNPHSWZUFLlcYKm7NdFW2HBRwkTkIUMVCbPkbPzGYW74ujqSmMy7FILdaI8K2ANAyLWC6QU17Z2FspcdUTK6Ua/JyiStngy/94cH6SZ4tMNKUlFXDah4o4nrIu3auda6cTdZnY33Sz6q4NpWBilZo7c0ksN07yCzaaUkslkW5XFZJQjGI5GhtOaczJxaLZM5M7dPUrLgYZpDeOK04ItR17gbRBrqASRM0Sta61A1gAqX5yBvsHYx8C2vSW5slmk2J07N7NGVXd2AbXYcULR0M+iIsyrloqjA7FaWaDMzzs+4d5bWpC0yIJR0m0LKs2soKjIEjMWlylmFlEshC7N3HZsa2LK1QC0RXgwOI3VoH2uCN2YkZ2SPa8arNVoqKEVBBOkbeLAEjA9ttstDsZWNO8EgjtYXJTCLWcuOd+7Qppr+UkOFd2H0w56615KG1bfnGGdoSgobuWfaDzxTSuxOJVklKGYOe2ezgx9V311J/F9d6zOZd17sMYWzAMjD44RUVq+d7KEDNURNkNTknJIcW5zCt/wDA1ijIsRNptOuDataN3eRTeoOwzZ6bvcGcGbkYF3Is+41xrP1PRU+SotO06hozte8VrnGAVVtWzVAAaorKjMZhFmGKCIRiiEIwEWQS/N+cP4wsPyXgvBJlTu0scbaiOGMElsUTSTktbXOc7nOJe8uc4k9OYWwtbMM2x1ttjqvOYAay1uua0a4DeSc5qSSquscvjF//0mP6OHFrYHw0G5FlVOl3ixH1TZs2lHklo7p0zR6/5izc7M166dHQCJiwywz1Di+dFsu+sQFzNvBeo4ftjK4MwXkvFRmdaHV0EbXQ6OlJBq1zY6ij0zOowXA2899Tee3srgfA2TIKjM+1OroAGx0KjpyWmrXshDhR+fTAnqVI1iF6rEIXVkLk1Y6F6OXRC4ro69QuLgvETLmF47wvCTL3AV4sjVyqwY0HmJ+LOpLYr6XYIuXLLG527b0E0doWhS7YKQ7v2G4hV1+WORnCeZ6ajNsuZMZCQLp6/WO66VzcuxWZ+2hh0A0ihILGOz0E0usszg1a3LkGbKY0EOXQOMXHxcy5BkwfZX7aN4WtNIYSCyN2egnmztZnBBYzRJRmyo2hwctseD+hywuwVh026ti6svDJE0VXe23NJtC8MwuBhLFS1OkxQ2TSzMbscVJHCMrMOm6Y4i7JvfbGhe6/kmRhefIwYDVtmiqyEZ8xc2pMjhTM6QuLc+RkgkFHL9Y1L4YwJcnDM+h4MDqts0NWQjPUFzakyOFMzpHPLc+RkgkG7rrxdcLEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiEL//T3wY9Yj1GKmKt7b2FOU1mSWjNZl3AfZDBduy5ZKWyBAGOQIyqacdUSsJELzzm7O+VUuxdXXjufc+xYGDQ21iIST7WeQB0megJyTpG1AOQ1o1yrziqubFcS4eD8ABgbbRCJLQdmtEoDpamgJDXHQ2kgHIY0EZlH1tl2GsQhYhC6shc2rHQh2qXRC4LHXqg5wrjhJoc8T8ZjGpuxY4Ud3hnKnqr121IVDYcJxuzTR08jRy1VpzxZchBTRSuBZGNwy5V1/fPGfdO4rTFhacvwnk1bZ4hlykHVEiobGDrjI5tRrOVql1TjBxv3IxctMOG7QZMLlmU2ywgPmIOslwqGxtOudI5tRrOVqltYwY0IOGOFGpLYr6XY2vnFFG525b0EMln2fU7YKQ7v2G4nSUGSSNnCaZ6msDZ5kwCRAk9v1jrvZfHLsNnfwAYCJNIoSQ97c9BNLmc/MTVrciM5spjiAUh2MbH/fS/eiYPsr9s27rnGkMBIkkbnAE82Zz8xILGaHE7NlRuLQ5cr104uiliELEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIX/1NwCrIreLEIWIQsQhdWQubVjoXo4a9UTDjCe/wBixaz2Rca71Va8sWaVbWkUdHZNmROQs8to2pVHFR0+QSzhjznmlZnaMDLZPmL0Xyu5c6x8Bt4LSyFh1hmd0kh2DI21cdgXUDW10zmjOsbfG/107hWDbQvRbI7Ox2sMzvlkOwjiaC92wLqBjagvc0Z1tGwe0DFxbnagtrEeeK/t44dIqCsnMOO5lFVBmmUWopowqbwxRys7Z1W0cEwcB0rZciUe++pBXhw5olguu04OwW6rdErW1Oac1coEthJGekdXtOsynVpGcYmpR3pvFouDbmsdgrAzspolqDbHtOauWCW2ckZ6RFz2HWZzq1zogggpYIaamhip6enijgp6eCMIoIIIgaOKGGKNhjiiijFhERZmFmyMl9kkklkdLK4ulcSSSSSSTUkk5ySc5JzkpXJZZJ5HTTOc+Z7i5znEkuJNSSTnJJzknOSvKuC4LEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIWIQsQhf/9XfloicKqvCLFS8V3dS6RYNfVTW7dGYMrwTXbtKomkoqeMiM5HlsiRjopc/NIpKdzZswwcqSYsr4Q30uhZcJ5eVhGNgitIOrE7GgOccwFJBSVtKgNeG1ymuArbifv3Z8YNxLHhjRMrCsUbYLWDrQtEbWh7jmApKKTNpUBsgaTlNcBDV2Auz1iELEIX2a6Vzr037tqG71z7CtG8NsVAFKNDZsBTHHABxxyVVTJtmCjo4jlFjmmIIgcmzibK2X4rDOHMEXesLsJYbtEVmsLTTLeaAmhIa0atziAaNaC40NAaL4fD148BXVwc7C94rVDY8GsNC+R1AXEEhrRrT3kAkMYHONDQGhWybBrQE0lLqS3sZbR1ZUhLHPFcmwqlms8RDMNorftsR06s0x3ITp6LShFxZ2qZBJwZWb86kXNNl4OuNFocRBBtUzdPnrnhi1TaZiHy5RNSNCaQCUxxkalfaJ9EwTi3h0OAtLTbZ27iZ6isEJzMpmLZJsompBhYQHHYtYdg2JdmzKaxru2TZ1h2TRhmUtnWVRwUNHA3E3Cnpo442I3bKRZM4n2bu77NLFhDCNvwra327Cc0totjzVz5HF7ju5cSd2GqGuSc4TwrhPDdtfhLDFomtWEJDV0kr3Pe7d3OJNBrhqgMwzL5ZeGvj1iELEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIWIQsQhYhC//WdFi/g7dDGm6x3bvVTlHNAR1NiW7RjG1q2DXkIi9RRSyCQnBUCDDUQHljnBmy5DGMw2Nyb74buJhcYUwO4FjgGyxOroczNlcBqiKkseNMw11bS5rt7i8xi3hxa4dGGsBPBjcA2aB9dCnj2V4Gqc2pMbxpmEmlWue12pbEDQVY2XNqJ5LGsinv5YwFI8NoXani1dpQ5rx6psGslhtIJ5Gd9sU7VQC4uznsxznLu3j4uFhyNrbdM7B1uIFWTg5FdfkzNBZQbF+hk11nV0f26WpLYs7xwtZhK0PwVhEgVjtLTkV1+TOwGMtGxkMRNdZzGkhoMA8brRqGpqfCXEOORwI2Kvulbdl0+QNm7PV2nR0lKxPxIXPOLiTOtraMY1wbLHosmGcGFtaaS0RSHesbnO7XSg167CtWNfFlY4tGmw/ggsqBpLXDK7P0bG97qbE0oNeuX+FegBvFaMkFpYtW3Fd6hbS5Cu1d2oprRtubKIkcFZa7DPZFn5hPmu8DVufkfIQ7In6UvfqSGDLMx1luZAbTaM40eYOZENgWx5pH11Yy9CpmqDnAXm/epZ4HsbH2LF/ZnWy1ZxwE2hro4Rrg5kWllkrqxl6DTNUOzgbKrjYeXLw2saOwbk3es6waARiad6OAGrLRlhBwCrta0CYq21KzNd202czNm2TOwszMq14LzYdvTbjhHD1pltNpJNMo6VgJqWxs1mNvRrABr9XnKW3ovfeW+mEnYVvNbJrXayTk5bjkRgmpbFGNJEzo1jWiucgmpP3RfBLNrEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIX/2Q==",id:"e",width:193,height:192}))))};var Q;function E(){return E=Object.assign?Object.assign.bind():function(A){for(var e=1;e{let{title:e,titleId:t,...g}=A;return a.createElement("svg",E({xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",viewBox:"0 0 177 74",role:"img","aria-labelledby":t},g),e?a.createElement("title",{id:t},e):null,Q||(Q=a.createElement("path",{fill:"currentColor",d:"M87.61 16.365c-11.4 0-20.64 9.24-20.64 20.64s9.24 20.64 20.64 20.64 20.64-9.24 20.64-20.64-9.24-20.64-20.64-20.64zm0 33.27c-6.98 0-12.63-5.66-12.63-12.63 0-6.98 5.66-12.63 12.63-12.63 6.98 0 12.63 5.66 12.63 12.63 0 6.98-5.66 12.63-12.63 12.63zm68.34-33.27c-11.4 0-20.64 9.24-20.64 20.64s9.24 20.64 20.64 20.64 20.64-9.24 20.64-20.64-9.24-20.64-20.64-20.64zm0 33.27c-6.98 0-12.63-5.66-12.63-12.63 0-6.98 5.66-12.63 12.63-12.63s12.63 5.66 12.63 12.63c0 6.98-5.66 12.63-12.63 12.63zM20.66 16.365c-11.4 0-20.64 9.24-20.64 20.64v36.99h8.01v-20.69c3.49 2.71 7.87 4.34 12.63 4.34 11.4 0 20.64-9.24 20.64-20.64s-9.24-20.64-20.64-20.64zm0 33.27c-6.98 0-12.63-5.66-12.63-12.63 0-6.98 5.66-12.63 12.63-12.63 6.98 0 12.63 5.66 12.63 12.63 0 6.98-5.65 12.63-12.63 12.63zM121.62.015h-8.01v40.22c0 9.62 7.8 17.41 17.41 17.41v-8.01c-5.19 0-9.4-4.21-9.4-9.4v-19.86h9.4v-8.01h-9.4V.015zm-57.04 16.35c-9.62 0-17.41 7.8-17.41 17.41v23.87h8.01v-23.87c0-5.19 4.21-9.4 9.4-9.4v-8.01z"})))};var s=t(50615),B=t(31792),Z=t(30658),i=t(33453),V=t(81271);const o=["bun","deno","node","go","rust"];function N(){const A="undefined"!=typeof window&&window.navigator.userAgent.toLowerCase().includes("win"),e=o[function(A,e){const t=Math.ceil(A);return Math.floor(Math.random()*(Math.floor(e)-t+1))+t}(0,o.length)]||o[0];return a.createElement("ul",{className:"flex flex-col w-full p-2 m-0 overflow-auto font-mono text-sm text-gray-200 border border-solid rounded-lg bg-slate-900 border-slate-500 list-none",style:{height:230}},a.createElement("li",{className:"text-gray-800"},"# Install proto"),a.createElement("li",null,A?"irm https://moonrepo.dev/install/proto.ps1 | iex":"curl -fsSL https://moonrepo.dev/install/proto.sh | bash"),"bun"===e&&a.createElement(a.Fragment,{key:"bun"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Bun"),a.createElement("li",null,"proto install bun 0.5"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"bun run index.ts")),"deno"===e&&a.createElement(a.Fragment,{key:"deno"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Deno"),a.createElement("li",null,"proto install deno 1.31"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"deno run index.ts")),"node"===e&&a.createElement(a.Fragment,{key:"node"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Node.js"),a.createElement("li",null,"proto install node 18"),a.createElement("li",null,"proto install pnpm"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"pnpm install"),a.createElement("li",null,"pnpm run dev")),"go"===e&&a.createElement(a.Fragment,{key:"go"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Go"),a.createElement("li",null,"proto install go 1.20"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"go run .")),"rust"===e&&a.createElement(a.Fragment,{key:"rust"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Rust (requires rustup)"),a.createElement("li",null,"proto install rust 1.68"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"cargo build")))}function h(){const[A,e]=(0,a.useState)("?.?.?");return(0,a.useEffect)((()=>{fetch("https://raw.githubusercontent.com/moonrepo/proto/master/version").then((A=>A.text())).then((A=>{e(A.trim())})).catch(console.error)}),[]),a.createElement("div",{className:"bg-gradient-to-b from-slate-900 to-slate-600 star-pattern"},a.createElement("div",{className:"max-w-7xl mx-auto py-10 px-4 pb-6 sm:py-12 sm:px-6 md:py-14 lg:py-16 lg:px-8 xl:py-20 flex flex-col md:flex-row"},a.createElement("div",{className:"text-center md:text-left md:w-6/12"},a.createElement(V.Z,{icon:a.createElement(d,{height:75,style:{marginTop:5}}),text:a.createElement(U,{height:90,className:"absolute top-0 left-0"})}),a.createElement("p",{className:"mt-1 mb-0 text-base text-white sm:text-lg sm:max-w-xl sm:mx-auto md:text-xl md:mx-0 md:w-[80%]"},"A version manager for all your favorite languages and tools. A unified toolchain."),a.createElement("p",{className:"mt-1 text-white opacity-50 text-sm md:text-base md:pr-4"},"Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more."),a.createElement("div",{className:"mt-3 flex justify-center md:justify-start"},a.createElement("div",null,a.createElement(i.Z,{href:"/docs/proto/install",color:"bg-pink-600"},"Get started",a.createElement(B.Z,{icon:c.gfM,className:"ml-1 md:ml-2 inline-block rotate-180",style:{maxWidth:18}}))),a.createElement("div",{className:"ml-1 sm:ml-2 lg:ml-3"},a.createElement(r.default,{href:"/docs/proto",className:"w-full flex items-center justify-center px-2 py-1 sm:px-3 sm:py-2 text-base font-bold rounded-md text-white hover:text-white bg-white/5 hover:scale-110 md:text-lg group transition-transform"},"v",A)))),a.createElement("div",{className:"mt-4 md:mt-0 md:w-6/12 flex flex-col flex-grow-0"},a.createElement(N,null),a.createElement("div",{className:"mt-2 flex justify-center items-start gap-1"},a.createElement("div",null,a.createElement(Z.ZP,{className:"text-white opacity-50 m-0",size:"sm"},"Backed by")),a.createElement("div",null,a.createElement(s.Z,{height:22}))))))}var W=t(87129),R=t(30780),p=t(64654),Y=t(9187),x=t(90728);const w=[{title:"Lightspeed interface",icon:m.BDt,description:"Download, install, and run tools with lightspeed, thanks to our Rust based foundation."},{title:"Universal toolchain",icon:c.pmO,description:"Manage multiple languages and dependency managers through a single interface."},{title:"Version detection",icon:c.OxJ,description:"Detects a version at runtime from a language's ecosystem for maximum compatibility."},{title:"Granular configuration",icon:c.eDR,description:"Configure tools and their versions per directory, or per project."},{title:"Pluggable architecture",icon:c.zZQ,description:"Extend the toolchain with custom plugins, enabling new and non-standard tools."}];function b(){return a.createElement(p.Z,{title:"proto - A multi-language toolchain manager",description:"Lightspeed toolchain manager for programming languages and their dependency managers."},a.createElement(h,null),a.createElement("main",null,a.createElement("div",{className:"bg-gradient-to-b from-slate-600 via-pink-900 to-white"},a.createElement(F.Z,{header:"Toolchain",description:"One tool to rule them all",features:w,tier:2}),a.createElement("div",{className:"relative py-4 sm:py-5 lg:py-6"},a.createElement("div",{className:"mx-auto max-w-md px-2 sm:max-w-3xl sm:px-3 lg:max-w-7xl lg:px-4"},a.createElement("div",{className:"bg-white rounded-lg p-6 drop-shadow"},a.createElement("div",{className:"grid grid-cols-2 gap-4 text-gray-900"},a.createElement("div",null,a.createElement(Y.Z,{level:3,className:"mb-2"},"Get started"),a.createElement(Z.ZP,{className:"mb-1"},"Install proto for Linux, macOS, or WSL:"),a.createElement(R.Z,{language:"shell"},"curl -fsSL https://moonrepo.dev/install/proto.sh | bash"),a.createElement(Z.ZP,{className:"mb-1",variant:"muted"},"Or Windows (",a.createElement(x.Z,{href:"/docs/proto/install#windows"},"full instructions"),"):"),a.createElement(R.Z,{language:"shell"},"irm https://moonrepo.dev/install/proto.ps1 | iex"),a.createElement(Y.Z,{level:4,className:"mt-4 mb-2"},"Install a tool"),a.createElement(R.Z,{language:"shell"},"proto install node 18"),a.createElement(Y.Z,{level:4,className:"mt-4 mb-2"},"Run the tool"),a.createElement(R.Z,{language:"shell"},"node ./main.mjs\n\n# Or with proto\nproto run node -- ./main.mjs")),a.createElement("div",null,a.createElement(Y.Z,{level:3,className:"mb-3"},"Supported tools"),a.createElement(W.Z,null),a.createElement(Y.Z,{level:3,className:"mt-4 mb-2"},"Why another version manager?"),a.createElement(Z.ZP,{className:"mb-2"},"To start, proto powers ",a.createElement(x.Z,{href:"/moon"},"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"," ",a.createElement(x.Z,{href:"https://crates.io/users/milesj"},"Rust crates")," that moon inherits."),a.createElement(Z.ZP,{className:"mb-2"},"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."),a.createElement(Z.ZP,{className:"mb-0"},"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.")))))))))}},9619:(A,e,t)=>{t.d(e,{Z:()=>a});var g=t(27378),C=t(40624),l=t(31792);const I={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function a(A){let{className:e,icon:t,text:a,variant:c}=A;return g.createElement("span",{className:(0,C.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",c?I[c]:"bg-gray-100 text-gray-800",e)},t&&g.createElement(l.Z,{icon:t,className:"mr-1"}),a)}}}]); \ No newline at end of file diff --git a/assets/js/1cb65c7d.bade70d7.js b/assets/js/1cb65c7d.bade70d7.js deleted file mode 100644 index 17e51653fca..00000000000 --- a/assets/js/1cb65c7d.bade70d7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3168],{59220:(A,e,g)=>{g.d(e,{Z:()=>I});var t=g(27378),C=g(9619);function I(A){let{className:e,status:g}=A;switch(g){case"experimental":return t.createElement(C.Z,{className:e,text:"Experimental",variant:"failure"});case"in-development":return t.createElement(C.Z,{className:e,text:"In development",variant:"success"});case"coming-soon":return t.createElement(C.Z,{className:e,text:"Coming soon",variant:"warning"});case"new":return t.createElement(C.Z,{className:e,text:"New",variant:"info"});default:return null}}},33453:(A,e,g)=>{g.d(e,{Z:()=>l});var t=g(27378),C=g(40624),I=g(81884);function l(A){let{children:e,href:g,color:l}=A;return t.createElement(I.default,{href:g,className:(0,C.Z)("inline-flex items-center justify-center px-2 py-1 sm:px-3 sm:py-2 text-base font-bold rounded-md text-white hover:text-white hover:scale-105 md:text-lg transition-transform",l??"bg-purple-600")},e)}},75969:(A,e,g)=>{g.d(e,{Z:()=>r});var t=g(27378),C=g(40624),I=g(31792),l=g(9187),a=g(30658),c=g(59220);const m={1:"from-purple-600 to-blurple-600",2:"from-pink-400 to-red-400",3:"from-teal-400 to-slate-100",4:"from-yellow-300 to-green-600"},F={1:"text-blurple-300",2:"text-pink-500",3:"text-teal-600",4:"text-green-600"};function r(A){let{header:e,description:g,features:r,reversed:n,tier:d}=A;return t.createElement("div",null,t.createElement("div",{className:"relative py-4 sm:py-5 lg:py-6"},t.createElement("div",{className:"mx-auto max-w-md px-2 sm:max-w-3xl sm:px-3 lg:max-w-7xl lg:px-4"},t.createElement("div",{className:(0,C.Z)("md:flex items-center justify-between",n&&"flex-row-reverse")},t.createElement("aside",{className:(0,C.Z)("md:w-1/3 mx-2 md:mx-0 p-2 sm:p-3 md:p-4 drop-shadow z-0 rounded-t-lg text-center",n?"md:rounded-tl-none md:rounded-tr-lg md:rounded-bl-none md:rounded-br-lg bg-gradient-to-bl md:pl-0 md:text-left":"md:rounded-tl-lg md:rounded-tr-none md:rounded-bl-lg md:rounded-br-none bg-gradient-to-br md:pr-0 md:text-right",m[d])},t.createElement("h2",{className:(0,C.Z)("m-0 px-1 py-0.5 inline-block text-base font-semibold uppercase tracking-wider text-white bg-black/20 rounded",n?"md:rounded-tl-none md:rounded-bl-none md:pl-4":"md:rounded-tr-none md:rounded-br-none md:pr-4")},e),t.createElement(l.Z,{className:(0,C.Z)("mt-2 text-white",n?"md:ml-4":"md:mr-4"),level:2},g)),t.createElement("section",{className:"md:w-2/3 bg-white rounded-lg p-2 md:p-3 lg:p-4 drop-shadow z-10"},t.createElement("ul",{className:"m-0 p-0 list-none grid grid-cols-1 sm:grid-cols-2 gap-2 md:gap-3 lg:gap-4"},r.map((A=>t.createElement("li",{key:A.title,className:"flex"},t.createElement("div",{className:"pt-1 w-9 shrink-0 grow-0"},t.createElement(I.Z,{icon:A.icon,className:(0,C.Z)("text-5xl justify-center flex",F[d]),style:{maxWidth:54}})),t.createElement("div",{className:"ml-1"},t.createElement(l.Z,{level:4,className:"text-gray-900"},A.title),A.status&&t.createElement("p",{className:"m-0"},t.createElement(c.Z,{status:A.status})),t.createElement(a.ZP,{className:"mt-1 mb-0",variant:"muted"},A.description)))))))))))}},81271:(A,e,g)=>{g.d(e,{Z:()=>C});var t=g(27378);function C(A){let{icon:e,text:g}=A;return t.createElement("h1",{className:"text-white flex justify-center md:justify-start items-stretch gap-3",style:{height:85}},t.createElement("div",{className:"relative"},e),t.createElement("div",{className:"relative"},g))}},87129:(A,e,g)=>{g.d(e,{Z:()=>l});var t=g(27378),C=g(81884),I=g(30658);function l(){return t.createElement("div",{className:"grid grid-cols-5 gap-2 px-2"},t.createElement("div",{className:"text-center"},t.createElement(C.default,{href:"/docs/proto/tools#bun"},t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},t.createElement("path",{fill:"currentColor",d:"M64 10.308c-5.12 0-10.24 2.288-16.231 5.71a360.541 360.541 0 0 0-6.144 3.605c-3.908 2.32-8.295 4.97-13.415 7.604C10.546 36.427 0 51.78 0 68.237c0 27.27 28.706 49.455 64 49.455s64-22.185 64-49.454c0-16.474-10.549-31.811-28.213-41.01-6.314-3.276-11.11-6.14-15.36-8.674-1.826-1.119-3.533-2.141-5.24-3.079C73.59 12.282 69.12 10.308 64 10.308Zm0 4.115c4.13 0 7.902 1.646 13.073 4.608 1.553.905 3.258 1.925 5.119 3.027 4.079 2.436 9.113 5.53 15.564 8.821 16.265 8.443 25.977 22.415 25.977 37.359 0 24.998-26.794 45.34-59.733 45.34-32.939 0-59.733-20.342-59.733-45.34 0-14.944 9.71-28.917 25.958-37.392 5.12-2.683 9.676-5.364 13.652-7.733 2.116-1.251 4.113-2.454 6.042-3.54 5.546-3.094 9.95-5.15 14.081-5.15zm3.987 2.75c-.534-.001-.811.721-.318 1.067v.066a27.418 27.418 0 0 1 8.023 8.454 26.356 26.356 0 0 1 3.666 10.9.528.528 0 0 0 .109.39.577.577 0 0 0 .767.125.542.542 0 0 0 .235-.333c1.57-5.744.682-15.536-12.238-20.621a.68.68 0 0 0-.243-.048zm-4.508.406c-.409.032-.777.51-.52.942v.064a26.113 26.113 0 0 1 3.889 10.796 25.818 25.818 0 0 1-1.142 11.373c-.205.576.528 1.07.938.592 3.737-4.608 6.997-13.757-2.765-23.631a.536.536 0 0 0-.4-.136zm-3.875.41a.6.6 0 0 0-.52.596 26.19 26.19 0 0 1-2.48 11.273 27.107 27.107 0 0 1-7.129 9.25c-.478.412-.102 1.202.512.971 5.752-2.156 13.517-8.607 10.24-21.625-.068-.37-.354-.506-.623-.464zm-5.04 2.282a.628.628 0 0 0-.533.34 28.014 28.014 0 0 1-7.298 9.241 29.244 29.244 0 0 1-10.57 5.569c-.615.181-.63 1.054.018 1.037 6.144.362 16.025-2.386 18.977-15.552.096-.411-.247-.654-.593-.635zM42.797 55.206a9.7 9.7 0 0 0-3.367.686 9.339 9.339 0 0 0-4.223 3.34 8.84 8.84 0 0 0-1.585 5.039c0 2.402.988 4.706 2.748 6.406 1.76 1.7 4.146 2.658 6.637 2.663a9.656 9.656 0 0 0 5.23-1.521 9.15 9.15 0 0 0 3.47-4.067 8.765 8.765 0 0 0 .544-5.24 8.975 8.975 0 0 0-2.57-4.647 9.513 9.513 0 0 0-4.815-2.486 9.744 9.744 0 0 0-2.07-.173zm42.344 0a9.707 9.707 0 0 0-3.373.681 9.34 9.34 0 0 0-4.232 3.34 8.837 8.837 0 0 0-1.59 5.044c-.004 2.395.976 4.694 2.726 6.394 1.75 1.7 4.127 2.661 6.61 2.675a9.66 9.66 0 0 0 5.244-1.496 9.155 9.155 0 0 0 3.494-4.057 8.766 8.766 0 0 0 .562-5.243 8.971 8.971 0 0 0-2.558-4.66 9.51 9.51 0 0 0-4.813-2.5 9.747 9.747 0 0 0-2.07-.178zM40.3 58.037a3.574 3.574 0 0 1 2.327 1c.494.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525 3.625 3.625 0 0 1-1.967.567 3.6 3.6 0 0 1-2.487-1.004 3.349 3.349 0 0 1-1.03-2.404c0-.675.21-1.334.598-1.894.39-.56.941-.997 1.588-1.254a3.647 3.647 0 0 1 1.525-.255zm42.275 0c.173.009.345.03.517.063a3.58 3.58 0 0 1 1.81.937c.493.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525c-.583.373-1.27.57-1.969.567h-.033a3.598 3.598 0 0 1-2.465-1.017 3.346 3.346 0 0 1-1.016-2.391c0-.675.207-1.334.595-1.894.39-.56.944-.997 1.59-1.254a3.647 3.647 0 0 1 1.525-.255zM53.623 77.996a2.482 2.482 0 0 0-1.065.204c-.334.145-.63.363-.864.635-.197.226-.338.49-.415.775a1.904 1.904 0 0 0-.029.871c.806 3.245 2.667 6.156 5.308 8.31a12.881 12.881 0 0 0 7.594 3.292c2.838-.244 5.51-1.403 7.58-3.291 2.641-2.155 4.5-5.066 5.305-8.31a1.886 1.886 0 0 0-.018-.87 1.937 1.937 0 0 0-.409-.777 2.446 2.446 0 0 0-.864-.629 2.538 2.538 0 0 0-1.063-.21zm0 1.91 21.06.031a.369.369 0 0 1 .342.15 13.448 13.448 0 0 1-2.402 4.898l-.073-.06c-2.171-1.994-5.042-3.129-8.04-3.177-1.602.013-3.18.37-4.623 1.042a10.806 10.806 0 0 0-3.685 2.802 13.47 13.47 0 0 1-2.937-5.538c.017-.033.085-.148.358-.148zm10.973 3.504c2.556.073 4.991 1.065 6.827 2.782l.083.068c-.354.358-.73.699-1.125 1.02a10.885 10.885 0 0 1-6.229 2.845 10.795 10.795 0 0 1-6.23-2.88 13.946 13.946 0 0 1-.482-.412h.006a9.078 9.078 0 0 1 3.166-2.502 9.427 9.427 0 0 1 3.984-.92z"})))),t.createElement("div",{className:"text-center"},t.createElement(C.default,{href:"/docs/proto/tools#deno"},t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},t.createElement("path",{fill:"currentColor",d:"M59.016 13.328c-.239.024-1 .113-1.688.176-9.777 1.023-19.406 5.164-27.258 11.738-1.449 1.203-4.75 4.504-5.953 5.953-6.5 7.766-10.3 16.48-11.703 26.793-.312 2.29-.312 10.016 0 12.305 1.402 10.312 5.203 19.027 11.703 26.793 1.203 1.45 4.504 4.75 5.953 5.953 7.766 6.5 16.48 10.3 26.793 11.703 2.29.313 10.016.313 12.305 0 10.312-1.402 19.027-5.203 26.793-11.703 1.45-1.203 4.75-4.504 5.953-5.953 6.5-7.766 10.3-16.48 11.7-26.793.316-2.29.316-10.016 0-12.305-1.4-10.312-5.2-19.027-11.7-26.793-1.203-1.449-4.504-4.75-5.953-5.953-7.738-6.476-16.543-10.324-26.719-11.687-1.101-.153-2.699-.215-5.664-.239-2.262-.027-4.328-.011-4.562.012zm.625 5.402c0 1.461.097 4.637.238 7.653.074 1.472.16 3.586.2 4.687.136 3.903.55 14.14.612 15.055l.063.91-.563-.062c-.312-.024-.601-.098-.652-.137-.035-.05-.125-.914-.176-1.926-.222-4.45-.96-21.719-1.035-24.242l-.078-2.777.352-.047c.187-.028.5-.063.699-.078l.34-.012zm11.964-.3c.012.011.051 3.789.086 8.39.051 4.614.114 8.75.153 9.2.035.464.023.863-.04.89-.05.035-.363.035-.675 0l-.574-.05-.086-3.641a692.868 692.868 0 00-.14-4.961c-.099-2.215-.188-9.727-.11-9.914.047-.14.187-.153.71-.063.364.074.665.137.676.149zm-28.921 4.187c.078.113.664 7.004 1.39 16.016.239 3.066.473 5.867.512 6.215.062.636.05.664-.352.914-.222.136-.449.25-.5.25-.035 0-.109-.325-.148-.727-.176-1.625-.852-9.476-1.324-15.152-.278-3.34-.528-6.328-.563-6.653-.062-.55-.05-.601.274-.773.398-.215.625-.25.71-.09zm34.421 2.516c.352.125.387.187.465.898.125 1.25.086 7.227-.05 7.227-.364 0-1.114-.426-1.176-.664-.04-.149-.074-1.922-.074-3.938 0-4.062-.051-3.824.835-3.523zm-23.093.586c0 .336.09 2.199.187 4.164.102 1.96.215 4.449.266 5.527.086 2.176.11 2.098-.727 2.149-.414.011-.414.011-.437-.614-.024-.347-.086-1.437-.164-2.437-.063-1-.211-3.164-.313-4.813a117.11 117.11 0 00-.261-3.64c-.075-.625-.063-.649.273-.774.203-.074.55-.136.777-.136.399-.012.399-.012.399.574zm34.683 1.715l.426.171.09 1.676c.035.914.062 2.89.035 4.38l-.035 2.722-.527-.262-.524-.25-.039-4.152c-.023-2.285-.012-4.223.012-4.313.05-.187.05-.187.562.028zM65.867 29.07c.074.075.25 6.137.262 9.215l.012 1.852-.586-.09c-.34-.04-.614-.074-.625-.086-.04-.027-.414-9.29-.414-10.191v-.926l.636.074c.364.05.676.113.715.152zm28.793.887c.153.176.176 2.914.215 18.016.035 17.343.035 17.793-.188 17.793a.806.806 0 01-.44-.164c-.188-.137-.212-1.649-.274-16.465-.051-8.977-.114-17.13-.149-18.117l-.078-1.801.363.261c.215.153.454.364.551.477zM83.445 32.52c.063.05.125.761.137 1.578.063 2.761.074 19.703.012 19.754-.024.023-.25-.04-.5-.137l-.45-.188v-21.27l.352.075c.188.05.387.125.45.188zm-34.507.699c.035.34.097 1.101.136 1.726.04.614.125 2.016.2 3.102.152 2.2.124 2.34-.587 2.34-.374 0-.425-.04-.476-.414-.125-.739-.563-6.891-.5-6.989.062-.09.715-.312 1.012-.34.078-.011.175.25.215.575zm-20.68 3.191c.137 1.324.41 4.102.613 6.164.211 2.063.387 3.813.387 3.887 0 .152-.965.625-1.063.527-.062-.062-1.312-11.129-1.312-11.629 0-.3.96-1.562 1.086-1.425.039.023.164 1.136.289 2.476zm49.023 1.313l.364.21.011 2.704c.012 1.472.04 3.125.04 3.66.023 1.125-.114 1.312-.79 1.078l-.386-.14V44.16c0-.597-.04-2.336-.09-3.875l-.075-2.777h.29c.148 0 .437.101.636.215zm-43.535 4.851c.227 2.399.586 6.45.824 9l.426 4.63-.488.483-.473.489-.09-.989c-.05-.55-.3-3.097-.562-5.675a1449.23 1449.23 0 01-.824-8.301l-.352-3.602.488-.449c.438-.414.489-.426.575-.2.05.126.261 2.2.476 4.614zm-9.363 1.512c.273 2.465 1 9.016 1.625 14.555s1.21 10.875 1.324 11.875c.102 1 .273 2.515.375 3.379.176 1.46.176 1.562-.023 1.71-.301.227-.426.2-.426-.062 0-.113-.113-1.063-.25-2.086-.227-1.715-.602-4.617-1.438-11.129a740.832 740.832 0 01-.75-5.812c-.25-1.891-.613-4.703-.816-6.254-.2-1.551-.535-4.2-.75-5.914-.223-1.7-.36-3.211-.324-3.375.09-.336.824-1.512.902-1.438.023.035.273 2.074.55 4.55zm-3.828 5.387c.187 1.504.539 4.242.777 6.101.234 1.852.535 4.164.672 5.13l.238 1.75-.262.226c-.148.125-.3.172-.351.125-.047-.051-.149-.551-.223-1.102a995.27 995.27 0 00-1.039-7.129l-.887-6.125.286-.851c.152-.461.312-.836.351-.836.051 0 .238 1.226.438 2.71zm68.64-1.637c.176.176.203.95.203 6.691v6.489h-.351c-.762 0-.75.187-.8-6.914l-.036-6.465h.398c.211 0 .489.086.586.199zm-27.367 2.238c2.824.426 5.29 1.215 7.727 2.465 1.574.813 2.324 1.375 4.074 3.05 2.601 2.49 4.203 4.665 5.703 7.74 2.188 4.476 3.04 8.437 4.113 19.066.489 4.765 1.125 13.402 1.262 16.94.04 1.028.125 2.716.203 3.75.137 2.204.297 1.903-1.64 2.84-2.688 1.302-5.278 2.2-8.688 3.04-4.176 1.023-6.879 1.347-11.004 1.363l-3 .012.024-1.438c0-.789.074-2.625.152-4.062.375-6.965.297-15.754-.188-20.633-.277-2.8-.812-6.2-1.113-6.95-.062-.163.223-.3 1.461-.726 2.266-.789 4.227-1.777 4.527-2.261.54-.926-.425-2.254-1.652-2.254-.21 0-.848.226-1.437.488-2.801 1.289-8.414 2.8-11.653 3.14-2.238.239-5.715.098-8.125-.34-1.312-.238-3.664-1.124-5.629-2.136-2.261-1.176-3.648-2.738-4.062-4.59-.227-1-.164-3 .125-4.125.312-1.238 1.187-3.039 1.988-4.09 3.563-4.687 10.914-8.75 18.453-10.175 2.403-.45 5.801-.5 8.38-.114zm38.57.387c.45.187.5.238.5.664.028 3.414-.05 11.215-.113 11.54-.012.112-.66.124-.937.026-.172-.062-.2-.738-.2-6.254 0-3.949.051-6.175.125-6.175.063 0 .352.09.625.199zm5.465 6.867l.45.188-.086 10.351c-.102 13.192-.114 13.578-.59 14.715-.774 1.863-.735 2.238-.66-5.937.023-4.09.085-8.227.113-9.192.023-.96.047-3.676.062-6.039 0-2.852.035-4.273.125-4.273.075 0 .336.086.586.187zm-75.191 3.113c.074 1.012.047 1.11-.317 1.91l-.398.852-.148-1.25c-.239-2-.239-2.09.234-2.387.215-.152.441-.25.477-.226.039.023.113.523.152 1.101zm-7.73 7.54c.113 1.023.988 7.824 1.44 11.164.673 5.164.723 5.902.423 5.59-.035-.04-.325-1.778-.625-3.864-1.95-13.48-1.938-13.39-1.774-13.492.336-.227.45-.102.535.601zm9.003 5.726c.075.313.438 3.7.438 4.113 0 .348-.45.676-.649.473-.062-.063-.226-1.125-.351-2.348-.137-1.238-.274-2.527-.313-2.863l-.074-.625.438.5c.25.273.472.61.511.75zm10.09 4.711c.137.125.227.625.336 1.977.188 2.437.215 2.25-.297 2.25-.527 0-.515.039-.687-2.165-.176-2.238-.176-2.21.16-2.21.164 0 .375.074.488.148zm9.903.187c.023.125.085.875.136 1.665.04.789.153 2.562.25 3.937.352 5.05.364 5.691.153 5.691-.239 0-.266-.187-.54-3.753a274.195 274.195 0 00-.414-5.165c-.109-1.359-.187-2.5-.148-2.523.137-.152.5-.039.563.148zm-23.504 2.403c.074.113.546 4.113 1.136 9.578.176 1.648.348 3.238.387 3.535l.063.54-.313-.2c-.238-.164-.324-.324-.324-.613 0-.79-.54-5.977-.95-9.153-.238-1.8-.425-3.386-.425-3.539 0-.261.3-.363.426-.148zm72.152 5.226l-.086 5.227-.313.46c-.714 1.052-.675 1.25-.636-4.6l.023-5.364.461-.477c.25-.25.5-.46.55-.46.04 0 .04 2.351 0 5.214zm-11.563 8.29c.063 7.265.047 7.828-.152 8.05-.125.137-.238.227-.273.188-.09-.098-.215-15.942-.114-16.028.051-.05.176-.074.29-.062.16.035.199.926.25 7.851zm-40.835-4.977c.085.773.398 4.488.523 6.238.074 1.176.074 1.215-.2 1.3-.148.052-.324.04-.374-.022-.086-.09-.364-2.864-.7-7.141l-.09-1.024h.391c.36 0 .387.024.45.649zm-9.829 4.375c.086.09.149.402.149.715 0 .324.152 2.011.312 3.761.477 4.79.516 5.438.301 5.313-.324-.188-.613-.473-.55-.547.027-.05-.024-.676-.126-1.39a65.54 65.54 0 01-.25-2.626c-.047-.722-.16-2.05-.261-2.937-.239-2.188-.223-2.438.05-2.438a.59.59 0 01.375.149zm5.914 8.414c.04.277.114 1.3.164 2.277.086 1.875.047 2.012-.464 1.625-.149-.113-.25-.586-.399-2.011-.261-2.579-.277-2.477.211-2.426.363.035.414.086.488.535zm0 0"}),t.createElement("path",{d:"M39.809 56.063c-1.301.562-1.399 2.328-.176 2.953.89.449 1.789.234 2.254-.54.875-1.425-.551-3.074-2.078-2.413zm8.476 1.203c-1.2.734-1.2 2.511 0 3.25 1.188.71 2.727-.227 2.727-1.653 0-1.375-1.575-2.3-2.727-1.597zm0 0",fill:"currentColor"})))),t.createElement("div",{className:"text-center"},t.createElement(C.default,{href:"/docs/proto/tools#go"},t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},t.createElement("g",{fill:"currentColor","fill-rule":"evenodd"},t.createElement("path",{d:"M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zM2.004 60.404c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zM79.58 53.738c-3.819.97-6.425 1.697-10.182 2.666-.91.243-.97.303-1.758-.606-.909-1.03-1.576-1.697-2.848-2.303-3.819-1.878-7.516-1.333-10.97.91-4.121 2.666-6.242 6.605-6.182 11.514.06 4.849 3.394 8.849 8.182 9.516 4.121.545 7.576-.91 10.303-4 .545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818.788-1.879 2.242-5.03 3.09-6.606.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91-.667 4.363-2.303 8.363-4.97 11.878-4.364 5.758-10.06 9.333-17.273 10.303-5.939.788-11.454-.364-16.302-4-4.485-3.394-7.03-7.879-7.697-13.454-.788-6.606 1.151-12.546 5.151-17.758 4.303-5.636 10-9.212 16.97-10.485 5.697-1.03 11.151-.363 16.06 2.97 3.212 2.121 5.515 5.03 7.03 8.545.364.546.122.849-.606 1.03z"}),t.createElement("path",{d:"M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334-3.576-3.09-5.818-7.03-6.545-11.697-1.091-6.848.787-12.909 4.909-18.302 4.424-5.819 9.757-8.849 16.97-10.122 6.181-1.09 12-.484 17.272 3.091 4.788 3.273 7.757 7.697 8.545 13.515 1.03 8.182-1.333 14.849-6.97 20.546-4 4.06-8.909 6.606-14.545 7.757-1.636.303-3.273.364-4.848.546zm14.424-24.485c-.06-.788-.06-1.394-.182-2-1.09-6-6.606-9.394-12.363-8.06-5.637 1.272-9.273 4.848-10.606 10.545-1.091 4.727 1.212 9.515 5.575 11.454 3.334 1.455 6.667 1.273 9.879-.363 4.788-2.485 7.394-6.364 7.697-11.576z","fill-rule":"nonzero"}))))),t.createElement("div",{className:"text-center"},t.createElement(C.default,{href:"/docs/proto/tools#node"},t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},t.createElement("path",{fill:"currentColor",d:"M112.678 30.334L68.535 4.729c-2.781-1.584-6.424-1.584-9.227 0L14.82 30.334C11.951 31.985 10 35.088 10 38.407v51.142c0 3.319 1.992 6.423 4.862 8.083l11.729 6.688c5.627 2.772 7.186 2.772 9.746 2.772 8.334 0 12.662-5.039 12.662-13.828v-50.49C49 42.061 49.445 41 48.744 41h-5.622C42.41 41 41 42.061 41 42.773v50.49c0 3.896-3.616 7.773-10.202 4.48L18.676 90.73c-.422-.23-.676-.693-.676-1.181V38.407c0-.482.463-.966.891-1.213l44.378-25.561a1.508 1.508 0 011.415 0l43.963 25.555c.421.253.354.722.354 1.219v51.142c0 .488.092.963-.323 1.198l-44.133 25.576c-.378.227-.87.227-1.285 0l-11.317-6.749c-.341-.198-.752-.269-1.08-.086-3.145 1.783-3.729 2.02-6.679 3.043-.727.253-1.799.692.408 1.929l14.798 8.754a9.29 9.29 0 004.647 1.246 9.303 9.303 0 004.666-1.246l43.976-25.582c2.871-1.672 4.322-4.764 4.322-8.083V38.407c-.001-3.319-1.452-6.414-4.323-8.073zM77.727 81.445c-11.727 0-14.309-3.235-15.17-9.066-.102-.628-.634-1.379-1.274-1.379h-5.73c-.709 0-1.28.86-1.28 1.566 0 7.466 4.06 16.512 23.454 16.512 14.038 0 22.088-5.455 22.088-15.109 0-9.572-6.467-12.084-20.082-13.886-13.762-1.819-15.16-2.738-15.16-5.962 0-2.658 1.184-6.203 11.374-6.203 9.104 0 12.46 1.954 13.841 8.091.119.577.646.991 1.241.991h5.754c.354 0 .691-.143.939-.396.241-.272.367-.613.336-.979-.893-10.569-7.913-15.494-22.112-15.494-12.632 0-20.166 5.334-20.166 14.275 0 9.698 7.497 12.378 19.622 13.577 14.505 1.422 15.633 3.542 15.633 6.395 0 4.956-3.978 7.067-13.308 7.067z"}))),t.createElement(I.ZP,{className:"m-0",variant:"muted"},"+ npm, pnpm, yarn")),t.createElement("div",{className:"text-center"},t.createElement(C.default,{href:"/docs/proto/tools#rust"},t.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},t.createElement("path",{d:"M62.271 10.88c-.189.11-.982 1.248-1.763 2.529-1.96 3.217-1.982 3.219-4.615.448-1.713-1.802-2.127-2.132-2.679-2.128-.359.002-.812.124-1.008.271-.195.147-.748 1.317-1.228 2.6-1.099 2.939-1.152 3.034-1.761 3.151-.375.071-1.097-.331-2.828-1.574-1.278-.919-2.532-1.67-2.786-1.67-1.054 0-1.351.576-1.853 3.593-.638 3.836-.616 3.823-4.074 2.252-1.396-.633-2.72-1.152-2.943-1.152-.223 0-.646.24-.939.533-.532.533-.533.535-.388 3.468l.146 2.936-.555.297c-.492.263-.831.231-3.009-.284-2.843-.671-3.443-.653-4.019.122l-.421.566.565 2.421c.31 1.331.609 2.613.665 2.848.055.234-.04.609-.212.832-.284.367-.586.4-3.217.36-4.453-.07-4.706.312-2.866 4.328.585 1.275 1.064 2.433 1.064 2.572 0 .734-.585 1.001-3.098 1.411-1.406.229-2.628.417-2.716.417-.088 0-.352.192-.586.426-.765.765-.548 1.483 1.187 3.932 2.161 3.05 2.157 3.061-1.413 4.427-4.06 1.553-4.142 1.936-1.051 4.868 2.879 2.73 2.882 2.69-.377 4.739-2.469 1.551-2.507 1.588-2.57 2.429-.076 1.023-.058 1.041 2.89 2.842 2.915 1.78 2.915 1.834.054 4.541-3.077 2.91-2.982 3.335 1.081 4.868 3.55 1.339 3.555 1.355 1.39 4.405-1.227 1.729-1.618 2.449-1.618 2.983 0 .999.52 1.254 3.627 1.776 2.617.441 3.2.7 3.2 1.422 0 .148-.48 1.316-1.067 2.594-1.826 3.977-1.618 4.308 2.704 4.308 4.025 0 3.918-.123 3.051 3.507-.654 2.736-.664 3.26-.072 3.851.453.454 1.307.403 3.978-.236 2.04-.487 2.398-.521 2.871-.268l.54.289-.146 2.935c-.145 2.934-.144 2.936.388 3.469.293.293.722.533.952.533.23 0 1.554-.516 2.943-1.147 3.447-1.565 3.425-1.578 4.061 2.246.504 3.031.798 3.594 1.874 3.594.267 0 1.494-.72 2.728-1.6 2.167-1.546 2.729-1.788 3.306-1.421.149.094.727 1.364 1.284 2.822.819 2.144 1.119 2.702 1.575 2.92.868.416 1.405.082 3.445-2.14 2.463-2.683 2.564-2.67 4.575.589 2.221 3.598 2.796 3.59 5.073-.073 1.962-3.156 1.939-3.154 4.591-.384 1.761 1.838 2.136 2.131 2.73 2.131.379 0 .832-.142 1.005-.316.174-.174.75-1.459 1.28-2.855.53-1.397 1.079-2.613 1.221-2.703.561-.357 1.142-.106 3.306 1.43 1.274.905 2.473 1.6 2.758 1.6 1.058 0 1.44-.751 1.88-3.703.376-2.517.452-2.758.947-3.009.487-.247.779-.164 3.063.873 1.389.63 2.713 1.146 2.943 1.146.23 0 .666-.247.967-.549l.549-.548-.151-2.815c-.144-2.688-.131-2.832.298-3.22.441-.399.486-.397 2.952.166 2.986.682 3.543.7 4.104.139.548-.548.542-.668-.208-3.831-.841-3.548-.954-3.422 3.088-3.422 2.755 0 3.062-.039 3.413-.426.586-.648.447-1.39-.732-3.903-.595-1.266-1.078-2.418-1.074-2.56.02-.747.607-1.002 3.32-1.443 1.66-.269 2.902-.581 3.127-.784.754-.681.477-1.567-1.244-3.98-2.157-3.024-2.148-3.053 1.306-4.326 4.136-1.524 4.254-2.032 1.159-4.973-2.867-2.724-2.868-2.709.272-4.637 3.796-2.33 3.802-2.855.067-5.173-3.212-1.993-3.21-1.965-.331-4.699 3.088-2.934 3.004-3.318-1.057-4.871-3.584-1.371-3.595-1.405-1.417-4.394 1.297-1.78 1.618-2.371 1.618-2.981 0-1.066-.478-1.305-3.622-1.813-2.627-.424-3.205-.682-3.205-1.429 0-.142.48-1.285 1.067-2.542 1.149-2.461 1.31-3.446.66-4.035-.349-.316-.817-.361-3.321-.32-2.62.044-2.955.007-3.318-.358-.397-.399-.393-.455.227-3.042.76-3.17.763-3.247.138-3.834-.634-.596-1.03-.586-3.941.099-2.121.5-2.472.533-2.954.275l-.547-.293.151-2.926.152-2.925-.547-.547c-.301-.301-.728-.547-.95-.547-.221 0-1.538.523-2.926 1.161-2.318 1.067-2.567 1.138-3.068.876-.5-.262-.583-.52-1.01-3.127-.493-3.016-.798-3.603-1.869-3.603-.254 0-1.513.755-2.798 1.678-2.11 1.516-2.393 1.659-2.919 1.476-.435-.152-.688-.483-.997-1.306-.229-.606-.667-1.774-.975-2.595-.622-1.656-.969-2.027-1.901-2.027-.52 0-.991.374-2.679 2.127-2.653 2.756-2.663 2.755-4.614-.445-.78-1.279-1.595-2.421-1.812-2.537-.488-.262-1.062-.261-1.511.002m2.418 9.635c2.311 1.645 1.082 5.512-1.752 5.512-2.75 0-4.135-3.313-2.171-5.194 1.108-1.062 2.697-1.191 3.923-.318m-2.906 10.214c1.515.576 2.137.23 5.596-3.104l2.599-2.506 1.1.146c3.45.458 10.312 3.472 14.255 6.261 3.623 2.564 8.438 7.786 10.49 11.377l.439.769-1.944 4.38c-1.07 2.409-1.945 4.633-1.945 4.944 0 .717.47 1.851.923 2.226.191.159 2.006 1.033 4.033 1.942l3.684 1.654.145.937c.187 1.221.212 4.22.042 5.072l-.133.666h-2.103c-2.439 0-2.251-.218-2.383 2.774-.096 2.169-.62 3.368-1.812 4.144-1.942 1.267-5.149 1.037-6.509-.466-.209-.231-.615-1.392-.903-2.581-.841-3.473-1.971-5.423-4.241-7.32-.717-.599-1.303-1.158-1.303-1.243 0-.084.788-.748 1.752-1.473 3.51-2.646 5.528-5.726 5.75-8.777.423-5.819-4.213-11.243-11.109-13.001-1.635-.417-2.333-.43-22.56-.43-11.48 0-20.873-.075-20.873-.166 0-.215 2.551-2.691 4.054-3.933 4.127-3.412 9.488-6.097 15.04-7.531l1.92-.497 2.728 2.766c1.501 1.521 2.972 2.857 3.268 2.97M27.432 48.526c1.257.823 1.772 2.891 1.03 4.134-1.148 1.924-4.056 2.005-5.205.145-1.671-2.702 1.547-6.001 4.175-4.279m74.05.105c3.288 2.005.74 6.937-2.78 5.38-2.35-1.04-2.425-4.252-.127-5.424.959-.489 2.061-.472 2.907.044M37.12 60.907v12.266H26.276l-.43-1.866c-.846-3.675-1.202-7.477-.989-10.591l.149-2.188 3.728-1.672c2.339-1.048 3.843-1.847 4.037-2.144.848-1.293.767-2.217-.423-4.845l-.556-1.227h5.328v12.267m31.22-11.733c2.322.604 3.549 1.833 3.552 3.556.002 1.265-.625 2.059-2.18 2.761-1.101.498-1.276.51-8.219.578l-7.093.068v-7.284h6.355c4.964 0 6.625.07 7.585.321m-2.396 17.602c1.151.32 2.512 1.32 3.21 2.359.733 1.092 1.162 2.512 2.178 7.216.858 3.976 1.41 5.276 2.956 6.968 1.915 2.095 1.471 2.014 11.037 2.014 4.581 0 8.328.073 8.328.163 0 .161-3.155 3.891-3.291 3.891-.039 0-1.687-.345-3.662-.767-5.577-1.191-5.778-1.051-7.058 4.926l-.823 3.84-.743.366c-1.24.612-5.27 1.872-7.359 2.302-3.452.71-7.209.95-10.511.671-5.629-.477-13.083-2.661-13.374-3.92-.062-.267-.437-1.995-.832-3.841-.396-1.846-.877-3.597-1.069-3.891-.923-1.408-1.894-1.495-6.164-.55-1.617.358-3.028.65-3.136.65-.203 0-3.204-3.47-3.204-3.704 0-.073 7.128-.158 15.84-.188l15.84-.054.057-5.627c.04-3.973-.015-5.714-.187-5.92-.192-.232-1.214-.293-4.91-.293H54.4V66.56l5.387.001c2.962.001 5.733.098 6.157.215M41.536 92.365c2.519 1.535 1.311 5.557-1.668 5.554-3.055-.002-4.187-3.987-1.584-5.575.861-.525 2.374-.515 3.252.021m46.126.168c1.235.905 1.646 2.788.881 4.042-2.009 3.295-7.033.676-5.355-2.791.825-1.703 3.018-2.317 4.474-1.251","fill-rule":"evenodd",fill:"currentColor"})))))}},79090:(A,e,g)=>{g.r(e),g.d(e,{default:()=>w});var t,C,I,l,a=g(27378),c=g(21947),m=g(83469),F=g(75969),r=g(81884);function n(){return n=Object.assign?Object.assign.bind():function(A){for(var e=1;e{let{title:e,titleId:g,...c}=A;return a.createElement("svg",n({xmlns:"http://www.w3.org/2000/svg",xmlnsXlink:"http://www.w3.org/1999/xlink",fill:"none",viewBox:"0 0 82 82",role:"img","aria-labelledby":g},c),e?a.createElement("title",{id:g},e):null,a.createElement("g",{clipPath:"url(#a)"},a.createElement("mask",{id:"b",width:82,height:82,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"}},t||(t=a.createElement("path",{fill:"#fff",d:"m81.7 57.522-5.634-17.97a26.648 26.648 0 0 1 0-15.982l5.743-18.3c.977-3.129-1.954-6.057-5.065-5.078L58.488 5.95a26.46 26.46 0 0 1-15.943 0L24.618.302c-3.18-1-6.132 2.069-5.025 5.217l3.27 9.275a26.709 26.709 0 0 1-1.505 21.23L.48 76.051c-1.855 3.559 2.024 7.357 5.533 5.428l37.998-20.97a26.558 26.558 0 0 1 21.685-1.779l10.819 3.838c3.12 1.1 6.181-1.858 5.184-5.047Z"}))),a.createElement("g",{mask:"url(#b)"},a.createElement("mask",{id:"c",width:92,height:93,x:-5,y:-6,maskUnits:"userSpaceOnUse",style:{maskType:"luminance"}},C||(C=a.createElement("path",{fill:"#fff",d:"M-4.994-5.005h91.977v91.982H-4.994V-5.005Z"}))),I||(I=a.createElement("g",{mask:"url(#c)"},a.createElement("path",{fill:"url(#d)",d:"M-5.323-5.025h92.366v92.112H-5.323z"}))))),l||(l=a.createElement("defs",null,a.createElement("clipPath",{id:"a"},a.createElement("path",{fill:"#fff",d:"M0 0h82v82H0z"})),a.createElement("pattern",{id:"d",width:1,height:1,patternContentUnits:"objectBoundingBox"},a.createElement("use",{xlinkHref:"#e",transform:"scale(.00518 .0052)"})),a.createElement("image",{xlinkHref:"data:image/jpeg;base64,/9j/4g1YSUNDX1BST0ZJTEUAAQEAAA1IYXBwbAIQAABtbnRyUkdCIFhZWiAH5wABAAUACQA0ABBhY3NwQVBQTAAAAABBUFBMAAAAAAAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLWFwcGwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJkZXNjAAABXAAAAGJkc2NtAAABwAAAAepjcHJ0AAADrAAAACN3dHB0AAAD0AAAABRyWFlaAAAD5AAAABRnWFlaAAAD+AAAABRiWFlaAAAEDAAAABRyVFJDAAAEIAAACAxhYXJnAAAMLAAAACB2Y2d0AAAMTAAAADBuZGluAAAMfAAAAD5jaGFkAAAMvAAAACxtbW9kAAAM6AAAACh2Y2dwAAANEAAAADhiVFJDAAAEIAAACAxnVFJDAAAEIAAACAxhYWJnAAAMLAAAACBhYWdnAAAMLAAAACBkZXNjAAAAAAAAAAhEaXNwbGF5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbWx1YwAAAAAAAAAmAAAADGhySFIAAAAIAAAB2GtvS1IAAAAIAAAB2G5iTk8AAAAIAAAB2GlkAAAAAAAIAAAB2Gh1SFUAAAAIAAAB2GNzQ1oAAAAIAAAB2GRhREsAAAAIAAAB2G5sTkwAAAAIAAAB2GZpRkkAAAAIAAAB2Gl0SVQAAAAIAAAB2GVzRVMAAAAIAAAB2HJvUk8AAAAIAAAB2GZyQ0EAAAAIAAAB2GFyAAAAAAAKAAAB4HVrVUEAAAAIAAAB2GhlSUwAAAAIAAAB2HpoVFcAAAAIAAAB2HZpVk4AAAAIAAAB2HNrU0sAAAAIAAAB2HpoQ04AAAAIAAAB2HJ1UlUAAAAIAAAB2GVuR0IAAAAIAAAB2GZyRlIAAAAIAAAB2G1zAAAAAAAIAAAB2GhpSU4AAAAIAAAB2HRoVEgAAAAIAAAB2GNhRVMAAAAIAAAB2GVuQVUAAAAIAAAB2GVzWEwAAAAIAAAB2GRlREUAAAAIAAAB2GVuVVMAAAAIAAAB2HB0QlIAAAAIAAAB2HBsUEwAAAAIAAAB2GVsR1IAAAAIAAAB2HN2U0UAAAAIAAAB2HRyVFIAAAAIAAAB2HB0UFQAAAAIAAAB2GphSlAAAAAIAAAB2ABpAE0AYQBjIA8AaQBNAGEAYwAAdGV4dAAAAABDb3B5cmlnaHQgQXBwbGUgSW5jLiwgMjAyMwAAWFlaIAAAAAAAAPPYAAEAAAABFghYWVogAAAAAAAAc9QAADomAAABblhZWiAAAAAAAABehgAAujcAABPtWFlaIAAAAAAAACR8AAALowAAvdJjdXJ2AAAAAAAABAAAAAAFAAoADwAUABkAHgAjACgALQAyADYAOwBAAEUASgBPAFQAWQBeAGMAaABtAHIAdwB8AIEAhgCLAJAAlQCaAJ8AowCoAK0AsgC3ALwAwQDGAMsA0ADVANsA4ADlAOsA8AD2APsBAQEHAQ0BEwEZAR8BJQErATIBOAE+AUUBTAFSAVkBYAFnAW4BdQF8AYMBiwGSAZoBoQGpAbEBuQHBAckB0QHZAeEB6QHyAfoCAwIMAhQCHQImAi8COAJBAksCVAJdAmcCcQJ6AoQCjgKYAqICrAK2AsECywLVAuAC6wL1AwADCwMWAyEDLQM4A0MDTwNaA2YDcgN+A4oDlgOiA64DugPHA9MD4APsA/kEBgQTBCAELQQ7BEgEVQRjBHEEfgSMBJoEqAS2BMQE0wThBPAE/gUNBRwFKwU6BUkFWAVnBXcFhgWWBaYFtQXFBdUF5QX2BgYGFgYnBjcGSAZZBmoGewaMBp0GrwbABtEG4wb1BwcHGQcrBz0HTwdhB3QHhgeZB6wHvwfSB+UH+AgLCB8IMghGCFoIbgiCCJYIqgi+CNII5wj7CRAJJQk6CU8JZAl5CY8JpAm6Cc8J5Qn7ChEKJwo9ClQKagqBCpgKrgrFCtwK8wsLCyILOQtRC2kLgAuYC7ALyAvhC/kMEgwqDEMMXAx1DI4MpwzADNkM8w0NDSYNQA1aDXQNjg2pDcMN3g34DhMOLg5JDmQOfw6bDrYO0g7uDwkPJQ9BD14Peg+WD7MPzw/sEAkQJhBDEGEQfhCbELkQ1xD1ERMRMRFPEW0RjBGqEckR6BIHEiYSRRJkEoQSoxLDEuMTAxMjE0MTYxODE6QTxRPlFAYUJxRJFGoUixStFM4U8BUSFTQVVhV4FZsVvRXgFgMWJhZJFmwWjxayFtYW+hcdF0EXZReJF64X0hf3GBsYQBhlGIoYrxjVGPoZIBlFGWsZkRm3Gd0aBBoqGlEadxqeGsUa7BsUGzsbYxuKG7Ib2hwCHCocUhx7HKMczBz1HR4dRx1wHZkdwx3sHhYeQB5qHpQevh7pHxMfPh9pH5Qfvx/qIBUgQSBsIJggxCDwIRwhSCF1IaEhziH7IiciVSKCIq8i3SMKIzgjZiOUI8Ij8CQfJE0kfCSrJNolCSU4JWgllyXHJfcmJyZXJocmtyboJxgnSSd6J6sn3CgNKD8ocSiiKNQpBik4KWspnSnQKgIqNSpoKpsqzysCKzYraSudK9EsBSw5LG4soizXLQwtQS12Last4S4WLkwugi63Lu4vJC9aL5Evxy/+MDUwbDCkMNsxEjFKMYIxujHyMioyYzKbMtQzDTNGM38zuDPxNCs0ZTSeNNg1EzVNNYc1wjX9Njc2cjauNuk3JDdgN5w31zgUOFA4jDjIOQU5Qjl/Obw5+To2OnQ6sjrvOy07azuqO+g8JzxlPKQ84z0iPWE9oT3gPiA+YD6gPuA/IT9hP6I/4kAjQGRApkDnQSlBakGsQe5CMEJyQrVC90M6Q31DwEQDREdEikTORRJFVUWaRd5GIkZnRqtG8Ec1R3tHwEgFSEtIkUjXSR1JY0mpSfBKN0p9SsRLDEtTS5pL4kwqTHJMuk0CTUpNk03cTiVObk63TwBPSU+TT91QJ1BxULtRBlFQUZtR5lIxUnxSx1MTU19TqlP2VEJUj1TbVShVdVXCVg9WXFapVvdXRFeSV+BYL1h9WMtZGllpWbhaB1pWWqZa9VtFW5Vb5Vw1XIZc1l0nXXhdyV4aXmxevV8PX2Ffs2AFYFdgqmD8YU9homH1YklinGLwY0Njl2PrZEBklGTpZT1lkmXnZj1mkmboZz1nk2fpaD9olmjsaUNpmmnxakhqn2r3a09rp2v/bFdsr20IbWBtuW4SbmtuxG8eb3hv0XArcIZw4HE6cZVx8HJLcqZzAXNdc7h0FHRwdMx1KHWFdeF2Pnabdvh3VnezeBF4bnjMeSp5iXnnekZ6pXsEe2N7wnwhfIF84X1BfaF+AX5ifsJ/I3+Ef+WAR4CogQqBa4HNgjCCkoL0g1eDuoQdhICE44VHhauGDoZyhteHO4efiASIaYjOiTOJmYn+imSKyoswi5aL/IxjjMqNMY2Yjf+OZo7OjzaPnpAGkG6Q1pE/kaiSEZJ6kuOTTZO2lCCUipT0lV+VyZY0lp+XCpd1l+CYTJi4mSSZkJn8mmia1ZtCm6+cHJyJnPedZJ3SnkCerp8dn4uf+qBpoNihR6G2oiailqMGo3aj5qRWpMelOKWpphqmi6b9p26n4KhSqMSpN6mpqhyqj6sCq3Wr6axcrNCtRK24ri2uoa8Wr4uwALB1sOqxYLHWskuywrM4s660JbSctRO1irYBtnm28Ldot+C4WbjRuUq5wro7urW7LrunvCG8m70VvY++Cr6Evv+/er/1wHDA7MFnwePCX8Lbw1jD1MRRxM7FS8XIxkbGw8dBx7/IPci8yTrJuco4yrfLNsu2zDXMtc01zbXONs62zzfPuNA50LrRPNG+0j/SwdNE08bUSdTL1U7V0dZV1tjXXNfg2GTY6Nls2fHadtr724DcBdyK3RDdlt4c3qLfKd+v4DbgveFE4cziU+Lb42Pj6+Rz5PzlhOYN5pbnH+ep6DLovOlG6dDqW+rl63Dr++yG7RHtnO4o7rTvQO/M8Fjw5fFy8f/yjPMZ86f0NPTC9VD13vZt9vv3ivgZ+Kj5OPnH+lf65/t3/Af8mP0p/br+S/7c/23//3BhcmEAAAAAAAMAAAACZmYAAPKnAAANWQAAE9AAAApbdmNndAAAAAAAAAABAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAAAEAAAAAAAAAAQAAbmRpbgAAAAAAAAA2AACnwAAAVQAAAEuAAACgAAAAJgAAAAwAAABQQAAAVEAAAjMzAAIzMwACMzMAAAAAAAAAAHNmMzIAAAAAAAELtwAABZb///NXAAAHKQAA/df///u3///9pgAAA9oAAMD2bW1vZAAAAAAAAAYQAACuAxtimhfPTo6AAAAAAAAAAAAAAAAAAAAAAHZjZ3AAAAAAAAMAAAACZmYAAwAAAAJmZgADAAAAAmZmAAAAAjMzNAAAAAACMzM0AAAAAAIzMzQA/+E4XGh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8APD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgOS4wLWMwMDAgNzkuZjg0NWViMSwgMjAyMi8xMS8wMy0xOToyODo0NSAgICAgICAgIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOnhtcEdJbWc9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9nL2ltZy8iCiAgICAgICAgICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgICAgICAgICB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6aWxsdXN0cmF0b3I9Imh0dHA6Ly9ucy5hZG9iZS5jb20vaWxsdXN0cmF0b3IvMS4wLyIKICAgICAgICAgICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIgogICAgICAgICAgICB4bWxuczpwZGZ4PSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZngvMS4zLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvanBlZzwvZGM6Zm9ybWF0PgogICAgICAgICA8ZGM6dGl0bGU+CiAgICAgICAgICAgIDxyZGY6QWx0PgogICAgICAgICAgICAgICA8cmRmOmxpIHhtbDpsYW5nPSJ4LWRlZmF1bHQiPlByb3RvIC0gSWNvbjwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwvZGM6dGl0bGU+CiAgICAgICAgIDx4bXA6Q3JlYXRvclRvb2w+QWRvYmUgSWxsdXN0cmF0b3IgMjcuMiAoTWFjaW50b3NoKTwveG1wOkNyZWF0b3JUb29sPgogICAgICAgICA8eG1wOkNyZWF0ZURhdGU+MjAyMy0wMi0wOFQxMjozNjoyNC0wNTowMDwveG1wOkNyZWF0ZURhdGU+CiAgICAgICAgIDx4bXA6TW9kaWZ5RGF0ZT4yMDIzLTAyLTA4VDE3OjM2OjI0WjwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6TWV0YWRhdGFEYXRlPjIwMjMtMDItMDhUMTI6MzY6MjQtMDU6MDA8L3htcDpNZXRhZGF0YURhdGU+CiAgICAgICAgIDx4bXA6VGh1bWJuYWlscz4KICAgICAgICAgICAgPHJkZjpBbHQ+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8eG1wR0ltZzp3aWR0aD4yNTY8L3htcEdJbWc6d2lkdGg+CiAgICAgICAgICAgICAgICAgIDx4bXBHSW1nOmhlaWdodD40MDwveG1wR0ltZzpoZWlnaHQ+CiAgICAgICAgICAgICAgICAgIDx4bXBHSW1nOmZvcm1hdD5KUEVHPC94bXBHSW1nOmZvcm1hdD4KICAgICAgICAgICAgICAgICAgPHhtcEdJbWc6aW1hZ2U+LzlqLzRBQVFTa1pKUmdBQkFnRUJMQUVzQUFELzdRQXNVR2h2ZEc5emFHOXdJRE11TUFBNFFrbE5BKzBBQUFBQUFCQUJMQUFBQUFFQSYjeEE7QVFFc0FBQUFBUUFCLytJTldFbERRMTlRVWs5R1NVeEZBQUVCQUFBTlNHRndjR3dDRUFBQWJXNTBjbEpIUWlCWVdWb2dCK2NBQVFBRiYjeEE7QUFrQU5BQVFZV056Y0VGUVVFd0FBQUFBUVZCUVRBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFQYldBQUVBQUFBQTB5MWhjSEJzQUFBQSYjeEE7QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTWkdWell3QUFBVndBQUFCaSYjeEE7WkhOamJRQUFBY0FBQUFIcVkzQnlkQUFBQTZ3QUFBQWpkM1J3ZEFBQUE5QUFBQUFVY2xoWldnQUFBK1FBQUFBVVoxaFpXZ0FBQS9nQSYjeEE7QUFBVVlsaFpXZ0FBQkF3QUFBQVVjbFJTUXdBQUJDQUFBQWdNWVdGeVp3QUFEQ3dBQUFBZ2RtTm5kQUFBREV3QUFBQXdibVJwYmdBQSYjeEE7REh3QUFBQStZMmhoWkFBQURMd0FBQUFzYlcxdlpBQUFET2dBQUFBb2RtTm5jQUFBRFJBQUFBQTRZbFJTUXdBQUJDQUFBQWdNWjFSUyYjeEE7UXdBQUJDQUFBQWdNWVdGaVp3QUFEQ3dBQUFBZ1lXRm5ad0FBREN3QUFBQWdaR1Z6WXdBQUFBQUFBQUFJUkdsemNHeGhlUUFBQUFBQSYjeEE7QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSYjeEE7QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUcxc2RXTUFBQUFBQUFBQUpnQUFBQXhvY2toU0FBQUFDQUFBQWRocmIwdFNBQUFBQ0FBQSYjeEE7QWRodVlrNVBBQUFBQ0FBQUFkaHBaQUFBQUFBQUNBQUFBZGhvZFVoVkFBQUFDQUFBQWRoamMwTmFBQUFBQ0FBQUFkaGtZVVJMQUFBQSYjeEE7Q0FBQUFkaHViRTVNQUFBQUNBQUFBZGhtYVVaSkFBQUFDQUFBQWRocGRFbFVBQUFBQ0FBQUFkaGxjMFZUQUFBQUNBQUFBZGh5YjFKUCYjeEE7QUFBQUNBQUFBZGhtY2tOQkFBQUFDQUFBQWRoaGNnQUFBQUFBQ2dBQUFlQjFhMVZCQUFBQUNBQUFBZGhvWlVsTUFBQUFDQUFBQWRoNiYjeEE7YUZSWEFBQUFDQUFBQWRoMmFWWk9BQUFBQ0FBQUFkaHphMU5MQUFBQUNBQUFBZGg2YUVOT0FBQUFDQUFBQWRoeWRWSlZBQUFBQ0FBQSYjeEE7QWRobGJrZENBQUFBQ0FBQUFkaG1ja1pTQUFBQUNBQUFBZGh0Y3dBQUFBQUFDQUFBQWRob2FVbE9BQUFBQ0FBQUFkaDBhRlJJQUFBQSYjeEE7Q0FBQUFkaGpZVVZUQUFBQUNBQUFBZGhsYmtGVkFBQUFDQUFBQWRobGMxaE1BQUFBQ0FBQUFkaGtaVVJGQUFBQUNBQUFBZGhsYmxWVCYjeEE7QUFBQUNBQUFBZGh3ZEVKU0FBQUFDQUFBQWRod2JGQk1BQUFBQ0FBQUFkaGxiRWRTQUFBQUNBQUFBZGh6ZGxORkFBQUFDQUFBQWRoMCYjeEE7Y2xSU0FBQUFDQUFBQWRod2RGQlVBQUFBQ0FBQUFkaHFZVXBRQUFBQUNBQUFBZGdBYVFCTkFHRUFZeUFQQUdrQVRRQmhBR01BQUhSbCYjeEE7ZUhRQUFBQUFRMjl3ZVhKcFoyaDBJRUZ3Y0d4bElFbHVZeTRzSURJd01qTUFBRmhaV2lBQUFBQUFBQUR6MkFBQkFBQUFBUllJV0ZsYSYjeEE7SUFBQUFBQUFBSFBVQUFBNkpnQUFBVzVZV1ZvZ0FBQUFBQUFBWG9ZQUFMbzNBQUFUN1ZoWldpQUFBQUFBQUFBa2ZBQUFDNk1BQUwzUyYjeEE7WTNWeWRnQUFBQUFBQUFRQUFBQUFCUUFLQUE4QUZBQVpBQjRBSXdBb0FDMEFNZ0EyQURzQVFBQkZBRW9BVHdCVUFGa0FYZ0JqQUdnQSYjeEE7YlFCeUFIY0FmQUNCQUlZQWl3Q1FBSlVBbWdDZkFLTUFxQUN0QUxJQXR3QzhBTUVBeGdETEFOQUExUURiQU9BQTVRRHJBUEFBOWdENyYjeEE7QVFFQkJ3RU5BUk1CR1FFZkFTVUJLd0V5QVRnQlBnRkZBVXdCVWdGWkFXQUJad0Z1QVhVQmZBR0RBWXNCa2dHYUFhRUJxUUd4QWJrQiYjeEE7d1FISkFkRUIyUUhoQWVrQjhnSDZBZ01DREFJVUFoMENKZ0l2QWpnQ1FRSkxBbFFDWFFKbkFuRUNlZ0tFQW80Q21BS2lBcXdDdGdMQiYjeEE7QXNzQzFRTGdBdXNDOVFNQUF3c0RGZ01oQXkwRE9BTkRBMDhEV2dObUEzSURmZ09LQTVZRG9nT3VBN29EeHdQVEErQUQ3QVA1QkFZRSYjeEE7RXdRZ0JDMEVPd1JJQkZVRVl3UnhCSDRFakFTYUJLZ0V0Z1RFQk5NRTRRVHdCUDRGRFFVY0JTc0ZPZ1ZKQlZnRlp3VjNCWVlGbGdXbSYjeEE7QmJVRnhRWFZCZVVGOWdZR0JoWUdKd1kzQmtnR1dRWnFCbnNHakFhZEJxOEd3QWJSQnVNRzlRY0hCeGtIS3djOUIwOEhZUWQwQjRZSCYjeEE7bVFlc0I3OEgwZ2ZsQi9nSUN3Z2ZDRElJUmdoYUNHNElnZ2lXQ0tvSXZnalNDT2NJK3drUUNTVUpPZ2xQQ1dRSmVRbVBDYVFKdWduUCYjeEE7Q2VVSit3b1JDaWNLUFFwVUNtb0tnUXFZQ3E0S3hRcmNDdk1MQ3dzaUN6a0xVUXRwQzRBTG1BdXdDOGdMNFF2NURCSU1LZ3hEREZ3TSYjeEE7ZFF5T0RLY013QXpaRFBNTkRRMG1EVUFOV2cxMERZNE5xUTNERGQ0TitBNFREaTRPU1E1a0RuOE9tdzYyRHRJTzdnOEpEeVVQUVE5ZSYjeEE7RDNvUGxnK3pEODhQN0JBSkVDWVFReEJoRUg0UW14QzVFTmNROVJFVEVURVJUeEZ0RVl3UnFoSEpFZWdTQnhJbUVrVVNaQktFRXFNUyYjeEE7d3hMakV3TVRJeE5ERTJNVGd4T2tFOFVUNVJRR0ZDY1VTUlJxRklzVXJSVE9GUEFWRWhVMEZWWVZlQldiRmIwVjRCWURGaVlXU1JacyYjeEE7Rm84V3NoYldGdm9YSFJkQkYyVVhpUmV1RjlJWDl4Z2JHRUFZWlJpS0dLOFkxUmo2R1NBWlJSbHJHWkVadHhuZEdnUWFLaHBSR25jYSYjeEE7bmhyRkd1d2JGQnM3RzJNYmlodXlHOW9jQWh3cUhGSWNleHlqSE13YzlSMGVIVWNkY0IyWkhjTWQ3QjRXSGtBZWFoNlVIcjRlNlI4VCYjeEE7SHo0ZmFSK1VINzhmNmlBVklFRWdiQ0NZSU1RZzhDRWNJVWdoZFNHaEljNGgreUluSWxVaWdpS3ZJdDBqQ2lNNEkyWWpsQ1BDSS9BayYjeEE7SHlSTkpId2txeVRhSlFrbE9DVm9KWmNseHlYM0ppY21WeWFISnJjbTZDY1lKMGtuZWllcko5d29EU2cvS0hFb29palVLUVlwT0NsciYjeEE7S1owcDBDb0NLalVxYUNxYktzOHJBaXMySzJrcm5TdlJMQVVzT1N4dUxLSXMxeTBNTFVFdGRpMnJMZUV1Rmk1TUxvSXV0eTd1THlRdiYjeEE7V2krUkw4Y3YvakExTUd3d3BERGJNUkl4U2pHQ01ib3g4aklxTW1NeW16TFVNdzB6UmpOL003Z3o4VFFyTkdVMG5qVFlOUk0xVFRXSCYjeEE7TmNJMS9UWTNObkkycmpicE55UTNZRGVjTjljNEZEaFFPSXc0eURrRk9VSTVmem04T2ZrNk5qcDBPckk2N3pzdE8yczdxanZvUENjOCYjeEE7WlR5a1BPTTlJajFoUGFFOTRENGdQbUErb0Q3Z1B5RS9ZVCtpUCtKQUkwQmtRS1pBNTBFcFFXcEJyRUh1UWpCQ2NrSzFRdmRET2tOOSYjeEE7UThCRUEwUkhSSXBFemtVU1JWVkZta1hlUmlKR1owYXJSdkJITlVkN1I4QklCVWhMU0pGSTEwa2RTV05KcVVud1NqZEtmVXJFU3d4TCYjeEE7VTB1YVMrSk1La3h5VExwTkFrMUtUWk5OM0U0bFRtNU90MDhBVDBsUGswL2RVQ2RRY1ZDN1VRWlJVRkdiVWVaU01WSjhVc2RURTFOZiYjeEE7VTZwVDlsUkNWSTlVMjFVb1ZYVlZ3bFlQVmx4V3FWYjNWMFJYa2xmZ1dDOVlmVmpMV1JwWmFWbTRXZ2RhVmxxbVd2VmJSVnVWVytWYyYjeEE7TlZ5R1hOWmRKMTE0WGNsZUdsNXNYcjFmRDE5aFg3TmdCV0JYWUtwZy9HRlBZYUpoOVdKSllweGk4R05EWTVkajYyUkFaSlJrNldVOSYjeEE7WlpKbDUyWTlacEptNkdjOVo1Tm42V2cvYUpabzdHbERhWnBwOFdwSWFwOXE5MnRQYTZkci8yeFhiSzl0Q0cxZ2JibHVFbTVyYnNSdiYjeEE7SG05NGI5RndLM0NHY09CeE9uR1ZjZkJ5UzNLbWN3RnpYWE80ZEJSMGNIVE1kU2gxaFhYaGRqNTJtM2I0ZDFaM3MzZ1JlRzU0ekhrcSYjeEE7ZVlsNTUzcEdlcVY3Qkh0amU4SjhJWHlCZk9GOVFYMmhmZ0YrWW43Q2Z5Ti9oSC9sZ0VlQXFJRUtnV3VCellJd2dwS0M5SU5YZzdxRSYjeEE7SFlTQWhPT0ZSNFdyaGc2R2NvYlhoenVIbjRnRWlHbUl6b2t6aVptSi9vcGtpc3FMTUl1V2kveU1ZNHpLalRHTm1JMy9qbWFPem84MiYjeEE7ajU2UUJwQnVrTmFSUDVHb2toR1NlcExqazAyVHRwUWdsSXFVOUpWZmxjbVdOSmFmbHdxWGRaZmdtRXlZdUpra21aQ1ovSnBvbXRXYiYjeEE7UXB1dm5CeWNpWnozbldTZDBwNUFucTZmSForTG4vcWdhYURZb1VlaHRxSW1vcGFqQnFOMm8rYWtWcVRIcFRpbHFhWWFwb3VtL2FkdSYjeEE7cCtDb1VxakVxVGVwcWFvY3FvK3JBcXQxcSttc1hLelFyVVN0dUs0dHJxR3ZGcStMc0FDd2RiRHFzV0N4MXJKTHNzS3pPTE91dENXMCYjeEE7bkxVVHRZcTJBYlo1dHZDM2FMZmd1Rm00MGJsS3VjSzZPN3ExdXk2N3A3d2h2SnU5RmIyUHZncStoTDcvdjNxLzljQnd3T3pCWjhIaiYjeEE7d2wvQzI4Tll3OVRFVWNUT3hVdkZ5TVpHeHNQSFFjZS95RDNJdk1rNnlibktPTXEzeXpiTHRzdzF6TFhOTmMyMXpqYk90czgzejdqUSYjeEE7T2RDNjBUelJ2dEkvMHNIVFJOUEcxRW5VeTlWTzFkSFdWZGJZMTF6WDROaGsyT2paYk5ueDJuYmErOXVBM0FYY2l0MFEzWmJlSE42aSYjeEE7M3luZnIrQTI0TDNoUk9ITTRsUGkyK05qNCt2a2MrVDg1WVRtRGVhVzV4L25xZWd5Nkx6cFJ1blE2bHZxNWV0dzYvdnNodTBSN1p6dSYjeEE7S082MDcwRHZ6UEJZOE9YeGN2SC84b3p6R2ZPbjlEVDB3dlZROWQ3MmJmYjc5NHI0R2ZpbytUajV4L3BYK3VmN2Qvd0gvSmo5S2YyNiYjeEE7L2t2KzNQOXQvLzl3WVhKaEFBQUFBQUFEQUFBQUFtWm1BQUR5cHdBQURWa0FBQlBRQUFBS1czWmpaM1FBQUFBQUFBQUFBUUFCQUFBQSYjeEE7QUFBQUFBRUFBQUFCQUFBQUFBQUFBQUVBQUFBQkFBQUFBQUFBQUFFQUFHNWthVzRBQUFBQUFBQUFOZ0FBcDhBQUFGVUFBQUJMZ0FBQSYjeEE7b0FBQUFDWUFBQUFNQUFBQVVFQUFBRlJBQUFJek13QUNNek1BQWpNekFBQUFBQUFBQUFCelpqTXlBQUFBQUFBQkM3Y0FBQVdXLy8veiYjeEE7VndBQUJ5a0FBUDNYLy8vN3QvLy8vYVlBQUFQYUFBREE5bTF0YjJRQUFBQUFBQUFHRUFBQXJnTWJZcG9YejA2T2dBQUFBQUFBQUFBQSYjeEE7QUFBQUFBQUFBQUIyWTJkd0FBQUFBQUFEQUFBQUFtWm1BQU1BQUFBQ1ptWUFBd0FBQUFKbVpnQUFBQUl6TXpRQUFBQUFBak16TkFBQSYjeEE7QUFBQ016TTBBUC91QUE1QlpHOWlaUUJrd0FBQUFBSC8yd0NFQUFZRUJBUUZCQVlGQlFZSkJnVUdDUXNJQmdZSUN3d0tDZ3NLQ2d3USYjeEE7REF3TURBd01FQXdPRHhBUERnd1RFeFFVRXhNY0d4c2JIQjhmSHg4Zkh4OGZIeDhCQndjSERRd05HQkFRR0JvVkVSVWFIeDhmSHg4ZiYjeEE7SHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZIeDhmSHg4Zkh4OGZILy9BQUJFSUFDZ0JBQU1CRVFBQyYjeEE7RVFFREVRSC94QUdpQUFBQUJ3RUJBUUVCQUFBQUFBQUFBQUFFQlFNQ0JnRUFCd2dKQ2dzQkFBSUNBd0VCQVFFQkFBQUFBQUFBQUFFQSYjeEE7QWdNRUJRWUhDQWtLQ3hBQUFnRURBd0lFQWdZSEF3UUNCZ0p6QVFJREVRUUFCU0VTTVVGUkJoTmhJbkdCRkRLUm9RY1ZzVUlqd1ZMUiYjeEE7NFRNV1l2QWtjb0x4SlVNMFU1S2lzbU56d2pWRUo1T2pzellYVkdSMHc5TGlDQ2FEQ1FvWUdZU1VSVWFrdEZiVFZTZ2E4dVB6eE5UayYjeEE7OUdWMWhaV2x0Y1hWNWZWbWRvYVdwcmJHMXViMk4wZFhaM2VIbDZlM3g5Zm45emhJV0doNGlKaW91TWpZNlBncE9VbFphWG1KbWFtNSYjeEE7eWRucCtTbzZTbHBxZW9xYXFycksydXI2RVFBQ0FnRUNBd1VGQkFVR0JBZ0RBMjBCQUFJUkF3UWhFakZCQlZFVFlTSUdjWUdSTXFHeCYjeEE7OEJUQjBlRWpRaFZTWW5MeE15UTBRNElXa2xNbG9tT3l3Z2R6MGpYaVJJTVhWSk1JQ1FvWUdTWTJSUm9uWkhSVk4vS2pzOE1vS2RQaiYjeEE7ODRTVXBMVEUxT1QwWlhXRmxhVzF4ZFhsOVVaV1puYUdscWEyeHRibTlrZFhaM2VIbDZlM3g5Zm45emhJV0doNGlKaW91TWpZNlBnNSYjeEE7U1ZscGVZbVpxYm5KMmVuNUtqcEtXbXA2aXBxcXVzcmE2dnIvMmdBTUF3RUFBaEVERVFBL0FQVk9Lc0k4N2VhZGYwWFY0RnRUSDlUZSYjeEE7SU1xdW5JTXdKRGNqczIyM1E1dSt6dEZpell6eFh4VzVtRERHY2QrYWpwLzVyV3BBWFViSjQyN3lRRU9EL3NXS2tmZWNubDdEbC9CTCYjeEE7NW9ucFNPUmIxSDgydE9qV2xoWnl6UDhBelRGWTFIM2N5Znd3WXV3cG42NUFlN2Y5VFY0SkhOQWVXUFBYbWJXdk05cmJNWWt0SDVtYSYjeEE7QkUrSGdxazE1TnlldjA1ZnJlek1HSEFaYjhYUXNKUnA2WG5Oc0hZcTdGWFlxN0ZXRytlL01ldWFMZDJiV1RJdHRLckZneWh1VHFSVSYjeEE7RTlRS0VkTTNIWm1reFpveTR2cURsNmZGR1lOODBEcC81clJVQzZsWkZUM2t0elVmOEE1SC9Fc3Z5OWhuK0NYei9INkV6MHRjaXJYLyYjeEE7QU9iT2xSb1JaV2MwOG5iMVNzYS9nWFA0WkRGMkZrSjlVZ0I1Yi9xYWZCSTVwVG8zNWdlWjlYOHlXTnFucFJXOHNvV1dCRXFER04zSiYjeEE7WnVUVkNnbllqTXZVZGxZTVdHVWpaSUhQelltTlBVTTVocmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnh2L25Kcjh3ZiYjeEE7UG5rWHl4cE9zZVZaWW9JcEwzNnZxTXNrU3pHalJsNGxvNElDdHdia2V2VGZGWG1YbEwvbk51OWpDUStiZkw2VGdDajN1bU9ZMjI3KyYjeEE7aE1XVWsvOEFHVWZMRldWNnYvem10K1hzRnB6MHJSOVR2cnNpcXd6aUcyakI4R2tFazVIMEljVmVZMzMvQURsdCtidm1IWGJHeTh1MiYjeEE7OWxwZjFpNWlodHJPT0w2dzh6U09GV09TU2F2MmlhVlJVT0t2dFRGV0UvbWxIRzJuV1RrRDFWbVlLZS9FcjhYNmhtNjdGSjQ1RHBUbiYjeEE7NkFFeVB1ZVp1bWRLQzVzNEtEcGt3WEZuQjZCK1VtbXI2dC9xTEQ0a0MyOFovd0JiNDMvVXVhSHQzTnRHSHhjUExzOUp6bTJsMkt1eCYjeEE7VjJLdXhWaVg1bXh4dG9FVE5UbXR3dkE5OTFhdWJic1lrWlQvQUZmMU9ab1FUUDRQSzNUT3BCZGpPQ2c2Wk1GeEp4WnIrVSttckxxMSYjeEE7M2ZOL3g2eEJFSCtWTVR2L0FNQ2hHYVh0ek5XT01mNXgrNXhNd3A2bm5MdERzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXJzViYjeEE7ZVovODVKMjloUDhBa241bkY3UUpIRERKRXg2aVpiaU14VStiMFg2Y1ZmbnZpcnNWZXZmODRyZVY0OWUvT0hUcEpoeWcwV0dYVkhVOSYjeEE7Mmg0eHhIL1l6VEkzMFlxKzlzVmVYK2V0Vy9TR3JHR00xdDdPc2FlQmY5dHZ2RlBvenArek1IaDQ3UE9YNEQwZWgwdkJqczg1TVZraiYjeEE7emFBdGs0SWQweXdGdzV3WjcrVkY4cXZmYWV4M1lMUEdQbDhML3JYTkQyNWkyalA0T3YxTU9SZWk1enppT3hWMkt1eFYyS3ZOL3dBdyYjeEE7TlcrdWFndGpFYXcyZFE1OFpUOXIvZ2VuMzUwZlpXRGdoeEhuTDdub096dEx3dzRqemw5ekRwSTgzQUxrWklJWjB5d0Z3NXdacCtWViYjeEE7OGtPcVhkazIzMXFOWFQzYUluYjduSnpUZHQ0N2hHWDgwL2YvQUdPQnFZYlc5T3ptWENkaXJzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZCYjeEE7aXJzVmRpcjVYLzV6TS9NdWkyWDVmMkVnMzRYK3RGZW8vd0NXZUUvOG5HSCtwaXI1VHhWMkt2WVArY1ZQTThXaGZuRnA4VXpCSWRhZyYjeEE7bTB4M1BacGVNc1EvMlVzS0w5T0t2dDN6VHE0MDNTcEhRMHVKdjNjSGlDUnUzK3hHWmVpd2VKa0hjT2JuZG42Ynhjb0Ira2JsNVd5MSYjeEE7enFRWHI1UlRiU1BKZXE2cFNRcjlXdGovQUx1a0c1SCtTdlUvcXpFejlvNDhXMzFTZFBxOVpqeDdjNUoxTCtWZHUwWDd2VUhFdmkwWSYjeEE7S2svSU5YOGN3NDl0bTk0N2U5MUoxeEo1SWZ5NTVMOHhhUDVrdDdraU43UmVZbG1SOWlqS1JUaWFOWDZNczFmYU9ITmhNZCtKamx6eCYjeEE7bEh6ZWg1enpoT3hWMkt1eFZMdk1HcXJwbWx5M05SNnRPRUFQZDI2ZmQxekkwdUR4WmlQVHE1V2kwL2paQkhwMTl6eWFRczdNN0VzeiYjeEE7RWxtUFVrOVRuVmpaN0l3QUZCTXRKOG9hdHF0SGpUMGJZLzd2bHFBUi9ranEzNnN4OCt2eDR0anZMdURxdFhxOGVQWW01ZHlmUCtWZCYjeEE7c1lxRFVIOVduMnZUSEd2K3J5citPWUE3YmxmMDdlOTFFdGVTZVNCMGp5TDVpMHJ6RlozTVppbHQ0cFFaSjBhbEl6czlWYWpWS2tqYSYjeEE7dVg1KzA4T1hES0pzRWpsNXNaNTRTaVhwR2M0NExzVmRpcnNWZGlyc1ZkaXJzVmRpcnNWZGlyc1ZkaXFUZWN2TmVsK1UvSytwZVl0VCYjeEE7YmpaNmJDMHJxRFF1M1NPTmY4cVJ5RVgzT0t2elk4eitZdFQ4eWVZTlExN1ZKUFZ2OVNuZTRuYmVnTG5aVnIwVkJSVkhZQ21Lc2svTCYjeEE7bjhtZlB2NWdYQUdoV0JYVHczR2JWcm1zVnBIVHI4ZENYSS9sUU1jVmUrV2YvT0QybUN4QXZmTmN4dmlOM2h0RUVTbnc0dElXYW4rcyYjeEE7TVZZZHFIL09KUDVzK1hQTU5oZmVXcml5MWRiYTZpbXRyc1NDMmVGb25EckpMRktlaWtWcEc3bkZYMUI1bjBQWE5XMXBFalFDeWpRQyYjeEE7S1ZtQVVWM2NrZGExOXMzR2kxT0xGanMvVTc3cy9WNGNHR3lmV1R1UHVUUFJ2SjJtYWZ4a2xIMXE1Ry9xT1BoQi93QWxlbjM1amFqdCYjeEE7Q2VUWWVtTGg2cnRUSmwySHBqK09xZlpnT3RkaXJzVmRpcnNWZGlyc1ZZbDV1MGZXOVUxRzNodDR3YlJFcUpDd0NoeWZpTGQrbE8yYiYjeEE7YlFhakZpZ1NUNm5kOW1hckRoeGt5UHF0RjZONUswMng0eTNQK2wzQTNxdy9kcWZaZS8wNVZxTzBaejJqNlEwNnJ0WEprMmo2WS9heSYjeEE7TE5jNnAyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdXhWMkt1eFYyS3V4VjJLdkRQK2NwZktQNWxlY05MMEhRUEtkZ2J6VFpybDVkVVpaRSYjeEE7ajR5SUZGdjZuTmwvZGdPN2Q5d085S3FwVitWLy9PSUhsclJURHFQbldaZGQxSmFNTk9qNUxZeHQ0TlhpODlQOG9LdmlweFY5QjJ0ciYjeEE7YTJsdEhhMmtLVzl0Q29TR0NKUWlJbzJDcXFnQUFlQXhWVnhWMkt2LzJRPT08L3htcEdJbWc6aW1hZ2U+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpBbHQ+CiAgICAgICAgIDwveG1wOlRodW1ibmFpbHM+CiAgICAgICAgIDx4bXBNTTpSZW5kaXRpb25DbGFzcz5kZWZhdWx0PC94bXBNTTpSZW5kaXRpb25DbGFzcz4KICAgICAgICAgPHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD51dWlkOjY1RTYzOTA2ODZDRjExREJBNkUyRDg4N0NFQUNCNDA3PC94bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ+CiAgICAgICAgIDx4bXBNTTpEb2N1bWVudElEPnhtcC5kaWQ6YzVhYzExYmEtYzJlYi00N2Q3LWIxNDMtYTg4YTE5OWMzYmMyPC94bXBNTTpEb2N1bWVudElEPgogICAgICAgICA8eG1wTU06SW5zdGFuY2VJRD54bXAuaWlkOmM1YWMxMWJhLWMyZWItNDdkNy1iMTQzLWE4OGExOTljM2JjMjwveG1wTU06SW5zdGFuY2VJRD4KICAgICAgICAgPHhtcE1NOkRlcml2ZWRGcm9tIHJkZjpwYXJzZVR5cGU9IlJlc291cmNlIj4KICAgICAgICAgICAgPHN0UmVmOmluc3RhbmNlSUQ+eG1wLmlpZDoxYzQzNTQ3OC05ZDM5LTQ3Y2QtYWIyZi1mZWM0OWRlZGFhZGU8L3N0UmVmOmluc3RhbmNlSUQ+CiAgICAgICAgICAgIDxzdFJlZjpkb2N1bWVudElEPnhtcC5kaWQ6MWM0MzU0NzgtOWQzOS00N2NkLWFiMmYtZmVjNDlkZWRhYWRlPC9zdFJlZjpkb2N1bWVudElEPgogICAgICAgICAgICA8c3RSZWY6b3JpZ2luYWxEb2N1bWVudElEPnV1aWQ6NjVFNjM5MDY4NkNGMTFEQkE2RTJEODg3Q0VBQ0I0MDc8L3N0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgICAgPHN0UmVmOnJlbmRpdGlvbkNsYXNzPmRlZmF1bHQ8L3N0UmVmOnJlbmRpdGlvbkNsYXNzPgogICAgICAgICA8L3htcE1NOkRlcml2ZWRGcm9tPgogICAgICAgICA8eG1wTU06SGlzdG9yeT4KICAgICAgICAgICAgPHJkZjpTZXE+CiAgICAgICAgICAgICAgIDxyZGY6bGkgcmRmOnBhcnNlVHlwZT0iUmVzb3VyY2UiPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6YWN0aW9uPnNhdmVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDppbnN0YW5jZUlEPnhtcC5paWQ6OTllNjRlZDMtYTUzNC00OTM2LThhMDUtYjE1MzZmNmM5ZTliPC9zdEV2dDppbnN0YW5jZUlEPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDIyLTAzLTI4VDExOjMyOjA0LTA0OjAwPC9zdEV2dDp3aGVuPgogICAgICAgICAgICAgICAgICA8c3RFdnQ6c29mdHdhcmVBZ2VudD5BZG9iZSBJbGx1c3RyYXRvciAyNi4xIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAgICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+c2F2ZWQ8L3N0RXZ0OmFjdGlvbj4KICAgICAgICAgICAgICAgICAgPHN0RXZ0Omluc3RhbmNlSUQ+eG1wLmlpZDpjNWFjMTFiYS1jMmViLTQ3ZDctYjE0My1hODhhMTk5YzNiYzI8L3N0RXZ0Omluc3RhbmNlSUQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDp3aGVuPjIwMjMtMDItMDhUMTI6MzY6MjQtMDU6MDA8L3N0RXZ0OndoZW4+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFkb2JlIElsbHVzdHJhdG9yIDI3LjIgKE1hY2ludG9zaCk8L3N0RXZ0OnNvZnR3YXJlQWdlbnQ+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpjaGFuZ2VkPi88L3N0RXZ0OmNoYW5nZWQ+CiAgICAgICAgICAgICAgIDwvcmRmOmxpPgogICAgICAgICAgICA8L3JkZjpTZXE+CiAgICAgICAgIDwveG1wTU06SGlzdG9yeT4KICAgICAgICAgPGlsbHVzdHJhdG9yOlN0YXJ0dXBQcm9maWxlPldlYjwvaWxsdXN0cmF0b3I6U3RhcnR1cFByb2ZpbGU+CiAgICAgICAgIDxpbGx1c3RyYXRvcjpDcmVhdG9yU3ViVG9vbD5BZG9iZSBJbGx1c3RyYXRvcjwvaWxsdXN0cmF0b3I6Q3JlYXRvclN1YlRvb2w+CiAgICAgICAgIDxwZGY6UHJvZHVjZXI+QWRvYmUgUERGIGxpYnJhcnkgMTcuMDA8L3BkZjpQcm9kdWNlcj4KICAgICAgICAgPHBkZng6Q3JlYXRvclZlcnNpb24+MjEuMC4wPC9wZGZ4OkNyZWF0b3JWZXJzaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+/+AAEEpGSUYAAQIBAJYAlgAA/+0ALFBob3Rvc2hvcCAzLjAAOEJJTQPtAAAAAAAQAJYAAAABAAEAlgAAAAEAAf/bAIQAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQICAgICAgICAgICAwMDAwMDAwMDAwEBAQEBAQECAQECAgIBAgIDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMD/90ABAAZ/+4ADkFkb2JlAGTAAAAAAf/AABEIAMAAwQMAEQABEQECEQH/xAGiAAEBAAIBBAMAAAAAAAAAAAAKBwAJCAECAwQFBgsBAAMBAAIBBQAAAAAAAAAAAAAICQYCBwQBAwUKCxAAAQMBAwIDBQONAAAAAAAAAgABAwQFBgcREggTFAkVFiFhIkPBChcYGRojJCUmJygpKjEyMzQ1Njc4OTpBQkRFRkdISUpRUlNUVVZXWFlaYmNkZWZnaGlqcXJzdHV2d3h5eoGCg4SFhoeIiYqRkpOUlZaXmJmaoaKjpKWmp6ipqrGys7S1tre4ubrCw8TFxsfIycrR0tPU1dbX2Nna4eLj5OXm5+jp6vDx8vP09fb3+Pn6EQABAwECBAIHCX4HAAAAAAABAAIDEQQGBQcSIRMiCDEyQVFSYRUWIzNCcZGSoQkKFBcYGRokJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpiY2RlZmdoaWpyc3R1dnd4eXqBgoOEhYaHiImKk5SVlpeYmZqio6SlpqeoqaqxsrO0tba3uLm6wcLDxMXGx8jJytHS09TV1tfY2drh4uPk5ebn6Onq8PHy8/T19vf4+fr/2gAMAwAAARECEQA/AH8IQsQhYhCxCFiELh3outFdY2hwuxDQ2bBDbOJt5qOc7q2JOMhUFn0wmVPJeW3iBwdrMpJ2cYoBIZayYXAXABllj7vxLYnbdjRws60WpzoLqWR4FolFMt7qZQghrXcRwzueQWxNOUcpxYx+vuldWa8VpL5CWYNiIy3DVk6vIbtSNWdU0Z85oCfLEfFTEDFu35ry4h3ptW81pmc70w11Sb0FlQ1BtJJRWJZgONn2NQZ4s+k00ccbk2c7OTu70ouvdC7dzMGtwVdmxw2SyADKyGjLkIFA6WQ6eV9N1Pc40zCgoB39g7BdgwTZxZsHxMjizVoM7iNe52rcdqSSp6tKvMIoqxh7jvjFhS8Q4fYi3ou3SRHpg2RT2idXd95NVBWPJJd20mrbBmM6gXcnOnJzEzEsombFjry4vLkXxqbyYLslqmIpojmBs1MnJoJmZMwAGqo8UIaRQtaR8RhHAmCcKZ7fZ4pHndRFHaqmtijtVtdhrwKc8sOdalYi2MFPRYm3FsC+0AZkR2xYFXLdK280qiMpauqpnp7XsS0JoadzYIYYbPA3YMpjkIiXa9Goi3YtznWi6eELTYJDUiKZotEWsmjWuyo5WAuoS5zpiNNRpzAYTCOLXB8pL8Gzvhdsrhlt1WqBq1wz68l2vzaoDnthxo/dDXiCFPDVXvmw/tabME7Lv/RvY0UZFUR0uc94KeWvuwMOmSiTPJWxm0LuZgDBJmLpejUcMad2nOfDYm4SsTa7iWN2ik6Uu3JcGT1oCKCJwytKHOLm5WGwhci8FgJLYhPEN1RHK11dZNH7w058wJqK8w7Ltay7coKa1rFtKz7YsutB5KO0rLrKe0KCrjEyjKSmrKSSannAZAIXcSdmJnbf7LpG12O14PtL7Hb4pILXGaOZI1zHtNK0c1wDgaEHOBmKykkUkLzFM1zJBqwQQRu4OdfILxlwWIQsQhYhCxCF8Pbt4bAuvZlTbd5rcse7tjUQFLWWvbtpUVkWZSRgBSHJU19oTU9JAARgRO5mzMzO+/mXm4PwbhHC9rZYME2ee1W6Q0bHEx0kjiTQBrGBziakCgBzlcmtc85LAS7YDOuE+J+tHdDBhxJNRUN6LRxJtaE54ZKLDqz47Xoo5IiaOMyvHaNVZF2qqlmky5JKOrq3zBcs12cM/vu6WovY2r0NbPaLJFgqxuAIdbXmNxBzkaAxsk7XAa6SOPOQK5nZPmR4OtTxUjJG1+Rq1rwxN1rVirbZ1dFhZcS61xbPk0+GG1rwSVN8LyiIzRPS1tKG8ou9QTyQxk0sE1JaIDpmQTdwYyZi6eoZ3PsAZPe/CNswhaRQmOENs0GqOU125kzwCRkubJCTk1LaOyR5bcGxtzyOJO0zD+N4WvLEjRAY14uFVNiNidfC9FHVz6plsWrteemu0MzTNUCdNdazno7uUWZMIkLQ0sbDmDkZmEWZmLrYt7h3LDDdfBNhsk7G5IlbGHT0pk0daH5U7qioOVIa1NdWa++2GOPMxoB33eVHFuEL77h3iliJhLb9PebDe+Ft3QtmnnppynsmrIKatekIyggtezJmmsu26FnlNipqyGenMTISB2J2fO3nujdm+eDnYJvRYrPbbC5rhSRtXNyqVMcgpJE/MKPicx4IBDgQCPacxrxkuFQkg6CHRl0Wifu7aVh3np7KsLFq6cDVdt2RZhSw2fb1gHPFTwXosOkqp6iqgggqqiOmrodNmannOI89hqI4wlzj9xGT4pcJxYQwS6a0XMtjsmKSShfDMAXGzyuaGtJLWufE7JblsDxkkxOc74yeDQjUawVzxS7rx1//0H8IQsQhYhCxCFiEIrGiHxNrsYMZb/X7qqvVVHaNv1lJd9hd9IprrWTIVm3cpoAznjDJZNNEcpAwjLUHJK7MUhZa/wCLO6dnuTcbBt3oWZE8Vma6bYutEgy53E6vcxzg0GpawNZWjQmlu/gtmCMDWewsFHtjBftXuzvO9iQNgABrlFVvF8xRdHZC4kVXa65Be27VLsdeq9py8b7iuYXsOX3O5OJuIWGtcVpXAvreW6FXJspysG2K2z4awcsb6XX0kEo0loQuUQvmThIDuAvkys2T4LD11Ls3qs4st47BZLbCNVo0TXlurzscRlMOc52kHOc+c1+Lt1gsVvZkWyKOVuuymg03Y6sdqouc2GmtO8b7pDBR3+si7mKNmxA4nU1MQ3TvNI7SM8Ta97FpZbGcI4XcHc7LklN2EikcmPPX29Wom3AwyXT3cmtWCLU46y08BEAzZ9w5XCWpOfNaA0ZwG0pk4jCNxcFTkusbn2d+wGnbvDjlePgbTVU5lXU1qfgdaojHey6WIF0at88nkgo7JvHZIiMMRML1lJaVFajzSTkYizUGZmiJObOTiPRuGdRCxgWM5WBrbg22w7Aukgk1Z3S5j46AUJOi1qSA00qcnabj4ShNYJIpG7uWneCCPHvu/dX1ploXG3/at8++PrPjhfAjUU8bh5M2DwJb8qvAddPC7dWI97BTe+WtXcFrIaohubce/wBfCqiA3hnrwse6tjVUj0oywBHWS11sWvGGqi0mUjs8XDNIwGVs1i1OA9Q6v5bcl+HMIYNsMLiKhhktErRlUNWhkUZOTpmgTGtQHFhrTlHda2nPO+Ng2lXH0AG+7wuC2JmtPtETfIKuhugF18L7Km0+OKSwLNe2byalqIYoziqbdvCVdSNPGQm8U9HQ0M0embIs8RNmDupqJmLLAbmWjDZteF7Y2hImfoUGUCSC2KHIdQ5g5kssrXU1VCWnz48AWKHPJlSO2uYbwPakrgRfPEC/eIdeFqX8vlei+VoRaa0FXee3rTtyalGdweWKkK0qqo1JAWlC2lxZgMwCzNkFmZjMBXbu9dmzmyXdsNksNmNKtghjiDqVoXZDW5RznO6pzk1qTXydBihGTE1rRtAAvpJMvngvHeF4nZcwvGcF4nXML2HBdjr1XtEUXR2XquBGvCuGhsxVtHBfHDDjECitE7Oo7LvNZtLeV2zHhrLn2rUxWdeqgqY5hOAwnsSomcCIXeCcY5gySRgQ4DGnc+y37uBhS7doiEs81ke6DV1baY2l9ne0ihqJWtqARlsLmOq1zgfZlZlxlu0S/wBROXwy/9F/CELEIWIQsQhYhCIBatmVVjWpaVj1rANbZVfWWbVjGbSRtVUNRJS1DRyNkYwaWJ8j8TZWxsdqht1kittnroE0bXtqKHJe0OFRrjQ6pN7E9s0TZmaw9oI3YioXoZF5C9wjYrtyL1quBbsF2uy5Be24Lxuy5Bey4LxEuQXjvC8JL3AvFevAa9wLw5F6xr3WrwZV6pr3Wr46UL1TXvNXx0oXqmy94L4+UL1yZe4CvAkC8BMvdBXiPavC7LmF4rgvG7LkF7DgvG7LkvZI3hduReq9sii+UsKxq+8dt2Pd6yodUWpb1q2fY1mwbNtOr7Uq4aGjiyixE2mVE4tsmd9mvEwhbrPguwT4StjsmyWeF8rzsGRtL3HtTQSuJoASdUmtKDa+AX//0n8IQsQhYhCxCFiEI42j4wukw40RN6K+nhMLExGAL/2XLmk4PWWxNNHeWnOZoooSqQvJTVM7xjlKOnqYXN3cmIqg6jne5t6MWNks8jgbfgsmxyDX5MQBgIFScnQHMZU0Bex9KAUDI3AwmMJ3cijcRo9m3CduzQMg02GQWiuvIdTVUHC3Iu96ra5K6ZEVXEtXY7LkCvbc1eN2XIFey5q8RMuYK8Z7V4SZe4F4jwvXJl7gK8KRq9Y2XuheBKF6xsvdaV4ErV6psveaV8dK1esTL3QV4EjV6xMvdBXgyNXgJl7gK8N7V4SZcwV4r2rxuy5gr2HNXjdl6gr2SF25FyqvbLdgucms7MKyxM0UNy6mppzlsXDgKnEm1jF4waOe70lPHdrIczELnsXVtBI4CxSFFHI45rC5gv2pN3vF1MUlviicG27ChbYYxnNRMHGfMNdwDMlFSQ0Oc2tahrvDtjhHCdic38dqSh1JJfCr/9N/CELEIWIQsQhYhC1s60xwukvXhDYeI1n0oS2jhnbeS05M8glG6t6jpbMriCMcuqzp7egs0mFxfSoSmkZxFjYmm1FO9zcD31tF17S8tsuFrPpBSo4CLOHSMqd0h0JnFa6ZwY2hOTTs3FdhQWXDMmDJTSO1R6XYaJHVw3arC/dzkjPmpofzf0yKh9UwOQumaiq9CxdjiuQK9tzF43FcgV47mLwkK5grxnsXhIV7gK8SRi9cmXugrwZGr1jZe60rwZGr1TZe60r4+Vq9Y2XutK+PlavWNl7wK8CRq9YmXuArwZGrwEy9wFeG9q8TsvcBXivavE7LkCvYc1djsuVV7Jaux2XrVe2WrfprJTCwrEw3v9i1X05hV35t+nuzYRyvE4vd+6QSHWVlLmM5gFo2/ak0ErGWVys4XYRbbRzl1M294t96MHXMszgYcH2Yzy0rudaCA1rq5iWQxte2g1U5qSczfhMJPrIIhrhXtZ+56Fbc0ly+NX//1H8IQsQhYhCxCFiEL6lf259nYg3JvZce1mDXdey71rWBUyHAFS9MNp0U1KFbFCZAz1NBLIM0TsQEMsYkJCTM7fM3cw3artYfsd4LFXgJsdpjmaAcnK0NwcWE59K8AtdmILSQQQSD5mDrbLg23w4Qh3Nhla8Z6VySDSuwOqOrzHVHVIn1s2PXWDbFq2FacWkWjYtpV1k2hDs30mts6qlo6uLZsLvpc8JNs2bfysdYbdZ8I2KHCFlOVZZ4mSMOxY9oc09rBCciB8dpgZaIs8UjA4HYhwqDvBXxrivKqvdMa7HFcgV7To14yFcwV472LwkK5grxXsXrkK9wFeHIxeuYr3QV4UjF6xivdBXx8jF6xivdaV4ErF6piveaV8fKxesTL3QV8fIxeuQr3AV4MjF4CFe4CvEexeF2XMFeK5q8TiuYK9hzF2OK5VXsuYuscMs8scMMZzTTGEUUUQFJLLJITBHHGAM5GZk7MzMzu7uh0jY2GSQhrGipJzAAask64DXr2nNS+NDxhkGDmCWGmG2l6XV3ZutQxWyLSQyg95LSeS2b0SRSU+WEoJbx2jVFHmue2CbbRvlJ4o4zL2Ovxf7Ct6a1htdreYsxG4DKRWcEOz1EDIwagZwczdUMhaJNFmdJric27a7fFZlhl7K//9V/CELEIWIQsQhYhCxCEanRoXcortaJ/F2zrPHJBU29Z94JNssG8be27tjXqtN8jO7PltK2ZXy8Vb/4mqo4isKWjCuKXAtptO5jLO+EdYWeaWzs8cibuybjF/LJbbnWGeTWhG5naopHxt8dYFxezNou28pbAxLscFyDl7Tol4iBcwV4z414CFe4CvEkjXgMV7gK8KSNesYr3QV4Mka9UxXutK+PljXrGK95pXx8sa9UxXugr4+SNesYr3QV4EjF6xCvdBXgSMXhIV7gK8R7F4XFcwV4zmLxuK5Ar2HMXjcVyBXsujXKnQUYWFizolcM7Bnpznsaw7YG+94nF42jCyLoZtsBDVDIxEdLatrQUtCbAznkqtk47Mx6gx83vFzcVeFcIxuDbdaIOAWHV1Mlp3CJbTdUcZklFc24evzNPxuEX8A9ke7dRFBu5zb4KntSVgo9rGLEIX//1n8IQsQhYhCxCFiELEIR8NaEV1NX6Jq89PA5vLY937oWdW5wOIjUyWFS2sDRvt4Go7UifLyc7txJUp1Gqzy2fFRZJZKZE9ptL2590iV0efYHKjdm2FDr02uKWySNuTBK8DJkllc3dg8s9C0rhG8a79Dl2O6FeNwXIOXsOhXhIFzDl4r4l65AvdDl4UkS9cgXuBy8KSJesYL3WlfHyx/x/H8e09UwXvNK+Plj/j+P49p6pivdaV8fLGvWMV7zSvj5Y16pCvdBXx8ka9chXugrwZI14CFe4CvEfGvE4rmCvFdGvG4rkCvZdGvG4rlVeyY1u11klhicFBijjBW02a1dNQYeXeqCjpmIoqNoLw3pYTKMq1oJJp7KZnAghM4jYmkMG0pCdTOvY2S0YIuTA6pja+2zNq7VurDZ9fk1AFoJqC4BzSMlrjl5O8UoDo7MNXTKPoB7X+NXucSLLMrEIX//138IQsQhYhCxCFiELEIRndFBeob86IDFe8Uc2qKeS9tbZFHUMMIjPZ92I4bsWdNHpMcQvDJQ2PG4O7Z5A7Obubk71YxS4HN38W+BsGObkyCxNkcM+Z85M7wak5w+RwNMwNQ2jaAPZcTA7sF3NwdY3DJk4BmvcM+Z0tZXA1rnDnkHXV1VBQCBvGuxg5aZ0C8JRrmHLxnwrwkC9wOXhvhXrkC90OXhSRL1jBe6HLwJIl6pgvda5fHyxfx/H8e09UxXvNK+OljXqmC91pXx0sa9UxXvNK+PljXrGC91rl8fJGvWIF7oK8GSNeEhXuArxHxrwuC5hy8Z0a8bhtFyDl7Dol2OC5ZS9oxJP+gCuvT3W0KGFkcWYVTbtLbl6LQmjKdxnqLbvDalRTZQmkMYjpbKGmpyaNhAihcsmUnd5LakfheTC+OPC7n1EVnfFAwGmYRQxtdnAFQ6TLeK1IDqVoAB1phx5fhSUa5pAHagPa1K5kro5fErEIX/0H8IQsQhYhCxCFiEKEaJbE0MJsFr73sjnOG2DsuSwrs6TO1PVPeO32KzbMqaY3ICI7JKcq4xF2N4aU812fI7dh4q7qOvlfvB+BnNDrEJhLPUZTdAh08jXbSSgiBObKkbXMtti7u269V77HgogGy6Jok1RUaFFp3g9Z0EYJzZT21zI1hR7RVQD0/z4F4SjXMOXiSQLwFGvcDl4kkK9c417ocvCkhXrEC90OXgSRL1jBe6HL4+WJeqYL3WuXx8sS9UwXvNcvjZYl6hgvea5fHSxL1TBe80r46WNesYr3QV8fJGvXIF7ocvBkjXrkC9wFeG+NeJxXMFeM6NeNwXIFey6NduYvXKXAxJWehFls+bQyYHnZlGdDTDh3d+GSGSY5yO0KelanterY5DkIQtC1YpqgQysMYyMLMLCzNHrHSy0x417wNtbxJKcJzEEACjHOrG2gAzsjLWE6sltSSSSeoMMtc3CtoDzU6Kd41w7UKBci11gvjFiEL/0X8IQsQhYhCxCFiELSJo+Matj3EMMNrGnzrtYa1dTTV0kUudDal8JYo4rVkMGYcmw9kOgFibOGdqjI7iTJ+tRzuHt3Lsm9NubTCuFWNcwEZ47MCTGK9Js0xpmLNC17SncxD3FOA7ubeW3NphLCbGuYCM7LOCTH3+zSmmYtMevBWv8o0yIcu8HwLwFGvcDl4ckK9c417gcvCkhXrEG0Xuhy8GSJesYL3WuXx8kK9UwXvNcvjpYl6hgvea5fHSxL1TBe81y+NliXqGC95pXxssa9QwXvNcvjZY16xgvdBXx8kf8fx/HtPWIV7oK8GSNeAhXuArw3xrxOK5grxnRrxuC5VXsmNduYvWq4aGksazxve169CxcenkqAqK259oXkufXEB0udG9DbFRadl08kNKIanOC79sUYZJGaWQWaUnLTGIpW6kxgXbHxvYQla0tgt0cFpZrWfLibHIQXa0DNHKat0oNWCmTQdQ3rs3APhqSgo2QNeNXrxQ6vo4Haa7XZubq6CWcWIQv//SfwhCxCFiELEIUM0RWL9Jgthbb969Oia8FTCdi3Oo5AaV6u81oQyjQyFCQlHJS2VGB1lQJuAnDTlGxZ5gxdg4sblTX7vdZsD5J2zWO0W0uBpkwMIyxXVh0hIiYRUhzw6mS1xHYOLG5M9/L3WfA4ads1h0W0uGbJgYRliurDpCREwipDnhxGS1xB0amSeqnmqaqaWpqamWSeoqJ5DmnnnmN5JZppZHKSWWWQnIiJ3InfK+zVO4mxwxtiia1sTWgNaAAAAKAADMABmAGYBUr4BY4oxFE0NiaAAAKAACgAAzAAZgBmAXpFGvfDl4z4V4CjXuBy8KSFesUa90OXgyQr1jjXutcvAlhXqmC95rl8dLEvVMF7zXL42WJeoYL3muXxssS9QwXvNcvjJYl6Zgvfa5fGyxL1TBe61y+NliXqmK95pXx0ka9YxXugrwJI165CvcBXhvjXicVzBXiujXjcVzqvZMa7c1etVw0NbdNZSYilRXoxJwqrawBprcsmhvrYVJMUcbNaVizhZNuDSO+ac9VXWfaVKZx5SdoqFzFmYZHdLdTEuwJ8EYKvhBGTLZ5n2WVwqdJKDJFla4NY9kgBzDKlAJJLQOv7+2GsENvaM7XFjjtHZ212gIPa3bst3KQZdYrEIX/9N/CELEIWIQsQhaOdG/i5ucbFWW7Fl1WnXYw51VYdLpZ5YKy8MhhsR17ZHyFpVRAFGD7NslK5DspHy0AxA3L27Fzxha1sycLYUyZXVGdsIB0Bna2kyHrYAdZCohqPlwzde5bcMW1mThfCuTM6oztgodAZ2tpMp19ZADnaKcKiBd8By7yfEvAUa9wOXiPhXgIF7gcvDkhXrGC91rl4EsK9YwXutcvAliXqGC95rl8bLEvUMF77XL4yWJeoYbRe81y+MmiXpyAvfa5fFzRL0zBe80r4yWNeoYr32lfGSxr1TFe60r46WNesQr3gV8fJGvXIV7gK8J7F4XFcwV4rmLxuK5gr2HMXbmr1quGQrpoZsRCwpx4wwvsdYFBZ1BemgoLfqpjjGniuzbzlYV45Z9O3cuFPY1ozSs5ZGAwEmISFiHr3GtdgXxxd4WwC1hktUlje+FoBqZ4dxYAKZ6mVjW5tWCRQgkH4nDlg20MEz2UNrIYyWjo5umb48AErJR6S+LEIX/1H8IQsQhYhC46aKLF8sHcKLXtizakIb2W8Ww5dFsgHJBaldFK9Ra7RG0jZlh2fHLUCRgcL1Iwxm2SVsvZ2KO5QvvfGGxWppdgazjR7TqwDGwikdRTc15awgEOyC9zc7c3bWJa4PAwb8QYPtbC7AdlHARatWAY2EZMVRTPNIWxkAhwjMj252ZtAMrnKZyymUkkhFJJJITmchm7kZmZZSIiJ8ru75XdUgYGsaGMADQKADMABrhtFUHQWsaGMADAKADMABqgBsF4CBe4HL2HxLwkC9wOXiviXrkC9wOXhyRL1zBe6HLwJIl6pgvda5fHyxL1DBe81y+NliXqSAvfa5fFzRL05AXvtcvi5ol6UgL32lfFzRr05BXvtK+KmjXpmK95pXxc0a9QxXvNK+NlYvVIV7wK+PkYvXIV7oK8F7F4SZcwV4j2rxOK5gr2HNXbkXrVe0WrpkXrVemSlMaE7EiTFXQ94Y3tq6jVNr64AsC35DOnKpO3LrTzXdtCrq4qYzCnmtU7NatEHYH0qpAswWJmaRGOS6zbn4y8LYGhbk2LgJM0IAdkiK0ATMa0uALhGH6ETn0zHDKJBJXu8lg2zsN2izNFI8vKbq6ZL9MAK6ulcndwVyKXWK+DX//1X8IQsQhYhC0U6LzGPc7OKFRS2ZNn3SuNq27tgZkumU9dUtVbzu349lkbXrUU8cYOLuJ01LCWyJyy0JxK3H25t0mzWttMM4QyZpqihY3J3ChPWtrnONc4fI8aoBU9xBYutuHchk9tbTD2E8i0T1FHMbk7gwHrU1znGucSSSDVAU4pOK7iBXdrmLxuK5Ar2HRrwkC5grxnxrwkC9wOXiSRL1jBe61y8CSJeqYL3WuXx8sS9Qw2i99rl8bNEvTMF7zSvi5ol6cgL32lfFTRr0pBXkNK+JmjXpSCvfaV8TNGvSkFe+0r4qZi9QxXvtK+MlYvUNl7zSvjZWr1yZe4CvBkavATL3AV4b2rxOy5grx3NXY7LkvaLdiu3IvVcaFbnNZUYjyS0OJmEtZUZzUc1Df+wKcjp3IYqtoLAvO4iRjWaTHNDZbswCcIHKblpZm2mItqYV12stGCr5wNzyNfY5jR2rbWaDXZNSDPWpDiGtplBpyOqcY+D8l9nwm0asGNxz67TM2mz7XMNWBm3BpJV1ev//WfwhCxCFxh0WmLW5qsJ7T13VOkXpvhp12ru6WebUU2qoX17WvHkdjDXXZxFmG3AFTLDl3+u2cTNzNvhfKLgJZlYIsVJ5qjM7JO4cZ124j6VGvY1+wXd2IG4G37v7DwFsysB4OpabRUaV2SdwojrjoslKtOrjbJsFoiyKhtVUktXbkXKq4Fi7HFeoK9tzF4yFcgV47414SFe4CvFkjXrGC91pXgyxr1TBe60r46WNeqYL3mlfGzRr0pBXvtK+KmjXpSDv9eQ0r4qaNelIK99pXxE0a9GQV5DSviJ2L0ZGXkNK+ImavSNl77SviZmr1DZe81fGyhesTL3QvAkC8BMvcBXhvC8TsuYXjOC7HZcl7RC7ci9argRsFyh0GeI54Y6I7Da15KjU9lW9bMdybezjp4acrLveQWPHNWz1JxR09FZdrT0tdIeeLiNLxU2UC6kx53XbezFfhWxNblWyzwG1Q5nE6JZtxSGhoJLpIxJE0UNTJrjQjN3rsAwhgG0RAVlYzRG6utWabMBqyQC0bv2sJ7UmUvK//138IQsQhaEdFFi1udzFi2bToKnT7rXfy3auppZ51PPZtnzS6ptePNdgk192ictQBuIyamKGMuBbZKLYpLmbcu5sFktLMnC9p3HtFRnD3gZMZ140JgawipGWHuGtFVbxG3A4F9cGzWG1syMO2vhZtVRpmySAZMR140GMNjLaluiCR7dbK46rs5dwrpkXrVemSumRetVxLV2OK5Ar2nMXhIVzBXiyMXrkK9wFeFIxesYr3mlfHyxr1DFe80r42aNenIK99pXxU0a9GQV77SviZo16MgryGlfDzxr0JBXksK+GnYvQlZeQwr4W0NXoSLyGr4eYL0zXvtXxcoXrEvdC8CReAl7gXhvXidcwvHcux1yXska5dq9VwXzd2CtULy3eOwYwmtwLcskrGhkeFo5bVGvp3s6OR55IoGA6tgZ88hDI+zdmyu3gYWFjdgq0twiS3B5s8mikVqI8h2WRQE1Da6oE7AEr2LQIjZ5BNmhyHZXWNDXfEv9ROSsr/0H8IQuH+jNxglw1wyOwLFq9T3qv/AKqsSiOJx1RQWEMIjeG0onfKUUr09QFLEbZphJU6ZG7FHlbuzEXcll6r2DCNuZlYHwbkyuB1l8tdwWHYjKaZHDOCGZLgQ6hYjUbsXbL632GFsIx5eAcEZEzwdZfPXhXjOxGU0yuaatc2PIeC19DpHT8KmixCFiF6rEL0XR2XqvQiq8RMuYK8d7V4CZe4CvDkavXMV7rSvAlYvUMV7zSvjpWL05BXvNK+LmYvSkHf68hpXxM8a62dY1rW9aNJY9hWXaNtWvaErU9BZVk0VTaNo1s7s5NBR0NHFNU1MziLuwgJFkZelqt1jwdZX27CE0UFijbV8kjmsYwbFz3ENaNqSAs9hKey2GzvtdtkjhssYq573BjGjYuc4hoG1JC5jXC1nxjzfEQqrw09hYd2eWe7PeO0GrLXlDSs6I4LIsNrQePPndgIaqalkEWIs18gsfR94tSUxd4EJhwY60YTtIpuQzJjBrnBklyK0GcGNsgJIFRnLejLwY6bmYOJisDprdP0ibksGfPV8mTXNnqxrwcwrqyOSFk6y4sAYC1/4v2vWVR6WQ657p0VmQQbYbTYi1bbVrSVWSTgE93O2d/hl391dbNS5wiZBtm4EgZEK7m2h0hOfMdLFGG5tWNNn3Uus7Zj1tUr+FTB0bI8+tylxOwOlYwDNrs+7ryWjrLO6M1JKFl4uXjo64szSKmvuxZlpUkeSQHl02ip7TsqabPhYhHJUR5pOxPnMziXGy6l3hpkzXWvAtlks+erWTyMccxpRzo5AKGhNWGoqM1aj45uOm3ueDNYITHrw2RzTqtiWuAz9GnYZtWOPd/9ZkYx2CEtTcS8t1cQaYNNzKOQ5Lo27PmQyyx5lJac1ZYY6cUbR7btIc2Qxy7YzzDsq7epX3Hwi4RXhstswbKaVcKWmIZwDV0YbLmrlZoDUA7qo13zVhxsYEtdG4Qimszzr9zGDXatoD9ruXqgdfQHghiBhViRhbXtZuIVyrw3TqJDKOmltazpoaCvIAAzey7VBpLLtUIxNs4qaaURLKzuzs7Mw9274XWvdZ+Aq7Vvs1sjAq4RvBezPQaJGaSRk0zB7WkjOMxBOzsWF8GYWj0XBs8czRq8kio6ybrTe2gFOHWoC95y8TrmF47l2uuS9py7XZC4ELmfoEcGK/FjHm7dqS0VTJdLDSvs6+l5LQCMCpIayzp5Ky6tlVEkrtGR2zbdAO7nIRy00E7sOaBEPRepDX6s1zcXdqsbJGDDOFY32WBhJyi14DbRI0DPSKJ502YNkfHnq4A4++mFmYMwLJGCOAq0NMbBr6HM9w6xadXriW7EVSUpaLoBf//RfnPPDTQzVNTNFT09PFJPUVE8gRQwQxA8ks00sjjHFFFGLkRE7MLNldc445JZGxRNLpXEAACpJOYAAZyScwA1a5xRSzythha58z3BrWtBLnOJoAAM5JOYAZyVoD0RuLRYxYpW1eWlmlO7lDm2HdOKQJYs2wrPOXSqt4JRCWGW1qqSWqITFjDTmAuAGZqPYr7mC5F0YMFTNAwpJuLaCKHcV4FW1FQRG0NjBBIOSXDWs9Z8TVwRi5uNZsDWhrRhiXce1EEHceQCrMoVBETQ2IEEtOQXDWjWFLsJdrLHZeq9CFiF6gUXR0Li5dELiux2XIL23BeEmXuArxXheAmXuArwpGr1TFe60r4+Vi8MdNPVTw0tLDLUVNTLHBT08EZzTzzzG0cUMMUbFJLLLITCIizuTvkZe46WOGN0srg2JoJc4kAAAVJJOYADOScwC+JtRjhjdLK5rYmtJc4kAAAVJJOYADOScwC544LaAS/N9SoLcxRnqLgXXnAKgrGjaPY4rYJAzwB6Opp6iku4ZZzZ2rAOpidnE6Zn2bLvfvUjbv4BEmD7otbhLCzSW6Ka8ArCDQnKaQ6YbDQiGOGcS7FZL+6kFd7A2iYPuoG4Rwo0luiZ+AVpBznKBDptpoZDHDOJTr9reGWD+HWD9jvYtwLt0ljRTZpV9cRS1tsWrMwizzWla1Wc1bU5SHOGLPGCJ3doowHZMnd7L7XnvtbuA68dqfO9usMzNijGwZG0BrdgXUL3U07nHOlEvNe+8N77ZwG4ftLpnjWW5mxsGwZG2jRsCaFzt1Occ6piyizSxCFiELEIXoWpZVl23QVNlW1ZtBa9l1gNHWWbalHT19BVxiYyDHU0dXHNTzg0gCTMQuzEzPv9l5FktlrsFpZbLBLJBa4zVr43OY9ppSrXNIcDQkZiMxXuRSywSCWBzmSt1TmkgjdiM4XCvFLWfOh5xF0yssexKzDO2zmmnKuuNPHSWZUFLlcYKm7NdFW2HBRwkTkIUMVCbPkbPzGYW74ujqSmMy7FILdaI8K2ANAyLWC6QU17Z2FspcdUTK6Ua/JyiStngy/94cH6SZ4tMNKUlFXDah4o4nrIu3auda6cTdZnY33Sz6q4NpWBilZo7c0ksN07yCzaaUkslkW5XFZJQjGI5GhtOaczJxaLZM5M7dPUrLgYZpDeOK04ItR17gbRBrqASRM0Sta61A1gAqX5yBvsHYx8C2vSW5slmk2J07N7NGVXd2AbXYcULR0M+iIsyrloqjA7FaWaDMzzs+4d5bWpC0yIJR0m0LKs2soKjIEjMWlylmFlEshC7N3HZsa2LK1QC0RXgwOI3VoH2uCN2YkZ2SPa8arNVoqKEVBBOkbeLAEjA9ttstDsZWNO8EgjtYXJTCLWcuOd+7Qppr+UkOFd2H0w56615KG1bfnGGdoSgobuWfaDzxTSuxOJVklKGYOe2ezgx9V311J/F9d6zOZd17sMYWzAMjD44RUVq+d7KEDNURNkNTknJIcW5zCt/wDA1ijIsRNptOuDataN3eRTeoOwzZ6bvcGcGbkYF3Is+41xrP1PRU+SotO06hozte8VrnGAVVtWzVAAaorKjMZhFmGKCIRiiEIwEWQS/N+cP4wsPyXgvBJlTu0scbaiOGMElsUTSTktbXOc7nOJe8uc4k9OYWwtbMM2x1ttjqvOYAay1uua0a4DeSc5qSSquscvjF//0mP6OHFrYHw0G5FlVOl3ixH1TZs2lHklo7p0zR6/5izc7M166dHQCJiwywz1Di+dFsu+sQFzNvBeo4ftjK4MwXkvFRmdaHV0EbXQ6OlJBq1zY6ij0zOowXA2899Tee3srgfA2TIKjM+1OroAGx0KjpyWmrXshDhR+fTAnqVI1iF6rEIXVkLk1Y6F6OXRC4ro69QuLgvETLmF47wvCTL3AV4sjVyqwY0HmJ+LOpLYr6XYIuXLLG527b0E0doWhS7YKQ7v2G4hV1+WORnCeZ6ajNsuZMZCQLp6/WO66VzcuxWZ+2hh0A0ihILGOz0E0usszg1a3LkGbKY0EOXQOMXHxcy5BkwfZX7aN4WtNIYSCyN2egnmztZnBBYzRJRmyo2hwctseD+hywuwVh026ti6svDJE0VXe23NJtC8MwuBhLFS1OkxQ2TSzMbscVJHCMrMOm6Y4i7JvfbGhe6/kmRhefIwYDVtmiqyEZ8xc2pMjhTM6QuLc+RkgkFHL9Y1L4YwJcnDM+h4MDqts0NWQjPUFzakyOFMzpHPLc+RkgkG7rrxdcLEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiEL//T3wY9Yj1GKmKt7b2FOU1mSWjNZl3AfZDBduy5ZKWyBAGOQIyqacdUSsJELzzm7O+VUuxdXXjufc+xYGDQ21iIST7WeQB0megJyTpG1AOQ1o1yrziqubFcS4eD8ABgbbRCJLQdmtEoDpamgJDXHQ2kgHIY0EZlH1tl2GsQhYhC6shc2rHQh2qXRC4LHXqg5wrjhJoc8T8ZjGpuxY4Ud3hnKnqr121IVDYcJxuzTR08jRy1VpzxZchBTRSuBZGNwy5V1/fPGfdO4rTFhacvwnk1bZ4hlykHVEiobGDrjI5tRrOVql1TjBxv3IxctMOG7QZMLlmU2ywgPmIOslwqGxtOudI5tRrOVqltYwY0IOGOFGpLYr6XY2vnFFG525b0EMln2fU7YKQ7v2G4nSUGSSNnCaZ6msDZ5kwCRAk9v1jrvZfHLsNnfwAYCJNIoSQ97c9BNLmc/MTVrciM5spjiAUh2MbH/fS/eiYPsr9s27rnGkMBIkkbnAE82Zz8xILGaHE7NlRuLQ5cr104uiliELEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIX/1NwCrIreLEIWIQsQhdWQubVjoXo4a9UTDjCe/wBixaz2Rca71Va8sWaVbWkUdHZNmROQs8to2pVHFR0+QSzhjznmlZnaMDLZPmL0Xyu5c6x8Bt4LSyFh1hmd0kh2DI21cdgXUDW10zmjOsbfG/107hWDbQvRbI7Ox2sMzvlkOwjiaC92wLqBjagvc0Z1tGwe0DFxbnagtrEeeK/t44dIqCsnMOO5lFVBmmUWopowqbwxRys7Z1W0cEwcB0rZciUe++pBXhw5olguu04OwW6rdErW1Oac1coEthJGekdXtOsynVpGcYmpR3pvFouDbmsdgrAzspolqDbHtOauWCW2ckZ6RFz2HWZzq1zogggpYIaamhip6enijgp6eCMIoIIIgaOKGGKNhjiiijFhERZmFmyMl9kkklkdLK4ulcSSSSSSTUkk5ySc5JzkpXJZZJ5HTTOc+Z7i5znEkuJNSSTnJJzknOSvKuC4LEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIWIQsQhf/9XfloicKqvCLFS8V3dS6RYNfVTW7dGYMrwTXbtKomkoqeMiM5HlsiRjopc/NIpKdzZswwcqSYsr4Q30uhZcJ5eVhGNgitIOrE7GgOccwFJBSVtKgNeG1ymuArbifv3Z8YNxLHhjRMrCsUbYLWDrQtEbWh7jmApKKTNpUBsgaTlNcBDV2Auz1iELEIX2a6Vzr037tqG71z7CtG8NsVAFKNDZsBTHHABxxyVVTJtmCjo4jlFjmmIIgcmzibK2X4rDOHMEXesLsJYbtEVmsLTTLeaAmhIa0atziAaNaC40NAaL4fD148BXVwc7C94rVDY8GsNC+R1AXEEhrRrT3kAkMYHONDQGhWybBrQE0lLqS3sZbR1ZUhLHPFcmwqlms8RDMNorftsR06s0x3ITp6LShFxZ2qZBJwZWb86kXNNl4OuNFocRBBtUzdPnrnhi1TaZiHy5RNSNCaQCUxxkalfaJ9EwTi3h0OAtLTbZ27iZ6isEJzMpmLZJsompBhYQHHYtYdg2JdmzKaxru2TZ1h2TRhmUtnWVRwUNHA3E3Cnpo442I3bKRZM4n2bu77NLFhDCNvwra327Cc0totjzVz5HF7ju5cSd2GqGuSc4TwrhPDdtfhLDFomtWEJDV0kr3Pe7d3OJNBrhqgMwzL5ZeGvj1iELEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIWIQsQhYhC//WdFi/g7dDGm6x3bvVTlHNAR1NiW7RjG1q2DXkIi9RRSyCQnBUCDDUQHljnBmy5DGMw2Nyb74buJhcYUwO4FjgGyxOroczNlcBqiKkseNMw11bS5rt7i8xi3hxa4dGGsBPBjcA2aB9dCnj2V4Gqc2pMbxpmEmlWue12pbEDQVY2XNqJ5LGsinv5YwFI8NoXani1dpQ5rx6psGslhtIJ5Gd9sU7VQC4uznsxznLu3j4uFhyNrbdM7B1uIFWTg5FdfkzNBZQbF+hk11nV0f26WpLYs7xwtZhK0PwVhEgVjtLTkV1+TOwGMtGxkMRNdZzGkhoMA8brRqGpqfCXEOORwI2Kvulbdl0+QNm7PV2nR0lKxPxIXPOLiTOtraMY1wbLHosmGcGFtaaS0RSHesbnO7XSg167CtWNfFlY4tGmw/ggsqBpLXDK7P0bG97qbE0oNeuX+FegBvFaMkFpYtW3Fd6hbS5Cu1d2oprRtubKIkcFZa7DPZFn5hPmu8DVufkfIQ7In6UvfqSGDLMx1luZAbTaM40eYOZENgWx5pH11Yy9CpmqDnAXm/epZ4HsbH2LF/ZnWy1ZxwE2hro4Rrg5kWllkrqxl6DTNUOzgbKrjYeXLw2saOwbk3es6waARiad6OAGrLRlhBwCrta0CYq21KzNd202czNm2TOwszMq14LzYdvTbjhHD1pltNpJNMo6VgJqWxs1mNvRrABr9XnKW3ovfeW+mEnYVvNbJrXayTk5bjkRgmpbFGNJEzo1jWiucgmpP3RfBLNrEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIWIQsQhYhCxCFiELEIX/2Q==",id:"e",width:193,height:192}))))};var Q;function E(){return E=Object.assign?Object.assign.bind():function(A){for(var e=1;e{let{title:e,titleId:g,...t}=A;return a.createElement("svg",E({xmlns:"http://www.w3.org/2000/svg",xmlSpace:"preserve",viewBox:"0 0 177 74",role:"img","aria-labelledby":g},t),e?a.createElement("title",{id:g},e):null,Q||(Q=a.createElement("path",{fill:"currentColor",d:"M87.61 16.365c-11.4 0-20.64 9.24-20.64 20.64s9.24 20.64 20.64 20.64 20.64-9.24 20.64-20.64-9.24-20.64-20.64-20.64zm0 33.27c-6.98 0-12.63-5.66-12.63-12.63 0-6.98 5.66-12.63 12.63-12.63 6.98 0 12.63 5.66 12.63 12.63 0 6.98-5.66 12.63-12.63 12.63zm68.34-33.27c-11.4 0-20.64 9.24-20.64 20.64s9.24 20.64 20.64 20.64 20.64-9.24 20.64-20.64-9.24-20.64-20.64-20.64zm0 33.27c-6.98 0-12.63-5.66-12.63-12.63 0-6.98 5.66-12.63 12.63-12.63s12.63 5.66 12.63 12.63c0 6.98-5.66 12.63-12.63 12.63zM20.66 16.365c-11.4 0-20.64 9.24-20.64 20.64v36.99h8.01v-20.69c3.49 2.71 7.87 4.34 12.63 4.34 11.4 0 20.64-9.24 20.64-20.64s-9.24-20.64-20.64-20.64zm0 33.27c-6.98 0-12.63-5.66-12.63-12.63 0-6.98 5.66-12.63 12.63-12.63 6.98 0 12.63 5.66 12.63 12.63 0 6.98-5.65 12.63-12.63 12.63zM121.62.015h-8.01v40.22c0 9.62 7.8 17.41 17.41 17.41v-8.01c-5.19 0-9.4-4.21-9.4-9.4v-19.86h9.4v-8.01h-9.4V.015zm-57.04 16.35c-9.62 0-17.41 7.8-17.41 17.41v23.87h8.01v-23.87c0-5.19 4.21-9.4 9.4-9.4v-8.01z"})))};var s=g(50615),B=g(31792),Z=g(30658),i=g(33453),V=g(81271);const o=["bun","deno","node","go","rust"];function N(){const A="undefined"!=typeof window&&window.navigator.userAgent.toLowerCase().includes("win"),e=o[function(A,e){const g=Math.ceil(A);return Math.floor(Math.random()*(Math.floor(e)-g+1))+g}(0,o.length)]||o[0];return a.createElement("ul",{className:"flex flex-col w-full p-2 m-0 overflow-auto font-mono text-sm text-gray-200 border border-solid rounded-lg bg-slate-900 border-slate-500 list-none",style:{height:230}},a.createElement("li",{className:"text-gray-800"},"# Install proto"),a.createElement("li",null,A?"irm https://moonrepo.dev/install/proto.ps1 | iex":"curl -fsSL https://moonrepo.dev/install/proto.sh | bash"),"bun"===e&&a.createElement(a.Fragment,{key:"bun"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Bun"),a.createElement("li",null,"proto install bun 0.5"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"bun run index.ts")),"deno"===e&&a.createElement(a.Fragment,{key:"deno"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Deno"),a.createElement("li",null,"proto install deno 1.31"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"deno run index.ts")),"node"===e&&a.createElement(a.Fragment,{key:"node"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Node.js"),a.createElement("li",null,"proto install node 18"),a.createElement("li",null,"proto install pnpm"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"pnpm install"),a.createElement("li",null,"pnpm run dev")),"go"===e&&a.createElement(a.Fragment,{key:"go"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Go"),a.createElement("li",null,"proto install go 1.20"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"go run .")),"rust"===e&&a.createElement(a.Fragment,{key:"rust"},a.createElement("li",{className:"text-gray-800 pt-2"},"# Install Rust (requires rustup)"),a.createElement("li",null,"proto install rust 1.68"),a.createElement("li",{className:"text-gray-800 pt-2"},"# Use immediately"),a.createElement("li",null,"cargo build")))}function h(){const[A,e]=(0,a.useState)("?.?.?");return(0,a.useEffect)((()=>{fetch("https://raw.githubusercontent.com/moonrepo/proto/master/version").then((A=>A.text())).then((A=>{e(A.trim())})).catch(console.error)}),[]),a.createElement("div",{className:"bg-gradient-to-b from-slate-900 to-slate-600 star-pattern"},a.createElement("div",{className:"max-w-7xl mx-auto py-10 px-4 pb-6 sm:py-12 sm:px-6 md:py-14 lg:py-16 lg:px-8 xl:py-20 flex flex-col md:flex-row"},a.createElement("div",{className:"text-center md:text-left md:w-6/12"},a.createElement(V.Z,{icon:a.createElement(d,{height:75,style:{marginTop:5}}),text:a.createElement(U,{height:90,className:"absolute top-0 left-0"})}),a.createElement("p",{className:"mt-1 mb-0 text-base text-white sm:text-lg sm:max-w-xl sm:mx-auto md:text-xl md:mx-0 md:w-[80%]"},"A version manager for all your favorite languages and tools. A unified toolchain."),a.createElement("p",{className:"mt-1 text-white opacity-50 text-sm md:text-base md:pr-4"},"Supports Bun, Deno, Node (npm, pnpm, yarn), Rust, Go, and more."),a.createElement("div",{className:"mt-3 flex justify-center md:justify-start"},a.createElement("div",null,a.createElement(i.Z,{href:"/docs/proto/install",color:"bg-pink-600"},"Get started",a.createElement(B.Z,{icon:c.gfM,className:"ml-1 md:ml-2 inline-block rotate-180",style:{maxWidth:18}}))),a.createElement("div",{className:"ml-1 sm:ml-2 lg:ml-3"},a.createElement(r.default,{href:"/docs/proto",className:"w-full flex items-center justify-center px-2 py-1 sm:px-3 sm:py-2 text-base font-bold rounded-md text-white hover:text-white bg-white/5 hover:scale-110 md:text-lg group transition-transform"},"v",A)))),a.createElement("div",{className:"mt-4 md:mt-0 md:w-6/12 flex flex-col flex-grow-0"},a.createElement(N,null),a.createElement("div",{className:"mt-2 flex justify-center items-start gap-1"},a.createElement("div",null,a.createElement(Z.ZP,{className:"text-white opacity-50 m-0",size:"sm"},"Backed by")),a.createElement("div",null,a.createElement(s.Z,{height:22}))))))}var W=g(87129),R=g(30780),p=g(64654),Y=g(9187),x=g(90728);const b=[{title:"Lightspeed interface",icon:m.BDt,description:"Download, install, and run tools with lightspeed, thanks to our Rust based foundation."},{title:"Universal toolchain",icon:c.pmO,description:"Manage multiple languages and dependency managers through a single interface."},{title:"Version detection",icon:c.OxJ,description:"Detects a version at runtime from a language's ecosystem for maximum compatibility."},{title:"Granular configuration",icon:c.eDR,description:"Configure tools and their versions per directory, or per project."},{title:"Pluggable architecture",icon:c.zZQ,description:"Extend the toolchain with custom plugins, enabling new and non-standard tools."}];function w(){return a.createElement(p.Z,{title:"proto - A multi-language toolchain manager",description:"Lightspeed toolchain manager for programming languages and their dependency managers."},a.createElement(h,null),a.createElement("main",null,a.createElement("div",{className:"bg-gradient-to-b from-slate-600 via-pink-900 to-white"},a.createElement(F.Z,{header:"Toolchain",description:"One tool to rule them all",features:b,tier:2}),a.createElement("div",{className:"relative py-4 sm:py-5 lg:py-6"},a.createElement("div",{className:"mx-auto max-w-md px-2 sm:max-w-3xl sm:px-3 lg:max-w-7xl lg:px-4"},a.createElement("div",{className:"bg-white rounded-lg p-6 drop-shadow"},a.createElement("div",{className:"grid grid-cols-2 gap-4 text-gray-900"},a.createElement("div",null,a.createElement(Y.Z,{level:3,className:"mb-2"},"Get started"),a.createElement(Z.ZP,{className:"mb-1"},"Install proto for Linux, macOS, or WSL:"),a.createElement(R.Z,{language:"shell"},"curl -fsSL https://moonrepo.dev/install/proto.sh | bash"),a.createElement(Z.ZP,{className:"mb-1",variant:"muted"},"Or Windows (",a.createElement(x.Z,{href:"/docs/proto/install#windows"},"full instructions"),"):"),a.createElement(R.Z,{language:"shell"},"irm https://moonrepo.dev/install/proto.ps1 | iex"),a.createElement(Y.Z,{level:4,className:"mt-4 mb-2"},"Install a tool"),a.createElement(R.Z,{language:"shell"},"proto install node 18"),a.createElement(Y.Z,{level:4,className:"mt-4 mb-2"},"Run the tool"),a.createElement(R.Z,{language:"shell"},"node ./main.mjs\n\n# Or with proto\nproto run node -- ./main.mjs")),a.createElement("div",null,a.createElement(Y.Z,{level:3,className:"mb-3"},"Supported tools"),a.createElement(W.Z,null),a.createElement(Y.Z,{level:3,className:"mt-4 mb-2"},"Why another version manager?"),a.createElement(Z.ZP,{className:"mb-2"},"To start, proto powers ",a.createElement(x.Z,{href:"/moon"},"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"," ",a.createElement(x.Z,{href:"https://crates.io/users/milesj"},"Rust crates")," that moon inherits."),a.createElement(Z.ZP,{className:"mb-2"},"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."),a.createElement(Z.ZP,{className:"mb-0"},"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.")))))))))}},9619:(A,e,g)=>{g.d(e,{Z:()=>a});var t=g(27378),C=g(40624),I=g(31792);const l={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function a(A){let{className:e,icon:g,text:a,variant:c}=A;return t.createElement("span",{className:(0,C.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",c?l[c]:"bg-gray-100 text-gray-800",e)},g&&t.createElement(I.Z,{icon:g,className:"mr-1"}),a)}}}]); \ No newline at end of file diff --git a/assets/js/232c92ba.3177ef24.js b/assets/js/232c92ba.3177ef24.js new file mode 100644 index 00000000000..88948f4ca76 --- /dev/null +++ b/assets/js/232c92ba.3177ef24.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6974],{12725:e=>{e.exports=JSON.parse('{"label":"python","permalink":"/blog/tags/python","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/2497986c.a4ba5865.js b/assets/js/2497986c.b9358fd5.js similarity index 75% rename from assets/js/2497986c.a4ba5865.js rename to assets/js/2497986c.b9358fd5.js index a0a829481ff..bcfbba011f8 100644 --- a/assets/js/2497986c.a4ba5865.js +++ b/assets/js/2497986c.b9358fd5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8114],{80674:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/plugin","page":1,"postsPerPage":10,"totalPages":1,"totalCount":5,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8114],{80674:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/plugin","page":1,"postsPerPage":10,"totalPages":1,"totalCount":6,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/4178efb8.bc3d2400.js b/assets/js/4178efb8.bc3d2400.js deleted file mode 100644 index 774adf8b0a9..00000000000 --- a/assets/js/4178efb8.bc3d2400.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[537],{35318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>m});var o=n(27378);function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(a[n]=e[n]);return a}(e,t);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(a[n]=e[n])}return a}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},c=o.forwardRef((function(e,t){var n=e.components,a=e.mdxType,l=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),c=p(n),m=a,k=c["".concat(s,".").concat(m)]||c[m]||d[m]||l;return n?o.createElement(k,i(i({ref:t},u),{},{components:n})):o.createElement(k,i({ref:t},u))}));function m(e,t){var n=arguments,a=t&&t.mdxType;if("string"==typeof e||a){var l=n.length,i=new Array(l);i[0]=c;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r.mdxType="string"==typeof e?e:a,i[1]=r;for(var p=2;p{n.d(t,{Z:()=>r});var o=n(27378),a=n(40624),l=n(31792);const i={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function r(e){let{className:t,icon:n,text:r,variant:s}=e;return o.createElement("span",{className:(0,a.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",s?i[s]:"bg-gray-100 text-gray-800",t)},n&&o.createElement(l.Z,{icon:n,className:"mr-1"}),r)}},99887:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>c,contentTitle:()=>u,default:()=>b,frontMatter:()=>p,metadata:()=>d,toc:()=>m});var o=n(25773),a=n(27378),l=n(35318),i=n(83469),r=n(9619);function s(e){let{to:t}=e;return a.createElement("a",{href:t,target:"_blank",className:"float-right block",style:{marginTop:"-3.75em"}},a.createElement(r.Z,{text:"WASM plugin",icon:i.zZQ,variant:"success"}))}const p={title:"Supported tools"},u=void 0,d={unversionedId:"proto/tools",id:"proto/tools",title:"Supported tools",description:"The following tools are supported natively in proto's toolchain. Additional tools can be supported",source:"@site/docs/proto/tools.mdx",sourceDirName:"proto",slug:"/proto/tools",permalink:"/docs/proto/tools",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/tools.mdx",tags:[],version:"current",frontMatter:{title:"Supported tools"},sidebar:"proto",previous:{title:"Configuration",permalink:"/docs/proto/config"},next:{title:"Plugins",permalink:"/docs/proto/plugins"}},c={},m=[{value:"Bun",id:"bun",level:2},{value:"Global binaries",id:"global-binaries",level:4},{value:"Deno",id:"deno",level:2},{value:"Global binaries",id:"global-binaries-1",level:4},{value:"Detection sources",id:"detection-sources",level:4},{value:"Go",id:"go",level:2},{value:"Post-install hook",id:"post-install-hook",level:4},{value:"Global binaries",id:"global-binaries-2",level:4},{value:"Detection sources",id:"detection-sources-1",level:4},{value:"Node.js",id:"nodejs",level:2},{value:"Post-install hook",id:"post-install-hook-1",level:4},{value:"Global binaries",id:"global-binaries-3",level:4},{value:"Detection sources",id:"detection-sources-2",level:4},{value:"npm, pnpm, yarn",id:"npm-pnpm-yarn",level:3},{value:"Global binaries",id:"global-binaries-4",level:4},{value:"Detection sources",id:"detection-sources-3",level:4},{value:"node-gyp",id:"node-gyp",level:3},{value:"corepack",id:"corepack",level:3},{value:"Rust",id:"rust",level:2},{value:"Global binaries",id:"global-binaries-5",level:4},{value:"Detection sources",id:"detection-sources-4",level:4}],k={toc:m};function b(e){let{components:t,...n}=e;return(0,l.kt)("wrapper",(0,o.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,l.kt)("p",null,"The following tools are supported natively in proto's toolchain. Additional tools can be supported\nthrough ",(0,l.kt)("a",{parentName:"p",href:"./plugins"},"plugins"),"."),(0,l.kt)("h2",{id:"bun"},"Bun"),(0,l.kt)(s,{to:"https://github.com/moonrepo/bun-plugin",mdxType:"WasmLink"}),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://bun.sh/"},"Bun")," (",(0,l.kt)("inlineCode",{parentName:"p"},"bun"),") is an all-in-one runtime and toolset for JavaScript and TypeScript,\npowered by Zig and Webkit."),(0,l.kt)("h4",{id:"global-binaries"},"Global binaries"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Installs to ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.bun/bin"),".")),(0,l.kt)("h2",{id:"deno"},"Deno"),(0,l.kt)(s,{to:"https://github.com/moonrepo/deno-plugin",mdxType:"WasmLink"}),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://deno.land/"},"Deno")," (",(0,l.kt)("inlineCode",{parentName:"p"},"deno"),") is a secure runtime for JavaScript and TypeScript, powered by\nRust and Chrome's V8 engine."),(0,l.kt)("h4",{id:"global-binaries-1"},"Global binaries"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Installs to ",(0,l.kt)("inlineCode",{parentName:"li"},"DENO_INSTALL_ROOT")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.deno/bin"),".")),(0,l.kt)("h4",{id:"detection-sources"},"Detection sources"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"A ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/justjavac/dvm"},(0,l.kt)("inlineCode",{parentName:"a"},".dvmrc"))," file.")),(0,l.kt)("h2",{id:"go"},"Go"),(0,l.kt)(s,{to:"https://github.com/moonrepo/go-plugin",mdxType:"WasmLink"}),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://go.dev/"},"Go")," (",(0,l.kt)("inlineCode",{parentName:"p"},"go"),") is a simple, secure, and fast systems language."),(0,l.kt)("h4",{id:"post-install-hook"},"Post-install hook"),(0,l.kt)("p",null,"After installation, we'll inject a ",(0,l.kt)("inlineCode",{parentName:"p"},"GOBIN")," environment variable into your shell, pointing to\n",(0,l.kt)("inlineCode",{parentName:"p"},"~/go/bin"),", if it does not already exist. This variable will be used to locate Go binaries across\nall installed versions. This functionality can be skipped by passing ",(0,l.kt)("inlineCode",{parentName:"p"},"--no-gobin")," during\ninstallation."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install go -- --no-gobin\n")),(0,l.kt)("h4",{id:"global-binaries-2"},"Global binaries"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Installs to ",(0,l.kt)("inlineCode",{parentName:"li"},"GOBIN")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"~/go/bin"),".")),(0,l.kt)("h4",{id:"detection-sources-1"},"Detection sources"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Native ",(0,l.kt)("a",{parentName:"li",href:"https://go.dev/doc/tutorial/workspaces"},(0,l.kt)("inlineCode",{parentName:"a"},"go.work"))," or\n",(0,l.kt)("a",{parentName:"li",href:"https://go.dev/doc/modules/gomod-ref"},(0,l.kt)("inlineCode",{parentName:"a"},"go.mod"))," files.")),(0,l.kt)("h2",{id:"nodejs"},"Node.js"),(0,l.kt)(s,{to:"https://github.com/moonrepo/node-plugin",mdxType:"WasmLink"}),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://nodejs.org/"},"Node.js")," (",(0,l.kt)("inlineCode",{parentName:"p"},"node"),") is a JavaScript runtime built on Chrome's V8 engine."),(0,l.kt)("h4",{id:"post-install-hook-1"},"Post-install hook"),(0,l.kt)("p",null,"After installation, the version of npm that came bundled with Node.js will also be installed. This\nfunctionality can be skipped by passing ",(0,l.kt)("inlineCode",{parentName:"p"},"--no-bundled-npm")," during installation."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install node -- --no-bundled-npm\n")),(0,l.kt)("h4",{id:"global-binaries-3"},"Global binaries"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Installs to ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.proto/tools/node/globals/bin"),".")),(0,l.kt)("h4",{id:"detection-sources-2"},"Detection sources"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"An ",(0,l.kt)("a",{parentName:"li",href:"https://github.com/nvm-sh/nvm"},(0,l.kt)("inlineCode",{parentName:"a"},".nvmrc"))," or\n",(0,l.kt)("a",{parentName:"li",href:"https://github.com/nodenv/nodenv"},(0,l.kt)("inlineCode",{parentName:"a"},".node-version"))," file.")),(0,l.kt)("h3",{id:"npm-pnpm-yarn"},"npm, pnpm, yarn"),(0,l.kt)(s,{to:"https://github.com/moonrepo/node-plugin",mdxType:"WasmLink"}),(0,l.kt)("p",null,"proto supports all popular Node.js package managers: ",(0,l.kt)("inlineCode",{parentName:"p"},"npm"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"pnpm"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"yarn"),"."),(0,l.kt)("h4",{id:"global-binaries-4"},"Global binaries"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Installs to ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.proto/tools/node/globals/bin"),"."),(0,l.kt)("li",{parentName:"ul"},"Internally all package managers ",(0,l.kt)("a",{parentName:"li",href:"./commands/install-global"},"install globals")," with ",(0,l.kt)("inlineCode",{parentName:"li"},"npm")," into the\nlocation above.")),(0,l.kt)("h4",{id:"detection-sources-3"},"Detection sources"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"The ",(0,l.kt)("inlineCode",{parentName:"li"},"packageManager")," field in ",(0,l.kt)("inlineCode",{parentName:"li"},"package.json"),".")),(0,l.kt)("h3",{id:"node-gyp"},"node-gyp"),(0,l.kt)("p",null,"The ",(0,l.kt)("inlineCode",{parentName:"p"},"node-gyp")," binary is created alongside the ",(0,l.kt)("inlineCode",{parentName:"p"},"npm")," tool, and cannot be installed manually."),(0,l.kt)("h3",{id:"corepack"},"corepack"),(0,l.kt)("p",null,"Corepack ",(0,l.kt)("em",{parentName:"p"},"is not supported")," by proto, and will never be. Use ",(0,l.kt)("a",{parentName:"p",href:"./commands/use"},(0,l.kt)("inlineCode",{parentName:"a"},"proto use"))," instead,\nwhich is a far more poweful alternative."),(0,l.kt)("h2",{id:"rust"},"Rust"),(0,l.kt)(s,{to:"https://github.com/moonrepo/rust-plugin",mdxType:"WasmLink"}),(0,l.kt)("p",null,(0,l.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/"},"Rust")," (",(0,l.kt)("inlineCode",{parentName:"p"},"rust"),") is blazingly fast and memory-efficient systems language."),(0,l.kt)("admonition",{type:"caution"},(0,l.kt)("p",{parentName:"admonition"},"If you're familiar with Rust, you most likely use ",(0,l.kt)("a",{parentName:"p",href:"https://rustup.rs"},"rustup"),", a Rust specific\ntoolchain manager. This overlaps heavily with how proto works, so instead of proto reinventing the\nwheel here, we simply call ",(0,l.kt)("inlineCode",{parentName:"p"},"rustup")," under the hood. Because of this, be aware of the following when\nusing Rust in proto:"),(0,l.kt)("ul",{parentName:"admonition"},(0,l.kt)("li",{parentName:"ul"},"Rust and Cargo must be pre-installed on your system."),(0,l.kt)("li",{parentName:"ul"},"The ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.cargo/bin")," directory must be in your ",(0,l.kt)("inlineCode",{parentName:"li"},"PATH"),"."),(0,l.kt)("li",{parentName:"ul"},"We don't install Rust to ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.proto/tools/rust")," but instead reference ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.rustup/toolchains"),"."),(0,l.kt)("li",{parentName:"ul"},"We don't create shims for ",(0,l.kt)("inlineCode",{parentName:"li"},"cargo"),", ",(0,l.kt)("inlineCode",{parentName:"li"},"rustup"),", etc."))),(0,l.kt)("h4",{id:"global-binaries-5"},"Global binaries"),(0,l.kt)("ul",null,(0,l.kt)("li",{parentName:"ul"},"Installs to ",(0,l.kt)("inlineCode",{parentName:"li"},"CARGO_INSTALL_ROOT")," or ",(0,l.kt)("inlineCode",{parentName:"li"},"~/.cargo/bin"),".")),(0,l.kt)("h4",{id:"detection-sources-4"},"Detection sources"),(0,l.kt)("p",null,"Since we don't create shims for ",(0,l.kt)("inlineCode",{parentName:"p"},"cargo"),", ",(0,l.kt)("inlineCode",{parentName:"p"},"rustup"),", etc, we can't detect Rust versions at runtime.\nHowever, ",(0,l.kt)("inlineCode",{parentName:"p"},"rustup")," supports this as well through the\n",(0,l.kt)("a",{parentName:"p",href:"https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file"},(0,l.kt)("inlineCode",{parentName:"a"},"rust-toolchain.toml"))," file.\nWe suggest using this file."),(0,l.kt)("pre",null,(0,l.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="rust-toolchain.toml"',title:'"rust-toolchain.toml"'},'[toolchain]\nprofile = "default"\nchannel = "1.68.0"\n')))}b.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/4178efb8.c6cb3d41.js b/assets/js/4178efb8.c6cb3d41.js new file mode 100644 index 00000000000..86e6060f27b --- /dev/null +++ b/assets/js/4178efb8.c6cb3d41.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[537],{35318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>c});var a=n(27378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}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;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}var p=a.createContext({}),s=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},u=function(e){var t=s(e.components);return a.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},d=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,r=e.originalType,p=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),d=s(n),c=o,k=d["".concat(p,".").concat(c)]||d[c]||m[c]||r;return n?a.createElement(k,i(i({ref:t},u),{},{components:n})):a.createElement(k,i({ref:t},u))}));function c(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var r=n.length,i=new Array(r);i[0]=d;var l={};for(var p in t)hasOwnProperty.call(t,p)&&(l[p]=t[p]);l.originalType=e,l.mdxType="string"==typeof e?e:o,i[1]=l;for(var s=2;s{n.d(t,{Z:()=>l});var a=n(27378),o=n(40624),r=n(31792);const i={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function l(e){let{className:t,icon:n,text:l,variant:p}=e;return a.createElement("span",{className:(0,o.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",p?i[p]:"bg-gray-100 text-gray-800",t)},n&&a.createElement(r.Z,{icon:n,className:"mr-1"}),l)}},99887:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>d,contentTitle:()=>u,default:()=>g,frontMatter:()=>s,metadata:()=>m,toc:()=>c});var a=n(25773),o=n(27378),r=n(35318),i=n(83469),l=n(9619);function p(e){let{to:t}=e;return o.createElement("a",{href:t,target:"_blank",className:"float-right block",style:{marginTop:"-3.75em"}},o.createElement(l.Z,{text:"WASM plugin",icon:i.zZQ,variant:"success"}))}const s={title:"Supported tools"},u=void 0,m={unversionedId:"proto/tools",id:"proto/tools",title:"Supported tools",description:"The following tools are supported natively in proto's toolchain. Additional tools can be supported",source:"@site/docs/proto/tools.mdx",sourceDirName:"proto",slug:"/proto/tools",permalink:"/docs/proto/tools",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/tools.mdx",tags:[],version:"current",frontMatter:{title:"Supported tools"},sidebar:"proto",previous:{title:"Configuration",permalink:"/docs/proto/config"},next:{title:"Plugins",permalink:"/docs/proto/plugins"}},d={},c=[{value:"Bun",id:"bun",level:2},{value:"Deno",id:"deno",level:2},{value:"Go",id:"go",level:2},{value:"Post-install hook",id:"post-install-hook",level:4},{value:"Node.js",id:"nodejs",level:2},{value:"Post-install hook",id:"post-install-hook-1",level:4},{value:"npm, pnpm, yarn",id:"npm-pnpm-yarn",level:3},{value:"corepack",id:"corepack",level:3},{value:"Python (experimental)",id:"python-experimental",level:2},{value:"Rust",id:"rust",level:2}],k={toc:c};function g(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,a.Z)({},k,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The following tools are supported natively in proto's toolchain. Additional tools can be supported\nthrough ",(0,r.kt)("a",{parentName:"p",href:"./plugins"},"plugins"),"."),(0,r.kt)("h2",{id:"bun"},"Bun"),(0,r.kt)(p,{to:"https://github.com/moonrepo/bun-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://bun.sh/"},"Bun")," is an all-in-one runtime and toolset for JavaScript and TypeScript, powered\nby Zig and Webkit."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Available binaries")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"bun"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"bunx")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Globals directory")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.bun/bin"))),(0,r.kt)("h2",{id:"deno"},"Deno"),(0,r.kt)(p,{to:"https://github.com/moonrepo/deno-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://deno.land/"},"Deno")," is a secure runtime for JavaScript and TypeScript, powered by Rust and\nChrome's V8 engine."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Available binaries")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"deno")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Globals directory")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"$DENO_INSTALL_ROOT/bin"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.deno/bin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Detection sources")," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/justjavac/dvm"},(0,r.kt)("inlineCode",{parentName:"a"},".dvmrc")))),(0,r.kt)("h2",{id:"go"},"Go"),(0,r.kt)(p,{to:"https://github.com/moonrepo/go-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://go.dev/"},"Go")," is a simple, secure, and fast systems language."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Available binaries")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"go")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Globals directory")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"$GOBIN"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"~/go/bin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Detection sources")," - ",(0,r.kt)("a",{parentName:"li",href:"https://go.dev/doc/tutorial/workspaces"},(0,r.kt)("inlineCode",{parentName:"a"},"go.work")),",\n",(0,r.kt)("a",{parentName:"li",href:"https://go.dev/doc/modules/gomod-ref"},(0,r.kt)("inlineCode",{parentName:"a"},"go.mod")))),(0,r.kt)("h4",{id:"post-install-hook"},"Post-install hook"),(0,r.kt)("p",null,"After installation, we'll inject a ",(0,r.kt)("inlineCode",{parentName:"p"},"GOBIN")," environment variable into your shell, pointing to\n",(0,r.kt)("inlineCode",{parentName:"p"},"~/go/bin"),", if it does not already exist. This variable will be used to locate Go binaries across\nall installed versions. This functionality can be skipped by passing ",(0,r.kt)("inlineCode",{parentName:"p"},"--no-gobin")," during\ninstallation."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install go -- --no-gobin\n")),(0,r.kt)("h2",{id:"nodejs"},"Node.js"),(0,r.kt)(p,{to:"https://github.com/moonrepo/node-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://nodejs.org/"},"Node.js")," is a JavaScript runtime built on Chrome's V8 engine."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Available binaries")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"node"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"npx")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Globals directory")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.proto/tools/node/globals/bin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Detection sources")," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nvm-sh/nvm"},(0,r.kt)("inlineCode",{parentName:"a"},".nvmrc")),",\n",(0,r.kt)("a",{parentName:"li",href:"https://github.com/nodenv/nodenv"},(0,r.kt)("inlineCode",{parentName:"a"},".node-version")),", ",(0,r.kt)("inlineCode",{parentName:"li"},"package.json")," engines")),(0,r.kt)("h4",{id:"post-install-hook-1"},"Post-install hook"),(0,r.kt)("p",null,"After installation, the version of npm that came bundled with Node.js will also be installed. This\nfunctionality can be skipped by passing ",(0,r.kt)("inlineCode",{parentName:"p"},"--no-bundled-npm")," during installation."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install node -- --no-bundled-npm\n")),(0,r.kt)("h3",{id:"npm-pnpm-yarn"},"npm, pnpm, yarn"),(0,r.kt)(p,{to:"https://github.com/moonrepo/node-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,"proto supports all popular Node.js package managers: ",(0,r.kt)("inlineCode",{parentName:"p"},"npm"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"pnpm"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"yarn"),"."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Available binaries")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"*"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"node-gyp")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Detection sources")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"package.json")," engines / package manager")),(0,r.kt)("h3",{id:"corepack"},"corepack"),(0,r.kt)("p",null,"Corepack ",(0,r.kt)("em",{parentName:"p"},"is not supported")," by proto, and will never be. Use ",(0,r.kt)("a",{parentName:"p",href:"./commands/use"},(0,r.kt)("inlineCode",{parentName:"a"},"proto use"))," instead,\nwhich is a far more poweful alternative."),(0,r.kt)("h2",{id:"python-experimental"},"Python (experimental)"),(0,r.kt)(p,{to:"https://github.com/moonrepo/python-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.python.org/"},"Python")," is a high-level, general-purpose programming language."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Available binaries")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"python"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"pip")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Globals directory")," - ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.local/bin")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("strong",{parentName:"li"},"Detection sources")," - ",(0,r.kt)("a",{parentName:"li",href:"https://github.com/pyenv/pyenv"},(0,r.kt)("inlineCode",{parentName:"a"},".python-version")))),(0,r.kt)("h2",{id:"rust"},"Rust"),(0,r.kt)(p,{to:"https://github.com/moonrepo/rust-plugin",mdxType:"WasmLink"}),(0,r.kt)("p",null,(0,r.kt)("a",{parentName:"p",href:"https://www.rust-lang.org/"},"Rust")," (",(0,r.kt)("inlineCode",{parentName:"p"},"rust"),") is blazingly fast and memory-efficient systems language."),(0,r.kt)("admonition",{type:"caution"},(0,r.kt)("p",{parentName:"admonition"},"If you're familiar with Rust, you most likely use ",(0,r.kt)("a",{parentName:"p",href:"https://rustup.rs"},"rustup"),", a Rust specific\ntoolchain manager. This overlaps heavily with how proto works, so instead of proto reinventing the\nwheel here, we simply call ",(0,r.kt)("inlineCode",{parentName:"p"},"rustup")," under the hood. Because of this, be aware of the following when\nusing Rust in proto:"),(0,r.kt)("ul",{parentName:"admonition"},(0,r.kt)("li",{parentName:"ul"},"Rust and Cargo must be pre-installed on your system."),(0,r.kt)("li",{parentName:"ul"},"The ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.cargo/bin")," directory must be in your ",(0,r.kt)("inlineCode",{parentName:"li"},"PATH"),"."),(0,r.kt)("li",{parentName:"ul"},"We don't install Rust to ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.proto/tools/rust")," but instead reference ",(0,r.kt)("inlineCode",{parentName:"li"},"~/.rustup/toolchains"),"."),(0,r.kt)("li",{parentName:"ul"},"We don't create shims for ",(0,r.kt)("inlineCode",{parentName:"li"},"cargo"),", ",(0,r.kt)("inlineCode",{parentName:"li"},"rustup"),", etc."))),(0,r.kt)("p",null,"Since we don't create shims for ",(0,r.kt)("inlineCode",{parentName:"p"},"cargo"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"rustup"),", etc, we can't detect Rust versions at runtime.\nHowever, ",(0,r.kt)("inlineCode",{parentName:"p"},"rustup")," supports this as well through the\n",(0,r.kt)("a",{parentName:"p",href:"https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file"},(0,r.kt)("inlineCode",{parentName:"a"},"rust-toolchain.toml"))," file.\nWe suggest using this file."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="rust-toolchain.toml"',title:'"rust-toolchain.toml"'},'[toolchain]\nprofile = "default"\nchannel = "1.68.0"\n')))}g.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/5a3a719f.a86f940c.js b/assets/js/5a3a719f.a86f940c.js new file mode 100644 index 00000000000..d2d23ba63a3 --- /dev/null +++ b/assets/js/5a3a719f.a86f940c.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[3109],{99402:a=>{a.exports=JSON.parse('{"label":"canary","permalink":"/blog/tags/canary","allTagsPath":"/blog/tags","count":1}')}}]); \ No newline at end of file diff --git a/assets/js/66222453.4dcd0483.js b/assets/js/66222453.4dcd0483.js new file mode 100644 index 00000000000..1def479b155 --- /dev/null +++ b/assets/js/66222453.4dcd0483.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6500],{69376:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/canary","page":1,"postsPerPage":10,"totalPages":1,"totalCount":1,"blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/69bc0e2c.c1fd2a79.js b/assets/js/69bc0e2c.a6436271.js similarity index 63% rename from assets/js/69bc0e2c.c1fd2a79.js rename to assets/js/69bc0e2c.a6436271.js index 744f861e42b..c3e1cb475c0 100644 --- a/assets/js/69bc0e2c.c1fd2a79.js +++ b/assets/js/69bc0e2c.a6436271.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4752],{35318:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var o=n(27378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=o.createContext({}),c=function(e){var t=o.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return o.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},s=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=c(n),m=r,g=s["".concat(p,".").concat(m)]||s[m]||u[m]||a;return n?o.createElement(g,l(l({ref:t},d),{},{components:n})):o.createElement(g,l({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var o=n(25773),r=(n(27378),n(35318));const a={title:"add-plugin"},l=void 0,i={unversionedId:"proto/commands/add-plugin",id:"proto/commands/add-plugin",title:"add-plugin",description:"The proto add-plugin (or proto ap) command will add the provided plugin ID and",source:"@site/docs/proto/commands/add-plugin.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/add-plugin",permalink:"/docs/proto/commands/add-plugin",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/add-plugin.mdx",tags:[],version:"current",frontMatter:{title:"add-plugin"},sidebar:"proto",previous:{title:"WASM (experimental)",permalink:"/docs/proto/wasm-plugin"},next:{title:"alias",permalink:"/docs/proto/commands/alias"}},p={},c=[{value:"Arguments",id:"arguments",level:3},{value:"Options",id:"options",level:3}],d={toc:c};function u(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"proto add-plugin ")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"proto ap"),") command will add the provided plugin ID and\nlocator string to the ",(0,r.kt)("inlineCode",{parentName:"p"},"[plugins]")," section of the local (",(0,r.kt)("inlineCode",{parentName:"p"},".prototools"),") or global\n(",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/config.toml"),") config file."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto add-plugin node source:https://github.com/moonrepo/node-plugin/releases/latest/download/node_plugin.wasm\n")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Learn more about ",(0,r.kt)("a",{parentName:"p",href:"../plugins#enabling-plugins"},"plugin locator strings"),".")),(0,r.kt)("h3",{id:"arguments"},"Arguments"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"")," - ID of the plugin."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"")," - How to locate the plugin.")),(0,r.kt)("h3",{id:"options"},"Options"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--global")," - Add to the global config instead of local.")))}u.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4752],{35318:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>m});var o=n(27378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var p=o.createContext({}),c=function(e){var t=o.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},d=function(e){var t=c(e.components);return o.createElement(p.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},s=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,p=e.parentName,d=i(e,["components","mdxType","originalType","parentName"]),s=c(n),m=r,g=s["".concat(p,".").concat(m)]||s[m]||u[m]||a;return n?o.createElement(g,l(l({ref:t},d),{},{components:n})):o.createElement(g,l({ref:t},d))}));function m(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=s;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var c=2;c{n.r(t),n.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>u,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var o=n(25773),r=(n(27378),n(35318));const a={title:"add-plugin"},l=void 0,i={unversionedId:"proto/commands/add-plugin",id:"proto/commands/add-plugin",title:"add-plugin",description:"The proto add-plugin (or proto ap) command will add the provided plugin ID and",source:"@site/docs/proto/commands/add-plugin.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/add-plugin",permalink:"/docs/proto/commands/add-plugin",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/add-plugin.mdx",tags:[],version:"current",frontMatter:{title:"add-plugin"},sidebar:"proto",previous:{title:"WASM",permalink:"/docs/proto/wasm-plugin"},next:{title:"alias",permalink:"/docs/proto/commands/alias"}},p={},c=[{value:"Arguments",id:"arguments",level:3},{value:"Options",id:"options",level:3}],d={toc:c};function u(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"proto add-plugin ")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"proto ap"),") command will add the provided plugin ID and\nlocator string to the ",(0,r.kt)("inlineCode",{parentName:"p"},"[plugins]")," section of the local (",(0,r.kt)("inlineCode",{parentName:"p"},".prototools"),") or global\n(",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/config.toml"),") config file."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto add-plugin node source:https://github.com/moonrepo/node-plugin/releases/latest/download/node_plugin.wasm\n")),(0,r.kt)("blockquote",null,(0,r.kt)("p",{parentName:"blockquote"},"Learn more about ",(0,r.kt)("a",{parentName:"p",href:"../plugins#enabling-plugins"},"plugin locator strings"),".")),(0,r.kt)("h3",{id:"arguments"},"Arguments"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"")," - ID of the plugin."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"")," - How to locate the plugin.")),(0,r.kt)("h3",{id:"options"},"Options"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--global")," - Add to the global config instead of local.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/752283db.b8c94014.js b/assets/js/752283db.174f5159.js similarity index 91% rename from assets/js/752283db.b8c94014.js rename to assets/js/752283db.174f5159.js index aa75b67d3b8..374d0592ac2 100644 --- a/assets/js/752283db.b8c94014.js +++ b/assets/js/752283db.174f5159.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6947],{90363:e=>{e.exports=JSON.parse('{"label":"plugin","permalink":"/blog/tags/plugin","allTagsPath":"/blog/tags","count":5}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6947],{90363:e=>{e.exports=JSON.parse('{"label":"plugin","permalink":"/blog/tags/plugin","allTagsPath":"/blog/tags","count":6}')}}]); \ No newline at end of file diff --git a/assets/js/7599f4f1.1da291a1.js b/assets/js/7599f4f1.a5d99735.js similarity index 78% rename from assets/js/7599f4f1.1da291a1.js rename to assets/js/7599f4f1.a5d99735.js index 6e856f20e97..b4d917a551c 100644 --- a/assets/js/7599f4f1.1da291a1.js +++ b/assets/js/7599f4f1.a5d99735.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5217],{67049:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/proto","page":1,"postsPerPage":10,"totalPages":2,"totalCount":18,"nextPage":"/blog/tags/proto/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5217],{67049:e=>{e.exports=JSON.parse('{"permalink":"/blog/tags/proto","page":1,"postsPerPage":10,"totalPages":2,"totalCount":19,"nextPage":"/blog/tags/proto/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/7d9726a8.cf280e92.js b/assets/js/7d9726a8.24d0a1de.js similarity index 79% rename from assets/js/7d9726a8.cf280e92.js rename to assets/js/7d9726a8.24d0a1de.js index c64c07cdd79..4fb2a355110 100644 --- a/assets/js/7d9726a8.cf280e92.js +++ b/assets/js/7d9726a8.24d0a1de.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7429],{89494:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/4","page":4,"postsPerPage":10,"totalPages":5,"totalCount":46,"previousPage":"/blog/page/3","nextPage":"/blog/page/5","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7429],{89494:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/4","page":4,"postsPerPage":10,"totalPages":5,"totalCount":47,"previousPage":"/blog/page/3","nextPage":"/blog/page/5","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.92d26492.js b/assets/js/814f3328.92d26492.js deleted file mode 100644 index 143c680e63b..00000000000 --- a/assets/js/814f3328.92d26492.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2535],{45641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"moon v1.13 - Toolchain now uses WASM plugins","permalink":"/blog/moon-v1.13"},{"title":"proto v0.16 - Add, remove, and purge plugins","permalink":"/blog/proto-v0.16"},{"title":"proto v0.15 - Install and uninstall globals","permalink":"/blog/proto-v0.15"},{"title":"moon v1.12 - Task improvements: extending, interactive, and more","permalink":"/blog/moon-v1.12"},{"title":"proto v0.14 - Node.js and Rust now powered by WASM plugins","permalink":"/blog/proto-v0.14"}]}')}}]); \ No newline at end of file diff --git a/assets/js/814f3328.a38a8e9e.js b/assets/js/814f3328.a38a8e9e.js new file mode 100644 index 00000000000..2fbd94f66ee --- /dev/null +++ b/assets/js/814f3328.a38a8e9e.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2535],{45641:e=>{e.exports=JSON.parse('{"title":"Recent posts","items":[{"title":"proto v0.17 - Experimental Python support and canary releases","permalink":"/blog/proto-v0.17"},{"title":"moon v1.13 - Toolchain now uses WASM plugins","permalink":"/blog/moon-v1.13"},{"title":"proto v0.16 - Add, remove, and purge plugins","permalink":"/blog/proto-v0.16"},{"title":"proto v0.15 - Install and uninstall globals","permalink":"/blog/proto-v0.15"},{"title":"moon v1.12 - Task improvements: extending, interactive, and more","permalink":"/blog/moon-v1.12"}]}')}}]); \ No newline at end of file diff --git a/assets/js/86d96e3e.cc83fa49.js b/assets/js/86d96e3e.8277b331.js similarity index 90% rename from assets/js/86d96e3e.cc83fa49.js rename to assets/js/86d96e3e.8277b331.js index 3bf066f1763..c7c0628c1fb 100644 --- a/assets/js/86d96e3e.cc83fa49.js +++ b/assets/js/86d96e3e.8277b331.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4201],{35318:(e,t,o)=>{o.d(t,{Zo:()=>s,kt:()=>d});var r=o(27378);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function l(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),o=t;return e&&(o="function"==typeof e?e(t):l(l({},t),e)),o},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=c(o),d=n,f=u["".concat(p,".").concat(d)]||u[d]||m[d]||a;return o?r.createElement(f,l(l({ref:t},s),{},{components:o})):r.createElement(f,l({ref:t},s))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,l=new Array(a);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var c=2;c{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var r=o(25773),n=(o(27378),o(35318));const a={title:"global"},l=void 0,i={unversionedId:"proto/commands/global",id:"proto/commands/global",title:"global",description:"The proto global command will set the global default version (or alias) of a",source:"@site/docs/proto/commands/global.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/global",permalink:"/docs/proto/commands/global",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/global.mdx",tags:[],version:"current",frontMatter:{title:"global"},sidebar:"proto",previous:{title:"completions",permalink:"/docs/proto/commands/completions"},next:{title:"install",permalink:"/docs/proto/commands/install"}},p={},c=[{value:"Arguments",id:"arguments",level:3}],s={toc:c};function m(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The ",(0,n.kt)("inlineCode",{parentName:"p"},"proto global ")," command will set the global default version (or alias) of a\ntool, by pinning the version in ",(0,n.kt)("inlineCode",{parentName:"p"},"~/.proto/tools//manifest.json"),". This version will be used\nwhen attempting to ",(0,n.kt)("a",{parentName:"p",href:"../detection"},"detect a version"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto global go 1.20.1\n")),(0,n.kt)("h3",{id:"arguments"},"Arguments"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Type of tool."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Version of tool.")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4201],{35318:(e,t,o)=>{o.d(t,{Zo:()=>s,kt:()=>d});var r=o(27378);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function l(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var p=r.createContext({}),c=function(e){var t=r.useContext(p),o=t;return e&&(o="function"==typeof e?e(t):l(l({},t),e)),o},s=function(e){var t=c(e.components);return r.createElement(p.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,p=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=c(o),d=n,f=u["".concat(p,".").concat(d)]||u[d]||m[d]||a;return o?r.createElement(f,l(l({ref:t},s),{},{components:o})):r.createElement(f,l({ref:t},s))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,l=new Array(a);l[0]=u;var i={};for(var p in t)hasOwnProperty.call(t,p)&&(i[p]=t[p]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var c=2;c{o.r(t),o.d(t,{assets:()=>p,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>c});var r=o(25773),n=(o(27378),o(35318));const a={title:"global"},l=void 0,i={unversionedId:"proto/commands/global",id:"proto/commands/global",title:"global",description:"The proto global command will set the global default version (or alias) of a",source:"@site/docs/proto/commands/global.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/global",permalink:"/docs/proto/commands/global",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/global.mdx",tags:[],version:"current",frontMatter:{title:"global"},sidebar:"proto",previous:{title:"completions",permalink:"/docs/proto/commands/completions"},next:{title:"install",permalink:"/docs/proto/commands/install"}},p={},c=[{value:"Arguments",id:"arguments",level:3}],s={toc:c};function m(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The ",(0,n.kt)("inlineCode",{parentName:"p"},"proto global ")," command will set the global default version (or alias) of a\ntool, by pinning the version in ",(0,n.kt)("inlineCode",{parentName:"p"},"~/.proto/tools//manifest.json"),". This version will be used\nwhen attempting to ",(0,n.kt)("a",{parentName:"p",href:"../detection"},"detect a version"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto global go 1.20\n")),(0,n.kt)("h3",{id:"arguments"},"Arguments"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Type of tool."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Version of tool.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8eb4e46b.bdd9c878.js b/assets/js/8eb4e46b.d6eb8008.js similarity index 78% rename from assets/js/8eb4e46b.bdd9c878.js rename to assets/js/8eb4e46b.d6eb8008.js index 7c4cd13e7ba..cda440996d3 100644 --- a/assets/js/8eb4e46b.bdd9c878.js +++ b/assets/js/8eb4e46b.d6eb8008.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1],{82638:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":5,"totalCount":46,"previousPage":"/blog","nextPage":"/blog/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1],{82638:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/2","page":2,"postsPerPage":10,"totalPages":5,"totalCount":47,"previousPage":"/blog","nextPage":"/blog/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/8fb4cf42.620a51f8.js b/assets/js/8fb4cf42.b533d14c.js similarity index 86% rename from assets/js/8fb4cf42.620a51f8.js rename to assets/js/8fb4cf42.b533d14c.js index 5eca72093d9..9d03e9a4003 100644 --- a/assets/js/8fb4cf42.620a51f8.js +++ b/assets/js/8fb4cf42.b533d14c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8542],{35318:(e,t,o)=>{o.d(t,{Zo:()=>s,kt:()=>d});var r=o(27378);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function l(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var c=r.createContext({}),p=function(e){var t=r.useContext(c),o=t;return e&&(o="function"==typeof e?e(t):l(l({},t),e)),o},s=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=p(o),d=n,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||a;return o?r.createElement(f,l(l({ref:t},s),{},{components:o})):r.createElement(f,l({ref:t},s))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,l=new Array(a);l[0]=u;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var p=2;p{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=o(25773),n=(o(27378),o(35318));const a={title:"local"},l=void 0,i={unversionedId:"proto/commands/local",id:"proto/commands/local",title:"local",description:"The proto local command will set the local version (or alias) of a tool by",source:"@site/docs/proto/commands/local.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/local",permalink:"/docs/proto/commands/local",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/local.mdx",tags:[],version:"current",frontMatter:{title:"local"},sidebar:"proto",previous:{title:"list-remote",permalink:"/docs/proto/commands/list-remote"},next:{title:"plugins",permalink:"/docs/proto/commands/plugins"}},c={},p=[{value:"Arguments",id:"arguments",level:3}],s={toc:p};function m(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The ",(0,n.kt)("inlineCode",{parentName:"p"},"proto local ")," command will set the local version (or alias) of a tool by\ncreating a ",(0,n.kt)("inlineCode",{parentName:"p"},".prototools")," file (if it does not exist) in the current working directory with the\nappropriate tool and version. This version will be used when attempting to\n",(0,n.kt)("a",{parentName:"p",href:"../detection"},"detect a version"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto local go 1.20.1\n")),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},(0,n.kt)("a",{parentName:"p",href:"../config"},"Learn more about the ",(0,n.kt)("inlineCode",{parentName:"a"},".prototools")," configuration file!"))),(0,n.kt)("h3",{id:"arguments"},"Arguments"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Type of tool."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Version of tool.")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8542],{35318:(e,t,o)=>{o.d(t,{Zo:()=>s,kt:()=>d});var r=o(27378);function n(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function a(e,t){var o=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),o.push.apply(o,r)}return o}function l(e){for(var t=1;t=0||(n[o]=e[o]);return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r=0||Object.prototype.propertyIsEnumerable.call(e,o)&&(n[o]=e[o])}return n}var c=r.createContext({}),p=function(e){var t=r.useContext(c),o=t;return e&&(o="function"==typeof e?e(t):l(l({},t),e)),o},s=function(e){var t=p(e.components);return r.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return r.createElement(r.Fragment,{},t)}},u=r.forwardRef((function(e,t){var o=e.components,n=e.mdxType,a=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),u=p(o),d=n,f=u["".concat(c,".").concat(d)]||u[d]||m[d]||a;return o?r.createElement(f,l(l({ref:t},s),{},{components:o})):r.createElement(f,l({ref:t},s))}));function d(e,t){var o=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var a=o.length,l=new Array(a);l[0]=u;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var p=2;p{o.r(t),o.d(t,{assets:()=>c,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var r=o(25773),n=(o(27378),o(35318));const a={title:"local"},l=void 0,i={unversionedId:"proto/commands/local",id:"proto/commands/local",title:"local",description:"The proto local command will set the local version (or alias) of a tool by",source:"@site/docs/proto/commands/local.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/local",permalink:"/docs/proto/commands/local",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/local.mdx",tags:[],version:"current",frontMatter:{title:"local"},sidebar:"proto",previous:{title:"list-remote",permalink:"/docs/proto/commands/list-remote"},next:{title:"plugins",permalink:"/docs/proto/commands/plugins"}},c={},p=[{value:"Arguments",id:"arguments",level:3}],s={toc:p};function m(e){let{components:t,...o}=e;return(0,n.kt)("wrapper",(0,r.Z)({},s,o,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("p",null,"The ",(0,n.kt)("inlineCode",{parentName:"p"},"proto local ")," command will set the local version (or alias) of a tool by\ncreating a ",(0,n.kt)("inlineCode",{parentName:"p"},".prototools")," file (if it does not exist) in the current working directory with the\nappropriate tool and version. This version will be used when attempting to\n",(0,n.kt)("a",{parentName:"p",href:"../detection"},"detect a version"),"."),(0,n.kt)("pre",null,(0,n.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto local go 1.20\n")),(0,n.kt)("blockquote",null,(0,n.kt)("p",{parentName:"blockquote"},(0,n.kt)("a",{parentName:"p",href:"../config"},"Learn more about the ",(0,n.kt)("inlineCode",{parentName:"a"},".prototools")," configuration file!"))),(0,n.kt)("h3",{id:"arguments"},"Arguments"),(0,n.kt)("ul",null,(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Type of tool."),(0,n.kt)("li",{parentName:"ul"},(0,n.kt)("inlineCode",{parentName:"li"},"")," - Version of tool.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/92999a1c.6ec73028.js b/assets/js/92999a1c.e94f2ac7.js similarity index 79% rename from assets/js/92999a1c.6ec73028.js rename to assets/js/92999a1c.e94f2ac7.js index d60b210b3ab..c4868b809c5 100644 --- a/assets/js/92999a1c.6ec73028.js +++ b/assets/js/92999a1c.e94f2ac7.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8442],{15310:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/3","page":3,"postsPerPage":10,"totalPages":5,"totalCount":46,"previousPage":"/blog/page/2","nextPage":"/blog/page/4","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8442],{15310:e=>{e.exports=JSON.parse('{"permalink":"/blog/page/3","page":3,"postsPerPage":10,"totalPages":5,"totalCount":47,"previousPage":"/blog/page/2","nextPage":"/blog/page/4","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.021d95fc.js b/assets/js/935f2afb.021d95fc.js deleted file mode 100644 index cf78aa26d0f..00000000000 --- a/assets/js/935f2afb.021d95fc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"Introduction","href":"/docs/","docId":"intro"},{"type":"category","label":"How it works","collapsed":true,"collapsible":true,"items":[{"type":"link","label":"Languages","href":"/docs/how-it-works/languages","docId":"how-it-works/languages"},{"type":"link","label":"Project graph","href":"/docs/how-it-works/project-graph","docId":"how-it-works/project-graph"},{"type":"link","label":"Dependency graph","href":"/docs/how-it-works/dep-graph","docId":"how-it-works/dep-graph"}],"href":"/docs/how-it-works"},{"type":"category","label":"Getting started","collapsed":false,"collapsible":true,"items":[{"type":"link","label":"Install moon","href":"/docs/install","docId":"install"},{"type":"link","label":"Setup workspace","href":"/docs/setup-workspace","docId":"setup-workspace"},{"type":"link","label":"Setup toolchain","href":"/docs/setup-toolchain","docId":"setup-toolchain"},{"type":"link","label":"Create a project","href":"/docs/create-project","docId":"create-project"},{"type":"link","label":"Create a task","href":"/docs/create-task","docId":"create-task"},{"type":"link","label":"Run a task","href":"/docs/run-task","docId":"run-task"},{"type":"link","label":"Migrate to moon","href":"/docs/migrate-to-moon","docId":"migrate-to-moon"}]},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Cache","href":"/docs/concepts/cache","docId":"concepts/cache"},{"type":"link","label":"File groups","href":"/docs/concepts/file-group","docId":"concepts/file-group"},{"type":"link","label":"File patterns","href":"/docs/concepts/file-pattern","docId":"concepts/file-pattern"},{"type":"link","label":"Query language","href":"/docs/concepts/query-lang","docId":"concepts/query-lang"},{"type":"link","label":"Projects","href":"/docs/concepts/project","docId":"concepts/project"},{"type":"link","label":"Targets","href":"/docs/concepts/target","docId":"concepts/target"},{"type":"link","label":"Tasks","href":"/docs/concepts/task","docId":"concepts/task"},{"type":"link","label":"Task inheritance","href":"/docs/concepts/task-inheritance","docId":"concepts/task-inheritance"},{"type":"link","label":"Tokens","href":"/docs/concepts/token","docId":"concepts/token"},{"type":"link","label":"Toolchain","href":"/docs/concepts/toolchain","docId":"concepts/toolchain"},{"type":"link","label":"Workspace","href":"/docs/concepts/workspace","docId":"concepts/workspace"}],"collapsed":true,"collapsible":true,"href":"/docs/concepts"},{"type":"category","label":"Config files","items":[{"type":"link","label":".moon/workspace.yml","href":"/docs/config/workspace","docId":"config/workspace"},{"type":"link","label":".moon/toolchain.yml","href":"/docs/config/toolchain","docId":"config/toolchain"},{"type":"link","label":".moon/tasks...","href":"/docs/config/tasks","docId":"config/tasks"},{"type":"link","label":"moon.yml","href":"/docs/config/project","docId":"config/project"},{"type":"link","label":"template.yml","href":"/docs/config/template","docId":"config/template"}],"collapsed":true,"collapsible":true,"href":"/docs/config"},{"type":"category","label":"Editors","items":[{"type":"link","label":"VS Code","href":"/docs/editors/vscode","docId":"editors/vscode"}],"collapsed":true,"collapsible":true,"href":"/docs/editors"},{"type":"category","label":"Commands","items":[{"type":"link","label":"Overview","href":"/docs/commands/overview","docId":"commands/overview"},{"type":"link","label":"bin","href":"/docs/commands/bin","docId":"commands/bin"},{"type":"link","label":"ci","href":"/docs/commands/ci","docId":"commands/ci"},{"type":"link","label":"check","href":"/docs/commands/check","docId":"commands/check"},{"type":"link","label":"clean","href":"/docs/commands/clean","docId":"commands/clean"},{"type":"link","label":"completions","href":"/docs/commands/completions","docId":"commands/completions"},{"type":"link","label":"dep-graph","href":"/docs/commands/dep-graph","docId":"commands/dep-graph"},{"type":"category","label":"docker","items":[{"type":"link","label":"prune","href":"/docs/commands/docker/prune","docId":"commands/docker/prune"},{"type":"link","label":"scaffold","href":"/docs/commands/docker/scaffold","docId":"commands/docker/scaffold"},{"type":"link","label":"setup","href":"/docs/commands/docker/setup","docId":"commands/docker/setup"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/docker"},{"type":"link","label":"generate","href":"/docs/commands/generate","docId":"commands/generate"},{"type":"link","label":"init","href":"/docs/commands/init","docId":"commands/init"},{"type":"category","label":"migrate","items":[{"type":"link","label":"from-package-json","href":"/docs/commands/migrate/from-package-json","docId":"commands/migrate/from-package-json"},{"type":"link","label":"from-turborepo","href":"/docs/commands/migrate/from-turborepo","docId":"commands/migrate/from-turborepo"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/migrate"},{"type":"link","label":"project","href":"/docs/commands/project","docId":"commands/project"},{"type":"link","label":"project-graph","href":"/docs/commands/project-graph","docId":"commands/project-graph"},{"type":"category","label":"query","items":[{"type":"link","label":"hash","href":"/docs/commands/query/hash","docId":"commands/query/hash"},{"type":"link","label":"hash-diff","href":"/docs/commands/query/hash-diff","docId":"commands/query/hash-diff"},{"type":"link","label":"projects","href":"/docs/commands/query/projects","docId":"commands/query/projects"},{"type":"link","label":"tasks","href":"/docs/commands/query/tasks","docId":"commands/query/tasks"},{"type":"link","label":"touched-files","href":"/docs/commands/query/touched-files","docId":"commands/query/touched-files"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/query"},{"type":"link","label":"run","href":"/docs/commands/run","docId":"commands/run"},{"type":"link","label":"setup","href":"/docs/commands/setup","docId":"commands/setup"},{"type":"category","label":"sync","items":[{"type":"link","label":"codeowners","href":"/docs/commands/sync/codeowners","docId":"commands/sync/codeowners"},{"type":"link","label":"hooks","href":"/docs/commands/sync/hooks","docId":"commands/sync/hooks"},{"type":"link","label":"projects","href":"/docs/commands/sync/projects","docId":"commands/sync/projects"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/sync"},{"type":"link","label":"task","href":"/docs/commands/task","docId":"commands/task"},{"type":"link","label":"teardown","href":"/docs/commands/teardown","docId":"commands/teardown"},{"type":"link","label":"upgrade","href":"/docs/commands/upgrade","docId":"commands/upgrade"}],"collapsed":true,"collapsible":true,"href":"/docs/commands"},{"type":"link","label":"Cheat sheet","href":"/docs/cheat-sheet","docId":"cheat-sheet"},{"type":"link","label":"Feature comparison","href":"/docs/comparison","docId":"comparison"},{"type":"link","label":"Terminology","href":"/docs/terminology","docId":"terminology"},{"type":"link","label":"FAQ","href":"/docs/faq","docId":"faq"},{"type":"link","label":"Changelog","href":"https://github.com/moonrepo/moon/releases"}],"guides":[{"type":"link","label":"Continuous integration (CI)","href":"/docs/guides/ci","docId":"guides/ci"},{"type":"link","label":"Code generation","href":"/docs/guides/codegen","docId":"guides/codegen"},{"type":"link","label":"Code owners","href":"/docs/guides/codeowners","docId":"guides/codeowners"},{"type":"link","label":"Debugging a task","href":"/docs/guides/debug-task","docId":"guides/debug-task"},{"type":"link","label":"Docker usage","href":"/docs/guides/docker","docId":"guides/docker"},{"type":"link","label":"Offline mode","href":"/docs/guides/offline-mode","docId":"guides/offline-mode"},{"type":"link","label":"Open source usage","href":"/docs/guides/open-source","docId":"guides/open-source"},{"type":"link","label":"Remote caching","href":"/docs/guides/remote-cache","docId":"guides/remote-cache"},{"type":"link","label":"Root-level project","href":"/docs/guides/root-project","docId":"guides/root-project"},{"type":"link","label":"Sharing workspace configuration","href":"/docs/guides/sharing-config","docId":"guides/sharing-config"},{"type":"link","label":"Webhooks (experimental)","href":"/docs/guides/webhooks","docId":"guides/webhooks"},{"type":"link","label":"VCS hooks","href":"/docs/guides/vcs-hooks","docId":"guides/vcs-hooks"},{"type":"html","value":"
","defaultStyle":true},{"type":"category","label":"JavaScript","collapsed":false,"items":[{"type":"link","label":"Deno handbook","href":"/docs/guides/javascript/deno-handbook","docId":"guides/javascript/deno-handbook"},{"type":"link","label":"Node.js handbook","href":"/docs/guides/javascript/node-handbook","docId":"guides/javascript/node-handbook"},{"type":"link","label":"Task profiling","href":"/docs/guides/profile","docId":"guides/profile"},{"type":"link","label":"TypeScript project references","href":"/docs/guides/javascript/typescript-project-refs","docId":"guides/javascript/typescript-project-refs"},{"type":"category","label":"Examples","collapsed":true,"collapsible":true,"items":[{"type":"link","label":"Angular","href":"/docs/guides/examples/angular","docId":"guides/examples/angular"},{"type":"link","label":"Astro","href":"/docs/guides/examples/astro","docId":"guides/examples/astro"},{"type":"link","label":"ESLint","href":"/docs/guides/examples/eslint","docId":"guides/examples/eslint"},{"type":"link","label":"Jest","href":"/docs/guides/examples/jest","docId":"guides/examples/jest"},{"type":"link","label":"NestJS","href":"/docs/guides/examples/nest","docId":"guides/examples/nest"},{"type":"link","label":"Next.js","href":"/docs/guides/examples/next","docId":"guides/examples/next"},{"type":"link","label":"Nuxt","href":"/docs/guides/examples/nuxt","docId":"guides/examples/nuxt"},{"type":"link","label":"Packemon","href":"/docs/guides/examples/packemon","docId":"guides/examples/packemon"},{"type":"link","label":"Prettier","href":"/docs/guides/examples/prettier","docId":"guides/examples/prettier"},{"type":"link","label":"React","href":"/docs/guides/examples/react","docId":"guides/examples/react"},{"type":"link","label":"Remix","href":"/docs/guides/examples/remix","docId":"guides/examples/remix"},{"type":"link","label":"Solid","href":"/docs/guides/examples/solid","docId":"guides/examples/solid"},{"type":"link","label":"Storybook","href":"/docs/guides/examples/storybook","docId":"guides/examples/storybook"},{"type":"link","label":"SvelteKit","href":"/docs/guides/examples/sveltekit","docId":"guides/examples/sveltekit"},{"type":"link","label":"TypeScript","href":"/docs/guides/examples/typescript","docId":"guides/examples/typescript"},{"type":"link","label":"Vite & Vitest","href":"/docs/guides/examples/vite","docId":"guides/examples/vite"},{"type":"link","label":"Vue","href":"/docs/guides/examples/vue","docId":"guides/examples/vue"}],"href":"/docs/guides/node/examples"}],"collapsible":true},{"type":"html","value":"
","defaultStyle":true},{"type":"category","label":"Rust","collapsed":false,"items":[{"type":"link","label":"Handbook","href":"/docs/guides/rust/handbook","docId":"guides/rust/handbook"}],"collapsible":true}],"proto":[{"type":"link","label":"What is proto?","href":"/docs/proto/","docId":"proto/index"},{"type":"link","label":"Install proto","href":"/docs/proto/install","docId":"proto/install"},{"type":"link","label":"Version detection","href":"/docs/proto/detection","docId":"proto/detection"},{"type":"link","label":"Configuration","href":"/docs/proto/config","docId":"proto/config"},{"type":"link","label":"Supported tools","href":"/docs/proto/tools","docId":"proto/tools"},{"type":"category","label":"Plugins","items":[{"type":"link","label":"TOML","href":"/docs/proto/toml-plugin","docId":"proto/toml-plugin"},{"type":"link","label":"WASM (experimental)","href":"/docs/proto/wasm-plugin","docId":"proto/wasm-plugin"}],"collapsed":true,"collapsible":true,"href":"/docs/proto/plugins"},{"type":"category","label":"Commands","items":[{"type":"link","label":"add-plugin","href":"/docs/proto/commands/add-plugin","docId":"proto/commands/add-plugin"},{"type":"link","label":"alias","href":"/docs/proto/commands/alias","docId":"proto/commands/alias"},{"type":"link","label":"bin","href":"/docs/proto/commands/bin","docId":"proto/commands/bin"},{"type":"link","label":"clean","href":"/docs/proto/commands/clean","docId":"proto/commands/clean"},{"type":"link","label":"completions","href":"/docs/proto/commands/completions","docId":"proto/commands/completions"},{"type":"link","label":"global","href":"/docs/proto/commands/global","docId":"proto/commands/global"},{"type":"link","label":"install","href":"/docs/proto/commands/install","docId":"proto/commands/install"},{"type":"link","label":"install-global","href":"/docs/proto/commands/install-global","docId":"proto/commands/install-global"},{"type":"link","label":"list","href":"/docs/proto/commands/list","docId":"proto/commands/list"},{"type":"link","label":"list-global","href":"/docs/proto/commands/list-global","docId":"proto/commands/list-global"},{"type":"link","label":"list-remote","href":"/docs/proto/commands/list-remote","docId":"proto/commands/list-remote"},{"type":"link","label":"local","href":"/docs/proto/commands/local","docId":"proto/commands/local"},{"type":"link","label":"plugins","href":"/docs/proto/commands/plugins","docId":"proto/commands/plugins"},{"type":"link","label":"remove-plugin","href":"/docs/proto/commands/remove-plugin","docId":"proto/commands/remove-plugin"},{"type":"link","label":"run","href":"/docs/proto/commands/run","docId":"proto/commands/run"},{"type":"link","label":"setup","href":"/docs/proto/commands/setup","docId":"proto/commands/setup"},{"type":"link","label":"unalias","href":"/docs/proto/commands/unalias","docId":"proto/commands/unalias"},{"type":"link","label":"uninstall","href":"/docs/proto/commands/uninstall","docId":"proto/commands/uninstall"},{"type":"link","label":"uninstall-global","href":"/docs/proto/commands/uninstall-global","docId":"proto/commands/uninstall-global"},{"type":"link","label":"upgrade","href":"/docs/proto/commands/upgrade","docId":"proto/commands/upgrade"},{"type":"link","label":"use","href":"/docs/proto/commands/use","docId":"proto/commands/use"}],"collapsed":true,"collapsible":true},{"type":"link","label":"FAQ","href":"/docs/proto/faq","docId":"proto/faq"},{"type":"link","label":"Changelog","href":"https://github.com/moonrepo/proto/releases"}]},"docs":{"cheat-sheet":{"id":"cheat-sheet","title":"Cheat sheet","description":"Don\'t have time to read the docs? Here\'s a quick cheat sheet to get you started.","sidebar":"docs"},"commands/bin":{"id":"commands/bin","title":"bin","description":"The moon bin command will return an absolute path to a tool\'s binary within the toolchain.","sidebar":"docs"},"commands/check":{"id":"commands/check","title":"check","description":"The moon check [...projects] (or moon c) command will run all","sidebar":"docs"},"commands/ci":{"id":"commands/ci","title":"ci","description":"The moon ci command is a special command that should be ran in a continuous integration (CI)","sidebar":"docs"},"commands/clean":{"id":"commands/clean","title":"clean","description":"The moon clean command will clean the current workspace by deleting stale cache. For the most","sidebar":"docs"},"commands/completions":{"id":"commands/completions","title":"completions","description":"The moon completions command will generate moon command and argument completions for your current","sidebar":"docs"},"commands/dep-graph":{"id":"commands/dep-graph","title":"dep-graph","description":"The moon dep-graph [target] (or moon dg) command will generate and serve a visual dependency","sidebar":"docs"},"commands/docker/prune":{"id":"commands/docker/prune","title":"docker prune","description":"The moon docker prune command will reduce the overall filesize of the Docker environment by","sidebar":"docs"},"commands/docker/scaffold":{"id":"commands/docker/scaffold","title":"docker scaffold","description":"The moon docker scaffold command creates multiple repository skeletons for use","sidebar":"docs"},"commands/docker/setup":{"id":"commands/docker/setup","title":"docker setup","description":"The moon docker setup command will efficiently install dependencies for focused projects. This is","sidebar":"docs"},"commands/generate":{"id":"commands/generate","title":"generate","description":"The moon generate (or moon g) command will generate code (files and folders) from a","sidebar":"docs"},"commands/init":{"id":"commands/init","title":"init","description":"The moon init [dest] command will initialize moon into a repository and scaffold config files by","sidebar":"docs"},"commands/migrate/from-package-json":{"id":"commands/migrate/from-package-json","title":"migrate from-package-json","description":"Use the moon migrate from-package-json sub-command to migrate a project\'s package.json","sidebar":"docs"},"commands/migrate/from-turborepo":{"id":"commands/migrate/from-turborepo","title":"migrate from-turborepo","description":"Use the moon migrate from-turborepo command to migrate a Turborepo powered repository to moon.","sidebar":"docs"},"commands/overview":{"id":"commands/overview","title":"Overview","description":"The following options are available for all moon commands.","sidebar":"docs"},"commands/project":{"id":"commands/project","title":"project","description":"The moon project (or moon p) command will display all available information about a","sidebar":"docs"},"commands/project-graph":{"id":"commands/project-graph","title":"project-graph","description":"The moon project-graph [name] (or moon pg) command will generate and serve a visual graph of all","sidebar":"docs"},"commands/query/hash":{"id":"commands/query/hash","title":"query hash","description":"Use the moon query hash sub-command to inspect the contents and sources of a generated hash, also","sidebar":"docs"},"commands/query/hash-diff":{"id":"commands/query/hash-diff","title":"query hash-diff","description":"Use the moon query hash-diff sub-command to query the content and source differences between 2","sidebar":"docs"},"commands/query/projects":{"id":"commands/query/projects","title":"query projects","description":"Use the moon query projects sub-command to query information about all projects in the project","sidebar":"docs"},"commands/query/tasks":{"id":"commands/query/tasks","title":"query tasks","description":"Use the moon query tasks sub-command to query task information for all projects in the project","sidebar":"docs"},"commands/query/touched-files":{"id":"commands/query/touched-files","title":"query touched-files","description":"Use the moon query touched-files sub-command to query for a list of touched files (added,","sidebar":"docs"},"commands/run":{"id":"commands/run","title":"run","description":"The moon run (or moon r) command will run one or many targets and all of","sidebar":"docs"},"commands/setup":{"id":"commands/setup","title":"setup","description":"The moon setup command can be used to setup the developer and pipeline environments. It achieves","sidebar":"docs"},"commands/sync/codeowners":{"id":"commands/sync/codeowners","title":"sync codeowners","description":"The moon sync codeowners command will manually sync code owners, by aggregating all owners from","sidebar":"docs"},"commands/sync/hooks":{"id":"commands/sync/hooks","title":"sync hooks","description":"The moon sync hooks command will manually sync hooks for the configured","sidebar":"docs"},"commands/sync/projects":{"id":"commands/sync/projects","title":"sync projects","description":"The moon sync projects command will force sync all projects in the workspace to help achieve a","sidebar":"docs"},"commands/task":{"id":"commands/task","title":"task","description":"The moon task (or moon t) command will display information about a task that has been","sidebar":"docs"},"commands/teardown":{"id":"commands/teardown","title":"teardown","description":"The moon teardown command, as its name infers, will teardown and clean the current environment,","sidebar":"docs"},"commands/upgrade":{"id":"commands/upgrade","title":"upgrade","description":"The moon upgrade command can be used to upgrade your current moon binary (if installed globally)","sidebar":"docs"},"comparison":{"id":"comparison","title":"Feature comparison","description":"The following comparisons are not an exhaustive list of features, and may be inaccurate or out of","sidebar":"docs"},"concepts/cache":{"id":"concepts/cache","title":"Cache","description":"moon\'s able to achieve high performance and blazing speeds by implementing a cache that\'s powered by","sidebar":"docs"},"concepts/file-group":{"id":"concepts/file-group","title":"File groups","description":"File groups are a mechanism for grouping similar types of files within a project using","sidebar":"docs"},"concepts/file-pattern":{"id":"concepts/file-pattern","title":"File patterns","description":"Globs","sidebar":"docs"},"concepts/project":{"id":"concepts/project","title":"Projects","description":"A project is a library, application, package, binary, tool, etc, that contains source files, test","sidebar":"docs"},"concepts/query-lang":{"id":"concepts/query-lang","title":"Query language","description":"moon supports an integrated query language, known as MQL, that can be used to filter and select","sidebar":"docs"},"concepts/target":{"id":"concepts/target","title":"Targets","description":"A target is a compound identifier that pairs a scope to a task, separated by a","sidebar":"docs"},"concepts/task":{"id":"concepts/task","title":"Tasks","description":"Tasks are commands that are ran in the context of a project. Underneath the hood, a","sidebar":"docs"},"concepts/task-inheritance":{"id":"concepts/task-inheritance","title":"Task inheritance","description":"Unlike other task runners that require the same tasks to be repeatedly defined for every project,","sidebar":"docs"},"concepts/token":{"id":"concepts/token","title":"Tokens","description":"Tokens are variables and functions that can be used by command,","sidebar":"docs"},"concepts/toolchain":{"id":"concepts/toolchain","title":"Toolchain","description":"The toolchain is an internal layer for downloading, installing, and managing tools (languages,","sidebar":"docs"},"concepts/workspace":{"id":"concepts/workspace","title":"Workspace","description":"A workspace is a directory that contains projects, manages a toolchain,","sidebar":"docs"},"config/project":{"id":"config/project","title":"moon.yml","description":"The moon.yml configuration file is not required but can be used to define additional metadata","sidebar":"docs"},"config/tasks":{"id":"config/tasks","title":".moon/tasks.yml, .moon/tasks/*.yml","description":"The .moon/tasks.yml file configures file groups and tasks that are inherited by every project in","sidebar":"docs"},"config/template":{"id":"config/template","title":"template.yml","description":"The template.yml file configures metadata and variables for a template,","sidebar":"docs"},"config/toolchain":{"id":"config/toolchain","title":".moon/toolchain.yml","description":"The .moon/toolchain.yml file configures the toolchain and the workspace development environment.","sidebar":"docs"},"config/workspace":{"id":"config/workspace","title":".moon/workspace.yml","description":"The .moon/workspace.yml file configures projects and services in the workspace. This file is","sidebar":"docs"},"create-project":{"id":"create-project","title":"Create a project","description":"With a workspace, we can now house one or many projects,","sidebar":"docs"},"create-task":{"id":"create-task","title":"Create a task","description":"The primary focus of moon is a task runner, and for it to operate in any capacity, it requires tasks","sidebar":"docs"},"editors/vscode":{"id":"editors/vscode","title":"VS Code extension","description":"Enhance your VS Code experience with our integrated moon console! Whether you\'re a fan of the","sidebar":"docs"},"faq":{"id":"faq","title":"FAQ","description":"General","sidebar":"docs"},"guides/ci":{"id":"guides/ci","title":"Continuous integration (CI)","description":"All companies and projects rely on continuous integration (CI) to ensure high quality code and to","sidebar":"guides"},"guides/codegen":{"id":"guides/codegen","title":"Code generation","description":"Code generation provides an easy mechanism for automating common development workflows and file","sidebar":"guides"},"guides/codeowners":{"id":"guides/codeowners","title":"Code owners","description":"Code owners enables companies to define individuals, teams, or groups that are responsible for code","sidebar":"guides"},"guides/debug-task":{"id":"guides/debug-task","title":"Debugging a task","description":"Running tasks is the most common way to interact with moon, so what do you do","sidebar":"guides"},"guides/docker":{"id":"guides/docker","title":"Docker usage","description":"Using Docker to run your applications? Or build your artifacts? No","sidebar":"guides"},"guides/examples/angular":{"id":"guides/examples/angular","title":"Angular example","description":"In this guide, you\'ll learn how to integrate Angular into moon.","sidebar":"guides"},"guides/examples/astro":{"id":"guides/examples/astro","title":"Astro example","description":"In this guide, you\'ll learn how to integrate Astro.","sidebar":"guides"},"guides/examples/eslint":{"id":"guides/examples/eslint","title":"ESLint example","description":"In this guide, you\'ll learn how to integrate ESLint into moon.","sidebar":"guides"},"guides/examples/jest":{"id":"guides/examples/jest","title":"Jest example","description":"In this guide, you\'ll learn how to integrate Jest into moon.","sidebar":"guides"},"guides/examples/nest":{"id":"guides/examples/nest","title":"NestJS example","description":"In this guide, you\'ll learn how to integrate NestJS into moon.","sidebar":"guides"},"guides/examples/next":{"id":"guides/examples/next","title":"Next.js example","description":"In this guide, you\'ll learn how to integrate Next.js into moon.","sidebar":"guides"},"guides/examples/nuxt":{"id":"guides/examples/nuxt","title":"Nuxt example","description":"In this guide, you\'ll learn how to integrate Nuxt v3, a Vue framework,","sidebar":"guides"},"guides/examples/packemon":{"id":"guides/examples/packemon","title":"Packemon example","description":"In this guide, you\'ll learn how to integrate Packemon into moon. Packemon","sidebar":"guides"},"guides/examples/prettier":{"id":"guides/examples/prettier","title":"Prettier example","description":"In this guide, you\'ll learn how to integrate Prettier into moon.","sidebar":"guides"},"guides/examples/react":{"id":"guides/examples/react","title":"React example","description":"React is an application or library concern, and not a build system one, since the bundling of React","sidebar":"guides"},"guides/examples/remix":{"id":"guides/examples/remix","title":"Remix example","description":"In this guide, you\'ll learn how to integrate Remix into moon.","sidebar":"guides"},"guides/examples/solid":{"id":"guides/examples/solid","title":"Solid example","description":"Solid (also known as SolidJS) is a JavaScript framework for building","sidebar":"guides"},"guides/examples/storybook":{"id":"guides/examples/storybook","title":"Storybook example","description":"Storybook is a frontend workshop for building UI components and pages in isolation. Thousands of","sidebar":"guides"},"guides/examples/sveltekit":{"id":"guides/examples/sveltekit","title":"SvelteKit example","description":"SvelteKit is built on Svelte, a UI framework that","sidebar":"guides"},"guides/examples/typescript":{"id":"guides/examples/typescript","title":"TypeScript example","description":"In this guide, you\'ll learn how to integrate TypeScript into moon. We\'ll be","sidebar":"guides"},"guides/examples/vite":{"id":"guides/examples/vite","title":"Vite & Vitest example","description":"In this guide, you\'ll learn how to integrate Vite and","sidebar":"guides"},"guides/examples/vue":{"id":"guides/examples/vue","title":"Vue example","description":"Vue is an application or library concern, and not a build system one, since the bundling of Vue is","sidebar":"guides"},"guides/javascript/deno-handbook":{"id":"guides/javascript/deno-handbook","title":"Deno handbook","description":"Utilizing Deno in a TypeScript based monorepo can be a non-trivial task. With this handbook, we\'ll","sidebar":"guides"},"guides/javascript/node-handbook":{"id":"guides/javascript/node-handbook","title":"Node.js handbook","description":"Utilizing JavaScript (and TypeScript) in a monorepo can be a daunting task, especially when using","sidebar":"guides"},"guides/javascript/typescript-eslint":{"id":"guides/javascript/typescript-eslint","title":"typescript-eslint","description":"ESLint integration"},"guides/javascript/typescript-project-refs":{"id":"guides/javascript/typescript-project-refs","title":"TypeScript project references","description":"The ultimate in-depth guide for using TypeScript in a monorepo effectively!","sidebar":"guides"},"guides/offline-mode":{"id":"guides/offline-mode","title":"Offline mode","description":"moon assumes that an internet connection is always available, as we download and install tools into","sidebar":"guides"},"guides/open-source":{"id":"guides/open-source","title":"Open source usage","description":"Although moon was designed for large monorepos, it can also be used for open source projects,","sidebar":"guides"},"guides/profile":{"id":"guides/profile","title":"Task profiling","description":"Troubleshooting slow or unperformant tasks? Profile and diagnose them with ease!","sidebar":"guides"},"guides/remote-cache":{"id":"guides/remote-cache","title":"Remote caching","description":"Is your CI pipeline running slower than usual? Are you tired of running the same build over and over","sidebar":"guides"},"guides/root-project":{"id":"guides/root-project","title":"Root-level project","description":"Coming from other repositories or task runner, you may be familiar with tasks available at the","sidebar":"guides"},"guides/rust/handbook":{"id":"guides/rust/handbook","title":"Rust handbook","description":"Utilizing Rust in a monorepo is a trivial task, thanks to Cargo, and also moon. With this handbook,","sidebar":"guides"},"guides/sharing-config":{"id":"guides/sharing-config","title":"Sharing workspace configuration","description":"For large companies, open source maintainers, and those that love reusability, more often than not","sidebar":"guides"},"guides/vcs-hooks":{"id":"guides/vcs-hooks","title":"VCS hooks","description":"VCS hooks (most popular with Git) are a","sidebar":"guides"},"guides/webhooks":{"id":"guides/webhooks","title":"Webhooks (experimental)","description":"Looking to gather metrics for your pipelines? Gain insight into run durations and failures? Maybe","sidebar":"guides"},"how-it-works/dep-graph":{"id":"how-it-works/dep-graph","title":"Dependency graph","description":"When you run a task on the command line, we generate a dependency graph","sidebar":"docs"},"how-it-works/languages":{"id":"how-it-works/languages","title":"Languages","description":"Although moon is currently focusing on the JavaScript ecosystem, our long-term vision is to be a","sidebar":"docs"},"how-it-works/project-graph":{"id":"how-it-works/project-graph","title":"Project graph","description":"The project graph is a representation of all configured","sidebar":"docs"},"install":{"id":"install","title":"Install moon","description":"The following guide can be used to install moon and integrate it into an existing repository (with","sidebar":"docs"},"intro":{"id":"intro","title":"Introduction","description":"moonrepo is a productivity platform that aims to eliminate pain points for both developers and","sidebar":"docs"},"migrate-to-moon":{"id":"migrate-to-moon","title":"Migrate to moon","description":"Now that we\'ve talked about the workspace, projects, tasks, and more, we must talk about something","sidebar":"docs"},"proto/commands/add-plugin":{"id":"proto/commands/add-plugin","title":"add-plugin","description":"The proto add-plugin (or proto ap) command will add the provided plugin ID and","sidebar":"proto"},"proto/commands/alias":{"id":"proto/commands/alias","title":"alias","description":"The proto alias (or proto a) command will define a custom alias that","sidebar":"proto"},"proto/commands/bin":{"id":"proto/commands/bin","title":"bin","description":"The proto bin command will return an absolute path to a tool\'s binary within the toolchain.","sidebar":"proto"},"proto/commands/clean":{"id":"proto/commands/clean","title":"clean","description":"The proto clean command can be used to uninstall stale and unused tools or plugins. By default, it","sidebar":"proto"},"proto/commands/completions":{"id":"proto/commands/completions","title":"completions","description":"The proto completions command will generate proto command and argument completions for your","sidebar":"proto"},"proto/commands/global":{"id":"proto/commands/global","title":"global","description":"The proto global command will set the global default version (or alias) of a","sidebar":"proto"},"proto/commands/install":{"id":"proto/commands/install","title":"install","description":"The proto install (or proto i) command will download and install a tool by unpacking","sidebar":"proto"},"proto/commands/install-global":{"id":"proto/commands/install-global","title":"install-global","description":"The proto install-global ... (or proto ig) command will install one or many","sidebar":"proto"},"proto/commands/list":{"id":"proto/commands/list","title":"list","description":"The proto list (or proto ls) command will list installed versions by scanning the","sidebar":"proto"},"proto/commands/list-global":{"id":"proto/commands/list-global","title":"list-global","description":"The proto list-global (or proto lsg) command will list installed global dependencies (and","sidebar":"proto"},"proto/commands/list-remote":{"id":"proto/commands/list-remote","title":"list-remote","description":"The proto list-remote (or proto lsr) command will list available versions by resolving","sidebar":"proto"},"proto/commands/local":{"id":"proto/commands/local","title":"local","description":"The proto local command will set the local version (or alias) of a tool by","sidebar":"proto"},"proto/commands/plugins":{"id":"proto/commands/plugins","title":"plugins","description":"The proto plugins command will list all available and configured plugins. Will load all","sidebar":"proto"},"proto/commands/remove-plugin":{"id":"proto/commands/remove-plugin","title":"remove-plugin","description":"The proto remove-plugin (or proto rp) command will remove the provided plugin ID from to","sidebar":"proto"},"proto/commands/run":{"id":"proto/commands/run","title":"run","description":"The proto run (or proto r) command will run a tool after","sidebar":"proto"},"proto/commands/setup":{"id":"proto/commands/setup","title":"setup","description":"The proto setup command will setup proto in your current shell by modifying an applicable profile","sidebar":"proto"},"proto/commands/unalias":{"id":"proto/commands/unalias","title":"unalias","description":"The proto unalias (or proto ua) command will remove a custom alias for the","sidebar":"proto"},"proto/commands/uninstall":{"id":"proto/commands/uninstall","title":"uninstall","description":"The proto uninstall (or proto ui) command will uninstall and remove a tool from","sidebar":"proto"},"proto/commands/uninstall-global":{"id":"proto/commands/uninstall-global","title":"uninstall-global","description":"The proto uninstall-global ... (or proto ug) command will uninstall one or","sidebar":"proto"},"proto/commands/upgrade":{"id":"proto/commands/upgrade","title":"upgrade","description":"The proto upgrade (or proto up) command can be used to upgrade your current proto binary to the","sidebar":"proto"},"proto/commands/use":{"id":"proto/commands/use","title":"use","description":"The proto use (or proto u) command will download and install all tools and plugins from all","sidebar":"proto"},"proto/config":{"id":"proto/config","title":"Configuration","description":"We support configuration for both projects and users. Both config files are in","sidebar":"proto"},"proto/detection":{"id":"proto/detection","title":"Version detection","description":"The most powerful feature in proto is its contextual version detection, that is triggered with","sidebar":"proto"},"proto/faq":{"id":"proto/faq","title":"FAQ","description":"General","sidebar":"proto"},"proto/index":{"id":"proto/index","title":"What is proto?","description":"proto is a pluggable toolchain manager.","sidebar":"proto"},"proto/install":{"id":"proto/install","title":"Install proto","description":"The following guide can be used to install proto into your environment.","sidebar":"proto"},"proto/plugins":{"id":"proto/plugins","title":"Plugins","description":"proto supports a pluggable architecture as a means for consumers to integrate and manage custom","sidebar":"proto"},"proto/toml-plugin":{"id":"proto/toml-plugin","title":"TOML plugin","description":"The TOML plugin is by design, very simple. It\'s a TOML file that describes a schema for the tool,","sidebar":"proto"},"proto/tools":{"id":"proto/tools","title":"Supported tools","description":"The following tools are supported natively in proto\'s toolchain. Additional tools can be supported","sidebar":"proto"},"proto/wasm-plugin":{"id":"proto/wasm-plugin","title":"WASM plugin (experimental)","description":"Plugins can be written in WebAssembly (WASM), a portable binary format.","sidebar":"proto"},"run-task":{"id":"run-task","title":"Run a task","description":"Even though we\'ve created a task, it\'s not useful unless we run it, which is done","sidebar":"docs"},"setup-toolchain":{"id":"setup-toolchain","title":"Setup toolchain","description":"One of moon\'s most powerful features is the toolchain, which manages and","sidebar":"docs"},"setup-workspace":{"id":"setup-workspace","title":"Setup workspace","description":"Once moon has been installed, we must setup the workspace, which is denoted","sidebar":"docs"},"terminology":{"id":"terminology","title":"Terminology","description":"| Term | Description |","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.cb7542e8.js b/assets/js/935f2afb.cb7542e8.js new file mode 100644 index 00000000000..2cedea7cfc3 --- /dev/null +++ b/assets/js/935f2afb.cb7542e8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"docs":[{"type":"link","label":"Introduction","href":"/docs/","docId":"intro"},{"type":"category","label":"How it works","collapsed":true,"collapsible":true,"items":[{"type":"link","label":"Languages","href":"/docs/how-it-works/languages","docId":"how-it-works/languages"},{"type":"link","label":"Project graph","href":"/docs/how-it-works/project-graph","docId":"how-it-works/project-graph"},{"type":"link","label":"Dependency graph","href":"/docs/how-it-works/dep-graph","docId":"how-it-works/dep-graph"}],"href":"/docs/how-it-works"},{"type":"category","label":"Getting started","collapsed":false,"collapsible":true,"items":[{"type":"link","label":"Install moon","href":"/docs/install","docId":"install"},{"type":"link","label":"Setup workspace","href":"/docs/setup-workspace","docId":"setup-workspace"},{"type":"link","label":"Setup toolchain","href":"/docs/setup-toolchain","docId":"setup-toolchain"},{"type":"link","label":"Create a project","href":"/docs/create-project","docId":"create-project"},{"type":"link","label":"Create a task","href":"/docs/create-task","docId":"create-task"},{"type":"link","label":"Run a task","href":"/docs/run-task","docId":"run-task"},{"type":"link","label":"Migrate to moon","href":"/docs/migrate-to-moon","docId":"migrate-to-moon"}]},{"type":"category","label":"Concepts","items":[{"type":"link","label":"Cache","href":"/docs/concepts/cache","docId":"concepts/cache"},{"type":"link","label":"File groups","href":"/docs/concepts/file-group","docId":"concepts/file-group"},{"type":"link","label":"File patterns","href":"/docs/concepts/file-pattern","docId":"concepts/file-pattern"},{"type":"link","label":"Query language","href":"/docs/concepts/query-lang","docId":"concepts/query-lang"},{"type":"link","label":"Projects","href":"/docs/concepts/project","docId":"concepts/project"},{"type":"link","label":"Targets","href":"/docs/concepts/target","docId":"concepts/target"},{"type":"link","label":"Tasks","href":"/docs/concepts/task","docId":"concepts/task"},{"type":"link","label":"Task inheritance","href":"/docs/concepts/task-inheritance","docId":"concepts/task-inheritance"},{"type":"link","label":"Tokens","href":"/docs/concepts/token","docId":"concepts/token"},{"type":"link","label":"Toolchain","href":"/docs/concepts/toolchain","docId":"concepts/toolchain"},{"type":"link","label":"Workspace","href":"/docs/concepts/workspace","docId":"concepts/workspace"}],"collapsed":true,"collapsible":true,"href":"/docs/concepts"},{"type":"category","label":"Config files","items":[{"type":"link","label":".moon/workspace.yml","href":"/docs/config/workspace","docId":"config/workspace"},{"type":"link","label":".moon/toolchain.yml","href":"/docs/config/toolchain","docId":"config/toolchain"},{"type":"link","label":".moon/tasks...","href":"/docs/config/tasks","docId":"config/tasks"},{"type":"link","label":"moon.yml","href":"/docs/config/project","docId":"config/project"},{"type":"link","label":"template.yml","href":"/docs/config/template","docId":"config/template"}],"collapsed":true,"collapsible":true,"href":"/docs/config"},{"type":"category","label":"Editors","items":[{"type":"link","label":"VS Code","href":"/docs/editors/vscode","docId":"editors/vscode"}],"collapsed":true,"collapsible":true,"href":"/docs/editors"},{"type":"category","label":"Commands","items":[{"type":"link","label":"Overview","href":"/docs/commands/overview","docId":"commands/overview"},{"type":"link","label":"bin","href":"/docs/commands/bin","docId":"commands/bin"},{"type":"link","label":"ci","href":"/docs/commands/ci","docId":"commands/ci"},{"type":"link","label":"check","href":"/docs/commands/check","docId":"commands/check"},{"type":"link","label":"clean","href":"/docs/commands/clean","docId":"commands/clean"},{"type":"link","label":"completions","href":"/docs/commands/completions","docId":"commands/completions"},{"type":"link","label":"dep-graph","href":"/docs/commands/dep-graph","docId":"commands/dep-graph"},{"type":"category","label":"docker","items":[{"type":"link","label":"prune","href":"/docs/commands/docker/prune","docId":"commands/docker/prune"},{"type":"link","label":"scaffold","href":"/docs/commands/docker/scaffold","docId":"commands/docker/scaffold"},{"type":"link","label":"setup","href":"/docs/commands/docker/setup","docId":"commands/docker/setup"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/docker"},{"type":"link","label":"generate","href":"/docs/commands/generate","docId":"commands/generate"},{"type":"link","label":"init","href":"/docs/commands/init","docId":"commands/init"},{"type":"category","label":"migrate","items":[{"type":"link","label":"from-package-json","href":"/docs/commands/migrate/from-package-json","docId":"commands/migrate/from-package-json"},{"type":"link","label":"from-turborepo","href":"/docs/commands/migrate/from-turborepo","docId":"commands/migrate/from-turborepo"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/migrate"},{"type":"link","label":"project","href":"/docs/commands/project","docId":"commands/project"},{"type":"link","label":"project-graph","href":"/docs/commands/project-graph","docId":"commands/project-graph"},{"type":"category","label":"query","items":[{"type":"link","label":"hash","href":"/docs/commands/query/hash","docId":"commands/query/hash"},{"type":"link","label":"hash-diff","href":"/docs/commands/query/hash-diff","docId":"commands/query/hash-diff"},{"type":"link","label":"projects","href":"/docs/commands/query/projects","docId":"commands/query/projects"},{"type":"link","label":"tasks","href":"/docs/commands/query/tasks","docId":"commands/query/tasks"},{"type":"link","label":"touched-files","href":"/docs/commands/query/touched-files","docId":"commands/query/touched-files"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/query"},{"type":"link","label":"run","href":"/docs/commands/run","docId":"commands/run"},{"type":"link","label":"setup","href":"/docs/commands/setup","docId":"commands/setup"},{"type":"category","label":"sync","items":[{"type":"link","label":"codeowners","href":"/docs/commands/sync/codeowners","docId":"commands/sync/codeowners"},{"type":"link","label":"hooks","href":"/docs/commands/sync/hooks","docId":"commands/sync/hooks"},{"type":"link","label":"projects","href":"/docs/commands/sync/projects","docId":"commands/sync/projects"}],"collapsed":true,"collapsible":true,"href":"/docs/commands/sync"},{"type":"link","label":"task","href":"/docs/commands/task","docId":"commands/task"},{"type":"link","label":"teardown","href":"/docs/commands/teardown","docId":"commands/teardown"},{"type":"link","label":"upgrade","href":"/docs/commands/upgrade","docId":"commands/upgrade"}],"collapsed":true,"collapsible":true,"href":"/docs/commands"},{"type":"link","label":"Cheat sheet","href":"/docs/cheat-sheet","docId":"cheat-sheet"},{"type":"link","label":"Feature comparison","href":"/docs/comparison","docId":"comparison"},{"type":"link","label":"Terminology","href":"/docs/terminology","docId":"terminology"},{"type":"link","label":"FAQ","href":"/docs/faq","docId":"faq"},{"type":"link","label":"Changelog","href":"https://github.com/moonrepo/moon/releases"}],"guides":[{"type":"link","label":"Continuous integration (CI)","href":"/docs/guides/ci","docId":"guides/ci"},{"type":"link","label":"Code generation","href":"/docs/guides/codegen","docId":"guides/codegen"},{"type":"link","label":"Code owners","href":"/docs/guides/codeowners","docId":"guides/codeowners"},{"type":"link","label":"Debugging a task","href":"/docs/guides/debug-task","docId":"guides/debug-task"},{"type":"link","label":"Docker usage","href":"/docs/guides/docker","docId":"guides/docker"},{"type":"link","label":"Offline mode","href":"/docs/guides/offline-mode","docId":"guides/offline-mode"},{"type":"link","label":"Open source usage","href":"/docs/guides/open-source","docId":"guides/open-source"},{"type":"link","label":"Remote caching","href":"/docs/guides/remote-cache","docId":"guides/remote-cache"},{"type":"link","label":"Root-level project","href":"/docs/guides/root-project","docId":"guides/root-project"},{"type":"link","label":"Sharing workspace configuration","href":"/docs/guides/sharing-config","docId":"guides/sharing-config"},{"type":"link","label":"Webhooks (experimental)","href":"/docs/guides/webhooks","docId":"guides/webhooks"},{"type":"link","label":"VCS hooks","href":"/docs/guides/vcs-hooks","docId":"guides/vcs-hooks"},{"type":"html","value":"
","defaultStyle":true},{"type":"category","label":"JavaScript","collapsed":false,"items":[{"type":"link","label":"Deno handbook","href":"/docs/guides/javascript/deno-handbook","docId":"guides/javascript/deno-handbook"},{"type":"link","label":"Node.js handbook","href":"/docs/guides/javascript/node-handbook","docId":"guides/javascript/node-handbook"},{"type":"link","label":"Task profiling","href":"/docs/guides/profile","docId":"guides/profile"},{"type":"link","label":"TypeScript project references","href":"/docs/guides/javascript/typescript-project-refs","docId":"guides/javascript/typescript-project-refs"},{"type":"category","label":"Examples","collapsed":true,"collapsible":true,"items":[{"type":"link","label":"Angular","href":"/docs/guides/examples/angular","docId":"guides/examples/angular"},{"type":"link","label":"Astro","href":"/docs/guides/examples/astro","docId":"guides/examples/astro"},{"type":"link","label":"ESLint","href":"/docs/guides/examples/eslint","docId":"guides/examples/eslint"},{"type":"link","label":"Jest","href":"/docs/guides/examples/jest","docId":"guides/examples/jest"},{"type":"link","label":"NestJS","href":"/docs/guides/examples/nest","docId":"guides/examples/nest"},{"type":"link","label":"Next.js","href":"/docs/guides/examples/next","docId":"guides/examples/next"},{"type":"link","label":"Nuxt","href":"/docs/guides/examples/nuxt","docId":"guides/examples/nuxt"},{"type":"link","label":"Packemon","href":"/docs/guides/examples/packemon","docId":"guides/examples/packemon"},{"type":"link","label":"Prettier","href":"/docs/guides/examples/prettier","docId":"guides/examples/prettier"},{"type":"link","label":"React","href":"/docs/guides/examples/react","docId":"guides/examples/react"},{"type":"link","label":"Remix","href":"/docs/guides/examples/remix","docId":"guides/examples/remix"},{"type":"link","label":"Solid","href":"/docs/guides/examples/solid","docId":"guides/examples/solid"},{"type":"link","label":"Storybook","href":"/docs/guides/examples/storybook","docId":"guides/examples/storybook"},{"type":"link","label":"SvelteKit","href":"/docs/guides/examples/sveltekit","docId":"guides/examples/sveltekit"},{"type":"link","label":"TypeScript","href":"/docs/guides/examples/typescript","docId":"guides/examples/typescript"},{"type":"link","label":"Vite & Vitest","href":"/docs/guides/examples/vite","docId":"guides/examples/vite"},{"type":"link","label":"Vue","href":"/docs/guides/examples/vue","docId":"guides/examples/vue"}],"href":"/docs/guides/node/examples"}],"collapsible":true},{"type":"html","value":"
","defaultStyle":true},{"type":"category","label":"Rust","collapsed":false,"items":[{"type":"link","label":"Handbook","href":"/docs/guides/rust/handbook","docId":"guides/rust/handbook"}],"collapsible":true}],"proto":[{"type":"link","label":"What is proto?","href":"/docs/proto/","docId":"proto/index"},{"type":"link","label":"Install proto","href":"/docs/proto/install","docId":"proto/install"},{"type":"link","label":"Version detection","href":"/docs/proto/detection","docId":"proto/detection"},{"type":"link","label":"Configuration","href":"/docs/proto/config","docId":"proto/config"},{"type":"link","label":"Supported tools","href":"/docs/proto/tools","docId":"proto/tools"},{"type":"category","label":"Plugins","items":[{"type":"link","label":"TOML","href":"/docs/proto/toml-plugin","docId":"proto/toml-plugin"},{"type":"link","label":"WASM","href":"/docs/proto/wasm-plugin","docId":"proto/wasm-plugin"}],"collapsed":true,"collapsible":true,"href":"/docs/proto/plugins"},{"type":"category","label":"Commands","items":[{"type":"link","label":"add-plugin","href":"/docs/proto/commands/add-plugin","docId":"proto/commands/add-plugin"},{"type":"link","label":"alias","href":"/docs/proto/commands/alias","docId":"proto/commands/alias"},{"type":"link","label":"bin","href":"/docs/proto/commands/bin","docId":"proto/commands/bin"},{"type":"link","label":"clean","href":"/docs/proto/commands/clean","docId":"proto/commands/clean"},{"type":"link","label":"completions","href":"/docs/proto/commands/completions","docId":"proto/commands/completions"},{"type":"link","label":"global","href":"/docs/proto/commands/global","docId":"proto/commands/global"},{"type":"link","label":"install","href":"/docs/proto/commands/install","docId":"proto/commands/install"},{"type":"link","label":"install-global","href":"/docs/proto/commands/install-global","docId":"proto/commands/install-global"},{"type":"link","label":"list","href":"/docs/proto/commands/list","docId":"proto/commands/list"},{"type":"link","label":"list-global","href":"/docs/proto/commands/list-global","docId":"proto/commands/list-global"},{"type":"link","label":"list-remote","href":"/docs/proto/commands/list-remote","docId":"proto/commands/list-remote"},{"type":"link","label":"local","href":"/docs/proto/commands/local","docId":"proto/commands/local"},{"type":"link","label":"plugins","href":"/docs/proto/commands/plugins","docId":"proto/commands/plugins"},{"type":"link","label":"remove-plugin","href":"/docs/proto/commands/remove-plugin","docId":"proto/commands/remove-plugin"},{"type":"link","label":"run","href":"/docs/proto/commands/run","docId":"proto/commands/run"},{"type":"link","label":"setup","href":"/docs/proto/commands/setup","docId":"proto/commands/setup"},{"type":"link","label":"unalias","href":"/docs/proto/commands/unalias","docId":"proto/commands/unalias"},{"type":"link","label":"uninstall","href":"/docs/proto/commands/uninstall","docId":"proto/commands/uninstall"},{"type":"link","label":"uninstall-global","href":"/docs/proto/commands/uninstall-global","docId":"proto/commands/uninstall-global"},{"type":"link","label":"upgrade","href":"/docs/proto/commands/upgrade","docId":"proto/commands/upgrade"},{"type":"link","label":"use","href":"/docs/proto/commands/use","docId":"proto/commands/use"}],"collapsed":true,"collapsible":true},{"type":"link","label":"FAQ","href":"/docs/proto/faq","docId":"proto/faq"},{"type":"link","label":"Changelog","href":"https://github.com/moonrepo/proto/releases"}]},"docs":{"cheat-sheet":{"id":"cheat-sheet","title":"Cheat sheet","description":"Don\'t have time to read the docs? Here\'s a quick cheat sheet to get you started.","sidebar":"docs"},"commands/bin":{"id":"commands/bin","title":"bin","description":"The moon bin command will return an absolute path to a tool\'s binary within the toolchain.","sidebar":"docs"},"commands/check":{"id":"commands/check","title":"check","description":"The moon check [...projects] (or moon c) command will run all","sidebar":"docs"},"commands/ci":{"id":"commands/ci","title":"ci","description":"The moon ci command is a special command that should be ran in a continuous integration (CI)","sidebar":"docs"},"commands/clean":{"id":"commands/clean","title":"clean","description":"The moon clean command will clean the current workspace by deleting stale cache. For the most","sidebar":"docs"},"commands/completions":{"id":"commands/completions","title":"completions","description":"The moon completions command will generate moon command and argument completions for your current","sidebar":"docs"},"commands/dep-graph":{"id":"commands/dep-graph","title":"dep-graph","description":"The moon dep-graph [target] (or moon dg) command will generate and serve a visual dependency","sidebar":"docs"},"commands/docker/prune":{"id":"commands/docker/prune","title":"docker prune","description":"The moon docker prune command will reduce the overall filesize of the Docker environment by","sidebar":"docs"},"commands/docker/scaffold":{"id":"commands/docker/scaffold","title":"docker scaffold","description":"The moon docker scaffold command creates multiple repository skeletons for use","sidebar":"docs"},"commands/docker/setup":{"id":"commands/docker/setup","title":"docker setup","description":"The moon docker setup command will efficiently install dependencies for focused projects. This is","sidebar":"docs"},"commands/generate":{"id":"commands/generate","title":"generate","description":"The moon generate (or moon g) command will generate code (files and folders) from a","sidebar":"docs"},"commands/init":{"id":"commands/init","title":"init","description":"The moon init [dest] command will initialize moon into a repository and scaffold config files by","sidebar":"docs"},"commands/migrate/from-package-json":{"id":"commands/migrate/from-package-json","title":"migrate from-package-json","description":"Use the moon migrate from-package-json sub-command to migrate a project\'s package.json","sidebar":"docs"},"commands/migrate/from-turborepo":{"id":"commands/migrate/from-turborepo","title":"migrate from-turborepo","description":"Use the moon migrate from-turborepo command to migrate a Turborepo powered repository to moon.","sidebar":"docs"},"commands/overview":{"id":"commands/overview","title":"Overview","description":"The following options are available for all moon commands.","sidebar":"docs"},"commands/project":{"id":"commands/project","title":"project","description":"The moon project (or moon p) command will display all available information about a","sidebar":"docs"},"commands/project-graph":{"id":"commands/project-graph","title":"project-graph","description":"The moon project-graph [name] (or moon pg) command will generate and serve a visual graph of all","sidebar":"docs"},"commands/query/hash":{"id":"commands/query/hash","title":"query hash","description":"Use the moon query hash sub-command to inspect the contents and sources of a generated hash, also","sidebar":"docs"},"commands/query/hash-diff":{"id":"commands/query/hash-diff","title":"query hash-diff","description":"Use the moon query hash-diff sub-command to query the content and source differences between 2","sidebar":"docs"},"commands/query/projects":{"id":"commands/query/projects","title":"query projects","description":"Use the moon query projects sub-command to query information about all projects in the project","sidebar":"docs"},"commands/query/tasks":{"id":"commands/query/tasks","title":"query tasks","description":"Use the moon query tasks sub-command to query task information for all projects in the project","sidebar":"docs"},"commands/query/touched-files":{"id":"commands/query/touched-files","title":"query touched-files","description":"Use the moon query touched-files sub-command to query for a list of touched files (added,","sidebar":"docs"},"commands/run":{"id":"commands/run","title":"run","description":"The moon run (or moon r) command will run one or many targets and all of","sidebar":"docs"},"commands/setup":{"id":"commands/setup","title":"setup","description":"The moon setup command can be used to setup the developer and pipeline environments. It achieves","sidebar":"docs"},"commands/sync/codeowners":{"id":"commands/sync/codeowners","title":"sync codeowners","description":"The moon sync codeowners command will manually sync code owners, by aggregating all owners from","sidebar":"docs"},"commands/sync/hooks":{"id":"commands/sync/hooks","title":"sync hooks","description":"The moon sync hooks command will manually sync hooks for the configured","sidebar":"docs"},"commands/sync/projects":{"id":"commands/sync/projects","title":"sync projects","description":"The moon sync projects command will force sync all projects in the workspace to help achieve a","sidebar":"docs"},"commands/task":{"id":"commands/task","title":"task","description":"The moon task (or moon t) command will display information about a task that has been","sidebar":"docs"},"commands/teardown":{"id":"commands/teardown","title":"teardown","description":"The moon teardown command, as its name infers, will teardown and clean the current environment,","sidebar":"docs"},"commands/upgrade":{"id":"commands/upgrade","title":"upgrade","description":"The moon upgrade command can be used to upgrade your current moon binary (if installed globally)","sidebar":"docs"},"comparison":{"id":"comparison","title":"Feature comparison","description":"The following comparisons are not an exhaustive list of features, and may be inaccurate or out of","sidebar":"docs"},"concepts/cache":{"id":"concepts/cache","title":"Cache","description":"moon\'s able to achieve high performance and blazing speeds by implementing a cache that\'s powered by","sidebar":"docs"},"concepts/file-group":{"id":"concepts/file-group","title":"File groups","description":"File groups are a mechanism for grouping similar types of files within a project using","sidebar":"docs"},"concepts/file-pattern":{"id":"concepts/file-pattern","title":"File patterns","description":"Globs","sidebar":"docs"},"concepts/project":{"id":"concepts/project","title":"Projects","description":"A project is a library, application, package, binary, tool, etc, that contains source files, test","sidebar":"docs"},"concepts/query-lang":{"id":"concepts/query-lang","title":"Query language","description":"moon supports an integrated query language, known as MQL, that can be used to filter and select","sidebar":"docs"},"concepts/target":{"id":"concepts/target","title":"Targets","description":"A target is a compound identifier that pairs a scope to a task, separated by a","sidebar":"docs"},"concepts/task":{"id":"concepts/task","title":"Tasks","description":"Tasks are commands that are ran in the context of a project. Underneath the hood, a","sidebar":"docs"},"concepts/task-inheritance":{"id":"concepts/task-inheritance","title":"Task inheritance","description":"Unlike other task runners that require the same tasks to be repeatedly defined for every project,","sidebar":"docs"},"concepts/token":{"id":"concepts/token","title":"Tokens","description":"Tokens are variables and functions that can be used by command,","sidebar":"docs"},"concepts/toolchain":{"id":"concepts/toolchain","title":"Toolchain","description":"The toolchain is an internal layer for downloading, installing, and managing tools (languages,","sidebar":"docs"},"concepts/workspace":{"id":"concepts/workspace","title":"Workspace","description":"A workspace is a directory that contains projects, manages a toolchain,","sidebar":"docs"},"config/project":{"id":"config/project","title":"moon.yml","description":"The moon.yml configuration file is not required but can be used to define additional metadata","sidebar":"docs"},"config/tasks":{"id":"config/tasks","title":".moon/tasks.yml, .moon/tasks/*.yml","description":"The .moon/tasks.yml file configures file groups and tasks that are inherited by every project in","sidebar":"docs"},"config/template":{"id":"config/template","title":"template.yml","description":"The template.yml file configures metadata and variables for a template,","sidebar":"docs"},"config/toolchain":{"id":"config/toolchain","title":".moon/toolchain.yml","description":"The .moon/toolchain.yml file configures the toolchain and the workspace development environment.","sidebar":"docs"},"config/workspace":{"id":"config/workspace","title":".moon/workspace.yml","description":"The .moon/workspace.yml file configures projects and services in the workspace. This file is","sidebar":"docs"},"create-project":{"id":"create-project","title":"Create a project","description":"With a workspace, we can now house one or many projects,","sidebar":"docs"},"create-task":{"id":"create-task","title":"Create a task","description":"The primary focus of moon is a task runner, and for it to operate in any capacity, it requires tasks","sidebar":"docs"},"editors/vscode":{"id":"editors/vscode","title":"VS Code extension","description":"Enhance your VS Code experience with our integrated moon console! Whether you\'re a fan of the","sidebar":"docs"},"faq":{"id":"faq","title":"FAQ","description":"General","sidebar":"docs"},"guides/ci":{"id":"guides/ci","title":"Continuous integration (CI)","description":"All companies and projects rely on continuous integration (CI) to ensure high quality code and to","sidebar":"guides"},"guides/codegen":{"id":"guides/codegen","title":"Code generation","description":"Code generation provides an easy mechanism for automating common development workflows and file","sidebar":"guides"},"guides/codeowners":{"id":"guides/codeowners","title":"Code owners","description":"Code owners enables companies to define individuals, teams, or groups that are responsible for code","sidebar":"guides"},"guides/debug-task":{"id":"guides/debug-task","title":"Debugging a task","description":"Running tasks is the most common way to interact with moon, so what do you do","sidebar":"guides"},"guides/docker":{"id":"guides/docker","title":"Docker usage","description":"Using Docker to run your applications? Or build your artifacts? No","sidebar":"guides"},"guides/examples/angular":{"id":"guides/examples/angular","title":"Angular example","description":"In this guide, you\'ll learn how to integrate Angular into moon.","sidebar":"guides"},"guides/examples/astro":{"id":"guides/examples/astro","title":"Astro example","description":"In this guide, you\'ll learn how to integrate Astro.","sidebar":"guides"},"guides/examples/eslint":{"id":"guides/examples/eslint","title":"ESLint example","description":"In this guide, you\'ll learn how to integrate ESLint into moon.","sidebar":"guides"},"guides/examples/jest":{"id":"guides/examples/jest","title":"Jest example","description":"In this guide, you\'ll learn how to integrate Jest into moon.","sidebar":"guides"},"guides/examples/nest":{"id":"guides/examples/nest","title":"NestJS example","description":"In this guide, you\'ll learn how to integrate NestJS into moon.","sidebar":"guides"},"guides/examples/next":{"id":"guides/examples/next","title":"Next.js example","description":"In this guide, you\'ll learn how to integrate Next.js into moon.","sidebar":"guides"},"guides/examples/nuxt":{"id":"guides/examples/nuxt","title":"Nuxt example","description":"In this guide, you\'ll learn how to integrate Nuxt v3, a Vue framework,","sidebar":"guides"},"guides/examples/packemon":{"id":"guides/examples/packemon","title":"Packemon example","description":"In this guide, you\'ll learn how to integrate Packemon into moon. Packemon","sidebar":"guides"},"guides/examples/prettier":{"id":"guides/examples/prettier","title":"Prettier example","description":"In this guide, you\'ll learn how to integrate Prettier into moon.","sidebar":"guides"},"guides/examples/react":{"id":"guides/examples/react","title":"React example","description":"React is an application or library concern, and not a build system one, since the bundling of React","sidebar":"guides"},"guides/examples/remix":{"id":"guides/examples/remix","title":"Remix example","description":"In this guide, you\'ll learn how to integrate Remix into moon.","sidebar":"guides"},"guides/examples/solid":{"id":"guides/examples/solid","title":"Solid example","description":"Solid (also known as SolidJS) is a JavaScript framework for building","sidebar":"guides"},"guides/examples/storybook":{"id":"guides/examples/storybook","title":"Storybook example","description":"Storybook is a frontend workshop for building UI components and pages in isolation. Thousands of","sidebar":"guides"},"guides/examples/sveltekit":{"id":"guides/examples/sveltekit","title":"SvelteKit example","description":"SvelteKit is built on Svelte, a UI framework that","sidebar":"guides"},"guides/examples/typescript":{"id":"guides/examples/typescript","title":"TypeScript example","description":"In this guide, you\'ll learn how to integrate TypeScript into moon. We\'ll be","sidebar":"guides"},"guides/examples/vite":{"id":"guides/examples/vite","title":"Vite & Vitest example","description":"In this guide, you\'ll learn how to integrate Vite and","sidebar":"guides"},"guides/examples/vue":{"id":"guides/examples/vue","title":"Vue example","description":"Vue is an application or library concern, and not a build system one, since the bundling of Vue is","sidebar":"guides"},"guides/javascript/deno-handbook":{"id":"guides/javascript/deno-handbook","title":"Deno handbook","description":"Utilizing Deno in a TypeScript based monorepo can be a non-trivial task. With this handbook, we\'ll","sidebar":"guides"},"guides/javascript/node-handbook":{"id":"guides/javascript/node-handbook","title":"Node.js handbook","description":"Utilizing JavaScript (and TypeScript) in a monorepo can be a daunting task, especially when using","sidebar":"guides"},"guides/javascript/typescript-eslint":{"id":"guides/javascript/typescript-eslint","title":"typescript-eslint","description":"ESLint integration"},"guides/javascript/typescript-project-refs":{"id":"guides/javascript/typescript-project-refs","title":"TypeScript project references","description":"The ultimate in-depth guide for using TypeScript in a monorepo effectively!","sidebar":"guides"},"guides/offline-mode":{"id":"guides/offline-mode","title":"Offline mode","description":"moon assumes that an internet connection is always available, as we download and install tools into","sidebar":"guides"},"guides/open-source":{"id":"guides/open-source","title":"Open source usage","description":"Although moon was designed for large monorepos, it can also be used for open source projects,","sidebar":"guides"},"guides/profile":{"id":"guides/profile","title":"Task profiling","description":"Troubleshooting slow or unperformant tasks? Profile and diagnose them with ease!","sidebar":"guides"},"guides/remote-cache":{"id":"guides/remote-cache","title":"Remote caching","description":"Is your CI pipeline running slower than usual? Are you tired of running the same build over and over","sidebar":"guides"},"guides/root-project":{"id":"guides/root-project","title":"Root-level project","description":"Coming from other repositories or task runner, you may be familiar with tasks available at the","sidebar":"guides"},"guides/rust/handbook":{"id":"guides/rust/handbook","title":"Rust handbook","description":"Utilizing Rust in a monorepo is a trivial task, thanks to Cargo, and also moon. With this handbook,","sidebar":"guides"},"guides/sharing-config":{"id":"guides/sharing-config","title":"Sharing workspace configuration","description":"For large companies, open source maintainers, and those that love reusability, more often than not","sidebar":"guides"},"guides/vcs-hooks":{"id":"guides/vcs-hooks","title":"VCS hooks","description":"VCS hooks (most popular with Git) are a","sidebar":"guides"},"guides/webhooks":{"id":"guides/webhooks","title":"Webhooks (experimental)","description":"Looking to gather metrics for your pipelines? Gain insight into run durations and failures? Maybe","sidebar":"guides"},"how-it-works/dep-graph":{"id":"how-it-works/dep-graph","title":"Dependency graph","description":"When you run a task on the command line, we generate a dependency graph","sidebar":"docs"},"how-it-works/languages":{"id":"how-it-works/languages","title":"Languages","description":"Although moon is currently focusing on the JavaScript ecosystem, our long-term vision is to be a","sidebar":"docs"},"how-it-works/project-graph":{"id":"how-it-works/project-graph","title":"Project graph","description":"The project graph is a representation of all configured","sidebar":"docs"},"install":{"id":"install","title":"Install moon","description":"The following guide can be used to install moon and integrate it into an existing repository (with","sidebar":"docs"},"intro":{"id":"intro","title":"Introduction","description":"moonrepo is a productivity platform that aims to eliminate pain points for both developers and","sidebar":"docs"},"migrate-to-moon":{"id":"migrate-to-moon","title":"Migrate to moon","description":"Now that we\'ve talked about the workspace, projects, tasks, and more, we must talk about something","sidebar":"docs"},"proto/commands/add-plugin":{"id":"proto/commands/add-plugin","title":"add-plugin","description":"The proto add-plugin (or proto ap) command will add the provided plugin ID and","sidebar":"proto"},"proto/commands/alias":{"id":"proto/commands/alias","title":"alias","description":"The proto alias (or proto a) command will define a custom alias that","sidebar":"proto"},"proto/commands/bin":{"id":"proto/commands/bin","title":"bin","description":"The proto bin command will return an absolute path to a tool\'s binary within the toolchain.","sidebar":"proto"},"proto/commands/clean":{"id":"proto/commands/clean","title":"clean","description":"The proto clean command can be used to uninstall stale and unused tools or plugins. By default, it","sidebar":"proto"},"proto/commands/completions":{"id":"proto/commands/completions","title":"completions","description":"The proto completions command will generate proto command and argument completions for your","sidebar":"proto"},"proto/commands/global":{"id":"proto/commands/global","title":"global","description":"The proto global command will set the global default version (or alias) of a","sidebar":"proto"},"proto/commands/install":{"id":"proto/commands/install","title":"install","description":"The proto install (or proto i) command will download and install a tool by unpacking","sidebar":"proto"},"proto/commands/install-global":{"id":"proto/commands/install-global","title":"install-global","description":"The proto install-global ... (or proto ig) command will install one or many","sidebar":"proto"},"proto/commands/list":{"id":"proto/commands/list","title":"list","description":"The proto list (or proto ls) command will list installed versions by scanning the","sidebar":"proto"},"proto/commands/list-global":{"id":"proto/commands/list-global","title":"list-global","description":"The proto list-global (or proto lsg) command will list installed global dependencies (and","sidebar":"proto"},"proto/commands/list-remote":{"id":"proto/commands/list-remote","title":"list-remote","description":"The proto list-remote (or proto lsr) command will list available versions by resolving","sidebar":"proto"},"proto/commands/local":{"id":"proto/commands/local","title":"local","description":"The proto local command will set the local version (or alias) of a tool by","sidebar":"proto"},"proto/commands/plugins":{"id":"proto/commands/plugins","title":"plugins","description":"The proto plugins command will list all available and configured plugins. Will load all","sidebar":"proto"},"proto/commands/remove-plugin":{"id":"proto/commands/remove-plugin","title":"remove-plugin","description":"The proto remove-plugin (or proto rp) command will remove the provided plugin ID from to","sidebar":"proto"},"proto/commands/run":{"id":"proto/commands/run","title":"run","description":"The proto run (or proto r) command will run a tool after","sidebar":"proto"},"proto/commands/setup":{"id":"proto/commands/setup","title":"setup","description":"The proto setup command will setup proto in your current shell by modifying an applicable profile","sidebar":"proto"},"proto/commands/unalias":{"id":"proto/commands/unalias","title":"unalias","description":"The proto unalias (or proto ua) command will remove a custom alias for the","sidebar":"proto"},"proto/commands/uninstall":{"id":"proto/commands/uninstall","title":"uninstall","description":"The proto uninstall (or proto ui) command will uninstall and remove a tool from","sidebar":"proto"},"proto/commands/uninstall-global":{"id":"proto/commands/uninstall-global","title":"uninstall-global","description":"The proto uninstall-global ... (or proto ug) command will uninstall one or","sidebar":"proto"},"proto/commands/upgrade":{"id":"proto/commands/upgrade","title":"upgrade","description":"The proto upgrade (or proto up) command can be used to upgrade your current proto binary to the","sidebar":"proto"},"proto/commands/use":{"id":"proto/commands/use","title":"use","description":"The proto use (or proto u) command will download and install all tools and plugins from all","sidebar":"proto"},"proto/config":{"id":"proto/config","title":"Configuration","description":"We support configuration for both projects and users. Both config files are in","sidebar":"proto"},"proto/detection":{"id":"proto/detection","title":"Version detection","description":"The most powerful feature in proto is its contextual version detection, that is triggered with","sidebar":"proto"},"proto/faq":{"id":"proto/faq","title":"FAQ","description":"General","sidebar":"proto"},"proto/index":{"id":"proto/index","title":"What is proto?","description":"proto is a pluggable toolchain manager.","sidebar":"proto"},"proto/install":{"id":"proto/install","title":"Install proto","description":"The following guide can be used to install proto into your environment.","sidebar":"proto"},"proto/plugins":{"id":"proto/plugins","title":"Plugins","description":"proto supports a pluggable architecture as a means for consumers to integrate and manage custom","sidebar":"proto"},"proto/toml-plugin":{"id":"proto/toml-plugin","title":"TOML plugin","description":"The TOML plugin is by design, very simple. It\'s a TOML file that describes a schema for the tool,","sidebar":"proto"},"proto/tools":{"id":"proto/tools","title":"Supported tools","description":"The following tools are supported natively in proto\'s toolchain. Additional tools can be supported","sidebar":"proto"},"proto/wasm-plugin":{"id":"proto/wasm-plugin","title":"WASM plugin","description":"Plugins can be written in WebAssembly (WASM), a portable binary format.","sidebar":"proto"},"run-task":{"id":"run-task","title":"Run a task","description":"Even though we\'ve created a task, it\'s not useful unless we run it, which is done","sidebar":"docs"},"setup-toolchain":{"id":"setup-toolchain","title":"Setup toolchain","description":"One of moon\'s most powerful features is the toolchain, which manages and","sidebar":"docs"},"setup-workspace":{"id":"setup-workspace","title":"Setup workspace","description":"Once moon has been installed, we must setup the workspace, which is denoted","sidebar":"docs"},"terminology":{"id":"terminology","title":"Terminology","description":"| Term | Description |","sidebar":"docs"}}}')}}]); \ No newline at end of file diff --git a/assets/js/957809ee.83aad3d9.js b/assets/js/957809ee.29088a3c.js similarity index 83% rename from assets/js/957809ee.83aad3d9.js rename to assets/js/957809ee.29088a3c.js index 0a53e48cd58..6dacfc83add 100644 --- a/assets/js/957809ee.83aad3d9.js +++ b/assets/js/957809ee.29088a3c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2785],{35318:(e,t,r)=>{r.d(t,{Zo:()=>m,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({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(r),g=o,f=u["".concat(s,".").concat(g)]||u[g]||c[g]||a;return r?n.createElement(f,i(i({ref:t},m),{},{components:r})):n.createElement(f,i({ref:t},m))}));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]=u;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 p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var n=r(25773),o=(r(27378),r(35318));const a={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"},i=void 0,l={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:!0,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"},nextItem:{title:"proto v0.16 - Add, remove, and purge plugins",permalink:"/blog/proto-v0.16"}},s={image:r(21445).Z,authorsImageUrls:[void 0]},p=[],m={toc:p};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,"This is a light release that focused primarily on upgrading to the WASM based proto implementation."))}c.isMDXComponent=!0},21445:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/v1.13-a119a59c6b1d80abaf4f3855114d1b48.png"}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2785],{35318:(e,t,r)=>{r.d(t,{Zo:()=>m,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({}),p=function(e){var t=n.useContext(s),r=t;return e&&(r="function"==typeof e?e(t):i(i({},t),e)),r},m=function(e){var t=p(e.components);return n.createElement(s.Provider,{value:t},e.children)},c={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},u=n.forwardRef((function(e,t){var r=e.components,o=e.mdxType,a=e.originalType,s=e.parentName,m=l(e,["components","mdxType","originalType","parentName"]),u=p(r),g=o,f=u["".concat(s,".").concat(g)]||u[g]||c[g]||a;return r?n.createElement(f,i(i({ref:t},m),{},{components:r})):n.createElement(f,i({ref:t},m))}));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]=u;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 p=2;p{r.r(t),r.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>c,frontMatter:()=>a,metadata:()=>l,toc:()=>p});var n=r(25773),o=(r(27378),r(35318));const a={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"},i=void 0,l={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:!0,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"}},s={image:r(21445).Z,authorsImageUrls:[void 0]},p=[],m={toc:p};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,"This is a light release that focused primarily on upgrading to the WASM based proto implementation."))}c.isMDXComponent=!0},21445:(e,t,r)=>{r.d(t,{Z:()=>n});const n=r.p+"assets/images/v1.13-a119a59c6b1d80abaf4f3855114d1b48.png"}}]); \ No newline at end of file diff --git a/assets/js/9e528cee.4136debd.js b/assets/js/9e528cee.4136debd.js new file mode 100644 index 00000000000..c73f38f9b4c --- /dev/null +++ b/assets/js/9e528cee.4136debd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6633],{35318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>c});var a=n(27378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),m=p(n),c=o,h=m["".concat(s,".").concat(c)]||m[c]||d[c]||i;return n?a.createElement(h,l(l({ref:t},u),{},{components:n})):a.createElement(h,l({ref:t},u))}));function c(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,l=new Array(i);l[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r.mdxType="string"==typeof e?e:o,l[1]=r;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>p});var a=n(25773),o=(n(27378),n(35318));const i={title:"WASM plugin",sidebar_label:"WASM",toc_max_heading_level:5},l=void 0,r={unversionedId:"proto/wasm-plugin",id:"proto/wasm-plugin",title:"WASM plugin",description:"Plugins can be written in WebAssembly (WASM), a portable binary format.",source:"@site/docs/proto/wasm-plugin.mdx",sourceDirName:"proto",slug:"/proto/wasm-plugin",permalink:"/docs/proto/wasm-plugin",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/wasm-plugin.mdx",tags:[],version:"current",frontMatter:{title:"WASM plugin",sidebar_label:"WASM",toc_max_heading_level:5},sidebar:"proto",previous:{title:"TOML",permalink:"/docs/proto/toml-plugin"},next:{title:"add-plugin",permalink:"/docs/proto/commands/add-plugin"}},s={},p=[{value:"Concepts",id:"concepts",level:2},{value:"Virtual paths",id:"virtual-paths",level:3},{value:"Host environment",id:"host-environment",level:3},{value:"Host functions",id:"host-functions",level:3},{value:"Tool ID and context",id:"tool-id-and-context",level:3},{value:"Create a plugin",id:"create-a-plugin",level:2},{value:"Implementing plugin functions",id:"implementing-plugin-functions",level:2},{value:"Registering metadata",id:"registering-metadata",level:3},{value:"Downloading pre-builts",id:"downloading-pre-builts",level:3},{value:"Unpacking an archive",id:"unpacking-an-archive",level:4},{value:"Locating binaries",id:"locating-binaries",level:3},{value:"Loading and resolving versions",id:"loading-and-resolving-versions",level:3},{value:"Detecting versions",id:"detecting-versions",level:3},{value:"Creating shims",id:"creating-shims",level:3},{value:"Global shims",id:"global-shims",level:4},{value:"Installing and uninstalling globals",id:"installing-and-uninstalling-globals",level:3},{value:"Testing",id:"testing",level:2},{value:"Unit tests",id:"unit-tests",level:3},{value:"Testing plugin functions",id:"testing-plugin-functions",level:4},{value:"Generating cases from macros",id:"generating-cases-from-macros",level:4},{value:"Building and publishing",id:"building-and-publishing",level:2},{value:"Manually create releases",id:"manually-create-releases",level:3},{value:"Automate releases",id:"automate-releases",level:3},{value:"Resources",id:"resources",level:2}],u={toc:p};function d(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Plugins can be written in ",(0,o.kt)("a",{parentName:"p",href:"https://webassembly.org/"},"WebAssembly (WASM)"),", a portable binary format.\nThis means that plugins can be written in any language that compiles to WASM, like Rust, C, C++, Go,\nTypeScript, and more. Because WASM based plugins are powered by a programming language, they\nimplicitly support complex business logic and behavior, have access to a sandboxed file system (via\nWASI), can execute child processes, and much more."),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Since our WASM plugin implementation is still experimental, expect breaking changes to occur in\nnon-major releases.")),(0,o.kt)("h2",{id:"concepts"},"Concepts"),(0,o.kt)("p",null,"Before we begin, let's talk about a few concepts that are critical to WASM and our plugin system."),(0,o.kt)("h3",{id:"virtual-paths"},"Virtual paths"),(0,o.kt)("p",null,"WASM by default does not have access to the host file system, but through ",(0,o.kt)("a",{parentName:"p",href:"https://wasi.dev/"},"WASI"),",\nwe can provide sandboxed access to a pre-defined list of allowed directories. We call this\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/enum.VirtualPath.html"},"virtual paths"),", and all paths\nprovided via function input or context use them."),(0,o.kt)("p",null,"Virtual paths are implemented by mapping a real path (host machine) to a virtual path (guest\nruntime) using file path prefixes. The following prefixes are currently supported:"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Real path"),(0,o.kt)("th",{parentName:"tr",align:null},"Virtual path"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"~")),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"/home"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"~/.proto")),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"/proto"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"CWD"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"/workspace"))))),(0,o.kt)("p",null,"For example, from the context of WASM, you may have a virtual path of ",(0,o.kt)("inlineCode",{parentName:"p"},"/proto/tools/node/1.2.3"),",\nwhich simply maps back to ",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/tools/node/1.2.3")," on the host machine. However, this should\nalmost always be transparent to you, the developer, and to end users."),(0,o.kt)("p",null,"However, there may be a few cases where you need access to the real path from WASM, for example,\nlogging or executing commands. For this, the real path can be accessed with the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/enum.VirtualPath.html#method.real_path"},(0,o.kt)("inlineCode",{parentName:"a"},"real_path")),"\nfunction on the ",(0,o.kt)("inlineCode",{parentName:"p"},"VirtualPath")," enum (this is a Rust only feature)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"input.tool_dir.real_path();\n")),(0,o.kt)("h3",{id:"host-environment"},"Host environment"),(0,o.kt)("p",null,"Since WASM executes in its own runtime, it ",(0,o.kt)("em",{parentName:"p"},"does not")," have access to the current host operating\nsystem, architecture, so on and so forth. To bridge this gap, we provide the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/fn.get_proto_environment.html"},(0,o.kt)("inlineCode",{parentName:"a"},"get_proto_environment")),"\nfunction.\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/struct.HostEnvironment.html"},"Learn more about this type"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"let env = get_proto_environment()?;\n")),(0,o.kt)("p",null,"The host operating system and architecture can be accessed with ",(0,o.kt)("inlineCode",{parentName:"p"},"os")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"arch")," fields respectively.\nBoth fields are an enum in Rust, or a string in other languages."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"if env.os == HostOS::Windows {\n // Windows only\n}\n\nif env.arch == HostArch::Arm64 {\n // aarch64 only\n}\n")),(0,o.kt)("p",null,"Furthermore, the user's home directory (",(0,o.kt)("inlineCode",{parentName:"p"},"~"),") and proto's root directory (",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto"),") can be accessed\nwith the ",(0,o.kt)("inlineCode",{parentName:"p"},"home_dir")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"proto_dir")," fields, both of which are ",(0,o.kt)("a",{parentName:"p",href:"#virtual-paths"},"virtual paths"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"if env.home_dir.join(some_path).exists() {\n // Do something\n}\n")),(0,o.kt)("h3",{id:"host-functions"},"Host functions"),(0,o.kt)("p",null,"WASM is pretty powerful but it can't do everything since it's sandboxed. To work around this, we\nprovide a mechanism known as host functions, which are functions that are implemented on the host\n(in Rust), and can be executed from WASM. The following host functions are currently available:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk/latest/proto_pdk/macro.exec_command.html"},(0,o.kt)("inlineCode",{parentName:"a"},"exec_command"))," - Execute a\nsystem command on the host machine, with a provided list of arguments or environment variables."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk/latest/proto_pdk/macro.host_log.html"},(0,o.kt)("inlineCode",{parentName:"a"},"host_log"))," - Log a message to\nthe host's stderr. This acts like tracing logs, and is not a general purpose stdout logger.")),(0,o.kt)("p",null,"To use host functions, you'll need to make them available by registering them at the top of your\nRust file (only add the functions you want to use)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[host_fn]\nextern "ExtismHost" {\n fn exec_command(input: Json) -> Json;\n fn host_log(input: Json);\n}\n')),(0,o.kt)("p",null,"And then calling the provided ",(0,o.kt)("inlineCode",{parentName:"p"},"exec_command!")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"host_log!")," macros. Each macro supports shorthand\nvariants, and an explicit variant that accepts the input struct."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'exec_command!("which", ["node"]);\nexec_command!(pipe, "npm", ["install"]); // Pipe stdout/stderr\nexec_command!(inherit, "npm", ["install"]); // Inherit stdout/stderr\nexec_command!(ExecCommandInput {\n command: "npm".into(),\n args: vec!["install".into()],\n env_vars: HashMap::new(),\n stream: false,\n});\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'host_log!("Some message");\nhost_log!("Some message with {}", "args");\nhost_log!(HostLogInput::Fields {\n message: "Some message with data".into(),\n data: HashMap::from_iter([\n ("data".into(), serde_json::to_value(data)?),\n ]),\n});\n')),(0,o.kt)("h3",{id:"tool-id-and-context"},"Tool ID and context"),(0,o.kt)("p",null,"When implementing plugin functions, you'll need to access information about the current tool. To get\nthe current tool ID (the key the plugin was configured with), use the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/fn.get_tool_id.html"},(0,o.kt)("inlineCode",{parentName:"a"},"get_tool_id"))," function."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"let id = get_tool_id();\n")),(0,o.kt)("p",null,"Additionally, we also provide what we call the tool context, which is information that is constantly\nchanging depending on the current step or state of proto's execution. The context cannot be accessed\nwith a stand-alone function, and is instead passed as a ",(0,o.kt)("inlineCode",{parentName:"p"},"context")," field in the input of many plugin\nfunctions."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn download_prebuilt(Json(input): Json) -> FnResult> {\n let version = input.context.version;\n // ...\n}\n")),(0,o.kt)("p",null,"The following fields are available on the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/struct.ToolContext.html"},"context object"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"env_vars")," - A map of environment variables requested by the\n",(0,o.kt)("a",{parentName:"li",href:"#registering-metadata"},(0,o.kt)("inlineCode",{parentName:"a"},"register_tool"))," function."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"tool_dir")," - A virtual path to the tool's directory for the current version."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"version"),' - The current version or alias. If not resolved, will be "latest".')),(0,o.kt)("admonition",{type:"caution"},(0,o.kt)("p",{parentName:"admonition"},"The ",(0,o.kt)("inlineCode",{parentName:"p"},"version"),' field is either a fully-qualified semantic version (1.2.3), an alias ("latest",\n"stable"), or canary ("canary"). Be sure to account for all these variations when implementing\nplugin functions!')),(0,o.kt)("h2",{id:"create-a-plugin"},"Create a plugin"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Although plugins can be written in any language that compiles to WASM, we've only tested Rust. The\nrest of this article assume you're using Rust and Cargo! Refer to ",(0,o.kt)("a",{parentName:"p",href:"https://extism.org/"},"Extism"),"'s\ndocumentation or our official ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/node-plugin"},"Node.js plugin")," for other\nexamples.")),(0,o.kt)("p",null,"To start, create a new crate with Cargo:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo new plugin --lib\ncd plugin\n")),(0,o.kt)("p",null,"And set the lib type to ",(0,o.kt)("inlineCode",{parentName:"p"},"cdylib"),", and other settings."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="Cargo.toml"',title:'"Cargo.toml"'},"[lib]\ncrate-type = ['cdylib']\n\n[profile.release]\ncodegen-units = 1\nlto = true\n")),(0,o.kt)("p",null,"Our Rust plugins are powered by ",(0,o.kt)("a",{parentName:"p",href:"https://extism.org/"},"Extism"),", so lets add their PDK and ours as a\ndependency."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo add extism-pdk proto_pdk\n")),(0,o.kt)("p",null,"In all Rust files, we can import both PDKs with the following:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust",metastring:'title="src/lib.rs"',title:'"src/lib.rs"'},"use extism_pdk::*;\nuse proto_pdk::*;\n")),(0,o.kt)("p",null,"We can then build the WASM binary. The file will be available at\n",(0,o.kt)("inlineCode",{parentName:"p"},"target/wasm32-wasi/debug/.wasm"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo install cargo-wasi\ncargo wasi build\n")),(0,o.kt)("h2",{id:"implementing-plugin-functions"},"Implementing plugin functions"),(0,o.kt)("p",null,"Plugins are powered by a set of functions that are called from the host, and are annotated with\n",(0,o.kt)("inlineCode",{parentName:"p"},"#[plugin_fn]"),"."),(0,o.kt)("h3",{id:"registering-metadata"},"Registering metadata"),(0,o.kt)("p",null,"The first step in a plugin's life-cycle is to register metadata about the plugin with the\n",(0,o.kt)("inlineCode",{parentName:"p"},"register_tool")," function. This function is called immediately after a plugin is loaded at runtime,\nand must return a human-readable name and plugin type."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn register_tool(_: ()) -> FnResult> {\n Ok(Json(ToolMetadataOutput {\n name: "Node.js".into(),\n type_of: PluginType::Language,\n plugin_version: Some(env!("CARGO_PKG_VERSION").into()),\n ..ToolMetadataOutput::default()\n }))\n}\n')),(0,o.kt)("p",null,"This function also receives the plugin ID as input, allowing for conditional logic based on the ID.\nThe ID is the ",(0,o.kt)("a",{parentName:"p",href:"#enabling-plugins"},"key the plugin was configured with"),", and what is passed to ",(0,o.kt)("inlineCode",{parentName:"p"},"proto"),"\ncommands (e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"proto install "),")."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn register_tool(Json(input): Json) -> FnResult> {\n input.id\n // ...\n}\n")),(0,o.kt)("h3",{id:"downloading-pre-builts"},"Downloading pre-builts"),(0,o.kt)("p",null,"Our plugin layer ",(0,o.kt)("em",{parentName:"p"},"only")," supports downloading pre-built tools, typically as an archive, and does\n",(0,o.kt)("em",{parentName:"p"},"not")," support building from source. The ",(0,o.kt)("inlineCode",{parentName:"p"},"download_prebuilt")," function ",(0,o.kt)("em",{parentName:"p"},"must")," be defined, whichs\nconfigures how the tool should be downloaded and installed."),(0,o.kt)("p",null,"The following fields are available:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"archive_prefix")," - If the tool is distributed as an archive (zip, tar, etc), this is the name of\nthe direct folder within the archive that contains the tool, and will be removed when unpacking\nthe archive. If there is no prefix folder within the archive, this setting can be omitted."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"download_url")," (required) - A secure URL to download the tool/archive."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"download_name")," - File name of the archive to download. If not provided, will attempt to extract\nit from the URL."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"checksum_url")," - A secure URL to download the checksum file for verification. If the tool does not\nsupport checksum verification, this setting can be omitted.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn download_prebuilt(Json(input): Json) -> FnResult> {\n let env = get_proto_environment()?;\n\n check_supported_os_and_arch(\n NAME,\n &env,\n permutations! [\n HostOS::Linux => [HostArch::X64, HostArch::Arm64, HostArch::Arm, HostArch::Powerpc64, HostArch::S390x],\n HostOS::MacOS => [HostArch::X64, HostArch::Arm64],\n HostOS::Windows => [HostArch::X64, HostArch::X86, HostArch::Arm64],\n ],\n )?;\n\n let version = input.context.version;\n let arch = env.arch;\n let os = env.os;\n\n let prefix = match 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("Node.js".into(), other.into()))?;\n }\n };\n\n let filename = if 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')),(0,o.kt)("h4",{id:"unpacking-an-archive"},"Unpacking an archive"),(0,o.kt)("p",null,"Our plugin layer will do its best to detect file extensions, unpack the downloaded file (if an\narchive), and install the tool to the correct directory. However, we're unable to account for ",(0,o.kt)("em",{parentName:"p"},"all"),"\nedge cases, so for situations where the install params above are not sufficient, you may define an\n",(0,o.kt)("inlineCode",{parentName:"p"},"unpack_archive")," function."),(0,o.kt)("p",null,"This function receives an input with the following fields:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"input_file")," - Virtual path to the downloaded file. Maps to ",(0,o.kt)("inlineCode",{parentName:"li"},"~/.proto/temp//"),"."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"output_dir")," - Virtual directory to unpack the archive into, or copy the binary to. Maps to\n",(0,o.kt)("inlineCode",{parentName:"li"},"~/.proto/tools//"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn unpack_archive(Json(input): Json) -> FnResult<()> {\n untar(input.input_file, input.output_dir)?;\n Ok(())\n}\n")),(0,o.kt)("h3",{id:"locating-binaries"},"Locating binaries"),(0,o.kt)("p",null,"Even though a tool has been installed, we must inform proto of where to find the binary to execute.\nThis can be achieved with the optional ",(0,o.kt)("inlineCode",{parentName:"p"},"locate_bins")," function. If this function is not defined,\nproto will assume the binary is named ",(0,o.kt)("inlineCode",{parentName:"p"},"")," (",(0,o.kt)("inlineCode",{parentName:"p"},".exe")," on Windows), relative from the installation\ndirectory."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn locate_bins(Json(_): Json) -> FnResult> {\n let env = get_proto_environment()?;\n\n Ok(Json(LocateBinsOutput {\n bin_path: Some(if env.os == HostOS::Windows {\n "node.exe".into()\n } else {\n "bin/node".into()\n }),\n ..LocateBinsOutput::default()\n }))\n}\n')),(0,o.kt)("p",null,"Furthermore, the ",(0,o.kt)("inlineCode",{parentName:"p"},"locate_bins")," function can define a list of lookups for the globals installation\ndirectory. proto will loop through each lookup, and return the first directory that exists on the\ncurrent file system. proto will also expand environment variables in the format of ",(0,o.kt)("inlineCode",{parentName:"p"},"$VAR_NAME"),". If a\nvariable is not defined, or has an empty value, the lookup will be skipped. To demonstrate this,\nwe'll use ",(0,o.kt)("a",{parentName:"p",href:"https://deno.land/manual@v1.35.0/tools/script_installer"},"Deno"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn locate_bins(Json(_): Json) -> FnResult> {\n Ok(Json(LocateBinsOutput {\n fallback_last_globals_dir: true,\n globals_lookup_dirs: vec!["$DENO_INSTALL_ROOT/bin".into(), "$HOME/.deno/bin".into()],\n ..LocateBinsOutput::default()\n }))\n}\n')),(0,o.kt)("h3",{id:"loading-and-resolving-versions"},"Loading and resolving versions"),(0,o.kt)("p",null,"Now that the tool can be downloaded and installed, we must configure how to resolve available\nversions to actually be installed. To provide a list of versions and language specific aliases, the\n",(0,o.kt)("inlineCode",{parentName:"p"},"load_versions")," function must be defined."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn load_versions(Json(_): Json) -> FnResult> {\n let mut output = LoadVersionsOutput::default();\n let response: Vec = fetch_url("https://nodejs.org/dist/index.json")?;\n\n for (index, item) in response.iter().enumerate() {\n let version = Version::parse(&item.version[1..])?; // Starts with v\n\n if index == 0 {\n output.latest = Some(version.clone());\n }\n\n output.versions.push(version);\n }\n\n Ok(Json(output))\n}\n')),(0,o.kt)("p",null,"Furthermore, we support an optional function named ",(0,o.kt)("inlineCode",{parentName:"p"},"resolve_version"),", that can be defined to\nintercept the version resolution process. This function receives an input with an initial candidate,\neither an alias or version, and can replace it with a new candidate. The candidate must be a valid\nalias or version as defined in ",(0,o.kt)("inlineCode",{parentName:"p"},"load_versions"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn resolve_version(\n Json(input): Json,\n) -> FnResult> {\n let mut output = ResolveVersionOutput::default();\n\n if input.initial == "node" {\n output.candidate = Some("latest".into());\n\n } else if input.initial == "lts-*" || input.initial == "lts/*" {\n output.candidate = Some("stable".into());\n\n } else if input.initial.starts_with("lts-") || input.initial.starts_with("lts/") {\n output.candidate = Some(input.initial[4..].to_owned());\n }\n\n Ok(Json(output))\n}\n')),(0,o.kt)("h3",{id:"detecting-versions"},"Detecting versions"),(0,o.kt)("p",null,"And lastly, we can configure how to ",(0,o.kt)("a",{parentName:"p",href:"./detection"},"detect a version")," contextually at runtime, using\nthe ",(0,o.kt)("inlineCode",{parentName:"p"},"detect_version_files")," function and optional ",(0,o.kt)("inlineCode",{parentName:"p"},"parse_version_file")," function. The\n",(0,o.kt)("inlineCode",{parentName:"p"},"detect_version_files")," function can return a list of files to locate within a directory."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn detect_version_files(_: ()) -> FnResult> {\n Ok(Json(DetectVersionOutput {\n files: vec![\n ".nvmrc".into(),\n ".node-version".into(),\n "package.json".into(),\n ],\n }))\n}\n')),(0,o.kt)("p",null,'By default our plugin layer will assume the version file\'s contents contain the literal version, and\nnothing else, like "1.2.3". If any of the files in the ',(0,o.kt)("inlineCode",{parentName:"p"},"detect_version_files")," list require custom\nparsing (for example, ",(0,o.kt)("inlineCode",{parentName:"p"},"package.json")," above), you can define the ",(0,o.kt)("inlineCode",{parentName:"p"},"parse_version_file")," function."),(0,o.kt)("p",null,"This function receives the file name and contents as input, and must return the parsed version (if\napplicable)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn parse_version_file(Json(input): Json) -> FnResult> {\n let mut version = None;\n\n if input.file == "package.json" {\n let json: PackageJson = serde_json::from_str(&input.content)?;\n\n if let Some(engines) = json.engines {\n if let Some(constraint) = engines.get("node") {\n version = Some(constraint.to_owned());\n }\n }\n } else {\n version = Some(input.content.trim().to_owned());\n }\n\n Ok(Json(ParseVersionFileOutput { version }))\n}\n')),(0,o.kt)("h3",{id:"creating-shims"},"Creating shims"),(0,o.kt)("p",null,"Tools within proto wouldn't function without shims, and as such, plugins can register their own\nshims to be created. By default, proto ",(0,o.kt)("em",{parentName:"p"},"will always")," create a global shim of the plugin at\n",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/bin/"),", but you can also register additional shims with the ",(0,o.kt)("inlineCode",{parentName:"p"},"create_shims")," function."),(0,o.kt)("h4",{id:"global-shims"},"Global shims"),(0,o.kt)("p",null,"Global shims are optional scripts that are available on ",(0,o.kt)("inlineCode",{parentName:"p"},"PATH")," as they are generated in the\n",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/bin")," directory, and can be defined with the ",(0,o.kt)("inlineCode",{parentName:"p"},"global_shims")," parameter. This param is a hash\nmap, where the key is the shim file name, and the value is a configuration object."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn create_shims(Json(_): Json) -> FnResult> {\n let env = get_proto_environment()?;\n let mut global_shims = HashMap::new();\n\n global_shims.insert(\n "npx".into(),\n ShimConfig::global_with_alt_bin(if env.os == HostOS::Windows {\n "npx.cmd".into()\n } else {\n "bin/npx".into()\n }),\n );\n\n Ok(Json(CreateShimsOutput {\n global_shims,\n ..CreateShimsOutput::default()\n }))\n}\n')),(0,o.kt)("p",null,"Furthermore, if you'd prefer to ",(0,o.kt)("em",{parentName:"p"},"not")," create a primary global shim at all, enable the\n",(0,o.kt)("inlineCode",{parentName:"p"},"no_primary_global")," field."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn create_shims(Json(_): Json) -> FnResult> {\n Ok(Json(CreateShimsOutput {\n no_primary_global: true,\n ..CreateShimsOutput::default()\n }))\n}\n")),(0,o.kt)("h3",{id:"installing-and-uninstalling-globals"},"Installing and uninstalling globals"),(0,o.kt)("p",null,"Most languages support the concept of installing packages/dependencies globally, and making them\navailable on ",(0,o.kt)("inlineCode",{parentName:"p"},"PATH"),". proto supports this with the\n",(0,o.kt)("a",{parentName:"p",href:"./commands/install-global"},(0,o.kt)("inlineCode",{parentName:"a"},"proto install-global"))," and\n",(0,o.kt)("a",{parentName:"p",href:"./commands/uninstall-global"},(0,o.kt)("inlineCode",{parentName:"a"},"proto uninstall-global"))," commands, which are simple convenience\nwrappers around the native binary."),(0,o.kt)("p",null,"From the context of the plugin, how globals are installed and uninstalled is implemented with the\n",(0,o.kt)("inlineCode",{parentName:"p"},"install_global")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"uninstall_global")," functions respectively. Both functions receive the\n",(0,o.kt)("inlineCode",{parentName:"p"},"dependency")," to install as input."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[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#[plugin_fn]\npub fn uninstall_global(\n Json(input): Json,\n) -> FnResult> {\n let result = exec_command!(inherit, "npm", ["uninstall", "--global", &input.dependency]);\n\n Ok(Json(UninstallGlobalOutput::from_exec_command(result)))\n}\n')),(0,o.kt)("h2",{id:"testing"},"Testing"),(0,o.kt)("p",null,"The best way to test the plugin is to execute it through ",(0,o.kt)("inlineCode",{parentName:"p"},"proto")," directly. To do this, you'll need\nto configure a ",(0,o.kt)("inlineCode",{parentName:"p"},".prototools")," file at the root of your plugin's repository that maps the plugin to a\ndebug build:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-toml"},'[plugins]\n = "source:target/wasm32-wasi/debug/.wasm"\n')),(0,o.kt)("p",null,"And everytime you make a change to the plugin, you'll need to rebuild it with:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo wasi build\n")),(0,o.kt)("p",null,"With these 2 pieces in place, you can now execute ",(0,o.kt)("inlineCode",{parentName:"p"},"proto")," commands. Be sure you're running them from\nthe directory with the ",(0,o.kt)("inlineCode",{parentName:"p"},".prototools")," file, and that you're passing ",(0,o.kt)("inlineCode",{parentName:"p"},"--log trace"),". Logs are extremely\nhelpful for figuring out what's going on."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"proto --log trace install \nproto --log trace list-remote \n...\n")),(0,o.kt)("h3",{id:"unit-tests"},"Unit tests"),(0,o.kt)("p",null,"Testing WASM plugins is a bit tricky, but we've taken it upon ourselves to streamline this process\nas much as possible with built-in test utilities, and Rust macros for generating common test cases.\nTo begin, install all necessary development dependencies:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo add --dev proto_pdk_test_utils starbase_sandbox tokio\n")),(0,o.kt)("p",null,"And as mentioned above, everytime you make a change to the plugin, you'll need to rebuild it with:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo wasi build\n")),(0,o.kt)("h4",{id:"testing-plugin-functions"},"Testing plugin functions"),(0,o.kt)("p",null,"The common test case is simply calling plugin functions with a provided input and asserting the\noutput is correct. This can be achieved by creating a plugin instance with ",(0,o.kt)("inlineCode",{parentName:"p"},"create_plugin")," and\ncalling the appropriate method."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'use proto_pdk_test_utils::*;\nuse starbase_sandbox::create_empty_sandbox;\n\n#[test]\nfn registers_metadata() {\n let sandbox = create_empty_sandbox();\n let plugin = create_plugin("id", sandbox.path());\n\n assert_eq!(\n plugin.register_tool(ToolMetadataInput::default()),\n ToolMetadataOutput {\n name: "Name".into(),\n ..ToolMetadataOutput::default()\n }\n );\n}\n')),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"We suggest using this pattern for static functions that return a deterministic output from a\nprovided input, and not for dynamic functions that make HTTP requests or execute host commands.")),(0,o.kt)("h4",{id:"generating-cases-from-macros"},"Generating cases from macros"),(0,o.kt)("p",null,"To reduce the burden of writing custom tests for common flows, like downloading a pre-built,\nresolving versions, and generating shims, we provide a set of Rust decl macros that will generate\nthe tests for you."),(0,o.kt)("p",null,"To test downloading and installing, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_download_install_tests!"),". This macro requires a\nplugin ID and a real version to test with."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'use proto_pdk_test_utils::*;\n\ngenerate_download_install_tests!("id", "1.2.3");\n')),(0,o.kt)("p",null,"To test version resolving, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_resolve_versions_tests!"),". This macro requires a plugin ID,\nand a mapping of version/aliases assertions to expectations."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'generate_resolve_versions_tests!("id", {\n "0.4" => "0.4.12",\n "0.5.1" => "0.5.1",\n "stable" => "1.0.0",\n});\n')),(0,o.kt)("p",null,"To test installing and uninstalling globals, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_globals_test!"),". This macro requires a\nplugin ID, the dependency to install, and an optional environment variable to the globals directory."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'// Doesn\'t support all use cases! If this doesn\'t work, implement a test case manually.\ngenerate_globals_test!("id", "dependency", "GLOBAL_INSTALL_ROOT");\n')),(0,o.kt)("p",null,"And lastly, to test shims, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_global_shims_test!")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_local_shims_test!"),". Both\nmacros require a plugin ID, but also support additional arguments when creating more than 1 shim.\nThese macros generate snapshots using ",(0,o.kt)("a",{parentName:"p",href:"https://insta.rs/"},"Insta"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'// Only the single binary\ngenerate_global_shims_test!("id");\n\n// When creating alternate/additional globals\ngenerate_global_shims_test!("id", ["other", "another"]);\n\n// When creating local shims, each file required in the list\ngenerate_local_shims_test!("id", ["a", "b", "c"]);\n')),(0,o.kt)("h2",{id:"building-and-publishing"},"Building and publishing"),(0,o.kt)("p",null,"At this point, you should have a fully working WASM plugin, but to make it available to downstream\nproto users, you'll still need to build and make the ",(0,o.kt)("inlineCode",{parentName:"p"},".wasm")," file available. The easiest solution is\nto publish a GitHub release and include the ",(0,o.kt)("inlineCode",{parentName:"p"},".wasm")," file as an asset."),(0,o.kt)("h3",{id:"manually-create-releases"},"Manually create releases"),(0,o.kt)("p",null,"When your plugin is ready to be published, you can create a release on GitHub using the following\nsteps."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Tag the release and push to GitHub.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"git tag v0.0.1\ngit push --tags\n")),(0,o.kt)("ol",{start:2},(0,o.kt)("li",{parentName:"ol"},"Build a release version of the plugin. The file will be available at\n",(0,o.kt)("inlineCode",{parentName:"li"},"target/wasm32-wasi/release/.wasm"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo wasi build --release\n")),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"In GitHub, navigate to the tags page, find the new tag, create a new release, and attach the\nbuilt file as an asset.")),(0,o.kt)("h3",{id:"automate-releases"},"Automate releases"),(0,o.kt)("p",null,"Coming soon!"),(0,o.kt)("h2",{id:"resources"},"Resources"),(0,o.kt)("p",null,"Some helpful resources for learning about and building plugins."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Official proto WASM plugins",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/bun-plugin"},"Bun")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/deno-plugin"},"Deno")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/go-plugin"},"Go")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/node-plugin"},"Node")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/node-plugin"},"npm, pnpm, yarn")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/python-plugin"},"Python")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/rust-plugin"},"Rust")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/schema-plugin"},"Schema")))),(0,o.kt)("li",{parentName:"ul"},"Plugin development kit",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk/"},(0,o.kt)("inlineCode",{parentName:"a"},"proto_pdk")," docs")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk_test_utils/"},(0,o.kt)("inlineCode",{parentName:"a"},"proto_pdk_test_utils")," docs"))))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/9e528cee.b2f741e8.js b/assets/js/9e528cee.b2f741e8.js deleted file mode 100644 index 8b4c393903d..00000000000 --- a/assets/js/9e528cee.b2f741e8.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6633],{35318:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>c});var a=n(27378);function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function i(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 l(e){for(var t=1;t=0||(o[n]=e[n]);return o}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(o[n]=e[n])}return o}var s=a.createContext({}),p=function(e){var t=a.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(s.Provider,{value:t},e.children)},d={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,o=e.mdxType,i=e.originalType,s=e.parentName,u=r(e,["components","mdxType","originalType","parentName"]),m=p(n),c=o,h=m["".concat(s,".").concat(c)]||m[c]||d[c]||i;return n?a.createElement(h,l(l({ref:t},u),{},{components:n})):a.createElement(h,l({ref:t},u))}));function c(e,t){var n=arguments,o=t&&t.mdxType;if("string"==typeof e||o){var i=n.length,l=new Array(i);l[0]=m;var r={};for(var s in t)hasOwnProperty.call(t,s)&&(r[s]=t[s]);r.originalType=e,r.mdxType="string"==typeof e?e:o,l[1]=r;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>d,frontMatter:()=>i,metadata:()=>r,toc:()=>p});var a=n(25773),o=(n(27378),n(35318));const i={title:"WASM plugin (experimental)",sidebar_label:"WASM (experimental)",toc_max_heading_level:5},l=void 0,r={unversionedId:"proto/wasm-plugin",id:"proto/wasm-plugin",title:"WASM plugin (experimental)",description:"Plugins can be written in WebAssembly (WASM), a portable binary format.",source:"@site/docs/proto/wasm-plugin.mdx",sourceDirName:"proto",slug:"/proto/wasm-plugin",permalink:"/docs/proto/wasm-plugin",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/wasm-plugin.mdx",tags:[],version:"current",frontMatter:{title:"WASM plugin (experimental)",sidebar_label:"WASM (experimental)",toc_max_heading_level:5},sidebar:"proto",previous:{title:"TOML",permalink:"/docs/proto/toml-plugin"},next:{title:"add-plugin",permalink:"/docs/proto/commands/add-plugin"}},s={},p=[{value:"Concepts",id:"concepts",level:2},{value:"Virtual paths",id:"virtual-paths",level:3},{value:"Host environment",id:"host-environment",level:3},{value:"Host functions",id:"host-functions",level:3},{value:"Tool ID and context",id:"tool-id-and-context",level:3},{value:"Create a plugin",id:"create-a-plugin",level:2},{value:"Implementing plugin functions",id:"implementing-plugin-functions",level:2},{value:"Registering metadata",id:"registering-metadata",level:3},{value:"Downloading pre-builts",id:"downloading-pre-builts",level:3},{value:"Unpacking an archive",id:"unpacking-an-archive",level:4},{value:"Locating binaries",id:"locating-binaries",level:3},{value:"Loading and resolving versions",id:"loading-and-resolving-versions",level:3},{value:"Detecting versions",id:"detecting-versions",level:3},{value:"Creating shims",id:"creating-shims",level:3},{value:"Global shims",id:"global-shims",level:4},{value:"Installing and uninstalling globals",id:"installing-and-uninstalling-globals",level:3},{value:"Testing",id:"testing",level:2},{value:"Unit tests",id:"unit-tests",level:3},{value:"Testing plugin functions",id:"testing-plugin-functions",level:4},{value:"Generating cases from macros",id:"generating-cases-from-macros",level:4},{value:"Building and publishing",id:"building-and-publishing",level:2},{value:"Manually create releases",id:"manually-create-releases",level:3},{value:"Automate releases",id:"automate-releases",level:3},{value:"Resources",id:"resources",level:2}],u={toc:p};function d(e){let{components:t,...n}=e;return(0,o.kt)("wrapper",(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,o.kt)("p",null,"Plugins can be written in ",(0,o.kt)("a",{parentName:"p",href:"https://webassembly.org/"},"WebAssembly (WASM)"),", a portable binary format.\nThis means that plugins can be written in any language that compiles to WASM, like Rust, C, C++, Go,\nTypeScript, and more. Because WASM based plugins are powered by a programming language, they\nimplicitly support complex business logic and behavior, have access to a sandboxed file system (via\nWASI), can execute child processes, and much more."),(0,o.kt)("admonition",{type:"danger"},(0,o.kt)("p",{parentName:"admonition"},"Since our WASM plugin implementation is still experimental, expect breaking changes to occur in\nnon-major releases.")),(0,o.kt)("h2",{id:"concepts"},"Concepts"),(0,o.kt)("p",null,"Before we begin, let's talk about a few concepts that are critical to WASM and our plugin system."),(0,o.kt)("h3",{id:"virtual-paths"},"Virtual paths"),(0,o.kt)("p",null,"WASM by default does not have access to the host file system, but through ",(0,o.kt)("a",{parentName:"p",href:"https://wasi.dev/"},"WASI"),",\nwe can provide sandboxed access to a pre-defined list of allowed directories. We call this\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/enum.VirtualPath.html"},"virtual paths"),", and all paths\nprovided via function input or context use them."),(0,o.kt)("p",null,"Virtual paths are implemented by mapping a real path (host machine) to a virtual path (guest\nruntime) using file path prefixes. The following prefixes are currently supported:"),(0,o.kt)("table",null,(0,o.kt)("thead",{parentName:"table"},(0,o.kt)("tr",{parentName:"thead"},(0,o.kt)("th",{parentName:"tr",align:null},"Real path"),(0,o.kt)("th",{parentName:"tr",align:null},"Virtual path"))),(0,o.kt)("tbody",{parentName:"table"},(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"~")),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"/home"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"~/.proto")),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"/proto"))),(0,o.kt)("tr",{parentName:"tbody"},(0,o.kt)("td",{parentName:"tr",align:null},"CWD"),(0,o.kt)("td",{parentName:"tr",align:null},(0,o.kt)("inlineCode",{parentName:"td"},"/workspace"))))),(0,o.kt)("p",null,"For example, from the context of WASM, you may have a virtual path of ",(0,o.kt)("inlineCode",{parentName:"p"},"/proto/tools/node/1.2.3"),",\nwhich simply maps back to ",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/tools/node/1.2.3")," on the host machine. However, this should\nalmost always be transparent to you, the developer, and to end users."),(0,o.kt)("p",null,"However, there may be a few cases where you need access to the real path from WASM, for example,\nlogging or executing commands. For this, the real path can be accessed with the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/enum.VirtualPath.html#method.real_path"},(0,o.kt)("inlineCode",{parentName:"a"},"real_path")),"\nfunction on the ",(0,o.kt)("inlineCode",{parentName:"p"},"VirtualPath")," enum (this is a Rust only feature)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"input.tool_dir.real_path();\n")),(0,o.kt)("h3",{id:"host-environment"},"Host environment"),(0,o.kt)("p",null,"Since WASM executes in its own runtime, it ",(0,o.kt)("em",{parentName:"p"},"does not")," have access to the current host operating\nsystem, architecture, so on and so forth. To bridge this gap, we provide the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/fn.get_proto_environment.html"},(0,o.kt)("inlineCode",{parentName:"a"},"get_proto_environment")),"\nfunction.\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/struct.HostEnvironment.html"},"Learn more about this type"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"let env = get_proto_environment()?;\n")),(0,o.kt)("p",null,"The host operating system and architecture can be accessed with ",(0,o.kt)("inlineCode",{parentName:"p"},"os")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"arch")," fields respectively.\nBoth fields are an enum in Rust, or a string in other languages."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"if env.os == HostOS::Windows {\n // Windows only\n}\n\nif env.arch == HostArch::Arm64 {\n // aarch64 only\n}\n")),(0,o.kt)("p",null,"Furthermore, the user's home directory (",(0,o.kt)("inlineCode",{parentName:"p"},"~"),") and proto's root directory (",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto"),") can be accessed\nwith the ",(0,o.kt)("inlineCode",{parentName:"p"},"home_dir")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"proto_dir")," fields, both of which are ",(0,o.kt)("a",{parentName:"p",href:"#virtual-paths"},"virtual paths"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"if env.home_dir.join(some_path).exists() {\n // Do something\n}\n")),(0,o.kt)("h3",{id:"host-functions"},"Host functions"),(0,o.kt)("p",null,"WASM is pretty powerful but it can't do everything since it's sandboxed. To work around this, we\nprovide a mechanism known as host functions, which are functions that are implemented on the host\n(in Rust), and can be executed from WASM. The following host functions are currently available:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk/latest/proto_pdk/macro.exec_command.html"},(0,o.kt)("inlineCode",{parentName:"a"},"exec_command"))," - Execute a\nsystem command on the host machine, with a provided list of arguments or environment variables."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk/latest/proto_pdk/macro.host_log.html"},(0,o.kt)("inlineCode",{parentName:"a"},"host_log"))," - Log a message to\nthe host's stderr. This acts like tracing logs, and is not a general purpose stdout logger.")),(0,o.kt)("p",null,"To use host functions, you'll need to make them available by registering them at the top of your\nRust file (only add the functions you want to use)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[host_fn]\nextern "ExtismHost" {\n fn exec_command(input: Json) -> Json;\n fn host_log(input: Json);\n}\n')),(0,o.kt)("p",null,"And then calling the provided ",(0,o.kt)("inlineCode",{parentName:"p"},"exec_command!")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"host_log!")," macros. Each macro supports shorthand\nvariants, and an explicit variant that accepts the input struct."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'exec_command!("which", ["node"]);\nexec_command!(pipe, "npm", ["install"]); // Pipe stdout/stderr\nexec_command!(inherit, "npm", ["install"]); // Inherit stdout/stderr\nexec_command!(ExecCommandInput {\n command: "npm".into(),\n args: vec!["install".into()],\n env_vars: HashMap::new(),\n stream: false,\n});\n')),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'host_log!("Some message");\nhost_log!("Some message with {}", "args");\nhost_log!(HostLogInput::Fields {\n message: "Some message with data".into(),\n data: HashMap::from_iter([\n ("data".into(), serde_json::to_value(data)?),\n ]),\n});\n')),(0,o.kt)("h3",{id:"tool-id-and-context"},"Tool ID and context"),(0,o.kt)("p",null,"When implementing plugin functions, you'll need to access information about the current tool. To get\nthe current tool ID (the key the plugin was configured with), use the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/fn.get_tool_id.html"},(0,o.kt)("inlineCode",{parentName:"a"},"get_tool_id"))," function."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"let id = get_tool_id();\n")),(0,o.kt)("p",null,"Additionally, we also provide what we call the tool context, which is information that is constantly\nchanging depending on the current step or state of proto's execution. The context cannot be accessed\nwith a stand-alone function, and is instead passed as a ",(0,o.kt)("inlineCode",{parentName:"p"},"context")," field in the input of many plugin\nfunctions."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn download_prebuilt(Json(input): Json) -> FnResult> {\n let version = input.context.version;\n // ...\n}\n")),(0,o.kt)("p",null,"The following fields are available on the\n",(0,o.kt)("a",{parentName:"p",href:"https://docs.rs/proto_pdk/latest/proto_pdk/struct.ToolContext.html"},"context object"),":"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"env_vars")," - A map of environment variables requested by the\n",(0,o.kt)("a",{parentName:"li",href:"#registering-metadata"},(0,o.kt)("inlineCode",{parentName:"a"},"register_tool"))," function."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"tool_dir")," - A virtual path to the tool's directory for the current version."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"version"),' - The current version. If not resolved, will be "latest".')),(0,o.kt)("h2",{id:"create-a-plugin"},"Create a plugin"),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"Although plugins can be written in any language that compiles to WASM, we've only tested Rust. The\nrest of this article assume you're using Rust and Cargo! Refer to ",(0,o.kt)("a",{parentName:"p",href:"https://extism.org/"},"Extism"),"'s\ndocumentation or our official ",(0,o.kt)("a",{parentName:"p",href:"https://github.com/moonrepo/node-plugin"},"Node.js plugin")," for other\nexamples.")),(0,o.kt)("p",null,"To start, create a new crate with Cargo:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo new plugin --lib\ncd plugin\n")),(0,o.kt)("p",null,"And set the lib type to ",(0,o.kt)("inlineCode",{parentName:"p"},"cdylib"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-toml",metastring:'title="Cargo.toml"',title:'"Cargo.toml"'},"[lib]\ncrate-type = ['cdylib']\n")),(0,o.kt)("p",null,"Our Rust plugins are powered by ",(0,o.kt)("a",{parentName:"p",href:"https://extism.org/"},"Extism"),", so lets add their PDK and ours as a\ndependency."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo add extism-pdk proto_pdk\n")),(0,o.kt)("p",null,"In all Rust files, we can import both PDKs with the following:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust",metastring:'title="src/lib.rs"',title:'"src/lib.rs"'},"use extism_pdk::*;\nuse proto_pdk::*;\n")),(0,o.kt)("p",null,"We can then build the WASM binary. The file will be available at\n",(0,o.kt)("inlineCode",{parentName:"p"},"target/wasm32-wasi/debug/.wasm"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo install cargo-wasi\ncargo wasi build\n")),(0,o.kt)("h2",{id:"implementing-plugin-functions"},"Implementing plugin functions"),(0,o.kt)("p",null,"Plugins are powered by a set of functions that are called from the host, and are annotated with\n",(0,o.kt)("inlineCode",{parentName:"p"},"#[plugin_fn]"),"."),(0,o.kt)("h3",{id:"registering-metadata"},"Registering metadata"),(0,o.kt)("p",null,"The first step in a plugin's life-cycle is to register metadata about the plugin with the\n",(0,o.kt)("inlineCode",{parentName:"p"},"register_tool")," function. This function is called immediately after a plugin is loaded at runtime,\nand must return a human-readable name and plugin type."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn register_tool(_: ()) -> FnResult> {\n Ok(Json(ToolMetadataOutput {\n name: "Node.js".into(),\n type_of: PluginType::Language,\n plugin_version: Some(env!("CARGO_PKG_VERSION").into()),\n ..ToolMetadataOutput::default()\n }))\n}\n')),(0,o.kt)("p",null,"This function also receives the plugin ID as input, allowing for conditional logic based on the ID.\nThe ID is the ",(0,o.kt)("a",{parentName:"p",href:"#enabling-plugins"},"key the plugin was configured with"),", and what is passed to ",(0,o.kt)("inlineCode",{parentName:"p"},"proto"),"\ncommands (e.g. ",(0,o.kt)("inlineCode",{parentName:"p"},"proto install "),")."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn register_tool(Json(input): Json) -> FnResult> {\n input.id\n // ...\n}\n")),(0,o.kt)("h3",{id:"downloading-pre-builts"},"Downloading pre-builts"),(0,o.kt)("p",null,"Our plugin layer ",(0,o.kt)("em",{parentName:"p"},"only")," supports downloading pre-built tools, typically as an archive, and does\n",(0,o.kt)("em",{parentName:"p"},"not")," support building from source. The ",(0,o.kt)("inlineCode",{parentName:"p"},"download_prebuilt")," function ",(0,o.kt)("em",{parentName:"p"},"must")," be defined, whichs\nconfigures how the tool should be downloaded and installed."),(0,o.kt)("p",null,"The following fields are available:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"archive_prefix")," - If the tool is distributed as an archive (zip, tar, etc), this is the name of\nthe direct folder within the archive that contains the tool, and will be removed when unpacking\nthe archive. If there is no prefix folder within the archive, this setting can be omitted."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"download_url")," (required) - A secure URL to download the tool/archive."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"download_name")," - File name of the archive to download. If not provided, will attempt to extract\nit from the URL."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"checksum_url")," - A secure URL to download the checksum file for verification. If the tool does not\nsupport checksum verification, this setting can be omitted.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn download_prebuilt(Json(input): Json) -> FnResult> {\n let env = get_proto_environment()?;\n\n check_supported_os_and_arch(\n NAME,\n &env,\n permutations! [\n HostOS::Linux => [HostArch::X64, HostArch::Arm64, HostArch::Arm, HostArch::Powerpc64, HostArch::S390x],\n HostOS::MacOS => [HostArch::X64, HostArch::Arm64],\n HostOS::Windows => [HostArch::X64, HostArch::X86, HostArch::Arm64],\n ],\n )?;\n\n let version = input.context.version;\n let arch = env.arch;\n let os = env.os;\n\n let prefix = match 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("Node.js".into(), other.into()))?;\n }\n };\n\n let filename = if 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')),(0,o.kt)("h4",{id:"unpacking-an-archive"},"Unpacking an archive"),(0,o.kt)("p",null,"Our plugin layer will do its best to detect file extensions, unpack the downloaded file (if an\narchive), and install the tool to the correct directory. However, we're unable to account for ",(0,o.kt)("em",{parentName:"p"},"all"),"\nedge cases, so for situations where the install params above are not sufficient, you may define an\n",(0,o.kt)("inlineCode",{parentName:"p"},"unpack_archive")," function."),(0,o.kt)("p",null,"This function receives an input with the following fields:"),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"input_file")," - Virtual path to the downloaded file. Maps to ",(0,o.kt)("inlineCode",{parentName:"li"},"~/.proto/temp//"),"."),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("inlineCode",{parentName:"li"},"output_dir")," - Virtual directory to unpack the archive into, or copy the binary to. Maps to\n",(0,o.kt)("inlineCode",{parentName:"li"},"~/.proto/tools//"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn unpack_archive(Json(input): Json) -> FnResult<()> {\n untar(input.input_file, input.output_dir)?;\n Ok(())\n}\n")),(0,o.kt)("h3",{id:"locating-binaries"},"Locating binaries"),(0,o.kt)("p",null,"Even though a tool has been installed, we must inform proto of where to find the binary to execute.\nThis can be achieved with the optional ",(0,o.kt)("inlineCode",{parentName:"p"},"locate_bins")," function. If this function is not defined,\nproto will assume the binary is named ",(0,o.kt)("inlineCode",{parentName:"p"},"")," (",(0,o.kt)("inlineCode",{parentName:"p"},".exe")," on Windows), relative from the installation\ndirectory."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn locate_bins(Json(_): Json) -> FnResult> {\n let env = get_proto_environment()?;\n\n Ok(Json(LocateBinsOutput {\n bin_path: Some(if env.os == HostOS::Windows {\n "node.exe".into()\n } else {\n "bin/node".into()\n }),\n ..LocateBinsOutput::default()\n }))\n}\n')),(0,o.kt)("p",null,"Furthermore, the ",(0,o.kt)("inlineCode",{parentName:"p"},"locate_bins")," function can define a list of lookups for the globals installation\ndirectory. proto will loop through each lookup, and return the first directory that exists on the\ncurrent file system. proto will also expand environment variables in the format of ",(0,o.kt)("inlineCode",{parentName:"p"},"$VAR_NAME"),". If a\nvariable is not defined, or has an empty value, the lookup will be skipped. To demonstrate this,\nwe'll use ",(0,o.kt)("a",{parentName:"p",href:"https://deno.land/manual@v1.35.0/tools/script_installer"},"Deno"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn locate_bins(Json(_): Json) -> FnResult> {\n Ok(Json(LocateBinsOutput {\n fallback_last_globals_dir: true,\n globals_lookup_dirs: vec!["$DENO_INSTALL_ROOT/bin".into(), "$HOME/.deno/bin".into()],\n ..LocateBinsOutput::default()\n }))\n}\n')),(0,o.kt)("h3",{id:"loading-and-resolving-versions"},"Loading and resolving versions"),(0,o.kt)("p",null,"Now that the tool can be downloaded and installed, we must configure how to resolve available\nversions to actually be installed. To provide a list of versions and language specific aliases, the\n",(0,o.kt)("inlineCode",{parentName:"p"},"load_versions")," function must be defined."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn load_versions(Json(_): Json) -> FnResult> {\n let mut output = LoadVersionsOutput::default();\n let response: Vec = fetch_url("https://nodejs.org/dist/index.json")?;\n\n for (index, item) in response.iter().enumerate() {\n let version = Version::parse(&item.version[1..])?; // Starts with v\n\n if index == 0 {\n output.latest = Some(version.clone());\n }\n\n output.versions.push(version);\n }\n\n Ok(Json(output))\n}\n')),(0,o.kt)("p",null,"Furthermore, we support an optional function named ",(0,o.kt)("inlineCode",{parentName:"p"},"resolve_version"),", that can be defined to\nintercept the version resolution process. This function receives an input with an initial candidate,\neither an alias or version, and can replace it with a new candidate. The candidate must be a valid\nalias or version as defined in ",(0,o.kt)("inlineCode",{parentName:"p"},"load_versions"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn resolve_version(\n Json(input): Json,\n) -> FnResult> {\n let mut output = ResolveVersionOutput::default();\n\n if input.initial == "node" {\n output.candidate = Some("latest".into());\n\n } else if input.initial == "lts-*" || input.initial == "lts/*" {\n output.candidate = Some("stable".into());\n\n } else if input.initial.starts_with("lts-") || input.initial.starts_with("lts/") {\n output.candidate = Some(input.initial[4..].to_owned());\n }\n\n Ok(Json(output))\n}\n')),(0,o.kt)("h3",{id:"detecting-versions"},"Detecting versions"),(0,o.kt)("p",null,"And lastly, we can configure how to ",(0,o.kt)("a",{parentName:"p",href:"./detection"},"detect a version")," contextually at runtime, using\nthe ",(0,o.kt)("inlineCode",{parentName:"p"},"detect_version_files")," function and optional ",(0,o.kt)("inlineCode",{parentName:"p"},"parse_version_file")," function. The\n",(0,o.kt)("inlineCode",{parentName:"p"},"detect_version_files")," function can return a list of files to locate within a directory."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn detect_version_files(_: ()) -> FnResult> {\n Ok(Json(DetectVersionOutput {\n files: vec![\n ".nvmrc".into(),\n ".node-version".into(),\n "package.json".into(),\n ],\n }))\n}\n')),(0,o.kt)("p",null,'By default our plugin layer will assume the version file\'s contents contain the literal version, and\nnothing else, like "1.2.3". If any of the files in the ',(0,o.kt)("inlineCode",{parentName:"p"},"detect_version_files")," list require custom\nparsing (for example, ",(0,o.kt)("inlineCode",{parentName:"p"},"package.json")," above), you can define the ",(0,o.kt)("inlineCode",{parentName:"p"},"parse_version_file")," function."),(0,o.kt)("p",null,"This function receives the file name and contents as input, and must return the parsed version (if\napplicable)."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn parse_version_file(Json(input): Json) -> FnResult> {\n let mut version = None;\n\n if input.file == "package.json" {\n let json: PackageJson = serde_json::from_str(&input.content)?;\n\n if let Some(engines) = json.engines {\n if let Some(constraint) = engines.get("node") {\n version = Some(constraint.to_owned());\n }\n }\n } else {\n version = Some(input.content.trim().to_owned());\n }\n\n Ok(Json(ParseVersionFileOutput { version }))\n}\n')),(0,o.kt)("h3",{id:"creating-shims"},"Creating shims"),(0,o.kt)("p",null,"Tools within proto wouldn't function without shims, and as such, plugins can register their own\nshims to be created. By default, proto ",(0,o.kt)("em",{parentName:"p"},"will always")," create a global shim of the plugin at\n",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/bin/"),", but you can also register additional shims with the ",(0,o.kt)("inlineCode",{parentName:"p"},"create_shims")," function."),(0,o.kt)("h4",{id:"global-shims"},"Global shims"),(0,o.kt)("p",null,"Global shims are optional scripts that are available on ",(0,o.kt)("inlineCode",{parentName:"p"},"PATH")," as they are generated in the\n",(0,o.kt)("inlineCode",{parentName:"p"},"~/.proto/bin")," directory, and can be defined with the ",(0,o.kt)("inlineCode",{parentName:"p"},"global_shims")," parameter. This param is a hash\nmap, where the key is the shim file name, and the value is a configuration object."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[plugin_fn]\npub fn create_shims(Json(_): Json) -> FnResult> {\n let env = get_proto_environment()?;\n let mut global_shims = HashMap::new();\n\n global_shims.insert(\n "npx".into(),\n ShimConfig::global_with_alt_bin(if env.os == HostOS::Windows {\n "npx.cmd".into()\n } else {\n "bin/npx".into()\n }),\n );\n\n Ok(Json(CreateShimsOutput {\n global_shims,\n ..CreateShimsOutput::default()\n }))\n}\n')),(0,o.kt)("p",null,"Furthermore, if you'd prefer to ",(0,o.kt)("em",{parentName:"p"},"not")," create a primary global shim at all, enable the\n",(0,o.kt)("inlineCode",{parentName:"p"},"no_primary_global")," field."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},"#[plugin_fn]\npub fn create_shims(Json(_): Json) -> FnResult> {\n Ok(Json(CreateShimsOutput {\n no_primary_global: true,\n ..CreateShimsOutput::default()\n }))\n}\n")),(0,o.kt)("h3",{id:"installing-and-uninstalling-globals"},"Installing and uninstalling globals"),(0,o.kt)("p",null,"Most languages support the concept of installing packages/dependencies globally, and making them\navailable on ",(0,o.kt)("inlineCode",{parentName:"p"},"PATH"),". proto supports this with the\n",(0,o.kt)("a",{parentName:"p",href:"./commands/install-global"},(0,o.kt)("inlineCode",{parentName:"a"},"proto install-global"))," and\n",(0,o.kt)("a",{parentName:"p",href:"./commands/uninstall-global"},(0,o.kt)("inlineCode",{parentName:"a"},"proto uninstall-global"))," commands, which are simple convenience\nwrappers around the native binary."),(0,o.kt)("p",null,"From the context of the plugin, how globals are installed and uninstalled is implemented with the\n",(0,o.kt)("inlineCode",{parentName:"p"},"install_global")," and ",(0,o.kt)("inlineCode",{parentName:"p"},"uninstall_global")," functions respectively. Both functions receive the\n",(0,o.kt)("inlineCode",{parentName:"p"},"dependency")," to install as input."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'#[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#[plugin_fn]\npub fn uninstall_global(\n Json(input): Json,\n) -> FnResult> {\n let result = exec_command!(inherit, "npm", ["uninstall", "--global", &input.dependency]);\n\n Ok(Json(UninstallGlobalOutput::from_exec_command(result)))\n}\n')),(0,o.kt)("h2",{id:"testing"},"Testing"),(0,o.kt)("p",null,"The best way to test the plugin is to execute it through ",(0,o.kt)("inlineCode",{parentName:"p"},"proto")," directly. To do this, you'll need\nto configure a ",(0,o.kt)("inlineCode",{parentName:"p"},".prototools")," file at the root of your plugin's repository that maps the plugin to a\ndebug build:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-toml"},'[plugins]\n = "source:target/wasm32-wasi/debug/.wasm"\n')),(0,o.kt)("p",null,"And everytime you make a change to the plugin, you'll need to rebuild it with:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo wasi build\n")),(0,o.kt)("p",null,"With these 2 pieces in place, you can now execute ",(0,o.kt)("inlineCode",{parentName:"p"},"proto")," commands. Be sure you're running them from\nthe directory with the ",(0,o.kt)("inlineCode",{parentName:"p"},".prototools")," file, and that you're passing ",(0,o.kt)("inlineCode",{parentName:"p"},"--log trace"),". Logs are extremely\nhelpful for figuring out what's going on."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"proto --log trace install \nproto --log trace list-remote \n...\n")),(0,o.kt)("h3",{id:"unit-tests"},"Unit tests"),(0,o.kt)("p",null,"Testing WASM plugins is a bit tricky, but we've taken it upon ourselves to streamline this process\nas much as possible with built-in test utilities, and Rust macros for generating common test cases.\nTo begin, install all necessary development dependencies:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo add --dev proto_core proto_pdk_test_utils starbase_sandbox tokio\n")),(0,o.kt)("p",null,"And as mentioned above, everytime you make a change to the plugin, you'll need to rebuild it with:"),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo wasi build\n")),(0,o.kt)("h4",{id:"testing-plugin-functions"},"Testing plugin functions"),(0,o.kt)("p",null,"The common test case is simply calling plugin functions with a provided input and asserting the\noutput is correct. This can be achieved by creating a plugin instance with ",(0,o.kt)("inlineCode",{parentName:"p"},"create_plugin")," and\ncalling the appropriate method."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'use proto_pdk_test_utils::*;\nuse starbase_sandbox::create_empty_sandbox;\n\n#[test]\nfn registers_metadata() {\n let sandbox = create_empty_sandbox();\n let plugin = create_plugin("id", sandbox.path());\n\n assert_eq!(\n plugin.register_tool(ToolMetadataInput::default()),\n ToolMetadataOutput {\n name: "Name".into(),\n ..ToolMetadataOutput::default()\n }\n );\n}\n')),(0,o.kt)("admonition",{type:"info"},(0,o.kt)("p",{parentName:"admonition"},"We suggest using this pattern for static functions that return a deterministic output from a\nprovided input, and not for dynamic functions that make HTTP requests or execute host commands.")),(0,o.kt)("h4",{id:"generating-cases-from-macros"},"Generating cases from macros"),(0,o.kt)("p",null,"To reduce the burden of writing custom tests for common flows, like downloading a pre-built,\nresolving versions, and generating shims, we provide a set of Rust decl macros that will generate\nthe tests for you."),(0,o.kt)("p",null,"To test downloading and installing, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_download_install_tests!"),". This macro requires a\nplugin ID and a real version to test with."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'use proto_pdk_test_utils::*;\nuse starbase_sandbox::create_empty_sandbox;\n\ngenerate_download_install_tests!("id", "1.2.3");\n')),(0,o.kt)("p",null,"To test version resolving, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_resolve_versions_tests!"),". This macro requires a plugin ID,\nand a mapping of version/aliases assertions to expectations."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'generate_resolve_versions_tests!("id", {\n "0.4" => "0.4.12",\n "0.5.1" => "0.5.1",\n "stable" => "1.0.0",\n});\n')),(0,o.kt)("p",null,"To test installing and uninstalling globals, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_globals_test!"),". This macro requires a\nplugin ID, the dependency to install, and an optional environment variable to the globals directory."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'// Doesn\'t support all use cases! If this doesn\'t work, implement a test case manually.\ngenerate_globals_test!("id", "dependency", "GLOBAL_INSTALL_ROOT");\n')),(0,o.kt)("p",null,"And lastly, to test shims, use ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_global_shims_test!")," or ",(0,o.kt)("inlineCode",{parentName:"p"},"generate_local_shims_test!"),". Both\nmacros require a plugin ID, but also support additional arguments when creating more than 1 shim.\nThese macros generate snapshots using ",(0,o.kt)("a",{parentName:"p",href:"https://insta.rs/"},"Insta"),"."),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-rust"},'// Only the single binary\ngenerate_global_shims_test!("id");\n\n// When creating alternate/additional globals\ngenerate_global_shims_test!("id", ["other", "another"]);\n\n// When creating local shims, each file required in the list\ngenerate_local_shims_test!("id", ["a", "b", "c"]);\n')),(0,o.kt)("h2",{id:"building-and-publishing"},"Building and publishing"),(0,o.kt)("p",null,"At this point, you should have a fully working WASM plugin, but to make it available to downstream\nproto users, you'll still need to build and make the ",(0,o.kt)("inlineCode",{parentName:"p"},".wasm")," file available. The easiest solution is\nto publish a GitHub release and include the ",(0,o.kt)("inlineCode",{parentName:"p"},".wasm")," file as an asset."),(0,o.kt)("h3",{id:"manually-create-releases"},"Manually create releases"),(0,o.kt)("p",null,"When your plugin is ready to be published, you can create a release on GitHub using the following\nsteps."),(0,o.kt)("ol",null,(0,o.kt)("li",{parentName:"ol"},"Tag the release and push to GitHub.")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"git tag v0.0.1\ngit push --tags\n")),(0,o.kt)("ol",{start:2},(0,o.kt)("li",{parentName:"ol"},"Build a release version of the plugin. The file will be available at\n",(0,o.kt)("inlineCode",{parentName:"li"},"target/wasm32-wasi/release/.wasm"),".")),(0,o.kt)("pre",null,(0,o.kt)("code",{parentName:"pre",className:"language-shell"},"cargo wasi build --release\n")),(0,o.kt)("ol",{start:3},(0,o.kt)("li",{parentName:"ol"},"In GitHub, navigate to the tags page, find the new tag, create a new release, and attach the\nbuilt file as an asset.")),(0,o.kt)("h3",{id:"automate-releases"},"Automate releases"),(0,o.kt)("p",null,"Coming soon!"),(0,o.kt)("h2",{id:"resources"},"Resources"),(0,o.kt)("p",null,"Some helpful resources for learning about and building plugins."),(0,o.kt)("ul",null,(0,o.kt)("li",{parentName:"ul"},"Official proto WASM plugins",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/bun-plugin"},"Bun")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/deno-plugin"},"Deno")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/go-plugin"},"Go")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/node-plugin"},"Node")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/node-plugin"},"npm, pnpm, yarn")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/rust-plugin"},"Rust")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://github.com/moonrepo/schema-plugin"},"Schema")))),(0,o.kt)("li",{parentName:"ul"},"Plugin development kit",(0,o.kt)("ul",{parentName:"li"},(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk/"},(0,o.kt)("inlineCode",{parentName:"a"},"proto_pdk")," docs")),(0,o.kt)("li",{parentName:"ul"},(0,o.kt)("a",{parentName:"li",href:"https://docs.rs/proto_pdk_test_utils/"},(0,o.kt)("inlineCode",{parentName:"a"},"proto_pdk_test_utils")," docs"))))))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a20401e4.d7102a18.js b/assets/js/a20401e4.fcdf2f72.js similarity index 73% rename from assets/js/a20401e4.d7102a18.js rename to assets/js/a20401e4.fcdf2f72.js index a3f238ca941..f6a95d3b37c 100644 --- a/assets/js/a20401e4.d7102a18.js +++ b/assets/js/a20401e4.fcdf2f72.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[969],{35318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>d});var o=n(27378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(n),d=r,f=u["".concat(s,".").concat(d)]||u[d]||m[d]||a;return n?o.createElement(f,l(l({ref:t},c),{},{components:n})):o.createElement(f,l({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=u;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(25773),r=(n(27378),n(35318));const a={title:"install"},l=void 0,i={unversionedId:"proto/commands/install",id:"proto/commands/install",title:"install",description:"The proto install (or proto i) command will download and install a tool by unpacking",source:"@site/docs/proto/commands/install.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/install",permalink:"/docs/proto/commands/install",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/install.mdx",tags:[],version:"current",frontMatter:{title:"install"},sidebar:"proto",previous:{title:"global",permalink:"/docs/proto/commands/global"},next:{title:"install-global",permalink:"/docs/proto/commands/install-global"}},s={},p=[{value:"Arguments",id:"arguments",level:3},{value:"Options",id:"options",level:3}],c={toc:p};function m(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"proto install ")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"proto i"),") command will download and install a tool by unpacking\ntheir archive to ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/tools/"),". If the tool has already been installed, the command will\nexit early."),(0,r.kt)("p",null,"The command is also smart enough to resolve partial versions, so 1, 1.2, and 1.2.3 are all\nacceptable. It even supports aliases when applicable, like ",(0,r.kt)("inlineCode",{parentName:"p"},"latest"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"next"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"beta"),", etc."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install deno 1.31\n")),(0,r.kt)("p",null,"Some tools run ",(0,r.kt)("a",{parentName:"p",href:"../tools"},"post-install hooks")," that support arbitrary arguments that can be passed\nafter ",(0,r.kt)("inlineCode",{parentName:"p"},"--"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install go -- --no-gobin\n")),(0,r.kt)("h3",{id:"arguments"},"Arguments"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"")," - Type of tool."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[version]"),' - Version of tool. Defaults to "latest".'),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[-- ]")," - Additional arguments to pass to post-install hooks.")),(0,r.kt)("h3",{id:"options"},"Options"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--pin")," - Pin the resolved version as the global default.")))}m.isMDXComponent=!0}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[969],{35318:(e,t,n)=>{n.d(t,{Zo:()=>c,kt:()=>d});var o=n(27378);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function l(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),p=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},c=function(e){var t=p(e.components);return o.createElement(s.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,c=i(e,["components","mdxType","originalType","parentName"]),u=p(n),d=r,f=u["".concat(s,".").concat(d)]||u[d]||m[d]||a;return n?o.createElement(f,l(l({ref:t},c),{},{components:n})):o.createElement(f,l({ref:t},c))}));function d(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,l=new Array(a);l[0]=u;var i={};for(var s in t)hasOwnProperty.call(t,s)&&(i[s]=t[s]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var p=2;p{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>l,default:()=>m,frontMatter:()=>a,metadata:()=>i,toc:()=>p});var o=n(25773),r=(n(27378),n(35318));const a={title:"install"},l=void 0,i={unversionedId:"proto/commands/install",id:"proto/commands/install",title:"install",description:"The proto install (or proto i) command will download and install a tool by unpacking",source:"@site/docs/proto/commands/install.mdx",sourceDirName:"proto/commands",slug:"/proto/commands/install",permalink:"/docs/proto/commands/install",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/commands/install.mdx",tags:[],version:"current",frontMatter:{title:"install"},sidebar:"proto",previous:{title:"global",permalink:"/docs/proto/commands/global"},next:{title:"install-global",permalink:"/docs/proto/commands/install-global"}},s={},p=[{value:"Arguments",id:"arguments",level:3},{value:"Options",id:"options",level:3}],c={toc:p};function m(e){let{components:t,...n}=e;return(0,r.kt)("wrapper",(0,o.Z)({},c,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("p",null,"The ",(0,r.kt)("inlineCode",{parentName:"p"},"proto install ")," (or ",(0,r.kt)("inlineCode",{parentName:"p"},"proto i"),") command will download and install a tool by unpacking\ntheir archive to ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/tools/"),". If the tool has already been installed, the command will\nexit early."),(0,r.kt)("p",null,"The command is also smart enough to resolve partial versions, so 1, 1.2, and 1.2.3 are all\nacceptable. It even supports aliases when applicable, like ",(0,r.kt)("inlineCode",{parentName:"p"},"latest"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"next"),", ",(0,r.kt)("inlineCode",{parentName:"p"},"beta"),", etc. To install\na canary release, use ",(0,r.kt)("inlineCode",{parentName:"p"},"--canary"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install deno 1.31\n$ proto install deno --canary\n")),(0,r.kt)("p",null,"Some tools run ",(0,r.kt)("a",{parentName:"p",href:"../tools"},"post-install hooks")," that support arbitrary arguments that can be passed\nafter ",(0,r.kt)("inlineCode",{parentName:"p"},"--"),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-shell"},"$ proto install go -- --no-gobin\n")),(0,r.kt)("h3",{id:"arguments"},"Arguments"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"")," - Type of tool."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[version]"),' - Version of tool. Defaults to "latest".'),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"[-- ]")," - Additional arguments to pass to post-install hooks.")),(0,r.kt)("h3",{id:"options"},"Options"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--canary")," - Install a canary (next, nightly, etc) version."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"--pin")," - Pin the resolved version as the global default.")))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/a7023ddc.767d3834.js b/assets/js/a7023ddc.767d3834.js new file mode 100644 index 00000000000..fa7fc52a47a --- /dev/null +++ b/assets/js/a7023ddc.767d3834.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1713],{53457:l=>{l.exports=JSON.parse('[{"label":"proto","permalink":"/blog/tags/proto","count":19},{"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":"global","permalink":"/blog/tags/global","count":1},{"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":"ci","permalink":"/blog/tags/ci","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":"shim","permalink":"/blog/tags/shim","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":"action","permalink":"/blog/tags/action","count":1},{"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":"rust","permalink":"/blog/tags/rust","count":2},{"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":"target","permalink":"/blog/tags/target","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":"toolchain","permalink":"/blog/tags/toolchain","count":6},{"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":"graph","permalink":"/blog/tags/graph","count":2},{"label":"pipeline","permalink":"/blog/tags/pipeline","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.7d24e535.js b/assets/js/a7023ddc.7d24e535.js deleted file mode 100644 index f1689773d28..00000000000 --- a/assets/js/a7023ddc.7d24e535.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1713],{53457:l=>{l.exports=JSON.parse('[{"label":"tasks","permalink":"/blog/tags/tasks","count":6},{"label":"proto","permalink":"/blog/tags/proto","count":18},{"label":"wasm","permalink":"/blog/tags/wasm","count":5},{"label":"plugin","permalink":"/blog/tags/plugin","count":5},{"label":"global","permalink":"/blog/tags/global","count":1},{"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":"ci","permalink":"/blog/tags/ci","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":"shim","permalink":"/blog/tags/shim","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":"action","permalink":"/blog/tags/action","count":1},{"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":"rust","permalink":"/blog/tags/rust","count":2},{"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":"target","permalink":"/blog/tags/target","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":"toolchain","permalink":"/blog/tags/toolchain","count":6},{"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":"graph","permalink":"/blog/tags/graph","count":2},{"label":"pipeline","permalink":"/blog/tags/pipeline","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/ad536080.2bf496a3.js b/assets/js/ad536080.2bf496a3.js deleted file mode 100644 index 5fc0bf9fd81..00000000000 --- a/assets/js/ad536080.2bf496a3.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5077],{35318:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>u});var n=a(27378);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var c=n.createContext({}),p=function(e){var t=n.useContext(c),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=p(e.components);return n.createElement(c.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,c=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),d=p(a),u=r,h=d["".concat(c,".").concat(u)]||d[u]||m[u]||o;return a?n.createElement(h,l(l({ref:t},s),{},{components:a})):n.createElement(h,l({ref:t},s))}));function u(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=d;var i={};for(var c in t)hasOwnProperty.call(t,c)&&(i[c]=t[c]);i.originalType=e,i.mdxType="string"==typeof e?e:r,l[1]=i;for(var p=2;p{a.d(t,{Z:()=>l});var n=a(27378),r=a(83469),o=a(9619);function l(e){let{text:t}=e;return n.createElement(o.Z,{text:t,icon:r.SZw,variant:"success",className:"absolute right-0 top-1.5"})}},87129:(e,t,a)=>{a.d(t,{Z:()=>l});var n=a(27378),r=a(81884),o=a(30658);function l(){return n.createElement("div",{className:"grid grid-cols-5 gap-2 px-2"},n.createElement("div",{className:"text-center"},n.createElement(r.default,{href:"/docs/proto/tools#bun"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M64 10.308c-5.12 0-10.24 2.288-16.231 5.71a360.541 360.541 0 0 0-6.144 3.605c-3.908 2.32-8.295 4.97-13.415 7.604C10.546 36.427 0 51.78 0 68.237c0 27.27 28.706 49.455 64 49.455s64-22.185 64-49.454c0-16.474-10.549-31.811-28.213-41.01-6.314-3.276-11.11-6.14-15.36-8.674-1.826-1.119-3.533-2.141-5.24-3.079C73.59 12.282 69.12 10.308 64 10.308Zm0 4.115c4.13 0 7.902 1.646 13.073 4.608 1.553.905 3.258 1.925 5.119 3.027 4.079 2.436 9.113 5.53 15.564 8.821 16.265 8.443 25.977 22.415 25.977 37.359 0 24.998-26.794 45.34-59.733 45.34-32.939 0-59.733-20.342-59.733-45.34 0-14.944 9.71-28.917 25.958-37.392 5.12-2.683 9.676-5.364 13.652-7.733 2.116-1.251 4.113-2.454 6.042-3.54 5.546-3.094 9.95-5.15 14.081-5.15zm3.987 2.75c-.534-.001-.811.721-.318 1.067v.066a27.418 27.418 0 0 1 8.023 8.454 26.356 26.356 0 0 1 3.666 10.9.528.528 0 0 0 .109.39.577.577 0 0 0 .767.125.542.542 0 0 0 .235-.333c1.57-5.744.682-15.536-12.238-20.621a.68.68 0 0 0-.243-.048zm-4.508.406c-.409.032-.777.51-.52.942v.064a26.113 26.113 0 0 1 3.889 10.796 25.818 25.818 0 0 1-1.142 11.373c-.205.576.528 1.07.938.592 3.737-4.608 6.997-13.757-2.765-23.631a.536.536 0 0 0-.4-.136zm-3.875.41a.6.6 0 0 0-.52.596 26.19 26.19 0 0 1-2.48 11.273 27.107 27.107 0 0 1-7.129 9.25c-.478.412-.102 1.202.512.971 5.752-2.156 13.517-8.607 10.24-21.625-.068-.37-.354-.506-.623-.464zm-5.04 2.282a.628.628 0 0 0-.533.34 28.014 28.014 0 0 1-7.298 9.241 29.244 29.244 0 0 1-10.57 5.569c-.615.181-.63 1.054.018 1.037 6.144.362 16.025-2.386 18.977-15.552.096-.411-.247-.654-.593-.635zM42.797 55.206a9.7 9.7 0 0 0-3.367.686 9.339 9.339 0 0 0-4.223 3.34 8.84 8.84 0 0 0-1.585 5.039c0 2.402.988 4.706 2.748 6.406 1.76 1.7 4.146 2.658 6.637 2.663a9.656 9.656 0 0 0 5.23-1.521 9.15 9.15 0 0 0 3.47-4.067 8.765 8.765 0 0 0 .544-5.24 8.975 8.975 0 0 0-2.57-4.647 9.513 9.513 0 0 0-4.815-2.486 9.744 9.744 0 0 0-2.07-.173zm42.344 0a9.707 9.707 0 0 0-3.373.681 9.34 9.34 0 0 0-4.232 3.34 8.837 8.837 0 0 0-1.59 5.044c-.004 2.395.976 4.694 2.726 6.394 1.75 1.7 4.127 2.661 6.61 2.675a9.66 9.66 0 0 0 5.244-1.496 9.155 9.155 0 0 0 3.494-4.057 8.766 8.766 0 0 0 .562-5.243 8.971 8.971 0 0 0-2.558-4.66 9.51 9.51 0 0 0-4.813-2.5 9.747 9.747 0 0 0-2.07-.178zM40.3 58.037a3.574 3.574 0 0 1 2.327 1c.494.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525 3.625 3.625 0 0 1-1.967.567 3.6 3.6 0 0 1-2.487-1.004 3.349 3.349 0 0 1-1.03-2.404c0-.675.21-1.334.598-1.894.39-.56.941-.997 1.588-1.254a3.647 3.647 0 0 1 1.525-.255zm42.275 0c.173.009.345.03.517.063a3.58 3.58 0 0 1 1.81.937c.493.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525c-.583.373-1.27.57-1.969.567h-.033a3.598 3.598 0 0 1-2.465-1.017 3.346 3.346 0 0 1-1.016-2.391c0-.675.207-1.334.595-1.894.39-.56.944-.997 1.59-1.254a3.647 3.647 0 0 1 1.525-.255zM53.623 77.996a2.482 2.482 0 0 0-1.065.204c-.334.145-.63.363-.864.635-.197.226-.338.49-.415.775a1.904 1.904 0 0 0-.029.871c.806 3.245 2.667 6.156 5.308 8.31a12.881 12.881 0 0 0 7.594 3.292c2.838-.244 5.51-1.403 7.58-3.291 2.641-2.155 4.5-5.066 5.305-8.31a1.886 1.886 0 0 0-.018-.87 1.937 1.937 0 0 0-.409-.777 2.446 2.446 0 0 0-.864-.629 2.538 2.538 0 0 0-1.063-.21zm0 1.91 21.06.031a.369.369 0 0 1 .342.15 13.448 13.448 0 0 1-2.402 4.898l-.073-.06c-2.171-1.994-5.042-3.129-8.04-3.177-1.602.013-3.18.37-4.623 1.042a10.806 10.806 0 0 0-3.685 2.802 13.47 13.47 0 0 1-2.937-5.538c.017-.033.085-.148.358-.148zm10.973 3.504c2.556.073 4.991 1.065 6.827 2.782l.083.068c-.354.358-.73.699-1.125 1.02a10.885 10.885 0 0 1-6.229 2.845 10.795 10.795 0 0 1-6.23-2.88 13.946 13.946 0 0 1-.482-.412h.006a9.078 9.078 0 0 1 3.166-2.502 9.427 9.427 0 0 1 3.984-.92z"})))),n.createElement("div",{className:"text-center"},n.createElement(r.default,{href:"/docs/proto/tools#deno"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M59.016 13.328c-.239.024-1 .113-1.688.176-9.777 1.023-19.406 5.164-27.258 11.738-1.449 1.203-4.75 4.504-5.953 5.953-6.5 7.766-10.3 16.48-11.703 26.793-.312 2.29-.312 10.016 0 12.305 1.402 10.312 5.203 19.027 11.703 26.793 1.203 1.45 4.504 4.75 5.953 5.953 7.766 6.5 16.48 10.3 26.793 11.703 2.29.313 10.016.313 12.305 0 10.312-1.402 19.027-5.203 26.793-11.703 1.45-1.203 4.75-4.504 5.953-5.953 6.5-7.766 10.3-16.48 11.7-26.793.316-2.29.316-10.016 0-12.305-1.4-10.312-5.2-19.027-11.7-26.793-1.203-1.449-4.504-4.75-5.953-5.953-7.738-6.476-16.543-10.324-26.719-11.687-1.101-.153-2.699-.215-5.664-.239-2.262-.027-4.328-.011-4.562.012zm.625 5.402c0 1.461.097 4.637.238 7.653.074 1.472.16 3.586.2 4.687.136 3.903.55 14.14.612 15.055l.063.91-.563-.062c-.312-.024-.601-.098-.652-.137-.035-.05-.125-.914-.176-1.926-.222-4.45-.96-21.719-1.035-24.242l-.078-2.777.352-.047c.187-.028.5-.063.699-.078l.34-.012zm11.964-.3c.012.011.051 3.789.086 8.39.051 4.614.114 8.75.153 9.2.035.464.023.863-.04.89-.05.035-.363.035-.675 0l-.574-.05-.086-3.641a692.868 692.868 0 00-.14-4.961c-.099-2.215-.188-9.727-.11-9.914.047-.14.187-.153.71-.063.364.074.665.137.676.149zm-28.921 4.187c.078.113.664 7.004 1.39 16.016.239 3.066.473 5.867.512 6.215.062.636.05.664-.352.914-.222.136-.449.25-.5.25-.035 0-.109-.325-.148-.727-.176-1.625-.852-9.476-1.324-15.152-.278-3.34-.528-6.328-.563-6.653-.062-.55-.05-.601.274-.773.398-.215.625-.25.71-.09zm34.421 2.516c.352.125.387.187.465.898.125 1.25.086 7.227-.05 7.227-.364 0-1.114-.426-1.176-.664-.04-.149-.074-1.922-.074-3.938 0-4.062-.051-3.824.835-3.523zm-23.093.586c0 .336.09 2.199.187 4.164.102 1.96.215 4.449.266 5.527.086 2.176.11 2.098-.727 2.149-.414.011-.414.011-.437-.614-.024-.347-.086-1.437-.164-2.437-.063-1-.211-3.164-.313-4.813a117.11 117.11 0 00-.261-3.64c-.075-.625-.063-.649.273-.774.203-.074.55-.136.777-.136.399-.012.399-.012.399.574zm34.683 1.715l.426.171.09 1.676c.035.914.062 2.89.035 4.38l-.035 2.722-.527-.262-.524-.25-.039-4.152c-.023-2.285-.012-4.223.012-4.313.05-.187.05-.187.562.028zM65.867 29.07c.074.075.25 6.137.262 9.215l.012 1.852-.586-.09c-.34-.04-.614-.074-.625-.086-.04-.027-.414-9.29-.414-10.191v-.926l.636.074c.364.05.676.113.715.152zm28.793.887c.153.176.176 2.914.215 18.016.035 17.343.035 17.793-.188 17.793a.806.806 0 01-.44-.164c-.188-.137-.212-1.649-.274-16.465-.051-8.977-.114-17.13-.149-18.117l-.078-1.801.363.261c.215.153.454.364.551.477zM83.445 32.52c.063.05.125.761.137 1.578.063 2.761.074 19.703.012 19.754-.024.023-.25-.04-.5-.137l-.45-.188v-21.27l.352.075c.188.05.387.125.45.188zm-34.507.699c.035.34.097 1.101.136 1.726.04.614.125 2.016.2 3.102.152 2.2.124 2.34-.587 2.34-.374 0-.425-.04-.476-.414-.125-.739-.563-6.891-.5-6.989.062-.09.715-.312 1.012-.34.078-.011.175.25.215.575zm-20.68 3.191c.137 1.324.41 4.102.613 6.164.211 2.063.387 3.813.387 3.887 0 .152-.965.625-1.063.527-.062-.062-1.312-11.129-1.312-11.629 0-.3.96-1.562 1.086-1.425.039.023.164 1.136.289 2.476zm49.023 1.313l.364.21.011 2.704c.012 1.472.04 3.125.04 3.66.023 1.125-.114 1.312-.79 1.078l-.386-.14V44.16c0-.597-.04-2.336-.09-3.875l-.075-2.777h.29c.148 0 .437.101.636.215zm-43.535 4.851c.227 2.399.586 6.45.824 9l.426 4.63-.488.483-.473.489-.09-.989c-.05-.55-.3-3.097-.562-5.675a1449.23 1449.23 0 01-.824-8.301l-.352-3.602.488-.449c.438-.414.489-.426.575-.2.05.126.261 2.2.476 4.614zm-9.363 1.512c.273 2.465 1 9.016 1.625 14.555s1.21 10.875 1.324 11.875c.102 1 .273 2.515.375 3.379.176 1.46.176 1.562-.023 1.71-.301.227-.426.2-.426-.062 0-.113-.113-1.063-.25-2.086-.227-1.715-.602-4.617-1.438-11.129a740.832 740.832 0 01-.75-5.812c-.25-1.891-.613-4.703-.816-6.254-.2-1.551-.535-4.2-.75-5.914-.223-1.7-.36-3.211-.324-3.375.09-.336.824-1.512.902-1.438.023.035.273 2.074.55 4.55zm-3.828 5.387c.187 1.504.539 4.242.777 6.101.234 1.852.535 4.164.672 5.13l.238 1.75-.262.226c-.148.125-.3.172-.351.125-.047-.051-.149-.551-.223-1.102a995.27 995.27 0 00-1.039-7.129l-.887-6.125.286-.851c.152-.461.312-.836.351-.836.051 0 .238 1.226.438 2.71zm68.64-1.637c.176.176.203.95.203 6.691v6.489h-.351c-.762 0-.75.187-.8-6.914l-.036-6.465h.398c.211 0 .489.086.586.199zm-27.367 2.238c2.824.426 5.29 1.215 7.727 2.465 1.574.813 2.324 1.375 4.074 3.05 2.601 2.49 4.203 4.665 5.703 7.74 2.188 4.476 3.04 8.437 4.113 19.066.489 4.765 1.125 13.402 1.262 16.94.04 1.028.125 2.716.203 3.75.137 2.204.297 1.903-1.64 2.84-2.688 1.302-5.278 2.2-8.688 3.04-4.176 1.023-6.879 1.347-11.004 1.363l-3 .012.024-1.438c0-.789.074-2.625.152-4.062.375-6.965.297-15.754-.188-20.633-.277-2.8-.812-6.2-1.113-6.95-.062-.163.223-.3 1.461-.726 2.266-.789 4.227-1.777 4.527-2.261.54-.926-.425-2.254-1.652-2.254-.21 0-.848.226-1.437.488-2.801 1.289-8.414 2.8-11.653 3.14-2.238.239-5.715.098-8.125-.34-1.312-.238-3.664-1.124-5.629-2.136-2.261-1.176-3.648-2.738-4.062-4.59-.227-1-.164-3 .125-4.125.312-1.238 1.187-3.039 1.988-4.09 3.563-4.687 10.914-8.75 18.453-10.175 2.403-.45 5.801-.5 8.38-.114zm38.57.387c.45.187.5.238.5.664.028 3.414-.05 11.215-.113 11.54-.012.112-.66.124-.937.026-.172-.062-.2-.738-.2-6.254 0-3.949.051-6.175.125-6.175.063 0 .352.09.625.199zm5.465 6.867l.45.188-.086 10.351c-.102 13.192-.114 13.578-.59 14.715-.774 1.863-.735 2.238-.66-5.937.023-4.09.085-8.227.113-9.192.023-.96.047-3.676.062-6.039 0-2.852.035-4.273.125-4.273.075 0 .336.086.586.187zm-75.191 3.113c.074 1.012.047 1.11-.317 1.91l-.398.852-.148-1.25c-.239-2-.239-2.09.234-2.387.215-.152.441-.25.477-.226.039.023.113.523.152 1.101zm-7.73 7.54c.113 1.023.988 7.824 1.44 11.164.673 5.164.723 5.902.423 5.59-.035-.04-.325-1.778-.625-3.864-1.95-13.48-1.938-13.39-1.774-13.492.336-.227.45-.102.535.601zm9.003 5.726c.075.313.438 3.7.438 4.113 0 .348-.45.676-.649.473-.062-.063-.226-1.125-.351-2.348-.137-1.238-.274-2.527-.313-2.863l-.074-.625.438.5c.25.273.472.61.511.75zm10.09 4.711c.137.125.227.625.336 1.977.188 2.437.215 2.25-.297 2.25-.527 0-.515.039-.687-2.165-.176-2.238-.176-2.21.16-2.21.164 0 .375.074.488.148zm9.903.187c.023.125.085.875.136 1.665.04.789.153 2.562.25 3.937.352 5.05.364 5.691.153 5.691-.239 0-.266-.187-.54-3.753a274.195 274.195 0 00-.414-5.165c-.109-1.359-.187-2.5-.148-2.523.137-.152.5-.039.563.148zm-23.504 2.403c.074.113.546 4.113 1.136 9.578.176 1.648.348 3.238.387 3.535l.063.54-.313-.2c-.238-.164-.324-.324-.324-.613 0-.79-.54-5.977-.95-9.153-.238-1.8-.425-3.386-.425-3.539 0-.261.3-.363.426-.148zm72.152 5.226l-.086 5.227-.313.46c-.714 1.052-.675 1.25-.636-4.6l.023-5.364.461-.477c.25-.25.5-.46.55-.46.04 0 .04 2.351 0 5.214zm-11.563 8.29c.063 7.265.047 7.828-.152 8.05-.125.137-.238.227-.273.188-.09-.098-.215-15.942-.114-16.028.051-.05.176-.074.29-.062.16.035.199.926.25 7.851zm-40.835-4.977c.085.773.398 4.488.523 6.238.074 1.176.074 1.215-.2 1.3-.148.052-.324.04-.374-.022-.086-.09-.364-2.864-.7-7.141l-.09-1.024h.391c.36 0 .387.024.45.649zm-9.829 4.375c.086.09.149.402.149.715 0 .324.152 2.011.312 3.761.477 4.79.516 5.438.301 5.313-.324-.188-.613-.473-.55-.547.027-.05-.024-.676-.126-1.39a65.54 65.54 0 01-.25-2.626c-.047-.722-.16-2.05-.261-2.937-.239-2.188-.223-2.438.05-2.438a.59.59 0 01.375.149zm5.914 8.414c.04.277.114 1.3.164 2.277.086 1.875.047 2.012-.464 1.625-.149-.113-.25-.586-.399-2.011-.261-2.579-.277-2.477.211-2.426.363.035.414.086.488.535zm0 0"}),n.createElement("path",{d:"M39.809 56.063c-1.301.562-1.399 2.328-.176 2.953.89.449 1.789.234 2.254-.54.875-1.425-.551-3.074-2.078-2.413zm8.476 1.203c-1.2.734-1.2 2.511 0 3.25 1.188.71 2.727-.227 2.727-1.653 0-1.375-1.575-2.3-2.727-1.597zm0 0",fill:"currentColor"})))),n.createElement("div",{className:"text-center"},n.createElement(r.default,{href:"/docs/proto/tools#go"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("g",{fill:"currentColor","fill-rule":"evenodd"},n.createElement("path",{d:"M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zM2.004 60.404c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zM79.58 53.738c-3.819.97-6.425 1.697-10.182 2.666-.91.243-.97.303-1.758-.606-.909-1.03-1.576-1.697-2.848-2.303-3.819-1.878-7.516-1.333-10.97.91-4.121 2.666-6.242 6.605-6.182 11.514.06 4.849 3.394 8.849 8.182 9.516 4.121.545 7.576-.91 10.303-4 .545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818.788-1.879 2.242-5.03 3.09-6.606.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91-.667 4.363-2.303 8.363-4.97 11.878-4.364 5.758-10.06 9.333-17.273 10.303-5.939.788-11.454-.364-16.302-4-4.485-3.394-7.03-7.879-7.697-13.454-.788-6.606 1.151-12.546 5.151-17.758 4.303-5.636 10-9.212 16.97-10.485 5.697-1.03 11.151-.363 16.06 2.97 3.212 2.121 5.515 5.03 7.03 8.545.364.546.122.849-.606 1.03z"}),n.createElement("path",{d:"M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334-3.576-3.09-5.818-7.03-6.545-11.697-1.091-6.848.787-12.909 4.909-18.302 4.424-5.819 9.757-8.849 16.97-10.122 6.181-1.09 12-.484 17.272 3.091 4.788 3.273 7.757 7.697 8.545 13.515 1.03 8.182-1.333 14.849-6.97 20.546-4 4.06-8.909 6.606-14.545 7.757-1.636.303-3.273.364-4.848.546zm14.424-24.485c-.06-.788-.06-1.394-.182-2-1.09-6-6.606-9.394-12.363-8.06-5.637 1.272-9.273 4.848-10.606 10.545-1.091 4.727 1.212 9.515 5.575 11.454 3.334 1.455 6.667 1.273 9.879-.363 4.788-2.485 7.394-6.364 7.697-11.576z","fill-rule":"nonzero"}))))),n.createElement("div",{className:"text-center"},n.createElement(r.default,{href:"/docs/proto/tools#node"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M112.678 30.334L68.535 4.729c-2.781-1.584-6.424-1.584-9.227 0L14.82 30.334C11.951 31.985 10 35.088 10 38.407v51.142c0 3.319 1.992 6.423 4.862 8.083l11.729 6.688c5.627 2.772 7.186 2.772 9.746 2.772 8.334 0 12.662-5.039 12.662-13.828v-50.49C49 42.061 49.445 41 48.744 41h-5.622C42.41 41 41 42.061 41 42.773v50.49c0 3.896-3.616 7.773-10.202 4.48L18.676 90.73c-.422-.23-.676-.693-.676-1.181V38.407c0-.482.463-.966.891-1.213l44.378-25.561a1.508 1.508 0 011.415 0l43.963 25.555c.421.253.354.722.354 1.219v51.142c0 .488.092.963-.323 1.198l-44.133 25.576c-.378.227-.87.227-1.285 0l-11.317-6.749c-.341-.198-.752-.269-1.08-.086-3.145 1.783-3.729 2.02-6.679 3.043-.727.253-1.799.692.408 1.929l14.798 8.754a9.29 9.29 0 004.647 1.246 9.303 9.303 0 004.666-1.246l43.976-25.582c2.871-1.672 4.322-4.764 4.322-8.083V38.407c-.001-3.319-1.452-6.414-4.323-8.073zM77.727 81.445c-11.727 0-14.309-3.235-15.17-9.066-.102-.628-.634-1.379-1.274-1.379h-5.73c-.709 0-1.28.86-1.28 1.566 0 7.466 4.06 16.512 23.454 16.512 14.038 0 22.088-5.455 22.088-15.109 0-9.572-6.467-12.084-20.082-13.886-13.762-1.819-15.16-2.738-15.16-5.962 0-2.658 1.184-6.203 11.374-6.203 9.104 0 12.46 1.954 13.841 8.091.119.577.646.991 1.241.991h5.754c.354 0 .691-.143.939-.396.241-.272.367-.613.336-.979-.893-10.569-7.913-15.494-22.112-15.494-12.632 0-20.166 5.334-20.166 14.275 0 9.698 7.497 12.378 19.622 13.577 14.505 1.422 15.633 3.542 15.633 6.395 0 4.956-3.978 7.067-13.308 7.067z"}))),n.createElement(o.ZP,{className:"m-0",variant:"muted"},"+ npm, pnpm, yarn")),n.createElement("div",{className:"text-center"},n.createElement(r.default,{href:"/docs/proto/tools#rust"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{d:"M62.271 10.88c-.189.11-.982 1.248-1.763 2.529-1.96 3.217-1.982 3.219-4.615.448-1.713-1.802-2.127-2.132-2.679-2.128-.359.002-.812.124-1.008.271-.195.147-.748 1.317-1.228 2.6-1.099 2.939-1.152 3.034-1.761 3.151-.375.071-1.097-.331-2.828-1.574-1.278-.919-2.532-1.67-2.786-1.67-1.054 0-1.351.576-1.853 3.593-.638 3.836-.616 3.823-4.074 2.252-1.396-.633-2.72-1.152-2.943-1.152-.223 0-.646.24-.939.533-.532.533-.533.535-.388 3.468l.146 2.936-.555.297c-.492.263-.831.231-3.009-.284-2.843-.671-3.443-.653-4.019.122l-.421.566.565 2.421c.31 1.331.609 2.613.665 2.848.055.234-.04.609-.212.832-.284.367-.586.4-3.217.36-4.453-.07-4.706.312-2.866 4.328.585 1.275 1.064 2.433 1.064 2.572 0 .734-.585 1.001-3.098 1.411-1.406.229-2.628.417-2.716.417-.088 0-.352.192-.586.426-.765.765-.548 1.483 1.187 3.932 2.161 3.05 2.157 3.061-1.413 4.427-4.06 1.553-4.142 1.936-1.051 4.868 2.879 2.73 2.882 2.69-.377 4.739-2.469 1.551-2.507 1.588-2.57 2.429-.076 1.023-.058 1.041 2.89 2.842 2.915 1.78 2.915 1.834.054 4.541-3.077 2.91-2.982 3.335 1.081 4.868 3.55 1.339 3.555 1.355 1.39 4.405-1.227 1.729-1.618 2.449-1.618 2.983 0 .999.52 1.254 3.627 1.776 2.617.441 3.2.7 3.2 1.422 0 .148-.48 1.316-1.067 2.594-1.826 3.977-1.618 4.308 2.704 4.308 4.025 0 3.918-.123 3.051 3.507-.654 2.736-.664 3.26-.072 3.851.453.454 1.307.403 3.978-.236 2.04-.487 2.398-.521 2.871-.268l.54.289-.146 2.935c-.145 2.934-.144 2.936.388 3.469.293.293.722.533.952.533.23 0 1.554-.516 2.943-1.147 3.447-1.565 3.425-1.578 4.061 2.246.504 3.031.798 3.594 1.874 3.594.267 0 1.494-.72 2.728-1.6 2.167-1.546 2.729-1.788 3.306-1.421.149.094.727 1.364 1.284 2.822.819 2.144 1.119 2.702 1.575 2.92.868.416 1.405.082 3.445-2.14 2.463-2.683 2.564-2.67 4.575.589 2.221 3.598 2.796 3.59 5.073-.073 1.962-3.156 1.939-3.154 4.591-.384 1.761 1.838 2.136 2.131 2.73 2.131.379 0 .832-.142 1.005-.316.174-.174.75-1.459 1.28-2.855.53-1.397 1.079-2.613 1.221-2.703.561-.357 1.142-.106 3.306 1.43 1.274.905 2.473 1.6 2.758 1.6 1.058 0 1.44-.751 1.88-3.703.376-2.517.452-2.758.947-3.009.487-.247.779-.164 3.063.873 1.389.63 2.713 1.146 2.943 1.146.23 0 .666-.247.967-.549l.549-.548-.151-2.815c-.144-2.688-.131-2.832.298-3.22.441-.399.486-.397 2.952.166 2.986.682 3.543.7 4.104.139.548-.548.542-.668-.208-3.831-.841-3.548-.954-3.422 3.088-3.422 2.755 0 3.062-.039 3.413-.426.586-.648.447-1.39-.732-3.903-.595-1.266-1.078-2.418-1.074-2.56.02-.747.607-1.002 3.32-1.443 1.66-.269 2.902-.581 3.127-.784.754-.681.477-1.567-1.244-3.98-2.157-3.024-2.148-3.053 1.306-4.326 4.136-1.524 4.254-2.032 1.159-4.973-2.867-2.724-2.868-2.709.272-4.637 3.796-2.33 3.802-2.855.067-5.173-3.212-1.993-3.21-1.965-.331-4.699 3.088-2.934 3.004-3.318-1.057-4.871-3.584-1.371-3.595-1.405-1.417-4.394 1.297-1.78 1.618-2.371 1.618-2.981 0-1.066-.478-1.305-3.622-1.813-2.627-.424-3.205-.682-3.205-1.429 0-.142.48-1.285 1.067-2.542 1.149-2.461 1.31-3.446.66-4.035-.349-.316-.817-.361-3.321-.32-2.62.044-2.955.007-3.318-.358-.397-.399-.393-.455.227-3.042.76-3.17.763-3.247.138-3.834-.634-.596-1.03-.586-3.941.099-2.121.5-2.472.533-2.954.275l-.547-.293.151-2.926.152-2.925-.547-.547c-.301-.301-.728-.547-.95-.547-.221 0-1.538.523-2.926 1.161-2.318 1.067-2.567 1.138-3.068.876-.5-.262-.583-.52-1.01-3.127-.493-3.016-.798-3.603-1.869-3.603-.254 0-1.513.755-2.798 1.678-2.11 1.516-2.393 1.659-2.919 1.476-.435-.152-.688-.483-.997-1.306-.229-.606-.667-1.774-.975-2.595-.622-1.656-.969-2.027-1.901-2.027-.52 0-.991.374-2.679 2.127-2.653 2.756-2.663 2.755-4.614-.445-.78-1.279-1.595-2.421-1.812-2.537-.488-.262-1.062-.261-1.511.002m2.418 9.635c2.311 1.645 1.082 5.512-1.752 5.512-2.75 0-4.135-3.313-2.171-5.194 1.108-1.062 2.697-1.191 3.923-.318m-2.906 10.214c1.515.576 2.137.23 5.596-3.104l2.599-2.506 1.1.146c3.45.458 10.312 3.472 14.255 6.261 3.623 2.564 8.438 7.786 10.49 11.377l.439.769-1.944 4.38c-1.07 2.409-1.945 4.633-1.945 4.944 0 .717.47 1.851.923 2.226.191.159 2.006 1.033 4.033 1.942l3.684 1.654.145.937c.187 1.221.212 4.22.042 5.072l-.133.666h-2.103c-2.439 0-2.251-.218-2.383 2.774-.096 2.169-.62 3.368-1.812 4.144-1.942 1.267-5.149 1.037-6.509-.466-.209-.231-.615-1.392-.903-2.581-.841-3.473-1.971-5.423-4.241-7.32-.717-.599-1.303-1.158-1.303-1.243 0-.084.788-.748 1.752-1.473 3.51-2.646 5.528-5.726 5.75-8.777.423-5.819-4.213-11.243-11.109-13.001-1.635-.417-2.333-.43-22.56-.43-11.48 0-20.873-.075-20.873-.166 0-.215 2.551-2.691 4.054-3.933 4.127-3.412 9.488-6.097 15.04-7.531l1.92-.497 2.728 2.766c1.501 1.521 2.972 2.857 3.268 2.97M27.432 48.526c1.257.823 1.772 2.891 1.03 4.134-1.148 1.924-4.056 2.005-5.205.145-1.671-2.702 1.547-6.001 4.175-4.279m74.05.105c3.288 2.005.74 6.937-2.78 5.38-2.35-1.04-2.425-4.252-.127-5.424.959-.489 2.061-.472 2.907.044M37.12 60.907v12.266H26.276l-.43-1.866c-.846-3.675-1.202-7.477-.989-10.591l.149-2.188 3.728-1.672c2.339-1.048 3.843-1.847 4.037-2.144.848-1.293.767-2.217-.423-4.845l-.556-1.227h5.328v12.267m31.22-11.733c2.322.604 3.549 1.833 3.552 3.556.002 1.265-.625 2.059-2.18 2.761-1.101.498-1.276.51-8.219.578l-7.093.068v-7.284h6.355c4.964 0 6.625.07 7.585.321m-2.396 17.602c1.151.32 2.512 1.32 3.21 2.359.733 1.092 1.162 2.512 2.178 7.216.858 3.976 1.41 5.276 2.956 6.968 1.915 2.095 1.471 2.014 11.037 2.014 4.581 0 8.328.073 8.328.163 0 .161-3.155 3.891-3.291 3.891-.039 0-1.687-.345-3.662-.767-5.577-1.191-5.778-1.051-7.058 4.926l-.823 3.84-.743.366c-1.24.612-5.27 1.872-7.359 2.302-3.452.71-7.209.95-10.511.671-5.629-.477-13.083-2.661-13.374-3.92-.062-.267-.437-1.995-.832-3.841-.396-1.846-.877-3.597-1.069-3.891-.923-1.408-1.894-1.495-6.164-.55-1.617.358-3.028.65-3.136.65-.203 0-3.204-3.47-3.204-3.704 0-.073 7.128-.158 15.84-.188l15.84-.054.057-5.627c.04-3.973-.015-5.714-.187-5.92-.192-.232-1.214-.293-4.91-.293H54.4V66.56l5.387.001c2.962.001 5.733.098 6.157.215M41.536 92.365c2.519 1.535 1.311 5.557-1.668 5.554-3.055-.002-4.187-3.987-1.584-5.575.861-.525 2.374-.515 3.252.021m46.126.168c1.235.905 1.646 2.788.881 4.042-2.009 3.295-7.033.676-5.355-2.791.825-1.703 3.018-2.317 4.474-1.251","fill-rule":"evenodd",fill:"currentColor"})))))}},9619:(e,t,a)=>{a.d(t,{Z:()=>i});var n=a(27378),r=a(40624),o=a(31792);const l={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function i(e){let{className:t,icon:a,text:i,variant:c}=e;return n.createElement("span",{className:(0,r.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",c?l[c]:"bg-gray-100 text-gray-800",t)},a&&n.createElement(o.Z,{icon:a,className:"mr-1"}),i)}},16621:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>c,default:()=>u,frontMatter:()=>i,metadata:()=>p,toc:()=>m});var n=a(25773),r=(a(27378),a(35318)),o=a(27915),l=a(87129);const i={title:"What is proto?"},c=void 0,p={unversionedId:"proto/index",id:"proto/index",title:"What is proto?",description:"proto is a pluggable toolchain manager.",source:"@site/docs/proto/index.mdx",sourceDirName:"proto",slug:"/proto/",permalink:"/docs/proto/",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/index.mdx",tags:[],version:"current",frontMatter:{title:"What is proto?"},sidebar:"proto",next:{title:"Install proto",permalink:"/docs/proto/install"}},s={},m=[{value:"Why proto?",id:"why-proto",level:2},{value:"Features",id:"features",level:3},{value:"How does it work?",id:"how-does-it-work",level:2},{value:"Shims",id:"shims",level:3},{value:"Supported tools",id:"supported-tools",level:2},{value:"Supported targets",id:"supported-targets",level:2},{value:"Roadmap",id:"roadmap",level:2}],d={toc:m};function u(e){let{components:t,...a}=e;return(0,r.kt)("wrapper",(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(o.Z,{text:"3 min",mdxType:"HeaderLabel"}),(0,r.kt)("p",null,"proto is a pluggable toolchain manager."),(0,r.kt)("p",null,"If you're unfamiliar with the concept of a toolchain, a toolchain is a collection of tools that are\ndownloaded, installed, and managed by version through a single interface. In the context of proto's\ntoolchain, a tool is either a programming language, or a dependency/package manager for a language,\nor a custom implementation provided by a plugin. It's the next step in the version manager\nevolution."),(0,r.kt)("h2",{id:"why-proto"},"Why proto?"),(0,r.kt)("p",null,"proto was designed to be a modern and holistic version manager for all of your favorite programming\nlanguages. We believe a single tool that works the same across every language is better than\nmultiple ad-hoc tools. While we only support a handful of languages today, we aim to support many\nmore in the future!"),(0,r.kt)("admonition",{type:"success"},(0,r.kt)("p",{parentName:"admonition"},"proto powers ",(0,r.kt)("a",{parentName:"p",href:"/moon"},"moon"),"'s toolchain, enabling a single source of truth for both tools!")),(0,r.kt)("h3",{id:"features"},"Features"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Lightspeed! With Rust and WASM, we can guarantee exceptional performance."),(0,r.kt)("li",{parentName:"ul"},"Multi-language. A single CLI for managing versions for all of your languages."),(0,r.kt)("li",{parentName:"ul"},"Cross-platform, for a consistent experience across machines and teams."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./proto/detection"},"Contextual version detection"),", ensuring the correct version of a tool is\nalways used."),(0,r.kt)("li",{parentName:"ul"},"Checksum verification, ensuring a tool came from a trusted source."),(0,r.kt)("li",{parentName:"ul"},"Detects and infers from a language's ecosystem for maximum compatibility."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./proto/plugins"},"Pluggable architecture"),", allowing for custom tooling.")),(0,r.kt)("h2",{id:"how-does-it-work"},"How does it work?"),(0,r.kt)("p",null,"The toolchain is a ",(0,r.kt)("inlineCode",{parentName:"p"},".proto")," directory within the current user's home directory, e.g., ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto"),"."),(0,r.kt)("p",null,"The first step in a tool's life-cycle is being downloaded to ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/temp"),". Downloads are\ntypically an archive that can be unpacked into a target directory. Once downloaded, we verify the\ndownloaded file by running a checksum. If this check fails for ",(0,r.kt)("em",{parentName:"p"},"any reason"),", the tool is unusable,\nand the process is aborted."),(0,r.kt)("p",null,"After a successful verification, the last step in the tool's life-cycle can begin, installation.\nDepending on the type of download, the installation process may differ. For archives, we unpack the\ntool to ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/tools//"),". In the future, we'll support building from source."),(0,r.kt)("p",null,"From here, we make these tools globally available by prepending ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/bin")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"PATH")," (typically\nas part of your shell profile). Continue reading for more about this bin folder."),(0,r.kt)("h3",{id:"shims"},"Shims"),(0,r.kt)("p",null,"proto is powered the by industry standard concept of shims. For each tool installed in proto, a shim\nfile will exist at ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/bin/"),". Shims ",(0,r.kt)("em",{parentName:"p"},"are not")," symlinks to the tool's binary, but are\nthin wrappers around ",(0,r.kt)("a",{parentName:"p",href:"./proto/commands/run"},(0,r.kt)("inlineCode",{parentName:"a"},"proto run")),", enabling\n",(0,r.kt)("a",{parentName:"p",href:"./proto/detection"},"automatic version detection")," on every invocation!"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/bin")," directory ",(0,r.kt)("em",{parentName:"p"},"should")," be in your ",(0,r.kt)("inlineCode",{parentName:"p"},"PATH")," if proto was setup correctly. If not, run\nthe ",(0,r.kt)("a",{parentName:"p",href:"./proto/commands/setup"},(0,r.kt)("inlineCode",{parentName:"a"},"proto setup"))," command, or add the path manually.")),(0,r.kt)("h2",{id:"supported-tools"},"Supported tools"),(0,r.kt)("p",null,"The following tools are ",(0,r.kt)("a",{parentName:"p",href:"./proto/tools"},"officially supported")," in proto via moonrepo. Additional\ntools can be supported through ",(0,r.kt)("a",{parentName:"p",href:"./proto/plugins"},"third-party plugins"),"."),(0,r.kt)(l.Z,{mdxType:"ToolsGrid"}),(0,r.kt)("h2",{id:"supported-targets"},"Supported targets"),(0,r.kt)("p",null,"Because proto is written in Rust, we only support targets that are explicitly compiled for, which\nare currently:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Operating system"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Architecture"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Target"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"macOS 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Intel"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"x86_64-apple-darwin"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"macOS 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"ARM"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"aarch64-apple-darwin"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Linux 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Intel GNU"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"x86_64-unknown-linux-gnu"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Windows 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Intel"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"x86_64-pc-windows-msvc"))))),(0,r.kt)("h2",{id:"roadmap"},"Roadmap"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Linux ARM/musl support."),(0,r.kt)("li",{parentName:"ul"},"Build from source for existing languages."),(0,r.kt)("li",{parentName:"ul"},"New languages.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/ad536080.99758494.js b/assets/js/ad536080.99758494.js new file mode 100644 index 00000000000..692695f9bf8 --- /dev/null +++ b/assets/js/ad536080.99758494.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5077],{35318:(e,t,a)=>{a.d(t,{Zo:()=>s,kt:()=>u});var n=a(27378);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function o(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function l(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var i=n.createContext({}),p=function(e){var t=n.useContext(i),a=t;return e&&(a="function"==typeof e?e(t):l(l({},t),e)),a},s=function(e){var t=p(e.components);return n.createElement(i.Provider,{value:t},e.children)},m={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},d=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,o=e.originalType,i=e.parentName,s=c(e,["components","mdxType","originalType","parentName"]),d=p(a),u=r,h=d["".concat(i,".").concat(u)]||d[u]||m[u]||o;return a?n.createElement(h,l(l({ref:t},s),{},{components:a})):n.createElement(h,l({ref:t},s))}));function u(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var o=a.length,l=new Array(o);l[0]=d;var c={};for(var i in t)hasOwnProperty.call(t,i)&&(c[i]=t[i]);c.originalType=e,c.mdxType="string"==typeof e?e:r,l[1]=c;for(var p=2;p{a.d(t,{Z:()=>l});var n=a(27378),r=a(83469),o=a(9619);function l(e){let{text:t}=e;return n.createElement(o.Z,{text:t,icon:r.SZw,variant:"success",className:"absolute right-0 top-1.5"})}},87129:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(27378),r=a(40624),o=a(81884),l=a(30658);function c(e){let{cols:t=3}=e;return n.createElement("div",{className:(0,r.Z)("grid gap-4 px-4",6===t?"grid-cols-6":"grid-cols-3")},n.createElement("div",{className:"text-center"},n.createElement(o.default,{href:"/docs/proto/tools#bun"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M64 10.308c-5.12 0-10.24 2.288-16.231 5.71a360.541 360.541 0 0 0-6.144 3.605c-3.908 2.32-8.295 4.97-13.415 7.604C10.546 36.427 0 51.78 0 68.237c0 27.27 28.706 49.455 64 49.455s64-22.185 64-49.454c0-16.474-10.549-31.811-28.213-41.01-6.314-3.276-11.11-6.14-15.36-8.674-1.826-1.119-3.533-2.141-5.24-3.079C73.59 12.282 69.12 10.308 64 10.308Zm0 4.115c4.13 0 7.902 1.646 13.073 4.608 1.553.905 3.258 1.925 5.119 3.027 4.079 2.436 9.113 5.53 15.564 8.821 16.265 8.443 25.977 22.415 25.977 37.359 0 24.998-26.794 45.34-59.733 45.34-32.939 0-59.733-20.342-59.733-45.34 0-14.944 9.71-28.917 25.958-37.392 5.12-2.683 9.676-5.364 13.652-7.733 2.116-1.251 4.113-2.454 6.042-3.54 5.546-3.094 9.95-5.15 14.081-5.15zm3.987 2.75c-.534-.001-.811.721-.318 1.067v.066a27.418 27.418 0 0 1 8.023 8.454 26.356 26.356 0 0 1 3.666 10.9.528.528 0 0 0 .109.39.577.577 0 0 0 .767.125.542.542 0 0 0 .235-.333c1.57-5.744.682-15.536-12.238-20.621a.68.68 0 0 0-.243-.048zm-4.508.406c-.409.032-.777.51-.52.942v.064a26.113 26.113 0 0 1 3.889 10.796 25.818 25.818 0 0 1-1.142 11.373c-.205.576.528 1.07.938.592 3.737-4.608 6.997-13.757-2.765-23.631a.536.536 0 0 0-.4-.136zm-3.875.41a.6.6 0 0 0-.52.596 26.19 26.19 0 0 1-2.48 11.273 27.107 27.107 0 0 1-7.129 9.25c-.478.412-.102 1.202.512.971 5.752-2.156 13.517-8.607 10.24-21.625-.068-.37-.354-.506-.623-.464zm-5.04 2.282a.628.628 0 0 0-.533.34 28.014 28.014 0 0 1-7.298 9.241 29.244 29.244 0 0 1-10.57 5.569c-.615.181-.63 1.054.018 1.037 6.144.362 16.025-2.386 18.977-15.552.096-.411-.247-.654-.593-.635zM42.797 55.206a9.7 9.7 0 0 0-3.367.686 9.339 9.339 0 0 0-4.223 3.34 8.84 8.84 0 0 0-1.585 5.039c0 2.402.988 4.706 2.748 6.406 1.76 1.7 4.146 2.658 6.637 2.663a9.656 9.656 0 0 0 5.23-1.521 9.15 9.15 0 0 0 3.47-4.067 8.765 8.765 0 0 0 .544-5.24 8.975 8.975 0 0 0-2.57-4.647 9.513 9.513 0 0 0-4.815-2.486 9.744 9.744 0 0 0-2.07-.173zm42.344 0a9.707 9.707 0 0 0-3.373.681 9.34 9.34 0 0 0-4.232 3.34 8.837 8.837 0 0 0-1.59 5.044c-.004 2.395.976 4.694 2.726 6.394 1.75 1.7 4.127 2.661 6.61 2.675a9.66 9.66 0 0 0 5.244-1.496 9.155 9.155 0 0 0 3.494-4.057 8.766 8.766 0 0 0 .562-5.243 8.971 8.971 0 0 0-2.558-4.66 9.51 9.51 0 0 0-4.813-2.5 9.747 9.747 0 0 0-2.07-.178zM40.3 58.037a3.574 3.574 0 0 1 2.327 1c.494.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525 3.625 3.625 0 0 1-1.967.567 3.6 3.6 0 0 1-2.487-1.004 3.349 3.349 0 0 1-1.03-2.404c0-.675.21-1.334.598-1.894.39-.56.941-.997 1.588-1.254a3.647 3.647 0 0 1 1.525-.255zm42.275 0c.173.009.345.03.517.063a3.58 3.58 0 0 1 1.81.937c.493.479.828 1.086.963 1.748a3.298 3.298 0 0 1-.209 1.971 3.437 3.437 0 0 1-1.308 1.525c-.583.373-1.27.57-1.969.567h-.033a3.598 3.598 0 0 1-2.465-1.017 3.346 3.346 0 0 1-1.016-2.391c0-.675.207-1.334.595-1.894.39-.56.944-.997 1.59-1.254a3.647 3.647 0 0 1 1.525-.255zM53.623 77.996a2.482 2.482 0 0 0-1.065.204c-.334.145-.63.363-.864.635-.197.226-.338.49-.415.775a1.904 1.904 0 0 0-.029.871c.806 3.245 2.667 6.156 5.308 8.31a12.881 12.881 0 0 0 7.594 3.292c2.838-.244 5.51-1.403 7.58-3.291 2.641-2.155 4.5-5.066 5.305-8.31a1.886 1.886 0 0 0-.018-.87 1.937 1.937 0 0 0-.409-.777 2.446 2.446 0 0 0-.864-.629 2.538 2.538 0 0 0-1.063-.21zm0 1.91 21.06.031a.369.369 0 0 1 .342.15 13.448 13.448 0 0 1-2.402 4.898l-.073-.06c-2.171-1.994-5.042-3.129-8.04-3.177-1.602.013-3.18.37-4.623 1.042a10.806 10.806 0 0 0-3.685 2.802 13.47 13.47 0 0 1-2.937-5.538c.017-.033.085-.148.358-.148zm10.973 3.504c2.556.073 4.991 1.065 6.827 2.782l.083.068c-.354.358-.73.699-1.125 1.02a10.885 10.885 0 0 1-6.229 2.845 10.795 10.795 0 0 1-6.23-2.88 13.946 13.946 0 0 1-.482-.412h.006a9.078 9.078 0 0 1 3.166-2.502 9.427 9.427 0 0 1 3.984-.92z"})))),n.createElement("div",{className:"text-center"},n.createElement(o.default,{href:"/docs/proto/tools#deno"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M59.016 13.328c-.239.024-1 .113-1.688.176-9.777 1.023-19.406 5.164-27.258 11.738-1.449 1.203-4.75 4.504-5.953 5.953-6.5 7.766-10.3 16.48-11.703 26.793-.312 2.29-.312 10.016 0 12.305 1.402 10.312 5.203 19.027 11.703 26.793 1.203 1.45 4.504 4.75 5.953 5.953 7.766 6.5 16.48 10.3 26.793 11.703 2.29.313 10.016.313 12.305 0 10.312-1.402 19.027-5.203 26.793-11.703 1.45-1.203 4.75-4.504 5.953-5.953 6.5-7.766 10.3-16.48 11.7-26.793.316-2.29.316-10.016 0-12.305-1.4-10.312-5.2-19.027-11.7-26.793-1.203-1.449-4.504-4.75-5.953-5.953-7.738-6.476-16.543-10.324-26.719-11.687-1.101-.153-2.699-.215-5.664-.239-2.262-.027-4.328-.011-4.562.012zm.625 5.402c0 1.461.097 4.637.238 7.653.074 1.472.16 3.586.2 4.687.136 3.903.55 14.14.612 15.055l.063.91-.563-.062c-.312-.024-.601-.098-.652-.137-.035-.05-.125-.914-.176-1.926-.222-4.45-.96-21.719-1.035-24.242l-.078-2.777.352-.047c.187-.028.5-.063.699-.078l.34-.012zm11.964-.3c.012.011.051 3.789.086 8.39.051 4.614.114 8.75.153 9.2.035.464.023.863-.04.89-.05.035-.363.035-.675 0l-.574-.05-.086-3.641a692.868 692.868 0 00-.14-4.961c-.099-2.215-.188-9.727-.11-9.914.047-.14.187-.153.71-.063.364.074.665.137.676.149zm-28.921 4.187c.078.113.664 7.004 1.39 16.016.239 3.066.473 5.867.512 6.215.062.636.05.664-.352.914-.222.136-.449.25-.5.25-.035 0-.109-.325-.148-.727-.176-1.625-.852-9.476-1.324-15.152-.278-3.34-.528-6.328-.563-6.653-.062-.55-.05-.601.274-.773.398-.215.625-.25.71-.09zm34.421 2.516c.352.125.387.187.465.898.125 1.25.086 7.227-.05 7.227-.364 0-1.114-.426-1.176-.664-.04-.149-.074-1.922-.074-3.938 0-4.062-.051-3.824.835-3.523zm-23.093.586c0 .336.09 2.199.187 4.164.102 1.96.215 4.449.266 5.527.086 2.176.11 2.098-.727 2.149-.414.011-.414.011-.437-.614-.024-.347-.086-1.437-.164-2.437-.063-1-.211-3.164-.313-4.813a117.11 117.11 0 00-.261-3.64c-.075-.625-.063-.649.273-.774.203-.074.55-.136.777-.136.399-.012.399-.012.399.574zm34.683 1.715l.426.171.09 1.676c.035.914.062 2.89.035 4.38l-.035 2.722-.527-.262-.524-.25-.039-4.152c-.023-2.285-.012-4.223.012-4.313.05-.187.05-.187.562.028zM65.867 29.07c.074.075.25 6.137.262 9.215l.012 1.852-.586-.09c-.34-.04-.614-.074-.625-.086-.04-.027-.414-9.29-.414-10.191v-.926l.636.074c.364.05.676.113.715.152zm28.793.887c.153.176.176 2.914.215 18.016.035 17.343.035 17.793-.188 17.793a.806.806 0 01-.44-.164c-.188-.137-.212-1.649-.274-16.465-.051-8.977-.114-17.13-.149-18.117l-.078-1.801.363.261c.215.153.454.364.551.477zM83.445 32.52c.063.05.125.761.137 1.578.063 2.761.074 19.703.012 19.754-.024.023-.25-.04-.5-.137l-.45-.188v-21.27l.352.075c.188.05.387.125.45.188zm-34.507.699c.035.34.097 1.101.136 1.726.04.614.125 2.016.2 3.102.152 2.2.124 2.34-.587 2.34-.374 0-.425-.04-.476-.414-.125-.739-.563-6.891-.5-6.989.062-.09.715-.312 1.012-.34.078-.011.175.25.215.575zm-20.68 3.191c.137 1.324.41 4.102.613 6.164.211 2.063.387 3.813.387 3.887 0 .152-.965.625-1.063.527-.062-.062-1.312-11.129-1.312-11.629 0-.3.96-1.562 1.086-1.425.039.023.164 1.136.289 2.476zm49.023 1.313l.364.21.011 2.704c.012 1.472.04 3.125.04 3.66.023 1.125-.114 1.312-.79 1.078l-.386-.14V44.16c0-.597-.04-2.336-.09-3.875l-.075-2.777h.29c.148 0 .437.101.636.215zm-43.535 4.851c.227 2.399.586 6.45.824 9l.426 4.63-.488.483-.473.489-.09-.989c-.05-.55-.3-3.097-.562-5.675a1449.23 1449.23 0 01-.824-8.301l-.352-3.602.488-.449c.438-.414.489-.426.575-.2.05.126.261 2.2.476 4.614zm-9.363 1.512c.273 2.465 1 9.016 1.625 14.555s1.21 10.875 1.324 11.875c.102 1 .273 2.515.375 3.379.176 1.46.176 1.562-.023 1.71-.301.227-.426.2-.426-.062 0-.113-.113-1.063-.25-2.086-.227-1.715-.602-4.617-1.438-11.129a740.832 740.832 0 01-.75-5.812c-.25-1.891-.613-4.703-.816-6.254-.2-1.551-.535-4.2-.75-5.914-.223-1.7-.36-3.211-.324-3.375.09-.336.824-1.512.902-1.438.023.035.273 2.074.55 4.55zm-3.828 5.387c.187 1.504.539 4.242.777 6.101.234 1.852.535 4.164.672 5.13l.238 1.75-.262.226c-.148.125-.3.172-.351.125-.047-.051-.149-.551-.223-1.102a995.27 995.27 0 00-1.039-7.129l-.887-6.125.286-.851c.152-.461.312-.836.351-.836.051 0 .238 1.226.438 2.71zm68.64-1.637c.176.176.203.95.203 6.691v6.489h-.351c-.762 0-.75.187-.8-6.914l-.036-6.465h.398c.211 0 .489.086.586.199zm-27.367 2.238c2.824.426 5.29 1.215 7.727 2.465 1.574.813 2.324 1.375 4.074 3.05 2.601 2.49 4.203 4.665 5.703 7.74 2.188 4.476 3.04 8.437 4.113 19.066.489 4.765 1.125 13.402 1.262 16.94.04 1.028.125 2.716.203 3.75.137 2.204.297 1.903-1.64 2.84-2.688 1.302-5.278 2.2-8.688 3.04-4.176 1.023-6.879 1.347-11.004 1.363l-3 .012.024-1.438c0-.789.074-2.625.152-4.062.375-6.965.297-15.754-.188-20.633-.277-2.8-.812-6.2-1.113-6.95-.062-.163.223-.3 1.461-.726 2.266-.789 4.227-1.777 4.527-2.261.54-.926-.425-2.254-1.652-2.254-.21 0-.848.226-1.437.488-2.801 1.289-8.414 2.8-11.653 3.14-2.238.239-5.715.098-8.125-.34-1.312-.238-3.664-1.124-5.629-2.136-2.261-1.176-3.648-2.738-4.062-4.59-.227-1-.164-3 .125-4.125.312-1.238 1.187-3.039 1.988-4.09 3.563-4.687 10.914-8.75 18.453-10.175 2.403-.45 5.801-.5 8.38-.114zm38.57.387c.45.187.5.238.5.664.028 3.414-.05 11.215-.113 11.54-.012.112-.66.124-.937.026-.172-.062-.2-.738-.2-6.254 0-3.949.051-6.175.125-6.175.063 0 .352.09.625.199zm5.465 6.867l.45.188-.086 10.351c-.102 13.192-.114 13.578-.59 14.715-.774 1.863-.735 2.238-.66-5.937.023-4.09.085-8.227.113-9.192.023-.96.047-3.676.062-6.039 0-2.852.035-4.273.125-4.273.075 0 .336.086.586.187zm-75.191 3.113c.074 1.012.047 1.11-.317 1.91l-.398.852-.148-1.25c-.239-2-.239-2.09.234-2.387.215-.152.441-.25.477-.226.039.023.113.523.152 1.101zm-7.73 7.54c.113 1.023.988 7.824 1.44 11.164.673 5.164.723 5.902.423 5.59-.035-.04-.325-1.778-.625-3.864-1.95-13.48-1.938-13.39-1.774-13.492.336-.227.45-.102.535.601zm9.003 5.726c.075.313.438 3.7.438 4.113 0 .348-.45.676-.649.473-.062-.063-.226-1.125-.351-2.348-.137-1.238-.274-2.527-.313-2.863l-.074-.625.438.5c.25.273.472.61.511.75zm10.09 4.711c.137.125.227.625.336 1.977.188 2.437.215 2.25-.297 2.25-.527 0-.515.039-.687-2.165-.176-2.238-.176-2.21.16-2.21.164 0 .375.074.488.148zm9.903.187c.023.125.085.875.136 1.665.04.789.153 2.562.25 3.937.352 5.05.364 5.691.153 5.691-.239 0-.266-.187-.54-3.753a274.195 274.195 0 00-.414-5.165c-.109-1.359-.187-2.5-.148-2.523.137-.152.5-.039.563.148zm-23.504 2.403c.074.113.546 4.113 1.136 9.578.176 1.648.348 3.238.387 3.535l.063.54-.313-.2c-.238-.164-.324-.324-.324-.613 0-.79-.54-5.977-.95-9.153-.238-1.8-.425-3.386-.425-3.539 0-.261.3-.363.426-.148zm72.152 5.226l-.086 5.227-.313.46c-.714 1.052-.675 1.25-.636-4.6l.023-5.364.461-.477c.25-.25.5-.46.55-.46.04 0 .04 2.351 0 5.214zm-11.563 8.29c.063 7.265.047 7.828-.152 8.05-.125.137-.238.227-.273.188-.09-.098-.215-15.942-.114-16.028.051-.05.176-.074.29-.062.16.035.199.926.25 7.851zm-40.835-4.977c.085.773.398 4.488.523 6.238.074 1.176.074 1.215-.2 1.3-.148.052-.324.04-.374-.022-.086-.09-.364-2.864-.7-7.141l-.09-1.024h.391c.36 0 .387.024.45.649zm-9.829 4.375c.086.09.149.402.149.715 0 .324.152 2.011.312 3.761.477 4.79.516 5.438.301 5.313-.324-.188-.613-.473-.55-.547.027-.05-.024-.676-.126-1.39a65.54 65.54 0 01-.25-2.626c-.047-.722-.16-2.05-.261-2.937-.239-2.188-.223-2.438.05-2.438a.59.59 0 01.375.149zm5.914 8.414c.04.277.114 1.3.164 2.277.086 1.875.047 2.012-.464 1.625-.149-.113-.25-.586-.399-2.011-.261-2.579-.277-2.477.211-2.426.363.035.414.086.488.535zm0 0"}),n.createElement("path",{d:"M39.809 56.063c-1.301.562-1.399 2.328-.176 2.953.89.449 1.789.234 2.254-.54.875-1.425-.551-3.074-2.078-2.413zm8.476 1.203c-1.2.734-1.2 2.511 0 3.25 1.188.71 2.727-.227 2.727-1.653 0-1.375-1.575-2.3-2.727-1.597zm0 0",fill:"currentColor"})))),n.createElement("div",{className:"text-center"},n.createElement(o.default,{href:"/docs/proto/tools#go"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("g",{fill:"currentColor","fill-rule":"evenodd"},n.createElement("path",{d:"M11.156 54.829c-.243 0-.303-.122-.182-.303l1.273-1.637c.12-.182.424-.303.666-.303H34.55c.243 0 .303.182.182.364l-1.03 1.576c-.121.181-.424.363-.606.363zM2.004 60.404c-.242 0-.303-.12-.182-.303l1.273-1.636c.121-.182.424-.303.667-.303h27.636c.242 0 .364.182.303.364l-.485 1.454c-.06.243-.303.364-.545.364zM16.67 65.98c-.242 0-.302-.182-.181-.364l.848-1.515c.122-.182.364-.363.607-.363h12.12c.243 0 .364.181.364.424l-.12 1.454c0 .243-.243.425-.425.425zM79.58 53.738c-3.819.97-6.425 1.697-10.182 2.666-.91.243-.97.303-1.758-.606-.909-1.03-1.576-1.697-2.848-2.303-3.819-1.878-7.516-1.333-10.97.91-4.121 2.666-6.242 6.605-6.182 11.514.06 4.849 3.394 8.849 8.182 9.516 4.121.545 7.576-.91 10.303-4 .545-.667 1.03-1.394 1.636-2.243H56.064c-1.272 0-1.575-.788-1.151-1.818.788-1.879 2.242-5.03 3.09-6.606.183-.364.607-.97 1.516-.97h22.06c-.12 1.637-.12 3.273-.363 4.91-.667 4.363-2.303 8.363-4.97 11.878-4.364 5.758-10.06 9.333-17.273 10.303-5.939.788-11.454-.364-16.302-4-4.485-3.394-7.03-7.879-7.697-13.454-.788-6.606 1.151-12.546 5.151-17.758 4.303-5.636 10-9.212 16.97-10.485 5.697-1.03 11.151-.363 16.06 2.97 3.212 2.121 5.515 5.03 7.03 8.545.364.546.122.849-.606 1.03z"}),n.createElement("path",{d:"M99.64 87.253c-5.515-.122-10.546-1.697-14.788-5.334-3.576-3.09-5.818-7.03-6.545-11.697-1.091-6.848.787-12.909 4.909-18.302 4.424-5.819 9.757-8.849 16.97-10.122 6.181-1.09 12-.484 17.272 3.091 4.788 3.273 7.757 7.697 8.545 13.515 1.03 8.182-1.333 14.849-6.97 20.546-4 4.06-8.909 6.606-14.545 7.757-1.636.303-3.273.364-4.848.546zm14.424-24.485c-.06-.788-.06-1.394-.182-2-1.09-6-6.606-9.394-12.363-8.06-5.637 1.272-9.273 4.848-10.606 10.545-1.091 4.727 1.212 9.515 5.575 11.454 3.334 1.455 6.667 1.273 9.879-.363 4.788-2.485 7.394-6.364 7.697-11.576z","fill-rule":"nonzero"}))))),n.createElement("div",{className:"text-center"},n.createElement(o.default,{href:"/docs/proto/tools#node"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M112.678 30.334L68.535 4.729c-2.781-1.584-6.424-1.584-9.227 0L14.82 30.334C11.951 31.985 10 35.088 10 38.407v51.142c0 3.319 1.992 6.423 4.862 8.083l11.729 6.688c5.627 2.772 7.186 2.772 9.746 2.772 8.334 0 12.662-5.039 12.662-13.828v-50.49C49 42.061 49.445 41 48.744 41h-5.622C42.41 41 41 42.061 41 42.773v50.49c0 3.896-3.616 7.773-10.202 4.48L18.676 90.73c-.422-.23-.676-.693-.676-1.181V38.407c0-.482.463-.966.891-1.213l44.378-25.561a1.508 1.508 0 011.415 0l43.963 25.555c.421.253.354.722.354 1.219v51.142c0 .488.092.963-.323 1.198l-44.133 25.576c-.378.227-.87.227-1.285 0l-11.317-6.749c-.341-.198-.752-.269-1.08-.086-3.145 1.783-3.729 2.02-6.679 3.043-.727.253-1.799.692.408 1.929l14.798 8.754a9.29 9.29 0 004.647 1.246 9.303 9.303 0 004.666-1.246l43.976-25.582c2.871-1.672 4.322-4.764 4.322-8.083V38.407c-.001-3.319-1.452-6.414-4.323-8.073zM77.727 81.445c-11.727 0-14.309-3.235-15.17-9.066-.102-.628-.634-1.379-1.274-1.379h-5.73c-.709 0-1.28.86-1.28 1.566 0 7.466 4.06 16.512 23.454 16.512 14.038 0 22.088-5.455 22.088-15.109 0-9.572-6.467-12.084-20.082-13.886-13.762-1.819-15.16-2.738-15.16-5.962 0-2.658 1.184-6.203 11.374-6.203 9.104 0 12.46 1.954 13.841 8.091.119.577.646.991 1.241.991h5.754c.354 0 .691-.143.939-.396.241-.272.367-.613.336-.979-.893-10.569-7.913-15.494-22.112-15.494-12.632 0-20.166 5.334-20.166 14.275 0 9.698 7.497 12.378 19.622 13.577 14.505 1.422 15.633 3.542 15.633 6.395 0 4.956-3.978 7.067-13.308 7.067z"}))),n.createElement(l.ZP,{className:"m-0",variant:"muted"},"+ npm, pnpm, yarn")),n.createElement("div",{className:"text-center"},n.createElement(o.default,{href:"/docs/proto/tools#python"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{fill:"currentColor",d:"M49.33 62h29.159C86.606 62 93 55.132 93 46.981V19.183c0-7.912-6.632-13.856-14.555-15.176-5.014-.835-10.195-1.215-15.187-1.191-4.99.023-9.612.448-13.805 1.191C37.098 6.188 35 10.758 35 19.183V30h29v4H23.776c-8.484 0-15.914 5.108-18.237 14.811-2.681 11.12-2.8 17.919 0 29.53C7.614 86.983 12.569 93 21.054 93H31V79.952C31 70.315 39.428 62 49.33 62zm-1.838-39.11c-3.026 0-5.478-2.479-5.478-5.545 0-3.079 2.451-5.581 5.478-5.581 3.015 0 5.479 2.502 5.479 5.581-.001 3.066-2.465 5.545-5.479 5.545zm74.789 25.921C120.183 40.363 116.178 34 107.682 34H97v12.981C97 57.031 88.206 65 78.489 65H49.33C41.342 65 35 72.326 35 80.326v27.8c0 7.91 6.745 12.564 14.462 14.834 9.242 2.717 17.994 3.208 29.051 0C85.862 120.831 93 116.549 93 108.126V97H64v-4h43.682c8.484 0 11.647-5.776 14.599-14.66 3.047-9.145 2.916-17.799 0-29.529zm-41.955 55.606c3.027 0 5.479 2.479 5.479 5.547 0 3.076-2.451 5.579-5.479 5.579-3.015 0-5.478-2.502-5.478-5.579 0-3.068 2.463-5.547 5.478-5.547z"})))),n.createElement("div",{className:"text-center"},n.createElement(o.default,{href:"/docs/proto/tools#rust"},n.createElement("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 128 128",width:"100%",className:"inline-block"},n.createElement("path",{d:"M62.271 10.88c-.189.11-.982 1.248-1.763 2.529-1.96 3.217-1.982 3.219-4.615.448-1.713-1.802-2.127-2.132-2.679-2.128-.359.002-.812.124-1.008.271-.195.147-.748 1.317-1.228 2.6-1.099 2.939-1.152 3.034-1.761 3.151-.375.071-1.097-.331-2.828-1.574-1.278-.919-2.532-1.67-2.786-1.67-1.054 0-1.351.576-1.853 3.593-.638 3.836-.616 3.823-4.074 2.252-1.396-.633-2.72-1.152-2.943-1.152-.223 0-.646.24-.939.533-.532.533-.533.535-.388 3.468l.146 2.936-.555.297c-.492.263-.831.231-3.009-.284-2.843-.671-3.443-.653-4.019.122l-.421.566.565 2.421c.31 1.331.609 2.613.665 2.848.055.234-.04.609-.212.832-.284.367-.586.4-3.217.36-4.453-.07-4.706.312-2.866 4.328.585 1.275 1.064 2.433 1.064 2.572 0 .734-.585 1.001-3.098 1.411-1.406.229-2.628.417-2.716.417-.088 0-.352.192-.586.426-.765.765-.548 1.483 1.187 3.932 2.161 3.05 2.157 3.061-1.413 4.427-4.06 1.553-4.142 1.936-1.051 4.868 2.879 2.73 2.882 2.69-.377 4.739-2.469 1.551-2.507 1.588-2.57 2.429-.076 1.023-.058 1.041 2.89 2.842 2.915 1.78 2.915 1.834.054 4.541-3.077 2.91-2.982 3.335 1.081 4.868 3.55 1.339 3.555 1.355 1.39 4.405-1.227 1.729-1.618 2.449-1.618 2.983 0 .999.52 1.254 3.627 1.776 2.617.441 3.2.7 3.2 1.422 0 .148-.48 1.316-1.067 2.594-1.826 3.977-1.618 4.308 2.704 4.308 4.025 0 3.918-.123 3.051 3.507-.654 2.736-.664 3.26-.072 3.851.453.454 1.307.403 3.978-.236 2.04-.487 2.398-.521 2.871-.268l.54.289-.146 2.935c-.145 2.934-.144 2.936.388 3.469.293.293.722.533.952.533.23 0 1.554-.516 2.943-1.147 3.447-1.565 3.425-1.578 4.061 2.246.504 3.031.798 3.594 1.874 3.594.267 0 1.494-.72 2.728-1.6 2.167-1.546 2.729-1.788 3.306-1.421.149.094.727 1.364 1.284 2.822.819 2.144 1.119 2.702 1.575 2.92.868.416 1.405.082 3.445-2.14 2.463-2.683 2.564-2.67 4.575.589 2.221 3.598 2.796 3.59 5.073-.073 1.962-3.156 1.939-3.154 4.591-.384 1.761 1.838 2.136 2.131 2.73 2.131.379 0 .832-.142 1.005-.316.174-.174.75-1.459 1.28-2.855.53-1.397 1.079-2.613 1.221-2.703.561-.357 1.142-.106 3.306 1.43 1.274.905 2.473 1.6 2.758 1.6 1.058 0 1.44-.751 1.88-3.703.376-2.517.452-2.758.947-3.009.487-.247.779-.164 3.063.873 1.389.63 2.713 1.146 2.943 1.146.23 0 .666-.247.967-.549l.549-.548-.151-2.815c-.144-2.688-.131-2.832.298-3.22.441-.399.486-.397 2.952.166 2.986.682 3.543.7 4.104.139.548-.548.542-.668-.208-3.831-.841-3.548-.954-3.422 3.088-3.422 2.755 0 3.062-.039 3.413-.426.586-.648.447-1.39-.732-3.903-.595-1.266-1.078-2.418-1.074-2.56.02-.747.607-1.002 3.32-1.443 1.66-.269 2.902-.581 3.127-.784.754-.681.477-1.567-1.244-3.98-2.157-3.024-2.148-3.053 1.306-4.326 4.136-1.524 4.254-2.032 1.159-4.973-2.867-2.724-2.868-2.709.272-4.637 3.796-2.33 3.802-2.855.067-5.173-3.212-1.993-3.21-1.965-.331-4.699 3.088-2.934 3.004-3.318-1.057-4.871-3.584-1.371-3.595-1.405-1.417-4.394 1.297-1.78 1.618-2.371 1.618-2.981 0-1.066-.478-1.305-3.622-1.813-2.627-.424-3.205-.682-3.205-1.429 0-.142.48-1.285 1.067-2.542 1.149-2.461 1.31-3.446.66-4.035-.349-.316-.817-.361-3.321-.32-2.62.044-2.955.007-3.318-.358-.397-.399-.393-.455.227-3.042.76-3.17.763-3.247.138-3.834-.634-.596-1.03-.586-3.941.099-2.121.5-2.472.533-2.954.275l-.547-.293.151-2.926.152-2.925-.547-.547c-.301-.301-.728-.547-.95-.547-.221 0-1.538.523-2.926 1.161-2.318 1.067-2.567 1.138-3.068.876-.5-.262-.583-.52-1.01-3.127-.493-3.016-.798-3.603-1.869-3.603-.254 0-1.513.755-2.798 1.678-2.11 1.516-2.393 1.659-2.919 1.476-.435-.152-.688-.483-.997-1.306-.229-.606-.667-1.774-.975-2.595-.622-1.656-.969-2.027-1.901-2.027-.52 0-.991.374-2.679 2.127-2.653 2.756-2.663 2.755-4.614-.445-.78-1.279-1.595-2.421-1.812-2.537-.488-.262-1.062-.261-1.511.002m2.418 9.635c2.311 1.645 1.082 5.512-1.752 5.512-2.75 0-4.135-3.313-2.171-5.194 1.108-1.062 2.697-1.191 3.923-.318m-2.906 10.214c1.515.576 2.137.23 5.596-3.104l2.599-2.506 1.1.146c3.45.458 10.312 3.472 14.255 6.261 3.623 2.564 8.438 7.786 10.49 11.377l.439.769-1.944 4.38c-1.07 2.409-1.945 4.633-1.945 4.944 0 .717.47 1.851.923 2.226.191.159 2.006 1.033 4.033 1.942l3.684 1.654.145.937c.187 1.221.212 4.22.042 5.072l-.133.666h-2.103c-2.439 0-2.251-.218-2.383 2.774-.096 2.169-.62 3.368-1.812 4.144-1.942 1.267-5.149 1.037-6.509-.466-.209-.231-.615-1.392-.903-2.581-.841-3.473-1.971-5.423-4.241-7.32-.717-.599-1.303-1.158-1.303-1.243 0-.084.788-.748 1.752-1.473 3.51-2.646 5.528-5.726 5.75-8.777.423-5.819-4.213-11.243-11.109-13.001-1.635-.417-2.333-.43-22.56-.43-11.48 0-20.873-.075-20.873-.166 0-.215 2.551-2.691 4.054-3.933 4.127-3.412 9.488-6.097 15.04-7.531l1.92-.497 2.728 2.766c1.501 1.521 2.972 2.857 3.268 2.97M27.432 48.526c1.257.823 1.772 2.891 1.03 4.134-1.148 1.924-4.056 2.005-5.205.145-1.671-2.702 1.547-6.001 4.175-4.279m74.05.105c3.288 2.005.74 6.937-2.78 5.38-2.35-1.04-2.425-4.252-.127-5.424.959-.489 2.061-.472 2.907.044M37.12 60.907v12.266H26.276l-.43-1.866c-.846-3.675-1.202-7.477-.989-10.591l.149-2.188 3.728-1.672c2.339-1.048 3.843-1.847 4.037-2.144.848-1.293.767-2.217-.423-4.845l-.556-1.227h5.328v12.267m31.22-11.733c2.322.604 3.549 1.833 3.552 3.556.002 1.265-.625 2.059-2.18 2.761-1.101.498-1.276.51-8.219.578l-7.093.068v-7.284h6.355c4.964 0 6.625.07 7.585.321m-2.396 17.602c1.151.32 2.512 1.32 3.21 2.359.733 1.092 1.162 2.512 2.178 7.216.858 3.976 1.41 5.276 2.956 6.968 1.915 2.095 1.471 2.014 11.037 2.014 4.581 0 8.328.073 8.328.163 0 .161-3.155 3.891-3.291 3.891-.039 0-1.687-.345-3.662-.767-5.577-1.191-5.778-1.051-7.058 4.926l-.823 3.84-.743.366c-1.24.612-5.27 1.872-7.359 2.302-3.452.71-7.209.95-10.511.671-5.629-.477-13.083-2.661-13.374-3.92-.062-.267-.437-1.995-.832-3.841-.396-1.846-.877-3.597-1.069-3.891-.923-1.408-1.894-1.495-6.164-.55-1.617.358-3.028.65-3.136.65-.203 0-3.204-3.47-3.204-3.704 0-.073 7.128-.158 15.84-.188l15.84-.054.057-5.627c.04-3.973-.015-5.714-.187-5.92-.192-.232-1.214-.293-4.91-.293H54.4V66.56l5.387.001c2.962.001 5.733.098 6.157.215M41.536 92.365c2.519 1.535 1.311 5.557-1.668 5.554-3.055-.002-4.187-3.987-1.584-5.575.861-.525 2.374-.515 3.252.021m46.126.168c1.235.905 1.646 2.788.881 4.042-2.009 3.295-7.033.676-5.355-2.791.825-1.703 3.018-2.317 4.474-1.251","fill-rule":"evenodd",fill:"currentColor"})))))}},9619:(e,t,a)=>{a.d(t,{Z:()=>c});var n=a(27378),r=a(40624),o=a(31792);const l={failure:"bg-red-100 text-red-900",info:"bg-pink-100 text-pink-900",success:"bg-green-100 text-green-900",warning:"bg-orange-100 text-orange-900"};function c(e){let{className:t,icon:a,text:c,variant:i}=e;return n.createElement("span",{className:(0,r.Z)("inline-flex items-center px-1 py-0.5 rounded text-xs font-bold uppercase",i?l[i]:"bg-gray-100 text-gray-800",t)},a&&n.createElement(o.Z,{icon:a,className:"mr-1"}),c)}},16621:(e,t,a)=>{a.r(t),a.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>u,frontMatter:()=>c,metadata:()=>p,toc:()=>m});var n=a(25773),r=(a(27378),a(35318)),o=a(27915),l=a(87129);const c={title:"What is proto?"},i=void 0,p={unversionedId:"proto/index",id:"proto/index",title:"What is proto?",description:"proto is a pluggable toolchain manager.",source:"@site/docs/proto/index.mdx",sourceDirName:"proto",slug:"/proto/",permalink:"/docs/proto/",draft:!1,editUrl:"https://github.com/moonrepo/moon/tree/master/website/docs/proto/index.mdx",tags:[],version:"current",frontMatter:{title:"What is proto?"},sidebar:"proto",next:{title:"Install proto",permalink:"/docs/proto/install"}},s={},m=[{value:"Why proto?",id:"why-proto",level:2},{value:"Features",id:"features",level:3},{value:"How does it work?",id:"how-does-it-work",level:2},{value:"Shims",id:"shims",level:3},{value:"Supported tools",id:"supported-tools",level:2},{value:"Supported targets",id:"supported-targets",level:2},{value:"Roadmap",id:"roadmap",level:2}],d={toc:m};function u(e){let{components:t,...a}=e;return(0,r.kt)("wrapper",(0,n.Z)({},d,a,{components:t,mdxType:"MDXLayout"}),(0,r.kt)(o.Z,{text:"3 min",mdxType:"HeaderLabel"}),(0,r.kt)("p",null,"proto is a pluggable toolchain manager."),(0,r.kt)("p",null,"If you're unfamiliar with the concept of a toolchain, a toolchain is a collection of tools that are\ndownloaded, installed, and managed by version through a single interface. In the context of proto's\ntoolchain, a tool is either a programming language, or a dependency/package manager for a language,\nor a custom implementation provided by a plugin. It's the next step in the version manager\nevolution."),(0,r.kt)("h2",{id:"why-proto"},"Why proto?"),(0,r.kt)("p",null,"proto was designed to be a modern and holistic version manager for all of your favorite programming\nlanguages. We believe a single tool that works the same across every language is better than\nmultiple ad-hoc tools. While we only support a handful of languages today, we aim to support many\nmore in the future!"),(0,r.kt)("admonition",{type:"success"},(0,r.kt)("p",{parentName:"admonition"},"proto powers ",(0,r.kt)("a",{parentName:"p",href:"/moon"},"moon"),"'s toolchain, enabling a single source of truth for both tools!")),(0,r.kt)("h3",{id:"features"},"Features"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Lightspeed! With Rust and WASM, we can guarantee exceptional performance."),(0,r.kt)("li",{parentName:"ul"},"Multi-language. A single CLI for managing versions for all of your languages."),(0,r.kt)("li",{parentName:"ul"},"Cross-platform, for a consistent experience across machines and teams."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./proto/detection"},"Contextual version detection"),", ensuring the correct version of a tool is\nalways used."),(0,r.kt)("li",{parentName:"ul"},"Checksum verification, ensuring a tool came from a trusted source."),(0,r.kt)("li",{parentName:"ul"},"Detects and infers from a language's ecosystem for maximum compatibility."),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"./proto/plugins"},"Pluggable architecture"),", allowing for custom tooling.")),(0,r.kt)("h2",{id:"how-does-it-work"},"How does it work?"),(0,r.kt)("p",null,"The toolchain is a ",(0,r.kt)("inlineCode",{parentName:"p"},".proto")," directory within the current user's home directory, e.g., ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto"),"."),(0,r.kt)("p",null,"The first step in a tool's life-cycle is being downloaded to ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/temp"),". Downloads are\ntypically an archive that can be unpacked into a target directory. Once downloaded, we verify the\ndownloaded file by running a checksum. If this check fails for ",(0,r.kt)("em",{parentName:"p"},"any reason"),", the tool is unusable,\nand the process is aborted."),(0,r.kt)("p",null,"After a successful verification, the last step in the tool's life-cycle can begin, installation.\nDepending on the type of download, the installation process may differ. For archives, we unpack the\ntool to ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/tools//"),". In the future, we'll support building from source."),(0,r.kt)("p",null,"From here, we make these tools globally available by prepending ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/bin")," to ",(0,r.kt)("inlineCode",{parentName:"p"},"PATH")," (typically\nas part of your shell profile). Continue reading for more about this bin folder."),(0,r.kt)("h3",{id:"shims"},"Shims"),(0,r.kt)("p",null,"proto is powered the by industry standard concept of shims. For each tool installed in proto, a shim\nfile will exist at ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/bin/"),". Shims ",(0,r.kt)("em",{parentName:"p"},"are not")," symlinks to the tool's binary, but are\nthin wrappers around ",(0,r.kt)("a",{parentName:"p",href:"./proto/commands/run"},(0,r.kt)("inlineCode",{parentName:"a"},"proto run")),", enabling\n",(0,r.kt)("a",{parentName:"p",href:"./proto/detection"},"automatic version detection")," on every invocation!"),(0,r.kt)("admonition",{type:"info"},(0,r.kt)("p",{parentName:"admonition"},"The ",(0,r.kt)("inlineCode",{parentName:"p"},"~/.proto/bin")," directory ",(0,r.kt)("em",{parentName:"p"},"should")," be in your ",(0,r.kt)("inlineCode",{parentName:"p"},"PATH")," if proto was setup correctly. If not, run\nthe ",(0,r.kt)("a",{parentName:"p",href:"./proto/commands/setup"},(0,r.kt)("inlineCode",{parentName:"a"},"proto setup"))," command, or add the path manually.")),(0,r.kt)("h2",{id:"supported-tools"},"Supported tools"),(0,r.kt)("p",null,"The following tools are ",(0,r.kt)("a",{parentName:"p",href:"./proto/tools"},"officially supported")," in proto via moonrepo. Additional\ntools can be supported through ",(0,r.kt)("a",{parentName:"p",href:"./proto/plugins"},"third-party plugins"),"."),(0,r.kt)(l.Z,{cols:6,mdxType:"ToolsGrid"}),(0,r.kt)("h2",{id:"supported-targets"},"Supported targets"),(0,r.kt)("p",null,"Because proto is written in Rust, we only support targets that are explicitly compiled for, which\nare currently:"),(0,r.kt)("table",null,(0,r.kt)("thead",{parentName:"table"},(0,r.kt)("tr",{parentName:"thead"},(0,r.kt)("th",{parentName:"tr",align:"left"},"Operating system"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Architecture"),(0,r.kt)("th",{parentName:"tr",align:"left"},"Target"))),(0,r.kt)("tbody",{parentName:"table"},(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"macOS 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Intel"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"x86_64-apple-darwin"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"macOS 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"ARM"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"aarch64-apple-darwin"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Linux 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Intel GNU"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"x86_64-unknown-linux-gnu"))),(0,r.kt)("tr",{parentName:"tbody"},(0,r.kt)("td",{parentName:"tr",align:"left"},"Windows 64-bit"),(0,r.kt)("td",{parentName:"tr",align:"left"},"Intel"),(0,r.kt)("td",{parentName:"tr",align:"left"},(0,r.kt)("inlineCode",{parentName:"td"},"x86_64-pc-windows-msvc"))))),(0,r.kt)("h2",{id:"roadmap"},"Roadmap"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Linux ARM/musl support."),(0,r.kt)("li",{parentName:"ul"},"Build from source for existing languages."),(0,r.kt)("li",{parentName:"ul"},"New languages.")))}u.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/b2b675dd.cf557404.js b/assets/js/b2b675dd.88275123.js similarity index 76% rename from assets/js/b2b675dd.cf557404.js rename to assets/js/b2b675dd.88275123.js index 44bf634e6d8..8ccb26ac7da 100644 --- a/assets/js/b2b675dd.cf557404.js +++ b/assets/js/b2b675dd.88275123.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[533],{28017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":5,"totalCount":46,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[533],{28017:e=>{e.exports=JSON.parse('{"permalink":"/blog","page":1,"postsPerPage":10,"totalPages":5,"totalCount":47,"nextPage":"/blog/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.039b3932.js b/assets/js/b2f554cd.039b3932.js new file mode 100644 index 00000000000..536aa77dd33 --- /dev/null +++ b/assets/js/b2f554cd.039b3932.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1477],{30010:e=>{e.exports=JSON.parse('{"blogPosts":[{"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"},"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@v3\'\\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@v3\\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-