@rockclaver/sandcastle 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +1355 -0
- package/dist/MountConfig-CmXclHA5.d.ts +26 -0
- package/dist/SandboxProvider-EkSMuBp8.d.ts +243 -0
- package/dist/chunk-72UVAC7B.js +99 -0
- package/dist/chunk-72UVAC7B.js.map +1 -0
- package/dist/chunk-BIWNFKGV.js +22 -0
- package/dist/chunk-BIWNFKGV.js.map +1 -0
- package/dist/chunk-FKX3DRTL.js +362 -0
- package/dist/chunk-FKX3DRTL.js.map +1 -0
- package/dist/chunk-NGBM7T3E.js +76 -0
- package/dist/chunk-NGBM7T3E.js.map +1 -0
- package/dist/chunk-QCLZLPJ7.js +26431 -0
- package/dist/chunk-QCLZLPJ7.js.map +1 -0
- package/dist/chunk-VAKEM3U2.js +26997 -0
- package/dist/chunk-VAKEM3U2.js.map +1 -0
- package/dist/index.d.ts +943 -0
- package/dist/index.js +2393 -0
- package/dist/index.js.map +1 -0
- package/dist/main.d.ts +1 -0
- package/dist/main.js +19268 -0
- package/dist/main.js.map +1 -0
- package/dist/mountUtils-CCA-bbpK.d.ts +25 -0
- package/dist/sandboxes/daytona.d.ts +60 -0
- package/dist/sandboxes/daytona.js +122 -0
- package/dist/sandboxes/daytona.js.map +1 -0
- package/dist/sandboxes/docker.d.ts +110 -0
- package/dist/sandboxes/docker.js +9 -0
- package/dist/sandboxes/docker.js.map +1 -0
- package/dist/sandboxes/no-sandbox.d.ts +38 -0
- package/dist/sandboxes/no-sandbox.js +7 -0
- package/dist/sandboxes/no-sandbox.js.map +1 -0
- package/dist/sandboxes/podman.d.ts +124 -0
- package/dist/sandboxes/podman.js +299 -0
- package/dist/sandboxes/podman.js.map +1 -0
- package/dist/sandboxes/vercel.d.ts +104 -0
- package/dist/sandboxes/vercel.js +148 -0
- package/dist/sandboxes/vercel.js.map +1 -0
- package/dist/templates/blank/main.mts +14 -0
- package/dist/templates/blank/prompt.md +12 -0
- package/dist/templates/blank/template.json +4 -0
- package/dist/templates/parallel-planner/implement-prompt.md +62 -0
- package/dist/templates/parallel-planner/main.mts +204 -0
- package/dist/templates/parallel-planner/merge-prompt.md +26 -0
- package/dist/templates/parallel-planner/plan-prompt.md +37 -0
- package/dist/templates/parallel-planner/template.json +4 -0
- package/dist/templates/parallel-planner-with-review/CODING_STANDARDS.md +27 -0
- package/dist/templates/parallel-planner-with-review/implement-prompt.md +62 -0
- package/dist/templates/parallel-planner-with-review/main.mts +226 -0
- package/dist/templates/parallel-planner-with-review/merge-prompt.md +26 -0
- package/dist/templates/parallel-planner-with-review/plan-prompt.md +37 -0
- package/dist/templates/parallel-planner-with-review/review-prompt.md +55 -0
- package/dist/templates/parallel-planner-with-review/template.json +4 -0
- package/dist/templates/sequential-reviewer/CODING_STANDARDS.md +27 -0
- package/dist/templates/sequential-reviewer/implement-prompt.md +53 -0
- package/dist/templates/sequential-reviewer/main.mts +119 -0
- package/dist/templates/sequential-reviewer/review-prompt.md +55 -0
- package/dist/templates/sequential-reviewer/template.json +4 -0
- package/dist/templates/simple-loop/main.mts +49 -0
- package/dist/templates/simple-loop/prompt.md +53 -0
- package/dist/templates/simple-loop/template.json +4 -0
- package/package.json +104 -0
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../node_modules/ini/lib/ini.js","../node_modules/toml/lib/parser.js","../node_modules/toml/lib/compiler.js","../node_modules/toml/index.js","../node_modules/yaml/dist/nodes/identity.js","../node_modules/yaml/dist/visit.js","../node_modules/yaml/dist/doc/directives.js","../node_modules/yaml/dist/doc/anchors.js","../node_modules/yaml/dist/doc/applyReviver.js","../node_modules/yaml/dist/nodes/toJS.js","../node_modules/yaml/dist/nodes/Node.js","../node_modules/yaml/dist/nodes/Alias.js","../node_modules/yaml/dist/nodes/Scalar.js","../node_modules/yaml/dist/doc/createNode.js","../node_modules/yaml/dist/nodes/Collection.js","../node_modules/yaml/dist/stringify/stringifyComment.js","../node_modules/yaml/dist/stringify/foldFlowLines.js","../node_modules/yaml/dist/stringify/stringifyString.js","../node_modules/yaml/dist/stringify/stringify.js","../node_modules/yaml/dist/stringify/stringifyPair.js","../node_modules/yaml/dist/log.js","../node_modules/yaml/dist/schema/yaml-1.1/merge.js","../node_modules/yaml/dist/nodes/addPairToJSMap.js","../node_modules/yaml/dist/nodes/Pair.js","../node_modules/yaml/dist/stringify/stringifyCollection.js","../node_modules/yaml/dist/nodes/YAMLMap.js","../node_modules/yaml/dist/schema/common/map.js","../node_modules/yaml/dist/nodes/YAMLSeq.js","../node_modules/yaml/dist/schema/common/seq.js","../node_modules/yaml/dist/schema/common/string.js","../node_modules/yaml/dist/schema/common/null.js","../node_modules/yaml/dist/schema/core/bool.js","../node_modules/yaml/dist/stringify/stringifyNumber.js","../node_modules/yaml/dist/schema/core/float.js","../node_modules/yaml/dist/schema/core/int.js","../node_modules/yaml/dist/schema/core/schema.js","../node_modules/yaml/dist/schema/json/schema.js","../node_modules/yaml/dist/schema/yaml-1.1/binary.js","../node_modules/yaml/dist/schema/yaml-1.1/pairs.js","../node_modules/yaml/dist/schema/yaml-1.1/omap.js","../node_modules/yaml/dist/schema/yaml-1.1/bool.js","../node_modules/yaml/dist/schema/yaml-1.1/float.js","../node_modules/yaml/dist/schema/yaml-1.1/int.js","../node_modules/yaml/dist/schema/yaml-1.1/set.js","../node_modules/yaml/dist/schema/yaml-1.1/timestamp.js","../node_modules/yaml/dist/schema/yaml-1.1/schema.js","../node_modules/yaml/dist/schema/tags.js","../node_modules/yaml/dist/schema/Schema.js","../node_modules/yaml/dist/stringify/stringifyDocument.js","../node_modules/yaml/dist/doc/Document.js","../node_modules/yaml/dist/errors.js","../node_modules/yaml/dist/compose/resolve-props.js","../node_modules/yaml/dist/compose/util-contains-newline.js","../node_modules/yaml/dist/compose/util-flow-indent-check.js","../node_modules/yaml/dist/compose/util-map-includes.js","../node_modules/yaml/dist/compose/resolve-block-map.js","../node_modules/yaml/dist/compose/resolve-block-seq.js","../node_modules/yaml/dist/compose/resolve-end.js","../node_modules/yaml/dist/compose/resolve-flow-collection.js","../node_modules/yaml/dist/compose/compose-collection.js","../node_modules/yaml/dist/compose/resolve-block-scalar.js","../node_modules/yaml/dist/compose/resolve-flow-scalar.js","../node_modules/yaml/dist/compose/compose-scalar.js","../node_modules/yaml/dist/compose/util-empty-scalar-position.js","../node_modules/yaml/dist/compose/compose-node.js","../node_modules/yaml/dist/compose/compose-doc.js","../node_modules/yaml/dist/compose/composer.js","../node_modules/yaml/dist/parse/cst-scalar.js","../node_modules/yaml/dist/parse/cst-stringify.js","../node_modules/yaml/dist/parse/cst-visit.js","../node_modules/yaml/dist/parse/cst.js","../node_modules/yaml/dist/parse/lexer.js","../node_modules/yaml/dist/parse/line-counter.js","../node_modules/yaml/dist/parse/parser.js","../node_modules/yaml/dist/public-api.js","../node_modules/yaml/dist/index.js","../node_modules/@effect/cli/src/internal/files.ts","../node_modules/@effect/typeclass/src/internal/Iterable.ts","../node_modules/@effect/typeclass/src/Product.ts","../node_modules/@effect/typeclass/src/Semigroup.ts","../node_modules/@effect/typeclass/src/Monoid.ts","../node_modules/@effect/printer-ansi/src/internal/color.ts","../node_modules/@effect/printer-ansi/src/internal/sgr.ts","../node_modules/@effect/printer-ansi/src/internal/ansi.ts","../node_modules/@effect/printer-ansi/src/Ansi.ts","../node_modules/@effect/printer/src/internal/flatten.ts","../node_modules/@effect/printer/src/internal/doc.ts","../node_modules/@effect/printer/src/internal/docStream.ts","../node_modules/@effect/printer/src/internal/layoutPipeline.ts","../node_modules/@effect/printer/src/internal/pageWidth.ts","../node_modules/@effect/printer/src/internal/layout.ts","../node_modules/@effect/printer/src/Doc.ts","../node_modules/@effect/printer-ansi/src/internal/ansiDoc.ts","../node_modules/@effect/printer/src/PageWidth.ts","../node_modules/@effect/printer/src/Layout.ts","../node_modules/@effect/printer-ansi/src/internal/ansiRender.ts","../node_modules/@effect/printer-ansi/src/AnsiDoc.ts","../node_modules/@effect/printer/src/internal/optimize.ts","../node_modules/@effect/printer/src/Optimize.ts","../node_modules/@effect/printer-ansi/src/Color.ts","../node_modules/@effect/cli/src/internal/helpDoc/span.ts","../node_modules/@effect/cli/src/internal/helpDoc.ts","../node_modules/@effect/cli/src/internal/cliConfig.ts","../node_modules/@effect/cli/src/internal/prompt/action.ts","../node_modules/@effect/cli/src/internal/prompt.ts","../node_modules/@effect/cli/src/internal/prompt/ansi-utils.ts","../node_modules/@effect/cli/src/internal/prompt/date.ts","../node_modules/@effect/cli/src/internal/prompt/utils.ts","../node_modules/@effect/cli/src/internal/prompt/file.ts","../node_modules/@effect/cli/src/internal/prompt/number.ts","../node_modules/@effect/cli/src/internal/prompt/select.ts","../node_modules/@effect/cli/src/internal/prompt/text.ts","../node_modules/@effect/cli/src/internal/prompt/toggle.ts","../node_modules/@effect/cli/src/internal/primitive.ts","../node_modules/@effect/cli/src/internal/usage.ts","../node_modules/@effect/cli/src/internal/validationError.ts","../node_modules/@effect/cli/src/internal/args.ts","../node_modules/@effect/cli/src/internal/autoCorrect.ts","../node_modules/@effect/cli/src/internal/prompt/list.ts","../node_modules/@effect/cli/src/internal/options.ts","../node_modules/@effect/cli/src/internal/builtInOptions.ts","../node_modules/@effect/cli/src/HelpDoc.ts","../node_modules/@effect/cli/src/Options.ts","../node_modules/@effect/cli/src/internal/commandDirective.ts","../node_modules/@effect/cli/src/internal/commandDescriptor.ts","../node_modules/@effect/cli/src/internal/cliApp.ts","../node_modules/@effect/cli/src/Command.ts","../node_modules/@effect/cli/src/ValidationError.ts","../node_modules/@effect/cli/src/internal/command.ts","../src/PodmanLifecycle.ts","../src/InitService.ts","../src/version.ts","../src/cli.ts","../src/terminalCleanup.ts","../src/main.ts"],"names":["exports","decode","p","lines","line","match","isArray","value","column","parse","options","node","char","left","right","text","date","expected","found","cached","reduce","nodes","path","array","identity","error","res","anchors","map","indent","i","end","code","stringify","merge","log","comment","str","seq","string","float","dot","int","require_schema","pairs","omap","require_bool","require_float","require_int","n","set","tags","comma","first","tag","head","isEmpty","ch","require_parser","list","start","lineCounter","fileParsers","json","content","JSON","yaml","yml","ini","toml","tml","read","flatMap","FileSystem","fs","matchEffect","readFile","onFailure","fail","onSuccess","succeed","readString","readFileString","format","parser","split","pop","undefined","try","catch","e","b","f","iterable","Array","result","struct","F","fields","keys","Object","imap","productAll","k","values","out","length","r","make","combine","combineMany","self","collection","constant","a","dual","S","to","from","that","product","xa","xb","ya","yb","x","y","len","Math","min","collectionLength","s","push","productMany","semigroup","slice","of","Product","concat","fromSemigroup","empty","combineAll","prototype","hasOwnProperty","call","black","_tag","red","green","magenta","cyan","white","toCode","color","reset","setBold","bold","setColor","vivid","layer","setItalicized","italicized","setStrikethrough","strikethrough","setUnderlined","underlined","toEscapeSequence","sgrs","csi","controlFunction","params","sgr","join","AnsiSymbolKey","AnsiTypeId","Symbol","for","AnsiMonoid","typeIdSemigroup","getFirstSomeSemigroup","isSome","AnsiSemigroup","commands","foreground","background","typeIdMonoid","monoidOrElse","none","ESC","BEL","SEP","some","brightColor","blackBright","cyanBright","beep","cursorTo","row","command","max","cursorMove","cursorDown","cursorLeft","cursorSavePosition","cursorRestorePosition","cursorHide","cursorShow","eraseLines","rows","eraseLine","stringifyInternal","combineInternal","displaySequence","getSomes","commandSequence","FlattenSymbolKey","FlattenTypeId","protoHash","Flattened","hash","AlreadyFlat","_","NeverFlat","protoEqual","isFlatten","equals","proto","_A","symbol","u","isFlattened","isAlreadyFlat","isNeverFlat","flattened","op","create","alreadyFlat","neverFlat","DocSymbolKey","DocTypeId","Fail","Empty","Char","Text","Line","FlatAlt","Cat","Nest","doc","Union","Column","react","WithPageWidth","Nesting","Annotated","annotation","isDoc","pipe","pipeArguments","arguments","isChar","isText","isCat","isNest","flatAlt","union","cat","hardLine","lineBreak","space","cats","docs","group","vcat","catWithLine","catWithLineBreak","catWithSpace","concatWith","matchRight","fromIterable","onEmpty","onNonEmpty","init","last","reduceRight","curr","acc","hsep","vsep","changesUponFlattening","nesting","pageWidth","nest","align","position","level","hang","spaces","flatten","runSync","flattenSafe","gen","annotate","changesUponFlatteningSafe","Error","textSpaces","DocStreamSymbolKey","DocStreamTypeId","FailedStream","EmptyStream","CharStream","stream","TextStream","LineStream","PushAnnotationStream","PopAnnotationStream","isDocStream","isEmptyStream","isLineStream","failed","indentation","pushAnnotation","popAnnotation","nil","cons","document","pipeline","undoAnnotation","PageWidthSymbolKey","PageWidthTypeId","AvailablePerLine","lineWidth","ribbonFraction","Unbounded","isPageWidth","availablePerLine","unbounded","defaultPageWidth","remainingWidth","currentColumn","columnsLeftInLine","ribbonWidth","floor","columnsLeftInRibbon","wadlerLeijen","fits","wadlerLeijenSafe","nestingLevel","best","nl","cc","nextIndent","next","inner","outer","leftPipeline","rightPipeline","selectNicer","undo","lineIndent","leftStream","rightStream","compact","compactSafe","isNil","tail","pretty","width","fitsPretty","w","smart","fitsSmart","comparator","availableWidth","fitsSmartLoop","minNestingLevel","getInitialIndentation","onNone","onSome","failsOnFirstLine","render","config","style","renderStream","assign","renderSafe","unsafePeek","stack","unsafePop","dieMessage","suspend","rest","currentStyle","nextStyle","styles","optimize","depth","optimizeSafe","Deep","highlight","strong","weak","getText","spans","elements","isNonEmptyReadonlyArray","size","toAnsiDoc","helpDoc","isHeader","isParagraph","isDescriptionList","sequence","blocks","helpDocs","getSpan","descriptionList","definitions","enumeration","h1","mapDescriptionList","span","toAnsiDocInternal","toAnsiText","Tag","GenericTag","defaultConfig","isCaseSensitive","autoCorrectLimit","finalCheckBuiltIn","showAllNames","showBuiltIns","showTypes","normalizeCase","toLowerCase","Action","taggedEnum","PromptSymbolKey","PromptTypeId","CommitPrototype","_Output","commit","run","isPrompt","custom","initialState","handlers","process","clear","prompt","fnUntraced","terminal","Terminal","input","readInput","runWithInput","mapError","QuitException","scoped","runLoop","loop","state","isEffect","action","NextFrame","msg","orDie","display","event","take","effect","ensuring","defaultFigures","arrowUp","arrowDown","arrowLeft","arrowRight","radioOn","radioOff","checkboxOn","checkboxOff","tick","cross","ellipsis","pointerSmall","pointer","windowsFigures","figures","sync","platform","isWindows","eraseText","columns","ceil","renderBeep","handleClear","resetCurrentLine","clearError","clearOutput","message","NEWLINE_REGEX","renderError","errorLines","annotateLine","prefix","renderParts","submitted","dateParts","part","currentIndex","partDoc","toString","cursor","renderOutput","leadingSymbol","trailingSymbol","parts","promptLines","renderNextFrame","promptMsg","errorMsg","renderSubmission","processUp","increment","typed","processDown","decrement","processCursorLeft","previousPart","Beep","previous","indexOf","processCursorRight","nextPart","processNext","findIndex","isToken","defaultProcessor","test","setValue","defaultLocales","months","monthsShort","weekdays","weekdaysShort","handleRender","$match","Submit","handleProcess","key","name","validate","getOrElse","opts","initial","Date","dateMask","locales","makeDateParts","initialCursorPosition","DATE_PART_REGEX","regexGroups","token","Token","replace","Day","Month","Year","Meridiem","Hours","Minutes","Seconds","Milliseconds","exec","shift","index","orderedParts","element","lastElement","splice","DatePart","constructor","findFirstIndex","currentPartIndex","findFirst","findLast","String","setMilliseconds","getMilliseconds","Number","parseInt","millis","padStart","substring","setSeconds","getSeconds","seconds","setMinutes","getMinutes","minutes","setHours","getHours","hours","setDate","getDate","day","getDay","when","ordinalIndicator","orElse","setMonth","getMonth","month","setFullYear","getFullYear","year","_value","meridiem","toUpperCase","entriesToDisplay","total","maxVisible","startIndex","endIndex","CONFIRM_MESSAGE","Confirm","showConfirmation","$is","resolveCurrentPath","startingPath","cwd","exists","filterOrDieMessage","as","getFileList","directory","Path","files","readDirectory","filter","file","userDefinedFilter","directoryFilter","type","stat","info","zipWith","concurrency","currentPath","repeat","maxPerPage","clearPath","confirm","clearPrompt","clearOptions","renderPrompt","renderPrefix","toDisplay","renderFileName","isSelected","renderFiles","documents","fileName","selectedPath","resolvedPath","resolve","resolvedPathMsg","processCursorUp","processCursorDown","processSelection","filesWithoutParent","Show","Hide","fromNullable","NumberFromString","decodeUnknown","parseFloat","renderInput","nextState","processBackspace","defaultIntProcessor","defaultFloatProcessor","includes","handleRenderInteger","handleProcessInteger","incrementBy","decrementBy","integer","NEGATIVE_INFINITY","POSITIVE_INFINITY","handleRenderFloat","handleProcessFloat","round","precision","rounded","renderChoicePrefix","choices","disabled","renderChoiceTitle","choice","title","renderChoiceDescription","description","renderChoices","selected","select","initialIndex","seenSelected","getValue","default","renderClearScreen","inputValue","fullLine","offset","beforeCursor","afterCursor","processTab","basePrompt","hidden","renderToggle","separator","selectedAnnotation","inactive","active","toggle","activate","deactivate","PrimitiveSymbolKey","PrimitiveTypeId","isPrimitive","isBool","isBoolType","trueValues","Literal","isTrueValue","is","falseValues","isFalseValue","boolean","defaultValue","alternatives","pathType","pathExists","redacted","secret","getChoices","getChoicesInternal","getHelp","getHelpInternal","getTypeName","getTypeNameInternal","validateInternal","wizard","help","wizardInternal","orElseFail","mapBoth","attempt","intFromString","compose","Int","fileSystem","tap","validatePathExistence","zipRight","validatePathType","fromString","option","typeName","shouldPathExist","void","checkIsFile","unlessEffect","asVoid","checkIsDirectory","primitiveHelp","trimEnd","bool","toISOString","getBashCompletions","getFishCompletions","getZshCompletions","mixed","named","names","acceptedValues","optional","usage","repeated","alternation","enumerate","headNonEmpty","tailNonEmpty","simplify","isNone","leftUsage","rightUsage","typeInfo","namesToShow","startsWith","nameInfo","appendAll","leftSpan","rightSpan","ValidationErrorSymbolKey","ValidationErrorTypeId","isValidationError","isCommandMismatch","isHelpRequested","isMultipleValuesDetected","isMissingValue","commandMismatch","correctedFlag","invalidArgument","invalidValue","missingFlag","missingValue","multipleValuesDetected","noBuiltInMatch","unclusteredFlag","unclustered","ArgsSymbolKey","ArgsTypeId","isArgs","all","allTupled","entries","makeBoth","record","getUsage","getUsageInternal","mapEffect","makeMap","args","arg","primitiveType","oldSpan","oldBlock","getMinSizeInternal","getMaxSizeInternal","newSpan","newBlock","block","optionalDescription","isOption","fallback","fallbackValue","inspectableValue","isObject","displayValue","toStringUnknown","leftMinSize","rightMinSize","argsMinSize","leftMaxSize","rightMaxSize","argsMaxSize","MAX_SAFE_INTEGER","matchLeft","pseudoName","leftover","min1","max1","failure","isEmptyReadonlyArray","append","catchTag","catchAll","e2","isMissingDataOnly","zipLeft","repeatHelp","ref","update","repeatN","get","defaultHelp","useFallback","getShortDescription","multiple","shortDescription","possibleValues","levensteinDistance","second","rowCount","columnCount","matrix","normalFirst","normalSecond","col","cost","charAt","output","delimiter","OptionsSymbolKey","OptionsTypeId","isOptions","isInstruction","isSingle","isWithDefault","defaultBooleanOptions","ifPresent","negationNames","aliases","makeSingle","negationOption","withDefault","primitive","choiceWithValue","fileContent","fileParse","fileText","fileSchema","schema","withSchema","filterMap","keyValueMap","single","makeKeyValueMap","atLeast","times","makeVariadic","atMost","between","isBoolInternal","getIdentifier","getIdentifierInternal","mapTryCatch","onError","orElseEither","makeOrElse","parseInternal","processCommandLine","matchOptions","toParseableInstruction","commandArgs","matchedOptions","err","withAlias","alias","modifySingle","makeWithDefault","withFallbackConfig","makeWithFallback","withFallbackPrompt","withDescription","desc","withPseudoName","issue","TreeFormatter","formatIssueSync","identifier","getOrThrow","argumentOption","header","isConfig","fullName","ids","selfMinSize","argumentOptionMinSize","leftMin","rightMin","selfMaxSize","optionsMaxSize","placeholder","getNames","makeFullName","prepend","order","mapInput","tuple","sort","keyValueSplitter","singleNames","extractKeyValue","trim","forEach","kv","err1","err2","zip","leftUid","rightUid","matchedArgument","validateMinMax","validatePrimitive","every","isTagged","die","isConfigError","parseCommandLine","alternativeHelp","makeChoice","findOptions","otherArgs","otherOptions","map1","map2","parsed","nextArgs","nextOptions","catchTags","CorrectedFlag","catchSome","MissingFlag","UnclusteredFlag","matchUnclustered","CLUSTERED_REGEX","FLAG_REGEX","processArgs","c","normalize","normalizedHead","normalizedNames","contains","optionIndex","equalsValue","normalizedArg","flagMatch","normalizedFlag","rawArg","optionName","beforeOption","afterOption","nextValue","optionValue","keyValues","normalizedName","keyValue","remaining","unparsed","flag","otherFlags","opts1","opts2","newMap","elems","escape","replaceAll","cases","compgen","isShort","conflicts","leftNames","rightNames","setLogLevel","showCompletions","shellType","showHelp","showWizard","showVersion","isShowHelp","isShowWizard","completionsOptions","logLevelOptions","allLevels","helpOptions","versionOptions","wizardOptions","builtIns","completions","logLevel","version","builtInOptions","builtIn","userDefined","isBuiltIn","isUserDefined","CommandDescriptorSymbolKey","TypeId","isCommand","isStandard","getNamesInternal","executable","getBashCompletionsInternal","getFishCompletionsInternal","getZshCompletionsInternal","getSubcommands","getSubcommandsInternal","withDescriptionInternal","withSubcommands","subcommands","parent","children","id","argsHelp","argsSection","optionsHelp","optionsSection","preceding","usages","finalUsage","parentUsage","child","childrenUsage","printSubcommands","maxUsageLength","isSubcommand","normalizedArgv0","normalizedCommandName","parseBuiltInArgs","argv0","argsWithoutCommand","drop","parseUserDefinedArgs","commandOptionsAndArgs","optionsAndArgs","forcedCommandArgs","splitForcedArgs","optionsType","argsLeftover","argsType","exhaustiveSearch","directive","parentArgs","childArgs","parseChildrenWith","argsForChildren","iterator","catchIf","done","parseChildren","helpDirectiveForParent","helpDirectiveForChild","parentName","newDirective","wizardDirectiveForParent","wizardDirectiveForChild","childDirective","childLeftover","subcommand","parentArgsWithLeftover","reParsedParentDirective","childNames","oneOf","remainingArgs","forcedArgs","argsWizardHeader","optionsWizardHeader","commandLineRef","logCurrentCommand","commandLine","currentCommand","commandName","updateAndGet","nextIndex","traverseCommand","parentCommands","updateEffect","parentNames","nextSubcommands","nextParentCommands","indentAll","allocate","optionNames","optionCases","subcommandNames","wordList","preformatted","caseName","funcName","funcLines","cmdLines","rootCommand","unsafeGet","scriptName","funcCases","cmdCases","baseTemplate","optionsCompletions","argsCompletions","rootCompletions","conditionals","subcommandCompletions","parentConditionals","subcommandConditionals","baseConditionals","underscoreName","spaceName","handlerLines","getZshSubcommandCases","optionCompletions","completion","argCompletions","parentLines","childCases","hyphenName","childLines","helpRequestedError","summary","footer","execute","contextWithEffect","context","getOption","filteredArgs","splitExecutable","prefixedArgs","prefixCommand","printDocs","unify","handleBuiltInOption","runtime","script","splitAt","originalArgs","baseArgs","isLogLevelArg","withMinimumLogLevel","banner","instructions","wizardPrefix","getWizardPrefix","renderWizardArgs","shouldRunCommand","wizardArgs","finalArgs","isQuitException","commandLineArgs","has","param","executeMsg","fromDescriptor","provide","provideEffect","provideEffectDiscard","provideSync","transformHandler","withHandler","helpRequested","CommandSymbolKey","parseConfig","argsIndex","optionsIndex","tree","parseValue","reconstructConfigTree","nodeValue","Prototype","registeredDescriptors","globalValue","WeakMap","getDescriptor","descriptor","makeProto","handler","transform","makeDerive","failSync","makeDescriptor","programName","mapDescriptor","effect_","provideServiceEffect","service","provideService","subcommandMap","Map","subcommandEffect","app","buildImage","removeImage"],"mappings":"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","file":"main.js","sourcesContent":["const { hasOwnProperty } = Object.prototype\n\nconst encode = (obj, opt = {}) => {\n if (typeof opt === 'string') {\n opt = { section: opt }\n }\n opt.align = opt.align === true\n opt.newline = opt.newline === true\n opt.sort = opt.sort === true\n opt.whitespace = opt.whitespace === true || opt.align === true\n // The `typeof` check is required because accessing the `process` directly fails on browsers.\n /* istanbul ignore next */\n opt.platform = opt.platform || (typeof process !== 'undefined' && process.platform)\n opt.bracketedArray = opt.bracketedArray !== false\n\n /* istanbul ignore next */\n const eol = opt.platform === 'win32' ? '\\r\\n' : '\\n'\n const separator = opt.whitespace ? ' = ' : '='\n const children = []\n\n const keys = opt.sort ? Object.keys(obj).sort() : Object.keys(obj)\n\n let padToChars = 0\n // If aligning on the separator, then padToChars is determined as follows:\n // 1. Get the keys\n // 2. Exclude keys pointing to objects unless the value is null or an array\n // 3. Add `[]` to array keys\n // 4. Ensure non empty set of keys\n // 5. Reduce the set to the longest `safe` key\n // 6. Get the `safe` length\n if (opt.align) {\n padToChars = safe(\n (\n keys\n .filter(k => obj[k] === null || Array.isArray(obj[k]) || typeof obj[k] !== 'object')\n .map(k => Array.isArray(obj[k]) ? `${k}[]` : k)\n )\n .concat([''])\n .reduce((a, b) => safe(a).length >= safe(b).length ? a : b)\n ).length\n }\n\n let out = ''\n const arraySuffix = opt.bracketedArray ? '[]' : ''\n\n for (const k of keys) {\n const val = obj[k]\n if (val && Array.isArray(val)) {\n for (const item of val) {\n out += safe(`${k}${arraySuffix}`).padEnd(padToChars, ' ') + separator + safe(item) + eol\n }\n } else if (val && typeof val === 'object') {\n children.push(k)\n } else {\n out += safe(k).padEnd(padToChars, ' ') + separator + safe(val) + eol\n }\n }\n\n if (opt.section && out.length) {\n out = '[' + safe(opt.section) + ']' + (opt.newline ? eol + eol : eol) + out\n }\n\n for (const k of children) {\n const nk = splitSections(k, '.').join('\\\\.')\n const section = (opt.section ? opt.section + '.' : '') + nk\n const child = encode(obj[k], {\n ...opt,\n section,\n })\n if (out.length && child.length) {\n out += eol\n }\n\n out += child\n }\n\n return out\n}\n\nfunction splitSections (str, separator) {\n var lastMatchIndex = 0\n var lastSeparatorIndex = 0\n var nextIndex = 0\n var sections = []\n\n do {\n nextIndex = str.indexOf(separator, lastMatchIndex)\n\n if (nextIndex !== -1) {\n lastMatchIndex = nextIndex + separator.length\n\n if (nextIndex > 0 && str[nextIndex - 1] === '\\\\') {\n continue\n }\n\n sections.push(str.slice(lastSeparatorIndex, nextIndex))\n lastSeparatorIndex = nextIndex + separator.length\n }\n } while (nextIndex !== -1)\n\n sections.push(str.slice(lastSeparatorIndex))\n\n return sections\n}\n\nconst decode = (str, opt = {}) => {\n opt.bracketedArray = opt.bracketedArray !== false\n const out = Object.create(null)\n let p = out\n let section = null\n // section |key = value\n const re = /^\\[([^\\]]*)\\]\\s*$|^([^=]+)(=(.*))?$/i\n const lines = str.split(/[\\r\\n]+/g)\n const duplicates = {}\n\n for (const line of lines) {\n if (!line || line.match(/^\\s*[;#]/) || line.match(/^\\s*$/)) {\n continue\n }\n const match = line.match(re)\n if (!match) {\n continue\n }\n if (match[1] !== undefined) {\n section = unsafe(match[1])\n if (section === '__proto__') {\n // not allowed\n // keep parsing the section, but don't attach it.\n p = Object.create(null)\n continue\n }\n p = out[section] = out[section] || Object.create(null)\n continue\n }\n const keyRaw = unsafe(match[2])\n let isArray\n if (opt.bracketedArray) {\n isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'\n } else {\n duplicates[keyRaw] = (duplicates?.[keyRaw] || 0) + 1\n isArray = duplicates[keyRaw] > 1\n }\n const key = isArray && keyRaw.endsWith('[]')\n ? keyRaw.slice(0, -2) : keyRaw\n\n if (key === '__proto__') {\n continue\n }\n const valueRaw = match[3] ? unsafe(match[4]) : true\n const value = valueRaw === 'true' ||\n valueRaw === 'false' ||\n valueRaw === 'null' ? JSON.parse(valueRaw)\n : valueRaw\n\n // Convert keys with '[]' suffix to an array\n if (isArray) {\n if (!hasOwnProperty.call(p, key)) {\n p[key] = []\n } else if (!Array.isArray(p[key])) {\n p[key] = [p[key]]\n }\n }\n\n // safeguard against resetting a previously defined\n // array by accidentally forgetting the brackets\n if (Array.isArray(p[key])) {\n p[key].push(value)\n } else {\n p[key] = value\n }\n }\n\n // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n // use a filter to return the keys that have to be deleted.\n const remove = []\n for (const k of Object.keys(out)) {\n if (!hasOwnProperty.call(out, k) ||\n typeof out[k] !== 'object' ||\n Array.isArray(out[k])) {\n continue\n }\n\n // see if the parent section is also an object.\n // if so, add it to that, and mark this one for deletion\n const parts = splitSections(k, '.')\n p = out\n const l = parts.pop()\n const nl = l.replace(/\\\\\\./g, '.')\n for (const part of parts) {\n if (part === '__proto__') {\n continue\n }\n if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object') {\n p[part] = Object.create(null)\n }\n p = p[part]\n }\n if (p === out && nl === l) {\n continue\n }\n\n p[nl] = out[k]\n remove.push(k)\n }\n for (const del of remove) {\n delete out[del]\n }\n\n return out\n}\n\nconst isQuoted = val => {\n return (val.startsWith('\"') && val.endsWith('\"')) ||\n (val.startsWith(\"'\") && val.endsWith(\"'\"))\n}\n\nconst safe = val => {\n if (\n typeof val !== 'string' ||\n val.match(/[=\\r\\n]/) ||\n val.match(/^\\[/) ||\n (val.length > 1 && isQuoted(val)) ||\n val !== val.trim()\n ) {\n return JSON.stringify(val)\n }\n return val.split(';').join('\\\\;').split('#').join('\\\\#')\n}\n\nconst unsafe = val => {\n val = (val || '').trim()\n if (isQuoted(val)) {\n // remove the single quotes before calling JSON.parse\n if (val.charAt(0) === \"'\") {\n val = val.slice(1, -1)\n }\n try {\n val = JSON.parse(val)\n } catch {\n // ignore errors\n }\n } else {\n // walk the val to find the first not-escaped ; character\n let esc = false\n let unesc = ''\n for (let i = 0, l = val.length; i < l; i++) {\n const c = val.charAt(i)\n if (esc) {\n if ('\\\\;#'.indexOf(c) !== -1) {\n unesc += c\n } else {\n unesc += '\\\\' + c\n }\n\n esc = false\n } else if (';#'.indexOf(c) !== -1) {\n break\n } else if (c === '\\\\') {\n esc = true\n } else {\n unesc += c\n }\n }\n if (esc) {\n unesc += '\\\\'\n }\n\n return unesc.trim()\n }\n return val\n}\n\nmodule.exports = {\n parse: decode,\n decode,\n stringify: encode,\n encode,\n safe,\n unsafe,\n}\n","module.exports = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = function() { return nodes },\n peg$c2 = peg$FAILED,\n peg$c3 = \"#\",\n peg$c4 = { type: \"literal\", value: \"#\", description: \"\\\"#\\\"\" },\n peg$c5 = void 0,\n peg$c6 = { type: \"any\", description: \"any character\" },\n peg$c7 = \"[\",\n peg$c8 = { type: \"literal\", value: \"[\", description: \"\\\"[\\\"\" },\n peg$c9 = \"]\",\n peg$c10 = { type: \"literal\", value: \"]\", description: \"\\\"]\\\"\" },\n peg$c11 = function(name) { addNode(node('ObjectPath', name, line, column)) },\n peg$c12 = function(name) { addNode(node('ArrayPath', name, line, column)) },\n peg$c13 = function(parts, name) { return parts.concat(name) },\n peg$c14 = function(name) { return [name] },\n peg$c15 = function(name) { return name },\n peg$c16 = \".\",\n peg$c17 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c18 = \"=\",\n peg$c19 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c20 = function(key, value) { addNode(node('Assign', value, line, column, key)) },\n peg$c21 = function(chars) { return chars.join('') },\n peg$c22 = function(node) { return node.value },\n peg$c23 = \"\\\"\\\"\\\"\",\n peg$c24 = { type: \"literal\", value: \"\\\"\\\"\\\"\", description: \"\\\"\\\\\\\"\\\\\\\"\\\\\\\"\\\"\" },\n peg$c25 = null,\n peg$c26 = function(chars) { return node('String', chars.join(''), line, column) },\n peg$c27 = \"\\\"\",\n peg$c28 = { type: \"literal\", value: \"\\\"\", description: \"\\\"\\\\\\\"\\\"\" },\n peg$c29 = \"'''\",\n peg$c30 = { type: \"literal\", value: \"'''\", description: \"\\\"'''\\\"\" },\n peg$c31 = \"'\",\n peg$c32 = { type: \"literal\", value: \"'\", description: \"\\\"'\\\"\" },\n peg$c33 = function(char) { return char },\n peg$c34 = function(char) { return char},\n peg$c35 = \"\\\\\",\n peg$c36 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c37 = function() { return '' },\n peg$c38 = \"e\",\n peg$c39 = { type: \"literal\", value: \"e\", description: \"\\\"e\\\"\" },\n peg$c40 = \"E\",\n peg$c41 = { type: \"literal\", value: \"E\", description: \"\\\"E\\\"\" },\n peg$c42 = function(left, right) { return node('Float', parseFloat(left + 'e' + right), line, column) },\n peg$c43 = function(text) { return node('Float', parseFloat(text), line, column) },\n peg$c44 = \"+\",\n peg$c45 = { type: \"literal\", value: \"+\", description: \"\\\"+\\\"\" },\n peg$c46 = function(digits) { return digits.join('') },\n peg$c47 = \"-\",\n peg$c48 = { type: \"literal\", value: \"-\", description: \"\\\"-\\\"\" },\n peg$c49 = function(digits) { return '-' + digits.join('') },\n peg$c50 = function(text) { return node('Integer', parseInt(text, 10), line, column) },\n peg$c51 = \"true\",\n peg$c52 = { type: \"literal\", value: \"true\", description: \"\\\"true\\\"\" },\n peg$c53 = function() { return node('Boolean', true, line, column) },\n peg$c54 = \"false\",\n peg$c55 = { type: \"literal\", value: \"false\", description: \"\\\"false\\\"\" },\n peg$c56 = function() { return node('Boolean', false, line, column) },\n peg$c57 = function() { return node('Array', [], line, column) },\n peg$c58 = function(value) { return node('Array', value ? [value] : [], line, column) },\n peg$c59 = function(values) { return node('Array', values, line, column) },\n peg$c60 = function(values, value) { return node('Array', values.concat(value), line, column) },\n peg$c61 = function(value) { return value },\n peg$c62 = \",\",\n peg$c63 = { type: \"literal\", value: \",\", description: \"\\\",\\\"\" },\n peg$c64 = \"{\",\n peg$c65 = { type: \"literal\", value: \"{\", description: \"\\\"{\\\"\" },\n peg$c66 = \"}\",\n peg$c67 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c68 = function(values) { return node('InlineTable', values, line, column) },\n peg$c69 = function(key, value) { return node('InlineTableValue', value, line, column, key) },\n peg$c70 = function(digits) { return \".\" + digits },\n peg$c71 = function(date) { return date.join('') },\n peg$c72 = \":\",\n peg$c73 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c74 = function(time) { return time.join('') },\n peg$c75 = \"T\",\n peg$c76 = { type: \"literal\", value: \"T\", description: \"\\\"T\\\"\" },\n peg$c77 = \"Z\",\n peg$c78 = { type: \"literal\", value: \"Z\", description: \"\\\"Z\\\"\" },\n peg$c79 = function(date, time) { return node('Date', new Date(date + \"T\" + time + \"Z\"), line, column) },\n peg$c80 = function(date, time) { return node('Date', new Date(date + \"T\" + time), line, column) },\n peg$c81 = /^[ \\t]/,\n peg$c82 = { type: \"class\", value: \"[ \\\\t]\", description: \"[ \\\\t]\" },\n peg$c83 = \"\\n\",\n peg$c84 = { type: \"literal\", value: \"\\n\", description: \"\\\"\\\\n\\\"\" },\n peg$c85 = \"\\r\",\n peg$c86 = { type: \"literal\", value: \"\\r\", description: \"\\\"\\\\r\\\"\" },\n peg$c87 = /^[0-9a-f]/i,\n peg$c88 = { type: \"class\", value: \"[0-9a-f]i\", description: \"[0-9a-f]i\" },\n peg$c89 = /^[0-9]/,\n peg$c90 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c91 = \"_\",\n peg$c92 = { type: \"literal\", value: \"_\", description: \"\\\"_\\\"\" },\n peg$c93 = function() { return \"\" },\n peg$c94 = /^[A-Za-z0-9_\\-]/,\n peg$c95 = { type: \"class\", value: \"[A-Za-z0-9_\\\\-]\", description: \"[A-Za-z0-9_\\\\-]\" },\n peg$c96 = function(d) { return d.join('') },\n peg$c97 = \"\\\\\\\"\",\n peg$c98 = { type: \"literal\", value: \"\\\\\\\"\", description: \"\\\"\\\\\\\\\\\\\\\"\\\"\" },\n peg$c99 = function() { return '\"' },\n peg$c100 = \"\\\\\\\\\",\n peg$c101 = { type: \"literal\", value: \"\\\\\\\\\", description: \"\\\"\\\\\\\\\\\\\\\\\\\"\" },\n peg$c102 = function() { return '\\\\' },\n peg$c103 = \"\\\\b\",\n peg$c104 = { type: \"literal\", value: \"\\\\b\", description: \"\\\"\\\\\\\\b\\\"\" },\n peg$c105 = function() { return '\\b' },\n peg$c106 = \"\\\\t\",\n peg$c107 = { type: \"literal\", value: \"\\\\t\", description: \"\\\"\\\\\\\\t\\\"\" },\n peg$c108 = function() { return '\\t' },\n peg$c109 = \"\\\\n\",\n peg$c110 = { type: \"literal\", value: \"\\\\n\", description: \"\\\"\\\\\\\\n\\\"\" },\n peg$c111 = function() { return '\\n' },\n peg$c112 = \"\\\\f\",\n peg$c113 = { type: \"literal\", value: \"\\\\f\", description: \"\\\"\\\\\\\\f\\\"\" },\n peg$c114 = function() { return '\\f' },\n peg$c115 = \"\\\\r\",\n peg$c116 = { type: \"literal\", value: \"\\\\r\", description: \"\\\"\\\\\\\\r\\\"\" },\n peg$c117 = function() { return '\\r' },\n peg$c118 = \"\\\\U\",\n peg$c119 = { type: \"literal\", value: \"\\\\U\", description: \"\\\"\\\\\\\\U\\\"\" },\n peg$c120 = function(digits) { return convertCodePoint(digits.join('')) },\n peg$c121 = \"\\\\u\",\n peg$c122 = { type: \"literal\", value: \"\\\\u\", description: \"\\\"\\\\\\\\u\\\"\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$cache = {},\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 0,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseline();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseline();\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c1();\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseline() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n var key = peg$currPos * 49 + 1,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseexpression();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parsecomment();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parsecomment();\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseNL();\n if (s6 !== peg$FAILED) {\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseNL();\n }\n } else {\n s5 = peg$c2;\n }\n if (s5 === peg$FAILED) {\n s5 = peg$parseEOF();\n }\n if (s5 !== peg$FAILED) {\n s1 = [s1, s2, s3, s4, s5];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseNL();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseNL();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 === peg$FAILED) {\n s2 = peg$parseEOF();\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseNL();\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseexpression() {\n var s0;\n\n var key = peg$currPos * 49 + 2,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parsecomment();\n if (s0 === peg$FAILED) {\n s0 = peg$parsepath();\n if (s0 === peg$FAILED) {\n s0 = peg$parsetablearray();\n if (s0 === peg$FAILED) {\n s0 = peg$parseassignment();\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsecomment() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 3,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c3;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c4); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseNL();\n if (s5 === peg$FAILED) {\n s5 = peg$parseEOF();\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = peg$c5;\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$currPos;\n s4 = peg$currPos;\n peg$silentFails++;\n s5 = peg$parseNL();\n if (s5 === peg$FAILED) {\n s5 = peg$parseEOF();\n }\n peg$silentFails--;\n if (s5 === peg$FAILED) {\n s4 = peg$c5;\n } else {\n peg$currPos = s4;\n s4 = peg$c2;\n }\n if (s4 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s5 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s5 !== peg$FAILED) {\n s4 = [s4, s5];\n s3 = s4;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsepath() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 4,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetable_key();\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s5 = peg$c9;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetablearray() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n var key = peg$currPos * 49 + 5,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 91) {\n s2 = peg$c7;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parsetable_key();\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s6 = peg$c9;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s7 = peg$c9;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s7 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c12(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetable_key() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 6,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsedot_ended_table_key_part();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsedot_ended_table_key_part();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsetable_key_part();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c13(s1, s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsetable_key_part();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c14(s1);\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetable_key_part() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 7,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsequoted_key();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedot_ended_table_key_part() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n var key = peg$currPos * 49 + 8,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsequoted_key();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c15(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseassignment() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 9,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsekey();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsevalue();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c20(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsequoted_key();\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s3 = peg$c18;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parsevalue();\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c20(s1, s5);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsekey() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 10,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseASCII_BASIC();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseASCII_BASIC();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c21(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsequoted_key() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 11,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsedouble_quoted_single_line_string();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c22(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsesingle_quoted_single_line_string();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c22(s1);\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsevalue() {\n var s0;\n\n var key = peg$currPos * 49 + 12,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parsestring();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedatetime();\n if (s0 === peg$FAILED) {\n s0 = peg$parsefloat();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinteger();\n if (s0 === peg$FAILED) {\n s0 = peg$parseboolean();\n if (s0 === peg$FAILED) {\n s0 = peg$parsearray();\n if (s0 === peg$FAILED) {\n s0 = peg$parseinline_table();\n }\n }\n }\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsestring() {\n var s0;\n\n var key = peg$currPos * 49 + 13,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parsedouble_quoted_multiline_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsedouble_quoted_single_line_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesingle_quoted_multiline_string();\n if (s0 === peg$FAILED) {\n s0 = peg$parsesingle_quoted_single_line_string();\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedouble_quoted_multiline_string() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 14,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c23) {\n s1 = peg$c23;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNL();\n if (s2 === peg$FAILED) {\n s2 = peg$c25;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsemultiline_string_char();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsemultiline_string_char();\n }\n if (s3 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c23) {\n s4 = peg$c23;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedouble_quoted_single_line_string() {\n var s0, s1, s2, s3;\n\n var key = peg$currPos * 49 + 15,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 34) {\n s1 = peg$c27;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsestring_char();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsestring_char();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 34) {\n s3 = peg$c27;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsesingle_quoted_multiline_string() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 16,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s1 = peg$c29;\n peg$currPos += 3;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNL();\n if (s2 === peg$FAILED) {\n s2 = peg$c25;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsemultiline_literal_char();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsemultiline_literal_char();\n }\n if (s3 !== peg$FAILED) {\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s4 = peg$c29;\n peg$currPos += 3;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsesingle_quoted_single_line_string() {\n var s0, s1, s2, s3;\n\n var key = peg$currPos * 49 + 17,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c31;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseliteral_char();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseliteral_char();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c31;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c26(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsestring_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 18,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseESCAPED();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 34) {\n s2 = peg$c27;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseliteral_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 19,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 39) {\n s2 = peg$c31;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsemultiline_string_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 20,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseESCAPED();\n if (s0 === peg$FAILED) {\n s0 = peg$parsemultiline_string_delim();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c23) {\n s2 = peg$c23;\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c24); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c34(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsemultiline_string_delim() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 21,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c35;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c36); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseNL();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseNLS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseNLS();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c37();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsemultiline_literal_char() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 22,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 3) === peg$c29) {\n s2 = peg$c29;\n peg$currPos += 3;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c5;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > peg$currPos) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsefloat() {\n var s0, s1, s2, s3;\n\n var key = peg$currPos * 49 + 23,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsefloat_text();\n if (s1 === peg$FAILED) {\n s1 = peg$parseinteger_text();\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 101) {\n s2 = peg$c38;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s2 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 69) {\n s2 = peg$c40;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c41); }\n }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseinteger_text();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c42(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsefloat_text();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c43(s1);\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsefloat_text() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 24,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c44;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c25;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseDIGITS();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGITS();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c47;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseDIGITS();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGITS();\n if (s5 !== peg$FAILED) {\n s3 = [s3, s4, s5];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c49(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinteger() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 25,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parseinteger_text();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c50(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinteger_text() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 26,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 43) {\n s1 = peg$c44;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s1 === peg$FAILED) {\n s1 = peg$c25;\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseDIGIT_OR_UNDER();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c5;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c46(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 45) {\n s1 = peg$c47;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseDIGIT_OR_UNDER();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 46) {\n s4 = peg$c16;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c5;\n } else {\n peg$currPos = s3;\n s3 = peg$c2;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c49(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseboolean() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 27,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 4) === peg$c51) {\n s1 = peg$c51;\n peg$currPos += 4;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c52); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c53();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 5) === peg$c54) {\n s1 = peg$c54;\n peg$currPos += 5;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c56();\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 28,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsearray_sep();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsearray_sep();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c57();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsearray_value();\n if (s2 === peg$FAILED) {\n s2 = peg$c25;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c58(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsearray_value_list();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsearray_value_list();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s3 = peg$c9;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c59(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 91) {\n s1 = peg$c7;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsearray_value_list();\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsearray_value_list();\n }\n } else {\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsearray_value();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 93) {\n s4 = peg$c9;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c10); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c60(s2, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray_value() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 29,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsearray_sep();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsearray_sep();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsevalue();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsearray_sep();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsearray_sep();\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c61(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray_value_list() {\n var s0, s1, s2, s3, s4, s5, s6;\n\n var key = peg$currPos * 49 + 30,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsearray_sep();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsearray_sep();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsevalue();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsearray_sep();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsearray_sep();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s4 = peg$c62;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parsearray_sep();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parsearray_sep();\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c61(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsearray_sep() {\n var s0;\n\n var key = peg$currPos * 49 + 31,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseS();\n if (s0 === peg$FAILED) {\n s0 = peg$parseNL();\n if (s0 === peg$FAILED) {\n s0 = peg$parsecomment();\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinline_table() {\n var s0, s1, s2, s3, s4, s5;\n\n var key = peg$currPos * 49 + 32,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c64;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c65); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseS();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseS();\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseinline_table_assignment();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseinline_table_assignment();\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseS();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseS();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c66;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c67); }\n }\n if (s5 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c68(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseinline_table_assignment() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n var key = peg$currPos * 49 + 33,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c18;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsevalue();\n if (s6 !== peg$FAILED) {\n s7 = [];\n s8 = peg$parseS();\n while (s8 !== peg$FAILED) {\n s7.push(s8);\n s8 = peg$parseS();\n }\n if (s7 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s8 = peg$c62;\n peg$currPos++;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s8 !== peg$FAILED) {\n s9 = [];\n s10 = peg$parseS();\n while (s10 !== peg$FAILED) {\n s9.push(s10);\n s10 = peg$parseS();\n }\n if (s9 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c69(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseS();\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseS();\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsekey();\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseS();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseS();\n }\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 61) {\n s4 = peg$c18;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n if (s4 !== peg$FAILED) {\n s5 = [];\n s6 = peg$parseS();\n while (s6 !== peg$FAILED) {\n s5.push(s6);\n s6 = peg$parseS();\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parsevalue();\n if (s6 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c69(s2, s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsesecfragment() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 34,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 46) {\n s1 = peg$c16;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseDIGITS();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c70(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedate() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11;\n\n var key = peg$currPos * 49 + 35,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseDIGIT_OR_UNDER();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGIT_OR_UNDER();\n if (s5 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s6 = peg$c47;\n peg$currPos++;\n } else {\n s6 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s6 !== peg$FAILED) {\n s7 = peg$parseDIGIT_OR_UNDER();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDIGIT_OR_UNDER();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s9 = peg$c47;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parseDIGIT_OR_UNDER();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseDIGIT_OR_UNDER();\n if (s11 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c71(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetime() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n var key = peg$currPos * 49 + 36,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c72;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGIT_OR_UNDER();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseDIGIT_OR_UNDER();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s7 = peg$c72;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDIGIT_OR_UNDER();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseDIGIT_OR_UNDER();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsesecfragment();\n if (s10 === peg$FAILED) {\n s10 = peg$c25;\n }\n if (s10 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c74(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsetime_with_offset() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16;\n\n var key = peg$currPos * 49 + 37,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseDIGIT_OR_UNDER();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c72;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parseDIGIT_OR_UNDER();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseDIGIT_OR_UNDER();\n if (s6 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s7 = peg$c72;\n peg$currPos++;\n } else {\n s7 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s7 !== peg$FAILED) {\n s8 = peg$parseDIGIT_OR_UNDER();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseDIGIT_OR_UNDER();\n if (s9 !== peg$FAILED) {\n s10 = peg$parsesecfragment();\n if (s10 === peg$FAILED) {\n s10 = peg$c25;\n }\n if (s10 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 45) {\n s11 = peg$c47;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c48); }\n }\n if (s11 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 43) {\n s11 = peg$c44;\n peg$currPos++;\n } else {\n s11 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parseDIGIT_OR_UNDER();\n if (s12 !== peg$FAILED) {\n s13 = peg$parseDIGIT_OR_UNDER();\n if (s13 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s14 = peg$c72;\n peg$currPos++;\n } else {\n s14 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n if (s14 !== peg$FAILED) {\n s15 = peg$parseDIGIT_OR_UNDER();\n if (s15 !== peg$FAILED) {\n s16 = peg$parseDIGIT_OR_UNDER();\n if (s16 !== peg$FAILED) {\n s2 = [s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c74(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parsedatetime() {\n var s0, s1, s2, s3, s4;\n\n var key = peg$currPos * 49 + 38,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = peg$parsedate();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 84) {\n s2 = peg$c75;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetime();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 90) {\n s4 = peg$c77;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c79(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parsedate();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 84) {\n s2 = peg$c75;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c76); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parsetime_with_offset();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c80(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseS() {\n var s0;\n\n var key = peg$currPos * 49 + 39,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c81.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c82); }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseNL() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 40,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (input.charCodeAt(peg$currPos) === 10) {\n s0 = peg$c83;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 13) {\n s1 = peg$c85;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\n }\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 10) {\n s2 = peg$c83;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c84); }\n }\n if (s2 !== peg$FAILED) {\n s1 = [s1, s2];\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseNLS() {\n var s0;\n\n var key = peg$currPos * 49 + 41,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$parseNL();\n if (s0 === peg$FAILED) {\n s0 = peg$parseS();\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseEOF() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 42,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n peg$silentFails++;\n if (input.length > peg$currPos) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n peg$silentFails--;\n if (s1 === peg$FAILED) {\n s0 = peg$c5;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseHEX() {\n var s0;\n\n var key = peg$currPos * 49 + 43,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c87.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseDIGIT_OR_UNDER() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 44,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c89.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c90); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 95) {\n s1 = peg$c91;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c92); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c93();\n }\n s0 = s1;\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseASCII_BASIC() {\n var s0;\n\n var key = peg$currPos * 49 + 45,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n if (peg$c94.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c95); }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseDIGITS() {\n var s0, s1, s2;\n\n var key = peg$currPos * 49 + 46,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseDIGIT_OR_UNDER();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseDIGIT_OR_UNDER();\n }\n } else {\n s1 = peg$c2;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c96(s1);\n }\n s0 = s1;\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseESCAPED() {\n var s0, s1;\n\n var key = peg$currPos * 49 + 47,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c97) {\n s1 = peg$c97;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c98); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c99();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c100) {\n s1 = peg$c100;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c101); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c102();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c103) {\n s1 = peg$c103;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c104); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c105();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c106) {\n s1 = peg$c106;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c107); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c108();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c109) {\n s1 = peg$c109;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c110); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c111();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c112) {\n s1 = peg$c112;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c113); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c114();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c115) {\n s1 = peg$c115;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c116); }\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c117();\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parseESCAPED_UNICODE();\n }\n }\n }\n }\n }\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n function peg$parseESCAPED_UNICODE() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n var key = peg$currPos * 49 + 48,\n cached = peg$cache[key];\n\n if (cached) {\n peg$currPos = cached.nextPos;\n return cached.result;\n }\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c118) {\n s1 = peg$c118;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c119); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseHEX();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseHEX();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseHEX();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseHEX();\n if (s6 !== peg$FAILED) {\n s7 = peg$parseHEX();\n if (s7 !== peg$FAILED) {\n s8 = peg$parseHEX();\n if (s8 !== peg$FAILED) {\n s9 = peg$parseHEX();\n if (s9 !== peg$FAILED) {\n s10 = peg$parseHEX();\n if (s10 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6, s7, s8, s9, s10];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c120(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c121) {\n s1 = peg$c121;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c122); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parseHEX();\n if (s3 !== peg$FAILED) {\n s4 = peg$parseHEX();\n if (s4 !== peg$FAILED) {\n s5 = peg$parseHEX();\n if (s5 !== peg$FAILED) {\n s6 = peg$parseHEX();\n if (s6 !== peg$FAILED) {\n s3 = [s3, s4, s5, s6];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c2;\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c120(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c2;\n }\n }\n\n peg$cache[key] = { nextPos: peg$currPos, result: s0 };\n\n return s0;\n }\n\n\n var nodes = [];\n\n function genError(err, line, col) {\n var ex = new Error(err);\n ex.line = line;\n ex.column = col;\n throw ex;\n }\n\n function addNode(node) {\n nodes.push(node);\n }\n\n function node(type, value, line, column, key) {\n var obj = { type: type, value: value, line: line(), column: column() };\n if (key) obj.key = key;\n return obj;\n }\n\n function convertCodePoint(str, line, col) {\n var num = parseInt(\"0x\" + str);\n\n if (\n !isFinite(num) ||\n Math.floor(num) != num ||\n num < 0 ||\n num > 0x10FFFF ||\n (num > 0xD7FF && num < 0xE000)\n ) {\n genError(\"Invalid Unicode escape code: \" + str, line, col);\n } else {\n return fromCodePoint(num);\n }\n }\n\n function fromCodePoint() {\n var MAX_SIZE = 0x4000;\n var codeUnits = [];\n var highSurrogate;\n var lowSurrogate;\n var index = -1;\n var length = arguments.length;\n if (!length) {\n return '';\n }\n var result = '';\n while (++index < length) {\n var codePoint = Number(arguments[index]);\n if (codePoint <= 0xFFFF) { // BMP code point\n codeUnits.push(codePoint);\n } else { // Astral code point; split in surrogate halves\n // http://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n codePoint -= 0x10000;\n highSurrogate = (codePoint >> 10) + 0xD800;\n lowSurrogate = (codePoint % 0x400) + 0xDC00;\n codeUnits.push(highSurrogate, lowSurrogate);\n }\n if (index + 1 == length || codeUnits.length > MAX_SIZE) {\n result += String.fromCharCode.apply(null, codeUnits);\n codeUnits.length = 0;\n }\n }\n return result;\n }\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail({ type: \"end\", description: \"end of input\" });\n }\n\n throw peg$buildException(null, peg$maxFailExpected, peg$maxFailPos);\n }\n }\n\n return {\n SyntaxError: SyntaxError,\n parse: parse\n };\n})();\n","\"use strict\";\nfunction compile(nodes) {\n var assignedPaths = [];\n var valueAssignments = [];\n var currentPath = \"\";\n var data = Object.create(null);\n var context = data;\n var arrayMode = false;\n\n return reduce(nodes);\n\n function reduce(nodes) {\n var node;\n for (var i = 0; i < nodes.length; i++) {\n node = nodes[i];\n switch (node.type) {\n case \"Assign\":\n assign(node);\n break;\n case \"ObjectPath\":\n setPath(node);\n break;\n case \"ArrayPath\":\n addTableArray(node);\n break;\n }\n }\n\n return data;\n }\n\n function genError(err, line, col) {\n var ex = new Error(err);\n ex.line = line;\n ex.column = col;\n throw ex;\n }\n\n function assign(node) {\n var key = node.key;\n var value = node.value;\n var line = node.line;\n var column = node.column;\n\n var fullPath;\n if (currentPath) {\n fullPath = currentPath + \".\" + key;\n } else {\n fullPath = key;\n }\n if (typeof context[key] !== \"undefined\") {\n genError(\"Cannot redefine existing key '\" + fullPath + \"'.\", line, column);\n }\n\n context[key] = reduceValueNode(value);\n\n if (!pathAssigned(fullPath)) {\n assignedPaths.push(fullPath);\n valueAssignments.push(fullPath);\n }\n }\n\n\n function pathAssigned(path) {\n return assignedPaths.indexOf(path) !== -1;\n }\n\n function reduceValueNode(node) {\n if (node.type === \"Array\") {\n return reduceArrayWithTypeChecking(node.value);\n } else if (node.type === \"InlineTable\") {\n return reduceInlineTableNode(node.value);\n } else {\n return node.value;\n }\n }\n\n function reduceInlineTableNode(values) {\n var obj = Object.create(null);\n for (var i = 0; i < values.length; i++) {\n var val = values[i];\n if (val.value.type === \"InlineTable\") {\n obj[val.key] = reduceInlineTableNode(val.value.value);\n } else if (val.type === \"InlineTableValue\") {\n obj[val.key] = reduceValueNode(val.value);\n }\n }\n\n return obj;\n }\n\n function setPath(node) {\n var path = node.value;\n var quotedPath = path.map(quoteDottedString).join(\".\");\n var line = node.line;\n var column = node.column;\n\n if (pathAssigned(quotedPath)) {\n genError(\"Cannot redefine existing key '\" + path + \"'.\", line, column);\n }\n assignedPaths.push(quotedPath);\n context = deepRef(data, path, Object.create(null), line, column);\n currentPath = path;\n }\n\n function addTableArray(node) {\n var path = node.value;\n var quotedPath = path.map(quoteDottedString).join(\".\");\n var line = node.line;\n var column = node.column;\n\n if (!pathAssigned(quotedPath)) {\n assignedPaths.push(quotedPath);\n }\n assignedPaths = assignedPaths.filter(function(p) {\n return p.indexOf(quotedPath) !== 0;\n });\n assignedPaths.push(quotedPath);\n context = deepRef(data, path, [], line, column);\n currentPath = quotedPath;\n\n if (context instanceof Array) {\n var newObj = Object.create(null);\n context.push(newObj);\n context = newObj;\n } else {\n genError(\"Cannot redefine existing key '\" + path + \"'.\", line, column);\n }\n }\n\n // Given a path 'a.b.c', create (as necessary) `start.a`,\n // `start.a.b`, and `start.a.b.c`, assigning `value` to `start.a.b.c`.\n // If `a` or `b` are arrays and have items in them, the last item in the\n // array is used as the context for the next sub-path.\n function deepRef(start, keys, value, line, column) {\n var traversed = [];\n var traversedPath = \"\";\n var path = keys.join(\".\");\n var ctx = start;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n traversed.push(key);\n traversedPath = traversed.join(\".\");\n if (typeof ctx[key] === \"undefined\") {\n if (i === keys.length - 1) {\n ctx[key] = value;\n } else {\n ctx[key] = Object.create(null);\n }\n } else if (i !== keys.length - 1 && valueAssignments.indexOf(traversedPath) > -1) {\n // already a non-object value at key, can't be used as part of a new path\n genError(\"Cannot redefine existing key '\" + traversedPath + \"'.\", line, column);\n }\n\n ctx = ctx[key];\n if (ctx instanceof Array && ctx.length && i < keys.length - 1) {\n ctx = ctx[ctx.length - 1];\n }\n }\n\n return ctx;\n }\n\n function reduceArrayWithTypeChecking(array) {\n // Ensure that all items in the array are of the same type\n var firstType = null;\n for (var i = 0; i < array.length; i++) {\n var node = array[i];\n if (firstType === null) {\n firstType = node.type;\n } else {\n if (node.type !== firstType) {\n genError(\"Cannot add value of type \" + node.type + \" to array of type \" +\n firstType + \".\", node.line, node.column);\n }\n }\n }\n\n // Recursively reduce array of nodes into array of the nodes' values\n return array.map(reduceValueNode);\n }\n\n function quoteDottedString(str) {\n if (str.indexOf(\".\") > -1) {\n return \"\\\"\" + str + \"\\\"\";\n } else {\n return str;\n }\n }\n}\n\nmodule.exports = {\n compile: compile\n};\n","var parser = require('./lib/parser');\nvar compiler = require('./lib/compiler');\n\nmodule.exports = {\n parse: function(input) {\n var nodes = parser.parse(input.toString());\n return compiler.compile(nodes);\n }\n};\n","'use strict';\n\nconst ALIAS = Symbol.for('yaml.alias');\nconst DOC = Symbol.for('yaml.document');\nconst MAP = Symbol.for('yaml.map');\nconst PAIR = Symbol.for('yaml.pair');\nconst SCALAR = Symbol.for('yaml.scalar');\nconst SEQ = Symbol.for('yaml.seq');\nconst NODE_TYPE = Symbol.for('yaml.node.type');\nconst isAlias = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === ALIAS;\nconst isDocument = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === DOC;\nconst isMap = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === MAP;\nconst isPair = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === PAIR;\nconst isScalar = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SCALAR;\nconst isSeq = (node) => !!node && typeof node === 'object' && node[NODE_TYPE] === SEQ;\nfunction isCollection(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case MAP:\n case SEQ:\n return true;\n }\n return false;\n}\nfunction isNode(node) {\n if (node && typeof node === 'object')\n switch (node[NODE_TYPE]) {\n case ALIAS:\n case MAP:\n case SCALAR:\n case SEQ:\n return true;\n }\n return false;\n}\nconst hasAnchor = (node) => (isScalar(node) || isCollection(node)) && !!node.anchor;\n\nexports.ALIAS = ALIAS;\nexports.DOC = DOC;\nexports.MAP = MAP;\nexports.NODE_TYPE = NODE_TYPE;\nexports.PAIR = PAIR;\nexports.SCALAR = SCALAR;\nexports.SEQ = SEQ;\nexports.hasAnchor = hasAnchor;\nexports.isAlias = isAlias;\nexports.isCollection = isCollection;\nexports.isDocument = isDocument;\nexports.isMap = isMap;\nexports.isNode = isNode;\nexports.isPair = isPair;\nexports.isScalar = isScalar;\nexports.isSeq = isSeq;\n","'use strict';\n\nvar identity = require('./nodes/identity.js');\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove node');\n/**\n * Apply a visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nfunction visit(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = visit_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n visit_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisit.SKIP = SKIP;\n/** Remove the current node */\nvisit.REMOVE = REMOVE;\nfunction visit_(key, node, visitor, path) {\n const ctrl = callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visit_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = visit_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = visit_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = visit_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\n/**\n * Apply an async visitor to an AST node or document.\n *\n * Walks through the tree (depth-first) starting from `node`, calling a\n * `visitor` function with three arguments:\n * - `key`: For sequence values and map `Pair`, the node's index in the\n * collection. Within a `Pair`, `'key'` or `'value'`, correspondingly.\n * `null` for the root node.\n * - `node`: The current node.\n * - `path`: The ancestry of the current node.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `Promise`: Must resolve to one of the following values\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this node, continue with next\n * sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current node, then continue with the next one\n * - `Node`: Replace the current node, then continue by visiting it\n * - `number`: While iterating the items of a sequence or map, set the index\n * of the next step. This is useful especially if the index of the current\n * node has changed.\n *\n * If `visitor` is a single function, it will be called with all values\n * encountered in the tree, including e.g. `null` values. Alternatively,\n * separate visitor functions may be defined for each `Map`, `Pair`, `Seq`,\n * `Alias` and `Scalar` node. To define the same visitor function for more than\n * one node type, use the `Collection` (map and seq), `Value` (map, seq & scalar)\n * and `Node` (alias, map, seq & scalar) targets. Of all these, only the most\n * specific defined one will be used for each node.\n */\nasync function visitAsync(node, visitor) {\n const visitor_ = initVisitor(visitor);\n if (identity.isDocument(node)) {\n const cd = await visitAsync_(null, node.contents, visitor_, Object.freeze([node]));\n if (cd === REMOVE)\n node.contents = null;\n }\n else\n await visitAsync_(null, node, visitor_, Object.freeze([]));\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisitAsync.BREAK = BREAK;\n/** Do not visit the children of the current node */\nvisitAsync.SKIP = SKIP;\n/** Remove the current node */\nvisitAsync.REMOVE = REMOVE;\nasync function visitAsync_(key, node, visitor, path) {\n const ctrl = await callVisitor(key, node, visitor, path);\n if (identity.isNode(ctrl) || identity.isPair(ctrl)) {\n replaceNode(key, path, ctrl);\n return visitAsync_(key, ctrl, visitor, path);\n }\n if (typeof ctrl !== 'symbol') {\n if (identity.isCollection(node)) {\n path = Object.freeze(path.concat(node));\n for (let i = 0; i < node.items.length; ++i) {\n const ci = await visitAsync_(i, node.items[i], visitor, path);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n node.items.splice(i, 1);\n i -= 1;\n }\n }\n }\n else if (identity.isPair(node)) {\n path = Object.freeze(path.concat(node));\n const ck = await visitAsync_('key', node.key, visitor, path);\n if (ck === BREAK)\n return BREAK;\n else if (ck === REMOVE)\n node.key = null;\n const cv = await visitAsync_('value', node.value, visitor, path);\n if (cv === BREAK)\n return BREAK;\n else if (cv === REMOVE)\n node.value = null;\n }\n }\n return ctrl;\n}\nfunction initVisitor(visitor) {\n if (typeof visitor === 'object' &&\n (visitor.Collection || visitor.Node || visitor.Value)) {\n return Object.assign({\n Alias: visitor.Node,\n Map: visitor.Node,\n Scalar: visitor.Node,\n Seq: visitor.Node\n }, visitor.Value && {\n Map: visitor.Value,\n Scalar: visitor.Value,\n Seq: visitor.Value\n }, visitor.Collection && {\n Map: visitor.Collection,\n Seq: visitor.Collection\n }, visitor);\n }\n return visitor;\n}\nfunction callVisitor(key, node, visitor, path) {\n if (typeof visitor === 'function')\n return visitor(key, node, path);\n if (identity.isMap(node))\n return visitor.Map?.(key, node, path);\n if (identity.isSeq(node))\n return visitor.Seq?.(key, node, path);\n if (identity.isPair(node))\n return visitor.Pair?.(key, node, path);\n if (identity.isScalar(node))\n return visitor.Scalar?.(key, node, path);\n if (identity.isAlias(node))\n return visitor.Alias?.(key, node, path);\n return undefined;\n}\nfunction replaceNode(key, path, node) {\n const parent = path[path.length - 1];\n if (identity.isCollection(parent)) {\n parent.items[key] = node;\n }\n else if (identity.isPair(parent)) {\n if (key === 'key')\n parent.key = node;\n else\n parent.value = node;\n }\n else if (identity.isDocument(parent)) {\n parent.contents = node;\n }\n else {\n const pt = identity.isAlias(parent) ? 'alias' : 'scalar';\n throw new Error(`Cannot replace node with ${pt} parent`);\n }\n}\n\nexports.visit = visit;\nexports.visitAsync = visitAsync;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\nconst escapeChars = {\n '!': '%21',\n ',': '%2C',\n '[': '%5B',\n ']': '%5D',\n '{': '%7B',\n '}': '%7D'\n};\nconst escapeTagName = (tn) => tn.replace(/[!,[\\]{}]/g, ch => escapeChars[ch]);\nclass Directives {\n constructor(yaml, tags) {\n /**\n * The directives-end/doc-start marker `---`. If `null`, a marker may still be\n * included in the document's stringified representation.\n */\n this.docStart = null;\n /** The doc-end marker `...`. */\n this.docEnd = false;\n this.yaml = Object.assign({}, Directives.defaultYaml, yaml);\n this.tags = Object.assign({}, Directives.defaultTags, tags);\n }\n clone() {\n const copy = new Directives(this.yaml, this.tags);\n copy.docStart = this.docStart;\n return copy;\n }\n /**\n * During parsing, get a Directives instance for the current document and\n * update the stream state according to the current version's spec.\n */\n atDocument() {\n const res = new Directives(this.yaml, this.tags);\n switch (this.yaml.version) {\n case '1.1':\n this.atNextDocument = true;\n break;\n case '1.2':\n this.atNextDocument = false;\n this.yaml = {\n explicit: Directives.defaultYaml.explicit,\n version: '1.2'\n };\n this.tags = Object.assign({}, Directives.defaultTags);\n break;\n }\n return res;\n }\n /**\n * @param onError - May be called even if the action was successful\n * @returns `true` on success\n */\n add(line, onError) {\n if (this.atNextDocument) {\n this.yaml = { explicit: Directives.defaultYaml.explicit, version: '1.1' };\n this.tags = Object.assign({}, Directives.defaultTags);\n this.atNextDocument = false;\n }\n const parts = line.trim().split(/[ \\t]+/);\n const name = parts.shift();\n switch (name) {\n case '%TAG': {\n if (parts.length !== 2) {\n onError(0, '%TAG directive should contain exactly two parts');\n if (parts.length < 2)\n return false;\n }\n const [handle, prefix] = parts;\n this.tags[handle] = prefix;\n return true;\n }\n case '%YAML': {\n this.yaml.explicit = true;\n if (parts.length !== 1) {\n onError(0, '%YAML directive should contain exactly one part');\n return false;\n }\n const [version] = parts;\n if (version === '1.1' || version === '1.2') {\n this.yaml.version = version;\n return true;\n }\n else {\n const isValid = /^\\d+\\.\\d+$/.test(version);\n onError(6, `Unsupported YAML version ${version}`, isValid);\n return false;\n }\n }\n default:\n onError(0, `Unknown directive ${name}`, true);\n return false;\n }\n }\n /**\n * Resolves a tag, matching handles to those defined in %TAG directives.\n *\n * @returns Resolved tag, which may also be the non-specific tag `'!'` or a\n * `'!local'` tag, or `null` if unresolvable.\n */\n tagName(source, onError) {\n if (source === '!')\n return '!'; // non-specific tag\n if (source[0] !== '!') {\n onError(`Not a valid tag: ${source}`);\n return null;\n }\n if (source[1] === '<') {\n const verbatim = source.slice(2, -1);\n if (verbatim === '!' || verbatim === '!!') {\n onError(`Verbatim tags aren't resolved, so ${source} is invalid.`);\n return null;\n }\n if (source[source.length - 1] !== '>')\n onError('Verbatim tags must end with a >');\n return verbatim;\n }\n const [, handle, suffix] = source.match(/^(.*!)([^!]*)$/s);\n if (!suffix)\n onError(`The ${source} tag has no suffix`);\n const prefix = this.tags[handle];\n if (prefix) {\n try {\n return prefix + decodeURIComponent(suffix);\n }\n catch (error) {\n onError(String(error));\n return null;\n }\n }\n if (handle === '!')\n return source; // local tag\n onError(`Could not resolve tag: ${source}`);\n return null;\n }\n /**\n * Given a fully resolved tag, returns its printable string form,\n * taking into account current tag prefixes and defaults.\n */\n tagString(tag) {\n for (const [handle, prefix] of Object.entries(this.tags)) {\n if (tag.startsWith(prefix))\n return handle + escapeTagName(tag.substring(prefix.length));\n }\n return tag[0] === '!' ? tag : `!<${tag}>`;\n }\n toString(doc) {\n const lines = this.yaml.explicit\n ? [`%YAML ${this.yaml.version || '1.2'}`]\n : [];\n const tagEntries = Object.entries(this.tags);\n let tagNames;\n if (doc && tagEntries.length > 0 && identity.isNode(doc.contents)) {\n const tags = {};\n visit.visit(doc.contents, (_key, node) => {\n if (identity.isNode(node) && node.tag)\n tags[node.tag] = true;\n });\n tagNames = Object.keys(tags);\n }\n else\n tagNames = [];\n for (const [handle, prefix] of tagEntries) {\n if (handle === '!!' && prefix === 'tag:yaml.org,2002:')\n continue;\n if (!doc || tagNames.some(tn => tn.startsWith(prefix)))\n lines.push(`%TAG ${handle} ${prefix}`);\n }\n return lines.join('\\n');\n }\n}\nDirectives.defaultYaml = { explicit: false, version: '1.2' };\nDirectives.defaultTags = { '!!': 'tag:yaml.org,2002:' };\n\nexports.Directives = Directives;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar visit = require('../visit.js');\n\n/**\n * Verify that the input string is a valid anchor.\n *\n * Will throw on errors.\n */\nfunction anchorIsValid(anchor) {\n if (/[\\x00-\\x19\\s,[\\]{}]/.test(anchor)) {\n const sa = JSON.stringify(anchor);\n const msg = `Anchor must not contain whitespace or control characters: ${sa}`;\n throw new Error(msg);\n }\n return true;\n}\nfunction anchorNames(root) {\n const anchors = new Set();\n visit.visit(root, {\n Value(_key, node) {\n if (node.anchor)\n anchors.add(node.anchor);\n }\n });\n return anchors;\n}\n/** Find a new anchor name with the given `prefix` and a one-indexed suffix. */\nfunction findNewAnchor(prefix, exclude) {\n for (let i = 1; true; ++i) {\n const name = `${prefix}${i}`;\n if (!exclude.has(name))\n return name;\n }\n}\nfunction createNodeAnchors(doc, prefix) {\n const aliasObjects = [];\n const sourceObjects = new Map();\n let prevAnchors = null;\n return {\n onAnchor: (source) => {\n aliasObjects.push(source);\n prevAnchors ?? (prevAnchors = anchorNames(doc));\n const anchor = findNewAnchor(prefix, prevAnchors);\n prevAnchors.add(anchor);\n return anchor;\n },\n /**\n * With circular references, the source node is only resolved after all\n * of its child nodes are. This is why anchors are set only after all of\n * the nodes have been created.\n */\n setAnchors: () => {\n for (const source of aliasObjects) {\n const ref = sourceObjects.get(source);\n if (typeof ref === 'object' &&\n ref.anchor &&\n (identity.isScalar(ref.node) || identity.isCollection(ref.node))) {\n ref.node.anchor = ref.anchor;\n }\n else {\n const error = new Error('Failed to resolve repeated object (this should not happen)');\n error.source = source;\n throw error;\n }\n }\n },\n sourceObjects\n };\n}\n\nexports.anchorIsValid = anchorIsValid;\nexports.anchorNames = anchorNames;\nexports.createNodeAnchors = createNodeAnchors;\nexports.findNewAnchor = findNewAnchor;\n","'use strict';\n\n/**\n * Applies the JSON.parse reviver algorithm as defined in the ECMA-262 spec,\n * in section 24.5.1.1 \"Runtime Semantics: InternalizeJSONProperty\" of the\n * 2021 edition: https://tc39.es/ecma262/#sec-json.parse\n *\n * Includes extensions for handling Map and Set objects.\n */\nfunction applyReviver(reviver, obj, key, val) {\n if (val && typeof val === 'object') {\n if (Array.isArray(val)) {\n for (let i = 0, len = val.length; i < len; ++i) {\n const v0 = val[i];\n const v1 = applyReviver(reviver, val, String(i), v0);\n // eslint-disable-next-line @typescript-eslint/no-array-delete\n if (v1 === undefined)\n delete val[i];\n else if (v1 !== v0)\n val[i] = v1;\n }\n }\n else if (val instanceof Map) {\n for (const k of Array.from(val.keys())) {\n const v0 = val.get(k);\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n val.delete(k);\n else if (v1 !== v0)\n val.set(k, v1);\n }\n }\n else if (val instanceof Set) {\n for (const v0 of Array.from(val)) {\n const v1 = applyReviver(reviver, val, v0, v0);\n if (v1 === undefined)\n val.delete(v0);\n else if (v1 !== v0) {\n val.delete(v0);\n val.add(v1);\n }\n }\n }\n else {\n for (const [k, v0] of Object.entries(val)) {\n const v1 = applyReviver(reviver, val, k, v0);\n if (v1 === undefined)\n delete val[k];\n else if (v1 !== v0)\n val[k] = v1;\n }\n }\n }\n return reviver.call(obj, key, val);\n}\n\nexports.applyReviver = applyReviver;\n","'use strict';\n\nvar identity = require('./identity.js');\n\n/**\n * Recursively convert any node or its contents to native JavaScript\n *\n * @param value - The input value\n * @param arg - If `value` defines a `toJSON()` method, use this\n * as its first argument\n * @param ctx - Conversion context, originally set in Document#toJS(). If\n * `{ keep: true }` is not set, output should be suitable for JSON\n * stringification.\n */\nfunction toJS(value, arg, ctx) {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n if (Array.isArray(value))\n return value.map((v, i) => toJS(v, String(i), ctx));\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n if (!ctx || !identity.hasAnchor(value))\n return value.toJSON(arg, ctx);\n const data = { aliasCount: 0, count: 1, res: undefined };\n ctx.anchors.set(value, data);\n ctx.onCreate = res => {\n data.res = res;\n delete ctx.onCreate;\n };\n const res = value.toJSON(arg, ctx);\n if (ctx.onCreate)\n ctx.onCreate(res);\n return res;\n }\n if (typeof value === 'bigint' && !ctx?.keep)\n return Number(value);\n return value;\n}\n\nexports.toJS = toJS;\n","'use strict';\n\nvar applyReviver = require('../doc/applyReviver.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nclass NodeBase {\n constructor(type) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: type });\n }\n /** Create a copy of this node. */\n clone() {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** A plain JavaScript representation of this node. */\n toJS(doc, { mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n if (!identity.isDocument(doc))\n throw new TypeError('A document argument is required');\n const ctx = {\n anchors: new Map(),\n doc,\n keep: true,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this, '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n}\n\nexports.NodeBase = NodeBase;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar visit = require('../visit.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nclass Alias extends Node.NodeBase {\n constructor(source) {\n super(identity.ALIAS);\n this.source = source;\n Object.defineProperty(this, 'tag', {\n set() {\n throw new Error('Alias nodes cannot have tags');\n }\n });\n }\n /**\n * Resolve the value of this alias within `doc`, finding the last\n * instance of the `source` anchor before this node.\n */\n resolve(doc, ctx) {\n let nodes;\n if (ctx?.aliasResolveCache) {\n nodes = ctx.aliasResolveCache;\n }\n else {\n nodes = [];\n visit.visit(doc, {\n Node: (_key, node) => {\n if (identity.isAlias(node) || identity.hasAnchor(node))\n nodes.push(node);\n }\n });\n if (ctx)\n ctx.aliasResolveCache = nodes;\n }\n let found = undefined;\n for (const node of nodes) {\n if (node === this)\n break;\n if (node.anchor === this.source)\n found = node;\n }\n return found;\n }\n toJSON(_arg, ctx) {\n if (!ctx)\n return { source: this.source };\n const { anchors, doc, maxAliasCount } = ctx;\n const source = this.resolve(doc, ctx);\n if (!source) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new ReferenceError(msg);\n }\n let data = anchors.get(source);\n if (!data) {\n // Resolve anchors for Node.prototype.toJS()\n toJS.toJS(source, null, ctx);\n data = anchors.get(source);\n }\n /* istanbul ignore if */\n if (data?.res === undefined) {\n const msg = 'This should not happen: Alias anchor was not resolved?';\n throw new ReferenceError(msg);\n }\n if (maxAliasCount >= 0) {\n data.count += 1;\n if (data.aliasCount === 0)\n data.aliasCount = getAliasCount(doc, source, anchors);\n if (data.count * data.aliasCount > maxAliasCount) {\n const msg = 'Excessive alias count indicates a resource exhaustion attack';\n throw new ReferenceError(msg);\n }\n }\n return data.res;\n }\n toString(ctx, _onComment, _onChompKeep) {\n const src = `*${this.source}`;\n if (ctx) {\n anchors.anchorIsValid(this.source);\n if (ctx.options.verifyAliasOrder && !ctx.anchors.has(this.source)) {\n const msg = `Unresolved alias (the anchor must be set before the alias): ${this.source}`;\n throw new Error(msg);\n }\n if (ctx.implicitKey)\n return `${src} `;\n }\n return src;\n }\n}\nfunction getAliasCount(doc, node, anchors) {\n if (identity.isAlias(node)) {\n const source = node.resolve(doc);\n const anchor = anchors && source && anchors.get(source);\n return anchor ? anchor.count * anchor.aliasCount : 0;\n }\n else if (identity.isCollection(node)) {\n let count = 0;\n for (const item of node.items) {\n const c = getAliasCount(doc, item, anchors);\n if (c > count)\n count = c;\n }\n return count;\n }\n else if (identity.isPair(node)) {\n const kc = getAliasCount(doc, node.key, anchors);\n const vc = getAliasCount(doc, node.value, anchors);\n return Math.max(kc, vc);\n }\n return 1;\n}\n\nexports.Alias = Alias;\n","'use strict';\n\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\nvar toJS = require('./toJS.js');\n\nconst isScalarValue = (value) => !value || (typeof value !== 'function' && typeof value !== 'object');\nclass Scalar extends Node.NodeBase {\n constructor(value) {\n super(identity.SCALAR);\n this.value = value;\n }\n toJSON(arg, ctx) {\n return ctx?.keep ? this.value : toJS.toJS(this.value, arg, ctx);\n }\n toString() {\n return String(this.value);\n }\n}\nScalar.BLOCK_FOLDED = 'BLOCK_FOLDED';\nScalar.BLOCK_LITERAL = 'BLOCK_LITERAL';\nScalar.PLAIN = 'PLAIN';\nScalar.QUOTE_DOUBLE = 'QUOTE_DOUBLE';\nScalar.QUOTE_SINGLE = 'QUOTE_SINGLE';\n\nexports.Scalar = Scalar;\nexports.isScalarValue = isScalarValue;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\n\nconst defaultTagPrefix = 'tag:yaml.org,2002:';\nfunction findTagObject(value, tagName, tags) {\n if (tagName) {\n const match = tags.filter(t => t.tag === tagName);\n const tagObj = match.find(t => !t.format) ?? match[0];\n if (!tagObj)\n throw new Error(`Tag ${tagName} not found`);\n return tagObj;\n }\n return tags.find(t => t.identify?.(value) && !t.format);\n}\nfunction createNode(value, tagName, ctx) {\n if (identity.isDocument(value))\n value = value.contents;\n if (identity.isNode(value))\n return value;\n if (identity.isPair(value)) {\n const map = ctx.schema[identity.MAP].createNode?.(ctx.schema, null, ctx);\n map.items.push(value);\n return map;\n }\n if (value instanceof String ||\n value instanceof Number ||\n value instanceof Boolean ||\n (typeof BigInt !== 'undefined' && value instanceof BigInt) // not supported everywhere\n ) {\n // https://tc39.es/ecma262/#sec-serializejsonproperty\n value = value.valueOf();\n }\n const { aliasDuplicateObjects, onAnchor, onTagObj, schema, sourceObjects } = ctx;\n // Detect duplicate references to the same object & use Alias nodes for all\n // after first. The `ref` wrapper allows for circular references to resolve.\n let ref = undefined;\n if (aliasDuplicateObjects && value && typeof value === 'object') {\n ref = sourceObjects.get(value);\n if (ref) {\n ref.anchor ?? (ref.anchor = onAnchor(value));\n return new Alias.Alias(ref.anchor);\n }\n else {\n ref = { anchor: null, node: null };\n sourceObjects.set(value, ref);\n }\n }\n if (tagName?.startsWith('!!'))\n tagName = defaultTagPrefix + tagName.slice(2);\n let tagObj = findTagObject(value, tagName, schema.tags);\n if (!tagObj) {\n if (value && typeof value.toJSON === 'function') {\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n value = value.toJSON();\n }\n if (!value || typeof value !== 'object') {\n const node = new Scalar.Scalar(value);\n if (ref)\n ref.node = node;\n return node;\n }\n tagObj =\n value instanceof Map\n ? schema[identity.MAP]\n : Symbol.iterator in Object(value)\n ? schema[identity.SEQ]\n : schema[identity.MAP];\n }\n if (onTagObj) {\n onTagObj(tagObj);\n delete ctx.onTagObj;\n }\n const node = tagObj?.createNode\n ? tagObj.createNode(ctx.schema, value, ctx)\n : typeof tagObj?.nodeClass?.from === 'function'\n ? tagObj.nodeClass.from(ctx.schema, value, ctx)\n : new Scalar.Scalar(value);\n if (tagName)\n node.tag = tagName;\n else if (!tagObj.default)\n node.tag = tagObj.tag;\n if (ref)\n ref.node = node;\n return node;\n}\n\nexports.createNode = createNode;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar identity = require('./identity.js');\nvar Node = require('./Node.js');\n\nfunction collectionFromPath(schema, path, value) {\n let v = value;\n for (let i = path.length - 1; i >= 0; --i) {\n const k = path[i];\n if (typeof k === 'number' && Number.isInteger(k) && k >= 0) {\n const a = [];\n a[k] = v;\n v = a;\n }\n else {\n v = new Map([[k, v]]);\n }\n }\n return createNode.createNode(v, undefined, {\n aliasDuplicateObjects: false,\n keepUndefined: false,\n onAnchor: () => {\n throw new Error('This should not happen, please report a bug.');\n },\n schema,\n sourceObjects: new Map()\n });\n}\n// Type guard is intentionally a little wrong so as to be more useful,\n// as it does not cover untypable empty non-string iterables (e.g. []).\nconst isEmptyPath = (path) => path == null ||\n (typeof path === 'object' && !!path[Symbol.iterator]().next().done);\nclass Collection extends Node.NodeBase {\n constructor(type, schema) {\n super(type);\n Object.defineProperty(this, 'schema', {\n value: schema,\n configurable: true,\n enumerable: false,\n writable: true\n });\n }\n /**\n * Create a copy of this collection.\n *\n * @param schema - If defined, overwrites the original's schema\n */\n clone(schema) {\n const copy = Object.create(Object.getPrototypeOf(this), Object.getOwnPropertyDescriptors(this));\n if (schema)\n copy.schema = schema;\n copy.items = copy.items.map(it => identity.isNode(it) || identity.isPair(it) ? it.clone(schema) : it);\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /**\n * Adds a value to the collection. For `!!map` and `!!omap` the value must\n * be a Pair instance or a `{ key, value }` object, which may not have a key\n * that already exists in the map.\n */\n addIn(path, value) {\n if (isEmptyPath(path))\n this.add(value);\n else {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.addIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n /**\n * Removes a value from the collection.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.delete(key);\n const node = this.get(key, true);\n if (identity.isCollection(node))\n return node.deleteIn(rest);\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n const [key, ...rest] = path;\n const node = this.get(key, true);\n if (rest.length === 0)\n return !keepScalar && identity.isScalar(node) ? node.value : node;\n else\n return identity.isCollection(node) ? node.getIn(rest, keepScalar) : undefined;\n }\n hasAllNullValues(allowScalar) {\n return this.items.every(node => {\n if (!identity.isPair(node))\n return false;\n const n = node.value;\n return (n == null ||\n (allowScalar &&\n identity.isScalar(n) &&\n n.value == null &&\n !n.commentBefore &&\n !n.comment &&\n !n.tag));\n });\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n */\n hasIn(path) {\n const [key, ...rest] = path;\n if (rest.length === 0)\n return this.has(key);\n const node = this.get(key, true);\n return identity.isCollection(node) ? node.hasIn(rest) : false;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n const [key, ...rest] = path;\n if (rest.length === 0) {\n this.set(key, value);\n }\n else {\n const node = this.get(key, true);\n if (identity.isCollection(node))\n node.setIn(rest, value);\n else if (node === undefined && this.schema)\n this.set(key, collectionFromPath(this.schema, rest, value));\n else\n throw new Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`);\n }\n }\n}\n\nexports.Collection = Collection;\nexports.collectionFromPath = collectionFromPath;\nexports.isEmptyPath = isEmptyPath;\n","'use strict';\n\n/**\n * Stringifies a comment.\n *\n * Empty comment lines are left empty,\n * lines consisting of a single space are replaced by `#`,\n * and all other lines are prefixed with a `#`.\n */\nconst stringifyComment = (str) => str.replace(/^(?!$)(?: $)?/gm, '#');\nfunction indentComment(comment, indent) {\n if (/^\\n+$/.test(comment))\n return comment.substring(1);\n return indent ? comment.replace(/^(?! *$)/gm, indent) : comment;\n}\nconst lineComment = (str, indent, comment) => str.endsWith('\\n')\n ? indentComment(comment, indent)\n : comment.includes('\\n')\n ? '\\n' + indentComment(comment, indent)\n : (str.endsWith(' ') ? '' : ' ') + comment;\n\nexports.indentComment = indentComment;\nexports.lineComment = lineComment;\nexports.stringifyComment = stringifyComment;\n","'use strict';\n\nconst FOLD_FLOW = 'flow';\nconst FOLD_BLOCK = 'block';\nconst FOLD_QUOTED = 'quoted';\n/**\n * Tries to keep input at up to `lineWidth` characters, splitting only on spaces\n * not followed by newlines or spaces unless `mode` is `'quoted'`. Lines are\n * terminated with `\\n` and started with `indent`.\n */\nfunction foldFlowLines(text, indent, mode = 'flow', { indentAtStart, lineWidth = 80, minContentWidth = 20, onFold, onOverflow } = {}) {\n if (!lineWidth || lineWidth < 0)\n return text;\n if (lineWidth < minContentWidth)\n minContentWidth = 0;\n const endStep = Math.max(1 + minContentWidth, 1 + lineWidth - indent.length);\n if (text.length <= endStep)\n return text;\n const folds = [];\n const escapedFolds = {};\n let end = lineWidth - indent.length;\n if (typeof indentAtStart === 'number') {\n if (indentAtStart > lineWidth - Math.max(2, minContentWidth))\n folds.push(0);\n else\n end = lineWidth - indentAtStart;\n }\n let split = undefined;\n let prev = undefined;\n let overflow = false;\n let i = -1;\n let escStart = -1;\n let escEnd = -1;\n if (mode === FOLD_BLOCK) {\n i = consumeMoreIndentedLines(text, i, indent.length);\n if (i !== -1)\n end = i + endStep;\n }\n for (let ch; (ch = text[(i += 1)]);) {\n if (mode === FOLD_QUOTED && ch === '\\\\') {\n escStart = i;\n switch (text[i + 1]) {\n case 'x':\n i += 3;\n break;\n case 'u':\n i += 5;\n break;\n case 'U':\n i += 9;\n break;\n default:\n i += 1;\n }\n escEnd = i;\n }\n if (ch === '\\n') {\n if (mode === FOLD_BLOCK)\n i = consumeMoreIndentedLines(text, i, indent.length);\n end = i + indent.length + endStep;\n split = undefined;\n }\n else {\n if (ch === ' ' &&\n prev &&\n prev !== ' ' &&\n prev !== '\\n' &&\n prev !== '\\t') {\n // space surrounded by non-space can be replaced with newline + indent\n const next = text[i + 1];\n if (next && next !== ' ' && next !== '\\n' && next !== '\\t')\n split = i;\n }\n if (i >= end) {\n if (split) {\n folds.push(split);\n end = split + endStep;\n split = undefined;\n }\n else if (mode === FOLD_QUOTED) {\n // white-space collected at end may stretch past lineWidth\n while (prev === ' ' || prev === '\\t') {\n prev = ch;\n ch = text[(i += 1)];\n overflow = true;\n }\n // Account for newline escape, but don't break preceding escape\n const j = i > escEnd + 1 ? i - 2 : escStart - 1;\n // Bail out if lineWidth & minContentWidth are shorter than an escape string\n if (escapedFolds[j])\n return text;\n folds.push(j);\n escapedFolds[j] = true;\n end = j + endStep;\n split = undefined;\n }\n else {\n overflow = true;\n }\n }\n }\n prev = ch;\n }\n if (overflow && onOverflow)\n onOverflow();\n if (folds.length === 0)\n return text;\n if (onFold)\n onFold();\n let res = text.slice(0, folds[0]);\n for (let i = 0; i < folds.length; ++i) {\n const fold = folds[i];\n const end = folds[i + 1] || text.length;\n if (fold === 0)\n res = `\\n${indent}${text.slice(0, end)}`;\n else {\n if (mode === FOLD_QUOTED && escapedFolds[fold])\n res += `${text[fold]}\\\\`;\n res += `\\n${indent}${text.slice(fold + 1, end)}`;\n }\n }\n return res;\n}\n/**\n * Presumes `i + 1` is at the start of a line\n * @returns index of last newline in more-indented block\n */\nfunction consumeMoreIndentedLines(text, i, indent) {\n let end = i;\n let start = i + 1;\n let ch = text[start];\n while (ch === ' ' || ch === '\\t') {\n if (i < start + indent) {\n ch = text[++i];\n }\n else {\n do {\n ch = text[++i];\n } while (ch && ch !== '\\n');\n end = i;\n start = i + 1;\n ch = text[start];\n }\n }\n return end;\n}\n\nexports.FOLD_BLOCK = FOLD_BLOCK;\nexports.FOLD_FLOW = FOLD_FLOW;\nexports.FOLD_QUOTED = FOLD_QUOTED;\nexports.foldFlowLines = foldFlowLines;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar foldFlowLines = require('./foldFlowLines.js');\n\nconst getFoldOptions = (ctx, isBlock) => ({\n indentAtStart: isBlock ? ctx.indent.length : ctx.indentAtStart,\n lineWidth: ctx.options.lineWidth,\n minContentWidth: ctx.options.minContentWidth\n});\n// Also checks for lines starting with %, as parsing the output as YAML 1.1 will\n// presume that's starting a new document.\nconst containsDocumentMarker = (str) => /^(%|---|\\.\\.\\.)/m.test(str);\nfunction lineLengthOverLimit(str, lineWidth, indentLength) {\n if (!lineWidth || lineWidth < 0)\n return false;\n const limit = lineWidth - indentLength;\n const strLen = str.length;\n if (strLen <= limit)\n return false;\n for (let i = 0, start = 0; i < strLen; ++i) {\n if (str[i] === '\\n') {\n if (i - start > limit)\n return true;\n start = i + 1;\n if (strLen - start <= limit)\n return false;\n }\n }\n return true;\n}\nfunction doubleQuotedString(value, ctx) {\n const json = JSON.stringify(value);\n if (ctx.options.doubleQuotedAsJSON)\n return json;\n const { implicitKey } = ctx;\n const minMultiLineLength = ctx.options.doubleQuotedMinMultiLineLength;\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n let str = '';\n let start = 0;\n for (let i = 0, ch = json[i]; ch; ch = json[++i]) {\n if (ch === ' ' && json[i + 1] === '\\\\' && json[i + 2] === 'n') {\n // space before newline needs to be escaped to not be folded\n str += json.slice(start, i) + '\\\\ ';\n i += 1;\n start = i;\n ch = '\\\\';\n }\n if (ch === '\\\\')\n switch (json[i + 1]) {\n case 'u':\n {\n str += json.slice(start, i);\n const code = json.substr(i + 2, 4);\n switch (code) {\n case '0000':\n str += '\\\\0';\n break;\n case '0007':\n str += '\\\\a';\n break;\n case '000b':\n str += '\\\\v';\n break;\n case '001b':\n str += '\\\\e';\n break;\n case '0085':\n str += '\\\\N';\n break;\n case '00a0':\n str += '\\\\_';\n break;\n case '2028':\n str += '\\\\L';\n break;\n case '2029':\n str += '\\\\P';\n break;\n default:\n if (code.substr(0, 2) === '00')\n str += '\\\\x' + code.substr(2);\n else\n str += json.substr(i, 6);\n }\n i += 5;\n start = i + 1;\n }\n break;\n case 'n':\n if (implicitKey ||\n json[i + 2] === '\"' ||\n json.length < minMultiLineLength) {\n i += 1;\n }\n else {\n // folding will eat first newline\n str += json.slice(start, i) + '\\n\\n';\n while (json[i + 2] === '\\\\' &&\n json[i + 3] === 'n' &&\n json[i + 4] !== '\"') {\n str += '\\n';\n i += 2;\n }\n str += indent;\n // space after newline needs to be escaped to not be folded\n if (json[i + 2] === ' ')\n str += '\\\\';\n i += 1;\n start = i + 1;\n }\n break;\n default:\n i += 1;\n }\n }\n str = start ? str + json.slice(start) : json;\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_QUOTED, getFoldOptions(ctx, false));\n}\nfunction singleQuotedString(value, ctx) {\n if (ctx.options.singleQuote === false ||\n (ctx.implicitKey && value.includes('\\n')) ||\n /[ \\t]\\n|\\n[ \\t]/.test(value) // single quoted string can't have leading or trailing whitespace around newline\n )\n return doubleQuotedString(value, ctx);\n const indent = ctx.indent || (containsDocumentMarker(value) ? ' ' : '');\n const res = \"'\" + value.replace(/'/g, \"''\").replace(/\\n+/g, `$&\\n${indent}`) + \"'\";\n return ctx.implicitKey\n ? res\n : foldFlowLines.foldFlowLines(res, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction quotedString(value, ctx) {\n const { singleQuote } = ctx.options;\n let qs;\n if (singleQuote === false)\n qs = doubleQuotedString;\n else {\n const hasDouble = value.includes('\"');\n const hasSingle = value.includes(\"'\");\n if (hasDouble && !hasSingle)\n qs = singleQuotedString;\n else if (hasSingle && !hasDouble)\n qs = doubleQuotedString;\n else\n qs = singleQuote ? singleQuotedString : doubleQuotedString;\n }\n return qs(value, ctx);\n}\n// The negative lookbehind avoids a polynomial search,\n// but isn't supported yet on Safari: https://caniuse.com/js-regexp-lookbehind\nlet blockEndNewlines;\ntry {\n blockEndNewlines = new RegExp('(^|(?<!\\n))\\n+(?!\\n|$)', 'g');\n}\ncatch {\n blockEndNewlines = /\\n+(?!\\n|$)/g;\n}\nfunction blockString({ comment, type, value }, ctx, onComment, onChompKeep) {\n const { blockQuote, commentString, lineWidth } = ctx.options;\n // 1. Block can't end in whitespace unless the last line is non-empty.\n // 2. Strings consisting of only whitespace are best rendered explicitly.\n if (!blockQuote || /\\n[\\t ]+$/.test(value)) {\n return quotedString(value, ctx);\n }\n const indent = ctx.indent ||\n (ctx.forceBlockIndent || containsDocumentMarker(value) ? ' ' : '');\n const literal = blockQuote === 'literal'\n ? true\n : blockQuote === 'folded' || type === Scalar.Scalar.BLOCK_FOLDED\n ? false\n : type === Scalar.Scalar.BLOCK_LITERAL\n ? true\n : !lineLengthOverLimit(value, lineWidth, indent.length);\n if (!value)\n return literal ? '|\\n' : '>\\n';\n // determine chomping from whitespace at value end\n let chomp;\n let endStart;\n for (endStart = value.length; endStart > 0; --endStart) {\n const ch = value[endStart - 1];\n if (ch !== '\\n' && ch !== '\\t' && ch !== ' ')\n break;\n }\n let end = value.substring(endStart);\n const endNlPos = end.indexOf('\\n');\n if (endNlPos === -1) {\n chomp = '-'; // strip\n }\n else if (value === end || endNlPos !== end.length - 1) {\n chomp = '+'; // keep\n if (onChompKeep)\n onChompKeep();\n }\n else {\n chomp = ''; // clip\n }\n if (end) {\n value = value.slice(0, -end.length);\n if (end[end.length - 1] === '\\n')\n end = end.slice(0, -1);\n end = end.replace(blockEndNewlines, `$&${indent}`);\n }\n // determine indent indicator from whitespace at value start\n let startWithSpace = false;\n let startEnd;\n let startNlPos = -1;\n for (startEnd = 0; startEnd < value.length; ++startEnd) {\n const ch = value[startEnd];\n if (ch === ' ')\n startWithSpace = true;\n else if (ch === '\\n')\n startNlPos = startEnd;\n else\n break;\n }\n let start = value.substring(0, startNlPos < startEnd ? startNlPos + 1 : startEnd);\n if (start) {\n value = value.substring(start.length);\n start = start.replace(/\\n+/g, `$&${indent}`);\n }\n const indentSize = indent ? '2' : '1'; // root is at -1\n // Leading | or > is added later\n let header = (startWithSpace ? indentSize : '') + chomp;\n if (comment) {\n header += ' ' + commentString(comment.replace(/ ?[\\r\\n]+/g, ' '));\n if (onComment)\n onComment();\n }\n if (!literal) {\n const foldedValue = value\n .replace(/\\n+/g, '\\n$&')\n .replace(/(?:^|\\n)([\\t ].*)(?:([\\n\\t ]*)\\n(?![\\n\\t ]))?/g, '$1$2') // more-indented lines aren't folded\n // ^ more-ind. ^ empty ^ capture next empty lines only at end of indent\n .replace(/\\n+/g, `$&${indent}`);\n let literalFallback = false;\n const foldOptions = getFoldOptions(ctx, true);\n if (blockQuote !== 'folded' && type !== Scalar.Scalar.BLOCK_FOLDED) {\n foldOptions.onOverflow = () => {\n literalFallback = true;\n };\n }\n const body = foldFlowLines.foldFlowLines(`${start}${foldedValue}${end}`, indent, foldFlowLines.FOLD_BLOCK, foldOptions);\n if (!literalFallback)\n return `>${header}\\n${indent}${body}`;\n }\n value = value.replace(/\\n+/g, `$&${indent}`);\n return `|${header}\\n${indent}${start}${value}${end}`;\n}\nfunction plainString(item, ctx, onComment, onChompKeep) {\n const { type, value } = item;\n const { actualString, implicitKey, indent, indentStep, inFlow } = ctx;\n if ((implicitKey && value.includes('\\n')) ||\n (inFlow && /[[\\]{},]/.test(value))) {\n return quotedString(value, ctx);\n }\n if (/^[\\n\\t ,[\\]{}#&*!|>'\"%@`]|^[?-]$|^[?-][ \\t]|[\\n:][ \\t]|[ \\t]\\n|[\\n\\t ]#|[\\n\\t :]$/.test(value)) {\n // not allowed:\n // - '-' or '?'\n // - start with an indicator character (except [?:-]) or /[?-] /\n // - '\\n ', ': ' or ' \\n' anywhere\n // - '#' not preceded by a non-space char\n // - end with ' ' or ':'\n return implicitKey || inFlow || !value.includes('\\n')\n ? quotedString(value, ctx)\n : blockString(item, ctx, onComment, onChompKeep);\n }\n if (!implicitKey &&\n !inFlow &&\n type !== Scalar.Scalar.PLAIN &&\n value.includes('\\n')) {\n // Where allowed & type not set explicitly, prefer block style for multiline strings\n return blockString(item, ctx, onComment, onChompKeep);\n }\n if (containsDocumentMarker(value)) {\n if (indent === '') {\n ctx.forceBlockIndent = true;\n return blockString(item, ctx, onComment, onChompKeep);\n }\n else if (implicitKey && indent === indentStep) {\n return quotedString(value, ctx);\n }\n }\n const str = value.replace(/\\n+/g, `$&\\n${indent}`);\n // Verify that output will be parsed as a string, as e.g. plain numbers and\n // booleans get parsed with those types in v1.2 (e.g. '42', 'true' & '0.9e-3'),\n // and others in v1.1.\n if (actualString) {\n const test = (tag) => tag.default && tag.tag !== 'tag:yaml.org,2002:str' && tag.test?.test(str);\n const { compat, tags } = ctx.doc.schema;\n if (tags.some(test) || compat?.some(test))\n return quotedString(value, ctx);\n }\n return implicitKey\n ? str\n : foldFlowLines.foldFlowLines(str, indent, foldFlowLines.FOLD_FLOW, getFoldOptions(ctx, false));\n}\nfunction stringifyString(item, ctx, onComment, onChompKeep) {\n const { implicitKey, inFlow } = ctx;\n const ss = typeof item.value === 'string'\n ? item\n : Object.assign({}, item, { value: String(item.value) });\n let { type } = item;\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n // force double quotes on control characters & unpaired surrogates\n if (/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f\\u{D800}-\\u{DFFF}]/u.test(ss.value))\n type = Scalar.Scalar.QUOTE_DOUBLE;\n }\n const _stringify = (_type) => {\n switch (_type) {\n case Scalar.Scalar.BLOCK_FOLDED:\n case Scalar.Scalar.BLOCK_LITERAL:\n return implicitKey || inFlow\n ? quotedString(ss.value, ctx) // blocks are not valid inside flow containers\n : blockString(ss, ctx, onComment, onChompKeep);\n case Scalar.Scalar.QUOTE_DOUBLE:\n return doubleQuotedString(ss.value, ctx);\n case Scalar.Scalar.QUOTE_SINGLE:\n return singleQuotedString(ss.value, ctx);\n case Scalar.Scalar.PLAIN:\n return plainString(ss, ctx, onComment, onChompKeep);\n default:\n return null;\n }\n };\n let res = _stringify(type);\n if (res === null) {\n const { defaultKeyType, defaultStringType } = ctx.options;\n const t = (implicitKey && defaultKeyType) || defaultStringType;\n res = _stringify(t);\n if (res === null)\n throw new Error(`Unsupported default string type ${t}`);\n }\n return res;\n}\n\nexports.stringifyString = stringifyString;\n","'use strict';\n\nvar anchors = require('../doc/anchors.js');\nvar identity = require('../nodes/identity.js');\nvar stringifyComment = require('./stringifyComment.js');\nvar stringifyString = require('./stringifyString.js');\n\nfunction createStringifyContext(doc, options) {\n const opt = Object.assign({\n blockQuote: true,\n commentString: stringifyComment.stringifyComment,\n defaultKeyType: null,\n defaultStringType: 'PLAIN',\n directives: null,\n doubleQuotedAsJSON: false,\n doubleQuotedMinMultiLineLength: 40,\n falseStr: 'false',\n flowCollectionPadding: true,\n indentSeq: true,\n lineWidth: 80,\n minContentWidth: 20,\n nullStr: 'null',\n simpleKeys: false,\n singleQuote: null,\n trueStr: 'true',\n verifyAliasOrder: true\n }, doc.schema.toStringOptions, options);\n let inFlow;\n switch (opt.collectionStyle) {\n case 'block':\n inFlow = false;\n break;\n case 'flow':\n inFlow = true;\n break;\n default:\n inFlow = null;\n }\n return {\n anchors: new Set(),\n doc,\n flowCollectionPadding: opt.flowCollectionPadding ? ' ' : '',\n indent: '',\n indentStep: typeof opt.indent === 'number' ? ' '.repeat(opt.indent) : ' ',\n inFlow,\n options: opt\n };\n}\nfunction getTagObject(tags, item) {\n if (item.tag) {\n const match = tags.filter(t => t.tag === item.tag);\n if (match.length > 0)\n return match.find(t => t.format === item.format) ?? match[0];\n }\n let tagObj = undefined;\n let obj;\n if (identity.isScalar(item)) {\n obj = item.value;\n let match = tags.filter(t => t.identify?.(obj));\n if (match.length > 1) {\n const testMatch = match.filter(t => t.test);\n if (testMatch.length > 0)\n match = testMatch;\n }\n tagObj =\n match.find(t => t.format === item.format) ?? match.find(t => !t.format);\n }\n else {\n obj = item;\n tagObj = tags.find(t => t.nodeClass && obj instanceof t.nodeClass);\n }\n if (!tagObj) {\n const name = obj?.constructor?.name ?? (obj === null ? 'null' : typeof obj);\n throw new Error(`Tag not resolved for ${name} value`);\n }\n return tagObj;\n}\n// needs to be called before value stringifier to allow for circular anchor refs\nfunction stringifyProps(node, tagObj, { anchors: anchors$1, doc }) {\n if (!doc.directives)\n return '';\n const props = [];\n const anchor = (identity.isScalar(node) || identity.isCollection(node)) && node.anchor;\n if (anchor && anchors.anchorIsValid(anchor)) {\n anchors$1.add(anchor);\n props.push(`&${anchor}`);\n }\n const tag = node.tag ?? (tagObj.default ? null : tagObj.tag);\n if (tag)\n props.push(doc.directives.tagString(tag));\n return props.join(' ');\n}\nfunction stringify(item, ctx, onComment, onChompKeep) {\n if (identity.isPair(item))\n return item.toString(ctx, onComment, onChompKeep);\n if (identity.isAlias(item)) {\n if (ctx.doc.directives)\n return item.toString(ctx);\n if (ctx.resolvedAliases?.has(item)) {\n throw new TypeError(`Cannot stringify circular structure without alias nodes`);\n }\n else {\n if (ctx.resolvedAliases)\n ctx.resolvedAliases.add(item);\n else\n ctx.resolvedAliases = new Set([item]);\n item = item.resolve(ctx.doc);\n }\n }\n let tagObj = undefined;\n const node = identity.isNode(item)\n ? item\n : ctx.doc.createNode(item, { onTagObj: o => (tagObj = o) });\n tagObj ?? (tagObj = getTagObject(ctx.doc.schema.tags, node));\n const props = stringifyProps(node, tagObj, ctx);\n if (props.length > 0)\n ctx.indentAtStart = (ctx.indentAtStart ?? 0) + props.length + 1;\n const str = typeof tagObj.stringify === 'function'\n ? tagObj.stringify(node, ctx, onComment, onChompKeep)\n : identity.isScalar(node)\n ? stringifyString.stringifyString(node, ctx, onComment, onChompKeep)\n : node.toString(ctx, onComment, onChompKeep);\n if (!props)\n return str;\n return identity.isScalar(node) || str[0] === '{' || str[0] === '['\n ? `${props} ${str}`\n : `${props}\\n${ctx.indent}${str}`;\n}\n\nexports.createStringifyContext = createStringifyContext;\nexports.stringify = stringify;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyPair({ key, value }, ctx, onComment, onChompKeep) {\n const { allNullValues, doc, indent, indentStep, options: { commentString, indentSeq, simpleKeys } } = ctx;\n let keyComment = (identity.isNode(key) && key.comment) || null;\n if (simpleKeys) {\n if (keyComment) {\n throw new Error('With simple keys, key nodes cannot have comments');\n }\n if (identity.isCollection(key) || (!identity.isNode(key) && typeof key === 'object')) {\n const msg = 'With simple keys, collection cannot be used as a key value';\n throw new Error(msg);\n }\n }\n let explicitKey = !simpleKeys &&\n (!key ||\n (keyComment && value == null && !ctx.inFlow) ||\n identity.isCollection(key) ||\n (identity.isScalar(key)\n ? key.type === Scalar.Scalar.BLOCK_FOLDED || key.type === Scalar.Scalar.BLOCK_LITERAL\n : typeof key === 'object'));\n ctx = Object.assign({}, ctx, {\n allNullValues: false,\n implicitKey: !explicitKey && (simpleKeys || !allNullValues),\n indent: indent + indentStep\n });\n let keyCommentDone = false;\n let chompKeep = false;\n let str = stringify.stringify(key, ctx, () => (keyCommentDone = true), () => (chompKeep = true));\n if (!explicitKey && !ctx.inFlow && str.length > 1024) {\n if (simpleKeys)\n throw new Error('With simple keys, single line scalar must not span more than 1024 characters');\n explicitKey = true;\n }\n if (ctx.inFlow) {\n if (allNullValues || value == null) {\n if (keyCommentDone && onComment)\n onComment();\n return str === '' ? '?' : explicitKey ? `? ${str}` : str;\n }\n }\n else if ((allNullValues && !simpleKeys) || (value == null && explicitKey)) {\n str = `? ${str}`;\n if (keyComment && !keyCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n }\n if (keyCommentDone)\n keyComment = null;\n if (explicitKey) {\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n str = `? ${str}\\n${indent}:`;\n }\n else {\n str = `${str}:`;\n if (keyComment)\n str += stringifyComment.lineComment(str, ctx.indent, commentString(keyComment));\n }\n let vsb, vcb, valueComment;\n if (identity.isNode(value)) {\n vsb = !!value.spaceBefore;\n vcb = value.commentBefore;\n valueComment = value.comment;\n }\n else {\n vsb = false;\n vcb = null;\n valueComment = null;\n if (value && typeof value === 'object')\n value = doc.createNode(value);\n }\n ctx.implicitKey = false;\n if (!explicitKey && !keyComment && identity.isScalar(value))\n ctx.indentAtStart = str.length + 1;\n chompKeep = false;\n if (!indentSeq &&\n indentStep.length >= 2 &&\n !ctx.inFlow &&\n !explicitKey &&\n identity.isSeq(value) &&\n !value.flow &&\n !value.tag &&\n !value.anchor) {\n // If indentSeq === false, consider '- ' as part of indentation where possible\n ctx.indent = ctx.indent.substring(2);\n }\n let valueCommentDone = false;\n const valueStr = stringify.stringify(value, ctx, () => (valueCommentDone = true), () => (chompKeep = true));\n let ws = ' ';\n if (keyComment || vsb || vcb) {\n ws = vsb ? '\\n' : '';\n if (vcb) {\n const cs = commentString(vcb);\n ws += `\\n${stringifyComment.indentComment(cs, ctx.indent)}`;\n }\n if (valueStr === '' && !ctx.inFlow) {\n if (ws === '\\n' && valueComment)\n ws = '\\n\\n';\n }\n else {\n ws += `\\n${ctx.indent}`;\n }\n }\n else if (!explicitKey && identity.isCollection(value)) {\n const vs0 = valueStr[0];\n const nl0 = valueStr.indexOf('\\n');\n const hasNewline = nl0 !== -1;\n const flow = ctx.inFlow ?? value.flow ?? value.items.length === 0;\n if (hasNewline || !flow) {\n let hasPropsLine = false;\n if (hasNewline && (vs0 === '&' || vs0 === '!')) {\n let sp0 = valueStr.indexOf(' ');\n if (vs0 === '&' &&\n sp0 !== -1 &&\n sp0 < nl0 &&\n valueStr[sp0 + 1] === '!') {\n sp0 = valueStr.indexOf(' ', sp0 + 1);\n }\n if (sp0 === -1 || nl0 < sp0)\n hasPropsLine = true;\n }\n if (!hasPropsLine)\n ws = `\\n${ctx.indent}`;\n }\n }\n else if (valueStr === '' || valueStr[0] === '\\n') {\n ws = '';\n }\n str += ws + valueStr;\n if (ctx.inFlow) {\n if (valueCommentDone && onComment)\n onComment();\n }\n else if (valueComment && !valueCommentDone) {\n str += stringifyComment.lineComment(str, ctx.indent, commentString(valueComment));\n }\n else if (chompKeep && onChompKeep) {\n onChompKeep();\n }\n return str;\n}\n\nexports.stringifyPair = stringifyPair;\n","'use strict';\n\nvar node_process = require('process');\n\nfunction debug(logLevel, ...messages) {\n if (logLevel === 'debug')\n console.log(...messages);\n}\nfunction warn(logLevel, warning) {\n if (logLevel === 'debug' || logLevel === 'warn') {\n if (typeof node_process.emitWarning === 'function')\n node_process.emitWarning(warning);\n else\n console.warn(warning);\n }\n}\n\nexports.debug = debug;\nexports.warn = warn;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Scalar = require('../../nodes/Scalar.js');\n\n// If the value associated with a merge key is a single mapping node, each of\n// its key/value pairs is inserted into the current mapping, unless the key\n// already exists in it. If the value associated with the merge key is a\n// sequence, then this sequence is expected to contain mapping nodes and each\n// of these nodes is merged in turn according to its order in the sequence.\n// Keys in mapping nodes earlier in the sequence override keys specified in\n// later mapping nodes. -- http://yaml.org/type/merge.html\nconst MERGE_KEY = '<<';\nconst merge = {\n identify: value => value === MERGE_KEY ||\n (typeof value === 'symbol' && value.description === MERGE_KEY),\n default: 'key',\n tag: 'tag:yaml.org,2002:merge',\n test: /^<<$/,\n resolve: () => Object.assign(new Scalar.Scalar(Symbol(MERGE_KEY)), {\n addToJSMap: addMergeToJSMap\n }),\n stringify: () => MERGE_KEY\n};\nconst isMergeKey = (ctx, key) => (merge.identify(key) ||\n (identity.isScalar(key) &&\n (!key.type || key.type === Scalar.Scalar.PLAIN) &&\n merge.identify(key.value))) &&\n ctx?.doc.schema.tags.some(tag => tag.tag === merge.tag && tag.default);\nfunction addMergeToJSMap(ctx, map, value) {\n value = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (identity.isSeq(value))\n for (const it of value.items)\n mergeValue(ctx, map, it);\n else if (Array.isArray(value))\n for (const it of value)\n mergeValue(ctx, map, it);\n else\n mergeValue(ctx, map, value);\n}\nfunction mergeValue(ctx, map, value) {\n const source = ctx && identity.isAlias(value) ? value.resolve(ctx.doc) : value;\n if (!identity.isMap(source))\n throw new Error('Merge sources must be maps or map aliases');\n const srcMap = source.toJSON(null, ctx, Map);\n for (const [key, value] of srcMap) {\n if (map instanceof Map) {\n if (!map.has(key))\n map.set(key, value);\n }\n else if (map instanceof Set) {\n map.add(key);\n }\n else if (!Object.prototype.hasOwnProperty.call(map, key)) {\n Object.defineProperty(map, key, {\n value,\n writable: true,\n enumerable: true,\n configurable: true\n });\n }\n }\n return map;\n}\n\nexports.addMergeToJSMap = addMergeToJSMap;\nexports.isMergeKey = isMergeKey;\nexports.merge = merge;\n","'use strict';\n\nvar log = require('../log.js');\nvar merge = require('../schema/yaml-1.1/merge.js');\nvar stringify = require('../stringify/stringify.js');\nvar identity = require('./identity.js');\nvar toJS = require('./toJS.js');\n\nfunction addPairToJSMap(ctx, map, { key, value }) {\n if (identity.isNode(key) && key.addToJSMap)\n key.addToJSMap(ctx, map, value);\n // TODO: Should drop this special case for bare << handling\n else if (merge.isMergeKey(ctx, key))\n merge.addMergeToJSMap(ctx, map, value);\n else {\n const jsKey = toJS.toJS(key, '', ctx);\n if (map instanceof Map) {\n map.set(jsKey, toJS.toJS(value, jsKey, ctx));\n }\n else if (map instanceof Set) {\n map.add(jsKey);\n }\n else {\n const stringKey = stringifyKey(key, jsKey, ctx);\n const jsValue = toJS.toJS(value, stringKey, ctx);\n if (stringKey in map)\n Object.defineProperty(map, stringKey, {\n value: jsValue,\n writable: true,\n enumerable: true,\n configurable: true\n });\n else\n map[stringKey] = jsValue;\n }\n }\n return map;\n}\nfunction stringifyKey(key, jsKey, ctx) {\n if (jsKey === null)\n return '';\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n if (typeof jsKey !== 'object')\n return String(jsKey);\n if (identity.isNode(key) && ctx?.doc) {\n const strCtx = stringify.createStringifyContext(ctx.doc, {});\n strCtx.anchors = new Set();\n for (const node of ctx.anchors.keys())\n strCtx.anchors.add(node.anchor);\n strCtx.inFlow = true;\n strCtx.inStringifyKey = true;\n const strKey = key.toString(strCtx);\n if (!ctx.mapKeyWarned) {\n let jsonStr = JSON.stringify(strKey);\n if (jsonStr.length > 40)\n jsonStr = jsonStr.substring(0, 36) + '...\"';\n log.warn(ctx.doc.options.logLevel, `Keys with collection values will be stringified due to JS Object restrictions: ${jsonStr}. Set mapAsMap: true to use object keys.`);\n ctx.mapKeyWarned = true;\n }\n return strKey;\n }\n return JSON.stringify(jsKey);\n}\n\nexports.addPairToJSMap = addPairToJSMap;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyPair = require('../stringify/stringifyPair.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar identity = require('./identity.js');\n\nfunction createPair(key, value, ctx) {\n const k = createNode.createNode(key, undefined, ctx);\n const v = createNode.createNode(value, undefined, ctx);\n return new Pair(k, v);\n}\nclass Pair {\n constructor(key, value = null) {\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.PAIR });\n this.key = key;\n this.value = value;\n }\n clone(schema) {\n let { key, value } = this;\n if (identity.isNode(key))\n key = key.clone(schema);\n if (identity.isNode(value))\n value = value.clone(schema);\n return new Pair(key, value);\n }\n toJSON(_, ctx) {\n const pair = ctx?.mapAsMap ? new Map() : {};\n return addPairToJSMap.addPairToJSMap(ctx, pair, this);\n }\n toString(ctx, onComment, onChompKeep) {\n return ctx?.doc\n ? stringifyPair.stringifyPair(this, ctx, onComment, onChompKeep)\n : JSON.stringify(this);\n }\n}\n\nexports.Pair = Pair;\nexports.createPair = createPair;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyCollection(collection, ctx, options) {\n const flow = ctx.inFlow ?? collection.flow;\n const stringify = flow ? stringifyFlowCollection : stringifyBlockCollection;\n return stringify(collection, ctx, options);\n}\nfunction stringifyBlockCollection({ comment, items }, ctx, { blockItemPrefix, flowChars, itemIndent, onChompKeep, onComment }) {\n const { indent, options: { commentString } } = ctx;\n const itemCtx = Object.assign({}, ctx, { indent: itemIndent, type: null });\n let chompKeep = false; // flag for the preceding node's status\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (!chompKeep && item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, chompKeep);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (!chompKeep && ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, chompKeep);\n }\n }\n chompKeep = false;\n let str = stringify.stringify(item, itemCtx, () => (comment = null), () => (chompKeep = true));\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (chompKeep && comment)\n chompKeep = false;\n lines.push(blockItemPrefix + str);\n }\n let str;\n if (lines.length === 0) {\n str = flowChars.start + flowChars.end;\n }\n else {\n str = lines[0];\n for (let i = 1; i < lines.length; ++i) {\n const line = lines[i];\n str += line ? `\\n${indent}${line}` : '\\n';\n }\n }\n if (comment) {\n str += '\\n' + stringifyComment.indentComment(commentString(comment), indent);\n if (onComment)\n onComment();\n }\n else if (chompKeep && onChompKeep)\n onChompKeep();\n return str;\n}\nfunction stringifyFlowCollection({ items }, ctx, { flowChars, itemIndent }) {\n const { indent, indentStep, flowCollectionPadding: fcPadding, options: { commentString } } = ctx;\n itemIndent += indentStep;\n const itemCtx = Object.assign({}, ctx, {\n indent: itemIndent,\n inFlow: true,\n type: null\n });\n let reqNewline = false;\n let linesAtValue = 0;\n const lines = [];\n for (let i = 0; i < items.length; ++i) {\n const item = items[i];\n let comment = null;\n if (identity.isNode(item)) {\n if (item.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, item.commentBefore, false);\n if (item.comment)\n comment = item.comment;\n }\n else if (identity.isPair(item)) {\n const ik = identity.isNode(item.key) ? item.key : null;\n if (ik) {\n if (ik.spaceBefore)\n lines.push('');\n addCommentBefore(ctx, lines, ik.commentBefore, false);\n if (ik.comment)\n reqNewline = true;\n }\n const iv = identity.isNode(item.value) ? item.value : null;\n if (iv) {\n if (iv.comment)\n comment = iv.comment;\n if (iv.commentBefore)\n reqNewline = true;\n }\n else if (item.value == null && ik?.comment) {\n comment = ik.comment;\n }\n }\n if (comment)\n reqNewline = true;\n let str = stringify.stringify(item, itemCtx, () => (comment = null));\n if (i < items.length - 1)\n str += ',';\n if (comment)\n str += stringifyComment.lineComment(str, itemIndent, commentString(comment));\n if (!reqNewline && (lines.length > linesAtValue || str.includes('\\n')))\n reqNewline = true;\n lines.push(str);\n linesAtValue = lines.length;\n }\n const { start, end } = flowChars;\n if (lines.length === 0) {\n return start + end;\n }\n else {\n if (!reqNewline) {\n const len = lines.reduce((sum, line) => sum + line.length + 2, 2);\n reqNewline = ctx.options.lineWidth > 0 && len > ctx.options.lineWidth;\n }\n if (reqNewline) {\n let str = start;\n for (const line of lines)\n str += line ? `\\n${indentStep}${indent}${line}` : '\\n';\n return `${str}\\n${indent}${end}`;\n }\n else {\n return `${start}${fcPadding}${lines.join(' ')}${fcPadding}${end}`;\n }\n }\n}\nfunction addCommentBefore({ indent, options: { commentString } }, lines, comment, chompKeep) {\n if (comment && chompKeep)\n comment = comment.replace(/^\\n+/, '');\n if (comment) {\n const ic = stringifyComment.indentComment(commentString(comment), indent);\n lines.push(ic.trimStart()); // Avoid double indent on first line\n }\n}\n\nexports.stringifyCollection = stringifyCollection;\n","'use strict';\n\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar addPairToJSMap = require('./addPairToJSMap.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Pair = require('./Pair.js');\nvar Scalar = require('./Scalar.js');\n\nfunction findPair(items, key) {\n const k = identity.isScalar(key) ? key.value : key;\n for (const it of items) {\n if (identity.isPair(it)) {\n if (it.key === key || it.key === k)\n return it;\n if (identity.isScalar(it.key) && it.key.value === k)\n return it;\n }\n }\n return undefined;\n}\nclass YAMLMap extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:map';\n }\n constructor(schema) {\n super(identity.MAP, schema);\n this.items = [];\n }\n /**\n * A generic collection parsing method that can be extended\n * to other node classes that inherit from YAMLMap\n */\n static from(schema, obj, ctx) {\n const { keepUndefined, replacer } = ctx;\n const map = new this(schema);\n const add = (key, value) => {\n if (typeof replacer === 'function')\n value = replacer.call(obj, key, value);\n else if (Array.isArray(replacer) && !replacer.includes(key))\n return;\n if (value !== undefined || keepUndefined)\n map.items.push(Pair.createPair(key, value, ctx));\n };\n if (obj instanceof Map) {\n for (const [key, value] of obj)\n add(key, value);\n }\n else if (obj && typeof obj === 'object') {\n for (const key of Object.keys(obj))\n add(key, obj[key]);\n }\n if (typeof schema.sortMapEntries === 'function') {\n map.items.sort(schema.sortMapEntries);\n }\n return map;\n }\n /**\n * Adds a value to the collection.\n *\n * @param overwrite - If not set `true`, using a key that is already in the\n * collection will throw. Otherwise, overwrites the previous value.\n */\n add(pair, overwrite) {\n let _pair;\n if (identity.isPair(pair))\n _pair = pair;\n else if (!pair || typeof pair !== 'object' || !('key' in pair)) {\n // In TypeScript, this never happens.\n _pair = new Pair.Pair(pair, pair?.value);\n }\n else\n _pair = new Pair.Pair(pair.key, pair.value);\n const prev = findPair(this.items, _pair.key);\n const sortEntries = this.schema?.sortMapEntries;\n if (prev) {\n if (!overwrite)\n throw new Error(`Key ${_pair.key} already set`);\n // For scalars, keep the old node & its comments and anchors\n if (identity.isScalar(prev.value) && Scalar.isScalarValue(_pair.value))\n prev.value.value = _pair.value;\n else\n prev.value = _pair.value;\n }\n else if (sortEntries) {\n const i = this.items.findIndex(item => sortEntries(_pair, item) < 0);\n if (i === -1)\n this.items.push(_pair);\n else\n this.items.splice(i, 0, _pair);\n }\n else {\n this.items.push(_pair);\n }\n }\n delete(key) {\n const it = findPair(this.items, key);\n if (!it)\n return false;\n const del = this.items.splice(this.items.indexOf(it), 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const it = findPair(this.items, key);\n const node = it?.value;\n return (!keepScalar && identity.isScalar(node) ? node.value : node) ?? undefined;\n }\n has(key) {\n return !!findPair(this.items, key);\n }\n set(key, value) {\n this.add(new Pair.Pair(key, value), true);\n }\n /**\n * @param ctx - Conversion context, originally set in Document#toJS()\n * @param {Class} Type - If set, forces the returned collection type\n * @returns Instance of Type, Map, or Object\n */\n toJSON(_, ctx, Type) {\n const map = Type ? new Type() : ctx?.mapAsMap ? new Map() : {};\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const item of this.items)\n addPairToJSMap.addPairToJSMap(ctx, map, item);\n return map;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n for (const item of this.items) {\n if (!identity.isPair(item))\n throw new Error(`Map items must all be pairs; found ${JSON.stringify(item)} instead`);\n }\n if (!ctx.allNullValues && this.hasAllNullValues(false))\n ctx = Object.assign({}, ctx, { allNullValues: true });\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '',\n flowChars: { start: '{', end: '}' },\n itemIndent: ctx.indent || '',\n onChompKeep,\n onComment\n });\n }\n}\n\nexports.YAMLMap = YAMLMap;\nexports.findPair = findPair;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nconst map = {\n collection: 'map',\n default: true,\n nodeClass: YAMLMap.YAMLMap,\n tag: 'tag:yaml.org,2002:map',\n resolve(map, onError) {\n if (!identity.isMap(map))\n onError('Expected a mapping for this tag');\n return map;\n },\n createNode: (schema, obj, ctx) => YAMLMap.YAMLMap.from(schema, obj, ctx)\n};\n\nexports.map = map;\n","'use strict';\n\nvar createNode = require('../doc/createNode.js');\nvar stringifyCollection = require('../stringify/stringifyCollection.js');\nvar Collection = require('./Collection.js');\nvar identity = require('./identity.js');\nvar Scalar = require('./Scalar.js');\nvar toJS = require('./toJS.js');\n\nclass YAMLSeq extends Collection.Collection {\n static get tagName() {\n return 'tag:yaml.org,2002:seq';\n }\n constructor(schema) {\n super(identity.SEQ, schema);\n this.items = [];\n }\n add(value) {\n this.items.push(value);\n }\n /**\n * Removes a value from the collection.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n *\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return false;\n const del = this.items.splice(idx, 1);\n return del.length > 0;\n }\n get(key, keepScalar) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n return undefined;\n const it = this.items[idx];\n return !keepScalar && identity.isScalar(it) ? it.value : it;\n }\n /**\n * Checks if the collection includes a value with the key `key`.\n *\n * `key` must contain a representation of an integer for this to succeed.\n * It may be wrapped in a `Scalar`.\n */\n has(key) {\n const idx = asItemIndex(key);\n return typeof idx === 'number' && idx < this.items.length;\n }\n /**\n * Sets a value in this collection. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n *\n * If `key` does not contain a representation of an integer, this will throw.\n * It may be wrapped in a `Scalar`.\n */\n set(key, value) {\n const idx = asItemIndex(key);\n if (typeof idx !== 'number')\n throw new Error(`Expected a valid index, not ${key}.`);\n const prev = this.items[idx];\n if (identity.isScalar(prev) && Scalar.isScalarValue(value))\n prev.value = value;\n else\n this.items[idx] = value;\n }\n toJSON(_, ctx) {\n const seq = [];\n if (ctx?.onCreate)\n ctx.onCreate(seq);\n let i = 0;\n for (const item of this.items)\n seq.push(toJS.toJS(item, String(i++), ctx));\n return seq;\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n return stringifyCollection.stringifyCollection(this, ctx, {\n blockItemPrefix: '- ',\n flowChars: { start: '[', end: ']' },\n itemIndent: (ctx.indent || '') + ' ',\n onChompKeep,\n onComment\n });\n }\n static from(schema, obj, ctx) {\n const { replacer } = ctx;\n const seq = new this(schema);\n if (obj && Symbol.iterator in Object(obj)) {\n let i = 0;\n for (let it of obj) {\n if (typeof replacer === 'function') {\n const key = obj instanceof Set ? it : String(i++);\n it = replacer.call(obj, key, it);\n }\n seq.items.push(createNode.createNode(it, undefined, ctx));\n }\n }\n return seq;\n }\n}\nfunction asItemIndex(key) {\n let idx = identity.isScalar(key) ? key.value : key;\n if (idx && typeof idx === 'string')\n idx = Number(idx);\n return typeof idx === 'number' && Number.isInteger(idx) && idx >= 0\n ? idx\n : null;\n}\n\nexports.YAMLSeq = YAMLSeq;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nconst seq = {\n collection: 'seq',\n default: true,\n nodeClass: YAMLSeq.YAMLSeq,\n tag: 'tag:yaml.org,2002:seq',\n resolve(seq, onError) {\n if (!identity.isSeq(seq))\n onError('Expected a sequence for this tag');\n return seq;\n },\n createNode: (schema, obj, ctx) => YAMLSeq.YAMLSeq.from(schema, obj, ctx)\n};\n\nexports.seq = seq;\n","'use strict';\n\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst string = {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify(item, ctx, onComment, onChompKeep) {\n ctx = Object.assign({ actualString: true }, ctx);\n return stringifyString.stringifyString(item, ctx, onComment, onChompKeep);\n }\n};\n\nexports.string = string;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst nullTag = {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^(?:~|[Nn]ull|NULL)?$/,\n resolve: () => new Scalar.Scalar(null),\n stringify: ({ source }, ctx) => typeof source === 'string' && nullTag.test.test(source)\n ? source\n : ctx.options.nullStr\n};\n\nexports.nullTag = nullTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nconst boolTag = {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:[Tt]rue|TRUE|[Ff]alse|FALSE)$/,\n resolve: str => new Scalar.Scalar(str[0] === 't' || str[0] === 'T'),\n stringify({ source, value }, ctx) {\n if (source && boolTag.test.test(source)) {\n const sv = source[0] === 't' || source[0] === 'T';\n if (value === sv)\n return source;\n }\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n }\n};\n\nexports.boolTag = boolTag;\n","'use strict';\n\nfunction stringifyNumber({ format, minFractionDigits, tag, value }) {\n if (typeof value === 'bigint')\n return String(value);\n const num = typeof value === 'number' ? value : Number(value);\n if (!isFinite(num))\n return isNaN(num) ? '.nan' : num < 0 ? '-.inf' : '.inf';\n let n = Object.is(value, -0) ? '-0' : JSON.stringify(value);\n if (!format &&\n minFractionDigits &&\n (!tag || tag === 'tag:yaml.org,2002:float') &&\n /^\\d/.test(n)) {\n let i = n.indexOf('.');\n if (i < 0) {\n i = n.length;\n n += '.';\n }\n let d = minFractionDigits - (n.length - i - 1);\n while (d-- > 0)\n n += '0';\n }\n return n;\n}\n\nexports.stringifyNumber = stringifyNumber;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: str => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+(?:\\.[0-9]*)?)[eE][-+]?[0-9]+$/,\n resolve: str => parseFloat(str),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:\\.[0-9]+|[0-9]+\\.[0-9]*)$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str));\n const dot = str.indexOf('.');\n if (dot !== -1 && str[str.length - 1] === '0')\n node.minFractionDigits = str.length - dot - 1;\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nconst intResolve = (str, offset, radix, { intAsBigInt }) => (intAsBigInt ? BigInt(str) : parseInt(str.substring(offset), radix));\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value) && value >= 0)\n return prefix + value.toString(radix);\n return stringifyNumber.stringifyNumber(node);\n}\nconst intOct = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^0o[0-7]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 8, opt),\n stringify: node => intStringify(node, 8, '0o')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: value => intIdentify(value) && value >= 0,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^0x[0-9a-fA-F]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.boolTag,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar map = require('../common/map.js');\nvar seq = require('../common/seq.js');\n\nfunction intIdentify(value) {\n return typeof value === 'bigint' || Number.isInteger(value);\n}\nconst stringifyJSON = ({ value }) => JSON.stringify(value);\nconst jsonScalars = [\n {\n identify: value => typeof value === 'string',\n default: true,\n tag: 'tag:yaml.org,2002:str',\n resolve: str => str,\n stringify: stringifyJSON\n },\n {\n identify: value => value == null,\n createNode: () => new Scalar.Scalar(null),\n default: true,\n tag: 'tag:yaml.org,2002:null',\n test: /^null$/,\n resolve: () => null,\n stringify: stringifyJSON\n },\n {\n identify: value => typeof value === 'boolean',\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^true$|^false$/,\n resolve: str => str === 'true',\n stringify: stringifyJSON\n },\n {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^-?(?:0|[1-9][0-9]*)$/,\n resolve: (str, _onError, { intAsBigInt }) => intAsBigInt ? BigInt(str) : parseInt(str, 10),\n stringify: ({ value }) => intIdentify(value) ? value.toString() : JSON.stringify(value)\n },\n {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^-?(?:0|[1-9][0-9]*)(?:\\.[0-9]*)?(?:[eE][-+]?[0-9]+)?$/,\n resolve: str => parseFloat(str),\n stringify: stringifyJSON\n }\n];\nconst jsonError = {\n default: true,\n tag: '',\n test: /^/,\n resolve(str, onError) {\n onError(`Unresolved plain scalar ${JSON.stringify(str)}`);\n return str;\n }\n};\nconst schema = [map.map, seq.seq].concat(jsonScalars, jsonError);\n\nexports.schema = schema;\n","'use strict';\n\nvar node_buffer = require('buffer');\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyString = require('../../stringify/stringifyString.js');\n\nconst binary = {\n identify: value => value instanceof Uint8Array, // Buffer inherits from Uint8Array\n default: false,\n tag: 'tag:yaml.org,2002:binary',\n /**\n * Returns a Buffer in node and an Uint8Array in browsers\n *\n * To use the resulting buffer as an image, you'll want to do something like:\n *\n * const blob = new Blob([buffer], { type: 'image/jpeg' })\n * document.querySelector('#photo').src = URL.createObjectURL(blob)\n */\n resolve(src, onError) {\n if (typeof node_buffer.Buffer === 'function') {\n return node_buffer.Buffer.from(src, 'base64');\n }\n else if (typeof atob === 'function') {\n // On IE 11, atob() can't handle newlines\n const str = atob(src.replace(/[\\n\\r]/g, ''));\n const buffer = new Uint8Array(str.length);\n for (let i = 0; i < str.length; ++i)\n buffer[i] = str.charCodeAt(i);\n return buffer;\n }\n else {\n onError('This environment does not support reading binary tags; either Buffer or atob is required');\n return src;\n }\n },\n stringify({ comment, type, value }, ctx, onComment, onChompKeep) {\n if (!value)\n return '';\n const buf = value; // checked earlier by binary.identify()\n let str;\n if (typeof node_buffer.Buffer === 'function') {\n str =\n buf instanceof node_buffer.Buffer\n ? buf.toString('base64')\n : node_buffer.Buffer.from(buf.buffer).toString('base64');\n }\n else if (typeof btoa === 'function') {\n let s = '';\n for (let i = 0; i < buf.length; ++i)\n s += String.fromCharCode(buf[i]);\n str = btoa(s);\n }\n else {\n throw new Error('This environment does not support writing binary tags; either Buffer or btoa is required');\n }\n type ?? (type = Scalar.Scalar.BLOCK_LITERAL);\n if (type !== Scalar.Scalar.QUOTE_DOUBLE) {\n const lineWidth = Math.max(ctx.options.lineWidth - ctx.indent.length, ctx.options.minContentWidth);\n const n = Math.ceil(str.length / lineWidth);\n const lines = new Array(n);\n for (let i = 0, o = 0; i < n; ++i, o += lineWidth) {\n lines[i] = str.substr(o, lineWidth);\n }\n str = lines.join(type === Scalar.Scalar.BLOCK_LITERAL ? '\\n' : ' ');\n }\n return stringifyString.stringifyString({ comment, type, value: str }, ctx, onComment, onChompKeep);\n }\n};\n\nexports.binary = binary;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar Scalar = require('../../nodes/Scalar.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\n\nfunction resolvePairs(seq, onError) {\n if (identity.isSeq(seq)) {\n for (let i = 0; i < seq.items.length; ++i) {\n let item = seq.items[i];\n if (identity.isPair(item))\n continue;\n else if (identity.isMap(item)) {\n if (item.items.length > 1)\n onError('Each pair must have its own sequence indicator');\n const pair = item.items[0] || new Pair.Pair(new Scalar.Scalar(null));\n if (item.commentBefore)\n pair.key.commentBefore = pair.key.commentBefore\n ? `${item.commentBefore}\\n${pair.key.commentBefore}`\n : item.commentBefore;\n if (item.comment) {\n const cn = pair.value ?? pair.key;\n cn.comment = cn.comment\n ? `${item.comment}\\n${cn.comment}`\n : item.comment;\n }\n item = pair;\n }\n seq.items[i] = identity.isPair(item) ? item : new Pair.Pair(item);\n }\n }\n else\n onError('Expected a sequence for this tag');\n return seq;\n}\nfunction createPairs(schema, iterable, ctx) {\n const { replacer } = ctx;\n const pairs = new YAMLSeq.YAMLSeq(schema);\n pairs.tag = 'tag:yaml.org,2002:pairs';\n let i = 0;\n if (iterable && Symbol.iterator in Object(iterable))\n for (let it of iterable) {\n if (typeof replacer === 'function')\n it = replacer.call(iterable, String(i++), it);\n let key, value;\n if (Array.isArray(it)) {\n if (it.length === 2) {\n key = it[0];\n value = it[1];\n }\n else\n throw new TypeError(`Expected [key, value] tuple: ${it}`);\n }\n else if (it && it instanceof Object) {\n const keys = Object.keys(it);\n if (keys.length === 1) {\n key = keys[0];\n value = it[key];\n }\n else {\n throw new TypeError(`Expected tuple with one key, not ${keys.length} keys`);\n }\n }\n else {\n key = it;\n }\n pairs.items.push(Pair.createPair(key, value, ctx));\n }\n return pairs;\n}\nconst pairs = {\n collection: 'seq',\n default: false,\n tag: 'tag:yaml.org,2002:pairs',\n resolve: resolvePairs,\n createNode: createPairs\n};\n\nexports.createPairs = createPairs;\nexports.pairs = pairs;\nexports.resolvePairs = resolvePairs;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar toJS = require('../../nodes/toJS.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\nvar YAMLSeq = require('../../nodes/YAMLSeq.js');\nvar pairs = require('./pairs.js');\n\nclass YAMLOMap extends YAMLSeq.YAMLSeq {\n constructor() {\n super();\n this.add = YAMLMap.YAMLMap.prototype.add.bind(this);\n this.delete = YAMLMap.YAMLMap.prototype.delete.bind(this);\n this.get = YAMLMap.YAMLMap.prototype.get.bind(this);\n this.has = YAMLMap.YAMLMap.prototype.has.bind(this);\n this.set = YAMLMap.YAMLMap.prototype.set.bind(this);\n this.tag = YAMLOMap.tag;\n }\n /**\n * If `ctx` is given, the return type is actually `Map<unknown, unknown>`,\n * but TypeScript won't allow widening the signature of a child method.\n */\n toJSON(_, ctx) {\n if (!ctx)\n return super.toJSON(_);\n const map = new Map();\n if (ctx?.onCreate)\n ctx.onCreate(map);\n for (const pair of this.items) {\n let key, value;\n if (identity.isPair(pair)) {\n key = toJS.toJS(pair.key, '', ctx);\n value = toJS.toJS(pair.value, key, ctx);\n }\n else {\n key = toJS.toJS(pair, '', ctx);\n }\n if (map.has(key))\n throw new Error('Ordered maps must not include duplicate keys');\n map.set(key, value);\n }\n return map;\n }\n static from(schema, iterable, ctx) {\n const pairs$1 = pairs.createPairs(schema, iterable, ctx);\n const omap = new this();\n omap.items = pairs$1.items;\n return omap;\n }\n}\nYAMLOMap.tag = 'tag:yaml.org,2002:omap';\nconst omap = {\n collection: 'seq',\n identify: value => value instanceof Map,\n nodeClass: YAMLOMap,\n default: false,\n tag: 'tag:yaml.org,2002:omap',\n resolve(seq, onError) {\n const pairs$1 = pairs.resolvePairs(seq, onError);\n const seenKeys = [];\n for (const { key } of pairs$1.items) {\n if (identity.isScalar(key)) {\n if (seenKeys.includes(key.value)) {\n onError(`Ordered maps must not include duplicate keys: ${key.value}`);\n }\n else {\n seenKeys.push(key.value);\n }\n }\n }\n return Object.assign(new YAMLOMap(), pairs$1);\n },\n createNode: (schema, iterable, ctx) => YAMLOMap.from(schema, iterable, ctx)\n};\n\nexports.YAMLOMap = YAMLOMap;\nexports.omap = omap;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\n\nfunction boolStringify({ value, source }, ctx) {\n const boolObj = value ? trueTag : falseTag;\n if (source && boolObj.test.test(source))\n return source;\n return value ? ctx.options.trueStr : ctx.options.falseStr;\n}\nconst trueTag = {\n identify: value => value === true,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:Y|y|[Yy]es|YES|[Tt]rue|TRUE|[Oo]n|ON)$/,\n resolve: () => new Scalar.Scalar(true),\n stringify: boolStringify\n};\nconst falseTag = {\n identify: value => value === false,\n default: true,\n tag: 'tag:yaml.org,2002:bool',\n test: /^(?:N|n|[Nn]o|NO|[Ff]alse|FALSE|[Oo]ff|OFF)$/,\n resolve: () => new Scalar.Scalar(false),\n stringify: boolStringify\n};\n\nexports.falseTag = falseTag;\nexports.trueTag = trueTag;\n","'use strict';\n\nvar Scalar = require('../../nodes/Scalar.js');\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst floatNaN = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^(?:[-+]?\\.(?:inf|Inf|INF)|\\.nan|\\.NaN|\\.NAN)$/,\n resolve: (str) => str.slice(-3).toLowerCase() === 'nan'\n ? NaN\n : str[0] === '-'\n ? Number.NEGATIVE_INFINITY\n : Number.POSITIVE_INFINITY,\n stringify: stringifyNumber.stringifyNumber\n};\nconst floatExp = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'EXP',\n test: /^[-+]?(?:[0-9][0-9_]*)?(?:\\.[0-9_]*)?[eE][-+]?[0-9]+$/,\n resolve: (str) => parseFloat(str.replace(/_/g, '')),\n stringify(node) {\n const num = Number(node.value);\n return isFinite(num) ? num.toExponential() : stringifyNumber.stringifyNumber(node);\n }\n};\nconst float = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n test: /^[-+]?(?:[0-9][0-9_]*)?\\.[0-9_]*$/,\n resolve(str) {\n const node = new Scalar.Scalar(parseFloat(str.replace(/_/g, '')));\n const dot = str.indexOf('.');\n if (dot !== -1) {\n const f = str.substring(dot + 1).replace(/_/g, '');\n if (f[f.length - 1] === '0')\n node.minFractionDigits = f.length;\n }\n return node;\n },\n stringify: stringifyNumber.stringifyNumber\n};\n\nexports.float = float;\nexports.floatExp = floatExp;\nexports.floatNaN = floatNaN;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\nconst intIdentify = (value) => typeof value === 'bigint' || Number.isInteger(value);\nfunction intResolve(str, offset, radix, { intAsBigInt }) {\n const sign = str[0];\n if (sign === '-' || sign === '+')\n offset += 1;\n str = str.substring(offset).replace(/_/g, '');\n if (intAsBigInt) {\n switch (radix) {\n case 2:\n str = `0b${str}`;\n break;\n case 8:\n str = `0o${str}`;\n break;\n case 16:\n str = `0x${str}`;\n break;\n }\n const n = BigInt(str);\n return sign === '-' ? BigInt(-1) * n : n;\n }\n const n = parseInt(str, radix);\n return sign === '-' ? -1 * n : n;\n}\nfunction intStringify(node, radix, prefix) {\n const { value } = node;\n if (intIdentify(value)) {\n const str = value.toString(radix);\n return value < 0 ? '-' + prefix + str.substr(1) : prefix + str;\n }\n return stringifyNumber.stringifyNumber(node);\n}\nconst intBin = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'BIN',\n test: /^[-+]?0b[0-1_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 2, opt),\n stringify: node => intStringify(node, 2, '0b')\n};\nconst intOct = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'OCT',\n test: /^[-+]?0[0-7_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 1, 8, opt),\n stringify: node => intStringify(node, 8, '0')\n};\nconst int = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n test: /^[-+]?[0-9][0-9_]*$/,\n resolve: (str, _onError, opt) => intResolve(str, 0, 10, opt),\n stringify: stringifyNumber.stringifyNumber\n};\nconst intHex = {\n identify: intIdentify,\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'HEX',\n test: /^[-+]?0x[0-9a-fA-F_]+$/,\n resolve: (str, _onError, opt) => intResolve(str, 2, 16, opt),\n stringify: node => intStringify(node, 16, '0x')\n};\n\nexports.int = int;\nexports.intBin = intBin;\nexports.intHex = intHex;\nexports.intOct = intOct;\n","'use strict';\n\nvar identity = require('../../nodes/identity.js');\nvar Pair = require('../../nodes/Pair.js');\nvar YAMLMap = require('../../nodes/YAMLMap.js');\n\nclass YAMLSet extends YAMLMap.YAMLMap {\n constructor(schema) {\n super(schema);\n this.tag = YAMLSet.tag;\n }\n add(key) {\n let pair;\n if (identity.isPair(key))\n pair = key;\n else if (key &&\n typeof key === 'object' &&\n 'key' in key &&\n 'value' in key &&\n key.value === null)\n pair = new Pair.Pair(key.key, null);\n else\n pair = new Pair.Pair(key, null);\n const prev = YAMLMap.findPair(this.items, pair.key);\n if (!prev)\n this.items.push(pair);\n }\n /**\n * If `keepPair` is `true`, returns the Pair matching `key`.\n * Otherwise, returns the value of that Pair's key.\n */\n get(key, keepPair) {\n const pair = YAMLMap.findPair(this.items, key);\n return !keepPair && identity.isPair(pair)\n ? identity.isScalar(pair.key)\n ? pair.key.value\n : pair.key\n : pair;\n }\n set(key, value) {\n if (typeof value !== 'boolean')\n throw new Error(`Expected boolean value for set(key, value) in a YAML set, not ${typeof value}`);\n const prev = YAMLMap.findPair(this.items, key);\n if (prev && !value) {\n this.items.splice(this.items.indexOf(prev), 1);\n }\n else if (!prev && value) {\n this.items.push(new Pair.Pair(key));\n }\n }\n toJSON(_, ctx) {\n return super.toJSON(_, ctx, Set);\n }\n toString(ctx, onComment, onChompKeep) {\n if (!ctx)\n return JSON.stringify(this);\n if (this.hasAllNullValues(true))\n return super.toString(Object.assign({}, ctx, { allNullValues: true }), onComment, onChompKeep);\n else\n throw new Error('Set items must all have null values');\n }\n static from(schema, iterable, ctx) {\n const { replacer } = ctx;\n const set = new this(schema);\n if (iterable && Symbol.iterator in Object(iterable))\n for (let value of iterable) {\n if (typeof replacer === 'function')\n value = replacer.call(iterable, value, value);\n set.items.push(Pair.createPair(value, null, ctx));\n }\n return set;\n }\n}\nYAMLSet.tag = 'tag:yaml.org,2002:set';\nconst set = {\n collection: 'map',\n identify: value => value instanceof Set,\n nodeClass: YAMLSet,\n default: false,\n tag: 'tag:yaml.org,2002:set',\n createNode: (schema, iterable, ctx) => YAMLSet.from(schema, iterable, ctx),\n resolve(map, onError) {\n if (identity.isMap(map)) {\n if (map.hasAllNullValues(true))\n return Object.assign(new YAMLSet(), map);\n else\n onError('Set items must all have null values');\n }\n else\n onError('Expected a mapping for this tag');\n return map;\n }\n};\n\nexports.YAMLSet = YAMLSet;\nexports.set = set;\n","'use strict';\n\nvar stringifyNumber = require('../../stringify/stringifyNumber.js');\n\n/** Internal types handle bigint as number, because TS can't figure it out. */\nfunction parseSexagesimal(str, asBigInt) {\n const sign = str[0];\n const parts = sign === '-' || sign === '+' ? str.substring(1) : str;\n const num = (n) => asBigInt ? BigInt(n) : Number(n);\n const res = parts\n .replace(/_/g, '')\n .split(':')\n .reduce((res, p) => res * num(60) + num(p), num(0));\n return (sign === '-' ? num(-1) * res : res);\n}\n/**\n * hhhh:mm:ss.sss\n *\n * Internal types handle bigint as number, because TS can't figure it out.\n */\nfunction stringifySexagesimal(node) {\n let { value } = node;\n let num = (n) => n;\n if (typeof value === 'bigint')\n num = n => BigInt(n);\n else if (isNaN(value) || !isFinite(value))\n return stringifyNumber.stringifyNumber(node);\n let sign = '';\n if (value < 0) {\n sign = '-';\n value *= num(-1);\n }\n const _60 = num(60);\n const parts = [value % _60]; // seconds, including ms\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n }\n else {\n value = (value - parts[0]) / _60;\n parts.unshift(value % _60); // minutes\n if (value >= 60) {\n value = (value - parts[0]) / _60;\n parts.unshift(value); // hours\n }\n }\n return (sign +\n parts\n .map(n => String(n).padStart(2, '0'))\n .join(':')\n .replace(/000000\\d*$/, '') // % 60 may introduce error\n );\n}\nconst intTime = {\n identify: value => typeof value === 'bigint' || Number.isInteger(value),\n default: true,\n tag: 'tag:yaml.org,2002:int',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+$/,\n resolve: (str, _onError, { intAsBigInt }) => parseSexagesimal(str, intAsBigInt),\n stringify: stringifySexagesimal\n};\nconst floatTime = {\n identify: value => typeof value === 'number',\n default: true,\n tag: 'tag:yaml.org,2002:float',\n format: 'TIME',\n test: /^[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*$/,\n resolve: str => parseSexagesimal(str, false),\n stringify: stringifySexagesimal\n};\nconst timestamp = {\n identify: value => value instanceof Date,\n default: true,\n tag: 'tag:yaml.org,2002:timestamp',\n // If the time zone is omitted, the timestamp is assumed to be specified in UTC. The time part\n // may be omitted altogether, resulting in a date format. In such a case, the time part is\n // assumed to be 00:00:00Z (start of day, UTC).\n test: RegExp('^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})' + // YYYY-Mm-Dd\n '(?:' + // time is optional\n '(?:t|T|[ \\\\t]+)' + // t | T | whitespace\n '([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2}(\\\\.[0-9]+)?)' + // Hh:Mm:Ss(.ss)?\n '(?:[ \\\\t]*(Z|[-+][012]?[0-9](?::[0-9]{2})?))?' + // Z | +5 | -03:30\n ')?$'),\n resolve(str) {\n const match = str.match(timestamp.test);\n if (!match)\n throw new Error('!!timestamp expects a date, starting with yyyy-mm-dd');\n const [, year, month, day, hour, minute, second] = match.map(Number);\n const millisec = match[7] ? Number((match[7] + '00').substr(1, 3)) : 0;\n let date = Date.UTC(year, month - 1, day, hour || 0, minute || 0, second || 0, millisec);\n const tz = match[8];\n if (tz && tz !== 'Z') {\n let d = parseSexagesimal(tz, false);\n if (Math.abs(d) < 30)\n d *= 60;\n date -= 60000 * d;\n }\n return new Date(date);\n },\n stringify: ({ value }) => value?.toISOString().replace(/(T00:00:00)?\\.000Z$/, '') ?? ''\n};\n\nexports.floatTime = floatTime;\nexports.intTime = intTime;\nexports.timestamp = timestamp;\n","'use strict';\n\nvar map = require('../common/map.js');\nvar _null = require('../common/null.js');\nvar seq = require('../common/seq.js');\nvar string = require('../common/string.js');\nvar binary = require('./binary.js');\nvar bool = require('./bool.js');\nvar float = require('./float.js');\nvar int = require('./int.js');\nvar merge = require('./merge.js');\nvar omap = require('./omap.js');\nvar pairs = require('./pairs.js');\nvar set = require('./set.js');\nvar timestamp = require('./timestamp.js');\n\nconst schema = [\n map.map,\n seq.seq,\n string.string,\n _null.nullTag,\n bool.trueTag,\n bool.falseTag,\n int.intBin,\n int.intOct,\n int.int,\n int.intHex,\n float.floatNaN,\n float.floatExp,\n float.float,\n binary.binary,\n merge.merge,\n omap.omap,\n pairs.pairs,\n set.set,\n timestamp.intTime,\n timestamp.floatTime,\n timestamp.timestamp\n];\n\nexports.schema = schema;\n","'use strict';\n\nvar map = require('./common/map.js');\nvar _null = require('./common/null.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar bool = require('./core/bool.js');\nvar float = require('./core/float.js');\nvar int = require('./core/int.js');\nvar schema = require('./core/schema.js');\nvar schema$1 = require('./json/schema.js');\nvar binary = require('./yaml-1.1/binary.js');\nvar merge = require('./yaml-1.1/merge.js');\nvar omap = require('./yaml-1.1/omap.js');\nvar pairs = require('./yaml-1.1/pairs.js');\nvar schema$2 = require('./yaml-1.1/schema.js');\nvar set = require('./yaml-1.1/set.js');\nvar timestamp = require('./yaml-1.1/timestamp.js');\n\nconst schemas = new Map([\n ['core', schema.schema],\n ['failsafe', [map.map, seq.seq, string.string]],\n ['json', schema$1.schema],\n ['yaml11', schema$2.schema],\n ['yaml-1.1', schema$2.schema]\n]);\nconst tagsByName = {\n binary: binary.binary,\n bool: bool.boolTag,\n float: float.float,\n floatExp: float.floatExp,\n floatNaN: float.floatNaN,\n floatTime: timestamp.floatTime,\n int: int.int,\n intHex: int.intHex,\n intOct: int.intOct,\n intTime: timestamp.intTime,\n map: map.map,\n merge: merge.merge,\n null: _null.nullTag,\n omap: omap.omap,\n pairs: pairs.pairs,\n seq: seq.seq,\n set: set.set,\n timestamp: timestamp.timestamp\n};\nconst coreKnownTags = {\n 'tag:yaml.org,2002:binary': binary.binary,\n 'tag:yaml.org,2002:merge': merge.merge,\n 'tag:yaml.org,2002:omap': omap.omap,\n 'tag:yaml.org,2002:pairs': pairs.pairs,\n 'tag:yaml.org,2002:set': set.set,\n 'tag:yaml.org,2002:timestamp': timestamp.timestamp\n};\nfunction getTags(customTags, schemaName, addMergeTag) {\n const schemaTags = schemas.get(schemaName);\n if (schemaTags && !customTags) {\n return addMergeTag && !schemaTags.includes(merge.merge)\n ? schemaTags.concat(merge.merge)\n : schemaTags.slice();\n }\n let tags = schemaTags;\n if (!tags) {\n if (Array.isArray(customTags))\n tags = [];\n else {\n const keys = Array.from(schemas.keys())\n .filter(key => key !== 'yaml11')\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown schema \"${schemaName}\"; use one of ${keys} or define customTags array`);\n }\n }\n if (Array.isArray(customTags)) {\n for (const tag of customTags)\n tags = tags.concat(tag);\n }\n else if (typeof customTags === 'function') {\n tags = customTags(tags.slice());\n }\n if (addMergeTag)\n tags = tags.concat(merge.merge);\n return tags.reduce((tags, tag) => {\n const tagObj = typeof tag === 'string' ? tagsByName[tag] : tag;\n if (!tagObj) {\n const tagName = JSON.stringify(tag);\n const keys = Object.keys(tagsByName)\n .map(key => JSON.stringify(key))\n .join(', ');\n throw new Error(`Unknown custom tag ${tagName}; use one of ${keys}`);\n }\n if (!tags.includes(tagObj))\n tags.push(tagObj);\n return tags;\n }, []);\n}\n\nexports.coreKnownTags = coreKnownTags;\nexports.getTags = getTags;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar map = require('./common/map.js');\nvar seq = require('./common/seq.js');\nvar string = require('./common/string.js');\nvar tags = require('./tags.js');\n\nconst sortMapEntriesByKey = (a, b) => a.key < b.key ? -1 : a.key > b.key ? 1 : 0;\nclass Schema {\n constructor({ compat, customTags, merge, resolveKnownTags, schema, sortMapEntries, toStringDefaults }) {\n this.compat = Array.isArray(compat)\n ? tags.getTags(compat, 'compat')\n : compat\n ? tags.getTags(null, compat)\n : null;\n this.name = (typeof schema === 'string' && schema) || 'core';\n this.knownTags = resolveKnownTags ? tags.coreKnownTags : {};\n this.tags = tags.getTags(customTags, this.name, merge);\n this.toStringOptions = toStringDefaults ?? null;\n Object.defineProperty(this, identity.MAP, { value: map.map });\n Object.defineProperty(this, identity.SCALAR, { value: string.string });\n Object.defineProperty(this, identity.SEQ, { value: seq.seq });\n // Used by createMap()\n this.sortMapEntries =\n typeof sortMapEntries === 'function'\n ? sortMapEntries\n : sortMapEntries === true\n ? sortMapEntriesByKey\n : null;\n }\n clone() {\n const copy = Object.create(Schema.prototype, Object.getOwnPropertyDescriptors(this));\n copy.tags = this.tags.slice();\n return copy;\n }\n}\n\nexports.Schema = Schema;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar stringify = require('./stringify.js');\nvar stringifyComment = require('./stringifyComment.js');\n\nfunction stringifyDocument(doc, options) {\n const lines = [];\n let hasDirectives = options.directives === true;\n if (options.directives !== false && doc.directives) {\n const dir = doc.directives.toString(doc);\n if (dir) {\n lines.push(dir);\n hasDirectives = true;\n }\n else if (doc.directives.docStart)\n hasDirectives = true;\n }\n if (hasDirectives)\n lines.push('---');\n const ctx = stringify.createStringifyContext(doc, options);\n const { commentString } = ctx.options;\n if (doc.commentBefore) {\n if (lines.length !== 1)\n lines.unshift('');\n const cs = commentString(doc.commentBefore);\n lines.unshift(stringifyComment.indentComment(cs, ''));\n }\n let chompKeep = false;\n let contentComment = null;\n if (doc.contents) {\n if (identity.isNode(doc.contents)) {\n if (doc.contents.spaceBefore && hasDirectives)\n lines.push('');\n if (doc.contents.commentBefore) {\n const cs = commentString(doc.contents.commentBefore);\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n // top-level block scalars need to be indented if followed by a comment\n ctx.forceBlockIndent = !!doc.comment;\n contentComment = doc.contents.comment;\n }\n const onChompKeep = contentComment ? undefined : () => (chompKeep = true);\n let body = stringify.stringify(doc.contents, ctx, () => (contentComment = null), onChompKeep);\n if (contentComment)\n body += stringifyComment.lineComment(body, '', commentString(contentComment));\n if ((body[0] === '|' || body[0] === '>') &&\n lines[lines.length - 1] === '---') {\n // Top-level block scalars with a preceding doc marker ought to use the\n // same line for their header.\n lines[lines.length - 1] = `--- ${body}`;\n }\n else\n lines.push(body);\n }\n else {\n lines.push(stringify.stringify(doc.contents, ctx));\n }\n if (doc.directives?.docEnd) {\n if (doc.comment) {\n const cs = commentString(doc.comment);\n if (cs.includes('\\n')) {\n lines.push('...');\n lines.push(stringifyComment.indentComment(cs, ''));\n }\n else {\n lines.push(`... ${cs}`);\n }\n }\n else {\n lines.push('...');\n }\n }\n else {\n let dc = doc.comment;\n if (dc && chompKeep)\n dc = dc.replace(/^\\n+/, '');\n if (dc) {\n if ((!chompKeep || contentComment) && lines[lines.length - 1] !== '')\n lines.push('');\n lines.push(stringifyComment.indentComment(commentString(dc), ''));\n }\n }\n return lines.join('\\n') + '\\n';\n}\n\nexports.stringifyDocument = stringifyDocument;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar Collection = require('../nodes/Collection.js');\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar toJS = require('../nodes/toJS.js');\nvar Schema = require('../schema/Schema.js');\nvar stringifyDocument = require('../stringify/stringifyDocument.js');\nvar anchors = require('./anchors.js');\nvar applyReviver = require('./applyReviver.js');\nvar createNode = require('./createNode.js');\nvar directives = require('./directives.js');\n\nclass Document {\n constructor(value, replacer, options) {\n /** A comment before this Document */\n this.commentBefore = null;\n /** A comment immediately after this Document */\n this.comment = null;\n /** Errors encountered during parsing. */\n this.errors = [];\n /** Warnings encountered during parsing. */\n this.warnings = [];\n Object.defineProperty(this, identity.NODE_TYPE, { value: identity.DOC });\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const opt = Object.assign({\n intAsBigInt: false,\n keepSourceTokens: false,\n logLevel: 'warn',\n prettyErrors: true,\n strict: true,\n stringKeys: false,\n uniqueKeys: true,\n version: '1.2'\n }, options);\n this.options = opt;\n let { version } = opt;\n if (options?._directives) {\n this.directives = options._directives.atDocument();\n if (this.directives.yaml.explicit)\n version = this.directives.yaml.version;\n }\n else\n this.directives = new directives.Directives({ version });\n this.setSchema(version, options);\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents =\n value === undefined ? null : this.createNode(value, _replacer, options);\n }\n /**\n * Create a deep copy of this Document and its contents.\n *\n * Custom Node values that inherit from `Object` still refer to their original instances.\n */\n clone() {\n const copy = Object.create(Document.prototype, {\n [identity.NODE_TYPE]: { value: identity.DOC }\n });\n copy.commentBefore = this.commentBefore;\n copy.comment = this.comment;\n copy.errors = this.errors.slice();\n copy.warnings = this.warnings.slice();\n copy.options = Object.assign({}, this.options);\n if (this.directives)\n copy.directives = this.directives.clone();\n copy.schema = this.schema.clone();\n // @ts-expect-error We can't really know that this matches Contents.\n copy.contents = identity.isNode(this.contents)\n ? this.contents.clone(copy.schema)\n : this.contents;\n if (this.range)\n copy.range = this.range.slice();\n return copy;\n }\n /** Adds a value to the document. */\n add(value) {\n if (assertCollection(this.contents))\n this.contents.add(value);\n }\n /** Adds a value to the document. */\n addIn(path, value) {\n if (assertCollection(this.contents))\n this.contents.addIn(path, value);\n }\n /**\n * Create a new `Alias` node, ensuring that the target `node` has the required anchor.\n *\n * If `node` already has an anchor, `name` is ignored.\n * Otherwise, the `node.anchor` value will be set to `name`,\n * or if an anchor with that name is already present in the document,\n * `name` will be used as a prefix for a new unique anchor.\n * If `name` is undefined, the generated anchor will use 'a' as a prefix.\n */\n createAlias(node, name) {\n if (!node.anchor) {\n const prev = anchors.anchorNames(this);\n node.anchor =\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n !name || prev.has(name) ? anchors.findNewAnchor(name || 'a', prev) : name;\n }\n return new Alias.Alias(node.anchor);\n }\n createNode(value, replacer, options) {\n let _replacer = undefined;\n if (typeof replacer === 'function') {\n value = replacer.call({ '': value }, '', value);\n _replacer = replacer;\n }\n else if (Array.isArray(replacer)) {\n const keyToStr = (v) => typeof v === 'number' || v instanceof String || v instanceof Number;\n const asStr = replacer.filter(keyToStr).map(String);\n if (asStr.length > 0)\n replacer = replacer.concat(asStr);\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n replacer = undefined;\n }\n const { aliasDuplicateObjects, anchorPrefix, flow, keepUndefined, onTagObj, tag } = options ?? {};\n const { onAnchor, setAnchors, sourceObjects } = anchors.createNodeAnchors(this, \n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n anchorPrefix || 'a');\n const ctx = {\n aliasDuplicateObjects: aliasDuplicateObjects ?? true,\n keepUndefined: keepUndefined ?? false,\n onAnchor,\n onTagObj,\n replacer: _replacer,\n schema: this.schema,\n sourceObjects\n };\n const node = createNode.createNode(value, tag, ctx);\n if (flow && identity.isCollection(node))\n node.flow = true;\n setAnchors();\n return node;\n }\n /**\n * Convert a key and a value into a `Pair` using the current schema,\n * recursively wrapping all values as `Scalar` or `Collection` nodes.\n */\n createPair(key, value, options = {}) {\n const k = this.createNode(key, null, options);\n const v = this.createNode(value, null, options);\n return new Pair.Pair(k, v);\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n delete(key) {\n return assertCollection(this.contents) ? this.contents.delete(key) : false;\n }\n /**\n * Removes a value from the document.\n * @returns `true` if the item was found and removed.\n */\n deleteIn(path) {\n if (Collection.isEmptyPath(path)) {\n if (this.contents == null)\n return false;\n // @ts-expect-error Presumed impossible if Strict extends false\n this.contents = null;\n return true;\n }\n return assertCollection(this.contents)\n ? this.contents.deleteIn(path)\n : false;\n }\n /**\n * Returns item at `key`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n get(key, keepScalar) {\n return identity.isCollection(this.contents)\n ? this.contents.get(key, keepScalar)\n : undefined;\n }\n /**\n * Returns item at `path`, or `undefined` if not found. By default unwraps\n * scalar values from their surrounding node; to disable set `keepScalar` to\n * `true` (collections are always returned intact).\n */\n getIn(path, keepScalar) {\n if (Collection.isEmptyPath(path))\n return !keepScalar && identity.isScalar(this.contents)\n ? this.contents.value\n : this.contents;\n return identity.isCollection(this.contents)\n ? this.contents.getIn(path, keepScalar)\n : undefined;\n }\n /**\n * Checks if the document includes a value with the key `key`.\n */\n has(key) {\n return identity.isCollection(this.contents) ? this.contents.has(key) : false;\n }\n /**\n * Checks if the document includes a value at `path`.\n */\n hasIn(path) {\n if (Collection.isEmptyPath(path))\n return this.contents !== undefined;\n return identity.isCollection(this.contents) ? this.contents.hasIn(path) : false;\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n set(key, value) {\n if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, [key], value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.set(key, value);\n }\n }\n /**\n * Sets a value in this document. For `!!set`, `value` needs to be a\n * boolean to add/remove the item from the set.\n */\n setIn(path, value) {\n if (Collection.isEmptyPath(path)) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = value;\n }\n else if (this.contents == null) {\n // @ts-expect-error We can't really know that this matches Contents.\n this.contents = Collection.collectionFromPath(this.schema, Array.from(path), value);\n }\n else if (assertCollection(this.contents)) {\n this.contents.setIn(path, value);\n }\n }\n /**\n * Change the YAML version and schema used by the document.\n * A `null` version disables support for directives, explicit tags, anchors, and aliases.\n * It also requires the `schema` option to be given as a `Schema` instance value.\n *\n * Overrides all previously set schema options.\n */\n setSchema(version, options = {}) {\n if (typeof version === 'number')\n version = String(version);\n let opt;\n switch (version) {\n case '1.1':\n if (this.directives)\n this.directives.yaml.version = '1.1';\n else\n this.directives = new directives.Directives({ version: '1.1' });\n opt = { resolveKnownTags: false, schema: 'yaml-1.1' };\n break;\n case '1.2':\n case 'next':\n if (this.directives)\n this.directives.yaml.version = version;\n else\n this.directives = new directives.Directives({ version });\n opt = { resolveKnownTags: true, schema: 'core' };\n break;\n case null:\n if (this.directives)\n delete this.directives;\n opt = null;\n break;\n default: {\n const sv = JSON.stringify(version);\n throw new Error(`Expected '1.1', '1.2' or null as first argument, but found: ${sv}`);\n }\n }\n // Not using `instanceof Schema` to allow for duck typing\n if (options.schema instanceof Object)\n this.schema = options.schema;\n else if (opt)\n this.schema = new Schema.Schema(Object.assign(opt, options));\n else\n throw new Error(`With a null YAML version, the { schema: Schema } option is required`);\n }\n // json & jsonArg are only used from toJSON()\n toJS({ json, jsonArg, mapAsMap, maxAliasCount, onAnchor, reviver } = {}) {\n const ctx = {\n anchors: new Map(),\n doc: this,\n keep: !json,\n mapAsMap: mapAsMap === true,\n mapKeyWarned: false,\n maxAliasCount: typeof maxAliasCount === 'number' ? maxAliasCount : 100\n };\n const res = toJS.toJS(this.contents, jsonArg ?? '', ctx);\n if (typeof onAnchor === 'function')\n for (const { count, res } of ctx.anchors.values())\n onAnchor(res, count);\n return typeof reviver === 'function'\n ? applyReviver.applyReviver(reviver, { '': res }, '', res)\n : res;\n }\n /**\n * A JSON representation of the document `contents`.\n *\n * @param jsonArg Used by `JSON.stringify` to indicate the array index or\n * property name.\n */\n toJSON(jsonArg, onAnchor) {\n return this.toJS({ json: true, jsonArg, mapAsMap: false, onAnchor });\n }\n /** A YAML representation of the document. */\n toString(options = {}) {\n if (this.errors.length > 0)\n throw new Error('Document with errors cannot be stringified');\n if ('indent' in options &&\n (!Number.isInteger(options.indent) || Number(options.indent) <= 0)) {\n const s = JSON.stringify(options.indent);\n throw new Error(`\"indent\" option must be a positive integer, not ${s}`);\n }\n return stringifyDocument.stringifyDocument(this, options);\n }\n}\nfunction assertCollection(contents) {\n if (identity.isCollection(contents))\n return true;\n throw new Error('Expected a YAML collection as document contents');\n}\n\nexports.Document = Document;\n","'use strict';\n\nclass YAMLError extends Error {\n constructor(name, pos, code, message) {\n super();\n this.name = name;\n this.code = code;\n this.message = message;\n this.pos = pos;\n }\n}\nclass YAMLParseError extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLParseError', pos, code, message);\n }\n}\nclass YAMLWarning extends YAMLError {\n constructor(pos, code, message) {\n super('YAMLWarning', pos, code, message);\n }\n}\nconst prettifyError = (src, lc) => (error) => {\n if (error.pos[0] === -1)\n return;\n error.linePos = error.pos.map(pos => lc.linePos(pos));\n const { line, col } = error.linePos[0];\n error.message += ` at line ${line}, column ${col}`;\n let ci = col - 1;\n let lineStr = src\n .substring(lc.lineStarts[line - 1], lc.lineStarts[line])\n .replace(/[\\n\\r]+$/, '');\n // Trim to max 80 chars, keeping col position near the middle\n if (ci >= 60 && lineStr.length > 80) {\n const trimStart = Math.min(ci - 39, lineStr.length - 79);\n lineStr = '…' + lineStr.substring(trimStart);\n ci -= trimStart - 1;\n }\n if (lineStr.length > 80)\n lineStr = lineStr.substring(0, 79) + '…';\n // Include previous line in context if pointing at line start\n if (line > 1 && /^ *$/.test(lineStr.substring(0, ci))) {\n // Regexp won't match if start is trimmed\n let prev = src.substring(lc.lineStarts[line - 2], lc.lineStarts[line - 1]);\n if (prev.length > 80)\n prev = prev.substring(0, 79) + '…\\n';\n lineStr = prev + lineStr;\n }\n if (/[^ ]/.test(lineStr)) {\n let count = 1;\n const end = error.linePos[1];\n if (end?.line === line && end.col > col) {\n count = Math.max(1, Math.min(end.col - col, 80 - ci));\n }\n const pointer = ' '.repeat(ci) + '^'.repeat(count);\n error.message += `:\\n\\n${lineStr}\\n${pointer}\\n`;\n }\n};\n\nexports.YAMLError = YAMLError;\nexports.YAMLParseError = YAMLParseError;\nexports.YAMLWarning = YAMLWarning;\nexports.prettifyError = prettifyError;\n","'use strict';\n\nfunction resolveProps(tokens, { flow, indicator, next, offset, onError, parentIndent, startOnNewline }) {\n let spaceBefore = false;\n let atNewline = startOnNewline;\n let hasSpace = startOnNewline;\n let comment = '';\n let commentSep = '';\n let hasNewline = false;\n let reqSpace = false;\n let tab = null;\n let anchor = null;\n let tag = null;\n let newlineAfterProp = null;\n let comma = null;\n let found = null;\n let start = null;\n for (const token of tokens) {\n if (reqSpace) {\n if (token.type !== 'space' &&\n token.type !== 'newline' &&\n token.type !== 'comma')\n onError(token.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n reqSpace = false;\n }\n if (tab) {\n if (atNewline && token.type !== 'comment' && token.type !== 'newline') {\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n }\n tab = null;\n }\n switch (token.type) {\n case 'space':\n // At the doc level, tabs at line start may be parsed\n // as leading white space rather than indentation.\n // In a flow collection, only the parser handles indent.\n if (!flow &&\n (indicator !== 'doc-start' || next?.type !== 'flow-collection') &&\n token.source.includes('\\t')) {\n tab = token;\n }\n hasSpace = true;\n break;\n case 'comment': {\n if (!hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = token.source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += commentSep + cb;\n commentSep = '';\n atNewline = false;\n break;\n }\n case 'newline':\n if (atNewline) {\n if (comment)\n comment += token.source;\n else if (!found || indicator !== 'seq-item-ind')\n spaceBefore = true;\n }\n else\n commentSep += token.source;\n atNewline = true;\n hasNewline = true;\n if (anchor || tag)\n newlineAfterProp = token;\n hasSpace = true;\n break;\n case 'anchor':\n if (anchor)\n onError(token, 'MULTIPLE_ANCHORS', 'A node can have at most one anchor');\n if (token.source.endsWith(':'))\n onError(token.offset + token.source.length - 1, 'BAD_ALIAS', 'Anchor ending in : is ambiguous', true);\n anchor = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n case 'tag': {\n if (tag)\n onError(token, 'MULTIPLE_TAGS', 'A node can have at most one tag');\n tag = token;\n start ?? (start = token.offset);\n atNewline = false;\n hasSpace = false;\n reqSpace = true;\n break;\n }\n case indicator:\n // Could here handle preceding comments differently\n if (anchor || tag)\n onError(token, 'BAD_PROP_ORDER', `Anchors and tags must be after the ${token.source} indicator`);\n if (found)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.source} in ${flow ?? 'collection'}`);\n found = token;\n atNewline =\n indicator === 'seq-item-ind' || indicator === 'explicit-key-ind';\n hasSpace = false;\n break;\n case 'comma':\n if (flow) {\n if (comma)\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected , in ${flow}`);\n comma = token;\n atNewline = false;\n hasSpace = false;\n break;\n }\n // else fallthrough\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${token.type} token`);\n atNewline = false;\n hasSpace = false;\n }\n }\n const last = tokens[tokens.length - 1];\n const end = last ? last.offset + last.source.length : offset;\n if (reqSpace &&\n next &&\n next.type !== 'space' &&\n next.type !== 'newline' &&\n next.type !== 'comma' &&\n (next.type !== 'scalar' || next.source !== '')) {\n onError(next.offset, 'MISSING_CHAR', 'Tags and anchors must be separated from the next token by white space');\n }\n if (tab &&\n ((atNewline && tab.indent <= parentIndent) ||\n next?.type === 'block-map' ||\n next?.type === 'block-seq'))\n onError(tab, 'TAB_AS_INDENT', 'Tabs are not allowed as indentation');\n return {\n comma,\n found,\n spaceBefore,\n comment,\n hasNewline,\n anchor,\n tag,\n newlineAfterProp,\n end,\n start: start ?? end\n };\n}\n\nexports.resolveProps = resolveProps;\n","'use strict';\n\nfunction containsNewline(key) {\n if (!key)\n return null;\n switch (key.type) {\n case 'alias':\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n if (key.source.includes('\\n'))\n return true;\n if (key.end)\n for (const st of key.end)\n if (st.type === 'newline')\n return true;\n return false;\n case 'flow-collection':\n for (const it of key.items) {\n for (const st of it.start)\n if (st.type === 'newline')\n return true;\n if (it.sep)\n for (const st of it.sep)\n if (st.type === 'newline')\n return true;\n if (containsNewline(it.key) || containsNewline(it.value))\n return true;\n }\n return false;\n default:\n return true;\n }\n}\n\nexports.containsNewline = containsNewline;\n","'use strict';\n\nvar utilContainsNewline = require('./util-contains-newline.js');\n\nfunction flowIndentCheck(indent, fc, onError) {\n if (fc?.type === 'flow-collection') {\n const end = fc.end[0];\n if (end.indent === indent &&\n (end.source === ']' || end.source === '}') &&\n utilContainsNewline.containsNewline(fc)) {\n const msg = 'Flow end indicator should be more indented than parent';\n onError(end, 'BAD_INDENT', msg, true);\n }\n }\n}\n\nexports.flowIndentCheck = flowIndentCheck;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\n\nfunction mapIncludes(ctx, items, search) {\n const { uniqueKeys } = ctx.options;\n if (uniqueKeys === false)\n return false;\n const isEqual = typeof uniqueKeys === 'function'\n ? uniqueKeys\n : (a, b) => a === b || (identity.isScalar(a) && identity.isScalar(b) && a.value === b.value);\n return items.some(pair => isEqual(pair.key, search));\n}\n\nexports.mapIncludes = mapIncludes;\n","'use strict';\n\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst startColMsg = 'All mapping items must start at the same column';\nfunction resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLMap.YAMLMap;\n const map = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n let offset = bm.offset;\n let commentEnd = null;\n for (const collItem of bm.items) {\n const { start, key, sep, value } = collItem;\n // key properties\n const keyProps = resolveProps.resolveProps(start, {\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: bm.indent,\n startOnNewline: true\n });\n const implicitKey = !keyProps.found;\n if (implicitKey) {\n if (key) {\n if (key.type === 'block-seq')\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');\n else if ('indent' in key && key.indent !== bm.indent)\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n if (!keyProps.anchor && !keyProps.tag && !sep) {\n commentEnd = keyProps.end;\n if (keyProps.comment) {\n if (map.comment)\n map.comment += '\\n' + keyProps.comment;\n else\n map.comment = keyProps.comment;\n }\n continue;\n }\n if (keyProps.newlineAfterProp || utilContainsNewline.containsNewline(key)) {\n onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');\n }\n }\n else if (keyProps.found?.indent !== bm.indent) {\n onError(offset, 'BAD_INDENT', startColMsg);\n }\n // key value\n ctx.atKey = true;\n const keyStart = keyProps.end;\n const keyNode = key\n ? composeNode(ctx, key, keyProps, onError)\n : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, key, onError);\n ctx.atKey = false;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: bm.indent,\n startOnNewline: !key || key.type === 'block-scalar'\n });\n offset = valueProps.end;\n if (valueProps.found) {\n if (implicitKey) {\n if (value?.type === 'block-map' && !valueProps.hasNewline)\n onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');\n if (ctx.options.strict &&\n keyProps.start < valueProps.found.offset - 1024)\n onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bm.indent, value, onError);\n offset = valueNode.range[2];\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n else {\n // key with no value\n if (implicitKey)\n onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');\n if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n map.items.push(pair);\n }\n }\n if (commentEnd && commentEnd < offset)\n onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');\n map.range = [bm.offset, offset, commentEnd ?? offset];\n return map;\n}\n\nexports.resolveBlockMap = resolveBlockMap;\n","'use strict';\n\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilFlowIndentCheck = require('./util-flow-indent-check.js');\n\nfunction resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {\n const NodeClass = tag?.nodeClass ?? YAMLSeq.YAMLSeq;\n const seq = new NodeClass(ctx.schema);\n if (ctx.atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = bs.offset;\n let commentEnd = null;\n for (const { start, value } of bs.items) {\n const props = resolveProps.resolveProps(start, {\n indicator: 'seq-item-ind',\n next: value,\n offset,\n onError,\n parentIndent: bs.indent,\n startOnNewline: true\n });\n if (!props.found) {\n if (props.anchor || props.tag || value) {\n if (value?.type === 'block-seq')\n onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');\n else\n onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');\n }\n else {\n commentEnd = props.end;\n if (props.comment)\n seq.comment = props.comment;\n continue;\n }\n }\n const node = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, start, null, props, onError);\n if (ctx.schema.compat)\n utilFlowIndentCheck.flowIndentCheck(bs.indent, value, onError);\n offset = node.range[2];\n seq.items.push(node);\n }\n seq.range = [bs.offset, offset, commentEnd ?? offset];\n return seq;\n}\n\nexports.resolveBlockSeq = resolveBlockSeq;\n","'use strict';\n\nfunction resolveEnd(end, offset, reqSpace, onError) {\n let comment = '';\n if (end) {\n let hasSpace = false;\n let sep = '';\n for (const token of end) {\n const { source, type } = token;\n switch (type) {\n case 'space':\n hasSpace = true;\n break;\n case 'comment': {\n if (reqSpace && !hasSpace)\n onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');\n const cb = source.substring(1) || ' ';\n if (!comment)\n comment = cb;\n else\n comment += sep + cb;\n sep = '';\n break;\n }\n case 'newline':\n if (comment)\n sep += source;\n hasSpace = true;\n break;\n default:\n onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);\n }\n offset += source.length;\n }\n }\n return { comment, offset };\n}\n\nexports.resolveEnd = resolveEnd;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Pair = require('../nodes/Pair.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\nvar utilContainsNewline = require('./util-contains-newline.js');\nvar utilMapIncludes = require('./util-map-includes.js');\n\nconst blockMsg = 'Block collections are not allowed within flow collections';\nconst isBlock = (token) => token && (token.type === 'block-map' || token.type === 'block-seq');\nfunction resolveFlowCollection({ composeNode, composeEmptyNode }, ctx, fc, onError, tag) {\n const isMap = fc.start.source === '{';\n const fcName = isMap ? 'flow map' : 'flow sequence';\n const NodeClass = (tag?.nodeClass ?? (isMap ? YAMLMap.YAMLMap : YAMLSeq.YAMLSeq));\n const coll = new NodeClass(ctx.schema);\n coll.flow = true;\n const atRoot = ctx.atRoot;\n if (atRoot)\n ctx.atRoot = false;\n if (ctx.atKey)\n ctx.atKey = false;\n let offset = fc.offset + fc.start.source.length;\n for (let i = 0; i < fc.items.length; ++i) {\n const collItem = fc.items[i];\n const { start, key, sep, value } = collItem;\n const props = resolveProps.resolveProps(start, {\n flow: fcName,\n indicator: 'explicit-key-ind',\n next: key ?? sep?.[0],\n offset,\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (!props.found) {\n if (!props.anchor && !props.tag && !sep && !value) {\n if (i === 0 && props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n else if (i < fc.items.length - 1)\n onError(props.start, 'UNEXPECTED_TOKEN', `Unexpected empty item in ${fcName}`);\n if (props.comment) {\n if (coll.comment)\n coll.comment += '\\n' + props.comment;\n else\n coll.comment = props.comment;\n }\n offset = props.end;\n continue;\n }\n if (!isMap && ctx.options.strict && utilContainsNewline.containsNewline(key))\n onError(key, // checked by containsNewline()\n 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n }\n if (i === 0) {\n if (props.comma)\n onError(props.comma, 'UNEXPECTED_TOKEN', `Unexpected , in ${fcName}`);\n }\n else {\n if (!props.comma)\n onError(props.start, 'MISSING_CHAR', `Missing , between ${fcName} items`);\n if (props.comment) {\n let prevItemComment = '';\n loop: for (const st of start) {\n switch (st.type) {\n case 'comma':\n case 'space':\n break;\n case 'comment':\n prevItemComment = st.source.substring(1);\n break loop;\n default:\n break loop;\n }\n }\n if (prevItemComment) {\n let prev = coll.items[coll.items.length - 1];\n if (identity.isPair(prev))\n prev = prev.value ?? prev.key;\n if (prev.comment)\n prev.comment += '\\n' + prevItemComment;\n else\n prev.comment = prevItemComment;\n props.comment = props.comment.substring(prevItemComment.length + 1);\n }\n }\n }\n if (!isMap && !sep && !props.found) {\n // item is a value in a seq\n // → key & sep are empty, start does not include ? or :\n const valueNode = value\n ? composeNode(ctx, value, props, onError)\n : composeEmptyNode(ctx, props.end, sep, null, props, onError);\n coll.items.push(valueNode);\n offset = valueNode.range[2];\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else {\n // item is a key+value pair\n // key value\n ctx.atKey = true;\n const keyStart = props.end;\n const keyNode = key\n ? composeNode(ctx, key, props, onError)\n : composeEmptyNode(ctx, keyStart, start, null, props, onError);\n if (isBlock(key))\n onError(keyNode.range, 'BLOCK_IN_FLOW', blockMsg);\n ctx.atKey = false;\n // value properties\n const valueProps = resolveProps.resolveProps(sep ?? [], {\n flow: fcName,\n indicator: 'map-value-ind',\n next: value,\n offset: keyNode.range[2],\n onError,\n parentIndent: fc.indent,\n startOnNewline: false\n });\n if (valueProps.found) {\n if (!isMap && !props.found && ctx.options.strict) {\n if (sep)\n for (const st of sep) {\n if (st === valueProps.found)\n break;\n if (st.type === 'newline') {\n onError(st, 'MULTILINE_IMPLICIT_KEY', 'Implicit keys of flow sequence pairs need to be on a single line');\n break;\n }\n }\n if (props.start < valueProps.found.offset - 1024)\n onError(valueProps.found, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit flow sequence key');\n }\n }\n else if (value) {\n if ('source' in value && value.source?.[0] === ':')\n onError(value, 'MISSING_CHAR', `Missing space after : in ${fcName}`);\n else\n onError(valueProps.start, 'MISSING_CHAR', `Missing , or : between ${fcName} items`);\n }\n // value value\n const valueNode = value\n ? composeNode(ctx, value, valueProps, onError)\n : valueProps.found\n ? composeEmptyNode(ctx, valueProps.end, sep, null, valueProps, onError)\n : null;\n if (valueNode) {\n if (isBlock(value))\n onError(valueNode.range, 'BLOCK_IN_FLOW', blockMsg);\n }\n else if (valueProps.comment) {\n if (keyNode.comment)\n keyNode.comment += '\\n' + valueProps.comment;\n else\n keyNode.comment = valueProps.comment;\n }\n const pair = new Pair.Pair(keyNode, valueNode);\n if (ctx.options.keepSourceTokens)\n pair.srcToken = collItem;\n if (isMap) {\n const map = coll;\n if (utilMapIncludes.mapIncludes(ctx, map.items, keyNode))\n onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');\n map.items.push(pair);\n }\n else {\n const map = new YAMLMap.YAMLMap(ctx.schema);\n map.flow = true;\n map.items.push(pair);\n const endRange = (valueNode ?? keyNode).range;\n map.range = [keyNode.range[0], endRange[1], endRange[2]];\n coll.items.push(map);\n }\n offset = valueNode ? valueNode.range[2] : valueProps.end;\n }\n }\n const expectedEnd = isMap ? '}' : ']';\n const [ce, ...ee] = fc.end;\n let cePos = offset;\n if (ce?.source === expectedEnd)\n cePos = ce.offset + ce.source.length;\n else {\n const name = fcName[0].toUpperCase() + fcName.substring(1);\n const msg = atRoot\n ? `${name} must end with a ${expectedEnd}`\n : `${name} in block collection must be sufficiently indented and end with a ${expectedEnd}`;\n onError(offset, atRoot ? 'MISSING_CHAR' : 'BAD_INDENT', msg);\n if (ce && ce.source.length !== 1)\n ee.unshift(ce);\n }\n if (ee.length > 0) {\n const end = resolveEnd.resolveEnd(ee, cePos, ctx.options.strict, onError);\n if (end.comment) {\n if (coll.comment)\n coll.comment += '\\n' + end.comment;\n else\n coll.comment = end.comment;\n }\n coll.range = [fc.offset, cePos, end.offset];\n }\n else {\n coll.range = [fc.offset, cePos, cePos];\n }\n return coll;\n}\n\nexports.resolveFlowCollection = resolveFlowCollection;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar YAMLMap = require('../nodes/YAMLMap.js');\nvar YAMLSeq = require('../nodes/YAMLSeq.js');\nvar resolveBlockMap = require('./resolve-block-map.js');\nvar resolveBlockSeq = require('./resolve-block-seq.js');\nvar resolveFlowCollection = require('./resolve-flow-collection.js');\n\nfunction resolveCollection(CN, ctx, token, onError, tagName, tag) {\n const coll = token.type === 'block-map'\n ? resolveBlockMap.resolveBlockMap(CN, ctx, token, onError, tag)\n : token.type === 'block-seq'\n ? resolveBlockSeq.resolveBlockSeq(CN, ctx, token, onError, tag)\n : resolveFlowCollection.resolveFlowCollection(CN, ctx, token, onError, tag);\n const Coll = coll.constructor;\n // If we got a tagName matching the class, or the tag name is '!',\n // then use the tagName from the node class used to create it.\n if (tagName === '!' || tagName === Coll.tagName) {\n coll.tag = Coll.tagName;\n return coll;\n }\n if (tagName)\n coll.tag = tagName;\n return coll;\n}\nfunction composeCollection(CN, ctx, token, props, onError) {\n const tagToken = props.tag;\n const tagName = !tagToken\n ? null\n : ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg));\n if (token.type === 'block-seq') {\n const { anchor, newlineAfterProp: nl } = props;\n const lastProp = anchor && tagToken\n ? anchor.offset > tagToken.offset\n ? anchor\n : tagToken\n : (anchor ?? tagToken);\n if (lastProp && (!nl || nl.offset < lastProp.offset)) {\n const message = 'Missing newline after block sequence props';\n onError(lastProp, 'MISSING_CHAR', message);\n }\n }\n const expType = token.type === 'block-map'\n ? 'map'\n : token.type === 'block-seq'\n ? 'seq'\n : token.start.source === '{'\n ? 'map'\n : 'seq';\n // shortcut: check if it's a generic YAMLMap or YAMLSeq\n // before jumping into the custom tag logic.\n if (!tagToken ||\n !tagName ||\n tagName === '!' ||\n (tagName === YAMLMap.YAMLMap.tagName && expType === 'map') ||\n (tagName === YAMLSeq.YAMLSeq.tagName && expType === 'seq')) {\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n let tag = ctx.schema.tags.find(t => t.tag === tagName && t.collection === expType);\n if (!tag) {\n const kt = ctx.schema.knownTags[tagName];\n if (kt?.collection === expType) {\n ctx.schema.tags.push(Object.assign({}, kt, { default: false }));\n tag = kt;\n }\n else {\n if (kt) {\n onError(tagToken, 'BAD_COLLECTION_TYPE', `${kt.tag} used for ${expType} collection, but expects ${kt.collection ?? 'scalar'}`, true);\n }\n else {\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, true);\n }\n return resolveCollection(CN, ctx, token, onError, tagName);\n }\n }\n const coll = resolveCollection(CN, ctx, token, onError, tagName, tag);\n const res = tag.resolve?.(coll, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg), ctx.options) ?? coll;\n const node = identity.isNode(res)\n ? res\n : new Scalar.Scalar(res);\n node.range = coll.range;\n node.tag = tagName;\n if (tag?.format)\n node.format = tag.format;\n return node;\n}\n\nexports.composeCollection = composeCollection;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\n\nfunction resolveBlockScalar(ctx, scalar, onError) {\n const start = scalar.offset;\n const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);\n if (!header)\n return { value: '', type: null, comment: '', range: [start, start, start] };\n const type = header.mode === '>' ? Scalar.Scalar.BLOCK_FOLDED : Scalar.Scalar.BLOCK_LITERAL;\n const lines = scalar.source ? splitLines(scalar.source) : [];\n // determine the end of content & start of chomping\n let chompStart = lines.length;\n for (let i = lines.length - 1; i >= 0; --i) {\n const content = lines[i][1];\n if (content === '' || content === '\\r')\n chompStart = i;\n else\n break;\n }\n // shortcut for empty contents\n if (chompStart === 0) {\n const value = header.chomp === '+' && lines.length > 0\n ? '\\n'.repeat(Math.max(1, lines.length - 1))\n : '';\n let end = start + header.length;\n if (scalar.source)\n end += scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n }\n // find the indentation level to trim from start\n let trimIndent = scalar.indent + header.indent;\n let offset = scalar.offset + header.length;\n let contentStart = 0;\n for (let i = 0; i < chompStart; ++i) {\n const [indent, content] = lines[i];\n if (content === '' || content === '\\r') {\n if (header.indent === 0 && indent.length > trimIndent)\n trimIndent = indent.length;\n }\n else {\n if (indent.length < trimIndent) {\n const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';\n onError(offset + indent.length, 'MISSING_CHAR', message);\n }\n if (header.indent === 0)\n trimIndent = indent.length;\n contentStart = i;\n if (trimIndent === 0 && !ctx.atRoot) {\n const message = 'Block scalar values in collections must be indented';\n onError(offset, 'BAD_INDENT', message);\n }\n break;\n }\n offset += indent.length + content.length + 1;\n }\n // include trailing more-indented empty lines in content\n for (let i = lines.length - 1; i >= chompStart; --i) {\n if (lines[i][0].length > trimIndent)\n chompStart = i + 1;\n }\n let value = '';\n let sep = '';\n let prevMoreIndented = false;\n // leading whitespace is kept intact\n for (let i = 0; i < contentStart; ++i)\n value += lines[i][0].slice(trimIndent) + '\\n';\n for (let i = contentStart; i < chompStart; ++i) {\n let [indent, content] = lines[i];\n offset += indent.length + content.length + 1;\n const crlf = content[content.length - 1] === '\\r';\n if (crlf)\n content = content.slice(0, -1);\n /* istanbul ignore if already caught in lexer */\n if (content && indent.length < trimIndent) {\n const src = header.indent\n ? 'explicit indentation indicator'\n : 'first line';\n const message = `Block scalar lines must not be less indented than their ${src}`;\n onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);\n indent = '';\n }\n if (type === Scalar.Scalar.BLOCK_LITERAL) {\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n }\n else if (indent.length > trimIndent || content[0] === '\\t') {\n // more-indented content within a folded block\n if (sep === ' ')\n sep = '\\n';\n else if (!prevMoreIndented && sep === '\\n')\n sep = '\\n\\n';\n value += sep + indent.slice(trimIndent) + content;\n sep = '\\n';\n prevMoreIndented = true;\n }\n else if (content === '') {\n // empty line\n if (sep === '\\n')\n value += '\\n';\n else\n sep = '\\n';\n }\n else {\n value += sep + content;\n sep = ' ';\n prevMoreIndented = false;\n }\n }\n switch (header.chomp) {\n case '-':\n break;\n case '+':\n for (let i = chompStart; i < lines.length; ++i)\n value += '\\n' + lines[i][0].slice(trimIndent);\n if (value[value.length - 1] !== '\\n')\n value += '\\n';\n break;\n default:\n value += '\\n';\n }\n const end = start + header.length + scalar.source.length;\n return { value, type, comment: header.comment, range: [start, end, end] };\n}\nfunction parseBlockScalarHeader({ offset, props }, strict, onError) {\n /* istanbul ignore if should not happen */\n if (props[0].type !== 'block-scalar-header') {\n onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');\n return null;\n }\n const { source } = props[0];\n const mode = source[0];\n let indent = 0;\n let chomp = '';\n let error = -1;\n for (let i = 1; i < source.length; ++i) {\n const ch = source[i];\n if (!chomp && (ch === '-' || ch === '+'))\n chomp = ch;\n else {\n const n = Number(ch);\n if (!indent && n)\n indent = n;\n else if (error === -1)\n error = offset + i;\n }\n }\n if (error !== -1)\n onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);\n let hasSpace = false;\n let comment = '';\n let length = source.length;\n for (let i = 1; i < props.length; ++i) {\n const token = props[i];\n switch (token.type) {\n case 'space':\n hasSpace = true;\n // fallthrough\n case 'newline':\n length += token.source.length;\n break;\n case 'comment':\n if (strict && !hasSpace) {\n const message = 'Comments must be separated from other tokens by white space characters';\n onError(token, 'MISSING_CHAR', message);\n }\n length += token.source.length;\n comment = token.source.substring(1);\n break;\n case 'error':\n onError(token, 'UNEXPECTED_TOKEN', token.message);\n length += token.source.length;\n break;\n /* istanbul ignore next should not happen */\n default: {\n const message = `Unexpected token in block scalar header: ${token.type}`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n const ts = token.source;\n if (ts && typeof ts === 'string')\n length += ts.length;\n }\n }\n }\n return { mode, indent, chomp, comment, length };\n}\n/** @returns Array of lines split up as `[indent, content]` */\nfunction splitLines(source) {\n const split = source.split(/\\n( *)/);\n const first = split[0];\n const m = first.match(/^( *)/);\n const line0 = m?.[1]\n ? [m[1], first.slice(m[1].length)]\n : ['', first];\n const lines = [line0];\n for (let i = 1; i < split.length; i += 2)\n lines.push([split[i], split[i + 1]]);\n return lines;\n}\n\nexports.resolveBlockScalar = resolveBlockScalar;\n","'use strict';\n\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction resolveFlowScalar(scalar, strict, onError) {\n const { offset, type, source, end } = scalar;\n let _type;\n let value;\n const _onError = (rel, code, msg) => onError(offset + rel, code, msg);\n switch (type) {\n case 'scalar':\n _type = Scalar.Scalar.PLAIN;\n value = plainValue(source, _onError);\n break;\n case 'single-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_SINGLE;\n value = singleQuotedValue(source, _onError);\n break;\n case 'double-quoted-scalar':\n _type = Scalar.Scalar.QUOTE_DOUBLE;\n value = doubleQuotedValue(source, _onError);\n break;\n /* istanbul ignore next should not happen */\n default:\n onError(scalar, 'UNEXPECTED_TOKEN', `Expected a flow scalar value, but found: ${type}`);\n return {\n value: '',\n type: null,\n comment: '',\n range: [offset, offset + source.length, offset + source.length]\n };\n }\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, strict, onError);\n return {\n value,\n type: _type,\n comment: re.comment,\n range: [offset, valueEnd, re.offset]\n };\n}\nfunction plainValue(source, onError) {\n let badChar = '';\n switch (source[0]) {\n /* istanbul ignore next should not happen */\n case '\\t':\n badChar = 'a tab character';\n break;\n case ',':\n badChar = 'flow indicator character ,';\n break;\n case '%':\n badChar = 'directive indicator character %';\n break;\n case '|':\n case '>': {\n badChar = `block scalar indicator ${source[0]}`;\n break;\n }\n case '@':\n case '`': {\n badChar = `reserved character ${source[0]}`;\n break;\n }\n }\n if (badChar)\n onError(0, 'BAD_SCALAR_START', `Plain value cannot start with ${badChar}`);\n return foldLines(source);\n}\nfunction singleQuotedValue(source, onError) {\n if (source[source.length - 1] !== \"'\" || source.length === 1)\n onError(source.length, 'MISSING_CHAR', \"Missing closing 'quote\");\n return foldLines(source.slice(1, -1)).replace(/''/g, \"'\");\n}\nfunction foldLines(source) {\n /**\n * The negative lookbehind here and in the `re` RegExp is to\n * prevent causing a polynomial search time in certain cases.\n *\n * The try-catch is for Safari, which doesn't support this yet:\n * https://caniuse.com/js-regexp-lookbehind\n */\n let first, line;\n try {\n first = new RegExp('(.*?)(?<![ \\t])[ \\t]*\\r?\\n', 'sy');\n line = new RegExp('[ \\t]*(.*?)(?:(?<![ \\t])[ \\t]*)?\\r?\\n', 'sy');\n }\n catch {\n first = /(.*?)[ \\t]*\\r?\\n/sy;\n line = /[ \\t]*(.*?)[ \\t]*\\r?\\n/sy;\n }\n let match = first.exec(source);\n if (!match)\n return source;\n let res = match[1];\n let sep = ' ';\n let pos = first.lastIndex;\n line.lastIndex = pos;\n while ((match = line.exec(source))) {\n if (match[1] === '') {\n if (sep === '\\n')\n res += sep;\n else\n sep = '\\n';\n }\n else {\n res += sep + match[1];\n sep = ' ';\n }\n pos = line.lastIndex;\n }\n const last = /[ \\t]*(.*)/sy;\n last.lastIndex = pos;\n match = last.exec(source);\n return res + sep + (match?.[1] ?? '');\n}\nfunction doubleQuotedValue(source, onError) {\n let res = '';\n for (let i = 1; i < source.length - 1; ++i) {\n const ch = source[i];\n if (ch === '\\r' && source[i + 1] === '\\n')\n continue;\n if (ch === '\\n') {\n const { fold, offset } = foldNewline(source, i);\n res += fold;\n i = offset;\n }\n else if (ch === '\\\\') {\n let next = source[++i];\n const cc = escapeCodes[next];\n if (cc)\n res += cc;\n else if (next === '\\n') {\n // skip escaped newlines, but still trim the following line\n next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === '\\r' && source[i + 1] === '\\n') {\n // skip escaped CRLF newlines, but still trim the following line\n next = source[++i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n }\n else if (next === 'x' || next === 'u' || next === 'U') {\n const length = { x: 2, u: 4, U: 8 }[next];\n res += parseCharCode(source, i + 1, length, onError);\n i += length;\n }\n else {\n const raw = source.substr(i - 1, 2);\n onError(i - 1, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n res += raw;\n }\n }\n else if (ch === ' ' || ch === '\\t') {\n // trim trailing whitespace\n const wsStart = i;\n let next = source[i + 1];\n while (next === ' ' || next === '\\t')\n next = source[++i + 1];\n if (next !== '\\n' && !(next === '\\r' && source[i + 2] === '\\n'))\n res += i > wsStart ? source.slice(wsStart, i + 1) : ch;\n }\n else {\n res += ch;\n }\n }\n if (source[source.length - 1] !== '\"' || source.length === 1)\n onError(source.length, 'MISSING_CHAR', 'Missing closing \"quote');\n return res;\n}\n/**\n * Fold a single newline into a space, multiple newlines to N - 1 newlines.\n * Presumes `source[offset] === '\\n'`\n */\nfunction foldNewline(source, offset) {\n let fold = '';\n let ch = source[offset + 1];\n while (ch === ' ' || ch === '\\t' || ch === '\\n' || ch === '\\r') {\n if (ch === '\\r' && source[offset + 2] !== '\\n')\n break;\n if (ch === '\\n')\n fold += '\\n';\n offset += 1;\n ch = source[offset + 1];\n }\n if (!fold)\n fold = ' ';\n return { fold, offset };\n}\nconst escapeCodes = {\n '0': '\\0', // null character\n a: '\\x07', // bell character\n b: '\\b', // backspace\n e: '\\x1b', // escape character\n f: '\\f', // form feed\n n: '\\n', // line feed\n r: '\\r', // carriage return\n t: '\\t', // horizontal tab\n v: '\\v', // vertical tab\n N: '\\u0085', // Unicode next line\n _: '\\u00a0', // Unicode non-breaking space\n L: '\\u2028', // Unicode line separator\n P: '\\u2029', // Unicode paragraph separator\n ' ': ' ',\n '\"': '\"',\n '/': '/',\n '\\\\': '\\\\',\n '\\t': '\\t'\n};\nfunction parseCharCode(source, offset, length, onError) {\n const cc = source.substr(offset, length);\n const ok = cc.length === length && /^[0-9a-fA-F]+$/.test(cc);\n const code = ok ? parseInt(cc, 16) : NaN;\n if (isNaN(code)) {\n const raw = source.substr(offset - 2, length + 2);\n onError(offset - 2, 'BAD_DQ_ESCAPE', `Invalid escape sequence ${raw}`);\n return raw;\n }\n return String.fromCodePoint(code);\n}\n\nexports.resolveFlowScalar = resolveFlowScalar;\n","'use strict';\n\nvar identity = require('../nodes/identity.js');\nvar Scalar = require('../nodes/Scalar.js');\nvar resolveBlockScalar = require('./resolve-block-scalar.js');\nvar resolveFlowScalar = require('./resolve-flow-scalar.js');\n\nfunction composeScalar(ctx, token, tagToken, onError) {\n const { value, type, comment, range } = token.type === 'block-scalar'\n ? resolveBlockScalar.resolveBlockScalar(ctx, token, onError)\n : resolveFlowScalar.resolveFlowScalar(token, ctx.options.strict, onError);\n const tagName = tagToken\n ? ctx.directives.tagName(tagToken.source, msg => onError(tagToken, 'TAG_RESOLVE_FAILED', msg))\n : null;\n let tag;\n if (ctx.options.stringKeys && ctx.atKey) {\n tag = ctx.schema[identity.SCALAR];\n }\n else if (tagName)\n tag = findScalarTagByName(ctx.schema, value, tagName, tagToken, onError);\n else if (token.type === 'scalar')\n tag = findScalarTagByTest(ctx, value, token, onError);\n else\n tag = ctx.schema[identity.SCALAR];\n let scalar;\n try {\n const res = tag.resolve(value, msg => onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg), ctx.options);\n scalar = identity.isScalar(res) ? res : new Scalar.Scalar(res);\n }\n catch (error) {\n const msg = error instanceof Error ? error.message : String(error);\n onError(tagToken ?? token, 'TAG_RESOLVE_FAILED', msg);\n scalar = new Scalar.Scalar(value);\n }\n scalar.range = range;\n scalar.source = value;\n if (type)\n scalar.type = type;\n if (tagName)\n scalar.tag = tagName;\n if (tag.format)\n scalar.format = tag.format;\n if (comment)\n scalar.comment = comment;\n return scalar;\n}\nfunction findScalarTagByName(schema, value, tagName, tagToken, onError) {\n if (tagName === '!')\n return schema[identity.SCALAR]; // non-specific tag\n const matchWithTest = [];\n for (const tag of schema.tags) {\n if (!tag.collection && tag.tag === tagName) {\n if (tag.default && tag.test)\n matchWithTest.push(tag);\n else\n return tag;\n }\n }\n for (const tag of matchWithTest)\n if (tag.test?.test(value))\n return tag;\n const kt = schema.knownTags[tagName];\n if (kt && !kt.collection) {\n // Ensure that the known tag is available for stringifying,\n // but does not get used by default.\n schema.tags.push(Object.assign({}, kt, { default: false, test: undefined }));\n return kt;\n }\n onError(tagToken, 'TAG_RESOLVE_FAILED', `Unresolved tag: ${tagName}`, tagName !== 'tag:yaml.org,2002:str');\n return schema[identity.SCALAR];\n}\nfunction findScalarTagByTest({ atKey, directives, schema }, value, token, onError) {\n const tag = schema.tags.find(tag => (tag.default === true || (atKey && tag.default === 'key')) &&\n tag.test?.test(value)) || schema[identity.SCALAR];\n if (schema.compat) {\n const compat = schema.compat.find(tag => tag.default && tag.test?.test(value)) ??\n schema[identity.SCALAR];\n if (tag.tag !== compat.tag) {\n const ts = directives.tagString(tag.tag);\n const cs = directives.tagString(compat.tag);\n const msg = `Value may be parsed as either ${ts} or ${cs}`;\n onError(token, 'TAG_RESOLVE_FAILED', msg, true);\n }\n }\n return tag;\n}\n\nexports.composeScalar = composeScalar;\n","'use strict';\n\nfunction emptyScalarPosition(offset, before, pos) {\n if (before) {\n pos ?? (pos = before.length);\n for (let i = pos - 1; i >= 0; --i) {\n let st = before[i];\n switch (st.type) {\n case 'space':\n case 'comment':\n case 'newline':\n offset -= st.source.length;\n continue;\n }\n // Technically, an empty scalar is immediately after the last non-empty\n // node, but it's more useful to place it after any whitespace.\n st = before[++i];\n while (st?.type === 'space') {\n offset += st.source.length;\n st = before[++i];\n }\n break;\n }\n }\n return offset;\n}\n\nexports.emptyScalarPosition = emptyScalarPosition;\n","'use strict';\n\nvar Alias = require('../nodes/Alias.js');\nvar identity = require('../nodes/identity.js');\nvar composeCollection = require('./compose-collection.js');\nvar composeScalar = require('./compose-scalar.js');\nvar resolveEnd = require('./resolve-end.js');\nvar utilEmptyScalarPosition = require('./util-empty-scalar-position.js');\n\nconst CN = { composeNode, composeEmptyNode };\nfunction composeNode(ctx, token, props, onError) {\n const atKey = ctx.atKey;\n const { spaceBefore, comment, anchor, tag } = props;\n let node;\n let isSrcToken = true;\n switch (token.type) {\n case 'alias':\n node = composeAlias(ctx, token, onError);\n if (anchor || tag)\n onError(token, 'ALIAS_PROPS', 'An alias node must not specify any properties');\n break;\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'block-scalar':\n node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n case 'block-map':\n case 'block-seq':\n case 'flow-collection':\n node = composeCollection.composeCollection(CN, ctx, token, props, onError);\n if (anchor)\n node.anchor = anchor.source.substring(1);\n break;\n default: {\n const message = token.type === 'error'\n ? token.message\n : `Unsupported token (type: ${token.type})`;\n onError(token, 'UNEXPECTED_TOKEN', message);\n node = composeEmptyNode(ctx, token.offset, undefined, null, props, onError);\n isSrcToken = false;\n }\n }\n if (anchor && node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n if (atKey &&\n ctx.options.stringKeys &&\n (!identity.isScalar(node) ||\n typeof node.value !== 'string' ||\n (node.tag && node.tag !== 'tag:yaml.org,2002:str'))) {\n const msg = 'With stringKeys, all keys must be strings';\n onError(tag ?? token, 'NON_STRING_KEY', msg);\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n if (token.type === 'scalar' && token.source === '')\n node.comment = comment;\n else\n node.commentBefore = comment;\n }\n // @ts-expect-error Type checking misses meaning of isSrcToken\n if (ctx.options.keepSourceTokens && isSrcToken)\n node.srcToken = token;\n return node;\n}\nfunction composeEmptyNode(ctx, offset, before, pos, { spaceBefore, comment, anchor, tag, end }, onError) {\n const token = {\n type: 'scalar',\n offset: utilEmptyScalarPosition.emptyScalarPosition(offset, before, pos),\n indent: -1,\n source: ''\n };\n const node = composeScalar.composeScalar(ctx, token, tag, onError);\n if (anchor) {\n node.anchor = anchor.source.substring(1);\n if (node.anchor === '')\n onError(anchor, 'BAD_ALIAS', 'Anchor cannot be an empty string');\n }\n if (spaceBefore)\n node.spaceBefore = true;\n if (comment) {\n node.comment = comment;\n node.range[2] = end;\n }\n return node;\n}\nfunction composeAlias({ options }, { offset, source, end }, onError) {\n const alias = new Alias.Alias(source.substring(1));\n if (alias.source === '')\n onError(offset, 'BAD_ALIAS', 'Alias cannot be an empty string');\n if (alias.source.endsWith(':'))\n onError(offset + source.length - 1, 'BAD_ALIAS', 'Alias ending in : is ambiguous', true);\n const valueEnd = offset + source.length;\n const re = resolveEnd.resolveEnd(end, valueEnd, options.strict, onError);\n alias.range = [offset, valueEnd, re.offset];\n if (re.comment)\n alias.comment = re.comment;\n return alias;\n}\n\nexports.composeEmptyNode = composeEmptyNode;\nexports.composeNode = composeNode;\n","'use strict';\n\nvar Document = require('../doc/Document.js');\nvar composeNode = require('./compose-node.js');\nvar resolveEnd = require('./resolve-end.js');\nvar resolveProps = require('./resolve-props.js');\n\nfunction composeDoc(options, directives, { offset, start, value, end }, onError) {\n const opts = Object.assign({ _directives: directives }, options);\n const doc = new Document.Document(undefined, opts);\n const ctx = {\n atKey: false,\n atRoot: true,\n directives: doc.directives,\n options: doc.options,\n schema: doc.schema\n };\n const props = resolveProps.resolveProps(start, {\n indicator: 'doc-start',\n next: value ?? end?.[0],\n offset,\n onError,\n parentIndent: 0,\n startOnNewline: true\n });\n if (props.found) {\n doc.directives.docStart = true;\n if (value &&\n (value.type === 'block-map' || value.type === 'block-seq') &&\n !props.hasNewline)\n onError(props.end, 'MISSING_CHAR', 'Block collection cannot start on same line with directives-end marker');\n }\n // @ts-expect-error If Contents is set, let's trust the user\n doc.contents = value\n ? composeNode.composeNode(ctx, value, props, onError)\n : composeNode.composeEmptyNode(ctx, props.end, start, null, props, onError);\n const contentEnd = doc.contents.range[2];\n const re = resolveEnd.resolveEnd(end, contentEnd, false, onError);\n if (re.comment)\n doc.comment = re.comment;\n doc.range = [offset, contentEnd, re.offset];\n return doc;\n}\n\nexports.composeDoc = composeDoc;\n","'use strict';\n\nvar node_process = require('process');\nvar directives = require('../doc/directives.js');\nvar Document = require('../doc/Document.js');\nvar errors = require('../errors.js');\nvar identity = require('../nodes/identity.js');\nvar composeDoc = require('./compose-doc.js');\nvar resolveEnd = require('./resolve-end.js');\n\nfunction getErrorPos(src) {\n if (typeof src === 'number')\n return [src, src + 1];\n if (Array.isArray(src))\n return src.length === 2 ? src : [src[0], src[1]];\n const { offset, source } = src;\n return [offset, offset + (typeof source === 'string' ? source.length : 1)];\n}\nfunction parsePrelude(prelude) {\n let comment = '';\n let atComment = false;\n let afterEmptyLine = false;\n for (let i = 0; i < prelude.length; ++i) {\n const source = prelude[i];\n switch (source[0]) {\n case '#':\n comment +=\n (comment === '' ? '' : afterEmptyLine ? '\\n\\n' : '\\n') +\n (source.substring(1) || ' ');\n atComment = true;\n afterEmptyLine = false;\n break;\n case '%':\n if (prelude[i + 1]?.[0] !== '#')\n i += 1;\n atComment = false;\n break;\n default:\n // This may be wrong after doc-end, but in that case it doesn't matter\n if (!atComment)\n afterEmptyLine = true;\n atComment = false;\n }\n }\n return { comment, afterEmptyLine };\n}\n/**\n * Compose a stream of CST nodes into a stream of YAML Documents.\n *\n * ```ts\n * import { Composer, Parser } from 'yaml'\n *\n * const src: string = ...\n * const tokens = new Parser().parse(src)\n * const docs = new Composer().compose(tokens)\n * ```\n */\nclass Composer {\n constructor(options = {}) {\n this.doc = null;\n this.atDirectives = false;\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n this.onError = (source, code, message, warning) => {\n const pos = getErrorPos(source);\n if (warning)\n this.warnings.push(new errors.YAMLWarning(pos, code, message));\n else\n this.errors.push(new errors.YAMLParseError(pos, code, message));\n };\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n this.directives = new directives.Directives({ version: options.version || '1.2' });\n this.options = options;\n }\n decorate(doc, afterDoc) {\n const { comment, afterEmptyLine } = parsePrelude(this.prelude);\n //console.log({ dc: doc.comment, prelude, comment })\n if (comment) {\n const dc = doc.contents;\n if (afterDoc) {\n doc.comment = doc.comment ? `${doc.comment}\\n${comment}` : comment;\n }\n else if (afterEmptyLine || doc.directives.docStart || !dc) {\n doc.commentBefore = comment;\n }\n else if (identity.isCollection(dc) && !dc.flow && dc.items.length > 0) {\n let it = dc.items[0];\n if (identity.isPair(it))\n it = it.key;\n const cb = it.commentBefore;\n it.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n else {\n const cb = dc.commentBefore;\n dc.commentBefore = cb ? `${comment}\\n${cb}` : comment;\n }\n }\n if (afterDoc) {\n Array.prototype.push.apply(doc.errors, this.errors);\n Array.prototype.push.apply(doc.warnings, this.warnings);\n }\n else {\n doc.errors = this.errors;\n doc.warnings = this.warnings;\n }\n this.prelude = [];\n this.errors = [];\n this.warnings = [];\n }\n /**\n * Current stream status information.\n *\n * Mostly useful at the end of input for an empty stream.\n */\n streamInfo() {\n return {\n comment: parsePrelude(this.prelude).comment,\n directives: this.directives,\n errors: this.errors,\n warnings: this.warnings\n };\n }\n /**\n * Compose tokens into documents.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *compose(tokens, forceDoc = false, endOffset = -1) {\n for (const token of tokens)\n yield* this.next(token);\n yield* this.end(forceDoc, endOffset);\n }\n /** Advance the composer by one CST token. */\n *next(token) {\n if (node_process.env.LOG_STREAM)\n console.dir(token, { depth: null });\n switch (token.type) {\n case 'directive':\n this.directives.add(token.source, (offset, message, warning) => {\n const pos = getErrorPos(token);\n pos[0] += offset;\n this.onError(pos, 'BAD_DIRECTIVE', message, warning);\n });\n this.prelude.push(token.source);\n this.atDirectives = true;\n break;\n case 'document': {\n const doc = composeDoc.composeDoc(this.options, this.directives, token, this.onError);\n if (this.atDirectives && !doc.directives.docStart)\n this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');\n this.decorate(doc, false);\n if (this.doc)\n yield this.doc;\n this.doc = doc;\n this.atDirectives = false;\n break;\n }\n case 'byte-order-mark':\n case 'space':\n break;\n case 'comment':\n case 'newline':\n this.prelude.push(token.source);\n break;\n case 'error': {\n const msg = token.source\n ? `${token.message}: ${JSON.stringify(token.source)}`\n : token.message;\n const error = new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);\n if (this.atDirectives || !this.doc)\n this.errors.push(error);\n else\n this.doc.errors.push(error);\n break;\n }\n case 'doc-end': {\n if (!this.doc) {\n const msg = 'Unexpected doc-end without preceding document';\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));\n break;\n }\n this.doc.directives.docEnd = true;\n const end = resolveEnd.resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);\n this.decorate(this.doc, true);\n if (end.comment) {\n const dc = this.doc.comment;\n this.doc.comment = dc ? `${dc}\\n${end.comment}` : end.comment;\n }\n this.doc.range[2] = end.offset;\n break;\n }\n default:\n this.errors.push(new errors.YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));\n }\n }\n /**\n * Call at end of input to yield any remaining document.\n *\n * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.\n * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.\n */\n *end(forceDoc = false, endOffset = -1) {\n if (this.doc) {\n this.decorate(this.doc, true);\n yield this.doc;\n this.doc = null;\n }\n else if (forceDoc) {\n const opts = Object.assign({ _directives: this.directives }, this.options);\n const doc = new Document.Document(undefined, opts);\n if (this.atDirectives)\n this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');\n doc.range = [0, endOffset, endOffset];\n this.decorate(doc, false);\n yield doc;\n }\n }\n}\n\nexports.Composer = Composer;\n","'use strict';\n\nvar resolveBlockScalar = require('../compose/resolve-block-scalar.js');\nvar resolveFlowScalar = require('../compose/resolve-flow-scalar.js');\nvar errors = require('../errors.js');\nvar stringifyString = require('../stringify/stringifyString.js');\n\nfunction resolveAsScalar(token, strict = true, onError) {\n if (token) {\n const _onError = (pos, code, message) => {\n const offset = typeof pos === 'number' ? pos : Array.isArray(pos) ? pos[0] : pos.offset;\n if (onError)\n onError(offset, code, message);\n else\n throw new errors.YAMLParseError([offset, offset + 1], code, message);\n };\n switch (token.type) {\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return resolveFlowScalar.resolveFlowScalar(token, strict, _onError);\n case 'block-scalar':\n return resolveBlockScalar.resolveBlockScalar({ options: { strict } }, token, _onError);\n }\n }\n return null;\n}\n/**\n * Create a new scalar token with `value`\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.end Comments and whitespace after the end of the value, or after the block scalar header. If undefined, a newline will be added.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.indent The indent level of the token.\n * @param context.inFlow Is this scalar within a flow collection? This may affect the resolved type of the token's value.\n * @param context.offset The offset position of the token.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction createScalarToken(value, context) {\n const { implicitKey = false, indent, inFlow = false, offset = -1, type = 'PLAIN' } = context;\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey,\n indent: indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n const end = context.end ?? [\n { type: 'newline', offset: -1, indent, source: '\\n' }\n ];\n switch (source[0]) {\n case '|':\n case '>': {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, end))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n return { type: 'block-scalar', offset, indent, props, source: body };\n }\n case '\"':\n return { type: 'double-quoted-scalar', offset, indent, source, end };\n case \"'\":\n return { type: 'single-quoted-scalar', offset, indent, source, end };\n default:\n return { type: 'scalar', offset, indent, source, end };\n }\n}\n/**\n * Set the value of `token` to the given string `value`, overwriting any previous contents and type that it may have.\n *\n * Best efforts are made to retain any comments previously associated with the `token`,\n * though all contents within a collection's `items` will be overwritten.\n *\n * Values that represent an actual string but may be parsed as a different type should use a `type` other than `'PLAIN'`,\n * as this function does not support any schema operations and won't check for such conflicts.\n *\n * @param token Any token. If it does not include an `indent` value, the value will be stringified as if it were an implicit key.\n * @param value The string representation of the value, which will have its content properly indented.\n * @param context.afterKey In most cases, values after a key should have an additional level of indentation.\n * @param context.implicitKey Being within an implicit key may affect the resolved type of the token's value.\n * @param context.inFlow Being within a flow collection may affect the resolved type of the token's value.\n * @param context.type The preferred type of the scalar token. If undefined, the previous type of the `token` will be used, defaulting to `'PLAIN'`.\n */\nfunction setScalarValue(token, value, context = {}) {\n let { afterKey = false, implicitKey = false, inFlow = false, type } = context;\n let indent = 'indent' in token ? token.indent : null;\n if (afterKey && typeof indent === 'number')\n indent += 2;\n if (!type)\n switch (token.type) {\n case 'single-quoted-scalar':\n type = 'QUOTE_SINGLE';\n break;\n case 'double-quoted-scalar':\n type = 'QUOTE_DOUBLE';\n break;\n case 'block-scalar': {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n type = header.source[0] === '>' ? 'BLOCK_FOLDED' : 'BLOCK_LITERAL';\n break;\n }\n default:\n type = 'PLAIN';\n }\n const source = stringifyString.stringifyString({ type, value }, {\n implicitKey: implicitKey || indent === null,\n indent: indent !== null && indent > 0 ? ' '.repeat(indent) : '',\n inFlow,\n options: { blockQuote: true, lineWidth: -1 }\n });\n switch (source[0]) {\n case '|':\n case '>':\n setBlockScalarValue(token, source);\n break;\n case '\"':\n setFlowScalarValue(token, source, 'double-quoted-scalar');\n break;\n case \"'\":\n setFlowScalarValue(token, source, 'single-quoted-scalar');\n break;\n default:\n setFlowScalarValue(token, source, 'scalar');\n }\n}\nfunction setBlockScalarValue(token, source) {\n const he = source.indexOf('\\n');\n const head = source.substring(0, he);\n const body = source.substring(he + 1) + '\\n';\n if (token.type === 'block-scalar') {\n const header = token.props[0];\n if (header.type !== 'block-scalar-header')\n throw new Error('Invalid block scalar header');\n header.source = head;\n token.source = body;\n }\n else {\n const { offset } = token;\n const indent = 'indent' in token ? token.indent : -1;\n const props = [\n { type: 'block-scalar-header', offset, indent, source: head }\n ];\n if (!addEndtoBlockProps(props, 'end' in token ? token.end : undefined))\n props.push({ type: 'newline', offset: -1, indent, source: '\\n' });\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type: 'block-scalar', indent, props, source: body });\n }\n}\n/** @returns `true` if last token is a newline */\nfunction addEndtoBlockProps(props, end) {\n if (end)\n for (const st of end)\n switch (st.type) {\n case 'space':\n case 'comment':\n props.push(st);\n break;\n case 'newline':\n props.push(st);\n return true;\n }\n return false;\n}\nfunction setFlowScalarValue(token, source, type) {\n switch (token.type) {\n case 'scalar':\n case 'double-quoted-scalar':\n case 'single-quoted-scalar':\n token.type = type;\n token.source = source;\n break;\n case 'block-scalar': {\n const end = token.props.slice(1);\n let oa = source.length;\n if (token.props[0].type === 'block-scalar-header')\n oa -= token.props[0].source.length;\n for (const tok of end)\n tok.offset += oa;\n delete token.props;\n Object.assign(token, { type, source, end });\n break;\n }\n case 'block-map':\n case 'block-seq': {\n const offset = token.offset + source.length;\n const nl = { type: 'newline', offset, indent: token.indent, source: '\\n' };\n delete token.items;\n Object.assign(token, { type, source, end: [nl] });\n break;\n }\n default: {\n const indent = 'indent' in token ? token.indent : -1;\n const end = 'end' in token && Array.isArray(token.end)\n ? token.end.filter(st => st.type === 'space' ||\n st.type === 'comment' ||\n st.type === 'newline')\n : [];\n for (const key of Object.keys(token))\n if (key !== 'type' && key !== 'offset')\n delete token[key];\n Object.assign(token, { type, indent, source, end });\n }\n }\n}\n\nexports.createScalarToken = createScalarToken;\nexports.resolveAsScalar = resolveAsScalar;\nexports.setScalarValue = setScalarValue;\n","'use strict';\n\n/**\n * Stringify a CST document, token, or collection item\n *\n * Fair warning: This applies no validation whatsoever, and\n * simply concatenates the sources in their logical order.\n */\nconst stringify = (cst) => 'type' in cst ? stringifyToken(cst) : stringifyItem(cst);\nfunction stringifyToken(token) {\n switch (token.type) {\n case 'block-scalar': {\n let res = '';\n for (const tok of token.props)\n res += stringifyToken(tok);\n return res + token.source;\n }\n case 'block-map':\n case 'block-seq': {\n let res = '';\n for (const item of token.items)\n res += stringifyItem(item);\n return res;\n }\n case 'flow-collection': {\n let res = token.start.source;\n for (const item of token.items)\n res += stringifyItem(item);\n for (const st of token.end)\n res += st.source;\n return res;\n }\n case 'document': {\n let res = stringifyItem(token);\n if (token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n default: {\n let res = token.source;\n if ('end' in token && token.end)\n for (const st of token.end)\n res += st.source;\n return res;\n }\n }\n}\nfunction stringifyItem({ start, key, sep, value }) {\n let res = '';\n for (const st of start)\n res += st.source;\n if (key)\n res += stringifyToken(key);\n if (sep)\n for (const st of sep)\n res += st.source;\n if (value)\n res += stringifyToken(value);\n return res;\n}\n\nexports.stringify = stringify;\n","'use strict';\n\nconst BREAK = Symbol('break visit');\nconst SKIP = Symbol('skip children');\nconst REMOVE = Symbol('remove item');\n/**\n * Apply a visitor to a CST document or item.\n *\n * Walks through the tree (depth-first) starting from the root, calling a\n * `visitor` function with two arguments when entering each item:\n * - `item`: The current item, which included the following members:\n * - `start: SourceToken[]` – Source tokens before the key or value,\n * possibly including its anchor or tag.\n * - `key?: Token | null` – Set for pair values. May then be `null`, if\n * the key before the `:` separator is empty.\n * - `sep?: SourceToken[]` – Source tokens between the key and the value,\n * which should include the `:` map value indicator if `value` is set.\n * - `value?: Token` – The value of a sequence item, or of a map pair.\n * - `path`: The steps from the root to the current node, as an array of\n * `['key' | 'value', number]` tuples.\n *\n * The return value of the visitor may be used to control the traversal:\n * - `undefined` (default): Do nothing and continue\n * - `visit.SKIP`: Do not visit the children of this token, continue with\n * next sibling\n * - `visit.BREAK`: Terminate traversal completely\n * - `visit.REMOVE`: Remove the current item, then continue with the next one\n * - `number`: Set the index of the next step. This is useful especially if\n * the index of the current token has changed.\n * - `function`: Define the next visitor for this item. After the original\n * visitor is called on item entry, next visitors are called after handling\n * a non-empty `key` and when exiting the item.\n */\nfunction visit(cst, visitor) {\n if ('type' in cst && cst.type === 'document')\n cst = { start: cst.start, value: cst.value };\n _visit(Object.freeze([]), cst, visitor);\n}\n// Without the `as symbol` casts, TS declares these in the `visit`\n// namespace using `var`, but then complains about that because\n// `unique symbol` must be `const`.\n/** Terminate visit traversal completely */\nvisit.BREAK = BREAK;\n/** Do not visit the children of the current item */\nvisit.SKIP = SKIP;\n/** Remove the current item */\nvisit.REMOVE = REMOVE;\n/** Find the item at `path` from `cst` as the root */\nvisit.itemAtPath = (cst, path) => {\n let item = cst;\n for (const [field, index] of path) {\n const tok = item?.[field];\n if (tok && 'items' in tok) {\n item = tok.items[index];\n }\n else\n return undefined;\n }\n return item;\n};\n/**\n * Get the immediate parent collection of the item at `path` from `cst` as the root.\n *\n * Throws an error if the collection is not found, which should never happen if the item itself exists.\n */\nvisit.parentCollection = (cst, path) => {\n const parent = visit.itemAtPath(cst, path.slice(0, -1));\n const field = path[path.length - 1][0];\n const coll = parent?.[field];\n if (coll && 'items' in coll)\n return coll;\n throw new Error('Parent collection not found');\n};\nfunction _visit(path, item, visitor) {\n let ctrl = visitor(item, path);\n if (typeof ctrl === 'symbol')\n return ctrl;\n for (const field of ['key', 'value']) {\n const token = item[field];\n if (token && 'items' in token) {\n for (let i = 0; i < token.items.length; ++i) {\n const ci = _visit(Object.freeze(path.concat([[field, i]])), token.items[i], visitor);\n if (typeof ci === 'number')\n i = ci - 1;\n else if (ci === BREAK)\n return BREAK;\n else if (ci === REMOVE) {\n token.items.splice(i, 1);\n i -= 1;\n }\n }\n if (typeof ctrl === 'function' && field === 'key')\n ctrl = ctrl(item, path);\n }\n }\n return typeof ctrl === 'function' ? ctrl(item, path) : ctrl;\n}\n\nexports.visit = visit;\n","'use strict';\n\nvar cstScalar = require('./cst-scalar.js');\nvar cstStringify = require('./cst-stringify.js');\nvar cstVisit = require('./cst-visit.js');\n\n/** The byte order mark */\nconst BOM = '\\u{FEFF}';\n/** Start of doc-mode */\nconst DOCUMENT = '\\x02'; // C0: Start of Text\n/** Unexpected end of flow-mode */\nconst FLOW_END = '\\x18'; // C0: Cancel\n/** Next token is a scalar value */\nconst SCALAR = '\\x1f'; // C0: Unit Separator\n/** @returns `true` if `token` is a flow or block collection */\nconst isCollection = (token) => !!token && 'items' in token;\n/** @returns `true` if `token` is a flow or block scalar; not an alias */\nconst isScalar = (token) => !!token &&\n (token.type === 'scalar' ||\n token.type === 'single-quoted-scalar' ||\n token.type === 'double-quoted-scalar' ||\n token.type === 'block-scalar');\n/* istanbul ignore next */\n/** Get a printable representation of a lexer token */\nfunction prettyToken(token) {\n switch (token) {\n case BOM:\n return '<BOM>';\n case DOCUMENT:\n return '<DOC>';\n case FLOW_END:\n return '<FLOW_END>';\n case SCALAR:\n return '<SCALAR>';\n default:\n return JSON.stringify(token);\n }\n}\n/** Identify the type of a lexer token. May return `null` for unknown tokens. */\nfunction tokenType(source) {\n switch (source) {\n case BOM:\n return 'byte-order-mark';\n case DOCUMENT:\n return 'doc-mode';\n case FLOW_END:\n return 'flow-error-end';\n case SCALAR:\n return 'scalar';\n case '---':\n return 'doc-start';\n case '...':\n return 'doc-end';\n case '':\n case '\\n':\n case '\\r\\n':\n return 'newline';\n case '-':\n return 'seq-item-ind';\n case '?':\n return 'explicit-key-ind';\n case ':':\n return 'map-value-ind';\n case '{':\n return 'flow-map-start';\n case '}':\n return 'flow-map-end';\n case '[':\n return 'flow-seq-start';\n case ']':\n return 'flow-seq-end';\n case ',':\n return 'comma';\n }\n switch (source[0]) {\n case ' ':\n case '\\t':\n return 'space';\n case '#':\n return 'comment';\n case '%':\n return 'directive-line';\n case '*':\n return 'alias';\n case '&':\n return 'anchor';\n case '!':\n return 'tag';\n case \"'\":\n return 'single-quoted-scalar';\n case '\"':\n return 'double-quoted-scalar';\n case '|':\n case '>':\n return 'block-scalar-header';\n }\n return null;\n}\n\nexports.createScalarToken = cstScalar.createScalarToken;\nexports.resolveAsScalar = cstScalar.resolveAsScalar;\nexports.setScalarValue = cstScalar.setScalarValue;\nexports.stringify = cstStringify.stringify;\nexports.visit = cstVisit.visit;\nexports.BOM = BOM;\nexports.DOCUMENT = DOCUMENT;\nexports.FLOW_END = FLOW_END;\nexports.SCALAR = SCALAR;\nexports.isCollection = isCollection;\nexports.isScalar = isScalar;\nexports.prettyToken = prettyToken;\nexports.tokenType = tokenType;\n","'use strict';\n\nvar cst = require('./cst.js');\n\n/*\nSTART -> stream\n\nstream\n directive -> line-end -> stream\n indent + line-end -> stream\n [else] -> line-start\n\nline-end\n comment -> line-end\n newline -> .\n input-end -> END\n\nline-start\n doc-start -> doc\n doc-end -> stream\n [else] -> indent -> block-start\n\nblock-start\n seq-item-start -> block-start\n explicit-key-start -> block-start\n map-value-start -> block-start\n [else] -> doc\n\ndoc\n line-end -> line-start\n spaces -> doc\n anchor -> doc\n tag -> doc\n flow-start -> flow -> doc\n flow-end -> error -> doc\n seq-item-start -> error -> doc\n explicit-key-start -> error -> doc\n map-value-start -> doc\n alias -> doc\n quote-start -> quoted-scalar -> doc\n block-scalar-header -> line-end -> block-scalar(min) -> line-start\n [else] -> plain-scalar(false, min) -> doc\n\nflow\n line-end -> flow\n spaces -> flow\n anchor -> flow\n tag -> flow\n flow-start -> flow -> flow\n flow-end -> .\n seq-item-start -> error -> flow\n explicit-key-start -> flow\n map-value-start -> flow\n alias -> flow\n quote-start -> quoted-scalar -> flow\n comma -> flow\n [else] -> plain-scalar(true, 0) -> flow\n\nquoted-scalar\n quote-end -> .\n [else] -> quoted-scalar\n\nblock-scalar(min)\n newline + peek(indent < min) -> .\n [else] -> block-scalar(min)\n\nplain-scalar(is-flow, min)\n scalar-end(is-flow) -> .\n peek(newline + (indent < min)) -> .\n [else] -> plain-scalar(min)\n*/\nfunction isEmpty(ch) {\n switch (ch) {\n case undefined:\n case ' ':\n case '\\n':\n case '\\r':\n case '\\t':\n return true;\n default:\n return false;\n }\n}\nconst hexDigits = new Set('0123456789ABCDEFabcdef');\nconst tagChars = new Set(\"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-#;/?:@&=+$_.!~*'()\");\nconst flowIndicatorChars = new Set(',[]{}');\nconst invalidAnchorChars = new Set(' ,[]{}\\n\\r\\t');\nconst isNotAnchorChar = (ch) => !ch || invalidAnchorChars.has(ch);\n/**\n * Splits an input string into lexical tokens, i.e. smaller strings that are\n * easily identifiable by `tokens.tokenType()`.\n *\n * Lexing starts always in a \"stream\" context. Incomplete input may be buffered\n * until a complete token can be emitted.\n *\n * In addition to slices of the original input, the following control characters\n * may also be emitted:\n *\n * - `\\x02` (Start of Text): A document starts with the next token\n * - `\\x18` (Cancel): Unexpected end of flow-mode (indicates an error)\n * - `\\x1f` (Unit Separator): Next token is a scalar value\n * - `\\u{FEFF}` (Byte order mark): Emitted separately outside documents\n */\nclass Lexer {\n constructor() {\n /**\n * Flag indicating whether the end of the current buffer marks the end of\n * all input\n */\n this.atEnd = false;\n /**\n * Explicit indent set in block scalar header, as an offset from the current\n * minimum indent, so e.g. set to 1 from a header `|2+`. Set to -1 if not\n * explicitly set.\n */\n this.blockScalarIndent = -1;\n /**\n * Block scalars that include a + (keep) chomping indicator in their header\n * include trailing empty lines, which are otherwise excluded from the\n * scalar's contents.\n */\n this.blockScalarKeep = false;\n /** Current input */\n this.buffer = '';\n /**\n * Flag noting whether the map value indicator : can immediately follow this\n * node within a flow context.\n */\n this.flowKey = false;\n /** Count of surrounding flow collection levels. */\n this.flowLevel = 0;\n /**\n * Minimum level of indentation required for next lines to be parsed as a\n * part of the current scalar value.\n */\n this.indentNext = 0;\n /** Indentation level of the current line. */\n this.indentValue = 0;\n /** Position of the next \\n character. */\n this.lineEndPos = null;\n /** Stores the state of the lexer if reaching the end of incpomplete input */\n this.next = null;\n /** A pointer to `buffer`; the current position of the lexer. */\n this.pos = 0;\n }\n /**\n * Generate YAML tokens from the `source` string. If `incomplete`,\n * a part of the last line may be left as a buffer for the next call.\n *\n * @returns A generator of lexical tokens\n */\n *lex(source, incomplete = false) {\n if (source) {\n if (typeof source !== 'string')\n throw TypeError('source is not a string');\n this.buffer = this.buffer ? this.buffer + source : source;\n this.lineEndPos = null;\n }\n this.atEnd = !incomplete;\n let next = this.next ?? 'stream';\n while (next && (incomplete || this.hasChars(1)))\n next = yield* this.parseNext(next);\n }\n atLineEnd() {\n let i = this.pos;\n let ch = this.buffer[i];\n while (ch === ' ' || ch === '\\t')\n ch = this.buffer[++i];\n if (!ch || ch === '#' || ch === '\\n')\n return true;\n if (ch === '\\r')\n return this.buffer[i + 1] === '\\n';\n return false;\n }\n charAt(n) {\n return this.buffer[this.pos + n];\n }\n continueScalar(offset) {\n let ch = this.buffer[offset];\n if (this.indentNext > 0) {\n let indent = 0;\n while (ch === ' ')\n ch = this.buffer[++indent + offset];\n if (ch === '\\r') {\n const next = this.buffer[indent + offset + 1];\n if (next === '\\n' || (!next && !this.atEnd))\n return offset + indent + 1;\n }\n return ch === '\\n' || indent >= this.indentNext || (!ch && !this.atEnd)\n ? offset + indent\n : -1;\n }\n if (ch === '-' || ch === '.') {\n const dt = this.buffer.substr(offset, 3);\n if ((dt === '---' || dt === '...') && isEmpty(this.buffer[offset + 3]))\n return -1;\n }\n return offset;\n }\n getLine() {\n let end = this.lineEndPos;\n if (typeof end !== 'number' || (end !== -1 && end < this.pos)) {\n end = this.buffer.indexOf('\\n', this.pos);\n this.lineEndPos = end;\n }\n if (end === -1)\n return this.atEnd ? this.buffer.substring(this.pos) : null;\n if (this.buffer[end - 1] === '\\r')\n end -= 1;\n return this.buffer.substring(this.pos, end);\n }\n hasChars(n) {\n return this.pos + n <= this.buffer.length;\n }\n setNext(state) {\n this.buffer = this.buffer.substring(this.pos);\n this.pos = 0;\n this.lineEndPos = null;\n this.next = state;\n return null;\n }\n peek(n) {\n return this.buffer.substr(this.pos, n);\n }\n *parseNext(next) {\n switch (next) {\n case 'stream':\n return yield* this.parseStream();\n case 'line-start':\n return yield* this.parseLineStart();\n case 'block-start':\n return yield* this.parseBlockStart();\n case 'doc':\n return yield* this.parseDocument();\n case 'flow':\n return yield* this.parseFlowCollection();\n case 'quoted-scalar':\n return yield* this.parseQuotedScalar();\n case 'block-scalar':\n return yield* this.parseBlockScalar();\n case 'plain-scalar':\n return yield* this.parsePlainScalar();\n }\n }\n *parseStream() {\n let line = this.getLine();\n if (line === null)\n return this.setNext('stream');\n if (line[0] === cst.BOM) {\n yield* this.pushCount(1);\n line = line.substring(1);\n }\n if (line[0] === '%') {\n let dirEnd = line.length;\n let cs = line.indexOf('#');\n while (cs !== -1) {\n const ch = line[cs - 1];\n if (ch === ' ' || ch === '\\t') {\n dirEnd = cs - 1;\n break;\n }\n else {\n cs = line.indexOf('#', cs + 1);\n }\n }\n while (true) {\n const ch = line[dirEnd - 1];\n if (ch === ' ' || ch === '\\t')\n dirEnd -= 1;\n else\n break;\n }\n const n = (yield* this.pushCount(dirEnd)) + (yield* this.pushSpaces(true));\n yield* this.pushCount(line.length - n); // possible comment\n this.pushNewline();\n return 'stream';\n }\n if (this.atLineEnd()) {\n const sp = yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - sp);\n yield* this.pushNewline();\n return 'stream';\n }\n yield cst.DOCUMENT;\n return yield* this.parseLineStart();\n }\n *parseLineStart() {\n const ch = this.charAt(0);\n if (!ch && !this.atEnd)\n return this.setNext('line-start');\n if (ch === '-' || ch === '.') {\n if (!this.atEnd && !this.hasChars(4))\n return this.setNext('line-start');\n const s = this.peek(3);\n if ((s === '---' || s === '...') && isEmpty(this.charAt(3))) {\n yield* this.pushCount(3);\n this.indentValue = 0;\n this.indentNext = 0;\n return s === '---' ? 'doc' : 'stream';\n }\n }\n this.indentValue = yield* this.pushSpaces(false);\n if (this.indentNext > this.indentValue && !isEmpty(this.charAt(1)))\n this.indentNext = this.indentValue;\n return yield* this.parseBlockStart();\n }\n *parseBlockStart() {\n const [ch0, ch1] = this.peek(2);\n if (!ch1 && !this.atEnd)\n return this.setNext('block-start');\n if ((ch0 === '-' || ch0 === '?' || ch0 === ':') && isEmpty(ch1)) {\n const n = (yield* this.pushCount(1)) + (yield* this.pushSpaces(true));\n this.indentNext = this.indentValue + 1;\n this.indentValue += n;\n return yield* this.parseBlockStart();\n }\n return 'doc';\n }\n *parseDocument() {\n yield* this.pushSpaces(true);\n const line = this.getLine();\n if (line === null)\n return this.setNext('doc');\n let n = yield* this.pushIndicators();\n switch (line[n]) {\n case '#':\n yield* this.pushCount(line.length - n);\n // fallthrough\n case undefined:\n yield* this.pushNewline();\n return yield* this.parseLineStart();\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel = 1;\n return 'flow';\n case '}':\n case ']':\n // this is an error\n yield* this.pushCount(1);\n return 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'doc';\n case '\"':\n case \"'\":\n return yield* this.parseQuotedScalar();\n case '|':\n case '>':\n n += yield* this.parseBlockScalarHeader();\n n += yield* this.pushSpaces(true);\n yield* this.pushCount(line.length - n);\n yield* this.pushNewline();\n return yield* this.parseBlockScalar();\n default:\n return yield* this.parsePlainScalar();\n }\n }\n *parseFlowCollection() {\n let nl, sp;\n let indent = -1;\n do {\n nl = yield* this.pushNewline();\n if (nl > 0) {\n sp = yield* this.pushSpaces(false);\n this.indentValue = indent = sp;\n }\n else {\n sp = 0;\n }\n sp += yield* this.pushSpaces(true);\n } while (nl + sp > 0);\n const line = this.getLine();\n if (line === null)\n return this.setNext('flow');\n if ((indent !== -1 && indent < this.indentNext && line[0] !== '#') ||\n (indent === 0 &&\n (line.startsWith('---') || line.startsWith('...')) &&\n isEmpty(line[3]))) {\n // Allowing for the terminal ] or } at the same (rather than greater)\n // indent level as the initial [ or { is technically invalid, but\n // failing here would be surprising to users.\n const atFlowEndMarker = indent === this.indentNext - 1 &&\n this.flowLevel === 1 &&\n (line[0] === ']' || line[0] === '}');\n if (!atFlowEndMarker) {\n // this is an error\n this.flowLevel = 0;\n yield cst.FLOW_END;\n return yield* this.parseLineStart();\n }\n }\n let n = 0;\n while (line[n] === ',') {\n n += yield* this.pushCount(1);\n n += yield* this.pushSpaces(true);\n this.flowKey = false;\n }\n n += yield* this.pushIndicators();\n switch (line[n]) {\n case undefined:\n return 'flow';\n case '#':\n yield* this.pushCount(line.length - n);\n return 'flow';\n case '{':\n case '[':\n yield* this.pushCount(1);\n this.flowKey = false;\n this.flowLevel += 1;\n return 'flow';\n case '}':\n case ']':\n yield* this.pushCount(1);\n this.flowKey = true;\n this.flowLevel -= 1;\n return this.flowLevel ? 'flow' : 'doc';\n case '*':\n yield* this.pushUntil(isNotAnchorChar);\n return 'flow';\n case '\"':\n case \"'\":\n this.flowKey = true;\n return yield* this.parseQuotedScalar();\n case ':': {\n const next = this.charAt(1);\n if (this.flowKey || isEmpty(next) || next === ',') {\n this.flowKey = false;\n yield* this.pushCount(1);\n yield* this.pushSpaces(true);\n return 'flow';\n }\n }\n // fallthrough\n default:\n this.flowKey = false;\n return yield* this.parsePlainScalar();\n }\n }\n *parseQuotedScalar() {\n const quote = this.charAt(0);\n let end = this.buffer.indexOf(quote, this.pos + 1);\n if (quote === \"'\") {\n while (end !== -1 && this.buffer[end + 1] === \"'\")\n end = this.buffer.indexOf(\"'\", end + 2);\n }\n else {\n // double-quote\n while (end !== -1) {\n let n = 0;\n while (this.buffer[end - 1 - n] === '\\\\')\n n += 1;\n if (n % 2 === 0)\n break;\n end = this.buffer.indexOf('\"', end + 1);\n }\n }\n // Only looking for newlines within the quotes\n const qb = this.buffer.substring(0, end);\n let nl = qb.indexOf('\\n', this.pos);\n if (nl !== -1) {\n while (nl !== -1) {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = qb.indexOf('\\n', cs);\n }\n if (nl !== -1) {\n // this is an error caused by an unexpected unindent\n end = nl - (qb[nl - 1] === '\\r' ? 2 : 1);\n }\n }\n if (end === -1) {\n if (!this.atEnd)\n return this.setNext('quoted-scalar');\n end = this.buffer.length;\n }\n yield* this.pushToIndex(end + 1, false);\n return this.flowLevel ? 'flow' : 'doc';\n }\n *parseBlockScalarHeader() {\n this.blockScalarIndent = -1;\n this.blockScalarKeep = false;\n let i = this.pos;\n while (true) {\n const ch = this.buffer[++i];\n if (ch === '+')\n this.blockScalarKeep = true;\n else if (ch > '0' && ch <= '9')\n this.blockScalarIndent = Number(ch) - 1;\n else if (ch !== '-')\n break;\n }\n return yield* this.pushUntil(ch => isEmpty(ch) || ch === '#');\n }\n *parseBlockScalar() {\n let nl = this.pos - 1; // may be -1 if this.pos === 0\n let indent = 0;\n let ch;\n loop: for (let i = this.pos; (ch = this.buffer[i]); ++i) {\n switch (ch) {\n case ' ':\n indent += 1;\n break;\n case '\\n':\n nl = i;\n indent = 0;\n break;\n case '\\r': {\n const next = this.buffer[i + 1];\n if (!next && !this.atEnd)\n return this.setNext('block-scalar');\n if (next === '\\n')\n break;\n } // fallthrough\n default:\n break loop;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('block-scalar');\n if (indent >= this.indentNext) {\n if (this.blockScalarIndent === -1)\n this.indentNext = indent;\n else {\n this.indentNext =\n this.blockScalarIndent + (this.indentNext === 0 ? 1 : this.indentNext);\n }\n do {\n const cs = this.continueScalar(nl + 1);\n if (cs === -1)\n break;\n nl = this.buffer.indexOf('\\n', cs);\n } while (nl !== -1);\n if (nl === -1) {\n if (!this.atEnd)\n return this.setNext('block-scalar');\n nl = this.buffer.length;\n }\n }\n // Trailing insufficiently indented tabs are invalid.\n // To catch that during parsing, we include them in the block scalar value.\n let i = nl + 1;\n ch = this.buffer[i];\n while (ch === ' ')\n ch = this.buffer[++i];\n if (ch === '\\t') {\n while (ch === '\\t' || ch === ' ' || ch === '\\r' || ch === '\\n')\n ch = this.buffer[++i];\n nl = i - 1;\n }\n else if (!this.blockScalarKeep) {\n do {\n let i = nl - 1;\n let ch = this.buffer[i];\n if (ch === '\\r')\n ch = this.buffer[--i];\n const lastChar = i; // Drop the line if last char not more indented\n while (ch === ' ')\n ch = this.buffer[--i];\n if (ch === '\\n' && i >= this.pos && i + 1 + indent > lastChar)\n nl = i;\n else\n break;\n } while (true);\n }\n yield cst.SCALAR;\n yield* this.pushToIndex(nl + 1, true);\n return yield* this.parseLineStart();\n }\n *parsePlainScalar() {\n const inFlow = this.flowLevel > 0;\n let end = this.pos - 1;\n let i = this.pos - 1;\n let ch;\n while ((ch = this.buffer[++i])) {\n if (ch === ':') {\n const next = this.buffer[i + 1];\n if (isEmpty(next) || (inFlow && flowIndicatorChars.has(next)))\n break;\n end = i;\n }\n else if (isEmpty(ch)) {\n let next = this.buffer[i + 1];\n if (ch === '\\r') {\n if (next === '\\n') {\n i += 1;\n ch = '\\n';\n next = this.buffer[i + 1];\n }\n else\n end = i;\n }\n if (next === '#' || (inFlow && flowIndicatorChars.has(next)))\n break;\n if (ch === '\\n') {\n const cs = this.continueScalar(i + 1);\n if (cs === -1)\n break;\n i = Math.max(i, cs - 2); // to advance, but still account for ' #'\n }\n }\n else {\n if (inFlow && flowIndicatorChars.has(ch))\n break;\n end = i;\n }\n }\n if (!ch && !this.atEnd)\n return this.setNext('plain-scalar');\n yield cst.SCALAR;\n yield* this.pushToIndex(end + 1, true);\n return inFlow ? 'flow' : 'doc';\n }\n *pushCount(n) {\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos += n;\n return n;\n }\n return 0;\n }\n *pushToIndex(i, allowEmpty) {\n const s = this.buffer.slice(this.pos, i);\n if (s) {\n yield s;\n this.pos += s.length;\n return s.length;\n }\n else if (allowEmpty)\n yield '';\n return 0;\n }\n *pushIndicators() {\n switch (this.charAt(0)) {\n case '!':\n return ((yield* this.pushTag()) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '&':\n return ((yield* this.pushUntil(isNotAnchorChar)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n case '-': // this is an error\n case '?': // this is an error outside flow collections\n case ':': {\n const inFlow = this.flowLevel > 0;\n const ch1 = this.charAt(1);\n if (isEmpty(ch1) || (inFlow && flowIndicatorChars.has(ch1))) {\n if (!inFlow)\n this.indentNext = this.indentValue + 1;\n else if (this.flowKey)\n this.flowKey = false;\n return ((yield* this.pushCount(1)) +\n (yield* this.pushSpaces(true)) +\n (yield* this.pushIndicators()));\n }\n }\n }\n return 0;\n }\n *pushTag() {\n if (this.charAt(1) === '<') {\n let i = this.pos + 2;\n let ch = this.buffer[i];\n while (!isEmpty(ch) && ch !== '>')\n ch = this.buffer[++i];\n return yield* this.pushToIndex(ch === '>' ? i + 1 : i, false);\n }\n else {\n let i = this.pos + 1;\n let ch = this.buffer[i];\n while (ch) {\n if (tagChars.has(ch))\n ch = this.buffer[++i];\n else if (ch === '%' &&\n hexDigits.has(this.buffer[i + 1]) &&\n hexDigits.has(this.buffer[i + 2])) {\n ch = this.buffer[(i += 3)];\n }\n else\n break;\n }\n return yield* this.pushToIndex(i, false);\n }\n }\n *pushNewline() {\n const ch = this.buffer[this.pos];\n if (ch === '\\n')\n return yield* this.pushCount(1);\n else if (ch === '\\r' && this.charAt(1) === '\\n')\n return yield* this.pushCount(2);\n else\n return 0;\n }\n *pushSpaces(allowTabs) {\n let i = this.pos - 1;\n let ch;\n do {\n ch = this.buffer[++i];\n } while (ch === ' ' || (allowTabs && ch === '\\t'));\n const n = i - this.pos;\n if (n > 0) {\n yield this.buffer.substr(this.pos, n);\n this.pos = i;\n }\n return n;\n }\n *pushUntil(test) {\n let i = this.pos;\n let ch = this.buffer[i];\n while (!test(ch))\n ch = this.buffer[++i];\n return yield* this.pushToIndex(i, false);\n }\n}\n\nexports.Lexer = Lexer;\n","'use strict';\n\n/**\n * Tracks newlines during parsing in order to provide an efficient API for\n * determining the one-indexed `{ line, col }` position for any offset\n * within the input.\n */\nclass LineCounter {\n constructor() {\n this.lineStarts = [];\n /**\n * Should be called in ascending order. Otherwise, call\n * `lineCounter.lineStarts.sort()` before calling `linePos()`.\n */\n this.addNewLine = (offset) => this.lineStarts.push(offset);\n /**\n * Performs a binary search and returns the 1-indexed { line, col }\n * position of `offset`. If `line === 0`, `addNewLine` has never been\n * called or `offset` is before the first known newline.\n */\n this.linePos = (offset) => {\n let low = 0;\n let high = this.lineStarts.length;\n while (low < high) {\n const mid = (low + high) >> 1; // Math.floor((low + high) / 2)\n if (this.lineStarts[mid] < offset)\n low = mid + 1;\n else\n high = mid;\n }\n if (this.lineStarts[low] === offset)\n return { line: low + 1, col: 1 };\n if (low === 0)\n return { line: 0, col: offset };\n const start = this.lineStarts[low - 1];\n return { line: low, col: offset - start + 1 };\n };\n }\n}\n\nexports.LineCounter = LineCounter;\n","'use strict';\n\nvar node_process = require('process');\nvar cst = require('./cst.js');\nvar lexer = require('./lexer.js');\n\nfunction includesToken(list, type) {\n for (let i = 0; i < list.length; ++i)\n if (list[i].type === type)\n return true;\n return false;\n}\nfunction findNonEmptyIndex(list) {\n for (let i = 0; i < list.length; ++i) {\n switch (list[i].type) {\n case 'space':\n case 'comment':\n case 'newline':\n break;\n default:\n return i;\n }\n }\n return -1;\n}\nfunction isFlowToken(token) {\n switch (token?.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n case 'flow-collection':\n return true;\n default:\n return false;\n }\n}\nfunction getPrevProps(parent) {\n switch (parent.type) {\n case 'document':\n return parent.start;\n case 'block-map': {\n const it = parent.items[parent.items.length - 1];\n return it.sep ?? it.start;\n }\n case 'block-seq':\n return parent.items[parent.items.length - 1].start;\n /* istanbul ignore next should not happen */\n default:\n return [];\n }\n}\n/** Note: May modify input array */\nfunction getFirstKeyStartProps(prev) {\n if (prev.length === 0)\n return [];\n let i = prev.length;\n loop: while (--i >= 0) {\n switch (prev[i].type) {\n case 'doc-start':\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n case 'newline':\n break loop;\n }\n }\n while (prev[++i]?.type === 'space') {\n /* loop */\n }\n return prev.splice(i, prev.length);\n}\nfunction fixFlowSeqItems(fc) {\n if (fc.start.type === 'flow-seq-start') {\n for (const it of fc.items) {\n if (it.sep &&\n !it.value &&\n !includesToken(it.start, 'explicit-key-ind') &&\n !includesToken(it.sep, 'map-value-ind')) {\n if (it.key)\n it.value = it.key;\n delete it.key;\n if (isFlowToken(it.value)) {\n if (it.value.end)\n Array.prototype.push.apply(it.value.end, it.sep);\n else\n it.value.end = it.sep;\n }\n else\n Array.prototype.push.apply(it.start, it.sep);\n delete it.sep;\n }\n }\n }\n}\n/**\n * A YAML concrete syntax tree (CST) parser\n *\n * ```ts\n * const src: string = ...\n * for (const token of new Parser().parse(src)) {\n * // token: Token\n * }\n * ```\n *\n * To use the parser with a user-provided lexer:\n *\n * ```ts\n * function* parse(source: string, lexer: Lexer) {\n * const parser = new Parser()\n * for (const lexeme of lexer.lex(source))\n * yield* parser.next(lexeme)\n * yield* parser.end()\n * }\n *\n * const src: string = ...\n * const lexer = new Lexer()\n * for (const token of parse(src, lexer)) {\n * // token: Token\n * }\n * ```\n */\nclass Parser {\n /**\n * @param onNewLine - If defined, called separately with the start position of\n * each new line (in `parse()`, including the start of input).\n */\n constructor(onNewLine) {\n /** If true, space and sequence indicators count as indentation */\n this.atNewLine = true;\n /** If true, next token is a scalar value */\n this.atScalar = false;\n /** Current indentation level */\n this.indent = 0;\n /** Current offset since the start of parsing */\n this.offset = 0;\n /** On the same line with a block map key */\n this.onKeyLine = false;\n /** Top indicates the node that's currently being built */\n this.stack = [];\n /** The source of the current token, set in parse() */\n this.source = '';\n /** The type of the current token, set in parse() */\n this.type = '';\n // Must be defined after `next()`\n this.lexer = new lexer.Lexer();\n this.onNewLine = onNewLine;\n }\n /**\n * Parse `source` as a YAML stream.\n * If `incomplete`, a part of the last line may be left as a buffer for the next call.\n *\n * Errors are not thrown, but yielded as `{ type: 'error', message }` tokens.\n *\n * @returns A generator of tokens representing each directive, document, and other structure.\n */\n *parse(source, incomplete = false) {\n if (this.onNewLine && this.offset === 0)\n this.onNewLine(0);\n for (const lexeme of this.lexer.lex(source, incomplete))\n yield* this.next(lexeme);\n if (!incomplete)\n yield* this.end();\n }\n /**\n * Advance the parser by the `source` of one lexical token.\n */\n *next(source) {\n this.source = source;\n if (node_process.env.LOG_TOKENS)\n console.log('|', cst.prettyToken(source));\n if (this.atScalar) {\n this.atScalar = false;\n yield* this.step();\n this.offset += source.length;\n return;\n }\n const type = cst.tokenType(source);\n if (!type) {\n const message = `Not a YAML token: ${source}`;\n yield* this.pop({ type: 'error', offset: this.offset, message, source });\n this.offset += source.length;\n }\n else if (type === 'scalar') {\n this.atNewLine = false;\n this.atScalar = true;\n this.type = 'scalar';\n }\n else {\n this.type = type;\n yield* this.step();\n switch (type) {\n case 'newline':\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine)\n this.onNewLine(this.offset + source.length);\n break;\n case 'space':\n if (this.atNewLine && source[0] === ' ')\n this.indent += source.length;\n break;\n case 'explicit-key-ind':\n case 'map-value-ind':\n case 'seq-item-ind':\n if (this.atNewLine)\n this.indent += source.length;\n break;\n case 'doc-mode':\n case 'flow-error-end':\n return;\n default:\n this.atNewLine = false;\n }\n this.offset += source.length;\n }\n }\n /** Call at end of input to push out any remaining constructions */\n *end() {\n while (this.stack.length > 0)\n yield* this.pop();\n }\n get sourceToken() {\n const st = {\n type: this.type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n return st;\n }\n *step() {\n const top = this.peek(1);\n if (this.type === 'doc-end' && top?.type !== 'doc-end') {\n while (this.stack.length > 0)\n yield* this.pop();\n this.stack.push({\n type: 'doc-end',\n offset: this.offset,\n source: this.source\n });\n return;\n }\n if (!top)\n return yield* this.stream();\n switch (top.type) {\n case 'document':\n return yield* this.document(top);\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return yield* this.scalar(top);\n case 'block-scalar':\n return yield* this.blockScalar(top);\n case 'block-map':\n return yield* this.blockMap(top);\n case 'block-seq':\n return yield* this.blockSequence(top);\n case 'flow-collection':\n return yield* this.flowCollection(top);\n case 'doc-end':\n return yield* this.documentEnd(top);\n }\n /* istanbul ignore next should not happen */\n yield* this.pop();\n }\n peek(n) {\n return this.stack[this.stack.length - n];\n }\n *pop(error) {\n const token = error ?? this.stack.pop();\n /* istanbul ignore if should not happen */\n if (!token) {\n const message = 'Tried to pop an empty stack';\n yield { type: 'error', offset: this.offset, source: '', message };\n }\n else if (this.stack.length === 0) {\n yield token;\n }\n else {\n const top = this.peek(1);\n if (token.type === 'block-scalar') {\n // Block scalars use their parent rather than header indent\n token.indent = 'indent' in top ? top.indent : 0;\n }\n else if (token.type === 'flow-collection' && top.type === 'document') {\n // Ignore all indent for top-level flow collections\n token.indent = 0;\n }\n if (token.type === 'flow-collection')\n fixFlowSeqItems(token);\n switch (top.type) {\n case 'document':\n top.value = token;\n break;\n case 'block-scalar':\n top.props.push(token); // error\n break;\n case 'block-map': {\n const it = top.items[top.items.length - 1];\n if (it.value) {\n top.items.push({ start: [], key: token, sep: [] });\n this.onKeyLine = true;\n return;\n }\n else if (it.sep) {\n it.value = token;\n }\n else {\n Object.assign(it, { key: token, sep: [] });\n this.onKeyLine = !it.explicitKey;\n return;\n }\n break;\n }\n case 'block-seq': {\n const it = top.items[top.items.length - 1];\n if (it.value)\n top.items.push({ start: [], value: token });\n else\n it.value = token;\n break;\n }\n case 'flow-collection': {\n const it = top.items[top.items.length - 1];\n if (!it || it.value)\n top.items.push({ start: [], key: token, sep: [] });\n else if (it.sep)\n it.value = token;\n else\n Object.assign(it, { key: token, sep: [] });\n return;\n }\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.pop(token);\n }\n if ((top.type === 'document' ||\n top.type === 'block-map' ||\n top.type === 'block-seq') &&\n (token.type === 'block-map' || token.type === 'block-seq')) {\n const last = token.items[token.items.length - 1];\n if (last &&\n !last.sep &&\n !last.value &&\n last.start.length > 0 &&\n findNonEmptyIndex(last.start) === -1 &&\n (token.indent === 0 ||\n last.start.every(st => st.type !== 'comment' || st.indent < token.indent))) {\n if (top.type === 'document')\n top.end = last.start;\n else\n top.items.push({ start: last.start });\n token.items.splice(-1, 1);\n }\n }\n }\n }\n *stream() {\n switch (this.type) {\n case 'directive-line':\n yield { type: 'directive', offset: this.offset, source: this.source };\n return;\n case 'byte-order-mark':\n case 'space':\n case 'comment':\n case 'newline':\n yield this.sourceToken;\n return;\n case 'doc-mode':\n case 'doc-start': {\n const doc = {\n type: 'document',\n offset: this.offset,\n start: []\n };\n if (this.type === 'doc-start')\n doc.start.push(this.sourceToken);\n this.stack.push(doc);\n return;\n }\n }\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML stream`,\n source: this.source\n };\n }\n *document(doc) {\n if (doc.value)\n return yield* this.lineEnd(doc);\n switch (this.type) {\n case 'doc-start': {\n if (findNonEmptyIndex(doc.start) !== -1) {\n yield* this.pop();\n yield* this.step();\n }\n else\n doc.start.push(this.sourceToken);\n return;\n }\n case 'anchor':\n case 'tag':\n case 'space':\n case 'comment':\n case 'newline':\n doc.start.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(doc);\n if (bv)\n this.stack.push(bv);\n else {\n yield {\n type: 'error',\n offset: this.offset,\n message: `Unexpected ${this.type} token in YAML document`,\n source: this.source\n };\n }\n }\n *scalar(scalar) {\n if (this.type === 'map-value-ind') {\n const prev = getPrevProps(this.peek(2));\n const start = getFirstKeyStartProps(prev);\n let sep;\n if (scalar.end) {\n sep = scalar.end;\n sep.push(this.sourceToken);\n delete scalar.end;\n }\n else\n sep = [this.sourceToken];\n const map = {\n type: 'block-map',\n offset: scalar.offset,\n indent: scalar.indent,\n items: [{ start, key: scalar, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else\n yield* this.lineEnd(scalar);\n }\n *blockScalar(scalar) {\n switch (this.type) {\n case 'space':\n case 'comment':\n case 'newline':\n scalar.props.push(this.sourceToken);\n return;\n case 'scalar':\n scalar.source = this.source;\n // block-scalar source includes trailing newline\n this.atNewLine = true;\n this.indent = 0;\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n yield* this.pop();\n break;\n /* istanbul ignore next should not happen */\n default:\n yield* this.pop();\n yield* this.step();\n }\n }\n *blockMap(map) {\n const it = map.items[map.items.length - 1];\n // it.sep is true-ish if pair already has key or : separator\n switch (this.type) {\n case 'newline':\n this.onKeyLine = false;\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'space':\n case 'comment':\n if (it.value) {\n map.items.push({ start: [this.sourceToken] });\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n if (this.atIndentedComment(it.start, map.indent)) {\n const prev = map.items[map.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n map.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n }\n if (this.indent >= map.indent) {\n const atMapIndent = !this.onKeyLine && this.indent === map.indent;\n const atNextItem = atMapIndent &&\n (it.sep || it.explicitKey) &&\n this.type !== 'seq-item-ind';\n // For empty nodes, assign newline-separated not indented empty tokens to following node\n let start = [];\n if (atNextItem && it.sep && !it.value) {\n const nl = [];\n for (let i = 0; i < it.sep.length; ++i) {\n const st = it.sep[i];\n switch (st.type) {\n case 'newline':\n nl.push(i);\n break;\n case 'space':\n break;\n case 'comment':\n if (st.indent > map.indent)\n nl.length = 0;\n break;\n default:\n nl.length = 0;\n }\n }\n if (nl.length >= 2)\n start = it.sep.splice(nl[1]);\n }\n switch (this.type) {\n case 'anchor':\n case 'tag':\n if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n it.sep.push(this.sourceToken);\n }\n else {\n it.start.push(this.sourceToken);\n }\n return;\n case 'explicit-key-ind':\n if (!it.sep && !it.explicitKey) {\n it.start.push(this.sourceToken);\n it.explicitKey = true;\n }\n else if (atNextItem || it.value) {\n start.push(this.sourceToken);\n map.items.push({ start, explicitKey: true });\n }\n else {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken], explicitKey: true }]\n });\n }\n this.onKeyLine = true;\n return;\n case 'map-value-ind':\n if (it.explicitKey) {\n if (!it.sep) {\n if (includesToken(it.start, 'newline')) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else {\n const start = getFirstKeyStartProps(it.start);\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n }\n else if (it.value) {\n map.items.push({ start: [], key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n });\n }\n else if (isFlowToken(it.key) &&\n !includesToken(it.sep, 'newline')) {\n const start = getFirstKeyStartProps(it.start);\n const key = it.key;\n const sep = it.sep;\n sep.push(this.sourceToken);\n // @ts-expect-error type guard is wrong here\n delete it.key;\n // @ts-expect-error type guard is wrong here\n delete it.sep;\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key, sep }]\n });\n }\n else if (start.length > 0) {\n // Not actually at next item\n it.sep = it.sep.concat(start, this.sourceToken);\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n else {\n if (!it.sep) {\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n }\n else if (it.value || atNextItem) {\n map.items.push({ start, key: null, sep: [this.sourceToken] });\n }\n else if (includesToken(it.sep, 'map-value-ind')) {\n this.stack.push({\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [], key: null, sep: [this.sourceToken] }]\n });\n }\n else {\n it.sep.push(this.sourceToken);\n }\n }\n this.onKeyLine = true;\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (atNextItem || it.value) {\n map.items.push({ start, key: fs, sep: [] });\n this.onKeyLine = true;\n }\n else if (it.sep) {\n this.stack.push(fs);\n }\n else {\n Object.assign(it, { key: fs, sep: [] });\n this.onKeyLine = true;\n }\n return;\n }\n default: {\n const bv = this.startBlockValue(map);\n if (bv) {\n if (bv.type === 'block-seq') {\n if (!it.explicitKey &&\n it.sep &&\n !includesToken(it.sep, 'newline')) {\n yield* this.pop({\n type: 'error',\n offset: this.offset,\n message: 'Unexpected block-seq-ind on same line with key',\n source: this.source\n });\n return;\n }\n }\n else if (atMapIndent) {\n map.items.push({ start });\n }\n this.stack.push(bv);\n return;\n }\n }\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *blockSequence(seq) {\n const it = seq.items[seq.items.length - 1];\n switch (this.type) {\n case 'newline':\n if (it.value) {\n const end = 'end' in it.value ? it.value.end : undefined;\n const last = Array.isArray(end) ? end[end.length - 1] : undefined;\n if (last?.type === 'comment')\n end?.push(this.sourceToken);\n else\n seq.items.push({ start: [this.sourceToken] });\n }\n else\n it.start.push(this.sourceToken);\n return;\n case 'space':\n case 'comment':\n if (it.value)\n seq.items.push({ start: [this.sourceToken] });\n else {\n if (this.atIndentedComment(it.start, seq.indent)) {\n const prev = seq.items[seq.items.length - 2];\n const end = prev?.value?.end;\n if (Array.isArray(end)) {\n Array.prototype.push.apply(end, it.start);\n end.push(this.sourceToken);\n seq.items.pop();\n return;\n }\n }\n it.start.push(this.sourceToken);\n }\n return;\n case 'anchor':\n case 'tag':\n if (it.value || this.indent <= seq.indent)\n break;\n it.start.push(this.sourceToken);\n return;\n case 'seq-item-ind':\n if (this.indent !== seq.indent)\n break;\n if (it.value || includesToken(it.start, 'seq-item-ind'))\n seq.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n }\n if (this.indent > seq.indent) {\n const bv = this.startBlockValue(seq);\n if (bv) {\n this.stack.push(bv);\n return;\n }\n }\n yield* this.pop();\n yield* this.step();\n }\n *flowCollection(fc) {\n const it = fc.items[fc.items.length - 1];\n if (this.type === 'flow-error-end') {\n let top;\n do {\n yield* this.pop();\n top = this.peek(1);\n } while (top?.type === 'flow-collection');\n }\n else if (fc.end.length === 0) {\n switch (this.type) {\n case 'comma':\n case 'explicit-key-ind':\n if (!it || it.sep)\n fc.items.push({ start: [this.sourceToken] });\n else\n it.start.push(this.sourceToken);\n return;\n case 'map-value-ind':\n if (!it || it.value)\n fc.items.push({ start: [], key: null, sep: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n Object.assign(it, { key: null, sep: [this.sourceToken] });\n return;\n case 'space':\n case 'comment':\n case 'newline':\n case 'anchor':\n case 'tag':\n if (!it || it.value)\n fc.items.push({ start: [this.sourceToken] });\n else if (it.sep)\n it.sep.push(this.sourceToken);\n else\n it.start.push(this.sourceToken);\n return;\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar': {\n const fs = this.flowScalar(this.type);\n if (!it || it.value)\n fc.items.push({ start: [], key: fs, sep: [] });\n else if (it.sep)\n this.stack.push(fs);\n else\n Object.assign(it, { key: fs, sep: [] });\n return;\n }\n case 'flow-map-end':\n case 'flow-seq-end':\n fc.end.push(this.sourceToken);\n return;\n }\n const bv = this.startBlockValue(fc);\n /* istanbul ignore else should not happen */\n if (bv)\n this.stack.push(bv);\n else {\n yield* this.pop();\n yield* this.step();\n }\n }\n else {\n const parent = this.peek(2);\n if (parent.type === 'block-map' &&\n ((this.type === 'map-value-ind' && parent.indent === fc.indent) ||\n (this.type === 'newline' &&\n !parent.items[parent.items.length - 1].sep))) {\n yield* this.pop();\n yield* this.step();\n }\n else if (this.type === 'map-value-ind' &&\n parent.type !== 'flow-collection') {\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n fixFlowSeqItems(fc);\n const sep = fc.end.splice(1, fc.end.length);\n sep.push(this.sourceToken);\n const map = {\n type: 'block-map',\n offset: fc.offset,\n indent: fc.indent,\n items: [{ start, key: fc, sep }]\n };\n this.onKeyLine = true;\n this.stack[this.stack.length - 1] = map;\n }\n else {\n yield* this.lineEnd(fc);\n }\n }\n }\n flowScalar(type) {\n if (this.onNewLine) {\n let nl = this.source.indexOf('\\n') + 1;\n while (nl !== 0) {\n this.onNewLine(this.offset + nl);\n nl = this.source.indexOf('\\n', nl) + 1;\n }\n }\n return {\n type,\n offset: this.offset,\n indent: this.indent,\n source: this.source\n };\n }\n startBlockValue(parent) {\n switch (this.type) {\n case 'alias':\n case 'scalar':\n case 'single-quoted-scalar':\n case 'double-quoted-scalar':\n return this.flowScalar(this.type);\n case 'block-scalar-header':\n return {\n type: 'block-scalar',\n offset: this.offset,\n indent: this.indent,\n props: [this.sourceToken],\n source: ''\n };\n case 'flow-map-start':\n case 'flow-seq-start':\n return {\n type: 'flow-collection',\n offset: this.offset,\n indent: this.indent,\n start: this.sourceToken,\n items: [],\n end: []\n };\n case 'seq-item-ind':\n return {\n type: 'block-seq',\n offset: this.offset,\n indent: this.indent,\n items: [{ start: [this.sourceToken] }]\n };\n case 'explicit-key-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n start.push(this.sourceToken);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, explicitKey: true }]\n };\n }\n case 'map-value-ind': {\n this.onKeyLine = true;\n const prev = getPrevProps(parent);\n const start = getFirstKeyStartProps(prev);\n return {\n type: 'block-map',\n offset: this.offset,\n indent: this.indent,\n items: [{ start, key: null, sep: [this.sourceToken] }]\n };\n }\n }\n return null;\n }\n atIndentedComment(start, indent) {\n if (this.type !== 'comment')\n return false;\n if (this.indent <= indent)\n return false;\n return start.every(st => st.type === 'newline' || st.type === 'space');\n }\n *documentEnd(docEnd) {\n if (this.type !== 'doc-mode') {\n if (docEnd.end)\n docEnd.end.push(this.sourceToken);\n else\n docEnd.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n *lineEnd(token) {\n switch (this.type) {\n case 'comma':\n case 'doc-start':\n case 'doc-end':\n case 'flow-seq-end':\n case 'flow-map-end':\n case 'map-value-ind':\n yield* this.pop();\n yield* this.step();\n break;\n case 'newline':\n this.onKeyLine = false;\n // fallthrough\n case 'space':\n case 'comment':\n default:\n // all other values are errors\n if (token.end)\n token.end.push(this.sourceToken);\n else\n token.end = [this.sourceToken];\n if (this.type === 'newline')\n yield* this.pop();\n }\n }\n}\n\nexports.Parser = Parser;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar errors = require('./errors.js');\nvar log = require('./log.js');\nvar identity = require('./nodes/identity.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\n\nfunction parseOptions(options) {\n const prettyErrors = options.prettyErrors !== false;\n const lineCounter$1 = options.lineCounter || (prettyErrors && new lineCounter.LineCounter()) || null;\n return { lineCounter: lineCounter$1, prettyErrors };\n}\n/**\n * Parse the input as a stream of YAML documents.\n *\n * Documents should be separated from each other by `...` or `---` marker lines.\n *\n * @returns If an empty `docs` array is returned, it will be of type\n * EmptyStream and contain additional stream information. In\n * TypeScript, you should use `'empty' in docs` as a type guard for it.\n */\nfunction parseAllDocuments(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n const docs = Array.from(composer$1.compose(parser$1.parse(source)));\n if (prettyErrors && lineCounter)\n for (const doc of docs) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n if (docs.length > 0)\n return docs;\n return Object.assign([], { empty: true }, composer$1.streamInfo());\n}\n/** Parse an input string into a single YAML.Document */\nfunction parseDocument(source, options = {}) {\n const { lineCounter, prettyErrors } = parseOptions(options);\n const parser$1 = new parser.Parser(lineCounter?.addNewLine);\n const composer$1 = new composer.Composer(options);\n // `doc` is always set by compose.end(true) at the very latest\n let doc = null;\n for (const _doc of composer$1.compose(parser$1.parse(source), true, source.length)) {\n if (!doc)\n doc = _doc;\n else if (doc.options.logLevel !== 'silent') {\n doc.errors.push(new errors.YAMLParseError(_doc.range.slice(0, 2), 'MULTIPLE_DOCS', 'Source contains multiple documents; please use YAML.parseAllDocuments()'));\n break;\n }\n }\n if (prettyErrors && lineCounter) {\n doc.errors.forEach(errors.prettifyError(source, lineCounter));\n doc.warnings.forEach(errors.prettifyError(source, lineCounter));\n }\n return doc;\n}\nfunction parse(src, reviver, options) {\n let _reviver = undefined;\n if (typeof reviver === 'function') {\n _reviver = reviver;\n }\n else if (options === undefined && reviver && typeof reviver === 'object') {\n options = reviver;\n }\n const doc = parseDocument(src, options);\n if (!doc)\n return null;\n doc.warnings.forEach(warning => log.warn(doc.options.logLevel, warning));\n if (doc.errors.length > 0) {\n if (doc.options.logLevel !== 'silent')\n throw doc.errors[0];\n else\n doc.errors = [];\n }\n return doc.toJS(Object.assign({ reviver: _reviver }, options));\n}\nfunction stringify(value, replacer, options) {\n let _replacer = null;\n if (typeof replacer === 'function' || Array.isArray(replacer)) {\n _replacer = replacer;\n }\n else if (options === undefined && replacer) {\n options = replacer;\n }\n if (typeof options === 'string')\n options = options.length;\n if (typeof options === 'number') {\n const indent = Math.round(options);\n options = indent < 1 ? undefined : indent > 8 ? { indent: 8 } : { indent };\n }\n if (value === undefined) {\n const { keepUndefined } = options ?? replacer ?? {};\n if (!keepUndefined)\n return undefined;\n }\n if (identity.isDocument(value) && !_replacer)\n return value.toString(options);\n return new Document.Document(value, _replacer, options).toString(options);\n}\n\nexports.parse = parse;\nexports.parseAllDocuments = parseAllDocuments;\nexports.parseDocument = parseDocument;\nexports.stringify = stringify;\n","'use strict';\n\nvar composer = require('./compose/composer.js');\nvar Document = require('./doc/Document.js');\nvar Schema = require('./schema/Schema.js');\nvar errors = require('./errors.js');\nvar Alias = require('./nodes/Alias.js');\nvar identity = require('./nodes/identity.js');\nvar Pair = require('./nodes/Pair.js');\nvar Scalar = require('./nodes/Scalar.js');\nvar YAMLMap = require('./nodes/YAMLMap.js');\nvar YAMLSeq = require('./nodes/YAMLSeq.js');\nvar cst = require('./parse/cst.js');\nvar lexer = require('./parse/lexer.js');\nvar lineCounter = require('./parse/line-counter.js');\nvar parser = require('./parse/parser.js');\nvar publicApi = require('./public-api.js');\nvar visit = require('./visit.js');\n\n\n\nexports.Composer = composer.Composer;\nexports.Document = Document.Document;\nexports.Schema = Schema.Schema;\nexports.YAMLError = errors.YAMLError;\nexports.YAMLParseError = errors.YAMLParseError;\nexports.YAMLWarning = errors.YAMLWarning;\nexports.Alias = Alias.Alias;\nexports.isAlias = identity.isAlias;\nexports.isCollection = identity.isCollection;\nexports.isDocument = identity.isDocument;\nexports.isMap = identity.isMap;\nexports.isNode = identity.isNode;\nexports.isPair = identity.isPair;\nexports.isScalar = identity.isScalar;\nexports.isSeq = identity.isSeq;\nexports.Pair = Pair.Pair;\nexports.Scalar = Scalar.Scalar;\nexports.YAMLMap = YAMLMap.YAMLMap;\nexports.YAMLSeq = YAMLSeq.YAMLSeq;\nexports.CST = cst;\nexports.Lexer = lexer.Lexer;\nexports.LineCounter = lineCounter.LineCounter;\nexports.Parser = parser.Parser;\nexports.parse = publicApi.parse;\nexports.parseAllDocuments = publicApi.parseAllDocuments;\nexports.parseDocument = publicApi.parseDocument;\nexports.stringify = publicApi.stringify;\nexports.visit = visit.visit;\nexports.visitAsync = visit.visitAsync;\n","import * as FileSystem from \"@effect/platform/FileSystem\"\nimport * as Effect from \"effect/Effect\"\nimport * as Ini from \"ini\"\nimport * as Toml from \"toml\"\nimport * as Yaml from \"yaml\"\n\n/** @internal */\nexport const fileParsers: Record<string, (content: string) => unknown> = {\n json: (content: string) => JSON.parse(content),\n yaml: (content: string) => Yaml.parse(content),\n yml: (content: string) => Yaml.parse(content),\n ini: (content: string) => Ini.parse(content),\n toml: (content: string) => Toml.parse(content),\n tml: (content: string) => Toml.parse(content)\n}\n\n/** @internal */\nexport const read = (\n path: string\n): Effect.Effect<readonly [path: string, content: Uint8Array], string, FileSystem.FileSystem> =>\n Effect.flatMap(\n FileSystem.FileSystem,\n (fs) =>\n Effect.matchEffect(fs.readFile(path), {\n onFailure: (error) => Effect.fail(`Could not read file (${path}): ${error}`),\n onSuccess: (content) => Effect.succeed([path, content] as const)\n })\n )\n\n/** @internal */\nexport const readString = (\n path: string\n): Effect.Effect<readonly [path: string, content: string], string, FileSystem.FileSystem> =>\n Effect.flatMap(\n FileSystem.FileSystem,\n (fs) =>\n Effect.matchEffect(fs.readFileString(path), {\n onFailure: (error) => Effect.fail(`Could not read file (${path}): ${error}`),\n onSuccess: (content) => Effect.succeed([path, content] as const)\n })\n )\n\n/** @internal */\nexport const parse = (\n path: string,\n content: string,\n format?: \"json\" | \"yaml\" | \"ini\" | \"toml\"\n): Effect.Effect<unknown, string> => {\n const parser = fileParsers[format ?? path.split(\".\").pop() as string]\n if (parser === undefined) {\n return Effect.fail(`Unsupported file format: ${format}`)\n }\n\n return Effect.try({\n try: () => parser(content),\n catch: (e) => `Could not parse ${format} file (${path}): ${e}`\n })\n}\n","/** @internal */\nexport function reduce<A, B>(b: B, f: (s: B, a: A) => B) {\n return function(iterable: Iterable<A>): B {\n if (Array.isArray(iterable)) {\n return iterable.reduce(f, b)\n }\n let result = b\n for (const n of iterable) {\n result = f(result, n)\n }\n return result\n }\n}\n\n/** @internal */\nexport function map<A, B>(f: (a: A) => B) {\n return function(iterable: Iterable<A>): Iterable<B> {\n if (Array.isArray(iterable)) {\n return iterable.map(f)\n }\n return (function*() {\n for (const n of iterable) {\n yield f(n)\n }\n })()\n }\n}\n","/**\n * @since 0.24.0\n */\n\nimport type { Kind, TypeLambda } from \"effect/HKT\"\nimport type { Of } from \"./Of.js\"\nimport type { SemiProduct } from \"./SemiProduct.js\"\n\n/**\n * @category type class\n * @since 0.24.0\n */\nexport interface Product<F extends TypeLambda> extends SemiProduct<F>, Of<F> {\n readonly productAll: <R, O, E, A>(\n collection: Iterable<Kind<F, R, O, E, A>>\n ) => Kind<F, R, O, E, Array<A>>\n}\n\n/**\n * @since 0.24.0\n */\nexport const tuple =\n <F extends TypeLambda>(F: Product<F>) =>\n <T extends ReadonlyArray<Kind<F, any, any, any, any>>>(...elements: T): Kind<\n F,\n ([T[number]] extends [Kind<F, infer R, any, any, any>] ? R\n : never),\n (T[number] extends never ? never\n : [T[number]] extends [Kind<F, any, infer O, any, any>] ? O\n : never),\n (T[number] extends never ? never\n : [T[number]] extends [Kind<F, any, any, infer E, any>] ? E\n : never),\n {\n [I in keyof T]: [T[I]] extends [Kind<F, any, any, any, infer A>] ? A\n : never\n }\n > => F.productAll(elements) as any\n\n/**\n * @since 0.24.0\n */\nexport const struct =\n <F extends TypeLambda>(F: Product<F>) =>\n <R extends { readonly [x: string]: Kind<F, any, any, any, any> }>(fields: R): Kind<\n F,\n ([R[keyof R]] extends [Kind<F, infer R, any, any, any>] ? R\n : never),\n (R[keyof R] extends never ? never\n : [R[keyof R]] extends [Kind<F, any, infer O, any, any>] ? O\n : never),\n (R[keyof R] extends never ? never\n : [R[keyof R]] extends [Kind<F, any, any, infer E, any>] ? E\n : never),\n {\n [K in keyof R]: [R[K]] extends [Kind<F, any, any, any, infer A>] ? A\n : never\n }\n > => {\n const keys = Object.keys(fields)\n return F.imap(F.productAll(keys.map((k) => fields[k])), (values) => {\n const out: any = {}\n for (let i = 0; i < values.length; i++) {\n out[keys[i]] = values[i]\n }\n return out\n }, (r) => keys.map((k) => r[k]))\n }\n","/**\n * @since 0.24.0\n */\nimport { dual } from \"effect/Function\"\nimport type { TypeLambda } from \"effect/HKT\"\nimport type { Order } from \"effect/Order\"\nimport { map, reduce } from \"./internal/Iterable.js\"\nimport type * as invariant from \"./Invariant.js\"\nimport * as product_ from \"./Product.js\"\nimport type * as semiProduct from \"./SemiProduct.js\"\n\n/**\n * @category type class\n * @since 0.24.0\n */\nexport interface Semigroup<A> {\n readonly combine: (self: A, that: A) => A\n readonly combineMany: (self: A, collection: Iterable<A>) => A\n}\n\n/**\n * @category type lambdas\n * @since 0.24.0\n */\nexport interface SemigroupTypeLambda extends TypeLambda {\n readonly type: Semigroup<this[\"Target\"]>\n}\n\n/**\n * The `combineMany` parameter is optional and defaults to a standard\n * implementation. You can provide a custom implementation when performance\n * optimizations are possible.\n *\n * @category constructors\n * @since 0.24.0\n */\nexport const make = <A>(\n combine: Semigroup<A>[\"combine\"],\n combineMany: Semigroup<A>[\"combineMany\"] = (self, collection) => reduce(self, combine)(collection)\n): Semigroup<A> => ({\n combine,\n combineMany\n})\n\n/**\n * `Semigroup` that returns last minimum of elements.\n *\n * @category constructors\n * @since 0.24.0\n */\nexport const min = <A>(O: Order<A>): Semigroup<A> => make((self, that) => O(self, that) === -1 ? self : that)\n\n/**\n * `Semigroup` that returns last maximum of elements.\n *\n * @category constructors\n * @since 0.24.0\n */\nexport const max = <A>(O: Order<A>): Semigroup<A> => make((self, that) => O(self, that) === 1 ? self : that)\n\n/**\n * @category constructors\n * @since 0.24.0\n */\nexport const constant = <A>(a: A): Semigroup<A> => make(() => a, () => a)\n\n/**\n * The dual of a `Semigroup`, obtained by flipping the arguments of `combine`.\n *\n * @since 0.24.0\n */\nexport const reverse = <A>(S: Semigroup<A>): Semigroup<A> =>\n make(\n (self, that) => S.combine(that, self),\n (self, collection) => {\n const reversed = Array.from(collection).reverse()\n return reversed.length > 0 ?\n S.combine(S.combineMany(reversed[0], reversed.slice(1)), self) :\n self\n }\n )\n\n/**\n * The `intercalate` API returns a function that takes a `Semigroup` instance and a separator value, and returns a new\n * `Semigroup` instance that combines values with the given separator.\n *\n * This API is useful when you want to combine values with a specific separator. For example, when you want to concatenate\n * an array of strings with a separator string in between.\n *\n * It is interesting to note that there is no equivalent API in the `Monoid` module. This is because the value `empty`,\n * which is required for the `Monoid` interface, cannot exist.\n *\n * @since 0.24.0\n */\nexport const intercalate: {\n /**\n * The `intercalate` API returns a function that takes a `Semigroup` instance and a separator value, and returns a new\n * `Semigroup` instance that combines values with the given separator.\n *\n * This API is useful when you want to combine values with a specific separator. For example, when you want to concatenate\n * an array of strings with a separator string in between.\n *\n * It is interesting to note that there is no equivalent API in the `Monoid` module. This is because the value `empty`,\n * which is required for the `Monoid` interface, cannot exist.\n *\n * @since 0.24.0\n */\n <A>(separator: A): (S: Semigroup<A>) => Semigroup<A>\n /**\n * The `intercalate` API returns a function that takes a `Semigroup` instance and a separator value, and returns a new\n * `Semigroup` instance that combines values with the given separator.\n *\n * This API is useful when you want to combine values with a specific separator. For example, when you want to concatenate\n * an array of strings with a separator string in between.\n *\n * It is interesting to note that there is no equivalent API in the `Monoid` module. This is because the value `empty`,\n * which is required for the `Monoid` interface, cannot exist.\n *\n * @since 0.24.0\n */\n <A>(S: Semigroup<A>, separator: A): Semigroup<A>\n} = dual(\n 2,\n <A>(S: Semigroup<A>, separator: A): Semigroup<A> => make((self, that) => S.combineMany(self, [separator, that]))\n)\n\n/**\n * Always return the first argument.\n *\n * @category instances\n * @since 0.24.0\n */\nexport const first = <A = never>(): Semigroup<A> => make((a) => a, (a) => a)\n\n/**\n * Always return the last argument.\n *\n * @category instances\n * @since 0.24.0\n */\nexport const last = <A = never>(): Semigroup<A> =>\n make(\n (_, second) => second,\n (self, collection) => {\n let a: A = self\n // eslint-disable-next-line no-empty\n for (a of collection) {}\n return a\n }\n )\n\n/**\n * @since 0.24.0\n */\nexport const imap: {\n /**\n * @since 0.24.0\n */\n <A, B>(to: (a: A) => B, from: (b: B) => A): (self: Semigroup<A>) => Semigroup<B>\n /**\n * @since 0.24.0\n */\n <A, B>(self: Semigroup<A>, to: (a: A) => B, from: (b: B) => A): Semigroup<B>\n} = dual(3, <A, B>(S: Semigroup<A>, to: (a: A) => B, from: (b: B) => A): Semigroup<B> =>\n make(\n (self, that) => to(S.combine(from(self), from(that))),\n (self, collection) => to(S.combineMany(from(self), map(from)(collection)))\n ))\n\n/**\n * @category instances\n * @since 0.24.0\n */\nexport const Invariant: invariant.Invariant<SemigroupTypeLambda> = {\n imap\n}\n\nconst product = <A, B>(self: Semigroup<A>, that: Semigroup<B>): Semigroup<[A, B]> =>\n make(([xa, xb], [ya, yb]) => [self.combine(xa, ya), that.combine(xb, yb)])\n\nconst productAll = <A>(collection: Iterable<Semigroup<A>>): Semigroup<Array<A>> => {\n return make((x, y) => {\n const len = Math.min(x.length, y.length)\n const out: Array<A> = []\n let collectionLength = 0\n for (const s of collection) {\n if (collectionLength >= len) {\n break\n }\n out.push(s.combine(x[collectionLength], y[collectionLength]))\n collectionLength++\n }\n return out\n })\n}\n\nconst productMany = <A>(\n self: Semigroup<A>,\n collection: Iterable<Semigroup<A>>\n): Semigroup<[A, ...Array<A>]> => {\n const semigroup = productAll(collection)\n return make((x, y) => [self.combine(x[0], y[0]), ...semigroup.combine(x.slice(1), y.slice(1))])\n}\n\n/**\n * @category instances\n * @since 0.24.0\n */\nexport const SemiProduct: semiProduct.SemiProduct<SemigroupTypeLambda> = {\n imap,\n product,\n productMany\n}\n\nconst of: <A>(a: A) => Semigroup<A> = constant\n\n/**\n * @category instances\n * @since 0.24.0\n */\nexport const Product: product_.Product<SemigroupTypeLambda> = {\n of,\n imap,\n product,\n productMany,\n productAll\n}\n\n/**\n * Similar to `Promise.all` but operates on `Semigroup`s.\n *\n * ```\n * [Semigroup<A>, Semigroup<B>, ...] -> Semigroup<[A, B, ...]>\n * ```\n *\n * This function creates and returns a new `Semigroup` for a tuple of values based on the given `Semigroup`s for each element in the tuple.\n * The returned `Semigroup` combines two tuples of the same type by applying the corresponding `Semigroup` passed as arguments to each element in the tuple.\n *\n * It is useful when you need to combine two tuples of the same type and you have a specific way of combining each element of the tuple.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const tuple: <T extends ReadonlyArray<Semigroup<any>>>(\n ...elements: T\n) => Semigroup<{ readonly [I in keyof T]: [T[I]] extends [Semigroup<infer A>] ? A : never }> = product_.tuple(Product)\n\n/**\n * Given a type `A`, this function creates and returns a `Semigroup` for `ReadonlyArray<A>`.\n * The returned `Semigroup` combines two arrays by concatenating them.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const array = <A>(): Semigroup<ReadonlyArray<A>> => make((self, that) => self.concat(that))\n\n/**\n * This function creates and returns a new `Semigroup` for a struct of values based on the given `Semigroup`s for each property in the struct.\n * The returned `Semigroup` combines two structs of the same type by applying the corresponding `Semigroup` passed as arguments to each property in the struct.\n *\n * It is useful when you need to combine two structs of the same type and you have a specific way of combining each property of the struct.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const struct: <R extends { readonly [x: string]: Semigroup<any> }>(\n fields: R\n) => Semigroup<{ readonly [K in keyof R]: [R[K]] extends [Semigroup<infer A>] ? A : never }> = product_.struct(Product)\n","/**\n * @since 0.24.0\n */\nimport type { Bounded } from \"./Bounded.js\"\nimport type { Semigroup } from \"./Semigroup.js\"\nimport * as semigroup from \"./Semigroup.js\"\n\n/**\n * @category type class\n * @since 0.24.0\n */\nexport interface Monoid<A> extends Semigroup<A> {\n readonly empty: A\n readonly combineAll: (collection: Iterable<A>) => A\n}\n\n/**\n * @category constructors\n * @since 0.24.0\n */\nexport const fromSemigroup = <A>(S: Semigroup<A>, empty: Monoid<A>[\"empty\"]): Monoid<A> => ({\n combine: S.combine,\n combineMany: S.combineMany,\n empty,\n combineAll: (collection) => S.combineMany(empty, collection)\n})\n\n/**\n * Get a monoid where `combine` will return the minimum, based on the provided bounded order.\n *\n * The `empty` value is the `maxBound` value.\n *\n * @category constructors\n * @since 0.24.0\n */\nexport const min = <A>(B: Bounded<A>): Monoid<A> => fromSemigroup(semigroup.min(B.compare), B.maxBound)\n\n/**\n * Get a monoid where `combine` will return the maximum, based on the provided bounded order.\n *\n * The `empty` value is the `minimum` value.\n *\n * @category constructors\n * @since 0.24.0\n */\nexport const max = <A>(B: Bounded<A>): Monoid<A> => fromSemigroup(semigroup.max(B.compare), B.minBound)\n\n/**\n * The dual of a `Monoid`, obtained by swapping the arguments of `combine`.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const reverse = <A>(M: Monoid<A>): Monoid<A> => fromSemigroup(semigroup.reverse(M), M.empty)\n\n/**\n * Similar to `Promise.all` but operates on `Monoid`s.\n *\n * ```\n * [Monoid<A>, Monoid<B>, ...] -> Monoid<[A, B, ...]>\n * ```\n *\n * This function creates and returns a new `Monoid` for a tuple of values based on the given `Monoid`s for each element in the tuple.\n * The returned `Monoid` combines two tuples of the same type by applying the corresponding `Monoid` passed as arguments to each element in the tuple.\n *\n * The `empty` value of the returned `Monoid` is the tuple of `empty` values of the input `Monoid`s.\n *\n * It is useful when you need to combine two tuples of the same type and you have a specific way of combining each element of the tuple.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const tuple = <T extends ReadonlyArray<Monoid<any>>>(\n ...elements: T\n): Monoid<{ readonly [I in keyof T]: [T[I]] extends [Monoid<infer A>] ? A : never }> => {\n const empty = elements.map((m) => m.empty) as any\n return fromSemigroup(semigroup.tuple(...elements), empty)\n}\n\n/**\n * Given a type `A`, this function creates and returns a `Semigroup` for `ReadonlyArray<A>`.\n *\n * The `empty` value is the empty array.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const array = <A>(): Monoid<ReadonlyArray<A>> => fromSemigroup(semigroup.array<A>(), [])\n\n/**\n * This function creates and returns a new `Monoid` for a struct of values based on the given `Monoid`s for each property in the struct.\n * The returned `Monoid` combines two structs of the same type by applying the corresponding `Monoid` passed as arguments to each property in the struct.\n *\n * The `empty` value of the returned `Monoid` is a struct where each property is the `empty` value of the corresponding `Monoid` in the input `monoids` object.\n *\n * It is useful when you need to combine two structs of the same type and you have a specific way of combining each property of the struct.\n *\n * @category combinators\n * @since 0.24.0\n */\nexport const struct = <R extends { readonly [x: string]: Monoid<any> }>(\n fields: R\n): Monoid<{ readonly [K in keyof R]: [R[K]] extends [Monoid<infer A>] ? A : never }> => {\n const empty = {} as any\n for (const k in fields) {\n if (Object.prototype.hasOwnProperty.call(fields, k)) {\n empty[k] = fields[k].empty\n }\n }\n return fromSemigroup(semigroup.struct(fields), empty)\n}\n","import type * as Color from \"../Color.js\"\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const black: Color.Color = {\n _tag: \"Black\"\n}\n\n/** @internal */\nexport const red: Color.Color = {\n _tag: \"Red\"\n}\n\n/** @internal */\nexport const green: Color.Color = {\n _tag: \"Green\"\n}\n\n/** @internal */\nexport const yellow: Color.Color = {\n _tag: \"Yellow\"\n}\n\n/** @internal */\nexport const blue: Color.Color = {\n _tag: \"Blue\"\n}\n\n/** @internal */\nexport const magenta: Color.Color = {\n _tag: \"Magenta\"\n}\n\n/** @internal */\nexport const cyan: Color.Color = {\n _tag: \"Cyan\"\n}\n\n/** @internal */\nexport const white: Color.Color = {\n _tag: \"White\"\n}\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const toCode = (color: Color.Color): number => {\n switch (color._tag) {\n case \"Black\": {\n return 0\n }\n case \"Red\": {\n return 1\n }\n case \"Green\": {\n return 2\n }\n case \"Yellow\": {\n return 3\n }\n case \"Blue\": {\n return 4\n }\n case \"Magenta\": {\n return 5\n }\n case \"Cyan\": {\n return 6\n }\n case \"White\": {\n return 7\n }\n }\n}\n","/**\n * This module contains the definition of a data structure meant to represent\n * the control sequence introducer `CSI n m`, also known as the Select Graphic\n * Rendition (SGR), where `n` is used to control terminal display attributes.\n *\n * Several SGR display attributes can be set in the same CSI sequence, separated\n * by semicolons.\n *\n * Each display attribute remains in effect in the terminal until a following\n * occurrence of SGR resets it.\n *\n * The SGR display attributes available in this module are **not** meant to be\n * exhaustive but instead are meant to provide the most common and\n * well-supported SGR display attributes (with a few exceptions).\n */\nimport type * as Color from \"../Color.js\"\nimport * as color from \"./color.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * Represents the the control sequence introducer `CSI n m`, also called the\n * Select Graphic Rendition (SGR), which controls terminal display attributes.\n *\n * @internal\n */\nexport type SGR =\n | Reset\n | SetBold\n | SetColor\n | SetItalicized\n | SetStrikethrough\n | SetUnderlined\n\n/**\n * Resets all SGR attributes to their default values.\n *\n * @internal\n */\nexport interface Reset {\n readonly _tag: \"Reset\"\n}\n\n/**\n * Controls whether the text displayed in the terminal is bold.\n *\n * @internal\n */\nexport interface SetBold {\n readonly _tag: \"SetBold\"\n readonly bold: boolean\n}\n\n/**\n * Controls the color of the text displayed in the terminal.\n *\n * @internal\n */\nexport interface SetColor {\n readonly _tag: \"SetColor\"\n readonly color: Color.Color\n readonly vivid: boolean\n readonly layer: SGR.Layer\n}\n\n/**\n * Controls whether the text displayed in the terminal is italicized.\n *\n * **NOTE**: not widely supported.\n *\n * @internal\n */\nexport interface SetItalicized {\n readonly _tag: \"SetItalicized\"\n readonly italicized: boolean\n}\n\n/**\n * Controls whether the text displayed in the terminal has a strikethrough.\n *\n * @internal\n */\nexport interface SetStrikethrough {\n readonly _tag: \"SetStrikethrough\"\n readonly strikethrough: boolean\n}\n\n/**\n * Controls whether the text displayed in the terminal is underlined.\n *\n * @internal\n */\nexport interface SetUnderlined {\n readonly _tag: \"SetUnderlined\"\n readonly underlined: boolean\n}\n\n/** @internal */\nexport declare namespace SGR {\n /** @internal */\n export type Layer = \"foreground\" | \"background\"\n}\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const reset: SGR = { _tag: \"Reset\" }\n\n/** @internal */\nexport const setBold = (bold: boolean): SGR => ({\n _tag: \"SetBold\",\n bold\n})\n\n/** @internal */\nexport const setColor = (color: Color.Color, vivid: boolean, layer: SGR.Layer): SGR => ({\n _tag: \"SetColor\",\n color,\n vivid,\n layer\n})\n\n/** @internal */\nexport const setItalicized = (italicized: boolean): SGR => ({\n _tag: \"SetItalicized\",\n italicized\n})\n\n/** @internal */\nexport const setStrikethrough = (strikethrough: boolean): SGR => ({\n _tag: \"SetStrikethrough\",\n strikethrough\n})\n\n/** @internal */\nexport const setUnderlined = (underlined: boolean): SGR => ({\n _tag: \"SetUnderlined\",\n underlined\n})\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const toCode = (self: SGR): number => {\n switch (self._tag) {\n case \"Reset\": {\n return 0\n }\n case \"SetBold\": {\n return self.bold ? 1 : 22\n }\n case \"SetColor\": {\n switch (self.layer) {\n case \"foreground\": {\n return self.vivid ? 90 + color.toCode(self.color) : 30 + color.toCode(self.color)\n }\n case \"background\": {\n return self.vivid ? 100 + color.toCode(self.color) : 40 + color.toCode(self.color)\n }\n }\n }\n case \"SetItalicized\": {\n return self.italicized ? 3 : 23\n }\n case \"SetStrikethrough\": {\n return self.strikethrough ? 9 : 29\n }\n case \"SetUnderlined\": {\n return self.underlined ? 4 : 24\n }\n }\n}\n\n/** @internal */\nexport const toEscapeSequence = (sgrs: Iterable<SGR>): string => csi(\"m\", sgrs)\n\nconst csi = (controlFunction: string, sgrs: Iterable<SGR>): string => {\n const params = Array.from(sgrs).map((sgr) => `${toCode(sgr)}`).join(\";\")\n return `\\u001b[${params}${controlFunction}`\n}\n","import * as Monoid from \"@effect/typeclass/Monoid\"\nimport * as Semigroup from \"@effect/typeclass/Semigroup\"\nimport * as Arr from \"effect/Array\"\nimport { dual } from \"effect/Function\"\nimport * as Option from \"effect/Option\"\nimport type * as Ansi from \"../Ansi.js\"\nimport type * as Color from \"../Color.js\"\nimport * as InternalColor from \"./color.js\"\nimport * as SGR from \"./sgr.js\"\n\nconst AnsiSymbolKey = \"@effect/printer-ansi/Ansi\"\n\n/** @internal */\nexport const AnsiTypeId: Ansi.AnsiTypeId = Symbol.for(AnsiSymbolKey) as Ansi.AnsiTypeId\n\ninterface AnsiImpl extends Ansi.Ansi {\n readonly commands: ReadonlyArray<string>\n readonly foreground: Option.Option<SGR.SGR>\n readonly background: Option.Option<SGR.SGR>\n readonly bold: Option.Option<SGR.SGR>\n readonly strikethrough: Option.Option<SGR.SGR>\n readonly italicized: Option.Option<SGR.SGR>\n readonly underlined: Option.Option<SGR.SGR>\n}\n\nconst make = (\n params: Partial<{\n readonly commands: ReadonlyArray<string>\n readonly foreground: Option.Option<SGR.SGR>\n readonly background: Option.Option<SGR.SGR>\n readonly bold: Option.Option<SGR.SGR>\n readonly strikethrough: Option.Option<SGR.SGR>\n readonly italicized: Option.Option<SGR.SGR>\n readonly underlined: Option.Option<SGR.SGR>\n }>\n): Ansi.Ansi => ({\n ...AnsiMonoid.empty,\n ...params\n})\n\n// -----------------------------------------------------------------------------\n// Instances\n// -----------------------------------------------------------------------------\n\nconst typeIdSemigroup = Semigroup.first<Ansi.AnsiTypeId>()\n\nconst getFirstSomeSemigroup: Semigroup.Semigroup<Option.Option<SGR.SGR>> = Semigroup.make(\n (self, that) => Option.isSome(self) ? self : that\n)\n\nconst AnsiSemigroup: Semigroup.Semigroup<AnsiImpl> = Semigroup.struct({\n [AnsiTypeId]: typeIdSemigroup,\n commands: Semigroup.array<string>(),\n foreground: getFirstSomeSemigroup,\n background: getFirstSomeSemigroup,\n bold: getFirstSomeSemigroup,\n italicized: getFirstSomeSemigroup,\n strikethrough: getFirstSomeSemigroup,\n underlined: getFirstSomeSemigroup\n})\n\nconst typeIdMonoid = Monoid.fromSemigroup(typeIdSemigroup, AnsiTypeId)\n\nconst monoidOrElse = Monoid.fromSemigroup(getFirstSomeSemigroup, Option.none())\n\nconst AnsiMonoid: Monoid.Monoid<AnsiImpl> = Monoid.struct({\n [AnsiTypeId]: typeIdMonoid,\n commands: Monoid.array<string>(),\n foreground: monoidOrElse,\n background: monoidOrElse,\n bold: monoidOrElse,\n italicized: monoidOrElse,\n strikethrough: monoidOrElse,\n underlined: monoidOrElse\n})\n\n/** @internal */\nexport const none: Ansi.Ansi = AnsiMonoid.empty\n\nconst ESC = \"\\u001B[\"\nconst BEL = \"\\u0007\"\nconst SEP = \";\"\n\n// -----------------------------------------------------------------------------\n// Styles\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const bold: Ansi.Ansi = make({\n bold: Option.some(SGR.setBold(true))\n})\n\n/** @internal */\nexport const italicized: Ansi.Ansi = make({ italicized: Option.some(SGR.setItalicized(true)) })\n\n/** @internal */\nexport const strikethrough: Ansi.Ansi = make({\n strikethrough: Option.some(SGR.setStrikethrough(true))\n})\n\n/** @internal */\nexport const underlined: Ansi.Ansi = make({ underlined: Option.some(SGR.setUnderlined(true)) })\n\n// -----------------------------------------------------------------------------\n// Colors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const brightColor = (color: Color.Color): Ansi.Ansi =>\n make({ foreground: Option.some(SGR.setColor(color, true, \"foreground\")) })\n\n/** @internal */\nexport const color = (color: Color.Color): Ansi.Ansi =>\n make({ foreground: Option.some(SGR.setColor(color, false, \"foreground\")) })\n\n/** @internal */\nexport const bgColorBright = (color: Color.Color): Ansi.Ansi =>\n make({ background: Option.some(SGR.setColor(color, true, \"background\")) })\n\n/** @internal */\nexport const bgColor = (color: Color.Color): Ansi.Ansi =>\n make({ background: Option.some(SGR.setColor(color, false, \"background\")) })\n\n/** @internal */\nexport const black: Ansi.Ansi = color(InternalColor.black)\n\n/** @internal */\nexport const red: Ansi.Ansi = color(InternalColor.red)\n\n/** @internal */\nexport const green: Ansi.Ansi = color(InternalColor.green)\n\n/** @internal */\nexport const yellow: Ansi.Ansi = color(InternalColor.yellow)\n\n/** @internal */\nexport const blue: Ansi.Ansi = color(InternalColor.blue)\n\n/** @internal */\nexport const magenta: Ansi.Ansi = color(InternalColor.magenta)\n\n/** @internal */\nexport const cyan: Ansi.Ansi = color(InternalColor.cyan)\n\n/** @internal */\nexport const white: Ansi.Ansi = color(InternalColor.white)\n\n/** @internal */\nexport const blackBright: Ansi.Ansi = brightColor(InternalColor.black)\n\n/** @internal */\nexport const redBright: Ansi.Ansi = brightColor(InternalColor.red)\n\n/** @internal */\nexport const greenBright: Ansi.Ansi = brightColor(InternalColor.green)\n\n/** @internal */\nexport const yellowBright: Ansi.Ansi = brightColor(InternalColor.yellow)\n\n/** @internal */\nexport const blueBright: Ansi.Ansi = brightColor(InternalColor.blue)\n\n/** @internal */\nexport const magentaBright: Ansi.Ansi = brightColor(InternalColor.magenta)\n\n/** @internal */\nexport const cyanBright: Ansi.Ansi = brightColor(InternalColor.cyan)\n\n/** @internal */\nexport const whiteBright: Ansi.Ansi = brightColor(InternalColor.white)\n\n/** @internal */\nexport const bgBlack: Ansi.Ansi = bgColor(InternalColor.black)\n\n/** @internal */\nexport const bgRed: Ansi.Ansi = bgColor(InternalColor.red)\n\n/** @internal */\nexport const bgGreen: Ansi.Ansi = bgColor(InternalColor.green)\n\n/** @internal */\nexport const bgYellow: Ansi.Ansi = bgColor(InternalColor.yellow)\n\n/** @internal */\nexport const bgBlue: Ansi.Ansi = bgColor(InternalColor.blue)\n\n/** @internal */\nexport const bgMagenta: Ansi.Ansi = bgColor(InternalColor.magenta)\n\n/** @internal */\nexport const bgCyan: Ansi.Ansi = bgColor(InternalColor.cyan)\n\n/** @internal */\nexport const bgWhite: Ansi.Ansi = bgColor(InternalColor.white)\n\n/** @internal */\nexport const bgBlackBright: Ansi.Ansi = bgColorBright(InternalColor.black)\n\n/** @internal */\nexport const bgRedBright: Ansi.Ansi = bgColorBright(InternalColor.red)\n\n/** @internal */\nexport const bgGreenBright: Ansi.Ansi = bgColorBright(InternalColor.green)\n\n/** @internal */\nexport const bgYellowBright: Ansi.Ansi = bgColorBright(InternalColor.yellow)\n\n/** @internal */\nexport const bgBlueBright: Ansi.Ansi = bgColorBright(InternalColor.blue)\n\n/** @internal */\nexport const bgMagentaBright: Ansi.Ansi = bgColorBright(InternalColor.magenta)\n\n/** @internal */\nexport const bgCyanBright: Ansi.Ansi = bgColorBright(InternalColor.cyan)\n\n/** @internal */\nexport const bgWhiteBright: Ansi.Ansi = bgColorBright(InternalColor.white)\n\n// -----------------------------------------------------------------------------\n// Commands\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const beep: Ansi.Ansi = make({ commands: Arr.of(BEL) })\n\n/** @internal */\nexport const cursorTo = (column: number, row?: number): Ansi.Ansi => {\n if (row === undefined) {\n const command = `${ESC}${Math.max(column + 1, 0)}G`\n return make({ commands: Arr.of(command) })\n }\n const command = `${ESC}${row + 1}${SEP}${Math.max(column + 1, 0)}H`\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const cursorMove = (column: number, row: number = 0): Ansi.Ansi => {\n let command = \"\"\n if (row < 0) {\n command += `${ESC}${-row}A`\n }\n if (row > 0) {\n command += `${ESC}${row}B`\n }\n if (column > 0) {\n command += `${ESC}${column}C`\n }\n if (column < 0) {\n command += `${ESC}${-column}D`\n }\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const cursorUp = (lines: number = 1): Ansi.Ansi => {\n const command = `${ESC}${lines}A`\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const cursorDown = (lines: number = 1): Ansi.Ansi => {\n const command = `${ESC}${lines}B`\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const cursorForward = (columns: number = 1): Ansi.Ansi => {\n const command = `${ESC}${columns}C`\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const cursorBackward = (columns: number = 1): Ansi.Ansi => {\n const command = `${ESC}${columns}D`\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const cursorLeft: Ansi.Ansi = make({ commands: Arr.of(`${ESC}G`) })\n\n/** @internal */\nexport const cursorSavePosition: Ansi.Ansi = make({ commands: Arr.of(`${ESC}s`) })\n\n/** @internal */\nexport const cursorRestorePosition: Ansi.Ansi = make({ commands: Arr.of(`${ESC}u`) })\n\n/** @internal */\nexport const cursorNextLine = (rows: number = 1): Ansi.Ansi => make({ commands: Arr.of(`${ESC}${rows}E`) })\n\n/** @internal */\nexport const cursorPrevLine = (rows: number = 1): Ansi.Ansi => make({ commands: Arr.of(`${ESC}${rows}F`) })\n\n/** @internal */\nexport const cursorHide: Ansi.Ansi = make({ commands: Arr.of(`${ESC}?25l`) })\n\n/** @internal */\nexport const cursorShow: Ansi.Ansi = make({ commands: Arr.of(`${ESC}?25h`) })\n\n/** @internal */\nexport const eraseLines = (rows: number): Ansi.Ansi => {\n let command = \"\"\n for (let i = 0; i < rows; i++) {\n command += `${ESC}2K` + (i < rows - 1 ? `${ESC}1A` : \"\")\n }\n if (rows > 0) {\n command += `${ESC}G`\n }\n return make({ commands: Arr.of(command) })\n}\n\n/** @internal */\nexport const eraseEndLine: Ansi.Ansi = make({ commands: Arr.of(`${ESC}K`) })\n\n/** @internal */\nexport const eraseStartLine: Ansi.Ansi = make({ commands: Arr.of(`${ESC}1K`) })\n\n/** @internal */\nexport const eraseLine: Ansi.Ansi = make({ commands: Arr.of(`${ESC}2K`) })\n\n/** @internal */\nexport const eraseDown: Ansi.Ansi = make({ commands: Arr.of(`${ESC}J`) })\n\n/** @internal */\nexport const eraseUp: Ansi.Ansi = make({ commands: Arr.of(`${ESC}1J`) })\n\n/** @internal */\nexport const eraseScreen: Ansi.Ansi = make({ commands: Arr.of(`${ESC}2J`) })\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const stringify = (self: Ansi.Ansi): string => stringifyInternal(self as AnsiImpl)\n\n// -----------------------------------------------------------------------------\n// Combinators\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const combine = dual<\n (that: Ansi.Ansi) => (self: Ansi.Ansi) => Ansi.Ansi,\n (self: Ansi.Ansi, that: Ansi.Ansi) => Ansi.Ansi\n>(2, (self, that) => combineInternal(self as AnsiImpl, that as AnsiImpl))\n\n// -----------------------------------------------------------------------------\n// Internal\n// -----------------------------------------------------------------------------\n\nconst combineInternal = (self: AnsiImpl, that: AnsiImpl): Ansi.Ansi => AnsiSemigroup.combine(self, that)\n\nconst stringifyInternal = (self: AnsiImpl): string => {\n const displaySequence = SGR.toEscapeSequence(\n Arr.getSomes([\n Option.some(SGR.reset),\n self.foreground,\n self.background,\n self.bold,\n self.italicized,\n self.strikethrough,\n self.underlined\n ])\n )\n const commandSequence = Arr.join(self.commands, \"\")\n return `${displaySequence}${commandSequence}`\n}\n","/**\n * @since 1.0.0\n */\nimport type { Color } from \"./Color.js\"\nimport * as InternalAnsi from \"./internal/ansi.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category symbol\n */\nexport const AnsiTypeId: unique symbol = InternalAnsi.AnsiTypeId as AnsiTypeId\n\n/**\n * @since 1.0.0\n * @category symbol\n */\nexport type AnsiTypeId = typeof AnsiTypeId\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Ansi extends Ansi.Proto {}\n\n/**\n * @since 1.0.0\n */\nexport declare namespace Ansi {\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Proto {\n readonly [AnsiTypeId]: AnsiTypeId\n }\n}\n\n// -----------------------------------------------------------------------------\n// Style Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const bold: Ansi = InternalAnsi.bold\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const italicized: Ansi = InternalAnsi.italicized\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const strikethrough: Ansi = InternalAnsi.strikethrough\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const underlined: Ansi = InternalAnsi.underlined\n\n// -----------------------------------------------------------------------------\n// Color Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const color: (color: Color) => Ansi = InternalAnsi.color\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const brightColor: (color: Color) => Ansi = InternalAnsi.brightColor\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const bgColor: (color: Color) => Ansi = InternalAnsi.bgColor\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const bgColorBright: (color: Color) => Ansi = InternalAnsi.bgColorBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const black: Ansi = InternalAnsi.black\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const red: Ansi = InternalAnsi.red\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const green: Ansi = InternalAnsi.green\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const yellow: Ansi = InternalAnsi.yellow\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const blue: Ansi = InternalAnsi.blue\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const magenta: Ansi = InternalAnsi.magenta\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const cyan: Ansi = InternalAnsi.cyan\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const white: Ansi = InternalAnsi.white\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const blackBright: Ansi = InternalAnsi.blackBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const redBright: Ansi = InternalAnsi.redBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const greenBright: Ansi = InternalAnsi.greenBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const yellowBright: Ansi = InternalAnsi.yellowBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const blueBright: Ansi = InternalAnsi.blueBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const magentaBright: Ansi = InternalAnsi.magentaBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const cyanBright: Ansi = InternalAnsi.cyanBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const whiteBright: Ansi = InternalAnsi.whiteBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgBlack: Ansi = InternalAnsi.bgBlack\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgRed: Ansi = InternalAnsi.bgRed\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgGreen: Ansi = InternalAnsi.bgGreen\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgYellow: Ansi = InternalAnsi.bgYellow\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgBlue: Ansi = InternalAnsi.bgBlue\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgMagenta: Ansi = InternalAnsi.bgMagenta\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgCyan: Ansi = InternalAnsi.bgCyan\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgWhite: Ansi = InternalAnsi.bgWhite\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgBlackBright: Ansi = InternalAnsi.bgBlackBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgRedBright: Ansi = InternalAnsi.bgRedBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgGreenBright: Ansi = InternalAnsi.bgGreenBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgYellowBright: Ansi = InternalAnsi.bgYellowBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgBlueBright: Ansi = InternalAnsi.bgBlueBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgMagentaBright: Ansi = InternalAnsi.bgMagentaBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgCyanBright: Ansi = InternalAnsi.bgCyanBright\n\n/**\n * @since 1.0.0\n * @category colors\n */\nexport const bgWhiteBright: Ansi = InternalAnsi.bgWhiteBright\n\n// -----------------------------------------------------------------------------\n// Command Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * Play a beeping sound.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const beep: Ansi = InternalAnsi.beep\n\n/**\n * Moves the cursor to the specified `row` and `column`.\n *\n * Though the ANSI Control Sequence for Cursor Position is `1`-based, this\n * method takes row and column values starting from `0` and adjusts them to `1`-\n * based values.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorTo: (column: number, row?: number) => Ansi = InternalAnsi.cursorTo\n\n/**\n * Move the cursor position the specified number of `rows` and `columns`\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen in either direction, then\n * additional movement will have no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorMove: (column: number, row?: number) => Ansi = InternalAnsi.cursorMove\n\n/**\n * Moves the cursor up by the specified number of `lines` (default `1`) relative\n * to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorUp: (lines?: number) => Ansi = InternalAnsi.cursorUp\n\n/**\n * Moves the cursor down by the specified number of `lines` (default `1`)\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorDown: (lines?: number) => Ansi = InternalAnsi.cursorDown\n\n/**\n * Moves the cursor forward by the specified number of `columns` (default `1`)\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorForward: (columns?: number) => Ansi = InternalAnsi.cursorForward\n\n/**\n * Moves the cursor backward by the specified number of `columns` (default `1`)\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorBackward: (columns?: number) => Ansi = InternalAnsi.cursorBackward\n\n/**\n * Moves the cursor to the first column of the current row.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorLeft: Ansi = InternalAnsi.cursorLeft\n\n/**\n * Saves the cursor position, encoding shift state and formatting attributes.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorSavePosition: Ansi = InternalAnsi.cursorSavePosition\n\n/**\n * Restores the cursor position, encoding shift state and formatting attributes\n * from the previous save, if any, otherwise resets these all to their defaults.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorRestorePosition: Ansi = InternalAnsi.cursorRestorePosition\n\n/**\n * Moves cursor to beginning of the line the specified number of rows down\n * (default `1`).\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorNextLine: (rows?: number) => Ansi = InternalAnsi.cursorNextLine\n\n/**\n * Moves cursor to beginning of the line the specified number of rows up\n * (default `1`).\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorPrevLine: (rows?: number) => Ansi = InternalAnsi.cursorPrevLine\n\n/**\n * Hides the cursor.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorHide: Ansi = InternalAnsi.cursorHide\n\n/**\n * Shows the cursor.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorShow: Ansi = InternalAnsi.cursorShow\n\n/**\n * Erase from the current cursor position up the specified amount of rows.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseLines: (rows: number) => Ansi = InternalAnsi.eraseLines\n\n/**\n * Clears from the current cursor position to the end of the current line.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseEndLine: Ansi = InternalAnsi.eraseEndLine\n\n/**\n * Clears from the current cursor position to the start of the current line.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseStartLine: Ansi = InternalAnsi.eraseStartLine\n\n/**\n * Clears the current line.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseLine: Ansi = InternalAnsi.eraseLine\n\n/**\n * Clears from the current cursor position to the end of the screen.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseDown: Ansi = InternalAnsi.eraseDown\n\n/**\n * Clears from the current cursor position to the beginning of the screen.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseUp: Ansi = InternalAnsi.eraseUp\n\n/**\n * Clears the entire screen and move the cursor to the upper left.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseScreen: Ansi = InternalAnsi.eraseScreen\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category destructors\n */\nexport const stringify: (self: Ansi) => string = InternalAnsi.stringify\n\n// -----------------------------------------------------------------------------\n// Instances\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @categrory combinators\n */\nexport const combine: {\n // -----------------------------------------------------------------------------\n // Instances\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @categrory combinators\n */\n (that: Ansi): (self: Ansi) => Ansi\n // -----------------------------------------------------------------------------\n // Instances\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @categrory combinators\n */\n (self: Ansi, that: Ansi): Ansi\n} = InternalAnsi.combine\n","import * as Equal from \"effect/Equal\"\nimport { dual } from \"effect/Function\"\nimport * as Hash from \"effect/Hash\"\nimport type * as Flatten from \"../Flatten.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\nconst FlattenSymbolKey = \"@effect/printer/Flatten\"\n\n/** @internal */\nexport const FlattenTypeId: Flatten.FlattenTypeId = Symbol.for(\n FlattenSymbolKey\n) as Flatten.FlattenTypeId\n\nconst protoHash = {\n Flattened: (self: Flatten.Flattened<any>) => Hash.combine(Hash.hash(self.value))(Hash.string(FlattenSymbolKey)),\n AlreadyFlat: (_: Flatten.AlreadyFlat<any>) =>\n Hash.combine(Hash.string(\"@effect/printer/Flattened/AlreadyFlat\"))(\n Hash.string(FlattenSymbolKey)\n ),\n NeverFlat: (_: Flatten.AlreadyFlat<any>) =>\n Hash.combine(Hash.string(\"@effect/printer/Flattened/NeverFlat\"))(Hash.string(FlattenSymbolKey))\n}\n\nconst protoEqual = {\n Flattened: (self: Flatten.Flattened<any>, that: unknown) =>\n isFlatten(that) && that._tag === \"Flattened\" && Equal.equals(self.value, that.value),\n AlreadyFlat: (_: Flatten.AlreadyFlat<any>, that: unknown) => isFlatten(that) && that._tag === \"AlreadyFlat\",\n NeverFlat: (_: Flatten.AlreadyFlat<any>, that: unknown) => isFlatten(that) && that._tag === \"NeverFlat\"\n}\n\nconst proto = {\n [FlattenTypeId]: { _A: (_: never) => _ },\n [Hash.symbol](this: Flatten.Flatten<any>): number {\n return Hash.cached(this, protoHash[this._tag](this as any))\n },\n [Equal.symbol](this: Flatten.Flatten<any>, that: unknown): boolean {\n return protoEqual[this._tag](this as any, that)\n }\n}\n\n// -----------------------------------------------------------------------------\n// Refinements\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const isFlatten = (u: unknown): u is Flatten.Flatten<unknown> =>\n typeof u === \"object\" && u != null && FlattenTypeId in u\n\n/** @internal */\nexport const isFlattened = <A>(self: Flatten.Flatten<A>): self is Flatten.Flattened<A> => self._tag === \"Flattened\"\n\n/** @internal */\nexport const isAlreadyFlat = <A>(self: Flatten.Flatten<A>): self is Flatten.AlreadyFlat<A> =>\n self._tag === \"AlreadyFlat\"\n\n/** @internal */\nexport const isNeverFlat = <A>(self: Flatten.Flatten<A>): self is Flatten.NeverFlat<A> => self._tag === \"NeverFlat\"\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const flattened = <A>(value: A): Flatten.Flatten<A> =>\n (() => {\n const op = Object.create(proto)\n op._tag = \"Flattened\"\n op.value = value\n return op\n })()\n\n/** @internal */\nexport const alreadyFlat: Flatten.Flatten<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"AlreadyFlat\"\n return op\n})()\n\n/** @internal */\nexport const neverFlat: Flatten.Flatten<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"NeverFlat\"\n return op\n})()\n\n// -----------------------------------------------------------------------------\n// Combinators\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const map = dual<\n <A, B>(f: (a: A) => B) => (self: Flatten.Flatten<A>) => Flatten.Flatten<B>,\n <A, B>(self: Flatten.Flatten<A>, f: (a: A) => B) => Flatten.Flatten<B>\n>(2, <A, B>(self: Flatten.Flatten<A>, f: (a: A) => B) => {\n switch (self._tag) {\n case \"Flattened\": {\n return flattened(f(self.value))\n }\n case \"AlreadyFlat\": {\n return alreadyFlat\n }\n case \"NeverFlat\": {\n return neverFlat\n }\n }\n})\n","import * as covariant from \"@effect/typeclass/Covariant\"\nimport type * as invariant from \"@effect/typeclass/Invariant\"\nimport type * as monoid from \"@effect/typeclass/Monoid\"\nimport type * as semigroup from \"@effect/typeclass/Semigroup\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport * as Equal from \"effect/Equal\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as Hash from \"effect/Hash\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport type * as Doc from \"../Doc.js\"\nimport type * as Flatten from \"../Flatten.js\"\nimport type * as PageWidth from \"../PageWidth.js\"\nimport * as InternalFlatten from \"./flatten.js\"\n\nconst DocSymbolKey = \"@effect/printer/Doc\"\n\n/** @internal */\nexport const DocTypeId: Doc.DocTypeId = Symbol.for(DocSymbolKey) as Doc.DocTypeId\n\nconst protoHash = {\n Fail: (_: Doc.Fail<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.hash(\"@effect/printer/Doc/Fail\")),\n Empty: (_: Doc.Empty<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.hash(\"@effect/printer/Doc/Empty\")),\n Char: (self: Doc.Char<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.string(self.char)),\n Text: (self: Doc.Text<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.string(self.text)),\n Line: (_: Doc.Line<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.hash(\"@effect/printer/Doc/Line\")),\n FlatAlt: (self: Doc.FlatAlt<any>) =>\n Hash.combine(Hash.hash(DocSymbolKey))(\n Hash.combine(Hash.hash(self.left))(Hash.hash(self.right))\n ),\n Cat: (self: Doc.Cat<any>) =>\n Hash.combine(Hash.hash(DocSymbolKey))(\n Hash.combine(Hash.hash(self.left))(Hash.hash(self.right))\n ),\n Nest: (self: Doc.Nest<any>) =>\n Hash.combine(Hash.hash(DocSymbolKey))(\n Hash.combine(Hash.hash(self.indent))(Hash.hash(self.doc))\n ),\n Union: (self: Doc.Union<any>) =>\n Hash.combine(Hash.hash(DocSymbolKey))(\n Hash.combine(Hash.hash(self.left))(Hash.hash(self.right))\n ),\n Column: (self: Doc.Column<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.hash(self.react)),\n WithPageWidth: (self: Doc.WithPageWidth<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.hash(self.react)),\n Nesting: (self: Doc.Nesting<any>) => Hash.combine(Hash.hash(DocSymbolKey))(Hash.hash(self.react)),\n Annotated: (self: Doc.Annotated<any>) =>\n Hash.combine(Hash.hash(DocSymbolKey))(\n Hash.combine(Hash.hash(self.annotation))(Hash.hash(self.doc))\n )\n} as const\n\nconst protoEqual = {\n Fail: (_: Doc.Fail<any>, that: unknown) => isDoc(that) && that._tag === \"Fail\",\n Empty: (_: Doc.Empty<any>, that: unknown) => isDoc(that) && that._tag === \"Empty\",\n Char: (self: Doc.Char<any>, that: unknown) => isDoc(that) && that._tag === \"Char\" && self.char === that.char,\n Text: (self: Doc.Text<any>, that: unknown) => isDoc(that) && that._tag === \"Text\" && self.text === that.text,\n Line: (_: Doc.Line<any>, that: unknown) => isDoc(that) && that._tag === \"Line\",\n FlatAlt: (self: Doc.FlatAlt<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"FlatAlt\" &&\n Equal.equals(that.left)(self.left) &&\n Equal.equals(that.right)(self.right),\n Cat: (self: Doc.Cat<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"Cat\" &&\n Equal.equals(that.left)(self.left) &&\n Equal.equals(that.right)(self.right),\n Nest: (self: Doc.Nest<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"Nest\" &&\n self.indent === that.indent &&\n Equal.equals(that.doc)(self.doc),\n Union: (self: Doc.Union<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"Union\" &&\n Equal.equals(that.left)(self.left) &&\n Equal.equals(that.right)(self.right),\n Column: (self: Doc.Column<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"Column\" &&\n Equal.equals(that.react)(self.react),\n WithPageWidth: (self: Doc.WithPageWidth<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"WithPageWidth\" &&\n Equal.equals(that.react)(self.react),\n Nesting: (self: Doc.Nesting<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"Nesting\" &&\n Equal.equals(that.react)(self.react),\n Annotated: (self: Doc.Annotated<any>, that: unknown) =>\n isDoc(that) &&\n that._tag === \"Annotated\" &&\n Equal.equals(that.annotation)(self.annotation) &&\n Equal.equals(that.doc)(self.doc)\n} as const\n\nconst proto = {\n [DocTypeId]: { _A: (_: never) => _ },\n [Hash.symbol](this: Doc.Doc<any>) {\n return Hash.cached(this, protoHash[this._tag](this as any))\n },\n [Equal.symbol](this: Doc.Doc<any>, that: unknown): boolean {\n return protoEqual[this._tag](this as any, that as any)\n },\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\n// -----------------------------------------------------------------------------\n// Refinements\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const isDoc = (u: unknown): u is Doc.Doc<unknown> => typeof u === \"object\" && u != null && DocTypeId in u\n\n/** @internal */\nexport const isFail = <A>(self: Doc.Doc<A>): self is Doc.Fail<A> => self._tag === \"Fail\"\n\n/** @internal */\nexport const isEmpty = <A>(self: Doc.Doc<A>): self is Doc.Empty<A> => self._tag === \"Empty\"\n\n/** @internal */\nexport const isChar = <A>(self: Doc.Doc<A>): self is Doc.Char<A> => self._tag === \"Char\"\n\n/** @internal */\nexport const isText = <A>(self: Doc.Doc<A>): self is Doc.Text<A> => self._tag === \"Text\"\n\n/** @internal */\nexport const isLine = <A>(self: Doc.Doc<A>): self is Doc.Line<A> => self._tag === \"Line\"\n\n/** @internal */\nexport const isFlatAlt = <A>(self: Doc.Doc<A>): self is Doc.FlatAlt<A> => self._tag === \"FlatAlt\"\n\n/** @internal */\nexport const isCat = <A>(self: Doc.Doc<A>): self is Doc.Cat<A> => self._tag === \"Cat\"\n\n/** @internal */\nexport const isNest = <A>(self: Doc.Doc<A>): self is Doc.Nest<A> => self._tag === \"Nest\"\n\n/** @internal */\nexport const isUnion = <A>(self: Doc.Doc<A>): self is Doc.Union<A> => self._tag === \"Union\"\n\n/** @internal */\nexport const isColumn = <A>(self: Doc.Doc<A>): self is Doc.Column<A> => self._tag === \"Column\"\n\n/** @internal */\nexport const isWithPageWidth = <A>(self: Doc.Doc<A>): self is Doc.WithPageWidth<A> => self._tag === \"WithPageWidth\"\n\n/** @internal */\nexport const isNesting = <A>(self: Doc.Doc<A>): self is Doc.Nesting<A> => self._tag === \"Nesting\"\n\n/** @internal */\nexport const isAnnotated = <A>(self: Doc.Doc<A>): self is Doc.Annotated<A> => self._tag === \"Annotated\"\n\n// -----------------------------------------------------------------------------\n// Primitives\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const char = (char: string): Doc.Doc<never> => {\n const op = Object.create(proto)\n op._tag = \"Char\"\n op.char = char\n return op\n}\n\n/** @internal */\nexport const text = (text: string): Doc.Doc<never> => {\n const op = Object.create(proto)\n op._tag = \"Text\"\n op.text = text\n return op\n}\n\n/** @internal */\nexport const flatAlt = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => {\n const op = Object.create(proto)\n op._tag = \"FlatAlt\"\n op.left = self\n op.right = that\n return op\n})\n\n/** @internal */\nexport const union = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => {\n const op = Object.create(proto)\n op._tag = \"Union\"\n op.left = self\n op.right = that\n return op\n})\n\n/** @internal */\nexport const cat = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => {\n const op = Object.create(proto)\n op._tag = \"Cat\"\n op.left = self\n op.right = that\n return op\n})\n\n/** @internal */\nexport const empty: Doc.Doc<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"Empty\"\n return op\n})()\n\n/** @internal */\nexport const fail: Doc.Doc<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"Fail\"\n return op\n})()\n\n/** @internal */\nexport const hardLine: Doc.Doc<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"Line\"\n return op\n})()\n\n/** @internal */\nexport const line: Doc.Doc<never> = flatAlt(hardLine, char(\" \"))\n\n/** @internal */\nexport const lineBreak: Doc.Doc<never> = flatAlt(hardLine, empty)\n\n/** @internal */\nexport const softLine: Doc.Doc<never> = union(char(\" \"), hardLine)\n\n/** @internal */\nexport const softLineBreak: Doc.Doc<never> = union(empty, hardLine)\n\n/** @internal */\nexport const backslash: Doc.Doc<never> = char(\"\\\\\")\n\n/** @internal */\nexport const colon: Doc.Doc<never> = char(\":\")\n\n/** @internal */\nexport const comma: Doc.Doc<never> = char(\",\")\n\n/** @internal */\nexport const dot: Doc.Doc<never> = char(\".\")\n\n/** @internal */\nexport const dquote: Doc.Doc<never> = char(\"\\\"\")\n\n/** @internal */\nexport const equalSign: Doc.Doc<never> = char(\"=\")\n\n/** @internal */\nexport const langle: Doc.Doc<never> = char(\"<\")\n\n/** @internal */\nexport const lbrace: Doc.Doc<never> = char(\"{\")\n\n/** @internal */\nexport const lbracket: Doc.Doc<never> = char(\"[\")\n\n/** @internal */\nexport const lparen: Doc.Doc<never> = char(\"(\")\n\n/** @internal */\nexport const rangle: Doc.Doc<never> = char(\">\")\n\n/** @internal */\nexport const rbrace: Doc.Doc<never> = char(\"}\")\n\n/** @internal */\nexport const rbracket: Doc.Doc<never> = char(\"]\")\n\n/** @internal */\nexport const rparen: Doc.Doc<never> = char(\")\")\n\n/** @internal */\nexport const semi: Doc.Doc<never> = char(\";\")\n\n/** @internal */\nexport const slash: Doc.Doc<never> = char(\"/\")\n\n/** @internal */\nexport const squote: Doc.Doc<never> = char(\"'\")\n\n/** @internal */\nexport const space: Doc.Doc<never> = char(\" \")\n\n/** @internal */\nexport const vbar: Doc.Doc<never> = char(\"|\")\n\n/** @internal */\nexport const cats = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> => group(vcat(docs))\n\n/** @internal */\nexport const catWithLine = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => cat(self, cat(line, that)))\n\n/** @internal */\nexport const catWithLineBreak = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => cat(self, cat(lineBreak, that)))\n\n/** @internal */\nexport const catWithSoftLine = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => cat(self, cat(softLine, that)))\n\n/** @internal */\nexport const catWithSoftLineBreak = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => cat(self, cat(softLineBreak, that)))\n\n/** @internal */\nexport const catWithSpace = dual<\n <B>(that: Doc.Doc<B>) => <A>(self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, that: Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, that) => cat(self, cat(space, that)))\n\n/** @internal */\nexport const concatWith = dual<\n <A>(\n f: (left: Doc.Doc<A>, right: Doc.Doc<A>) => Doc.Doc<A>\n ) => (docs: Iterable<Doc.Doc<A>>) => Doc.Doc<A>,\n <A>(\n docs: Iterable<Doc.Doc<A>>,\n f: (left: Doc.Doc<A>, right: Doc.Doc<A>) => Doc.Doc<A>\n ) => Doc.Doc<A>\n>(2, (docs, f) =>\n Arr.matchRight(Arr.fromIterable(docs), {\n onEmpty: () => empty,\n onNonEmpty: (init, last) => Arr.reduceRight(init, last, (curr, acc) => f(acc, curr))\n }))\n\n/** @internal */\nexport const vcat = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n concatWith(docs, (left, right) => catWithLineBreak(left, right))\n\n/** @internal */\nexport const hcat = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> => concatWith(docs, (left, right) => cat(left, right))\n\n/** @internal */\nexport const fillCat = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n concatWith(docs, (left, right) => catWithSoftLineBreak(left, right))\n\n// -----------------------------------------------------------------------------\n// Separation\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const hsep = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n concatWith(docs, (left, right) => catWithSpace(left, right))\n\n/** @internal */\nexport const vsep = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n concatWith(docs, (left, right) => catWithLine(left, right))\n\n/** @internal */\nexport const fillSep = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n concatWith(docs, (left, right) => catWithSoftLine(left, right))\n\n/** @internal */\nexport const seps = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> => group(vsep(docs))\n\n/** @internal */\nexport const group = <A>(self: Doc.Doc<A>): Doc.Doc<A> => {\n switch (self._tag) {\n case \"FlatAlt\": {\n const flattened = changesUponFlattening(self.right)\n switch (flattened._tag) {\n case \"Flattened\": {\n return union(flattened.value, self.left)\n }\n case \"AlreadyFlat\": {\n return union(self.right, self.left)\n }\n case \"NeverFlat\": {\n return self.left\n }\n }\n }\n case \"Union\": {\n return self\n }\n default: {\n const flattened = changesUponFlattening(self)\n return InternalFlatten.isFlattened(flattened) ? union(flattened.value, self) : self\n }\n }\n}\n\n// -----------------------------------------------------------------------------\n// Reactive Layouts\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const column = <A>(react: (position: number) => Doc.Doc<A>): Doc.Doc<A> => {\n const op = Object.create(proto)\n op._tag = \"Column\"\n op.react = react\n return op\n}\n\n/** @internal */\nexport const nesting = <A>(react: (level: number) => Doc.Doc<A>): Doc.Doc<A> => {\n const op = Object.create(proto)\n op._tag = \"Nesting\"\n op.react = react\n return op\n}\n\n/** @internal */\nexport const width = dual<\n <A, B>(react: (width: number) => Doc.Doc<B>) => (self: Doc.Doc<A>) => Doc.Doc<A | B>,\n <A, B>(self: Doc.Doc<A>, react: (width: number) => Doc.Doc<B>) => Doc.Doc<A | B>\n>(2, (self, react) => column((colStart) => cat(self, column((colEnd) => react(colEnd - colStart)))))\n\n/** @internal */\nexport const pageWidth = <A>(react: (pageWidth: PageWidth.PageWidth) => Doc.Doc<A>): Doc.Doc<A> => {\n const op = Object.create(proto)\n op._tag = \"WithPageWidth\"\n op.react = react\n return op\n}\n\n// -----------------------------------------------------------------------------\n// Alignment\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const nest = dual<\n (indent: number) => <A>(self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, indent: number) => Doc.Doc<A>\n>(2, (self, indent) =>\n indent === 0 ? self : (() => {\n const op = Object.create(proto)\n op._tag = \"Nest\"\n op.indent = indent\n op.doc = self\n return op\n })())\n\n/** @internal */\nexport const align = <A>(self: Doc.Doc<A>): Doc.Doc<A> =>\n column((position) => nesting((level) => nest(self, position - level)))\n\n/** @internal */\nexport const hang = dual<\n (indent: number) => <A>(self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, indent: number) => Doc.Doc<A>\n>(2, (self, indent) => align(nest(self, indent)))\n\n/** @internal */\nexport const indent = dual<\n (indent: number) => <A>(self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, indent: number) => Doc.Doc<A>\n>(2, (self, indent) => hang(cat(spaces(indent), self), indent))\n\n/** @internal */\nexport const encloseSep = dual<\n <A, B, C>(\n left: Doc.Doc<A>,\n right: Doc.Doc<B>,\n sep: Doc.Doc<C>\n ) => <D>(\n docs: Iterable<Doc.Doc<D>>\n ) => Doc.Doc<A | B | C | D>,\n <A, B, C, D>(\n docs: Iterable<Doc.Doc<D>>,\n left: Doc.Doc<A>,\n right: Doc.Doc<B>,\n sep: Doc.Doc<C>\n ) => Doc.Doc<A | B | C | D>\n>(4, <A, B, C, D>(\n docs: Iterable<Doc.Doc<D>>,\n left: Doc.Doc<A>,\n right: Doc.Doc<B>,\n sep: Doc.Doc<C>\n) => {\n const documents = Arr.fromIterable(docs)\n if (Arr.isEmptyReadonlyArray(documents)) {\n return cat(left, right)\n }\n if (documents.length === 1) {\n return cat(left, cat(documents[0]!, right))\n }\n const xs = pipe(\n Arr.makeBy(documents.length - 1, () => sep),\n Arr.prepend(left),\n Arr.zipWith(documents, (left: Doc.Doc<A | C>, right) => cat(left, right))\n )\n return cat(cats(xs), right)\n})\n\n/** @internal */\nexport const list = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n group(\n encloseSep(\n docs,\n flatAlt(text(\"[ \"), lbracket),\n flatAlt(text(\" ]\"), rbracket),\n text(\", \")\n )\n )\n\n/** @internal */\nexport const tupled = <A>(docs: Iterable<Doc.Doc<A>>): Doc.Doc<A> =>\n group(\n encloseSep(\n docs,\n flatAlt(text(\"( \"), lparen),\n flatAlt(text(\" )\"), rparen),\n text(\", \")\n )\n )\n\n// -----------------------------------------------------------------------------\n// Filling\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const fill = dual<\n (w: number) => <A>(self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, w: number) => Doc.Doc<A>\n>(2, (self, w) => width(self, (i) => spaces(w - i)))\n\n/** @internal */\nexport const fillBreak = dual<\n (w: number) => <A>(self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, w: number) => Doc.Doc<A>\n>(2, (self, w) =>\n width(self, (i) => (i > w ?\n nest(lineBreak, w) :\n spaces(w - i))))\n\n// -----------------------------------------------------------------------------\n// Flattening\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const flatten = <A>(self: Doc.Doc<A>): Doc.Doc<A> => Effect.runSync(flattenSafe(self))\n\nconst flattenSafe = <A>(self: Doc.Doc<A>): Effect.Effect<Doc.Doc<A>> =>\n Effect.gen(function*() {\n switch (self._tag) {\n case \"Fail\": {\n return self\n }\n case \"Empty\": {\n return self\n }\n case \"Char\": {\n return self\n }\n case \"Text\": {\n return self\n }\n case \"Line\": {\n return fail\n }\n case \"FlatAlt\": {\n return yield* flattenSafe(self.right)\n }\n case \"Cat\": {\n const left = yield* flattenSafe(self.left)\n const right = yield* flattenSafe(self.right)\n return cat(left, right)\n }\n case \"Nest\": {\n const doc = yield* flattenSafe(self.doc)\n return nest(doc, self.indent)\n }\n case \"Union\": {\n return yield* flattenSafe(self.left)\n }\n case \"Column\": {\n return column((position) => flatten(self.react(position)))\n }\n case \"WithPageWidth\": {\n return pageWidth((pageWidth) => flatten(self.react(pageWidth)))\n }\n case \"Nesting\": {\n return nesting((level) => flatten(self.react(level)))\n }\n case \"Annotated\": {\n const doc = yield* flattenSafe(self.doc)\n return annotate(doc, self.annotation)\n }\n }\n })\n\n/** @internal */\nexport const changesUponFlattening = <A>(self: Doc.Doc<A>): Flatten.Flatten<Doc.Doc<A>> =>\n Effect.runSync(changesUponFlatteningSafe(self))\n\nconst changesUponFlatteningSafe = <A>(self: Doc.Doc<A>): Effect.Effect<Flatten.Flatten<Doc.Doc<A>>> =>\n Effect.gen(function*() {\n switch (self._tag) {\n case \"Fail\":\n case \"Line\": {\n return InternalFlatten.neverFlat\n }\n case \"Empty\":\n case \"Char\":\n case \"Text\": {\n return InternalFlatten.alreadyFlat\n }\n case \"FlatAlt\": {\n const doc = yield* flattenSafe(self.right)\n return InternalFlatten.flattened(doc)\n }\n case \"Cat\": {\n const left = yield* changesUponFlatteningSafe(self.left)\n const right = yield* changesUponFlatteningSafe(self.right)\n if (InternalFlatten.isNeverFlat(left) || InternalFlatten.isNeverFlat(right)) {\n return InternalFlatten.neverFlat\n }\n if (InternalFlatten.isFlattened(left) && InternalFlatten.isFlattened(right)) {\n return InternalFlatten.flattened(cat(left.value, right.value))\n }\n if (InternalFlatten.isFlattened(left) && InternalFlatten.isAlreadyFlat(right)) {\n return InternalFlatten.flattened(cat(left.value, self.right))\n }\n if (InternalFlatten.isAlreadyFlat(left) && InternalFlatten.isFlattened(right)) {\n return InternalFlatten.flattened(cat(self.left, right.value))\n }\n if (InternalFlatten.isAlreadyFlat(left) && InternalFlatten.isAlreadyFlat(right)) {\n return InternalFlatten.alreadyFlat\n }\n throw new Error(\n \"[BUG]: Doc.changesUponFlattening - unable to flatten a Cat document \" +\n \"- please open an issue at https://github.com/IMax153/contentlayer/issues/new\"\n )\n }\n case \"Nest\": {\n return yield* pipe(\n changesUponFlatteningSafe(self.doc),\n Effect.map(InternalFlatten.map((doc) => nest(doc, self.indent)))\n )\n }\n case \"Union\": {\n return InternalFlatten.flattened(self.left)\n }\n case \"Column\": {\n const doc = column((position) => Effect.runSync(flattenSafe(self.react(position))))\n return InternalFlatten.flattened(doc)\n }\n case \"WithPageWidth\": {\n const doc = pageWidth((pageWidth) => Effect.runSync(flattenSafe(self.react(pageWidth))))\n return InternalFlatten.flattened(doc)\n }\n case \"Nesting\": {\n const doc = nesting((level) => Effect.runSync(flattenSafe(self.react(level))))\n return InternalFlatten.flattened(doc)\n }\n case \"Annotated\": {\n return yield* pipe(\n changesUponFlatteningSafe(self.doc),\n Effect.map(InternalFlatten.map((doc) => annotate(doc, self.annotation)))\n )\n }\n }\n })\n\n// -----------------------------------------------------------------------------\n// Annotations\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const annotate = dual<\n <A>(annotation: A) => (self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, annotation: A) => Doc.Doc<A>\n>(2, (self, annotation) => {\n const op = Object.create(proto)\n op._tag = \"Annotated\"\n op.doc = self\n op.annotation = annotation\n return op\n})\n\n/** @internal */\nexport const alterAnnotations = dual<\n <A, B>(f: (a: A) => Iterable<B>) => (self: Doc.Doc<A>) => Doc.Doc<B>,\n <A, B>(self: Doc.Doc<A>, f: (a: A) => Iterable<B>) => Doc.Doc<B>\n>(2, (self, f) => Effect.runSync(alterAnnotationsSafe(self, f)))\n\nconst alterAnnotationsSafe = <A, B>(\n self: Doc.Doc<A>,\n f: (a: A) => Iterable<B>\n): Effect.Effect<Doc.Doc<B>> => {\n switch (self._tag) {\n case \"Cat\": {\n return Effect.zipWith(\n Effect.suspend(() => alterAnnotationsSafe(self.left, f)),\n alterAnnotationsSafe(self.right, f),\n (left, right) => cat(left, right)\n )\n }\n case \"FlatAlt\": {\n return Effect.zipWith(\n Effect.suspend(() => alterAnnotationsSafe(self.left, f)),\n alterAnnotationsSafe(self.right, f),\n (left, right) => flatAlt(left, right)\n )\n }\n case \"Union\": {\n return Effect.zipWith(\n Effect.suspend(() => alterAnnotationsSafe(self.left, f)),\n alterAnnotationsSafe(self.right, f),\n (left, right) => union(left, right)\n )\n }\n case \"Nest\": {\n return Effect.map(\n Effect.suspend(() => alterAnnotationsSafe(self.doc, f)),\n nest(self.indent)\n )\n }\n case \"Column\": {\n return Effect.succeed(\n column((position) => Effect.runSync(alterAnnotationsSafe(self.react(position), f)))\n )\n }\n case \"WithPageWidth\": {\n return Effect.succeed(\n pageWidth((pageWidth) => Effect.runSync(alterAnnotationsSafe(self.react(pageWidth), f)))\n )\n }\n case \"Nesting\": {\n return Effect.succeed(\n nesting((level) => Effect.runSync(alterAnnotationsSafe(self.react(level), f)))\n )\n }\n case \"Annotated\": {\n return Effect.map(alterAnnotationsSafe(self.doc, f), (doc) =>\n Arr.reduceRight(\n Arr.fromIterable(f(self.annotation)),\n doc,\n (doc, b) => annotate(doc, b)\n ))\n }\n default: {\n return Effect.succeed(self as unknown as Doc.Doc<B>)\n }\n }\n}\n\n/** @internal */\nexport const reAnnotate = dual<\n <A, B>(f: (a: A) => B) => (self: Doc.Doc<A>) => Doc.Doc<B>,\n <A, B>(self: Doc.Doc<A>, f: (a: A) => B) => Doc.Doc<B>\n>(2, (self, f) => alterAnnotations(self, (a) => [f(a)]))\n\n/** @internal */\nexport const unAnnotate = <A>(self: Doc.Doc<A>): Doc.Doc<never> => alterAnnotations(() => [])(self)\n\n// -----------------------------------------------------------------------------\n// Instances\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const map: {\n <A, B>(f: (a: A) => B): (self: Doc.Doc<A>) => Doc.Doc<B>\n <A, B>(self: Doc.Doc<A>, f: (a: A) => B): Doc.Doc<B>\n} = reAnnotate\n\n/** @internal */\nexport const imap = covariant.imap<Doc.Doc.TypeLambda>(map)\n\n/** @internal */\nexport const getSemigroup = <A>(): semigroup.Semigroup<Doc.Doc<A>> => ({\n combine: cat,\n combineMany: (self, others) => cat(self, cats(others))\n})\n\n/** @internal */\nexport const getMonoid = <A>(): monoid.Monoid<Doc.Doc<A>> => ({\n empty,\n combine: cat,\n combineMany: (self, others) => cat(self, cats(others)),\n combineAll: cats\n})\n\n/** @internal */\nexport const Covariant: covariant.Covariant<Doc.Doc.TypeLambda> = {\n map,\n imap\n}\n\n/** @internal */\nexport const Invariant: invariant.Invariant<Doc.Doc.TypeLambda> = {\n imap\n}\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const string = (str: string): Doc.Doc<never> => {\n return cats(\n str.split(\"\\n\").map((s) =>\n s.length === 0\n ? empty\n : s.length === 1\n ? char(s)\n : text(s)\n )\n )\n}\n\n/** @internal */\nexport const surround = dual<\n <A, B, C>(left: Doc.Doc<A>, right: Doc.Doc<B>) => (self: Doc.Doc<C>) => Doc.Doc<A | B | C>,\n <A, B, C>(self: Doc.Doc<C>, left: Doc.Doc<A>, right: Doc.Doc<B>) => Doc.Doc<A | B | C>\n>(3, (self, left, right) => cat(left, cat(self, right)))\n\n/** @internal */\nexport const singleQuoted = <A>(self: Doc.Doc<A>): Doc.Doc<A> => surround(self, squote, squote)\n\n/** @Internal */\nexport const doubleQuoted = <A>(self: Doc.Doc<A>): Doc.Doc<A> => surround(self, dquote, dquote)\n\n/** @internal */\nexport const parenthesized = <A>(self: Doc.Doc<A>): Doc.Doc<A> => surround(self, lparen, rparen)\n\n/** @internal */\nexport const angleBracketed = <A>(self: Doc.Doc<A>): Doc.Doc<A> => surround(self, langle, rangle)\n\n/** @internal */\nexport const squareBracketed = <A>(self: Doc.Doc<A>): Doc.Doc<A> => surround(self, lbracket, rbracket)\n\n/** @internal */\nexport const curlyBraced = <A>(self: Doc.Doc<A>): Doc.Doc<A> => surround(self, lbrace, rbrace)\n\n/** @internal */\nexport const spaces = (n: number): Doc.Doc<never> => {\n if (n <= 0) {\n return empty\n }\n if (n === 1) {\n return char(\" \")\n }\n return text(textSpaces(n))\n}\n\n/** @internal */\nexport const words = (str: string, splitChar = \" \"): ReadonlyArray<Doc.Doc<never>> =>\n str.split(splitChar).map((word) => {\n if (word === \"\") {\n return empty\n }\n if (word === \"\\n\") {\n return hardLine\n }\n if (word.length === 1) {\n return char(word)\n }\n return text(word)\n })\n\n/** @internal */\nexport const reflow = (s: string, char = \" \"): Doc.Doc<never> => fillSep(words(s, char))\n\n/** @internal */\nexport const punctuate = dual<\n <A, B>(punctuator: Doc.Doc<A>) => (docs: Iterable<Doc.Doc<B>>) => ReadonlyArray<Doc.Doc<A | B>>,\n <A, B>(docs: Iterable<Doc.Doc<B>>, punctuator: Doc.Doc<A>) => ReadonlyArray<Doc.Doc<A | B>>\n>(2, (docs, punctuator) => {\n const documents = Arr.fromIterable(docs)\n return Arr.map(documents, (x, i) => documents.length - 1 === i ? x : cat(x, punctuator))\n})\n\n/** @internal */\nexport const match = dual<\n <A, R>(\n patterns: {\n readonly Fail: () => R\n readonly Empty: () => R\n readonly Char: (char: string) => R\n readonly Text: (text: string) => R\n readonly Line: () => R\n readonly FlatAlt: (x: Doc.Doc<A>, y: Doc.Doc<A>) => R\n readonly Cat: (x: Doc.Doc<A>, y: Doc.Doc<A>) => R\n readonly Nest: (indent: number, doc: Doc.Doc<A>) => R\n readonly Union: (x: Doc.Doc<A>, y: Doc.Doc<A>) => R\n readonly Column: (react: (position: number) => Doc.Doc<A>) => R\n readonly WithPageWidth: (react: (pageWidth: PageWidth.PageWidth) => Doc.Doc<A>) => R\n readonly Nesting: (react: (level: number) => Doc.Doc<A>) => R\n readonly Annotated: (annotation: A, doc: Doc.Doc<A>) => R\n }\n ) => (self: Doc.Doc<A>) => R,\n <A, R>(\n self: Doc.Doc<A>,\n patterns: {\n readonly Fail: () => R\n readonly Empty: () => R\n readonly Char: (char: string) => R\n readonly Text: (text: string) => R\n readonly Line: () => R\n readonly FlatAlt: (x: Doc.Doc<A>, y: Doc.Doc<A>) => R\n readonly Cat: (x: Doc.Doc<A>, y: Doc.Doc<A>) => R\n readonly Nest: (indent: number, doc: Doc.Doc<A>) => R\n readonly Union: (x: Doc.Doc<A>, y: Doc.Doc<A>) => R\n readonly Column: (react: (position: number) => Doc.Doc<A>) => R\n readonly WithPageWidth: (react: (pageWidth: PageWidth.PageWidth) => Doc.Doc<A>) => R\n readonly Nesting: (react: (level: number) => Doc.Doc<A>) => R\n readonly Annotated: (annotation: A, doc: Doc.Doc<A>) => R\n }\n ) => R\n>(2, (self, patterns) => {\n switch (self._tag) {\n case \"Fail\": {\n return patterns.Fail()\n }\n case \"Empty\": {\n return patterns.Empty()\n }\n case \"Char\": {\n return patterns.Char(self.char)\n }\n case \"Text\": {\n return patterns.Text(self.text)\n }\n case \"Line\": {\n return patterns.Line()\n }\n case \"FlatAlt\": {\n return patterns.FlatAlt(self.left, self.right)\n }\n case \"Cat\": {\n return patterns.Cat(self.left, self.right)\n }\n case \"Nest\": {\n return patterns.Nest(self.indent, self.doc)\n }\n case \"Union\": {\n return patterns.Union(self.left, self.right)\n }\n case \"Column\": {\n return patterns.Column(self.react)\n }\n case \"WithPageWidth\": {\n return patterns.WithPageWidth(self.react)\n }\n case \"Nesting\": {\n return patterns.Nesting(self.react)\n }\n case \"Annotated\": {\n return patterns.Annotated(self.annotation, self.doc)\n }\n }\n})\n\n/** @internal */\nexport const textSpaces = (n: number): string => {\n let s = \"\"\n for (let i = 0; i < n; i++) {\n s = s += \" \"\n }\n return s\n}\n","import * as covariant from \"@effect/typeclass/Covariant\"\nimport type * as invariant from \"@effect/typeclass/Invariant\"\nimport type * as monoid from \"@effect/typeclass/Monoid\"\nimport * as Effect from \"effect/Effect\"\nimport * as Equal from \"effect/Equal\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as Hash from \"effect/Hash\"\nimport * as List from \"effect/List\"\nimport * as Option from \"effect/Option\"\nimport type * as DocStream from \"../DocStream.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\nconst DocStreamSymbolKey = \"@effect/printer/DocStream\"\n\n/** @internal */\nexport const DocStreamTypeId: DocStream.DocStreamTypeId = Symbol.for(\n DocStreamSymbolKey\n) as DocStream.DocStreamTypeId\n\nconst protoHash = {\n FailedStream: (_: DocStream.FailedStream<any>) =>\n pipe(\n Hash.string(\"@effect/printer/DocStream/FailedStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey))\n ),\n EmptyStream: (_: DocStream.EmptyStream<any>) =>\n pipe(\n Hash.string(\"@effect/printer/DocStream/EmptyStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey))\n ),\n CharStream: (self: DocStream.CharStream<any>) =>\n pipe(\n Hash.hash(\"@effect/printer/DocStream/CharStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey)),\n Hash.combine(Hash.string(self.char)),\n Hash.combine(Hash.hash(self.stream))\n ),\n TextStream: (self: DocStream.TextStream<any>) =>\n pipe(\n Hash.string(\"@effect/printer/DocStream/TextStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey)),\n Hash.combine(Hash.string(self.text)),\n Hash.combine(Hash.hash(self.stream))\n ),\n LineStream: (self: DocStream.LineStream<any>) =>\n pipe(\n Hash.string(\"@effect/printer/DocStream/LineStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey)),\n Hash.combine(Hash.hash(self.stream))\n ),\n PushAnnotationStream: (self: DocStream.PushAnnotationStream<any>) =>\n pipe(\n Hash.string(\"@effect/printer/DocStream/PopAnnotationStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey)),\n Hash.combine(Hash.hash(self.annotation)),\n Hash.combine(Hash.hash(self.stream))\n ),\n PopAnnotationStream: (self: DocStream.PopAnnotationStream<any>) =>\n pipe(\n Hash.string(\"@effect/printer/DocStream/PopAnnotationStream\"),\n Hash.combine(Hash.string(DocStreamSymbolKey)),\n Hash.combine(Hash.hash(self.stream))\n )\n}\n\nconst protoEqual = {\n FailedStream: (self: DocStream.FailedStream<any>, that: unknown) => isDocStream(that) && that._tag === \"FailedStream\",\n EmptyStream: (self: DocStream.EmptyStream<any>, that: unknown) => isDocStream(that) && that._tag === \"EmptyStream\",\n CharStream: (self: DocStream.CharStream<any>, that: unknown) =>\n isDocStream(that) &&\n that._tag === \"CharStream\" &&\n self.char === that.char &&\n Equal.equals(self.stream, that.stream),\n TextStream: (self: DocStream.TextStream<any>, that: unknown) =>\n isDocStream(that) &&\n that._tag === \"TextStream\" &&\n self.text === that.text &&\n Equal.equals(self.stream, that.stream),\n LineStream: (self: DocStream.LineStream<any>, that: unknown) =>\n isDocStream(that) &&\n that._tag === \"LineStream\" &&\n Equal.equals(self.stream, that.stream),\n PushAnnotationStream: (self: DocStream.PushAnnotationStream<any>, that: unknown) =>\n isDocStream(that) &&\n that._tag === \"PushAnnotationStream\" &&\n Equal.equals(self.annotation, that.annotation) &&\n Equal.equals(self.stream, that.stream),\n PopAnnotationStream: (self: DocStream.PopAnnotationStream<any>, that: unknown) =>\n isDocStream(that) &&\n that._tag === \"PopAnnotationStream\" &&\n Equal.equals(self.stream, that.stream)\n}\n\nconst proto = {\n [DocStreamTypeId]: { _A: (_: never) => _ },\n [Hash.symbol](this: DocStream.DocStream<any>): number {\n return Hash.cached(this, protoHash[this._tag](this as any))\n },\n [Equal.symbol](this: DocStream.DocStream<any>, that: unknown): boolean {\n return protoEqual[this._tag](this as any, that)\n }\n}\n\n// -----------------------------------------------------------------------------\n// Refinements\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const isDocStream = (u: unknown): u is DocStream.DocStream<unknown> =>\n typeof u === \"object\" && u != null && DocStreamTypeId in u\n\n/** @internal */\nexport const isFailedStream = <A>(\n self: DocStream.DocStream<A>\n): self is DocStream.FailedStream<A> => self._tag === \"FailedStream\"\n\n/** @internal */\nexport const isEmptyStream = <A>(self: DocStream.DocStream<A>): self is DocStream.EmptyStream<A> =>\n self._tag === \"EmptyStream\"\n\n/** @internal */\nexport const isCharStream = <A>(self: DocStream.DocStream<A>): self is DocStream.CharStream<A> =>\n self._tag === \"CharStream\"\n\n/** @internal */\nexport const isTextStream = <A>(self: DocStream.DocStream<A>): self is DocStream.TextStream<A> =>\n self._tag === \"TextStream\"\n\n/** @internal */\nexport const isLineStream = <A>(self: DocStream.DocStream<A>): self is DocStream.LineStream<A> =>\n self._tag === \"LineStream\"\n\n/** @internal */\nexport const isPushAnnotationStream = <A>(\n self: DocStream.DocStream<A>\n): self is DocStream.PushAnnotationStream<A> => self._tag === \"PushAnnotationStream\"\n\n/** @internal */\nexport const isPopAnnotationStream = <A>(\n self: DocStream.DocStream<A>\n): self is DocStream.PopAnnotationStream<A> => self._tag === \"PopAnnotationStream\"\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const failed: DocStream.DocStream<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"FailedStream\"\n return op\n})()\n\n/** @internal */\nexport const empty: DocStream.DocStream<never> = (() => {\n const op = Object.create(proto)\n op._tag = \"EmptyStream\"\n return op\n})()\n\n/** @internal */\nexport const char = dual<\n (char: string) => <A>(self: DocStream.DocStream<A>) => DocStream.DocStream<A>,\n <A>(self: DocStream.DocStream<A>, char: string) => DocStream.DocStream<A>\n>(2, (self, char) => {\n const op = Object.create(proto)\n op._tag = \"CharStream\"\n op.char = char\n op.stream = self\n return op\n})\n\n/** @internal */\nexport const text = dual<\n (text: string) => <A>(self: DocStream.DocStream<A>) => DocStream.DocStream<A>,\n <A>(self: DocStream.DocStream<A>, text: string) => DocStream.DocStream<A>\n>(2, (self, text) => {\n const op = Object.create(proto)\n op._tag = \"TextStream\"\n op.text = text\n op.stream = self\n return op\n})\n\n/** @internal */\nexport const line = dual<\n (indentation: number) => <A>(self: DocStream.DocStream<A>) => DocStream.DocStream<A>,\n <A>(self: DocStream.DocStream<A>, indentation: number) => DocStream.DocStream<A>\n>(2, (self, indentation) => {\n const op = Object.create(proto)\n op._tag = \"LineStream\"\n op.indentation = indentation\n op.stream = self\n return op\n})\n\n/** @internal */\nexport const pushAnnotation = dual<\n <B>(annotation: B) => <A>(self: DocStream.DocStream<A>) => DocStream.DocStream<A | B>,\n <A, B>(self: DocStream.DocStream<A>, annotation: B) => DocStream.DocStream<A | B>\n>(2, (self, annotation) => {\n const op = Object.create(proto)\n op._tag = \"PushAnnotationStream\"\n op.annotation = annotation\n op.stream = self\n return op\n})\n\n/** @internal */\nexport const popAnnotation = <A>(stream: DocStream.DocStream<A>): DocStream.DocStream<A> => {\n const op = Object.create(proto)\n op._tag = \"PopAnnotationStream\"\n op.stream = stream\n return op\n}\n\n// -----------------------------------------------------------------------------\n// Annotations\n// -----------------------------------------------------------------------------\n\ntype AnnotationRemoval = \"Remove\" | \"DontRemove\"\n\nconst Remove: AnnotationRemoval = \"Remove\"\n\nconst DontRemove: AnnotationRemoval = \"DontRemove\"\n\n/** @internal */\nexport const alterAnnotations = dual<\n <A, B>(f: (a: A) => Option.Option<B>) => (self: DocStream.DocStream<A>) => DocStream.DocStream<B>,\n <A, B>(self: DocStream.DocStream<A>, f: (a: A) => Option.Option<B>) => DocStream.DocStream<B>\n>(2, (self, f) => Effect.runSync(alterAnnotationSafe(self, f, List.nil())))\n\nconst alterAnnotationSafe = <A, B>(\n self: DocStream.DocStream<A>,\n f: (a: A) => Option.Option<B>,\n stack: List.List<AnnotationRemoval>\n): Effect.Effect<DocStream.DocStream<B>> => {\n switch (self._tag) {\n case \"CharStream\": {\n return Effect.map(\n Effect.suspend(() => alterAnnotationSafe(self.stream, f, stack)),\n char(self.char)\n )\n }\n case \"TextStream\": {\n return Effect.map(\n Effect.suspend(() => alterAnnotationSafe(self.stream, f, stack)),\n text(self.text)\n )\n }\n case \"LineStream\": {\n return Effect.map(\n Effect.suspend(() => alterAnnotationSafe(self.stream, f, stack)),\n line(self.indentation)\n )\n }\n case \"PushAnnotationStream\": {\n const altered = f(self.annotation)\n if (Option.isSome(altered)) {\n return Effect.map(\n Effect.suspend(() => alterAnnotationSafe(self.stream, f, List.prepend(stack, DontRemove))),\n pushAnnotation(altered.value)\n )\n }\n return Effect.suspend(() => alterAnnotationSafe(self.stream, f, List.prepend(stack, Remove)))\n }\n case \"PopAnnotationStream\": {\n if (List.isNil(stack)) {\n return Effect.dieMessage(\n \"BUG: DocStream.alterAnnotations - received empty stack to pop from\" +\n \" - please report an issue at https://github.com/Effect-TS/printer/issues\"\n )\n }\n if (stack.head === DontRemove) {\n return Effect.map(\n Effect.suspend(() => alterAnnotationSafe(self.stream, f, stack.tail)),\n popAnnotation\n )\n }\n return Effect.suspend(() => alterAnnotationSafe(self.stream, f, stack.tail))\n }\n default: {\n return Effect.succeed(self as unknown as DocStream.DocStream<B>)\n }\n }\n}\n\n/** @internal */\nexport const reAnnotate = dual<\n <A, B>(f: (a: A) => B) => (self: DocStream.DocStream<A>) => DocStream.DocStream<B>,\n <A, B>(self: DocStream.DocStream<A>, f: (a: A) => B) => DocStream.DocStream<B>\n>(2, (self, f) => Effect.runSync(reAnnotateSafe(self, f)))\n\nconst reAnnotateSafe = <A, B>(\n self: DocStream.DocStream<A>,\n f: (a: A) => B\n): Effect.Effect<DocStream.DocStream<B>> => {\n switch (self._tag) {\n case \"CharStream\": {\n return Effect.map(\n Effect.suspend(() => reAnnotateSafe(self.stream, f)),\n char(self.char)\n )\n }\n case \"TextStream\": {\n return Effect.map(\n Effect.suspend(() => reAnnotateSafe(self.stream, f)),\n text(self.text)\n )\n }\n case \"LineStream\": {\n return Effect.map(\n Effect.suspend(() => reAnnotateSafe(self.stream, f)),\n line(self.indentation)\n )\n }\n case \"PushAnnotationStream\": {\n return Effect.map(\n Effect.suspend(() => reAnnotateSafe(self.stream, f)),\n pushAnnotation(f(self.annotation))\n )\n }\n case \"PopAnnotationStream\": {\n return Effect.suspend(() => reAnnotateSafe(self.stream, f))\n }\n default: {\n return Effect.succeed(self as unknown as DocStream.DocStream<B>)\n }\n }\n}\n\n/** @internal */\nexport const unAnnotate = <A>(self: DocStream.DocStream<A>): DocStream.DocStream<never> =>\n Effect.runSync(unAnnotateSafe(self))\n\nconst unAnnotateSafe = <A>(\n self: DocStream.DocStream<A>\n): Effect.Effect<DocStream.DocStream<never>> => {\n switch (self._tag) {\n case \"CharStream\": {\n return Effect.map(\n Effect.suspend(() => unAnnotateSafe(self.stream)),\n char(self.char)\n )\n }\n case \"TextStream\": {\n return Effect.map(\n Effect.suspend(() => unAnnotateSafe(self.stream)),\n text(self.text)\n )\n }\n case \"LineStream\": {\n return Effect.map(\n Effect.suspend(() => unAnnotateSafe(self.stream)),\n line(self.indentation)\n )\n }\n case \"PushAnnotationStream\":\n case \"PopAnnotationStream\": {\n return Effect.suspend(() => unAnnotateSafe(self.stream))\n }\n default: {\n return Effect.succeed(self as unknown as DocStream.DocStream<never>)\n }\n }\n}\n\n// -----------------------------------------------------------------------------\n// Folding\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const foldMap = dual<\n <A, M>(M: monoid.Monoid<M>, f: (a: A) => M) => (self: DocStream.DocStream<A>) => M,\n <A, M>(self: DocStream.DocStream<A>, M: monoid.Monoid<M>, f: (a: A) => M) => M\n>(3, (self, M, f) => Effect.runSync(foldMapSafe(self, M, f)))\n\nconst foldMapSafe = <A, M>(\n self: DocStream.DocStream<A>,\n M: monoid.Monoid<M>,\n f: (a: A) => M\n): Effect.Effect<M> => {\n switch (self._tag) {\n case \"CharStream\": {\n return Effect.suspend(() => foldMapSafe(self.stream, M, f))\n }\n case \"TextStream\": {\n return Effect.suspend(() => foldMapSafe(self.stream, M, f))\n }\n case \"LineStream\": {\n return Effect.suspend(() => foldMapSafe(self.stream, M, f))\n }\n case \"PushAnnotationStream\": {\n return Effect.map(\n Effect.suspend(() => foldMapSafe(self.stream, M, f)),\n (that) => M.combine(f(self.annotation), that)\n )\n }\n case \"PopAnnotationStream\": {\n return Effect.suspend(() => foldMapSafe(self.stream, M, f))\n }\n default: {\n return Effect.succeed(M.empty)\n }\n }\n}\n\n/** @internal */\nexport const match = dual<\n <A, R>(\n patterns: {\n readonly FailedStream: () => R\n readonly EmptyStream: () => R\n readonly CharStream: (char: string, stream: DocStream.DocStream<A>) => R\n readonly TextStream: (text: string, stream: DocStream.DocStream<A>) => R\n readonly LineStream: (indentation: number, stream: DocStream.DocStream<A>) => R\n readonly PushAnnotationStream: (annotation: A, stream: DocStream.DocStream<A>) => R\n readonly PopAnnotationStream: (stream: DocStream.DocStream<A>) => R\n }\n ) => (self: DocStream.DocStream<A>) => R,\n <A, R>(\n self: DocStream.DocStream<A>,\n patterns: {\n readonly FailedStream: () => R\n readonly EmptyStream: () => R\n\n readonly CharStream: (char: string, stream: DocStream.DocStream<A>) => R\n readonly TextStream: (text: string, stream: DocStream.DocStream<A>) => R\n readonly LineStream: (indentation: number, stream: DocStream.DocStream<A>) => R\n readonly PushAnnotationStream: (annotation: A, stream: DocStream.DocStream<A>) => R\n readonly PopAnnotationStream: (stream: DocStream.DocStream<A>) => R\n }\n ) => R\n>(2, (self, patterns) => {\n switch (self._tag) {\n case \"FailedStream\": {\n return patterns.FailedStream()\n }\n case \"EmptyStream\": {\n return patterns.EmptyStream()\n }\n case \"CharStream\": {\n return patterns.CharStream(self.char, self.stream)\n }\n case \"TextStream\": {\n return patterns.TextStream(self.text, self.stream)\n }\n case \"LineStream\": {\n return patterns.LineStream(self.indentation, self.stream)\n }\n case \"PushAnnotationStream\": {\n return patterns.PushAnnotationStream(self.annotation, self.stream)\n }\n case \"PopAnnotationStream\": {\n return patterns.PopAnnotationStream(self.stream)\n }\n }\n})\n\n// -----------------------------------------------------------------------------\n// Instances\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const map: {\n <A, B>(f: (a: A) => B): (self: DocStream.DocStream<A>) => DocStream.DocStream<B>\n <A, B>(self: DocStream.DocStream<A>, f: (a: A) => B): DocStream.DocStream<B>\n} = reAnnotate\n\n/** @internal */\nexport const imap = covariant.imap<DocStream.DocStream.TypeLambda>(map)\n\n/** @internal */\nexport const Covariant: covariant.Covariant<DocStream.DocStream.TypeLambda> = {\n map,\n imap\n}\n\n/** @internal */\nexport const Invariant: invariant.Invariant<DocStream.DocStream.TypeLambda> = {\n imap\n}\n","import type * as Doc from \"../Doc.js\"\n\n/**\n * Represents a list of nesting level/document pairs that are yet to be laid\n * out.\n *\n * @internal\n */\nexport type LayoutPipeline<A> = Nil | Cons<A> | UndoAnnotation<A>\n\n/** @internal */\nexport interface Nil {\n readonly _tag: \"Nil\"\n}\n\n/** @internal */\nexport interface Cons<A> {\n readonly _tag: \"Cons\"\n readonly indent: number\n readonly document: Doc.Doc<A>\n readonly pipeline: LayoutPipeline<A>\n}\n\n/** @internal */\nexport interface UndoAnnotation<A> {\n readonly _tag: \"UndoAnnotation\"\n readonly pipeline: LayoutPipeline<A>\n}\n\n/** @internal */\nexport const nil: LayoutPipeline<never> = {\n _tag: \"Nil\"\n}\n\n/** @internal */\nexport const cons = <A>(\n indent: number,\n document: Doc.Doc<A>,\n pipeline: LayoutPipeline<A>\n): LayoutPipeline<A> => ({\n _tag: \"Cons\",\n indent,\n document,\n pipeline\n})\n\n/** @internal */\nexport const undoAnnotation = <A>(pipeline: LayoutPipeline<A>): LayoutPipeline<A> => ({\n _tag: \"UndoAnnotation\",\n pipeline\n})\n","import * as Equal from \"effect/Equal\"\nimport { pipe } from \"effect/Function\"\nimport * as Hash from \"effect/Hash\"\nimport type * as PageWidth from \"../PageWidth.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\nconst PageWidthSymbolKey = \"@effect/printer/PageWidth\"\n\n/** @internal */\nexport const PageWidthTypeId: PageWidth.PageWidthTypeId = Symbol.for(\n PageWidthSymbolKey\n) as PageWidth.PageWidthTypeId\n\nconst protoHash = {\n AvailablePerLine: (self: PageWidth.AvailablePerLine) =>\n pipe(\n Hash.hash(\"@effect/printer/PageWidth/AvailablePerLine\"),\n Hash.combine(Hash.hash(PageWidthSymbolKey)),\n Hash.combine(Hash.hash(self.lineWidth)),\n Hash.combine(Hash.hash(self.ribbonFraction))\n ),\n Unbounded: (_: PageWidth.Unbounded) =>\n pipe(\n Hash.hash(\"@effect/printer/PageWidth/Unbounded\"),\n Hash.combine(Hash.hash(PageWidthSymbolKey))\n )\n}\n\nconst protoEqual = {\n AvailablePerLine: (self: PageWidth.AvailablePerLine, that: unknown) =>\n isPageWidth(that) &&\n that._tag === \"AvailablePerLine\" &&\n self.lineWidth === that.lineWidth &&\n self.ribbonFraction === that.ribbonFraction,\n Unbounded: (self: PageWidth.Unbounded, that: unknown) => isPageWidth(that) && that._tag === \"Unbounded\"\n}\n\nconst proto = {\n [PageWidthTypeId]: PageWidthTypeId,\n [Hash.symbol](this: PageWidth.PageWidth) {\n return Hash.cached(this, protoHash[this._tag](this as any))\n },\n [Equal.symbol](this: PageWidth.PageWidth, that: unknown) {\n return protoEqual[this._tag](this as any, that)\n }\n}\n\n// -----------------------------------------------------------------------------\n// Refinements\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const isPageWidth = (u: unknown): u is PageWidth.PageWidth =>\n typeof u === \"object\" && u != null && PageWidthTypeId in u\n\n/** @internal */\nexport const isAvailablePerLine = (self: PageWidth.PageWidth): self is PageWidth.AvailablePerLine =>\n self._tag === \"AvailablePerLine\"\n\n/** @internal */\nexport const isUnbounded = (self: PageWidth.PageWidth): self is PageWidth.Unbounded => self._tag === \"AvailablePerLine\"\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const availablePerLine = (\n lineWidth: number,\n ribbonFraction: number\n): PageWidth.PageWidth => {\n const op = Object.create(proto)\n op._tag = \"AvailablePerLine\"\n op.lineWidth = lineWidth\n op.ribbonFraction = ribbonFraction\n return op\n}\n\n/** @internal */\nexport const unbounded: PageWidth.PageWidth = (() => {\n const op = Object.create(proto)\n op._tag = \"Unbounded\"\n return op\n})()\n\n/** @internal */\nexport const defaultPageWidth: PageWidth.PageWidth = availablePerLine(80, 1)\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const remainingWidth = (\n pageWidth: number,\n ribbonFraction: number,\n indentation: number,\n currentColumn: number\n) => {\n const columnsLeftInLine = pageWidth - currentColumn\n const ribbonWidth = Math.max(\n 0,\n Math.min(pageWidth, Math.floor(pageWidth * ribbonFraction))\n )\n const columnsLeftInRibbon = indentation + ribbonWidth - currentColumn\n return Math.min(columnsLeftInLine, columnsLeftInRibbon)\n}\n","import * as Effect from \"effect/Effect\"\nimport type { LazyArg } from \"effect/Function\"\nimport { dual } from \"effect/Function\"\nimport * as List from \"effect/List\"\nimport * as Option from \"effect/Option\"\nimport type * as Doc from \"../Doc.js\"\nimport type * as DocStream from \"../DocStream.js\"\nimport type * as Layout from \"../Layout.js\"\nimport type * as PageWidth from \"../PageWidth.js\"\nimport * as InternalDocStream from \"./docStream.js\"\nimport * as InternalPipeline from \"./layoutPipeline.js\"\nimport * as InternalPageWidth from \"./pageWidth.js\"\n\n/** @internal */\nexport const options = (pageWidth: PageWidth.PageWidth): Layout.Layout.Options => ({ pageWidth })\n\n/** @internal */\nexport const defaultOptions: Layout.Layout.Options = options(InternalPageWidth.defaultPageWidth)\n\n// -----------------------------------------------------------------------------\n// wadlerLeijen\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const wadlerLeijen = dual<\n <A>(\n fits: Layout.Layout.FittingPredicate<A>,\n options: Layout.Layout.Options\n ) => (self: Doc.Doc<A>) => DocStream.DocStream<A>,\n <A>(\n self: Doc.Doc<A>,\n fits: Layout.Layout.FittingPredicate<A>,\n options: Layout.Layout.Options\n ) => DocStream.DocStream<A>\n>(\n 3,\n (self, fits, options) =>\n Effect.runSync(wadlerLeijenSafe(InternalPipeline.cons(0, self, InternalPipeline.nil), 0, 0, fits, options))\n)\n\nconst wadlerLeijenSafe = <A>(\n self: InternalPipeline.LayoutPipeline<A>,\n nestingLevel: number,\n currentColumn: number,\n fits: Layout.Layout.FittingPredicate<A>,\n options: Layout.Layout.Options\n): Effect.Effect<DocStream.DocStream<A>> => {\n const best = (\n self: InternalPipeline.LayoutPipeline<A>,\n nl: number,\n cc: number\n ): Effect.Effect<DocStream.DocStream<A>> =>\n Effect.gen(function*() {\n switch (self._tag) {\n case \"Nil\": {\n return InternalDocStream.empty\n }\n case \"Cons\": {\n switch (self.document._tag) {\n case \"Fail\": {\n return InternalDocStream.failed\n }\n case \"Empty\": {\n return yield* best(self.pipeline, nl, cc)\n }\n case \"Char\": {\n const stream = yield* best(self.pipeline, nl, cc + 1)\n return InternalDocStream.char(stream, self.document.char)\n }\n case \"Text\": {\n const length = self.document.text.length\n const stream = yield* best(self.pipeline, nl, cc + length)\n return InternalDocStream.text(stream, self.document.text)\n }\n case \"Line\": {\n const stream = yield* best(self.pipeline, self.indent, self.indent)\n // Do not produce indentation if there is no subsequent text on\n // the same line (prevents trailing whitespace)\n const nextIndent = InternalDocStream.isEmptyStream(stream) || InternalDocStream.isLineStream(stream)\n ? 0\n : self.indent\n return InternalDocStream.line(stream, nextIndent)\n }\n case \"FlatAlt\": {\n const next = InternalPipeline.cons(self.indent, self.document.left, self.pipeline)\n return yield* best(next, nl, cc)\n }\n case \"Cat\": {\n const inner = InternalPipeline.cons(self.indent, self.document.right, self.pipeline)\n const outer = InternalPipeline.cons(self.indent, self.document.left, inner)\n return yield* best(outer, nl, cc)\n }\n case \"Nest\": {\n const indent = self.indent + self.document.indent\n const next = InternalPipeline.cons(indent, self.document.doc, self.pipeline)\n return yield* best(next, nl, cc)\n }\n case \"Union\": {\n const leftPipeline = InternalPipeline.cons(self.indent, self.document.left, self.pipeline)\n const rightPipeline = InternalPipeline.cons(self.indent, self.document.right, self.pipeline)\n const left = best(leftPipeline, nl, cc)\n const right = best(rightPipeline, nl, cc)\n return selectNicer(fits, nl, cc, left, right)\n }\n case \"Column\": {\n const doc = self.document.react(cc)\n const next = InternalPipeline.cons(self.indent, doc, self.pipeline)\n return yield* best(next, nl, cc)\n }\n case \"WithPageWidth\": {\n const doc = self.document.react(options.pageWidth)\n const next = InternalPipeline.cons(self.indent, doc, self.pipeline)\n return yield* best(next, nl, cc)\n }\n case \"Nesting\": {\n const doc = self.document.react(self.indent)\n const next = InternalPipeline.cons(self.indent, doc, self.pipeline)\n return yield* best(next, nl, cc)\n }\n case \"Annotated\": {\n const undo = InternalPipeline.undoAnnotation(self.pipeline)\n const next = InternalPipeline.cons(self.indent, self.document.doc, undo)\n const stream = yield* best(next, nl, cc)\n return InternalDocStream.pushAnnotation(stream, self.document.annotation)\n }\n }\n }\n case \"UndoAnnotation\": {\n const stream = yield* best(self.pipeline, nestingLevel, currentColumn)\n return InternalDocStream.popAnnotation(stream)\n }\n }\n })\n return best(self, nestingLevel, currentColumn)\n}\n\nconst selectNicer = <A>(\n fits: Layout.Layout.FittingPredicate<A>,\n lineIndent: number,\n currentColumn: number,\n left: Effect.Effect<DocStream.DocStream<A>>,\n right: Effect.Effect<DocStream.DocStream<A>>\n): DocStream.DocStream<A> => {\n const leftStream = Effect.runSync(left)\n let rightStream: DocStream.DocStream<A> | undefined = undefined\n return fits(\n leftStream,\n lineIndent,\n currentColumn,\n () => rightStream ?? (rightStream = Effect.runSync(right), rightStream)\n ) ?\n leftStream :\n rightStream ?? Effect.runSync(right)\n}\n\n// -----------------------------------------------------------------------------\n// compact\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const compact = <A>(self: Doc.Doc<A>): DocStream.DocStream<A> => Effect.runSync(compactSafe(List.of(self), 0))\n\nconst compactSafe = <A>(\n docs: List.List<Doc.Doc<A>>,\n i: number\n): Effect.Effect<DocStream.DocStream<A>> =>\n Effect.gen(function*() {\n if (List.isNil(docs)) {\n return InternalDocStream.empty\n }\n const head = docs.head\n const tail = docs.tail\n switch (head._tag) {\n case \"Fail\": {\n return InternalDocStream.failed\n }\n case \"Empty\": {\n return yield* compactSafe(tail, i)\n }\n case \"Char\": {\n const stream = yield* compactSafe(tail, i + 1)\n return InternalDocStream.char(stream, head.char)\n }\n case \"Text\": {\n const stream = yield* compactSafe(tail, i + head.text.length)\n return InternalDocStream.text(stream, head.text)\n }\n case \"Line\": {\n const stream = yield* compactSafe(tail, 0)\n return InternalDocStream.line(stream, 0)\n }\n case \"FlatAlt\": {\n return yield* compactSafe(List.cons(head.left, tail), i)\n }\n case \"Cat\": {\n const list = List.cons(head.left, List.cons(head.right, tail))\n return yield* compactSafe(list, i)\n }\n case \"Nest\": {\n return yield* compactSafe(List.cons(head.doc, tail), i)\n }\n case \"Union\": {\n return yield* compactSafe(List.cons(head.right, tail), i)\n }\n case \"Column\": {\n return yield* compactSafe(List.cons(head.react(i), tail), i)\n }\n case \"WithPageWidth\": {\n return yield* compactSafe(List.cons(head.react(InternalPageWidth.unbounded), tail), i)\n }\n case \"Nesting\": {\n return yield* compactSafe(List.cons(head.react(0), tail), i)\n }\n case \"Annotated\": {\n return yield* compactSafe(List.cons(head.doc, tail), i)\n }\n }\n })\n\n// -----------------------------------------------------------------------------\n// pretty\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const pretty = dual<\n (options: Layout.Layout.Options) => <A>(self: Doc.Doc<A>) => DocStream.DocStream<A>,\n <A>(self: Doc.Doc<A>, options: Layout.Layout.Options) => DocStream.DocStream<A>\n>(2, (self, options) => {\n const width = options.pageWidth\n if (width._tag === \"AvailablePerLine\") {\n return wadlerLeijen(\n self,\n (stream, indentation, currentColumn) => {\n const remainingWidth = InternalPageWidth.remainingWidth(\n width.lineWidth,\n width.ribbonFraction,\n indentation,\n currentColumn\n )\n return fitsPretty(stream, remainingWidth)\n },\n options\n )\n }\n return unbounded(self)\n})\n\nconst fitsPretty = <A>(self: DocStream.DocStream<A>, width: number): boolean => {\n let w = width\n let stream = self\n while (w >= 0) {\n switch (stream._tag) {\n case \"FailedStream\": {\n return false\n }\n case \"EmptyStream\": {\n return true\n }\n case \"CharStream\": {\n w = w - 1\n stream = stream.stream\n break\n }\n case \"TextStream\": {\n w = w - stream.text.length\n stream = stream.stream\n break\n }\n case \"LineStream\": {\n return true\n }\n case \"PushAnnotationStream\": {\n stream = stream.stream\n break\n }\n case \"PopAnnotationStream\": {\n stream = stream.stream\n break\n }\n }\n }\n return false\n}\n\n// -----------------------------------------------------------------------------\n// smart\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const smart = dual<\n (options: Layout.Layout.Options) => <A>(self: Doc.Doc<A>) => DocStream.DocStream<A>,\n <A>(self: Doc.Doc<A>, options: Layout.Layout.Options) => DocStream.DocStream<A>\n>(2, (self, options) => {\n const width = options.pageWidth\n if (width._tag === \"AvailablePerLine\") {\n return wadlerLeijen(\n self,\n fitsSmart(width.lineWidth, width.ribbonFraction),\n options\n )\n }\n return unbounded(self)\n})\n\nconst fitsSmart = (pageWidth: number, ribbonFraction: number) => {\n return <A>(\n stream: DocStream.DocStream<A>,\n indentation: number,\n currentColumn: number,\n comparator: LazyArg<DocStream.DocStream<A>>\n ): boolean => {\n const availableWidth = InternalPageWidth.remainingWidth(\n pageWidth,\n ribbonFraction,\n indentation,\n currentColumn\n )\n return fitsSmartLoop(\n stream,\n comparator,\n pageWidth,\n currentColumn,\n availableWidth\n )\n }\n}\n\nconst fitsSmartLoop = <A>(\n self: DocStream.DocStream<A>,\n comparator: LazyArg<DocStream.DocStream<A>>,\n pageWidth: number,\n currentColumn: number,\n availableWidth: number\n): boolean => {\n let minNestingLevel: number | undefined\n let stream = self\n let w = availableWidth\n while (w >= 0) {\n switch (stream._tag) {\n case \"FailedStream\": {\n return false\n }\n case \"EmptyStream\": {\n return true\n }\n case \"CharStream\": {\n w = w - 1\n stream = stream.stream\n break\n }\n case \"TextStream\": {\n w = w - stream.text.length\n stream = stream.stream\n break\n }\n case \"LineStream\": {\n if (!minNestingLevel) {\n minNestingLevel = Option.match(getInitialIndentation(comparator()), {\n // Definitely not a hanging layout. Return the same `minNestingLevel` that\n // subsequent lines with the same indentation use\n onNone: () => currentColumn,\n // Could be a (less wide) hanging layout, so take the minimum of the indent\n // and the current column\n onSome: (value) => Math.min(value, currentColumn)\n })\n }\n if (minNestingLevel < stream.indentation) {\n return false\n }\n w = pageWidth - stream.indentation\n stream = stream.stream\n break\n }\n case \"PushAnnotationStream\": {\n stream = stream.stream\n break\n }\n case \"PopAnnotationStream\": {\n stream = stream.stream\n break\n }\n }\n }\n return false\n}\n\nconst getInitialIndentation = <A>(self: DocStream.DocStream<A>): Option.Option<number> => {\n let stream: DocStream.DocStream<A> = self\n while (\n stream._tag === \"LineStream\" ||\n stream._tag === \"PushAnnotationStream\" ||\n stream._tag === \"PopAnnotationStream\"\n ) {\n if (stream._tag === \"LineStream\") {\n return Option.some(stream.indentation)\n }\n stream = stream.stream\n }\n return Option.none()\n}\n\n// -----------------------------------------------------------------------------\n// unbounded\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const unbounded = <A>(self: Doc.Doc<A>): DocStream.DocStream<A> =>\n wadlerLeijen(\n self,\n (stream) => !failsOnFirstLine(stream),\n { pageWidth: InternalPageWidth.unbounded }\n )\n\nconst failsOnFirstLine = <A>(self: DocStream.DocStream<A>): boolean => {\n let stream = self\n // eslint-disable-next-line no-constant-condition\n while (1) {\n switch (stream._tag) {\n case \"FailedStream\": {\n return true\n }\n case \"EmptyStream\": {\n return false\n }\n case \"CharStream\": {\n stream = stream.stream\n break\n }\n case \"TextStream\": {\n stream = stream.stream\n break\n }\n case \"LineStream\": {\n return false\n }\n case \"PushAnnotationStream\": {\n stream = stream.stream\n break\n }\n case \"PopAnnotationStream\": {\n stream = stream.stream\n break\n }\n }\n }\n throw new Error(\"bug\")\n}\n","/**\n * The abstract data type `Doc<A>` represents prettified documents that have\n * been annotated with data of type `A`.\n *\n * More specifically, a value of type `Doc` represents a non-empty set of\n * possible layouts for a given document. The layout algorithms select one of\n * these possibilities, taking into account variables such as the width of the\n * document.\n *\n * The annotation is an arbitrary piece of data associated with (part of) a\n * document. Annotations may be used by rendering algorithms to display\n * documents differently by providing information such as:\n * - color information (e.g., when rendering to the terminal)\n * - mouseover text (e.g., when rendering to rich HTML)\n * - whether to show something or not (to allow simple or detailed versions)\n *\n * @since 1.0.0\n */\n\nimport type * as covariant from \"@effect/typeclass/Covariant\"\nimport type * as invariant from \"@effect/typeclass/Invariant\"\nimport type { Monoid } from \"@effect/typeclass/Monoid\"\nimport type { Semigroup } from \"@effect/typeclass/Semigroup\"\nimport type { Equal } from \"effect/Equal\"\nimport type { TypeLambda } from \"effect/HKT\"\nimport type { Pipeable } from \"effect/Pipeable\"\nimport type { DocStream } from \"./DocStream.js\"\nimport type { Flatten } from \"./Flatten.js\"\nimport * as internal from \"./internal/doc.js\"\nimport * as InternalRender from \"./internal/render.js\"\nimport type { AvailablePerLine, PageWidth } from \"./PageWidth.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category symbol\n */\nexport const DocTypeId: unique symbol = internal.DocTypeId as DocTypeId\n\n/**\n * @since 1.0.0\n * @category symbol\n */\nexport type DocTypeId = typeof DocTypeId\n\n/**\n * Represents a prettified document that has been annotated with data of type\n * `A`.\n *\n * @since 1.0.0\n * @category model\n */\nexport type Doc<A> =\n | Fail<A>\n | Empty<A>\n | Char<A>\n | Text<A>\n | Line<A>\n | FlatAlt<A>\n | Cat<A>\n | Nest<A>\n | Union<A>\n | Column<A>\n | WithPageWidth<A>\n | Nesting<A>\n | Annotated<A>\n\n/**\n * @since 1.0.0\n */\nexport declare namespace Doc {\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Variance<A> extends Equal, Pipeable {\n readonly [DocTypeId]: {\n readonly _A: () => A\n }\n }\n\n /**\n * @since 1.0.0\n */\n export type TypeLambda = DocTypeLambda\n\n /**\n * @since 1.0.0\n * @category model\n */\n export type RenderConfig = Compact | Pretty | Smart\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Compact {\n readonly style: \"compact\"\n }\n\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Pretty {\n readonly style: \"pretty\"\n readonly options?: Partial<Omit<AvailablePerLine, \"_tag\">>\n }\n\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Smart {\n readonly style: \"smart\"\n readonly options?: Partial<Omit<AvailablePerLine, \"_tag\">>\n }\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface DocTypeLambda extends TypeLambda {\n readonly type: Doc<this[\"Target\"]>\n}\n\n/**\n * Represents a document that cannot be rendered. Generally occurs when\n * flattening a line. The layout algorithms will reject this document and choose\n * a more suitable rendering.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Fail<A> extends Doc.Variance<A> {\n readonly _tag: \"Fail\"\n}\n\n/**\n * Represents the empty document.\n *\n * Conceptually, the `Empty` document can be thought of as the unit of `Cat`.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Empty<A> extends Doc.Variance<A> {\n readonly _tag: \"Empty\"\n}\n\n/**\n * Represents a document containing a single character.\n *\n * **Invariants**\n * - Cannot be the newline (`\"\\n\"`) character\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Char<A> extends Doc.Variance<A> {\n readonly _tag: \"Char\"\n readonly char: string\n}\n\n/**\n * Represents a document containing a string of text.\n *\n * **Invariants**\n * - Text cannot be less than two characters long\n * - Text cannot contain a newline (`\"\\n\"`) character\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Text<A> extends Doc.Variance<A> {\n readonly _tag: \"Text\"\n readonly text: string\n}\n\n/**\n * Represents a document that contains a hard line break.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Line<A> extends Doc.Variance<A> {\n readonly _tag: \"Line\"\n}\n\n/**\n * Represents a flattened alternative of two documents. The layout algorithms\n * will choose the first document, but when flattened (via `group`) the second\n * document will be preferreinternal.\n *\n * The layout algorithms operate under the assumption that the first alternative\n * is less wide than the flattened second alternative.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface FlatAlt<A> extends Doc.Variance<A> {\n readonly _tag: \"FlatAlt\"\n readonly left: Doc<A>\n readonly right: Doc<A>\n}\n\n/**\n * Represents the concatenation of two documents.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Cat<A> extends Doc.Variance<A> {\n readonly _tag: \"Cat\"\n readonly left: Doc<A>\n readonly right: Doc<A>\n}\n\n/**\n * Represents a document that is indented by a certain number of columns.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Nest<A> extends Doc.Variance<A> {\n readonly _tag: \"Nest\"\n readonly indent: number\n readonly doc: Doc<A>\n}\n\n/**\n * Represents the union of two documents. Used to implement layout alternatives\n * for `group`.\n *\n * **Invariants**\n * - The first lines of the first document should be longer than the first lines\n * of the second document so that the layout algorithm can pick the document\n * with the best fit.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Union<A> extends Doc.Variance<A> {\n readonly _tag: \"Union\"\n readonly left: Doc<A>\n readonly right: Doc<A>\n}\n\n/**\n * Represents a document that reacts to the current cursor position.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Column<A> extends Doc.Variance<A> {\n readonly _tag: \"Column\"\n readonly react: (position: number) => Doc<A>\n}\n\n/**\n * Represents a document that reacts to the current page width.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface WithPageWidth<A> extends Doc.Variance<A> {\n readonly _tag: \"WithPageWidth\"\n readonly react: (pageWidth: PageWidth) => Doc<A>\n}\n\n/**\n * Represents a document that reacts to the current page width.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface WithPageWidth<A> extends Doc.Variance<A> {\n readonly _tag: \"WithPageWidth\"\n readonly react: (pageWidth: PageWidth) => Doc<A>\n}\n\n/**\n * Represents a document that reacts to the current nesting level.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Nesting<A> extends Doc.Variance<A> {\n readonly _tag: \"Nesting\"\n readonly react: (level: number) => Doc<A>\n}\n\n/**\n * Represents a document with an associated annotation.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Annotated<A> extends Doc.Variance<A> {\n readonly _tag: \"Annotated\"\n readonly annotation: A\n readonly doc: Doc<A>\n}\n\n// -----------------------------------------------------------------------------\n// Refinements\n// -----------------------------------------------------------------------------\n\n/**\n * Returns `true` if the specified value is a `Doc`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isDoc: (u: unknown) => u is Doc<unknown> = internal.isDoc\n\n/**\n * Returns `true` if the specified `Doc` is a `Fail`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isFail: <A>(self: Doc<A>) => self is Fail<A> = internal.isFail\n\n/**\n * Returns `true` if the specified `Doc` is an `Empty`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isEmpty: <A>(self: Doc<A>) => self is Empty<A> = internal.isEmpty\n\n/**\n * Returns `true` if the specified `Doc` is a `Char`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isChar: <A>(self: Doc<A>) => self is Char<A> = internal.isChar\n\n/**\n * Returns `true` if the specified `Doc` is a `Text`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isText: <A>(self: Doc<A>) => self is Text<A> = internal.isText\n\n/**\n * Returns `true` if the specified `Doc` is a `Line`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isLine: <A>(self: Doc<A>) => self is Line<A> = internal.isLine\n\n/**\n * Returns `true` if the specified `Doc` is a `FlatAlt`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isFlatAlt: <A>(self: Doc<A>) => self is FlatAlt<A> = internal.isFlatAlt\n\n/**\n * Returns `true` if the specified `Doc` is a `Cat`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isCat: <A>(self: Doc<A>) => self is Cat<A> = internal.isCat\n\n/**\n * Returns `true` if the specified `Doc` is a `Nest`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isNest: <A>(self: Doc<A>) => self is Nest<A> = internal.isNest\n\n/**\n * Returns `true` if the specified `Doc` is a `Union`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isUnion: <A>(self: Doc<A>) => self is Union<A> = internal.isUnion\n\n/**\n * Returns `true` if the specified `Doc` is a `Column`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isColumn: <A>(self: Doc<A>) => self is Column<A> = internal.isColumn\n\n/**\n * Returns `true` if the specified `Doc` is a `WithPageWidth`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isWithPageWidth = internal.isWithPageWidth\n\n/**\n * Returns `true` if the specified `Doc` is a `Nesting`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isNesting: <A>(self: Doc<A>) => self is Nesting<A> = internal.isNesting\n\n/**\n * Returns `true` if the specified `Doc` is a `Annotated`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isAnnotated: <A>(self: Doc<A>) => self is Annotated<A> = internal.isAnnotated\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * A document containing a single character.\n *\n * **Invariants**\n * - Cannot be the newline (`\"\\n\"`) character\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const char: (char: string) => Doc<never> = internal.char\n\n/**\n * A document containing a string of text.\n *\n * **Invariants**\n * - Text cannot be less than two characters long\n * - Text cannot contain a newline (`\"\\n\"`) character\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const text: (text: string) => Doc<never> = internal.text\n\n/**\n * Constructs a document containing a string of text.\n *\n * **Note**: newline characters (`\\n`) contained in the provided string will be\n * disregarded (i.e. not rendered) in the output document.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const string: (str: string) => Doc<never> = internal.string\n\n// -----------------------------------------------------------------------------\n// Primitives\n// -----------------------------------------------------------------------------\n\n/**\n * The `empty` document behaves like a document containing the empty string\n * (`\"\"`), so it has a height of `1`.\n *\n * This may lead to surprising behavior if the empty document is expected to\n * bear no weight inside certain layout functions, such as`vcat`, where it will\n * render an empty line of output.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.vsep([\n * Doc.text(\"hello\"),\n * // `parentheses` for visibility purposes only\n * Doc.parenthesized(Doc.empty),\n * Doc.text(\"world\")\n * ])\n *\n * const expected = `|hello\n * |()\n * |world`\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(expected)\n * )\n * ```\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const empty: Doc<never> = internal.empty\n\n/**\n * The `fail` document is a document that cannot be rendered.\n *\n * Generally occurs when flattening a line. The layout algorithms will reject\n * this document and choose a more suitable rendering.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const fail: Doc<never> = internal.fail\n\n/**\n * The `line` document advances to the next line and indents to the current\n * nesting level. However, `line` will behave like `space` if the line break is\n * undone by `group`.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hcat([\n * Doc.text(\"lorem ipsum\"),\n * Doc.line,\n * Doc.text(\"dolor sit amet\")\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem ipsum\n * |dolor sit amet`\n * )\n * )\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), { style: \"pretty\" }),\n * \"lorem ipsum dolor sit amet\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const line: Doc<never> = internal.line\n\n/**\n * The `lineBreak` document is like `line` but behaves like `empty` if the line\n * break is undone by `group` (instead of `space`).\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hcat([\n * Doc.text(\"lorem ipsum\"),\n * Doc.lineBreak,\n * Doc.text(\"dolor sit amet\")\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem ipsum\n * |dolor sit amet`\n * )\n * )\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), { style: \"pretty\" }),\n * \"lorem ipsumdolor sit amet\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const lineBreak: Doc<never> = internal.lineBreak\n\n/**\n * The `softLine` document behaves like `space` if the resulting output fits\n * onto the page, otherwise it behaves like `line`.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hcat([\n * Doc.text(\"lorem ipsum\"),\n * Doc.softLine,\n * Doc.text(\"dolor sit amet\")\n * ])\n *\n * // Here we have enough space to put everything onto one line\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 80 }\n * }),\n * \"lorem ipsum dolor sit amet\"\n * )\n *\n * // If the page width is narrowed to `10`, the layout algorithm will\n * // introduce a line break\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), {\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * }),\n * String.stripMargin(\n * `|lorem ipsum\n * |dolor sit amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const softLine: Doc<never> = internal.softLine\n\n/**\n * The `softLineBreak` document is similar to `softLine`, but behaves like\n * `empty` if the resulting output does not fit onto the page (instead of\n * `space`).\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hcat([\n * Doc.text(\"ThisText\"),\n * Doc.softLineBreak,\n * Doc.text(\"IsWayTooLong\")\n * ])\n *\n * // With enough space, we get direct concatenation of documents:\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 80 }\n * }),\n * \"ThisTextIsWayTooLong\"\n * )\n *\n * // If the page width is narrowed to `10`, the layout algorithm will\n * // introduce a line break\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), {\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * }),\n * String.stripMargin(\n * `|ThisText\n * |IsWayTooLong`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const softLineBreak: Doc<never> = internal.softLineBreak\n\n/**\n * The `hardLine` document is always laid out as a line break, regardless of\n * space or whether or not the document was `group`\"ed.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hcat([\n * Doc.text(\"lorem ipsum\"),\n * Doc.hardLine,\n * Doc.text(\"dolor sit amet\")\n * ])\n *\n * // Even with enough space, a line break is introduced\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1000 }\n * }),\n * String.stripMargin(\n * `|lorem ipsum\n * |dolor sit amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const hardLine: Doc<never> = internal.hardLine\n\n/**\n * A document containing a single `\\` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const backslash: Doc<never> = internal.backslash\n\n/**\n * A document containing a single `:` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const colon: Doc<never> = internal.colon\n\n/**\n * A document containing a single `,` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const comma: Doc<never> = internal.comma\n\n/**\n * A document containing a single `.` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const dot: Doc<never> = internal.dot\n\n/**\n * A document containing a single `\"` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const dquote: Doc<never> = internal.dquote\n\n/**\n * A document containing a single `=` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const equalSign: Doc<never> = internal.equalSign\n\n/**\n * A document containing a single `<` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const langle: Doc<never> = internal.langle\n\n/**\n * A document containing a single `{` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const lbrace: Doc<never> = internal.lbrace\n\n/**\n * A document containing a single `[` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const lbracket: Doc<never> = internal.lbracket\n\n/**\n * A document containing a single `(` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const lparen: Doc<never> = internal.lparen\n\n/**\n * A document containing a single `>` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const rangle: Doc<never> = internal.rangle\n\n/**\n * A document containing a single `}` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const rbrace: Doc<never> = internal.rbrace\n\n/**\n * A document containing a single `]` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const rbracket: Doc<never> = internal.rbracket\n\n/**\n * A document containing a single `)` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const rparen: Doc<never> = internal.rparen\n\n/**\n * A document containing a single `;` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const semi: Doc<never> = internal.semi\n\n/**\n * A document containing a single `/` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const slash: Doc<never> = internal.slash\n\n/**\n * A document containing a single `\"` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const squote: Doc<never> = internal.squote\n\n/**\n * A document containing a single ` ` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const space: Doc<never> = internal.space\n\n/**\n * A document containing a single `|` character.\n *\n * @since 1.0.0\n * @category primitives\n */\nexport const vbar: Doc<never> = internal.vbar\n\n// -----------------------------------------------------------------------------\n// Concatenation\n// -----------------------------------------------------------------------------\n\n/**\n * The `cat` combinator lays out two documents separated by nothing.\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const cat: {\n // -----------------------------------------------------------------------------\n // Concatenation\n // -----------------------------------------------------------------------------\n\n /**\n * The `cat` combinator lays out two documents separated by nothing.\n *\n * @since 1.0.0\n * @category concatenation\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n // -----------------------------------------------------------------------------\n // Concatenation\n // -----------------------------------------------------------------------------\n\n /**\n * The `cat` combinator lays out two documents separated by nothing.\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.cat\n\n/**\n * The `cats` combinator will attempt to lay out a collection of documents\n * separated by nothing. If the output does not fit the page, then the documents\n * will be separated by newlines. This is what differentiates it from `vcat`,\n * which always lays out documents beneath one another.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hsep([\n * Doc.text(\"Docs:\"),\n * Doc.cats(Doc.words(\"lorem ipsum dolor\"))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"Docs: loremipsumdolor\"\n * )\n *\n * // If the document exceeds the width of the page, the documents are rendered\n * // one above another\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * }),\n * String.stripMargin(\n * `|Docs: lorem\n * |ipsum\n * |dolor`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const cats: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.cats\n\n/**\n * The `catWithLine` combinator concatenates two documents by placing a `line`\n * document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithLine(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const catWithLine: {\n /**\n * The `catWithLine` combinator concatenates two documents by placing a `line`\n * document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithLine(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n /**\n * The `catWithLine` combinator concatenates two documents by placing a `line`\n * document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithLine(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.catWithLine\n\n/**\n * The `catWithLineBreak` combinator concatenates two documents by placing a\n * `lineBreak` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithLineBreak(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n *\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), { style: \"pretty\" }),\n * \"ab\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const catWithLineBreak: {\n /**\n * The `catWithLineBreak` combinator concatenates two documents by placing a\n * `lineBreak` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithLineBreak(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n *\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), { style: \"pretty\" }),\n * \"ab\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n /**\n * The `catWithLineBreak` combinator concatenates two documents by placing a\n * `lineBreak` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithLineBreak(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n *\n * assert.strictEqual(\n * Doc.render(Doc.group(doc), { style: \"pretty\" }),\n * \"ab\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.catWithLineBreak\n\n/**\n * The `catWithSoftLine` combinator concatenates two documents by placing a\n * `softLine` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSoftLine(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1 }\n * }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const catWithSoftLine: {\n /**\n * The `catWithSoftLine` combinator concatenates two documents by placing a\n * `softLine` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSoftLine(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1 }\n * }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n /**\n * The `catWithSoftLine` combinator concatenates two documents by placing a\n * `softLine` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSoftLine(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1 }\n * }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.catWithSoftLine\n\n/**\n * The `catWithSoftLineBreak` combinator concatenates two documents by\n * placing a `softLineBreak` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSoftLineBreak(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"ab\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1 }\n * }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const catWithSoftLineBreak: {\n /**\n * The `catWithSoftLineBreak` combinator concatenates two documents by\n * placing a `softLineBreak` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSoftLineBreak(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"ab\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1 }\n * }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n /**\n * The `catWithSoftLineBreak` combinator concatenates two documents by\n * placing a `softLineBreak` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSoftLineBreak(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"ab\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 1 }\n * }),\n * String.stripMargin(\n * `|a\n * |b`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.catWithSoftLineBreak\n\n/**\n * The `catWithSpace` combinator concatenates two documents by placing a\n * `space` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSpace(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const catWithSpace: {\n /**\n * The `catWithSpace` combinator concatenates two documents by placing a\n * `space` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSpace(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n /**\n * The `catWithSpace` combinator concatenates two documents by placing a\n * `space` document between them.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * Doc.char(\"a\"),\n * Doc.catWithSpace(Doc.char(\"b\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.catWithSpace\n\n/**\n * The `concatWith` combinator concatenates all documents in a collection\n * element-wise with the specified binary function.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * [Doc.char(\"a\"), Doc.char(\"b\")],\n * Doc.concatWith((x, y) => Doc.catWithSpace(y)(x))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const concatWith: {\n /**\n * The `concatWith` combinator concatenates all documents in a collection\n * element-wise with the specified binary function.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * [Doc.char(\"a\"), Doc.char(\"b\")],\n * Doc.concatWith((x, y) => Doc.catWithSpace(y)(x))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A>(f: (left: Doc<A>, right: Doc<A>) => Doc<A>): (docs: Iterable<Doc<A>>) => Doc<A>\n /**\n * The `concatWith` combinator concatenates all documents in a collection\n * element-wise with the specified binary function.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc: Doc.Doc<never> = pipe(\n * [Doc.char(\"a\"), Doc.char(\"b\")],\n * Doc.concatWith((x, y) => Doc.catWithSpace(y)(x))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"a b\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\n <A>(docs: Iterable<Doc<A>>, f: (left: Doc<A>, right: Doc<A>) => Doc<A>): Doc<A>\n} = internal.concatWith\n\n/**\n * The `vcat` combinator concatenates all documents in a collection vertically.\n * If the output is grouped then the line breaks are removed.\n *\n * In other words `vcat` is like `vsep`, with newlines removed instead of\n * replaced by spaces.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.vcat(Doc.words(\"lorem ipsum dolor\"))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem\n * |ipsum\n * |dolor`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const vcat: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.vcat\n\n/**\n * The `hcat` combinator concatenates all documents in a collection horizontally\n * without any spacing.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hcat(Doc.words(\"lorem ipsum dolor\"))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"loremipsumdolor\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const hcat: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.hcat\n\n/**\n * The `fillCat` combinator concatenates all documents in a collection\n * horizontally by placing a `empty` between each pair of documents as long as\n * they fit the page. Once the page width is exceeded, a `lineBreak` is inserted\n * and the process is repeated for all documents in the collection.\n *\n * **Note**: the use of `lineBreak` means that if `group`ed, the documents will\n * be separated with `empty` instead of newlines. See `fillSep` if you want a\n * `space` instead.\n *\n * @since 1.0.0\n * @category concatenation\n */\nexport const fillCat: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.fillCat\n\n// -----------------------------------------------------------------------------\n// Separation\n// -----------------------------------------------------------------------------\n\n/**\n * The `hsep` combinator concatenates all documents in a collection horizontally\n * by placing a `space` between each pair of documents.\n *\n * For automatic line breaks, consider using `fillSep`.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n *\n * const doc: Doc.Doc<never> = Doc.hsep(Doc.words(\"lorem ipsum dolor sit amet\"))\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 80 }\n * }),\n * \"lorem ipsum dolor sit amet\"\n * )\n *\n * // The `hsep` combinator will not introduce line breaks on its own, even when\n * // the page is too narrow\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 5 }\n * }),\n * \"lorem ipsum dolor sit amet\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category separation\n */\nexport const hsep: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.hsep\n\n/**\n * The `vsep` combinator concatenates all documents in a collection vertically.\n * If a `group` undoes the line breaks inserted by `vsep`, the documents are\n * separated with a space instead.\n *\n * When a `vsep` is `group`ed, the documents are separated with a `space` if the\n * layoutfits the page, otherwise nothing is done. See the `sep` convenience\n * function for this use case.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const unaligned = Doc.hsep([\n * Doc.text(\"prefix\"),\n * Doc.vsep(Doc.words(\"text to lay out\"))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(unaligned, { style: \"pretty\" }),\n * String.stripMargin(\n * `|prefix text\n * |to\n * |lay\n * |out`\n * )\n * )\n *\n * // The `align` function can be used to align the documents under their first\n * // element\n * const aligned = Doc.hsep([\n * Doc.text(\"prefix\"),\n * Doc.align(Doc.vsep(Doc.words(\"text to lay out\")))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(aligned, { style: \"pretty\" }),\n * String.stripMargin(\n * `|prefix text\n * | to\n * | lay\n * | out`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category separation\n */\nexport const vsep: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.vsep\n\n/**\n * The `fillSep` combinator concatenates all documents in a collection\n * horizontally by placing a `space` between each pair of documents as long as\n * they fit the page. Once the page width is exceeded, a `line` is inserted and\n * the process is repeated for all documents in the collection.\n *\n * **Note**: the use of `line` means that if `group`ed, the documents will be\n * separated with a `space` instead of newlines. See `fillCat` if you do not\n * want a `space`.\n *\n * @since 1.0.0\n * @category separation\n */\nexport const fillSep: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.fillSep\n\n/**\n * The `seps` combinator will attempt to lay out a collection of documents\n * separated by `space`s. If the output does not fit the page, then the\n * documents will be separated by newlines. This is what differentiates it from\n * `vsep`, which always lays out documents beneath one another.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc: Doc.Doc<never> = Doc.hsep([\n * Doc.text(\"prefix\"),\n * Doc.seps(Doc.words(\"text to lay out\"))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"prefix text to lay out\"\n * )\n *\n * // If the page width is too narrow, documents are separated by newlines\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 20 }\n * }),\n * String.stripMargin(\n * `|prefix text\n * |to\n * |lay\n * |out`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category separation\n */\nexport const seps: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.seps\n\n// -----------------------------------------------------------------------------\n// Alternative Layouts\n// -----------------------------------------------------------------------------\n\n/**\n * The `flatAlt` document will render `left` by default. However, when\n * `group`ed, `y` will be preferred with `left` as the fallback for cases where\n * `y` does not fit onto the page.\n *\n * **NOTE**:\n * Users should be careful to ensure that `left` is less wide than `right`.\n * Otherwise, if `right` ends up not fitting the page, then the layout\n * algorithms will fall back to an even wider layout.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const open = pipe(Doc.empty, Doc.flatAlt(Doc.text(\"{ \")))\n * const close = pipe(Doc.empty, Doc.flatAlt(Doc.text(\" }\")))\n * const separator = pipe(Doc.empty, Doc.flatAlt(Doc.text(\"; \")))\n *\n * const prettyDo = <A>(documents: Array<Doc.Doc<A>>): Doc.Doc<A> => {\n * return pipe(\n * Doc.hsep([\n * Doc.text(\"do\"),\n * pipe(\n * documents,\n * Doc.encloseSep(open, close, separator),\n * Doc.align\n * )\n * ]),\n * Doc.group\n * )\n * }\n *\n * const statements = [\n * Doc.text(\"name:_ <- getArgs\"),\n * Doc.text(\"let greet = \\\"Hello, \\\" <> name\"),\n * Doc.text(\"putStrLn greet\")\n * ]\n *\n * // If it fits, then the content is put onto a single line with the `{;}` style\n * assert.strictEqual(\n * pipe(\n * prettyDo(statements),\n * Doc.render({\n * style: \"pretty\",\n * options: { lineWidth: 80 }\n * })\n * ),\n * \"do { name:_ <- getArgs; let greet = \\\"Hello, \\\" <> name; putStrLn greet }\"\n * )\n *\n * // When there is not enough space, the content is broken up onto multiple lines\n * assert.strictEqual(\n * pipe(\n * prettyDo(statements),\n * Doc.render({\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * })\n * ),\n * String.stripMargin(\n * `|do name:_ <- getArgs\n * | let greet = \"Hello, \" <> name\n * | putStrLn greet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alternative layouts\n */\nexport const flatAlt: {\n // -----------------------------------------------------------------------------\n // Alternative Layouts\n // -----------------------------------------------------------------------------\n\n /**\n * The `flatAlt` document will render `left` by default. However, when\n * `group`ed, `y` will be preferred with `left` as the fallback for cases where\n * `y` does not fit onto the page.\n *\n * **NOTE**:\n * Users should be careful to ensure that `left` is less wide than `right`.\n * Otherwise, if `right` ends up not fitting the page, then the layout\n * algorithms will fall back to an even wider layout.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const open = pipe(Doc.empty, Doc.flatAlt(Doc.text(\"{ \")))\n * const close = pipe(Doc.empty, Doc.flatAlt(Doc.text(\" }\")))\n * const separator = pipe(Doc.empty, Doc.flatAlt(Doc.text(\"; \")))\n *\n * const prettyDo = <A>(documents: Array<Doc.Doc<A>>): Doc.Doc<A> => {\n * return pipe(\n * Doc.hsep([\n * Doc.text(\"do\"),\n * pipe(\n * documents,\n * Doc.encloseSep(open, close, separator),\n * Doc.align\n * )\n * ]),\n * Doc.group\n * )\n * }\n *\n * const statements = [\n * Doc.text(\"name:_ <- getArgs\"),\n * Doc.text(\"let greet = \\\"Hello, \\\" <> name\"),\n * Doc.text(\"putStrLn greet\")\n * ]\n *\n * // If it fits, then the content is put onto a single line with the `{;}` style\n * assert.strictEqual(\n * pipe(\n * prettyDo(statements),\n * Doc.render({\n * style: \"pretty\",\n * options: { lineWidth: 80 }\n * })\n * ),\n * \"do { name:_ <- getArgs; let greet = \\\"Hello, \\\" <> name; putStrLn greet }\"\n * )\n *\n * // When there is not enough space, the content is broken up onto multiple lines\n * assert.strictEqual(\n * pipe(\n * prettyDo(statements),\n * Doc.render({\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * })\n * ),\n * String.stripMargin(\n * `|do name:_ <- getArgs\n * | let greet = \"Hello, \" <> name\n * | putStrLn greet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alternative layouts\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n // -----------------------------------------------------------------------------\n // Alternative Layouts\n // -----------------------------------------------------------------------------\n\n /**\n * The `flatAlt` document will render `left` by default. However, when\n * `group`ed, `y` will be preferred with `left` as the fallback for cases where\n * `y` does not fit onto the page.\n *\n * **NOTE**:\n * Users should be careful to ensure that `left` is less wide than `right`.\n * Otherwise, if `right` ends up not fitting the page, then the layout\n * algorithms will fall back to an even wider layout.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const open = pipe(Doc.empty, Doc.flatAlt(Doc.text(\"{ \")))\n * const close = pipe(Doc.empty, Doc.flatAlt(Doc.text(\" }\")))\n * const separator = pipe(Doc.empty, Doc.flatAlt(Doc.text(\"; \")))\n *\n * const prettyDo = <A>(documents: Array<Doc.Doc<A>>): Doc.Doc<A> => {\n * return pipe(\n * Doc.hsep([\n * Doc.text(\"do\"),\n * pipe(\n * documents,\n * Doc.encloseSep(open, close, separator),\n * Doc.align\n * )\n * ]),\n * Doc.group\n * )\n * }\n *\n * const statements = [\n * Doc.text(\"name:_ <- getArgs\"),\n * Doc.text(\"let greet = \\\"Hello, \\\" <> name\"),\n * Doc.text(\"putStrLn greet\")\n * ]\n *\n * // If it fits, then the content is put onto a single line with the `{;}` style\n * assert.strictEqual(\n * pipe(\n * prettyDo(statements),\n * Doc.render({\n * style: \"pretty\",\n * options: { lineWidth: 80 }\n * })\n * ),\n * \"do { name:_ <- getArgs; let greet = \\\"Hello, \\\" <> name; putStrLn greet }\"\n * )\n *\n * // When there is not enough space, the content is broken up onto multiple lines\n * assert.strictEqual(\n * pipe(\n * prettyDo(statements),\n * Doc.render({\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * })\n * ),\n * String.stripMargin(\n * `|do name:_ <- getArgs\n * | let greet = \"Hello, \" <> name\n * | putStrLn greet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alternative layouts\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.flatAlt\n\n/**\n * @since 1.0.0\n * @category alternative layouts\n */\nexport const union: {\n /**\n * @since 1.0.0\n * @category alternative layouts\n */\n <B>(that: Doc<B>): <A>(self: Doc<A>) => Doc<B | A>\n /**\n * @since 1.0.0\n * @category alternative layouts\n */\n <A, B>(self: Doc<A>, that: Doc<B>): Doc<A | B>\n} = internal.union\n\n/**\n * The `group` combinator attempts to lay out a document onto a single line by\n * removing the contained line breaks. If the result does not fit the page, or\n * if a `hardLine` prevents flattening the document, `x` is laid out without\n * any changes.\n *\n * The `group` function is key to layouts that adapt to available space nicely.\n *\n * @since 1.0.0\n * @category alternative layouts\n */\nexport const group: <A>(self: Doc<A>) => Doc<A> = internal.group\n\n// -----------------------------------------------------------------------------\n// Reactive Layouts\n// -----------------------------------------------------------------------------\n\n/**\n * Lays out a document depending upon the column at which the document starts.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * // Example 1:\n * const example1 = Doc.column((l) =>\n * Doc.hsep([Doc.text(\"Columns are\"), Doc.text(`${l}-based`)])\n * )\n *\n * assert.strictEqual(\n * Doc.render(example1, { style: \"pretty\" }),\n * \"Columns are 0-based\"\n * )\n *\n * // Example 2:\n * const doc = Doc.hsep([\n * Doc.text(\"prefix\"),\n * Doc.column((l) => Doc.text(`| <- column ${l}`))\n * ])\n *\n * const example2 = Doc.vsep([0, 4, 8].map((n) => Doc.indent(n)(doc)))\n *\n * assert.strictEqual(\n * Doc.render(example2, { style: \"pretty\" }),\n * String.stripMargin(\n * `|prefix | <- column 7\n * | prefix | <- column 11\n * | prefix | <- column 15`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category reactive layouts\n */\nexport const column: <A>(react: (position: number) => Doc<A>) => Doc<A> = internal.column\n\n/**\n * Lays out a document depending upon the current nesting level (i.e., the\n * current indentation of the document).\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"prefix\"),\n * Doc.nesting((l) => Doc.squareBracketed(Doc.text(`Nested: ${l}`)))\n * ])\n *\n * const example = Doc.vsep([0, 4, 8].map((n) => Doc.indent(n)(doc)))\n *\n * assert.strictEqual(\n * Doc.render(example, { style: \"pretty\" }),\n * String.stripMargin(\n * `|prefix [Nested: 0]\n * | prefix [Nested: 4]\n * | prefix [Nested: 8]`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category reactive layouts\n */\nexport const nesting: <A>(react: (level: number) => Doc<A>) => Doc<A> = internal.nesting\n\n/**\n * The `width` combinator makes the column width of a document available to the\n * document while rendering.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const annotate = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * pipe(\n * Doc.squareBracketed(doc),\n * Doc.width((w) => Doc.text(` <- width: ${w}`))\n * )\n *\n * const docs = [\n * Doc.text(\"---\"),\n * Doc.text(\"------\"),\n * Doc.indent(Doc.text(\"---\"), 3),\n * Doc.vsep([Doc.text(\"---\"), Doc.indent(Doc.text(\"---\"), 4)])\n * ]\n *\n * const doc = Doc.align(Doc.vsep(docs.map(annotate)))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|[---] <- width: 5\n * |[------] <- width: 8\n * |[ ---] <- width: 8\n * |[---\n * | ---] <- width: 8`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category reactive layouts\n */\nexport const width: {\n /**\n * The `width` combinator makes the column width of a document available to the\n * document while rendering.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const annotate = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * pipe(\n * Doc.squareBracketed(doc),\n * Doc.width((w) => Doc.text(` <- width: ${w}`))\n * )\n *\n * const docs = [\n * Doc.text(\"---\"),\n * Doc.text(\"------\"),\n * Doc.indent(Doc.text(\"---\"), 3),\n * Doc.vsep([Doc.text(\"---\"), Doc.indent(Doc.text(\"---\"), 4)])\n * ]\n *\n * const doc = Doc.align(Doc.vsep(docs.map(annotate)))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|[---] <- width: 5\n * |[------] <- width: 8\n * |[ ---] <- width: 8\n * |[---\n * | ---] <- width: 8`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category reactive layouts\n */\n <A, B>(react: (width: number) => Doc<B>): (self: Doc<A>) => Doc<A | B>\n /**\n * The `width` combinator makes the column width of a document available to the\n * document while rendering.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const annotate = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * pipe(\n * Doc.squareBracketed(doc),\n * Doc.width((w) => Doc.text(` <- width: ${w}`))\n * )\n *\n * const docs = [\n * Doc.text(\"---\"),\n * Doc.text(\"------\"),\n * Doc.indent(Doc.text(\"---\"), 3),\n * Doc.vsep([Doc.text(\"---\"), Doc.indent(Doc.text(\"---\"), 4)])\n * ]\n *\n * const doc = Doc.align(Doc.vsep(docs.map(annotate)))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|[---] <- width: 5\n * |[------] <- width: 8\n * |[ ---] <- width: 8\n * |[---\n * | ---] <- width: 8`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category reactive layouts\n */\n <A, B>(self: Doc<A>, react: (width: number) => Doc<B>): Doc<A | B>\n} = internal.width\n\n/**\n * Lays out a document according to the document\"s`PageWidth`.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"prefix\"),\n * Doc.pageWidth((pageWidth) => {\n * switch (pageWidth._tag) {\n * case \"AvailablePerLine\": {\n * const { lineWidth, ribbonFraction } = pageWidth\n * return Doc.squareBracketed(\n * Doc.text(`Width: ${lineWidth}, Ribbon Fraction: ${ribbonFraction}`)\n * )\n * }\n * case \"Unbounded\": {\n * return Doc.empty\n * }\n * }\n * })\n * ])\n *\n * const example = Doc.vsep([0, 4, 8].map((n) => Doc.indent(n)(doc)))\n *\n * assert.strictEqual(\n * Doc.render(example, {\n * style: \"pretty\",\n * options: { lineWidth: 32 }\n * }),\n * String.stripMargin(\n * `|prefix [Width: 32, Ribbon Fraction: 1]\n * | prefix [Width: 32, Ribbon Fraction: 1]\n * | prefix [Width: 32, Ribbon Fraction: 1]`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const pageWidth: <A>(react: (pageWidth: PageWidth) => Doc<A>) => Doc<A> = internal.pageWidth\n\n// -----------------------------------------------------------------------------\n// Alignment\n// -----------------------------------------------------------------------------\n\n/**\n * Lays out a document with the current nesting level (indentation\n * of the following lines) increased by the specified `indent`.\n * Negative values are allowed and will decrease the nesting level\n * accordingly.\n *\n * See also:\n * * `hang`: nest a document relative to the current cursor\n * position instead of the current nesting level\n * * `align`: set the nesting level to the current cursor\n * position\n * * `indent`: increase the indentation on the spot, padding\n * any empty space with spaces\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.vsep([\n * pipe(Doc.vsep(Doc.words(\"lorem ipsum dolor\")), Doc.nest(4)),\n * Doc.text(\"sit\"),\n * Doc.text(\"amet\")\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem\n * | ipsum\n * | dolor\n * |sit\n * |amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const nest: {\n // -----------------------------------------------------------------------------\n // Alignment\n // -----------------------------------------------------------------------------\n\n /**\n * Lays out a document with the current nesting level (indentation\n * of the following lines) increased by the specified `indent`.\n * Negative values are allowed and will decrease the nesting level\n * accordingly.\n *\n * See also:\n * * `hang`: nest a document relative to the current cursor\n * position instead of the current nesting level\n * * `align`: set the nesting level to the current cursor\n * position\n * * `indent`: increase the indentation on the spot, padding\n * any empty space with spaces\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.vsep([\n * pipe(Doc.vsep(Doc.words(\"lorem ipsum dolor\")), Doc.nest(4)),\n * Doc.text(\"sit\"),\n * Doc.text(\"amet\")\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem\n * | ipsum\n * | dolor\n * |sit\n * |amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n (indent: number): <A>(self: Doc<A>) => Doc<A>\n // -----------------------------------------------------------------------------\n // Alignment\n // -----------------------------------------------------------------------------\n\n /**\n * Lays out a document with the current nesting level (indentation\n * of the following lines) increased by the specified `indent`.\n * Negative values are allowed and will decrease the nesting level\n * accordingly.\n *\n * See also:\n * * `hang`: nest a document relative to the current cursor\n * position instead of the current nesting level\n * * `align`: set the nesting level to the current cursor\n * position\n * * `indent`: increase the indentation on the spot, padding\n * any empty space with spaces\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.vsep([\n * pipe(Doc.vsep(Doc.words(\"lorem ipsum dolor\")), Doc.nest(4)),\n * Doc.text(\"sit\"),\n * Doc.text(\"amet\")\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem\n * | ipsum\n * | dolor\n * |sit\n * |amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n <A>(self: Doc<A>, indent: number): Doc<A>\n} = internal.nest\n\n/**\n * The `align` combinator lays out a document with the nesting level set to the\n * current column.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * // As an example, the documents below will be placed one above the other\n * // regardless of the current nesting level\n *\n * // Without `align`ment, the second line is simply placed below everything\n * // that has been laid out so far\n * const unaligned = Doc.hsep([\n * Doc.text(\"lorem\"),\n * Doc.vsep([Doc.text(\"ipsum\"), Doc.text(\"dolor\")])\n * ])\n *\n * assert.strictEqual(\n * Doc.render(unaligned, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem ipsum\n * |dolor`\n * )\n * )\n *\n * // With `align`ment, the `vsep`ed documents all start at the same column\n * const aligned = Doc.hsep([\n * Doc.text(\"lorem\"),\n * Doc.align(Doc.vsep([Doc.text(\"ipsum\"), Doc.text(\"dolor\")]))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(aligned, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem ipsum\n * | dolor`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const align: <A>(self: Doc<A>) => Doc<A> = internal.align\n\n/**\n * The `hang` combinator lays out a document with the nesting level set to\n * the *current column* plus the specified `indent`. Negative values for\n * `indent` are allowed and decrease the nesting level accordingly.\n *\n * This differs from the `nest` combinator, which is based on the *current\n * nesting level* plus the specified `indent`. When you\"re not sure, try the\n * more efficient combinator (`nest`) first.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"prefix\"),\n * pipe(Doc.reflow(\"Indenting these words with hang\"), Doc.hang(4))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 24 }\n * }),\n * String.stripMargin(\n * `|prefix Indenting these\n * | words with\n * | hang`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const hang: {\n /**\n * The `hang` combinator lays out a document with the nesting level set to\n * the *current column* plus the specified `indent`. Negative values for\n * `indent` are allowed and decrease the nesting level accordingly.\n *\n * This differs from the `nest` combinator, which is based on the *current\n * nesting level* plus the specified `indent`. When you\"re not sure, try the\n * more efficient combinator (`nest`) first.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"prefix\"),\n * pipe(Doc.reflow(\"Indenting these words with hang\"), Doc.hang(4))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 24 }\n * }),\n * String.stripMargin(\n * `|prefix Indenting these\n * | words with\n * | hang`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n (indent: number): <A>(self: Doc<A>) => Doc<A>\n /**\n * The `hang` combinator lays out a document with the nesting level set to\n * the *current column* plus the specified `indent`. Negative values for\n * `indent` are allowed and decrease the nesting level accordingly.\n *\n * This differs from the `nest` combinator, which is based on the *current\n * nesting level* plus the specified `indent`. When you\"re not sure, try the\n * more efficient combinator (`nest`) first.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"prefix\"),\n * pipe(Doc.reflow(\"Indenting these words with hang\"), Doc.hang(4))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 24 }\n * }),\n * String.stripMargin(\n * `|prefix Indenting these\n * | words with\n * | hang`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n <A>(self: Doc<A>, indent: number): Doc<A>\n} = internal.hang\n\n/**\n * The `indent` combinator indents a document by the specified `indent`\n * beginning from the current cursor position.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hcat([\n * Doc.text(\"prefix\"),\n * pipe(Doc.reflow(\"The indent function indents these words!\"), Doc.indent(4))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 24 }\n * }),\n * String.stripMargin(\n * `|prefix The indent\n * | function\n * | indents these\n * | words!`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const indent: {\n /**\n * The `indent` combinator indents a document by the specified `indent`\n * beginning from the current cursor position.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hcat([\n * Doc.text(\"prefix\"),\n * pipe(Doc.reflow(\"The indent function indents these words!\"), Doc.indent(4))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 24 }\n * }),\n * String.stripMargin(\n * `|prefix The indent\n * | function\n * | indents these\n * | words!`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n (indent: number): <A>(self: Doc<A>) => Doc<A>\n /**\n * The `indent` combinator indents a document by the specified `indent`\n * beginning from the current cursor position.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hcat([\n * Doc.text(\"prefix\"),\n * pipe(Doc.reflow(\"The indent function indents these words!\"), Doc.indent(4))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 24 }\n * }),\n * String.stripMargin(\n * `|prefix The indent\n * | function\n * | indents these\n * | words!`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n <A>(self: Doc<A>, indent: number): Doc<A>\n} = internal.indent\n\n/**\n * The `encloseSep` combinator concatenates a collection of documents,\n * separating each document in the collection using the specified `sep`\n * document. After concatenation, the resulting document is enclosed by the\n * specified `left` and `right` documents.\n *\n * To place the `sep` document at the end of each entry, see the `punctuate`\n * combinator.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"list\"),\n * Doc.align(\n * pipe(\n * [\"1\", \"20\", \"300\", \"4000\"].map(\n * (n) => n.length === 1 ? Doc.char(n) : Doc.text(n)\n * ),\n * Doc.encloseSep(Doc.lbracket, Doc.rbracket, Doc.comma)\n * )\n * )\n * ])\n *\n * // The documents are laid out horizontally if the document fits the page\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"list [1,20,300,4000]\"\n * )\n *\n * // Otherwise they are laid out vertically, with separators put in the front\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * }),\n * String.stripMargin(\n * `|list [1\n * | ,20\n * | ,300\n * | ,4000]`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const encloseSep: {\n /**\n * The `encloseSep` combinator concatenates a collection of documents,\n * separating each document in the collection using the specified `sep`\n * document. After concatenation, the resulting document is enclosed by the\n * specified `left` and `right` documents.\n *\n * To place the `sep` document at the end of each entry, see the `punctuate`\n * combinator.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"list\"),\n * Doc.align(\n * pipe(\n * [\"1\", \"20\", \"300\", \"4000\"].map(\n * (n) => n.length === 1 ? Doc.char(n) : Doc.text(n)\n * ),\n * Doc.encloseSep(Doc.lbracket, Doc.rbracket, Doc.comma)\n * )\n * )\n * ])\n *\n * // The documents are laid out horizontally if the document fits the page\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"list [1,20,300,4000]\"\n * )\n *\n * // Otherwise they are laid out vertically, with separators put in the front\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * }),\n * String.stripMargin(\n * `|list [1\n * | ,20\n * | ,300\n * | ,4000]`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n <A, B, C>(left: Doc<A>, right: Doc<B>, sep: Doc<C>): <D>(docs: Iterable<Doc<D>>) => Doc<A | B | C | D>\n /**\n * The `encloseSep` combinator concatenates a collection of documents,\n * separating each document in the collection using the specified `sep`\n * document. After concatenation, the resulting document is enclosed by the\n * specified `left` and `right` documents.\n *\n * To place the `sep` document at the end of each entry, see the `punctuate`\n * combinator.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.hsep([\n * Doc.text(\"list\"),\n * Doc.align(\n * pipe(\n * [\"1\", \"20\", \"300\", \"4000\"].map(\n * (n) => n.length === 1 ? Doc.char(n) : Doc.text(n)\n * ),\n * Doc.encloseSep(Doc.lbracket, Doc.rbracket, Doc.comma)\n * )\n * )\n * ])\n *\n * // The documents are laid out horizontally if the document fits the page\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"list [1,20,300,4000]\"\n * )\n *\n * // Otherwise they are laid out vertically, with separators put in the front\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 10 }\n * }),\n * String.stripMargin(\n * `|list [1\n * | ,20\n * | ,300\n * | ,4000]`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\n <A, B, C, D>(docs: Iterable<Doc<D>>, left: Doc<A>, right: Doc<B>, sep: Doc<C>): Doc<A | B | C | D>\n} = internal.encloseSep\n\n/**\n * A Haskell-inspired variant of `encloseSep` that uses a comma as the separator\n * and braces as the enclosure for a collection of documents.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n *\n * const doc = Doc.list(\n * [\"1\", \"20\", \"300\", \"4000\"].map(\n * (n) => (n.length === 1 ? Doc.char(n) : Doc.text(n))\n * )\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"[1, 20, 300, 4000]\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const list: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.list\n\n/**\n * A Haskell-inspired variant of `encloseSep` that uses a comma as the separator\n * and parentheses as the enclosure for a collection of documents.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n *\n * const doc = Doc.tupled(\n * [\"1\", \"20\", \"300\", \"4000\"].map(\n * (n) => (n.length === 1 ? Doc.char(n) : Doc.text(n))\n * )\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"(1, 20, 300, 4000)\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category alignment\n */\nexport const tupled: <A>(docs: Iterable<Doc<A>>) => Doc<A> = internal.tupled\n\n// -----------------------------------------------------------------------------\n// Filling\n// -----------------------------------------------------------------------------\n\n/**\n * The `fill` combinator first lays out the document `x` and then appends\n * `space`s until the width of the document is equal to the specified `width`.\n * If the width of `x` is already larger than the specified `width`, nothing is\n * appended.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * type Signature = [name: string, type: string]\n *\n * const signatures: Array<Signature> = [\n * [\"empty\", \"Doc\"],\n * [\"nest\", \"Int -> Doc -> Doc\"],\n * [\"fillSep\", \"[Doc] -> Doc\"]\n * ]\n *\n * const prettySignature = <A>([name, type]: Signature): Doc.Doc<A> =>\n * Doc.hsep([\n * pipe(Doc.text(name), Doc.fill(5)),\n * Doc.text(\"::\"),\n * Doc.text(type)\n * ])\n *\n * const doc = Doc.hsep([\n * Doc.text(\"let\"),\n * Doc.align(Doc.vcat(signatures.map(prettySignature)))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|let empty :: Doc\n * | nest :: Int -> Doc -> Doc\n * | fillSep :: [Doc] -> Doc`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category filling\n */\nexport const fill: {\n // -----------------------------------------------------------------------------\n // Filling\n // -----------------------------------------------------------------------------\n\n /**\n * The `fill` combinator first lays out the document `x` and then appends\n * `space`s until the width of the document is equal to the specified `width`.\n * If the width of `x` is already larger than the specified `width`, nothing is\n * appended.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * type Signature = [name: string, type: string]\n *\n * const signatures: Array<Signature> = [\n * [\"empty\", \"Doc\"],\n * [\"nest\", \"Int -> Doc -> Doc\"],\n * [\"fillSep\", \"[Doc] -> Doc\"]\n * ]\n *\n * const prettySignature = <A>([name, type]: Signature): Doc.Doc<A> =>\n * Doc.hsep([\n * pipe(Doc.text(name), Doc.fill(5)),\n * Doc.text(\"::\"),\n * Doc.text(type)\n * ])\n *\n * const doc = Doc.hsep([\n * Doc.text(\"let\"),\n * Doc.align(Doc.vcat(signatures.map(prettySignature)))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|let empty :: Doc\n * | nest :: Int -> Doc -> Doc\n * | fillSep :: [Doc] -> Doc`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category filling\n */\n (w: number): <A>(self: Doc<A>) => Doc<A>\n // -----------------------------------------------------------------------------\n // Filling\n // -----------------------------------------------------------------------------\n\n /**\n * The `fill` combinator first lays out the document `x` and then appends\n * `space`s until the width of the document is equal to the specified `width`.\n * If the width of `x` is already larger than the specified `width`, nothing is\n * appended.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * type Signature = [name: string, type: string]\n *\n * const signatures: Array<Signature> = [\n * [\"empty\", \"Doc\"],\n * [\"nest\", \"Int -> Doc -> Doc\"],\n * [\"fillSep\", \"[Doc] -> Doc\"]\n * ]\n *\n * const prettySignature = <A>([name, type]: Signature): Doc.Doc<A> =>\n * Doc.hsep([\n * pipe(Doc.text(name), Doc.fill(5)),\n * Doc.text(\"::\"),\n * Doc.text(type)\n * ])\n *\n * const doc = Doc.hsep([\n * Doc.text(\"let\"),\n * Doc.align(Doc.vcat(signatures.map(prettySignature)))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|let empty :: Doc\n * | nest :: Int -> Doc -> Doc\n * | fillSep :: [Doc] -> Doc`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category filling\n */\n <A>(self: Doc<A>, w: number): Doc<A>\n} = internal.fill\n\n/**\n * The `fillBreak` combinator first lays out the document `x` and then appends\n * `space`s until the width of the document is equal to the specified `width`.\n * If the width of `x` is already larger than the specified `width`, the nesting\n * level is increased by the specified `width` and a `line` is appended.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * type Signature = [name: string, type: string]\n *\n * const signatures: Array<Signature> = [\n * [\"empty\", \"Doc\"],\n * [\"nest\", \"Int -> Doc -> Doc\"],\n * [\"fillSep\", \"[Doc] -> Doc\"]\n * ]\n *\n * const prettySignature = <A>([name, type]: Signature): Doc.Doc<A> =>\n * Doc.hsep([\n * pipe(Doc.text(name), Doc.fillBreak(5)),\n * Doc.text(\"::\"),\n * Doc.text(type)\n * ])\n *\n * const doc = Doc.hsep([\n * Doc.text(\"let\"),\n * Doc.align(Doc.vcat(signatures.map(prettySignature)))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|let empty :: Doc\n * | nest :: Int -> Doc -> Doc\n * | fillSep\n * | :: [Doc] -> Doc`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category filling\n */\nexport const fillBreak: {\n /**\n * The `fillBreak` combinator first lays out the document `x` and then appends\n * `space`s until the width of the document is equal to the specified `width`.\n * If the width of `x` is already larger than the specified `width`, the nesting\n * level is increased by the specified `width` and a `line` is appended.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * type Signature = [name: string, type: string]\n *\n * const signatures: Array<Signature> = [\n * [\"empty\", \"Doc\"],\n * [\"nest\", \"Int -> Doc -> Doc\"],\n * [\"fillSep\", \"[Doc] -> Doc\"]\n * ]\n *\n * const prettySignature = <A>([name, type]: Signature): Doc.Doc<A> =>\n * Doc.hsep([\n * pipe(Doc.text(name), Doc.fillBreak(5)),\n * Doc.text(\"::\"),\n * Doc.text(type)\n * ])\n *\n * const doc = Doc.hsep([\n * Doc.text(\"let\"),\n * Doc.align(Doc.vcat(signatures.map(prettySignature)))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|let empty :: Doc\n * | nest :: Int -> Doc -> Doc\n * | fillSep\n * | :: [Doc] -> Doc`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category filling\n */\n (w: number): <A>(self: Doc<A>) => Doc<A>\n /**\n * The `fillBreak` combinator first lays out the document `x` and then appends\n * `space`s until the width of the document is equal to the specified `width`.\n * If the width of `x` is already larger than the specified `width`, the nesting\n * level is increased by the specified `width` and a `line` is appended.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * type Signature = [name: string, type: string]\n *\n * const signatures: Array<Signature> = [\n * [\"empty\", \"Doc\"],\n * [\"nest\", \"Int -> Doc -> Doc\"],\n * [\"fillSep\", \"[Doc] -> Doc\"]\n * ]\n *\n * const prettySignature = <A>([name, type]: Signature): Doc.Doc<A> =>\n * Doc.hsep([\n * pipe(Doc.text(name), Doc.fillBreak(5)),\n * Doc.text(\"::\"),\n * Doc.text(type)\n * ])\n *\n * const doc = Doc.hsep([\n * Doc.text(\"let\"),\n * Doc.align(Doc.vcat(signatures.map(prettySignature)))\n * ])\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|let empty :: Doc\n * | nest :: Int -> Doc -> Doc\n * | fillSep\n * | :: [Doc] -> Doc`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category filling\n */\n <A>(self: Doc<A>, w: number): Doc<A>\n} = internal.fillBreak\n\n// -----------------------------------------------------------------------------\n// Flattening\n// -----------------------------------------------------------------------------\n\n/**\n * Flattens a document but does not report changes.\n *\n * @since 1.0.0\n * @category flattening\n */\nexport const flatten: <A>(self: Doc<A>) => Doc<A> = internal.flatten\n\n/**\n * Select the first element of each `Union` and discard the first element of\n * each `FlatAlt` to produce a \"flattened\" version of the input document.\n *\n * The result is `Flattened` if the element might change depending on the chosen\n * layout algorithm (i.e., the resulting document contains sub-documents that\n * may be rendered differently).\n *\n * The result is `AlreadyFlat` if the document is static (i.e., the resulting\n * document contains only a plain `Empty` node).\n *\n * `NeverFlat` is returned when the document cannot be flattened because it\n * contains either a hard `Line` or a `Fail`.\n *\n * @since 1.0.0\n * @category flattening\n */\nexport const changesUponFlattening: <A>(self: Doc<A>) => Flatten<Doc<A>> = internal.changesUponFlattening\n\n// -----------------------------------------------------------------------------\n// Annotations\n// -----------------------------------------------------------------------------\n\n/**\n * Adds an annotation to a `Doc`. The annotation can then be used by the rendering\n * algorithm to, for example, add color to certain parts of the output.\n *\n * **Note** This function is relevant only for custom formats with their own annotations,\n * and is not relevant for basic pretty printing.\n *\n * @since 1.0.0\n * @category annotations\n */\nexport const annotate: {\n // -----------------------------------------------------------------------------\n // Annotations\n // -----------------------------------------------------------------------------\n\n /**\n * Adds an annotation to a `Doc`. The annotation can then be used by the rendering\n * algorithm to, for example, add color to certain parts of the output.\n *\n * **Note** This function is relevant only for custom formats with their own annotations,\n * and is not relevant for basic pretty printing.\n *\n * @since 1.0.0\n * @category annotations\n */\n <A>(annotation: A): (self: Doc<A>) => Doc<A>\n // -----------------------------------------------------------------------------\n // Annotations\n // -----------------------------------------------------------------------------\n\n /**\n * Adds an annotation to a `Doc`. The annotation can then be used by the rendering\n * algorithm to, for example, add color to certain parts of the output.\n *\n * **Note** This function is relevant only for custom formats with their own annotations,\n * and is not relevant for basic pretty printing.\n *\n * @since 1.0.0\n * @category annotations\n */\n <A>(self: Doc<A>, annotation: A): Doc<A>\n} = internal.annotate\n\n/**\n * Change the annotations of a document. Individual annotations can be removed,\n * changed, or replaced by multiple ones.\n *\n * This is a general function that combines `unAnnotate` and `reAnnotate`, and\n * is useful for mapping semantic annotations (such as »this is a keyword«) to\n * display annotations (such as »this is red and underlined«) because some\n * backends may not care about certain annotations while others may.\n *\n * Annotations earlier in the new list will be applied earlier, so returning\n * `[Bold, Green]` will result in a bold document that contains green text, and\n * not vice versa.\n *\n * Since this traverses the entire document tree, including the parts that are\n * not rendered (due to other layouts having better fit), it is preferable to\n * reannotate a document **after** producing the layout by using\n * `alterAnnotations` from the `SimpleDocStream` module.\n *\n * @since 1.0.0\n * @category annotations\n */\nexport const alterAnnotations: {\n /**\n * Change the annotations of a document. Individual annotations can be removed,\n * changed, or replaced by multiple ones.\n *\n * This is a general function that combines `unAnnotate` and `reAnnotate`, and\n * is useful for mapping semantic annotations (such as »this is a keyword«) to\n * display annotations (such as »this is red and underlined«) because some\n * backends may not care about certain annotations while others may.\n *\n * Annotations earlier in the new list will be applied earlier, so returning\n * `[Bold, Green]` will result in a bold document that contains green text, and\n * not vice versa.\n *\n * Since this traverses the entire document tree, including the parts that are\n * not rendered (due to other layouts having better fit), it is preferable to\n * reannotate a document **after** producing the layout by using\n * `alterAnnotations` from the `SimpleDocStream` module.\n *\n * @since 1.0.0\n * @category annotations\n */\n <A, B>(f: (a: A) => Iterable<B>): (self: Doc<A>) => Doc<B>\n /**\n * Change the annotations of a document. Individual annotations can be removed,\n * changed, or replaced by multiple ones.\n *\n * This is a general function that combines `unAnnotate` and `reAnnotate`, and\n * is useful for mapping semantic annotations (such as »this is a keyword«) to\n * display annotations (such as »this is red and underlined«) because some\n * backends may not care about certain annotations while others may.\n *\n * Annotations earlier in the new list will be applied earlier, so returning\n * `[Bold, Green]` will result in a bold document that contains green text, and\n * not vice versa.\n *\n * Since this traverses the entire document tree, including the parts that are\n * not rendered (due to other layouts having better fit), it is preferable to\n * reannotate a document **after** producing the layout by using\n * `alterAnnotations` from the `SimpleDocStream` module.\n *\n * @since 1.0.0\n * @category annotations\n */\n <A, B>(self: Doc<A>, f: (a: A) => Iterable<B>): Doc<B>\n} = internal.alterAnnotations\n\n/**\n * Changes the annotation of a document. Useful for modifying documents embedded\n * with one form of annotation with a more general annotation.\n *\n * **Note** that with each invocation, the entire document tree is traversed.\n * If possible, it is preferable to reannotate a document after producing the\n * layout using `reAnnotateS`.\n *\n * @since 1.0.0\n * @category annotations\n */\nexport const reAnnotate: {\n /**\n * Changes the annotation of a document. Useful for modifying documents embedded\n * with one form of annotation with a more general annotation.\n *\n * **Note** that with each invocation, the entire document tree is traversed.\n * If possible, it is preferable to reannotate a document after producing the\n * layout using `reAnnotateS`.\n *\n * @since 1.0.0\n * @category annotations\n */\n <A, B>(f: (a: A) => B): (self: Doc<A>) => Doc<B>\n /**\n * Changes the annotation of a document. Useful for modifying documents embedded\n * with one form of annotation with a more general annotation.\n *\n * **Note** that with each invocation, the entire document tree is traversed.\n * If possible, it is preferable to reannotate a document after producing the\n * layout using `reAnnotateS`.\n *\n * @since 1.0.0\n * @category annotations\n */\n <A, B>(self: Doc<A>, f: (a: A) => B): Doc<B>\n} = internal.reAnnotate\n\n/**\n * Removes all annotations from a document.\n *\n * **Note**: with each invocation, the entire document tree is traversed.\n * If possible, it is preferable to unannotate a document after producing the\n * layout using `unAnnotateS`.\n *\n * @since 1.0.0\n * @category annotations\n */\nexport const unAnnotate: <A>(self: Doc<A>) => Doc<never> = internal.unAnnotate\n\n// -----------------------------------------------------------------------------\n// Folding\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category folding\n */\nexport const match: {\n // -----------------------------------------------------------------------------\n // Folding\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category folding\n */\n <A, R>(\n patterns: {\n readonly Fail: () => R\n readonly Empty: () => R\n readonly Char: (char: string) => R\n readonly Text: (text: string) => R\n readonly Line: () => R\n readonly FlatAlt: (x: Doc<A>, y: Doc<A>) => R\n readonly Cat: (x: Doc<A>, y: Doc<A>) => R\n readonly Nest: (indent: number, doc: Doc<A>) => R\n readonly Union: (x: Doc<A>, y: Doc<A>) => R\n readonly Column: (react: (position: number) => Doc<A>) => R\n readonly WithPageWidth: (react: (pageWidth: PageWidth) => Doc<A>) => R\n readonly Nesting: (react: (level: number) => Doc<A>) => R\n readonly Annotated: (annotation: A, doc: Doc<A>) => R\n }\n ): (self: Doc<A>) => R\n // -----------------------------------------------------------------------------\n // Folding\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category folding\n */\n <A, R>(\n self: Doc<A>,\n patterns: {\n readonly Fail: () => R\n readonly Empty: () => R\n readonly Char: (char: string) => R\n readonly Text: (text: string) => R\n readonly Line: () => R\n readonly FlatAlt: (x: Doc<A>, y: Doc<A>) => R\n readonly Cat: (x: Doc<A>, y: Doc<A>) => R\n readonly Nest: (indent: number, doc: Doc<A>) => R\n readonly Union: (x: Doc<A>, y: Doc<A>) => R\n readonly Column: (react: (position: number) => Doc<A>) => R\n readonly WithPageWidth: (react: (pageWidth: PageWidth) => Doc<A>) => R\n readonly Nesting: (react: (level: number) => Doc<A>) => R\n readonly Annotated: (annotation: A, doc: Doc<A>) => R\n }\n ): R\n} = internal.match\n\n// -----------------------------------------------------------------------------\n// Instances\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category rendering\n */\nexport const render: {\n // -----------------------------------------------------------------------------\n // Instances\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category rendering\n */\n (config: Doc.RenderConfig): <A>(self: Doc<A>) => string\n // -----------------------------------------------------------------------------\n // Instances\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category rendering\n */\n <A>(self: Doc<A>, config: Doc.RenderConfig): string\n} = InternalRender.render\n\n/**\n * @since 1.0.0\n * @category rendering\n */\nexport const renderStream: <A>(\n self: DocStream<A>\n) => string = InternalRender.renderStream\n\n// -----------------------------------------------------------------------------\n// Instances\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const map: {\n // -----------------------------------------------------------------------------\n // Instances\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(f: (a: A) => B): (self: Doc<A>) => Doc<B>\n // -----------------------------------------------------------------------------\n // Instances\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Doc<A>, f: (a: A) => B): Doc<B>\n} = internal.map\n\n/**\n * @since 1.0.0\n * @category instances\n */\nexport const getSemigroup: <A>(_: void) => Semigroup<Doc<A>> = internal.getSemigroup\n\n/**\n * @since 1.0.0\n * @category instances\n */\nexport const getMonoid: <A>(_: void) => Monoid<Doc<A>> = internal.getMonoid\n\n/**\n * @since 1.0.0\n * @category instances\n */\nexport const Covariant: covariant.Covariant<Doc.TypeLambda> = internal.Covariant\n\n/**\n * @since 1.0.0\n * @category instances\n */\nexport const Invariant: invariant.Invariant<Doc.TypeLambda> = internal.Invariant\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\n/**\n * The `surround` combinator encloses a document in between `left` and `right`\n * documents.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc = pipe(\n * Doc.char(\"-\"),\n * Doc.surround(Doc.char(\"A\"), Doc.char(\"Z\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"A-Z\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const surround: {\n // -----------------------------------------------------------------------------\n // Utilities\n // -----------------------------------------------------------------------------\n\n /**\n * The `surround` combinator encloses a document in between `left` and `right`\n * documents.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc = pipe(\n * Doc.char(\"-\"),\n * Doc.surround(Doc.char(\"A\"), Doc.char(\"Z\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"A-Z\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\n <A, B, C>(left: Doc<A>, right: Doc<B>): (self: Doc<C>) => Doc<A | B | C>\n // -----------------------------------------------------------------------------\n // Utilities\n // -----------------------------------------------------------------------------\n\n /**\n * The `surround` combinator encloses a document in between `left` and `right`\n * documents.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n *\n * const doc = pipe(\n * Doc.char(\"-\"),\n * Doc.surround(Doc.char(\"A\"), Doc.char(\"Z\"))\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"A-Z\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\n <A, B, C>(self: Doc<C>, left: Doc<A>, right: Doc<B>): Doc<A | B | C>\n} = internal.surround\n\n/**\n * Encloses the input document in single quotes (`\"\"`).\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const singleQuoted: <A>(self: Doc<A>) => Doc<A> = internal.singleQuoted\n\n/**\n * Encloses the input document in double quotes (`\"\"`).\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const doubleQuoted: <A>(self: Doc<A>) => Doc<A> = internal.doubleQuoted\n\n/**\n * Encloses the input document in parentheses (`()`).\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const parenthesized: <A>(self: Doc<A>) => Doc<A> = internal.parenthesized\n\n/**\n * Encloses the input document in angle brackets (`<>`).\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const angleBracketed: <A>(self: Doc<A>) => Doc<A> = internal.angleBracketed\n\n/**\n * Encloses the input document in square brackets (`[]`).\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const squareBracketed: <A>(self: Doc<A>) => Doc<A> = internal.squareBracketed\n\n/**\n * Encloses the input document in curly braces (`{}`).\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const curlyBraced: <A>(self: Doc<A>) => Doc<A> = internal.curlyBraced\n\n/**\n * The `spaces` combinator lays out a document containing `n` spaces. Negative\n * values for `n` count as `0` spaces.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n *\n * const doc = Doc.squareBracketed(Doc.doubleQuoted(Doc.spaces(5)))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"[\\\" \\\"]\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const spaces: (n: number) => Doc<never> = internal.spaces\n\n/**\n * @since 1.0.0\n * @category utilities\n */\nexport const textSpaces: (n: number) => string = internal.textSpaces\n\n/**\n * Splits a string of words into individual `Text` documents using the\n * specified `char` to split on (defaults to `\" \"`).\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n *\n * const doc = Doc.tupled(Doc.words(\"lorem ipsum dolor\"))\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * \"(lorem, ipsum, dolor)\"\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const words: (s: string, char?: string) => ReadonlyArray<Doc<never>> = internal.words\n\n/**\n * Splits a string of words into individual `Text` documents using the specified\n * `char` to split on (defaults to `\" \"`). In addition, a `softLine` is inserted\n * in between each word so that if the text exceeds the available width it will\n * be broken into multiple lines.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as String from \"effect/String\"\n *\n * const doc = Doc.reflow(\n * \"Lorem ipsum dolor sit amet, consectetur adipisicing elit, \" +\n * \"sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.\"\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, {\n * style: \"pretty\",\n * options: { lineWidth: 32 }\n * }),\n * String.stripMargin(\n * `|Lorem ipsum dolor sit amet,\n * |consectetur adipisicing elit,\n * |sed do eiusmod tempor incididunt\n * |ut labore et dolore magna\n * |aliqua.`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const reflow: (s: string, char?: string) => Doc<never> = internal.reflow\n\n/**\n * The `punctuate` combinator appends the `punctuator` document to all but the\n * last document in a collection of documents. The separators are places after\n * the document entries, which can be observed if the result is oriented\n * vertically.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const docs = pipe(\n * Doc.words(\"lorem ipsum dolor sit amet\"),\n * Doc.punctuate(Doc.comma)\n * )\n *\n * assert.strictEqual(\n * Doc.render(Doc.hsep(docs), { style: \"pretty\" }),\n * \"lorem, ipsum, dolor, sit, amet\"\n * )\n *\n * // The separators are put at the end of the entries, which can be better\n * // visualzied if the documents are rendered vertically\n * assert.strictEqual(\n * Doc.render(Doc.vsep(docs), { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem,\n * |ipsum,\n * |dolor,\n * |sit,\n * |amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const punctuate: {\n /**\n * The `punctuate` combinator appends the `punctuator` document to all but the\n * last document in a collection of documents. The separators are places after\n * the document entries, which can be observed if the result is oriented\n * vertically.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const docs = pipe(\n * Doc.words(\"lorem ipsum dolor sit amet\"),\n * Doc.punctuate(Doc.comma)\n * )\n *\n * assert.strictEqual(\n * Doc.render(Doc.hsep(docs), { style: \"pretty\" }),\n * \"lorem, ipsum, dolor, sit, amet\"\n * )\n *\n * // The separators are put at the end of the entries, which can be better\n * // visualzied if the documents are rendered vertically\n * assert.strictEqual(\n * Doc.render(Doc.vsep(docs), { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem,\n * |ipsum,\n * |dolor,\n * |sit,\n * |amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\n <A, B>(punctuator: Doc<A>): (docs: Iterable<Doc<B>>) => ReadonlyArray<Doc<A | B>>\n /**\n * The `punctuate` combinator appends the `punctuator` document to all but the\n * last document in a collection of documents. The separators are places after\n * the document entries, which can be observed if the result is oriented\n * vertically.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const docs = pipe(\n * Doc.words(\"lorem ipsum dolor sit amet\"),\n * Doc.punctuate(Doc.comma)\n * )\n *\n * assert.strictEqual(\n * Doc.render(Doc.hsep(docs), { style: \"pretty\" }),\n * \"lorem, ipsum, dolor, sit, amet\"\n * )\n *\n * // The separators are put at the end of the entries, which can be better\n * // visualzied if the documents are rendered vertically\n * assert.strictEqual(\n * Doc.render(Doc.vsep(docs), { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem,\n * |ipsum,\n * |dolor,\n * |sit,\n * |amet`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category utilities\n */\n <A, B>(docs: Iterable<Doc<B>>, punctuator: Doc<A>): ReadonlyArray<Doc<A | B>>\n} = internal.punctuate\n","import * as Doc from \"@effect/printer/Doc\"\nimport type * as AnsiDoc from \"../AnsiDoc.js\"\nimport * as InternalAnsi from \"./ansi.js\"\n\n/** @internal */\nexport const beep: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.beep)\n\n/** @internal */\nexport const cursorTo = (column: number, row?: number): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorTo(column, row))\n\n/** @internal */\nexport const cursorMove = (column: number, row?: number): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorMove(column, row))\n\n/** @internal */\nexport const cursorUp = (lines: number = 1): AnsiDoc.AnsiDoc => Doc.annotate(Doc.empty, InternalAnsi.cursorUp(lines))\n\n/** @internal */\nexport const cursorDown = (lines: number = 1): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorDown(lines))\n\n/** @internal */\nexport const cursorForward = (columns: number = 1): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorForward(columns))\n\n/** @internal */\nexport const cursorBackward = (columns: number = 1): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorBackward(columns))\n\n/** @internal */\nexport const cursorLeft: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.cursorLeft)\n\n/** @internal */\nexport const cursorSavePosition: AnsiDoc.AnsiDoc = Doc.annotate(\n Doc.empty,\n InternalAnsi.cursorSavePosition\n)\n\n/** @internal */\nexport const cursorRestorePosition: AnsiDoc.AnsiDoc = Doc.annotate(\n Doc.empty,\n InternalAnsi.cursorRestorePosition\n)\n\n/** @internal */\nexport const cursorNextLine = (rows: number = 1): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorNextLine(rows))\n\n/** @internal */\nexport const cursorPrevLine = (rows: number = 1): AnsiDoc.AnsiDoc =>\n Doc.annotate(Doc.empty, InternalAnsi.cursorPrevLine(rows))\n\n/** @internal */\nexport const cursorHide: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.cursorHide)\n\n/** @internal */\nexport const cursorShow: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.cursorShow)\n\n/** @internal */\nexport const eraseLines = (rows: number): AnsiDoc.AnsiDoc => Doc.annotate(Doc.empty, InternalAnsi.eraseLines(rows))\n\n/** @internal */\nexport const eraseEndLine: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.eraseEndLine)\n\n/** @internal */\nexport const eraseStartLine: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.eraseStartLine)\n\n/** @internal */\nexport const eraseLine: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.eraseLine)\n\n/** @internal */\nexport const eraseDown: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.eraseDown)\n\n/** @internal */\nexport const eraseUp: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.eraseUp)\n\n/** @internal */\nexport const eraseScreen: AnsiDoc.AnsiDoc = Doc.annotate(Doc.empty, InternalAnsi.eraseScreen)\n","/**\n * @since 1.0.0\n */\n\nimport type { Equal } from \"effect/Equal\"\nimport * as internal from \"./internal/pageWidth.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category symbol\n */\nexport const PageWidthTypeId: unique symbol = internal.PageWidthTypeId as PageWidthTypeId\n\n/**\n * @since 1.0.0\n * @category symbol\n */\nexport type PageWidthTypeId = typeof PageWidthTypeId\n\n/**\n * Represents the maximum number of characters that fit onto a single line in a\n * document. The layout algorithms will try to avoid exceeding the set character\n * limit by inserting line breaks where appropriate (e.g., via `softLine`).\n *\n * @since 1.0.0\n * @category model\n */\nexport type PageWidth = AvailablePerLine | Unbounded\n\n/**\n * @since 1.0.0\n */\nexport declare namespace PageWidth {\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Proto extends Equal {\n readonly [PageWidthTypeId]: PageWidthTypeId\n }\n}\n\n/**\n * Represents a `PageWidth` setting that informs the layout algorithms to avoid\n * exceeding the specified space per line.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface AvailablePerLine extends PageWidth.Proto {\n readonly _tag: \"AvailablePerLine\"\n /**\n * The number of characters, including whitespace, that can fit on a single\n * line.\n */\n readonly lineWidth: number\n /**\n * The fraction of the total page width that can be printed on. This allows\n * limiting the length of printable text per line. Values must be between\n * `0` and `1` (`0.4` to `1` is typical).\n */\n readonly ribbonFraction: number\n}\n\n/**\n * Represents a `PageWidth` setting that informs the layout algorithms to avoid\n * introducing line breaks into a document.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Unbounded extends PageWidth.Proto {\n readonly _tag: \"Unbounded\"\n}\n\n// -----------------------------------------------------------------------------\n// Refinements\n// -----------------------------------------------------------------------------\n\n/**\n * Returns `true` if the specified value is a `PageWidth`, `false` otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isPageWidth: (u: unknown) => u is PageWidth = internal.isPageWidth\n\n/**\n * Returns `true` if the specified `PageWidth` is an `AvailablePerLine`, `false`\n * otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isAvailablePerLine: (self: PageWidth) => self is AvailablePerLine = internal.isAvailablePerLine\n\n/**\n * Returns `true` if the specified `PageWidth` is an `Unbounded`, `false`\n * otherwise.\n *\n * @since 1.0.0\n * @category refinements\n */\nexport const isUnbounded: (self: PageWidth) => self is Unbounded = internal.isUnbounded\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const availablePerLine: (lineWidth: number, ribbonFraction: number) => PageWidth = internal.availablePerLine\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const unbounded: PageWidth = internal.unbounded\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const defaultPageWidth: PageWidth = internal.defaultPageWidth\n\n// -----------------------------------------------------------------------------\n// Utilities\n// -----------------------------------------------------------------------------\n\n/**\n * Calculates the remaining width on the current line.\n *\n * @since 1.0.0\n * @category utilities\n */\nexport const remainingWidth: (\n lineLength: number,\n ribbonFraction: number,\n lineIndent: number,\n currentColumn: number\n) => number = internal.remainingWidth\n","/**\n * @since 1.0.0\n */\n\nimport type { LazyArg } from \"effect/Function\"\nimport type { Doc } from \"./Doc.js\"\nimport type { DocStream } from \"./DocStream.js\"\nimport * as internal from \"./internal/layout.js\"\nimport { defaultPageWidth } from \"./PageWidth.js\"\nimport type { PageWidth } from \"./PageWidth.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Layout<A> {\n (options: Layout.Options): DocStream<A>\n}\n\n/**\n * @since 1.0.0\n */\nexport declare namespace Layout {\n /**\n * Represents the options that will influence the layout algorithms.\n *\n * @since 1.0.0\n * @category model\n */\n export interface Options {\n readonly pageWidth: PageWidth\n }\n\n /**\n * Decides whether a `DocStream` fits the given constraints, namely:\n * - original indentation of the current column\n * - initial indentation of the alternative `DocStream` if it starts with\n * a line break (used by `layoutSmart`)\n * - width in which to fit the first line\n *\n * @since 1.0.0\n * @category model\n */\n export interface FittingPredicate<A> {\n (\n stream: DocStream<A>,\n indentation: number,\n currentColumn: number,\n comparator: LazyArg<DocStream<A>>\n ): boolean\n }\n}\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const options: (pageWidth: PageWidth) => Layout.Options = internal.options\n\n/**\n * The default layout options, which are suitable when you want to obtain output\n * but do not care about the details.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const defaultOptions: Layout.Options = options(defaultPageWidth)\n\n// -----------------------------------------------------------------------------\n// Layout Algorithms\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category layout algorithms\n */\nexport const wadlerLeijen: {\n // -----------------------------------------------------------------------------\n // Layout Algorithms\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category layout algorithms\n */\n <A>(fits: Layout.FittingPredicate<A>, options: Layout.Options): (self: Doc<A>) => DocStream<A>\n // -----------------------------------------------------------------------------\n // Layout Algorithms\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category layout algorithms\n */\n <A>(self: Doc<A>, fits: Layout.FittingPredicate<A>, options: Layout.Options): DocStream<A>\n} = internal.wadlerLeijen\n\n/**\n * A layout algorithm which will lay out a document without adding any\n * indentation and without preserving annotations.\n *\n * Since no pretty-printing is involved, this layout algorithm is very fast. The\n * resulting output contains fewer characters than a pretty-printed version and\n * can be used for output that is read by other programs.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * const doc = pipe(\n * Doc.vsep([\n * Doc.text(\"lorem\"),\n * Doc.text(\"ipsum\"),\n * pipe(\n * Doc.vsep([Doc.text(\"dolor\"), Doc.text(\"sit\")]),\n * Doc.hang(4)\n * )\n * ]),\n * Doc.hang(4)\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"pretty\" }),\n * String.stripMargin(\n * `|lorem\n * | ipsum\n * | dolor\n * | sit`\n * )\n * )\n *\n * assert.strictEqual(\n * Doc.render(doc, { style: \"compact\" }),\n * String.stripMargin(\n * `|lorem\n * |ipsum\n * |dolor\n * |sit`\n * )\n * )\n * ```\n *\n * @since 1.0.0\n * @category layout algorithms\n */\nexport const compact: <A>(self: Doc<A>) => DocStream<A> = internal.compact\n\n/**\n * The `pretty` layout algorithm is the default algorithm for rendering\n * documents.\n *\n * `pretty` commits to rendering something in a certain way if the next\n * element fits the layout constrants. In other words, it has one `DocStream`\n * element lookahead when rendering.\n *\n * Consider using the smarter, but slightly less performant `smart`\n * algorithm if the results seem to run off to the right before having lots of\n * line breaks.\n *\n * @since 1.0.0\n * @category layout algorithms\n */\nexport const pretty: {\n /**\n * The `pretty` layout algorithm is the default algorithm for rendering\n * documents.\n *\n * `pretty` commits to rendering something in a certain way if the next\n * element fits the layout constrants. In other words, it has one `DocStream`\n * element lookahead when rendering.\n *\n * Consider using the smarter, but slightly less performant `smart`\n * algorithm if the results seem to run off to the right before having lots of\n * line breaks.\n *\n * @since 1.0.0\n * @category layout algorithms\n */\n (options: Layout.Options): <A>(self: Doc<A>) => DocStream<A>\n /**\n * The `pretty` layout algorithm is the default algorithm for rendering\n * documents.\n *\n * `pretty` commits to rendering something in a certain way if the next\n * element fits the layout constrants. In other words, it has one `DocStream`\n * element lookahead when rendering.\n *\n * Consider using the smarter, but slightly less performant `smart`\n * algorithm if the results seem to run off to the right before having lots of\n * line breaks.\n *\n * @since 1.0.0\n * @category layout algorithms\n */\n <A>(self: Doc<A>, options: Layout.Options): DocStream<A>\n} = internal.pretty\n\n/**\n * A layout algorithm with more look ahead than `pretty`, which will introduce\n * line breaks into a document earlier if the content does not, or will not, fit\n * onto one line.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import type * as DocStream from \"@effect/printer/DocStream\"\n * import * as Layout from \"@effect/printer/Layout\"\n * import * as PageWidth from \"@effect/printer/PageWidth\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * // Consider the following python-ish document:\n * const fun = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * Doc.hcat([\n * pipe(\n * Doc.hcat([Doc.text(\"fun(\"), Doc.softLineBreak, doc]),\n * Doc.hang(2)\n * ),\n * Doc.text(\")\")\n * ])\n *\n * const funs = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * pipe(doc, fun, fun, fun, fun, fun)\n *\n * const doc = funs(Doc.align(Doc.list(Doc.words(\"abcdef ghijklm\"))))\n *\n * // The document will be rendered using the following pipeline, where the choice\n * // of layout algorithm has been left open:\n * const pageWidth = PageWidth.availablePerLine(26, 1)\n * const layoutOptions = Layout.options(pageWidth)\n * const dashes = Doc.text(Array.from({ length: 26 - 2 }, () => \"-\").join(\"\"))\n * const hr = Doc.hcat([Doc.vbar, dashes, Doc.vbar])\n *\n * const render = <A>(\n * doc: Doc.Doc<A>\n * ) =>\n * (\n * layoutAlgorithm: (options: Layout.Layout.Options) => (doc: Doc.Doc<A>) => DocStream.DocStream<A>\n * ): string => pipe(Doc.vsep([hr, doc, hr]), layoutAlgorithm(layoutOptions), Doc.renderStream)\n *\n * // If rendered using `Layout.pretty`, with a page width of `26` characters per line,\n * // all the calls to `fun` will fit into the first line. However, this exceeds the\n * // desired `26` character page width.\n * assert.strictEqual(\n * render(doc)(Layout.pretty),\n * String.stripMargin(\n * `||------------------------|\n * |fun(fun(fun(fun(fun(\n * | [ abcdef\n * | , ghijklm ])))))\n * ||------------------------|`\n * )\n * )\n *\n * // The same document, rendered with `Layout.smart`, fits the layout contstraints:\n * assert.strictEqual(\n * render(doc)(Layout.smart),\n * String.stripMargin(\n * `||------------------------|\n * |fun(\n * | fun(\n * | fun(\n * | fun(\n * | fun(\n * | [ abcdef\n * | , ghijklm ])))))\n * ||------------------------|`\n * )\n * )\n *\n * // The key difference between `Layout.pretty` and `Layout.smart` is that the\n * // latter will check the potential document until it encounters a line with the\n * // same indentation or less than the start of the document. Any line encountered\n * // earlier is assumed to belong to the same syntactic structure. In contrast,\n * // `Layout.pretty` checks only the first line.\n *\n * // Consider for example the question of whether the `A`s fit into the document\n * // below:\n * // > 1 A\n * // > 2 A\n * // > 3 A\n * // > 4 B\n * // > 5 B\n *\n * // `pretty` will check only the first line, ignoring whether the second line\n * // may already be too wide. In contrast, `Layout.smart` stops only once it reaches\n * // the fourth line 4, where the `B` has the same indentation as the first `A`.\n * ```\n *\n * @since 1.0.0\n * @category layout algorithms\n */\nexport const smart: {\n /**\n * A layout algorithm with more look ahead than `pretty`, which will introduce\n * line breaks into a document earlier if the content does not, or will not, fit\n * onto one line.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import type * as DocStream from \"@effect/printer/DocStream\"\n * import * as Layout from \"@effect/printer/Layout\"\n * import * as PageWidth from \"@effect/printer/PageWidth\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * // Consider the following python-ish document:\n * const fun = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * Doc.hcat([\n * pipe(\n * Doc.hcat([Doc.text(\"fun(\"), Doc.softLineBreak, doc]),\n * Doc.hang(2)\n * ),\n * Doc.text(\")\")\n * ])\n *\n * const funs = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * pipe(doc, fun, fun, fun, fun, fun)\n *\n * const doc = funs(Doc.align(Doc.list(Doc.words(\"abcdef ghijklm\"))))\n *\n * // The document will be rendered using the following pipeline, where the choice\n * // of layout algorithm has been left open:\n * const pageWidth = PageWidth.availablePerLine(26, 1)\n * const layoutOptions = Layout.options(pageWidth)\n * const dashes = Doc.text(Array.from({ length: 26 - 2 }, () => \"-\").join(\"\"))\n * const hr = Doc.hcat([Doc.vbar, dashes, Doc.vbar])\n *\n * const render = <A>(\n * doc: Doc.Doc<A>\n * ) =>\n * (\n * layoutAlgorithm: (options: Layout.Layout.Options) => (doc: Doc.Doc<A>) => DocStream.DocStream<A>\n * ): string => pipe(Doc.vsep([hr, doc, hr]), layoutAlgorithm(layoutOptions), Doc.renderStream)\n *\n * // If rendered using `Layout.pretty`, with a page width of `26` characters per line,\n * // all the calls to `fun` will fit into the first line. However, this exceeds the\n * // desired `26` character page width.\n * assert.strictEqual(\n * render(doc)(Layout.pretty),\n * String.stripMargin(\n * `||------------------------|\n * |fun(fun(fun(fun(fun(\n * | [ abcdef\n * | , ghijklm ])))))\n * ||------------------------|`\n * )\n * )\n *\n * // The same document, rendered with `Layout.smart`, fits the layout contstraints:\n * assert.strictEqual(\n * render(doc)(Layout.smart),\n * String.stripMargin(\n * `||------------------------|\n * |fun(\n * | fun(\n * | fun(\n * | fun(\n * | fun(\n * | [ abcdef\n * | , ghijklm ])))))\n * ||------------------------|`\n * )\n * )\n *\n * // The key difference between `Layout.pretty` and `Layout.smart` is that the\n * // latter will check the potential document until it encounters a line with the\n * // same indentation or less than the start of the document. Any line encountered\n * // earlier is assumed to belong to the same syntactic structure. In contrast,\n * // `Layout.pretty` checks only the first line.\n *\n * // Consider for example the question of whether the `A`s fit into the document\n * // below:\n * // > 1 A\n * // > 2 A\n * // > 3 A\n * // > 4 B\n * // > 5 B\n *\n * // `pretty` will check only the first line, ignoring whether the second line\n * // may already be too wide. In contrast, `Layout.smart` stops only once it reaches\n * // the fourth line 4, where the `B` has the same indentation as the first `A`.\n * ```\n *\n * @since 1.0.0\n * @category layout algorithms\n */\n (options: Layout.Options): <A>(self: Doc<A>) => DocStream<A>\n /**\n * A layout algorithm with more look ahead than `pretty`, which will introduce\n * line breaks into a document earlier if the content does not, or will not, fit\n * onto one line.\n *\n * @example\n * ```ts\n * import * as assert from \"node:assert\"\n * import * as Doc from \"@effect/printer/Doc\"\n * import type * as DocStream from \"@effect/printer/DocStream\"\n * import * as Layout from \"@effect/printer/Layout\"\n * import * as PageWidth from \"@effect/printer/PageWidth\"\n * import { pipe } from \"effect/Function\"\n * import * as String from \"effect/String\"\n *\n * // Consider the following python-ish document:\n * const fun = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * Doc.hcat([\n * pipe(\n * Doc.hcat([Doc.text(\"fun(\"), Doc.softLineBreak, doc]),\n * Doc.hang(2)\n * ),\n * Doc.text(\")\")\n * ])\n *\n * const funs = <A>(doc: Doc.Doc<A>): Doc.Doc<A> =>\n * pipe(doc, fun, fun, fun, fun, fun)\n *\n * const doc = funs(Doc.align(Doc.list(Doc.words(\"abcdef ghijklm\"))))\n *\n * // The document will be rendered using the following pipeline, where the choice\n * // of layout algorithm has been left open:\n * const pageWidth = PageWidth.availablePerLine(26, 1)\n * const layoutOptions = Layout.options(pageWidth)\n * const dashes = Doc.text(Array.from({ length: 26 - 2 }, () => \"-\").join(\"\"))\n * const hr = Doc.hcat([Doc.vbar, dashes, Doc.vbar])\n *\n * const render = <A>(\n * doc: Doc.Doc<A>\n * ) =>\n * (\n * layoutAlgorithm: (options: Layout.Layout.Options) => (doc: Doc.Doc<A>) => DocStream.DocStream<A>\n * ): string => pipe(Doc.vsep([hr, doc, hr]), layoutAlgorithm(layoutOptions), Doc.renderStream)\n *\n * // If rendered using `Layout.pretty`, with a page width of `26` characters per line,\n * // all the calls to `fun` will fit into the first line. However, this exceeds the\n * // desired `26` character page width.\n * assert.strictEqual(\n * render(doc)(Layout.pretty),\n * String.stripMargin(\n * `||------------------------|\n * |fun(fun(fun(fun(fun(\n * | [ abcdef\n * | , ghijklm ])))))\n * ||------------------------|`\n * )\n * )\n *\n * // The same document, rendered with `Layout.smart`, fits the layout contstraints:\n * assert.strictEqual(\n * render(doc)(Layout.smart),\n * String.stripMargin(\n * `||------------------------|\n * |fun(\n * | fun(\n * | fun(\n * | fun(\n * | fun(\n * | [ abcdef\n * | , ghijklm ])))))\n * ||------------------------|`\n * )\n * )\n *\n * // The key difference between `Layout.pretty` and `Layout.smart` is that the\n * // latter will check the potential document until it encounters a line with the\n * // same indentation or less than the start of the document. Any line encountered\n * // earlier is assumed to belong to the same syntactic structure. In contrast,\n * // `Layout.pretty` checks only the first line.\n *\n * // Consider for example the question of whether the `A`s fit into the document\n * // below:\n * // > 1 A\n * // > 2 A\n * // > 3 A\n * // > 4 B\n * // > 5 B\n *\n * // `pretty` will check only the first line, ignoring whether the second line\n * // may already be too wide. In contrast, `Layout.smart` stops only once it reaches\n * // the fourth line 4, where the `B` has the same indentation as the first `A`.\n * ```\n *\n * @since 1.0.0\n * @category layout algorithms\n */\n <A>(self: Doc<A>, options: Layout.Options): DocStream<A>\n} = internal.smart\n\n/**\n * The `unbounded` layout algorithm will lay out a document an `Unbounded`\n * page width.\n *\n * @since 1.0.0\n * @category layout algorithms\n */\nexport const unbounded: <A>(self: Doc<A>) => DocStream<A> = internal.unbounded\n","import type * as DocStream from \"@effect/printer/DocStream\"\nimport * as Layout from \"@effect/printer/Layout\"\nimport * as PageWidth from \"@effect/printer/PageWidth\"\nimport * as Effect from \"effect/Effect\"\nimport { dual } from \"effect/Function\"\nimport * as List from \"effect/List\"\nimport type * as Ansi from \"../Ansi.js\"\nimport type * as AnsiDoc from \"../AnsiDoc.js\"\nimport * as InternalAnsi from \"./ansi.js\"\n\n// -----------------------------------------------------------------------------\n// Rendering Algorithms\n// -----------------------------------------------------------------------------\n\n/** @internal */\nexport const render = dual<\n (config: AnsiDoc.AnsiDoc.RenderConfig) => (self: AnsiDoc.AnsiDoc) => string,\n (self: AnsiDoc.AnsiDoc, config: AnsiDoc.AnsiDoc.RenderConfig) => string\n>(2, (self, config) => {\n switch (config.style) {\n case \"compact\": {\n return renderStream(Layout.compact(self))\n }\n case \"pretty\": {\n const width = Object.assign({}, PageWidth.defaultPageWidth, config.options)\n return renderStream(Layout.pretty(self, Layout.options(width)))\n }\n case \"smart\": {\n const width = Object.assign({}, PageWidth.defaultPageWidth, config.options)\n return renderStream(Layout.smart(self, Layout.options(width)))\n }\n }\n})\n\n/** @internal */\nexport const renderStream = (self: DocStream.DocStream<Ansi.Ansi>): string =>\n Effect.runSync(renderSafe(self, List.of(InternalAnsi.none)))\n\nconst unsafePeek = (stack: List.List<Ansi.Ansi>): Ansi.Ansi => {\n if (List.isNil(stack)) {\n throw new Error(\n \"BUG: AnsiRender.unsafePeek - peeked at an empty stack\" +\n \" - please report an issue at https://github.com/Effect-TS/printer/issues\"\n )\n }\n return stack.head\n}\n\nconst unsafePop = (\n stack: List.List<Ansi.Ansi>\n): readonly [Ansi.Ansi, List.List<Ansi.Ansi>] => {\n if (List.isNil(stack)) {\n throw new Error(\n \"BUG: AnsiRender.unsafePop - popped from an empty stack\" +\n \" - please report an issue at https://github.com/Effect-TS/printer/issues\"\n )\n }\n return [stack.head, stack.tail]\n}\n\nconst renderSafe = (\n self: DocStream.DocStream<Ansi.Ansi>,\n stack: List.List<Ansi.Ansi>\n): Effect.Effect<string> => {\n switch (self._tag) {\n case \"FailedStream\": {\n return Effect.dieMessage(\n \"BUG: AnsiRender.renderSafe - attempted to render a failed doc stream\" +\n \" - please report an issue at https://github.com/Effect-TS/printer/issues\"\n )\n }\n case \"EmptyStream\": {\n return Effect.succeed(\"\")\n }\n case \"CharStream\": {\n return Effect.map(\n Effect.suspend(() => renderSafe(self.stream, stack)),\n (rest) => self.char + rest\n )\n }\n case \"TextStream\": {\n return Effect.map(\n Effect.suspend(() => renderSafe(self.stream, stack)),\n (rest) => self.text + rest\n )\n }\n case \"LineStream\": {\n let indent = \"\\n\"\n for (let i = 0; i < self.indentation; i++) {\n indent = indent += \" \"\n }\n return Effect.map(\n Effect.suspend(() => renderSafe(self.stream, stack)),\n (rest) => indent + rest\n )\n }\n case \"PushAnnotationStream\": {\n const currentStyle = unsafePeek(stack)\n const nextStyle = InternalAnsi.combine(self.annotation, currentStyle)\n return Effect.map(\n Effect.suspend(() => renderSafe(self.stream, List.cons(self.annotation, stack))),\n (rest) => InternalAnsi.stringify(nextStyle) + rest\n )\n }\n case \"PopAnnotationStream\": {\n const [, styles] = unsafePop(stack)\n const nextStyle = unsafePeek(styles)\n return Effect.map(\n Effect.suspend(() => renderSafe(self.stream, styles)),\n (rest) => InternalAnsi.stringify(nextStyle) + rest\n )\n }\n }\n}\n","/**\n * @since 1.0.0\n */\nimport type { Doc } from \"@effect/printer/Doc\"\nimport type { AvailablePerLine } from \"@effect/printer/PageWidth\"\nimport type { Ansi } from \"./Ansi.js\"\nimport * as InternalAnsiDoc from \"./internal/ansiDoc.js\"\nimport * as InternalAnsiRender from \"./internal/ansiRender.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport type AnsiDoc = Doc<Ansi>\n\n/**\n * @since 1.0.0\n */\nexport declare namespace AnsiDoc {\n /**\n * @since 1.0.0\n * @category model\n */\n export type RenderConfig = Compact | Pretty | Smart\n\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Compact {\n readonly style: \"compact\"\n }\n\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Pretty {\n readonly style: \"pretty\"\n readonly options?: Partial<Omit<AvailablePerLine, \"_tag\">>\n }\n\n /**\n * @since 1.0.0\n * @category model\n */\n export interface Smart {\n readonly style: \"smart\"\n readonly options?: Partial<Omit<AvailablePerLine, \"_tag\">>\n }\n}\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * Play a beeping sound.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const beep: AnsiDoc = InternalAnsiDoc.beep\n\n/**\n * Moves the cursor to the specified `row` and `column`.\n *\n * Though the ANSI Control Sequence for Cursor Position is `1`-based, this\n * method takes row and column values starting from `0` and adjusts them to `1`-\n * based values.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const cursorTo: (column: number, row?: number) => AnsiDoc = InternalAnsiDoc.cursorTo\n\n/**\n * Move the cursor position the specified number of `rows` and `columns`\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen in either direction, then\n * additional movement will have no effect.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const cursorMove: (column: number, row?: number) => AnsiDoc = InternalAnsiDoc.cursorMove\n\n/**\n * Moves the cursor up by the specified number of `lines` (default `1`) relative\n * to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorUp: (lines?: number) => AnsiDoc = InternalAnsiDoc.cursorUp\n\n/**\n * Moves the cursor down by the specified number of `lines` (default `1`)\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorDown: (lines?: number) => AnsiDoc = InternalAnsiDoc.cursorDown\n\n/**\n * Moves the cursor forward by the specified number of `columns` (default `1`)\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorForward: (columns?: number) => AnsiDoc = InternalAnsiDoc.cursorForward\n\n/**\n * Moves the cursor backward by the specified number of `columns` (default `1`)\n * relative to the current cursor position.\n *\n * If the cursor is already at the edge of the screen, this has no effect.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorBackward: (columns?: number) => AnsiDoc = InternalAnsiDoc.cursorBackward\n\n/**\n * Moves the cursor to the first column of the current row.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorLeft: AnsiDoc = InternalAnsiDoc.cursorLeft\n\n/**\n * Saves the cursor position, encoding shift state and formatting attributes.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorSavePosition: AnsiDoc = InternalAnsiDoc.cursorSavePosition\n\n/**\n * Restores the cursor position, encoding shift state and formatting attributes\n * from the previous save, if any, otherwise resets these all to their defaults.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorRestorePosition: AnsiDoc = InternalAnsiDoc.cursorRestorePosition\n\n/**\n * Moves cursor to beginning of the line the specified number of rows down\n * (default `1`).\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorNextLine: (rows?: number) => AnsiDoc = InternalAnsiDoc.cursorNextLine\n\n/**\n * Moves cursor to beginning of the line the specified number of rows up\n * (default `1`).\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorPrevLine: (rows?: number) => AnsiDoc = InternalAnsiDoc.cursorPrevLine\n\n/**\n * Hides the cursor.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorHide: AnsiDoc = InternalAnsiDoc.cursorHide\n\n/**\n * Shows the cursor.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const cursorShow: AnsiDoc = InternalAnsiDoc.cursorShow\n\n/**\n * Erase from the current cursor position up the specified amount of rows.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseLines: (rows: number) => AnsiDoc = InternalAnsiDoc.eraseLines\n\n/**\n * Clears from the current cursor position to the end of the current line.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseEndLine: AnsiDoc = InternalAnsiDoc.eraseEndLine\n\n/**\n * Clears from the current cursor position to the start of the current line.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseStartLine: AnsiDoc = InternalAnsiDoc.eraseStartLine\n\n/**\n * Clears the current line.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseLine: AnsiDoc = InternalAnsiDoc.eraseLine\n\n/**\n * Clears from the current cursor position to the end of the screen.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseDown: AnsiDoc = InternalAnsiDoc.eraseDown\n\n/**\n * Clears from the current cursor position to the beginning of the screen.\n *\n * The current cursor position does not change.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseUp: AnsiDoc = InternalAnsiDoc.eraseUp\n\n/**\n * Clears the entire screen and move the cursor to the upper left.\n *\n * @since 1.0.0\n * @category commands\n */\nexport const eraseScreen: AnsiDoc = InternalAnsiDoc.eraseScreen\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category destructors\n */\nexport const render: {\n // -----------------------------------------------------------------------------\n // Destructors\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category destructors\n */\n (config: AnsiDoc.RenderConfig): (self: AnsiDoc) => string\n // -----------------------------------------------------------------------------\n // Destructors\n // -----------------------------------------------------------------------------\n\n /**\n * @since 1.0.0\n * @category destructors\n */\n (self: AnsiDoc, config: AnsiDoc.RenderConfig): string\n} = InternalAnsiRender.render\n\n// -----------------------------------------------------------------------------\n// Re-Exports\n// -----------------------------------------------------------------------------\n\nexport type {\n /**\n * @since 1.0.0\n * @category model\n */\n Annotated,\n /**\n * @since 1.0.0\n * @category model\n */\n Cat,\n /**\n * @since 1.0.0\n * @category model\n */\n Char,\n /**\n * @since 1.0.0\n * @category model\n */\n Column,\n /**\n * @since 1.0.0\n * @category model\n */\n Covariant,\n /**\n * @since 1.0.0\n * @category model\n */\n Doc,\n /**\n * @since 1.0.0\n * @category model\n */\n DocTypeId,\n /**\n * @since 1.0.0\n * @category model\n */\n DocTypeLambda,\n /**\n * @since 1.0.0\n * @category model\n */\n Empty,\n /**\n * @since 1.0.0\n * @category model\n */\n Fail,\n /**\n * @since 1.0.0\n * @category model\n */\n FlatAlt,\n /**\n * @since 1.0.0\n * @category model\n */\n Line,\n /**\n * @since 1.0.0\n * @category model\n */\n Nest,\n /**\n * @since 1.0.0\n * @category model\n */\n Nesting,\n /**\n * @since 1.0.0\n * @category model\n */\n Text,\n /**\n * @since 1.0.0\n * @category model\n */\n Union,\n /**\n * @since 1.0.0\n * @category model\n */\n WithPageWidth\n} from \"@effect/printer/Doc\"\n\nexport type {\n /**\n * @since 1.0.0\n * @category model\n */\n AlreadyFlat,\n /**\n * @since 1.0.0\n * @category model\n */\n Flatten,\n /**\n * @since 1.0.0\n * @category model\n */\n Flattened,\n /**\n * @since 1.0.0\n * @category model\n */\n NeverFlat\n} from \"@effect/printer/Flatten\"\n\nexport {\n /**\n * @since 1.0.0\n * @category alignment\n */\n align,\n /**\n * @since 1.0.0\n * @category annotations\n */\n alterAnnotations,\n /**\n * @since 1.0.0\n * @category utilities\n */\n angleBracketed,\n /**\n * @since 1.0.0\n * @category annotations\n */\n annotate,\n /**\n * @since 1.0.0\n * @category primitives\n */\n backslash,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n cat,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n cats,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n catWithLine,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n catWithLineBreak,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n catWithSoftLine,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n catWithSoftLineBreak,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n catWithSpace,\n /**\n * @since 1.0.0\n * @category flattening\n */\n changesUponFlattening,\n /**\n * @since 1.0.0\n * @category constructors\n */\n char,\n /**\n * @since 1.0.0\n * @category primitives\n */\n colon,\n /**\n * @since 1.0.0\n * @category reactive layouts\n */\n column,\n /**\n * @since 1.0.0\n * @category primitives\n */\n comma,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n concatWith,\n /**\n * @since 1.0.0\n * @category utilities\n */\n curlyBraced,\n /**\n * @since 1.0.0\n * @category primitives\n */\n dot,\n /**\n * @since 1.0.0\n * @category utilities\n */\n doubleQuoted,\n /**\n * @since 1.0.0\n * @category primitives\n */\n dquote,\n /**\n * @since 1.0.0\n * @category primitives\n */\n empty,\n /**\n * @since 1.0.0\n * @category alignment\n */\n encloseSep,\n /**\n * @since 1.0.0\n * @category primitives\n */\n equalSign,\n /**\n * @since 1.0.0\n * @category primitives\n */\n fail,\n /**\n * @since 1.0.0\n * @category filling\n */\n fill,\n /**\n * @since 1.0.0\n * @category filling\n */\n fillBreak,\n /**\n * @since 1.0.0\n * @category filling\n */\n fillCat,\n /**\n * @since 1.0.0\n * @category filling\n */\n fillSep,\n /**\n * @since 1.0.0\n * @category alternative layouts\n */\n flatAlt,\n /**\n * @since 1.0.0\n * @category flattening\n */\n flatten,\n /**\n * @since 1.0.0\n * @category alternative layouts\n */\n group,\n /**\n * @since 1.0.0\n * @category alignment\n */\n hang,\n /**\n * @since 1.0.0\n * @category primitives\n */\n hardLine,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n hcat,\n /**\n * @since 1.0.0\n * @category separation\n */\n hsep,\n /**\n * @since 1.0.0\n * @category alignment\n */\n indent,\n /**\n * @since 1.0.0\n * @category instances\n */\n Invariant,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isAnnotated,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isCat,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isChar,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isColumn,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isDoc,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isEmpty,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isFail,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isFlatAlt,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isLine,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isNest,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isNesting,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isText,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isUnion,\n /**\n * @since 1.0.0\n * @category refinements\n */\n isWithPageWidth,\n /**\n * @since 1.0.0\n * @category primitives\n */\n langle,\n /**\n * @since 1.0.0\n * @category primitives\n */\n lbrace,\n /**\n * @since 1.0.0\n * @category primitives\n */\n lbracket,\n /**\n * @since 1.0.0\n * @category primitives\n */\n line,\n /**\n * @since 1.0.0\n * @category primitives\n */\n lineBreak,\n /**\n * @since 1.0.0\n * @category alignment\n */\n list,\n /**\n * @since 1.0.0\n * @category primitives\n */\n lparen,\n /**\n * @since 1.0.0\n * @category combinators\n */\n map,\n /**\n * @since 1.0.0\n * @category matching\n */\n match,\n /**\n * @since 1.0.0\n * @category alignment\n */\n nest,\n /**\n * @since 1.0.0\n * @category reactive layouts\n */\n nesting,\n /**\n * @since 1.0.0\n * @category reactive layouts\n */\n pageWidth,\n /**\n * @since 1.0.0\n * @category utilities\n */\n parenthesized,\n /**\n * @since 1.0.0\n * @category utilities\n */\n punctuate,\n /**\n * @since 1.0.0\n * @category primitives\n */\n rangle,\n /**\n * @since 1.0.0\n * @category primitives\n */\n rbrace,\n /**\n * @since 1.0.0\n * @category primitives\n */\n rbracket,\n /**\n * @since 1.0.0\n * @category annotations\n */\n reAnnotate,\n /**\n * @since 1.0.0\n * @category utilities\n */\n reflow,\n /**\n * @since 1.0.0\n * @category primitives\n */\n rparen,\n /**\n * @since 1.0.0\n * @category primitives\n */\n semi,\n /**\n * @since 1.0.0\n * @category separation\n */\n seps,\n /**\n * @since 1.0.0\n * @category utilities\n */\n singleQuoted,\n /**\n * @since 1.0.0\n * @category primitives\n */\n slash,\n /**\n * @since 1.0.0\n * @category primitives\n */\n softLine,\n /**\n * @since 1.0.0\n * @category primitives\n */\n softLineBreak,\n /**\n * @since 1.0.0\n * @category primitives\n */\n space,\n /**\n * @since 1.0.0\n * @category utilities\n */\n spaces,\n /**\n * @since 1.0.0\n * @category utilities\n */\n squareBracketed,\n /**\n * @since 1.0.0\n * @category primitives\n */\n squote,\n /**\n * @since 1.0.0\n * @category constructors\n */\n string,\n /**\n * @since 1.0.0\n * @category utilities\n */\n surround,\n /**\n * @since 1.0.0\n * @category constructors\n */\n text,\n /**\n * @since 1.0.0\n * @category utilities\n */\n textSpaces,\n /**\n * @since 1.0.0\n * @category alignment\n */\n tupled,\n /**\n * @since 1.0.0\n * @category annotations\n */\n unAnnotate,\n /**\n * @since 1.0.0\n * @category alternative layouts\n */\n union,\n /**\n * @since 1.0.0\n * @category primitives\n */\n vbar,\n /**\n * @since 1.0.0\n * @category concatenation\n */\n vcat,\n /**\n * @since 1.0.0\n * @category separation\n */\n vsep,\n /**\n * @since 1.0.0\n * @category reactive layouts\n */\n width,\n /**\n * @since 1.0.0\n * @category utilities\n */\n words\n} from \"@effect/printer/Doc\"\n","import * as Effect from \"effect/Effect\"\nimport { dual } from \"effect/Function\"\nimport type * as Doc from \"../Doc.js\"\nimport type * as Optimize from \"../Optimize.js\"\nimport * as InternalDoc from \"./doc.js\"\n\n/** @internal */\nexport const optimize = dual<\n (depth: Optimize.Optimize.Depth) => <A>(self: Doc.Doc<A>) => Doc.Doc<A>,\n <A>(self: Doc.Doc<A>, depth: Optimize.Optimize.Depth) => Doc.Doc<A>\n>(2, (self, depth) => Effect.runSync(optimizeSafe(self, depth)))\n\nconst optimizeSafe = <A>(\n self: Doc.Doc<A>,\n depth: Optimize.Optimize.Depth\n): Effect.Effect<Doc.Doc<A>> => {\n const optimize = (self: Doc.Doc<A>): Effect.Effect<Doc.Doc<A>> =>\n Effect.gen(function*() {\n switch (self._tag) {\n case \"Fail\":\n case \"Empty\":\n case \"Char\":\n case \"Text\":\n case \"Line\": {\n return self\n }\n case \"FlatAlt\": {\n const left = yield* optimize(self.left)\n const right = yield* optimize(self.right)\n return InternalDoc.flatAlt(left, right)\n }\n case \"Cat\": {\n // Empty Documents\n if (InternalDoc.isEmpty(self.left)) {\n return yield* optimize(self.right)\n }\n if (InternalDoc.isEmpty(self.right)) {\n return yield* optimize(self.left)\n }\n // Text Documents\n if (InternalDoc.isChar(self.left) && InternalDoc.isChar(self.right)) {\n return InternalDoc.text(self.left.char + self.right.char)\n }\n if (InternalDoc.isText(self.left) && InternalDoc.isChar(self.right)) {\n return InternalDoc.text(self.left.text + self.right.char)\n }\n if (InternalDoc.isChar(self.left) && InternalDoc.isText(self.right)) {\n return InternalDoc.text(self.left.char + self.right.text)\n }\n if (InternalDoc.isText(self.left) && InternalDoc.isText(self.right)) {\n return InternalDoc.text(self.left.text + self.right.text)\n }\n // Nested Text Documents\n if (\n (\n InternalDoc.isChar(self.left) &&\n InternalDoc.isCat(self.right) &&\n InternalDoc.isChar(self.right.left)\n ) ||\n (\n InternalDoc.isChar(self.left) &&\n InternalDoc.isCat(self.right) &&\n InternalDoc.isText(self.right.left)\n ) ||\n (\n InternalDoc.isText(self.left) &&\n InternalDoc.isCat(self.right) &&\n InternalDoc.isChar(self.right.left)\n ) ||\n (\n InternalDoc.isText(self.left) &&\n InternalDoc.isCat(self.right) &&\n InternalDoc.isText(self.right.left)\n )\n ) {\n const inner = yield* optimize(InternalDoc.cat(self.left, self.right.left))\n return yield* optimize(InternalDoc.cat(inner, self.right.right))\n }\n // Nested Documents\n if (\n (\n InternalDoc.isCat(self.left) &&\n InternalDoc.isChar(self.left.right)\n ) ||\n (\n InternalDoc.isCat(self.left) &&\n InternalDoc.isText(self.left.right)\n )\n ) {\n const inner = yield* optimize(InternalDoc.cat(self.left.right, self.right))\n return yield* optimize(InternalDoc.cat(self.left.left, inner))\n }\n // Otherwise\n const left = yield* optimize(self.left)\n const right = yield* optimize(self.right)\n return InternalDoc.cat(left, right)\n }\n case \"Nest\": {\n if (self.indent === 0) {\n return yield* optimize(self.doc)\n }\n if (\n InternalDoc.isEmpty(self.doc) ||\n InternalDoc.isChar(self.doc) ||\n InternalDoc.isText(self.doc)\n ) {\n return self.doc\n }\n if (InternalDoc.isNest(self.doc)) {\n const indent = self.indent + self.doc.indent\n return yield* optimize(InternalDoc.nest(self.doc.doc, indent))\n }\n return InternalDoc.nest(yield* optimize(self.doc), self.indent)\n }\n case \"Union\": {\n const left = yield* optimize(self.left)\n const right = yield* optimize(self.right)\n return InternalDoc.union(left, right)\n }\n case \"Column\": {\n return depth._tag === \"Shallow\"\n ? self\n : InternalDoc.column((position) => Effect.runSync(optimizeSafe(self.react(position), depth)))\n }\n case \"WithPageWidth\": {\n return depth._tag === \"Shallow\"\n ? self\n : InternalDoc.pageWidth((pageWidth) => Effect.runSync(optimizeSafe(self.react(pageWidth), depth)))\n }\n case \"Nesting\": {\n return depth._tag === \"Shallow\"\n ? self\n : InternalDoc.nesting((level) => Effect.runSync(optimizeSafe(self.react(level), depth)))\n }\n case \"Annotated\": {\n return InternalDoc.annotate(yield* optimize(self.doc), self.annotation)\n }\n }\n })\n return optimize(self)\n}\n","/**\n * @since 1.0.0\n */\n\nimport type { Doc } from \"./Doc.js\"\nimport * as internal from \"./internal/optimize.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * Represents optimization of a given document tree through fusion of redundant\n * document nodes.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Optimize<A> {\n (depth: Optimize.Depth): Doc<A>\n}\n\n/**\n * @since 1.0.0\n */\nexport declare namespace Optimize {\n /**\n * @since 1.0.0\n */\n export type Depth = FusionDepth\n}\n\n/**\n * Represents an instruction that determines how deeply the document fusion\n * optimizer should traverse the document tree.\n *\n * @since 1.0.0\n * @category model\n */\nexport type FusionDepth = Shallow | Deep\n\n/**\n * Instructs the document fusion optimizer to avoid diving deeply into nested\n * documents, fusing mostly concatenations of text nodes together.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Shallow {\n readonly _tag: \"Shallow\"\n}\n\n/**\n * Instructs the document fusion optimizer to recurse into all leaves of the\n * document tree, including different layout alternatives and all\n * location-sensitive values (i.e. those created by `nesting`), which cannot be\n * fused before, but only during, the layout process. As a result, the\n * performance cost of using deep document fusion optimization is often hard to\n * predict and depends on the interplay between page layout and the document\n * that is to be pretty printed.\n *\n * This value should only be utilized if profiling demonstrates that it is\n * **significantly** faster than using `Shallow`.\n *\n * @since 1.0.0\n * @category model\n */\nexport interface Deep {\n readonly _tag: \"Deep\"\n}\n\n/**\n * @since 1.0.0\n * @category instances\n */\nexport const Shallow: FusionDepth = {\n _tag: \"Shallow\"\n}\n\n/**\n * @since 1.0.0\n * @category instances\n */\nexport const Deep: FusionDepth = {\n _tag: \"Deep\"\n}\n\n// -----------------------------------------------------------------------------\n// Optimization\n// -----------------------------------------------------------------------------\n\n/**\n * The `optimize` function will combine text nodes so that they can be rendered\n * more efficiently. An optimized document is always laid out in an identical\n * manner to its un-optimized counterpart.\n *\n * When laying a `Doc` out to a `SimpleDocStream`, every component of the input\n * document is translated directly to the simpler output format. This sometimes\n * yields undesirable chunking when many pieces have been concatenated together.\n *\n * It is therefore a good idea to run `fuse` on concatenations of lots of small\n * strings that are used many times.\n *\n * @example\n * ```ts\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as Optimize from \"@effect/printer/Optimize\"\n *\n * // The document below contains a chain of four entries in the output `DocStream`\n * const inefficient = Doc.hsep([\n * Doc.char(\"a\"),\n * Doc.char(\"b\"),\n * Doc.char(\"c\"),\n * Doc.char(\"d\")\n * ])\n *\n * // However, the above document is fully equivalent to the tightly packed\n * // document below which is only a single entry in the output `DocStream` and\n * // can be processed much more efficiently.\n * const efficient = Doc.text(\"abcd\")\n *\n * // We can optimize the `inefficient` document using `Optimize`\n * Optimize.optimize(Optimize.Deep)(inefficient)\n * ```\n *\n * @since 1.0.0\n * @category optimization\n */\nexport const optimize: {\n // -----------------------------------------------------------------------------\n // Optimization\n // -----------------------------------------------------------------------------\n\n /**\n * The `optimize` function will combine text nodes so that they can be rendered\n * more efficiently. An optimized document is always laid out in an identical\n * manner to its un-optimized counterpart.\n *\n * When laying a `Doc` out to a `SimpleDocStream`, every component of the input\n * document is translated directly to the simpler output format. This sometimes\n * yields undesirable chunking when many pieces have been concatenated together.\n *\n * It is therefore a good idea to run `fuse` on concatenations of lots of small\n * strings that are used many times.\n *\n * @example\n * ```ts\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as Optimize from \"@effect/printer/Optimize\"\n *\n * // The document below contains a chain of four entries in the output `DocStream`\n * const inefficient = Doc.hsep([\n * Doc.char(\"a\"),\n * Doc.char(\"b\"),\n * Doc.char(\"c\"),\n * Doc.char(\"d\")\n * ])\n *\n * // However, the above document is fully equivalent to the tightly packed\n * // document below which is only a single entry in the output `DocStream` and\n * // can be processed much more efficiently.\n * const efficient = Doc.text(\"abcd\")\n *\n * // We can optimize the `inefficient` document using `Optimize`\n * Optimize.optimize(Optimize.Deep)(inefficient)\n * ```\n *\n * @since 1.0.0\n * @category optimization\n */\n (depth: FusionDepth): <A>(self: Doc<A>) => Doc<A>\n // -----------------------------------------------------------------------------\n // Optimization\n // -----------------------------------------------------------------------------\n\n /**\n * The `optimize` function will combine text nodes so that they can be rendered\n * more efficiently. An optimized document is always laid out in an identical\n * manner to its un-optimized counterpart.\n *\n * When laying a `Doc` out to a `SimpleDocStream`, every component of the input\n * document is translated directly to the simpler output format. This sometimes\n * yields undesirable chunking when many pieces have been concatenated together.\n *\n * It is therefore a good idea to run `fuse` on concatenations of lots of small\n * strings that are used many times.\n *\n * @example\n * ```ts\n * import * as Doc from \"@effect/printer/Doc\"\n * import * as Optimize from \"@effect/printer/Optimize\"\n *\n * // The document below contains a chain of four entries in the output `DocStream`\n * const inefficient = Doc.hsep([\n * Doc.char(\"a\"),\n * Doc.char(\"b\"),\n * Doc.char(\"c\"),\n * Doc.char(\"d\")\n * ])\n *\n * // However, the above document is fully equivalent to the tightly packed\n * // document below which is only a single entry in the output `DocStream` and\n * // can be processed much more efficiently.\n * const efficient = Doc.text(\"abcd\")\n *\n * // We can optimize the `inefficient` document using `Optimize`\n * Optimize.optimize(Optimize.Deep)(inefficient)\n * ```\n *\n * @since 1.0.0\n * @category optimization\n */\n <A>(self: Doc<A>, depth: FusionDepth): Doc<A>\n} = internal.optimize\n","/**\n * @since 1.0.0\n */\n\nimport * as internal from \"./internal/color.js\"\n\n// -----------------------------------------------------------------------------\n// Models\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport type Color = Black | Red | Green | Yellow | Blue | Magenta | Cyan | White\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Black {\n readonly _tag: \"Black\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Red {\n readonly _tag: \"Red\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Green {\n readonly _tag: \"Green\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Yellow {\n readonly _tag: \"Yellow\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Blue {\n readonly _tag: \"Blue\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Magenta {\n readonly _tag: \"Magenta\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface Cyan {\n readonly _tag: \"Cyan\"\n}\n\n/**\n * @since 1.0.0\n * @category model\n */\nexport interface White {\n readonly _tag: \"White\"\n}\n\n// -----------------------------------------------------------------------------\n// Constructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const black: Color = internal.black\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const red: Color = internal.red\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const green: Color = internal.green\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const yellow: Color = internal.yellow\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const blue: Color = internal.blue\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const magenta: Color = internal.magenta\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const cyan: Color = internal.cyan\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const white: Color = internal.white\n\n// -----------------------------------------------------------------------------\n// Destructors\n// -----------------------------------------------------------------------------\n\n/**\n * @since 1.0.0\n * @category destructors\n */\nexport const toCode: (color: Color) => number = internal.toCode\n","import * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Color from \"@effect/printer-ansi/Color\"\nimport * as Arr from \"effect/Array\"\nimport { dual } from \"effect/Function\"\nimport type * as Span from \"../../HelpDoc/Span.js\"\n\n/** @internal */\nexport const text = (value: string): Span.Span => ({\n _tag: \"Text\",\n value\n})\n\n/** @internal */\nexport const empty: Span.Span = text(\"\")\n\n/** @internal */\nexport const space: Span.Span = text(\" \")\n\n/** @internal */\nexport const code = (value: Span.Span | string): Span.Span => highlight(value, Color.white)\n\n/** @internal */\nexport const error = (value: Span.Span | string): Span.Span => highlight(value, Color.red)\n\n/** @internal */\nexport const highlight = (value: Span.Span | string, color: Color.Color): Span.Span => ({\n _tag: \"Highlight\",\n value: typeof value === \"string\" ? text(value) : value,\n color\n})\n\n/** @internal */\nexport const strong = (value: Span.Span | string): Span.Span => ({\n _tag: \"Strong\",\n value: typeof value === \"string\" ? text(value) : value\n})\n\n/** @internal */\nexport const uri = (value: string): Span.Span => ({\n _tag: \"URI\",\n value\n})\n\n/** @internal */\nexport const weak = (value: Span.Span | string): Span.Span => ({\n _tag: \"Weak\",\n value: typeof value === \"string\" ? text(value) : value\n})\n\n/** @internal */\nexport const isSequence = (self: Span.Span): self is Span.Sequence => self._tag === \"Sequence\"\n\n/** @internal */\nexport const isStrong = (self: Span.Span): self is Span.Strong => self._tag === \"Strong\"\n\n/** @internal */\nexport const isText = (self: Span.Span): self is Span.Text => self._tag === \"Text\"\n\n/** @internal */\nexport const isUri = (self: Span.Span): self is Span.URI => self._tag === \"URI\"\n\n/** @internal */\nexport const isWeak = (self: Span.Span): self is Span.Weak => self._tag === \"Weak\"\n\n/** @internal */\nexport const concat = dual<\n (that: Span.Span) => (self: Span.Span) => Span.Span,\n (self: Span.Span, that: Span.Span) => Span.Span\n>(2, (self, that): Span.Span => ({\n _tag: \"Sequence\",\n left: self,\n right: that\n}))\n\nexport const getText = (self: Span.Span): string => {\n switch (self._tag) {\n case \"Text\":\n case \"URI\": {\n return self.value\n }\n case \"Highlight\":\n case \"Weak\":\n case \"Strong\": {\n return getText(self.value)\n }\n case \"Sequence\": {\n return getText(self.left) + getText(self.right)\n }\n }\n}\n\n/** @internal */\nexport const spans = (spans: Iterable<Span.Span>): Span.Span => {\n const elements = Arr.fromIterable(spans)\n if (Arr.isNonEmptyReadonlyArray(elements)) {\n return elements.slice(1).reduce(concat, elements[0])\n }\n return empty\n}\n\n/** @internal */\nexport const isEmpty = (self: Span.Span): boolean => size(self) === 0\n\n/** @internal */\nexport const size = (self: Span.Span): number => {\n switch (self._tag) {\n case \"Text\":\n case \"URI\": {\n return self.value.length\n }\n case \"Highlight\":\n case \"Strong\":\n case \"Weak\": {\n return size(self.value)\n }\n case \"Sequence\": {\n return size(self.left) + size(self.right)\n }\n }\n}\n\n/** @internal */\nexport const toAnsiDoc = (self: Span.Span): Doc.AnsiDoc => {\n switch (self._tag) {\n case \"Highlight\": {\n return Doc.annotate(toAnsiDoc(self.value), Ansi.color(self.color))\n }\n case \"Sequence\": {\n return Doc.cat(toAnsiDoc(self.left), toAnsiDoc(self.right))\n }\n case \"Strong\": {\n return Doc.annotate(toAnsiDoc(self.value), Ansi.bold)\n }\n case \"Text\": {\n return Doc.text(self.value)\n }\n case \"URI\": {\n return Doc.annotate(Doc.text(self.value), Ansi.underlined)\n }\n case \"Weak\": {\n return Doc.annotate(toAnsiDoc(self.value), Ansi.black)\n }\n }\n}\n","import * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport { dual, pipe } from \"effect/Function\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Span from \"../HelpDoc/Span.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\n\n/** @internal */\nexport const isEmpty = (helpDoc: HelpDoc.HelpDoc): helpDoc is HelpDoc.Empty => helpDoc._tag === \"Empty\"\n\n/** @internal */\nexport const isHeader = (helpDoc: HelpDoc.HelpDoc): helpDoc is HelpDoc.Header => helpDoc._tag === \"Header\"\n\n/** @internal */\nexport const isParagraph = (helpDoc: HelpDoc.HelpDoc): helpDoc is HelpDoc.Paragraph => helpDoc._tag === \"Paragraph\"\n\n/** @internal */\nexport const isDescriptionList = (helpDoc: HelpDoc.HelpDoc): helpDoc is HelpDoc.DescriptionList =>\n helpDoc._tag === \"DescriptionList\"\n\n/** @internal */\nexport const isEnumeration = (helpDoc: HelpDoc.HelpDoc): helpDoc is HelpDoc.Enumeration =>\n helpDoc._tag === \"Enumeration\"\n\n/** @internal */\nexport const isSequence = (helpDoc: HelpDoc.HelpDoc): helpDoc is HelpDoc.Sequence => helpDoc._tag === \"Sequence\"\n\n/** @internal */\nexport const empty: HelpDoc.HelpDoc = {\n _tag: \"Empty\"\n}\n\n/** @internal */\nexport const sequence = dual<\n (that: HelpDoc.HelpDoc) => (self: HelpDoc.HelpDoc) => HelpDoc.HelpDoc,\n (self: HelpDoc.HelpDoc, that: HelpDoc.HelpDoc) => HelpDoc.HelpDoc\n>(2, (self, that) => {\n if (isEmpty(self)) {\n return that\n }\n if (isEmpty(that)) {\n return self\n }\n return {\n _tag: \"Sequence\",\n left: self,\n right: that\n }\n})\n\n/** @internal */\nexport const orElse = dual<\n (that: HelpDoc.HelpDoc) => (self: HelpDoc.HelpDoc) => HelpDoc.HelpDoc,\n (self: HelpDoc.HelpDoc, that: HelpDoc.HelpDoc) => HelpDoc.HelpDoc\n>(2, (self, that) => isEmpty(self) ? that : self)\n\n/** @internal */\nexport const blocks = (helpDocs: Iterable<HelpDoc.HelpDoc>): HelpDoc.HelpDoc => {\n const elements = Arr.fromIterable(helpDocs)\n if (Arr.isNonEmptyReadonlyArray(elements)) {\n return elements.slice(1).reduce(sequence, elements[0])\n }\n return empty\n}\n\n/** @internal */\nexport const getSpan = (self: HelpDoc.HelpDoc): Span.Span =>\n isHeader(self) || isParagraph(self) ? self.value : InternalSpan.empty\n\n/** @internal */\nexport const descriptionList = (\n definitions: Arr.NonEmptyReadonlyArray<[Span.Span, HelpDoc.HelpDoc]>\n): HelpDoc.HelpDoc => ({\n _tag: \"DescriptionList\",\n definitions\n})\n\n/** @internal */\nexport const enumeration = (\n elements: Arr.NonEmptyReadonlyArray<HelpDoc.HelpDoc>\n): HelpDoc.HelpDoc => ({\n _tag: \"Enumeration\",\n elements\n})\n\n/** @internal */\nexport const h1 = (value: string | Span.Span): HelpDoc.HelpDoc => ({\n _tag: \"Header\",\n value: typeof value === \"string\" ? InternalSpan.text(value) : value,\n level: 1\n})\n\n/** @internal */\nexport const h2 = (value: string | Span.Span): HelpDoc.HelpDoc => ({\n _tag: \"Header\",\n value: typeof value === \"string\" ? InternalSpan.text(value) : value,\n level: 2\n})\n\n/** @internal */\nexport const h3 = (value: string | Span.Span): HelpDoc.HelpDoc => ({\n _tag: \"Header\",\n value: typeof value === \"string\" ? InternalSpan.text(value) : value,\n level: 3\n})\n\n/** @internal */\nexport const p = (value: string | Span.Span): HelpDoc.HelpDoc => ({\n _tag: \"Paragraph\",\n value: typeof value === \"string\" ? InternalSpan.text(value) : value\n})\n\n/** @internal */\nexport const mapDescriptionList = dual<\n (\n f: (span: Span.Span, helpDoc: HelpDoc.HelpDoc) => [Span.Span, HelpDoc.HelpDoc]\n ) => (self: HelpDoc.HelpDoc) => HelpDoc.HelpDoc,\n (\n self: HelpDoc.HelpDoc,\n f: (span: Span.Span, helpDoc: HelpDoc.HelpDoc) => [Span.Span, HelpDoc.HelpDoc]\n ) => HelpDoc.HelpDoc\n>(2, (self, f) =>\n isDescriptionList(self)\n ? descriptionList(Arr.map(self.definitions, ([span, helpDoc]) => f(span, helpDoc)))\n : self)\n\n/** @internal */\nexport const toAnsiDoc = (self: HelpDoc.HelpDoc): Doc.AnsiDoc =>\n Optimize.optimize(toAnsiDocInternal(self), Optimize.Deep)\n\n/** @internal */\nexport const toAnsiText = (self: HelpDoc.HelpDoc): string => Doc.render(toAnsiDoc(self), { style: \"pretty\" })\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst toAnsiDocInternal = (self: HelpDoc.HelpDoc): Doc.AnsiDoc => {\n switch (self._tag) {\n case \"Empty\": {\n return Doc.empty\n }\n case \"Header\": {\n return pipe(\n Doc.annotate(InternalSpan.toAnsiDoc(self.value), Ansi.bold),\n Doc.cat(Doc.hardLine)\n )\n }\n case \"Paragraph\": {\n return pipe(\n InternalSpan.toAnsiDoc(self.value),\n Doc.cat(Doc.hardLine)\n )\n }\n case \"DescriptionList\": {\n const definitions = self.definitions.map(([span, doc]) =>\n Doc.cats([\n Doc.annotate(InternalSpan.toAnsiDoc(span), Ansi.bold),\n Doc.empty,\n Doc.indent(toAnsiDocInternal(doc), 2)\n ])\n )\n return Doc.vsep(definitions)\n }\n case \"Enumeration\": {\n const elements = self.elements.map((doc) => Doc.cat(Doc.text(\"- \"), toAnsiDocInternal(doc)))\n return Doc.indent(Doc.vsep(elements), 2)\n }\n case \"Sequence\": {\n return Doc.vsep([\n toAnsiDocInternal(self.left),\n toAnsiDocInternal(self.right)\n ])\n }\n }\n}\n","import * as Context from \"effect/Context\"\nimport { dual } from \"effect/Function\"\nimport * as Layer from \"effect/Layer\"\nimport type * as CliConfig from \"../CliConfig.js\"\n\n/** @internal */\nexport const make = (params?: Partial<CliConfig.CliConfig>): CliConfig.CliConfig => ({\n ...defaultConfig,\n ...params\n})\n\n/** @internal */\nexport const Tag = Context.GenericTag<CliConfig.CliConfig>(\"@effect/cli/CliConfig\")\n\n/** @internal */\nexport const defaultConfig: CliConfig.CliConfig = {\n isCaseSensitive: false,\n autoCorrectLimit: 2,\n finalCheckBuiltIn: false,\n showAllNames: true,\n showBuiltIns: true,\n showTypes: true\n}\n\n/** @internal */\nexport const defaultLayer: Layer.Layer<CliConfig.CliConfig> = Layer.succeed(\n Tag,\n defaultConfig\n)\n\n/** @internal */\nexport const layer = (\n config?: Partial<CliConfig.CliConfig>\n): Layer.Layer<CliConfig.CliConfig> => Layer.succeed(Tag, make(config))\n\n/** @internal */\nexport const normalizeCase = dual<\n (text: string) => (self: CliConfig.CliConfig) => string,\n (self: CliConfig.CliConfig, text: string) => string\n>(2, (self, text) => self.isCaseSensitive ? text : text.toLowerCase())\n","import * as Data from \"effect/Data\"\nimport type { Prompt } from \"../../Prompt.js\"\n\n/** @internal */\nexport const Action = Data.taggedEnum<Prompt.ActionDefinition>()\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport type * as Cause from \"effect/Cause\"\nimport * as Effect from \"effect/Effect\"\nimport * as Effectable from \"effect/Effectable\"\nimport { dual } from \"effect/Function\"\nimport type * as Mailbox from \"effect/Mailbox\"\nimport * as Pipeable from \"effect/Pipeable\"\nimport type * as Prompt from \"../Prompt.js\"\nimport { Action } from \"./prompt/action.js\"\n\n/** @internal */\nconst PromptSymbolKey = \"@effect/cli/Prompt\"\n\n/** @internal */\nexport const PromptTypeId: Prompt.PromptTypeId = Symbol.for(\n PromptSymbolKey\n) as Prompt.PromptTypeId\n\n/** @internal */\nconst proto = {\n ...Effectable.CommitPrototype,\n [PromptTypeId]: {\n _Output: (_: never) => _\n },\n commit(): Effect.Effect<Terminal.Terminal, Terminal.QuitException, unknown> {\n return run(this as any)\n },\n pipe() {\n return Pipeable.pipeArguments(this, arguments)\n }\n}\n\n/** @internal */\ntype Op<Tag extends string, Body = {}> = Prompt.Prompt<never> & Body & {\n readonly _tag: Tag\n}\n\n/** @internal */\nexport type Primitive = Loop | OnSuccess | Succeed\n\n/** @internal */\nexport interface Loop extends\n Op<\"Loop\", {\n readonly initialState: unknown | Effect.Effect<unknown, never, Prompt.Prompt.Environment>\n readonly render: Prompt.Prompt.Handlers<unknown, unknown>[\"render\"]\n readonly process: Prompt.Prompt.Handlers<unknown, unknown>[\"process\"]\n readonly clear: Prompt.Prompt.Handlers<unknown, unknown>[\"clear\"]\n }>\n{}\n\n/** @internal */\nexport interface OnSuccess extends\n Op<\"OnSuccess\", {\n readonly prompt: Primitive\n readonly onSuccess: (value: unknown) => Prompt.Prompt<unknown>\n }>\n{}\n\n/** @internal */\nexport interface Succeed extends\n Op<\"Succeed\", {\n readonly value: unknown\n }>\n{}\n\n/** @internal */\nexport const isPrompt = (u: unknown): u is Prompt.Prompt<unknown> =>\n typeof u === \"object\" && u != null && PromptTypeId in u\n\nconst allTupled = <const T extends ArrayLike<Prompt.Prompt<any>>>(arg: T): Prompt.Prompt<\n {\n [K in keyof T]: [T[K]] extends [Prompt.Prompt<infer A>] ? A : never\n }\n> => {\n if (arg.length === 0) {\n return succeed([]) as any\n }\n if (arg.length === 1) {\n return map(arg[0], (x) => [x]) as any\n }\n let result = map(arg[0], (x) => [x])\n for (let i = 1; i < arg.length; i++) {\n const curr = arg[i]\n result = flatMap(result, (tuple) => map(curr, (a) => [...tuple, a]))\n }\n return result as any\n}\n\n/** @internal */\nexport const all: <\n const Arg extends Iterable<Prompt.Prompt<any>> | Record<string, Prompt.Prompt<any>>\n>(arg: Arg) => Prompt.All.Return<Arg> = function() {\n if (arguments.length === 1) {\n if (isPrompt(arguments[0])) {\n return map(arguments[0], (x) => [x]) as any\n } else if (Array.isArray(arguments[0])) {\n return allTupled(arguments[0]) as any\n } else {\n const entries = Object.entries(arguments[0] as Readonly<{ [K: string]: Prompt.Prompt<any> }>)\n let result = map(entries[0][1], (value) => ({ [entries[0][0]]: value }))\n if (entries.length === 1) {\n return result as any\n }\n const rest = entries.slice(1)\n for (const [key, prompt] of rest) {\n result = result.pipe(\n flatMap((record) =>\n prompt.pipe(map((value) => ({\n ...record,\n [key]: value\n })))\n )\n )\n }\n return result as any\n }\n }\n return allTupled(arguments[0]) as any\n}\n\n/** @internal */\nexport const custom = <State, Output>(\n initialState: State | Effect.Effect<State, never, Prompt.Prompt.Environment>,\n handlers: Prompt.Prompt.Handlers<State, Output>\n): Prompt.Prompt<Output> => {\n const op = Object.create(proto)\n op._tag = \"Loop\"\n op.initialState = initialState\n op.render = handlers.render\n op.process = handlers.process\n op.clear = handlers.clear\n return op\n}\n\n/** @internal */\nexport const map = dual<\n <Output, Output2>(\n f: (output: Output) => Output2\n ) => (\n self: Prompt.Prompt<Output>\n ) => Prompt.Prompt<Output2>,\n <Output, Output2>(\n self: Prompt.Prompt<Output>,\n f: (output: Output) => Output2\n ) => Prompt.Prompt<Output2>\n>(2, (self, f) => flatMap(self, (a) => succeed(f(a))))\n\n/** @internal */\nexport const flatMap = dual<\n <Output, Output2>(\n f: (output: Output) => Prompt.Prompt<Output2>\n ) => (\n self: Prompt.Prompt<Output>\n ) => Prompt.Prompt<Output2>,\n <Output, Output2>(\n self: Prompt.Prompt<Output>,\n f: (output: Output) => Prompt.Prompt<Output2>\n ) => Prompt.Prompt<Output2>\n>(2, (self, f) => {\n const op = Object.create(proto)\n op._tag = \"OnSuccess\"\n op.prompt = self\n op.onSuccess = f\n return op\n})\n\n/** @internal */\nexport const run: <Output>(\n self: Prompt.Prompt<Output>\n) => Effect.Effect<\n Output,\n Terminal.QuitException,\n Prompt.Prompt.Environment\n> = Effect.fnUntraced(\n function*<Output>(self: Prompt.Prompt<Output>) {\n const terminal = yield* Terminal.Terminal\n const input = yield* terminal.readInput\n return yield* runWithInput(self, terminal, input)\n },\n Effect.mapError(() => new Terminal.QuitException()),\n Effect.scoped\n)\n\nconst runWithInput = <Output>(\n prompt: Prompt.Prompt<Output>,\n terminal: Terminal.Terminal,\n input: Mailbox.ReadonlyMailbox<Terminal.UserInput>\n): Effect.Effect<Output, Cause.NoSuchElementException, Prompt.Prompt.Environment> =>\n Effect.suspend(() => {\n const op = prompt as Primitive\n switch (op._tag) {\n case \"Loop\": {\n return runLoop(op, terminal, input)\n }\n case \"OnSuccess\": {\n return Effect.flatMap(\n runWithInput(op.prompt, terminal, input),\n (a) => runWithInput(op.onSuccess(a), terminal, input)\n ) as any\n }\n case \"Succeed\": {\n return Effect.succeed(op.value)\n }\n }\n })\n\nconst runLoop = Effect.fnUntraced(\n function*(\n loop: Loop,\n terminal: Terminal.Terminal,\n input: Mailbox.ReadonlyMailbox<Terminal.UserInput>\n ) {\n let state = Effect.isEffect(loop.initialState) ? yield* loop.initialState : loop.initialState\n let action: Prompt.Prompt.Action<unknown, unknown> = Action.NextFrame({ state })\n while (true) {\n const msg = yield* loop.render(state, action)\n yield* Effect.orDie(terminal.display(msg))\n const event = yield* input.take\n action = yield* loop.process(event, state)\n switch (action._tag) {\n case \"Beep\":\n continue\n case \"NextFrame\": {\n yield* Effect.orDie(terminal.display(yield* loop.clear(state, action)))\n state = action.state\n continue\n }\n case \"Submit\": {\n yield* Effect.orDie(terminal.display(yield* loop.clear(state, action)))\n const msg = yield* loop.render(state, action)\n yield* Effect.orDie(terminal.display(msg))\n return action.value\n }\n }\n }\n },\n (effect, _, terminal) =>\n Effect.ensuring(\n effect,\n Effect.orDie(\n terminal.display(Doc.render(Doc.cursorShow, { style: \"pretty\" }))\n )\n )\n)\n\n/** @internal */\nexport const succeed = <A>(value: A): Prompt.Prompt<A> => {\n const op = Object.create(proto)\n op._tag = \"Succeed\"\n op.value = value\n return op\n}\n","import * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport { pipe } from \"effect/Function\"\n\nconst defaultFigures = {\n arrowUp: Doc.text(\"↑\"),\n arrowDown: Doc.text(\"↓\"),\n arrowLeft: Doc.text(\"←\"),\n arrowRight: Doc.text(\"→\"),\n radioOn: Doc.text(\"◉\"),\n radioOff: Doc.text(\"◯\"),\n checkboxOn: Doc.text(\"☒\"),\n checkboxOff: Doc.text(\"☐\"),\n tick: Doc.text(\"✔\"),\n cross: Doc.text(\"✖\"),\n ellipsis: Doc.text(\"…\"),\n pointerSmall: Doc.text(\"›\"),\n line: Doc.text(\"─\"),\n pointer: Doc.text(\"❯\")\n}\n\nconst windowsFigures = {\n arrowUp: defaultFigures.arrowUp,\n arrowDown: defaultFigures.arrowDown,\n arrowLeft: defaultFigures.arrowLeft,\n arrowRight: defaultFigures.arrowRight,\n radioOn: Doc.text(\"(*)\"),\n radioOff: Doc.text(\"( )\"),\n checkboxOn: Doc.text(\"[*]\"),\n checkboxOff: Doc.text(\"[ ]\"),\n tick: Doc.text(\"√\"),\n cross: Doc.text(\"×\"),\n ellipsis: Doc.text(\"...\"),\n pointerSmall: Doc.text(\"»\"),\n line: Doc.text(\"─\"),\n pointer: Doc.text(\">\")\n}\n\n/** @internal */\nexport const figures = Effect.map(\n Effect.sync(() => process.platform === \"win32\"),\n (isWindows) => isWindows ? windowsFigures : defaultFigures\n)\n\n/**\n * Clears all lines taken up by the specified `text`.\n *\n * @internal\n */\nexport function eraseText(text: string, columns: number): Doc.AnsiDoc {\n if (columns === 0) {\n return Doc.cat(Doc.eraseLine, Doc.cursorTo(0))\n }\n let rows = 0\n const lines = text.split(/\\r?\\n/)\n for (const line of lines) {\n rows += 1 + Math.floor(Math.max(line.length - 1, 0) / columns)\n }\n return Doc.eraseLines(rows)\n}\n\n/** @internal */\nexport function lines(prompt: string, columns: number): number {\n const lines = prompt.split(/\\r?\\n/)\n return columns === 0\n ? lines.length\n : pipe(\n Arr.map(lines, (line) => Math.ceil(line.length / columns)),\n Arr.reduce(0, (left, right) => left + right)\n )\n}\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport * as Match from \"effect/Match\"\nimport * as Option from \"effect/Option\"\nimport type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport { Action } from \"./action.js\"\nimport * as InternalAnsiUtils from \"./ansi-utils.js\"\n\ninterface DateOptions extends Required<Prompt.Prompt.DateOptions> {}\n\ninterface State {\n readonly typed: string\n readonly cursor: number\n readonly value: globalThis.Date\n readonly dateParts: ReadonlyArray<DatePart>\n readonly error: Option.Option<string>\n}\n\nconst renderBeep = Doc.render(Doc.beep, { style: \"pretty\" })\n\nfunction handleClear(options: DateOptions) {\n return (state: State, _: Prompt.Prompt.Action<State, globalThis.Date>) => {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const resetCurrentLine = Doc.cat(Doc.eraseLine, Doc.cursorLeft)\n const clearError = Option.match(state.error, {\n onNone: () => Doc.empty,\n onSome: (error) =>\n Doc.cursorDown(InternalAnsiUtils.lines(error, columns)).pipe(\n Doc.cat(InternalAnsiUtils.eraseText(`\\n${error}`, columns))\n )\n })\n const clearOutput = InternalAnsiUtils.eraseText(options.message, columns)\n return clearError.pipe(\n Doc.cat(clearOutput),\n Doc.cat(resetCurrentLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n }\n}\n\nconst NEWLINE_REGEX = /\\r?\\n/\n\nfunction renderError(state: State, pointer: Doc.AnsiDoc) {\n return Option.match(state.error, {\n onNone: () => Doc.empty,\n onSome: (error) => {\n const errorLines = error.split(NEWLINE_REGEX)\n if (Arr.isNonEmptyReadonlyArray(errorLines)) {\n const annotateLine = (line: string): Doc.AnsiDoc =>\n Doc.annotate(Doc.text(line), Ansi.combine(Ansi.italicized, Ansi.red))\n const prefix = Doc.cat(Doc.annotate(pointer, Ansi.red), Doc.space)\n const lines = Arr.map(errorLines, (str) => annotateLine(str))\n return Doc.cursorSavePosition.pipe(\n Doc.cat(Doc.hardLine),\n Doc.cat(prefix),\n Doc.cat(Doc.align(Doc.vsep(lines))),\n Doc.cat(Doc.cursorRestorePosition)\n )\n }\n return Doc.empty\n }\n })\n}\n\nfunction renderParts(state: State, submitted: boolean = false) {\n return Arr.reduce(\n state.dateParts,\n Doc.empty as Doc.AnsiDoc,\n (doc, part, currentIndex) => {\n const partDoc = Doc.text(part.toString())\n if (currentIndex === state.cursor && !submitted) {\n const annotation = Ansi.combine(Ansi.underlined, Ansi.cyanBright)\n return Doc.cat(doc, Doc.annotate(partDoc, annotation))\n }\n return Doc.cat(doc, partDoc)\n }\n )\n}\n\nfunction renderOutput(\n leadingSymbol: Doc.AnsiDoc,\n trailingSymbol: Doc.AnsiDoc,\n parts: Doc.AnsiDoc,\n options: DateOptions\n) {\n const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold)\n const prefix = Doc.cat(leadingSymbol, Doc.space)\n return Arr.match(options.message.split(/\\r?\\n/), {\n onEmpty: () => Doc.hsep([prefix, trailingSymbol, parts]),\n onNonEmpty: (promptLines) => {\n const lines = Arr.map(promptLines, (line) => annotateLine(line))\n return prefix.pipe(\n Doc.cat(Doc.nest(Doc.vsep(lines), 2)),\n Doc.cat(Doc.space),\n Doc.cat(trailingSymbol),\n Doc.cat(Doc.space),\n Doc.cat(parts)\n )\n }\n })\n}\n\nfunction renderNextFrame(state: State, options: DateOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(Doc.text(\"?\"), Ansi.cyanBright)\n const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright)\n const parts = renderParts(state)\n const promptMsg = renderOutput(leadingSymbol, trailingSymbol, parts, options)\n const errorMsg = renderError(state, figures.pointerSmall)\n return Doc.cursorHide.pipe(\n Doc.cat(promptMsg),\n Doc.cat(errorMsg),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderSubmission(state: State, options: DateOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const parts = renderParts(state, true)\n const promptMsg = renderOutput(leadingSymbol, trailingSymbol, parts, options)\n return promptMsg.pipe(\n Doc.cat(Doc.hardLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction processUp(state: State) {\n state.dateParts[state.cursor].increment()\n return Action.NextFrame({\n state: { ...state, typed: \"\" }\n })\n}\n\nfunction processDown(state: State) {\n state.dateParts[state.cursor].decrement()\n return Action.NextFrame({\n state: { ...state, typed: \"\" }\n })\n}\n\nfunction processCursorLeft(state: State) {\n const previousPart = state.dateParts[state.cursor].previousPart()\n return Option.match(previousPart, {\n onNone: () => Action.Beep(),\n onSome: (previous) =>\n Action.NextFrame({\n state: {\n ...state,\n typed: \"\",\n cursor: state.dateParts.indexOf(previous)\n }\n })\n })\n}\n\nfunction processCursorRight(state: State) {\n const nextPart = state.dateParts[state.cursor].nextPart()\n return Option.match(nextPart, {\n onNone: () => Action.Beep(),\n onSome: (next) =>\n Action.NextFrame({\n state: {\n ...state,\n typed: \"\",\n cursor: state.dateParts.indexOf(next)\n }\n })\n })\n}\n\nfunction processNext(state: State) {\n const nextPart = state.dateParts[state.cursor].nextPart()\n const cursor = Option.match(nextPart, {\n onNone: () => state.dateParts.findIndex((part) => !part.isToken()),\n onSome: (next) => state.dateParts.indexOf(next)\n })\n return Action.NextFrame({\n state: { ...state, cursor }\n })\n}\n\nfunction defaultProcessor(value: string, state: State) {\n if (/\\d/.test(value)) {\n const typed = state.typed + value\n state.dateParts[state.cursor].setValue(typed)\n return Action.NextFrame({\n state: { ...state, typed }\n })\n }\n return Action.Beep()\n}\n\nconst defaultLocales: Prompt.Prompt.DateOptions[\"locales\"] = {\n months: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ],\n monthsShort: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\n weekdays: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n weekdaysShort: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"]\n}\n\nfunction handleRender(options: DateOptions) {\n return (state: State, action: Prompt.Prompt.Action<State, globalThis.Date>) => {\n return Action.$match(action, {\n Beep: () => Effect.succeed(renderBeep),\n NextFrame: ({ state }) => renderNextFrame(state, options),\n Submit: () => renderSubmission(state, options)\n })\n }\n}\n\nfunction handleProcess(options: DateOptions) {\n return (input: Terminal.UserInput, state: State) => {\n switch (input.key.name) {\n case \"left\": {\n return Effect.succeed(processCursorLeft(state))\n }\n case \"right\": {\n return Effect.succeed(processCursorRight(state))\n }\n case \"k\":\n case \"up\": {\n return Effect.succeed(processUp(state))\n }\n case \"j\":\n case \"down\": {\n return Effect.succeed(processDown(state))\n }\n case \"tab\": {\n return Effect.succeed(processNext(state))\n }\n case \"enter\":\n case \"return\": {\n return Effect.match(options.validate(state.value), {\n onFailure: (error) =>\n Action.NextFrame({\n state: {\n ...state,\n error: Option.some(error)\n }\n }),\n onSuccess: (value) => Action.Submit({ value })\n })\n }\n default: {\n const value = Option.getOrElse(input.input, () => \"\")\n return Effect.succeed(defaultProcessor(value, state))\n }\n }\n }\n}\n\n/** @internal */\nexport const date = (options: Prompt.Prompt.DateOptions): Prompt.Prompt<globalThis.Date> => {\n const opts: Required<Prompt.Prompt.DateOptions> = {\n initial: new Date(),\n dateMask: \"YYYY-MM-DD HH:mm:ss\",\n validate: Effect.succeed,\n ...options,\n locales: {\n ...defaultLocales,\n ...options.locales\n }\n }\n const dateParts = makeDateParts(opts.dateMask, opts.initial, opts.locales)\n const initialCursorPosition = dateParts.findIndex((part) => !part.isToken())\n const initialState: State = {\n dateParts,\n typed: \"\",\n cursor: initialCursorPosition,\n value: opts.initial,\n error: Option.none()\n }\n return InternalPrompt.custom(initialState, {\n render: handleRender(opts),\n process: handleProcess(opts),\n clear: handleClear(opts)\n })\n}\n\nconst DATE_PART_REGEX =\n /\\\\(.)|\"((?:\\\\[\"\\\\]|[^\"])+)\"|(D[Do]?|d{3,4}|d)|(M{1,4})|(YY(?:YY)?)|([aA])|([Hh]{1,2})|(m{1,2})|(s{1,2})|(S{1,4})|./g\n\nconst regexGroups: Record<number, (params: DatePartParams) => DatePart> = {\n 1: ({ token, ...opts }) => new Token({ token: token.replace(/\\\\(.)/g, \"$1\"), ...opts }),\n 2: (opts) => new Day(opts),\n 3: (opts) => new Month(opts),\n 4: (opts) => new Year(opts),\n 5: (opts) => new Meridiem(opts),\n 6: (opts) => new Hours(opts),\n 7: (opts) => new Minutes(opts),\n 8: (opts) => new Seconds(opts),\n 9: (opts) => new Milliseconds(opts)\n}\n\nconst makeDateParts = (\n dateMask: string,\n date: globalThis.Date,\n locales: Prompt.Prompt.DateOptions[\"locales\"]\n) => {\n const parts: Array<DatePart> = []\n let result: RegExpExecArray | null = null\n // eslint-disable-next-line no-cond-assign\n while (result = DATE_PART_REGEX.exec(dateMask)) {\n const match = result.shift()\n const index = result.findIndex((group) => group !== undefined)\n if (index in regexGroups) {\n const token = (result[index] || match)!\n parts.push(regexGroups[index]({ token, date, parts, locales }))\n } else {\n parts.push(new Token({ token: (result[index] || match)!, date, parts, locales }))\n }\n }\n const orderedParts = parts.reduce((array, element) => {\n const lastElement = array[array.length - 1]\n if (element.isToken() && lastElement !== undefined && lastElement.isToken()) {\n lastElement.setValue(element.token)\n } else {\n array.push(element)\n }\n return array\n }, Arr.empty<DatePart>())\n parts.splice(0, parts.length, ...orderedParts)\n return parts\n}\n\ninterface DatePartParams {\n readonly token: string\n readonly locales: Prompt.Prompt.DateOptions[\"locales\"]\n readonly date?: globalThis.Date\n readonly parts?: ReadonlyArray<DatePart>\n}\n\nabstract class DatePart {\n token: string\n readonly date: globalThis.Date\n readonly parts: ReadonlyArray<DatePart>\n readonly locales: Prompt.Prompt.DateOptions[\"locales\"]\n\n constructor(params: DatePartParams) {\n this.token = params.token\n this.locales = params.locales\n this.date = params.date || new Date()\n this.parts = params.parts || [this]\n }\n\n /**\n * Increments this date part.\n */\n abstract increment(): void\n\n /**\n * Decrements this date part.\n */\n abstract decrement(): void\n\n /**\n * Sets the current value of this date part to the provided value.\n */\n abstract setValue(value: string): void\n\n /**\n * Returns `true` if this `DatePart` is a `Token`, `false` otherwise.\n */\n isToken(): this is Token {\n return false\n }\n\n /**\n * Retrieves the next date part in the list of parts.\n */\n nextPart(): Option.Option<DatePart> {\n return Arr.findFirstIndex(this.parts, (part) => part === this).pipe(\n Option.flatMap((currentPartIndex) =>\n Arr.findFirst(this.parts.slice(currentPartIndex + 1), (part) => !part.isToken())\n )\n )\n }\n\n /**\n * Retrieves the previous date part in the list of parts.\n */\n previousPart(): Option.Option<DatePart> {\n return Arr.findFirstIndex(this.parts, (part) => part === this).pipe(\n Option.flatMap((currentPartIndex) =>\n Arr.findLast(this.parts.slice(0, currentPartIndex), (part) => !part.isToken())\n )\n )\n }\n\n toString() {\n return String(this.date)\n }\n}\n\nclass Token extends DatePart {\n increment(): void {}\n\n decrement(): void {}\n\n setValue(value: string): void {\n this.token = this.token + value\n }\n\n isToken(): this is Token {\n return true\n }\n\n toString() {\n return this.token\n }\n}\n\nclass Milliseconds extends DatePart {\n increment(): void {\n this.date.setMilliseconds(this.date.getMilliseconds() + 1)\n }\n\n decrement(): void {\n this.date.setMilliseconds(this.date.getMilliseconds() - 1)\n }\n\n setValue(value: string): void {\n this.date.setMilliseconds(Number.parseInt(value.slice(-this.token.length)))\n }\n\n toString() {\n const millis = `${this.date.getMilliseconds()}`\n return millis.padStart(4, \"0\").substring(0, this.token.length)\n }\n}\n\nclass Seconds extends DatePart {\n increment(): void {\n this.date.setSeconds(this.date.getSeconds() + 1)\n }\n\n decrement(): void {\n this.date.setSeconds(this.date.getSeconds() - 1)\n }\n\n setValue(value: string): void {\n this.date.setSeconds(Number.parseInt(value.slice(-2)))\n }\n\n toString() {\n const seconds = `${this.date.getSeconds()}`\n return this.token.length > 1\n ? seconds.padStart(2, \"0\")\n : seconds\n }\n}\n\nclass Minutes extends DatePart {\n increment(): void {\n this.date.setMinutes(this.date.getMinutes() + 1)\n }\n\n decrement(): void {\n this.date.setMinutes(this.date.getMinutes() - 1)\n }\n\n setValue(value: string): void {\n this.date.setMinutes(Number.parseInt(value.slice(-2)))\n }\n\n toString() {\n const minutes = `${this.date.getMinutes()}`\n return this.token.length > 1\n ? minutes.padStart(2, \"0\") :\n minutes\n }\n}\n\nclass Hours extends DatePart {\n increment(): void {\n this.date.setHours(this.date.getHours() + 1)\n }\n\n decrement(): void {\n this.date.setHours(this.date.getHours() - 1)\n }\n\n setValue(value: string): void {\n this.date.setHours(Number.parseInt(value.slice(-2)))\n }\n\n toString() {\n const hours = /h/.test(this.token)\n ? this.date.getHours() % 12 || 12\n : this.date.getHours()\n return this.token.length > 1\n ? `${hours}`.padStart(2, \"0\")\n : `${hours}`\n }\n}\n\nclass Day extends DatePart {\n increment(): void {\n this.date.setDate(this.date.getDate() + 1)\n }\n\n decrement(): void {\n this.date.setDate(this.date.getDate() - 1)\n }\n\n setValue(value: string): void {\n this.date.setDate(Number.parseInt(value.slice(-2)))\n }\n\n toString() {\n const date = this.date.getDate()\n const day = this.date.getDay()\n return Match.value(this.token).pipe(\n Match.when(\"DD\", () => `${date}`.padStart(2, \"0\")),\n Match.when(\"Do\", () => `${date}${this.ordinalIndicator(date)}`),\n Match.when(\"d\", () => `${day + 1}`),\n Match.when(\"ddd\", () => this.locales!.weekdaysShort[day]!),\n Match.when(\"dddd\", () => this.locales!.weekdays[day]!),\n Match.orElse(() => `${date}`)\n )\n }\n\n private ordinalIndicator(day: number): string {\n return Match.value(day % 10).pipe(\n Match.when(1, () => \"st\"),\n Match.when(2, () => \"nd\"),\n Match.when(3, () => \"rd\"),\n Match.orElse(() => \"th\")\n )\n }\n}\n\nclass Month extends DatePart {\n increment(): void {\n this.date.setMonth(this.date.getMonth() + 1)\n }\n\n decrement(): void {\n this.date.setMonth(this.date.getMonth() - 1)\n }\n\n setValue(value: string): void {\n const month = Number.parseInt(value.slice(-2)) - 1\n this.date.setMonth(month < 0 ? 0 : month)\n }\n\n toString() {\n const month = this.date.getMonth()\n return Match.value(this.token.length).pipe(\n Match.when(2, () => `${month + 1}`.padStart(2, \"0\")),\n Match.when(3, () => this.locales!.monthsShort[month]!),\n Match.when(4, () => this.locales!.months[month]!),\n Match.orElse(() => `${month + 1}`)\n )\n }\n}\n\nclass Year extends DatePart {\n increment(): void {\n this.date.setFullYear(this.date.getFullYear() + 1)\n }\n\n decrement(): void {\n this.date.setFullYear(this.date.getFullYear() - 1)\n }\n\n setValue(value: string): void {\n this.date.setFullYear(Number.parseInt(value.slice(-4)))\n }\n\n toString() {\n const year = `${this.date.getFullYear()}`.padStart(4, \"0\")\n return this.token.length === 2\n ? year.substring(-2)\n : year\n }\n}\n\nclass Meridiem extends DatePart {\n increment(): void {\n this.date.setHours((this.date.getHours() + 12) % 24)\n }\n\n decrement(): void {\n this.increment()\n }\n\n setValue(_value: string): void {}\n\n toString() {\n const meridiem = this.date.getHours() > 12 ? \"pm\" : \"am\"\n return /A/.test(this.token)\n ? meridiem.toUpperCase()\n : meridiem\n }\n}\n","/** @internal */\nexport const entriesToDisplay = (cursor: number, total: number, maxVisible?: number) => {\n const max = maxVisible === undefined ? total : maxVisible\n let startIndex = Math.min(total - max, cursor - Math.floor(max / 2))\n if (startIndex < 0) {\n startIndex = 0\n }\n const endIndex = Math.min(startIndex + max, total)\n return { startIndex, endIndex }\n}\n","import * as FileSystem from \"@effect/platform/FileSystem\"\nimport * as Path from \"@effect/platform/Path\"\nimport * as Terminal from \"@effect/platform/Terminal\"\nimport * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport * as Data from \"effect/Data\"\nimport * as Effect from \"effect/Effect\"\nimport { identity } from \"effect/Function\"\nimport * as Option from \"effect/Option\"\nimport type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport { Action } from \"./action.js\"\nimport * as InternalAnsiUtils from \"./ansi-utils.js\"\nimport { entriesToDisplay } from \"./utils.js\"\n\ninterface FileOptions extends Required<Omit<Prompt.Prompt.FileOptions, \"startingPath\">> {\n readonly startingPath: Option.Option<string>\n}\n\ninterface State {\n readonly cursor: number\n readonly files: ReadonlyArray<string>\n readonly path: Option.Option<string>\n readonly confirm: Confirm\n}\n\nconst CONFIRM_MESSAGE = \"The selected directory contains files. Would you like to traverse the selected directory?\"\ntype Confirm = Data.TaggedEnum<{\n readonly Show: {}\n readonly Hide: {}\n}>\nconst Confirm = Data.taggedEnum<Confirm>()\n\nconst showConfirmation = Confirm.$is(\"Show\")\n\nconst renderBeep = Doc.render(Doc.beep, { style: \"pretty\" })\n\nfunction resolveCurrentPath(\n path: Option.Option<string>,\n options: FileOptions\n): Effect.Effect<string, never, FileSystem.FileSystem> {\n return Option.match(path, {\n onNone: () =>\n Option.match(options.startingPath, {\n onNone: () => Effect.sync(() => process.cwd()),\n onSome: (path) =>\n Effect.flatMap(FileSystem.FileSystem, (fs) =>\n // Ensure the user provided starting path exists\n Effect.orDie(fs.exists(path)).pipe(\n Effect.filterOrDieMessage(\n identity,\n `The provided starting path '${path}' does not exist`\n ),\n Effect.as(path)\n ))\n }),\n onSome: (path) => Effect.succeed(path)\n })\n}\n\nfunction getFileList(directory: string, options: FileOptions) {\n return Effect.gen(function*() {\n const fs = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const files = yield* Effect.orDie(fs.readDirectory(directory)).pipe(\n // Always prepend the `\"..\"` option to the file list but allow it\n // to be filtered out if the user so desires\n Effect.map((files) => [\"..\", ...files])\n )\n return yield* Effect.filter(files, (file) => {\n const result = options.filter(file)\n const userDefinedFilter = Effect.isEffect(result)\n ? result\n : Effect.succeed(result)\n const directoryFilter = options.type === \"directory\"\n ? Effect.map(\n Effect.orDie(fs.stat(path.join(directory, file))),\n (info) => info.type === \"Directory\"\n )\n : Effect.succeed(true)\n return Effect.zipWith(userDefinedFilter, directoryFilter, (a, b) => a && b)\n }, { concurrency: files.length })\n })\n}\n\nfunction handleClear(options: FileOptions) {\n return (state: State, _: Prompt.Prompt.Action<State, string>) => {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const currentPath = yield* resolveCurrentPath(state.path, options)\n const text = \"\\n\".repeat(Math.min(state.files.length, options.maxPerPage))\n const clearPath = InternalAnsiUtils.eraseText(currentPath, columns)\n const message = showConfirmation(state.confirm) ? CONFIRM_MESSAGE : options.message\n const clearPrompt = InternalAnsiUtils.eraseText(`\\n${message}`, columns)\n const clearOptions = InternalAnsiUtils.eraseText(text, columns)\n return clearOptions.pipe(\n Doc.cat(clearPath),\n Doc.cat(clearPrompt),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n }\n}\n\nconst NEWLINE_REGEX = /\\r?\\n/\n\nfunction renderPrompt(\n confirm: Doc.AnsiDoc,\n message: string,\n leadingSymbol: Doc.AnsiDoc,\n trailingSymbol: Doc.AnsiDoc\n) {\n const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold)\n const prefix = Doc.cat(leadingSymbol, Doc.space)\n return Arr.match(message.split(NEWLINE_REGEX), {\n onEmpty: () => Doc.hsep([prefix, trailingSymbol, confirm]),\n onNonEmpty: (promptLines) => {\n const lines = Arr.map(promptLines, (line) => annotateLine(line))\n return prefix.pipe(\n Doc.cat(Doc.nest(Doc.vsep(lines), 2)),\n Doc.cat(Doc.space),\n Doc.cat(trailingSymbol),\n Doc.cat(Doc.space),\n Doc.cat(confirm)\n )\n }\n })\n}\n\nfunction renderPrefix(\n state: State,\n toDisplay: { readonly startIndex: number; readonly endIndex: number },\n currentIndex: number,\n length: number,\n figures: Effect.Effect.Success<typeof InternalAnsiUtils.figures>\n) {\n let prefix: Doc.AnsiDoc = Doc.space\n if (currentIndex === toDisplay.startIndex && toDisplay.startIndex > 0) {\n prefix = figures.arrowUp\n } else if (currentIndex === toDisplay.endIndex - 1 && toDisplay.endIndex < length) {\n prefix = figures.arrowDown\n }\n return state.cursor === currentIndex\n ? figures.pointer.pipe(Doc.annotate(Ansi.cyanBright), Doc.cat(prefix))\n : prefix.pipe(Doc.cat(Doc.space))\n}\n\nfunction renderFileName(file: string, isSelected: boolean) {\n return isSelected\n ? Doc.annotate(Doc.text(file), Ansi.combine(Ansi.underlined, Ansi.cyanBright))\n : Doc.text(file)\n}\n\nfunction renderFiles(\n state: State,\n files: ReadonlyArray<string>,\n figures: Effect.Effect.Success<typeof InternalAnsiUtils.figures>,\n options: FileOptions\n) {\n const length = files.length\n const toDisplay = entriesToDisplay(state.cursor, length, options.maxPerPage)\n const documents: Array<Doc.AnsiDoc> = []\n for (let index = toDisplay.startIndex; index < toDisplay.endIndex; index++) {\n const isSelected = state.cursor === index\n const prefix = renderPrefix(state, toDisplay, index, length, figures)\n const fileName = renderFileName(files[index], isSelected)\n documents.push(Doc.cat(prefix, fileName))\n }\n return Doc.vsep(documents)\n}\n\nfunction renderNextFrame(state: State, options: FileOptions) {\n return Effect.gen(function*() {\n const path = yield* Path.Path\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const currentPath = yield* resolveCurrentPath(state.path, options)\n const selectedPath = state.files[state.cursor]\n const resolvedPath = path.resolve(currentPath, selectedPath)\n const resolvedPathMsg = figures.pointerSmall.pipe(\n Doc.cat(Doc.space),\n Doc.cat(Doc.text(resolvedPath)),\n Doc.annotate(Ansi.blackBright)\n )\n if (showConfirmation(state.confirm)) {\n const leadingSymbol = Doc.annotate(Doc.text(\"?\"), Ansi.cyanBright)\n const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright)\n const confirm = Doc.annotate(Doc.text(\"(Y/n)\"), Ansi.blackBright)\n const promptMsg = renderPrompt(confirm, CONFIRM_MESSAGE, leadingSymbol, trailingSymbol)\n return Doc.cursorHide.pipe(\n Doc.cat(promptMsg),\n Doc.cat(Doc.hardLine),\n Doc.cat(resolvedPathMsg),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n }\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const promptMsg = renderPrompt(Doc.empty, options.message, leadingSymbol, trailingSymbol)\n const files = renderFiles(state, state.files, figures, options)\n return Doc.cursorHide.pipe(\n Doc.cat(promptMsg),\n Doc.cat(Doc.hardLine),\n Doc.cat(resolvedPathMsg),\n Doc.cat(Doc.hardLine),\n Doc.cat(files),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderSubmission(value: string, options: FileOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const promptMsg = renderPrompt(Doc.empty, options.message, leadingSymbol, trailingSymbol)\n return promptMsg.pipe(\n Doc.cat(Doc.space),\n Doc.cat(Doc.annotate(Doc.text(value), Ansi.white)),\n Doc.cat(Doc.hardLine),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction handleRender(options: FileOptions) {\n return (_: State, action: Prompt.Prompt.Action<State, string>) => {\n return Action.$match(action, {\n Beep: () => Effect.succeed(renderBeep),\n NextFrame: ({ state }) => renderNextFrame(state, options),\n Submit: ({ value }) => renderSubmission(value, options)\n })\n }\n}\n\nfunction processCursorUp(state: State) {\n const cursor = state.cursor - 1\n return Effect.succeed(Action.NextFrame({\n state: { ...state, cursor: cursor < 0 ? state.files.length - 1 : cursor }\n }))\n}\n\nfunction processCursorDown(state: State) {\n return Effect.succeed(Action.NextFrame({\n state: { ...state, cursor: (state.cursor + 1) % state.files.length }\n }))\n}\n\nfunction processSelection(state: State, options: FileOptions) {\n return Effect.gen(function*() {\n const fs = yield* FileSystem.FileSystem\n const path = yield* Path.Path\n const currentPath = yield* resolveCurrentPath(state.path, options)\n const selectedPath = state.files[state.cursor]\n const resolvedPath = path.resolve(currentPath, selectedPath)\n const info = yield* Effect.orDie(fs.stat(resolvedPath))\n if (info.type === \"Directory\") {\n const files = yield* getFileList(resolvedPath, options)\n const filesWithoutParent = files.filter((file) => file !== \"..\")\n // If the user selected a directory AND the prompt type can result with\n // a directory, we must confirm:\n // - If the selected directory has any files\n // - Confirm whether or not the user wants to traverse those files\n if (options.type === \"directory\" || options.type === \"either\") {\n return filesWithoutParent.length === 0\n // Directory is empty so it's safe to select it\n ? Action.Submit({ value: resolvedPath })\n // Directory has contents - show confirmation to user\n : Action.NextFrame({\n state: { ...state, confirm: Confirm.Show() }\n })\n }\n return Action.NextFrame({\n state: {\n cursor: 0,\n files,\n path: Option.some(resolvedPath),\n confirm: Confirm.Hide()\n }\n })\n }\n return Action.Submit({ value: resolvedPath })\n })\n}\n\nfunction handleProcess(options: FileOptions) {\n return (input: Terminal.UserInput, state: State) =>\n Effect.gen(function*() {\n switch (input.key.name) {\n case \"k\":\n case \"up\": {\n return yield* processCursorUp(state)\n }\n case \"j\":\n case \"down\":\n case \"tab\": {\n return yield* processCursorDown(state)\n }\n case \"enter\":\n case \"return\": {\n return yield* processSelection(state, options)\n }\n case \"y\":\n case \"t\": {\n if (showConfirmation(state.confirm)) {\n const path = yield* Path.Path\n const currentPath = yield* resolveCurrentPath(state.path, options)\n const selectedPath = state.files[state.cursor]\n const resolvedPath = path.resolve(currentPath, selectedPath)\n const files = yield* getFileList(resolvedPath, options)\n return Action.NextFrame({\n state: {\n cursor: 0,\n files,\n path: Option.some(resolvedPath),\n confirm: Confirm.Hide()\n }\n })\n }\n return Action.Beep()\n }\n case \"n\":\n case \"f\": {\n if (showConfirmation(state.confirm)) {\n const path = yield* Path.Path\n const currentPath = yield* resolveCurrentPath(state.path, options)\n const selectedPath = state.files[state.cursor]\n const resolvedPath = path.resolve(currentPath, selectedPath)\n return Action.Submit({ value: resolvedPath })\n }\n return Action.Beep()\n }\n default: {\n return Action.Beep()\n }\n }\n })\n}\n\n/** @internal */\nexport const file = (options: Prompt.Prompt.FileOptions = {}): Prompt.Prompt<string> => {\n const opts: FileOptions = {\n type: options.type ?? \"file\",\n message: options.message ?? `Choose a file`,\n startingPath: Option.fromNullable(options.startingPath),\n maxPerPage: options.maxPerPage ?? 10,\n filter: options.filter ?? (() => Effect.succeed(true))\n }\n const initialState: Effect.Effect<\n State,\n never,\n Prompt.Prompt.Environment\n > = Effect.gen(function*() {\n const path = Option.none<string>()\n const currentPath = yield* resolveCurrentPath(path, opts)\n const files = yield* getFileList(currentPath, opts)\n const confirm = Confirm.Hide()\n return { cursor: 0, files, path, confirm }\n })\n return InternalPrompt.custom(initialState, {\n render: handleRender(opts),\n process: handleProcess(opts),\n clear: handleClear(opts)\n })\n}\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport * as EffectNumber from \"effect/Number\"\nimport * as Option from \"effect/Option\"\nimport * as Schema from \"effect/Schema\"\nimport type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport { Action } from \"./action.js\"\nimport * as InternalAnsiUtils from \"./ansi-utils.js\"\n\ninterface IntegerOptions extends Required<Prompt.Prompt.IntegerOptions> {}\ninterface FloatOptions extends Required<Prompt.Prompt.FloatOptions> {}\n\ninterface State {\n readonly cursor: number\n readonly value: string\n readonly error: Option.Option<string>\n}\n\nconst parseInt = Schema.NumberFromString.pipe(\n Schema.int(),\n Schema.decodeUnknown\n)\n\nconst parseFloat = Schema.decodeUnknown(Schema.NumberFromString)\n\nconst renderBeep = Doc.render(Doc.beep, { style: \"pretty\" })\n\nfunction handleClear(options: IntegerOptions) {\n return (state: State, _: Prompt.Prompt.Action<State, number>) => {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const resetCurrentLine = Doc.cat(Doc.eraseLine, Doc.cursorLeft)\n const clearError = Option.match(state.error, {\n onNone: () => Doc.empty,\n onSome: (error) =>\n Doc.cursorDown(InternalAnsiUtils.lines(error, columns)).pipe(\n Doc.cat(InternalAnsiUtils.eraseText(`\\n${error}`, columns))\n )\n })\n const clearOutput = InternalAnsiUtils.eraseText(options.message, columns)\n return clearError.pipe(\n Doc.cat(clearOutput),\n Doc.cat(resetCurrentLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n }\n}\n\nfunction renderInput(state: State, submitted: boolean) {\n const annotation = Option.match(state.error, {\n onNone: () => Ansi.combine(Ansi.underlined, Ansi.cyanBright),\n onSome: () => Ansi.red\n })\n const value = state.value === \"\" ? Doc.empty : Doc.text(`${state.value}`)\n return submitted ? value : Doc.annotate(value, annotation)\n}\n\nconst NEWLINE_REGEX = /\\r?\\n/\n\nfunction renderError(state: State, pointer: Doc.AnsiDoc) {\n return Option.match(state.error, {\n onNone: () => Doc.empty,\n onSome: (error) =>\n Arr.match(error.split(NEWLINE_REGEX), {\n onEmpty: () => Doc.empty,\n onNonEmpty: (errorLines) => {\n const annotateLine = (line: string): Doc.AnsiDoc =>\n Doc.annotate(Doc.text(line), Ansi.combine(Ansi.italicized, Ansi.red))\n const prefix = Doc.cat(Doc.annotate(pointer, Ansi.red), Doc.space)\n const lines = Arr.map(errorLines, (str) => annotateLine(str))\n return Doc.cursorSavePosition.pipe(\n Doc.cat(Doc.hardLine),\n Doc.cat(prefix),\n Doc.cat(Doc.align(Doc.vsep(lines))),\n Doc.cat(Doc.cursorRestorePosition)\n )\n }\n })\n })\n}\n\nfunction renderOutput(\n state: State,\n leadingSymbol: Doc.AnsiDoc,\n trailingSymbol: Doc.AnsiDoc,\n options: IntegerOptions,\n submitted: boolean = false\n) {\n const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold)\n const prefix = Doc.cat(leadingSymbol, Doc.space)\n return Arr.match(options.message.split(/\\r?\\n/), {\n onEmpty: () => Doc.hsep([prefix, trailingSymbol, renderInput(state, submitted)]),\n onNonEmpty: (promptLines) => {\n const lines = Arr.map(promptLines, (line) => annotateLine(line))\n return prefix.pipe(\n Doc.cat(Doc.nest(Doc.vsep(lines), 2)),\n Doc.cat(Doc.space),\n Doc.cat(trailingSymbol),\n Doc.cat(Doc.space),\n Doc.cat(renderInput(state, submitted))\n )\n }\n })\n}\n\nfunction renderNextFrame(state: State, options: IntegerOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(Doc.text(\"?\"), Ansi.cyanBright)\n const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright)\n const errorMsg = renderError(state, figures.pointerSmall)\n const promptMsg = renderOutput(state, leadingSymbol, trailingSymbol, options)\n return promptMsg.pipe(\n Doc.cat(errorMsg),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderSubmission(nextState: State, options: IntegerOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const promptMsg = renderOutput(nextState, leadingSymbol, trailingSymbol, options, true)\n return promptMsg.pipe(\n Doc.cat(Doc.hardLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction processBackspace(state: State) {\n if (state.value.length <= 0) {\n return Effect.succeed(Action.Beep())\n }\n const value = state.value.slice(0, state.value.length - 1)\n return Effect.succeed(Action.NextFrame({\n state: { ...state, value, error: Option.none() }\n }))\n}\n\nfunction defaultIntProcessor(state: State, input: string) {\n if (state.value.length === 0 && input === \"-\") {\n return Effect.succeed(Action.NextFrame({\n state: { ...state, value: \"-\", error: Option.none() }\n }))\n }\n return Effect.match(parseInt(state.value + input), {\n onFailure: () => Action.Beep(),\n onSuccess: (value) =>\n Action.NextFrame({\n state: { ...state, value: `${value}`, error: Option.none() }\n })\n })\n}\n\nfunction defaultFloatProcessor(\n state: State,\n input: string\n) {\n if (input === \".\" && state.value.includes(\".\")) {\n return Effect.succeed(Action.Beep())\n }\n if (state.value.length === 0 && input === \"-\") {\n return Effect.succeed(Action.NextFrame({\n state: { ...state, value: \"-\", error: Option.none() }\n }))\n }\n return Effect.match(parseFloat(state.value + input), {\n onFailure: () => Action.Beep(),\n onSuccess: (value) =>\n Action.NextFrame({\n state: {\n ...state,\n value: input === \".\" ? `${value}.` : `${value}`,\n error: Option.none()\n }\n })\n })\n}\n\nconst initialState: State = {\n cursor: 0,\n value: \"\",\n error: Option.none()\n}\n\nfunction handleRenderInteger(options: IntegerOptions) {\n return (state: State, action: Prompt.Prompt.Action<State, Number>) => {\n return Action.$match(action, {\n Beep: () => Effect.succeed(renderBeep),\n NextFrame: ({ state }) => renderNextFrame(state, options),\n Submit: () => renderSubmission(state, options)\n })\n }\n}\n\nfunction handleProcessInteger(options: IntegerOptions) {\n return (input: Terminal.UserInput, state: State) => {\n switch (input.key.name) {\n case \"backspace\": {\n return processBackspace(state)\n }\n case \"k\":\n case \"up\": {\n return Effect.succeed(Action.NextFrame({\n state: {\n ...state,\n value: state.value === \"\" || state.value === \"-\"\n ? `${options.incrementBy}`\n : `${Number.parseInt(state.value) + options.incrementBy}`,\n error: Option.none()\n }\n }))\n }\n case \"j\":\n case \"down\": {\n return Effect.succeed(Action.NextFrame({\n state: {\n ...state,\n value: state.value === \"\" || state.value === \"-\"\n ? `-${options.decrementBy}`\n : `${Number.parseInt(state.value) - options.decrementBy}`,\n error: Option.none()\n }\n }))\n }\n case \"enter\":\n case \"return\": {\n return Effect.matchEffect(parseInt(state.value), {\n onFailure: () =>\n Effect.succeed(Action.NextFrame({\n state: {\n ...state,\n error: Option.some(\"Must provide an integer value\")\n }\n })),\n onSuccess: (n) =>\n Effect.match(options.validate(n), {\n onFailure: (error) =>\n Action.NextFrame({\n state: {\n ...state,\n error: Option.some(error)\n }\n }),\n onSuccess: (value) => Action.Submit({ value })\n })\n })\n }\n default: {\n const value = Option.getOrElse(input.input, () => \"\")\n return defaultIntProcessor(state, value)\n }\n }\n }\n}\n\n/** @internal */\nexport const integer = (options: Prompt.Prompt.IntegerOptions): Prompt.Prompt<number> => {\n const opts: IntegerOptions = {\n min: Number.NEGATIVE_INFINITY,\n max: Number.POSITIVE_INFINITY,\n incrementBy: 1,\n decrementBy: 1,\n validate: (n) => {\n if (n < opts.min) {\n return Effect.fail(`${n} must be greater than or equal to ${opts.min}`)\n }\n if (n > opts.max) {\n return Effect.fail(`${n} must be less than or equal to ${opts.max}`)\n }\n return Effect.succeed(n)\n },\n ...options\n }\n return InternalPrompt.custom(initialState, {\n render: handleRenderInteger(opts),\n process: handleProcessInteger(opts),\n clear: handleClear(opts)\n })\n}\n\nfunction handleRenderFloat(options: FloatOptions) {\n return (state: State, action: Prompt.Prompt.Action<State, number>) => {\n return Action.$match(action, {\n Beep: () => Effect.succeed(renderBeep),\n NextFrame: ({ state }) => renderNextFrame(state, options),\n Submit: () => renderSubmission(state, options)\n })\n }\n}\n\nfunction handleProcessFloat(options: FloatOptions) {\n return (input: Terminal.UserInput, state: State) => {\n switch (input.key.name) {\n case \"backspace\": {\n return processBackspace(state)\n }\n case \"k\":\n case \"up\": {\n return Effect.succeed(Action.NextFrame({\n state: {\n ...state,\n value: state.value === \"\" || state.value === \"-\"\n ? `${options.incrementBy}`\n : `${Number.parseFloat(state.value) + options.incrementBy}`,\n error: Option.none()\n }\n }))\n }\n case \"j\":\n case \"down\": {\n return Effect.succeed(Action.NextFrame({\n state: {\n ...state,\n value: state.value === \"\" || state.value === \"-\"\n ? `-${options.decrementBy}`\n : `${Number.parseFloat(state.value) - options.decrementBy}`,\n error: Option.none()\n }\n }))\n }\n case \"enter\":\n case \"return\": {\n return Effect.matchEffect(parseFloat(state.value), {\n onFailure: () =>\n Effect.succeed(Action.NextFrame({\n state: {\n ...state,\n error: Option.some(\"Must provide a floating point value\")\n }\n })),\n onSuccess: (n) =>\n Effect.flatMap(\n Effect.sync(() => EffectNumber.round(n, options.precision)),\n (rounded) =>\n Effect.match(options.validate(rounded), {\n onFailure: (error) =>\n Action.NextFrame({\n state: {\n ...state,\n error: Option.some(error)\n }\n }),\n onSuccess: (value) => Action.Submit({ value })\n })\n )\n })\n }\n default: {\n const value = Option.getOrElse(input.input, () => \"\")\n return defaultFloatProcessor(state, value)\n }\n }\n }\n}\n\n/** @internal */\nexport const float = (options: Prompt.Prompt.FloatOptions): Prompt.Prompt<number> => {\n const opts: FloatOptions = {\n min: Number.NEGATIVE_INFINITY,\n max: Number.POSITIVE_INFINITY,\n incrementBy: 1,\n decrementBy: 1,\n precision: 2,\n validate: (n) => {\n if (n < opts.min) {\n return Effect.fail(`${n} must be greater than or equal to ${opts.min}`)\n }\n if (n > opts.max) {\n return Effect.fail(`${n} must be less than or equal to ${opts.max}`)\n }\n return Effect.succeed(n)\n },\n ...options\n }\n return InternalPrompt.custom(initialState, {\n render: handleRenderFloat(opts),\n process: handleProcessFloat(opts),\n clear: handleClear(opts)\n })\n}\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport { Action } from \"./action.js\"\nimport * as InternalAnsiUtils from \"./ansi-utils.js\"\nimport { entriesToDisplay } from \"./utils.js\"\n\ntype State = number\n\ninterface SelectOptions<A> extends Required<Prompt.Prompt.SelectOptions<A>> {}\n\nconst renderBeep = Doc.render(Doc.beep, { style: \"pretty\" })\n\nconst NEWLINE_REGEX = /\\r?\\n/\n\nfunction renderOutput<A>(\n leadingSymbol: Doc.AnsiDoc,\n trailingSymbol: Doc.AnsiDoc,\n options: SelectOptions<A>\n) {\n const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold)\n const prefix = Doc.cat(leadingSymbol, Doc.space)\n return Arr.match(options.message.split(NEWLINE_REGEX), {\n onEmpty: () => Doc.hsep([prefix, trailingSymbol]),\n onNonEmpty: (promptLines) => {\n const lines = Arr.map(promptLines, (line) => annotateLine(line))\n return prefix.pipe(\n Doc.cat(Doc.nest(Doc.vsep(lines), 2)),\n Doc.cat(Doc.space),\n Doc.cat(trailingSymbol),\n Doc.cat(Doc.space)\n )\n }\n })\n}\n\nfunction renderChoicePrefix<A>(\n state: State,\n choices: SelectOptions<A>[\"choices\"],\n toDisplay: { readonly startIndex: number; readonly endIndex: number },\n currentIndex: number,\n figures: Effect.Effect.Success<typeof InternalAnsiUtils.figures>\n) {\n let prefix: Doc.AnsiDoc = Doc.space\n if (currentIndex === toDisplay.startIndex && toDisplay.startIndex > 0) {\n prefix = figures.arrowUp\n } else if (currentIndex === toDisplay.endIndex - 1 && toDisplay.endIndex < choices.length) {\n prefix = figures.arrowDown\n }\n if (choices[currentIndex].disabled) {\n const annotation = Ansi.combine(Ansi.bold, Ansi.blackBright)\n return state === currentIndex\n ? figures.pointer.pipe(Doc.annotate(annotation), Doc.cat(prefix))\n : prefix.pipe(Doc.cat(Doc.space))\n }\n return state === currentIndex\n ? figures.pointer.pipe(Doc.annotate(Ansi.cyanBright), Doc.cat(prefix))\n : prefix.pipe(Doc.cat(Doc.space))\n}\n\nfunction renderChoiceTitle<A>(\n choice: Prompt.Prompt.SelectChoice<A>,\n isSelected: boolean\n) {\n const title = Doc.text(choice.title)\n if (isSelected) {\n return choice.disabled\n ? Doc.annotate(title, Ansi.combine(Ansi.underlined, Ansi.blackBright))\n : Doc.annotate(title, Ansi.combine(Ansi.underlined, Ansi.cyanBright))\n }\n return choice.disabled\n ? Doc.annotate(title, Ansi.combine(Ansi.strikethrough, Ansi.blackBright))\n : title\n}\n\nfunction renderChoiceDescription<A>(\n choice: Prompt.Prompt.SelectChoice<A>,\n isSelected: boolean\n) {\n if (!choice.disabled && choice.description && isSelected) {\n return Doc.char(\"-\").pipe(\n Doc.cat(Doc.space),\n Doc.cat(Doc.text(choice.description)),\n Doc.annotate(Ansi.blackBright)\n )\n }\n return Doc.empty\n}\n\nfunction renderChoices<A>(\n state: State,\n options: SelectOptions<A>,\n figures: Effect.Effect.Success<typeof InternalAnsiUtils.figures>\n) {\n const choices = options.choices\n const toDisplay = entriesToDisplay(state, choices.length, options.maxPerPage)\n const documents: Array<Doc.AnsiDoc> = []\n for (let index = toDisplay.startIndex; index < toDisplay.endIndex; index++) {\n const choice = choices[index]\n const isSelected = state === index\n const prefix = renderChoicePrefix(state, choices, toDisplay, index, figures)\n const title = renderChoiceTitle(choice, isSelected)\n const description = renderChoiceDescription(choice, isSelected)\n documents.push(prefix.pipe(Doc.cat(title), Doc.cat(Doc.space), Doc.cat(description)))\n }\n return Doc.vsep(documents)\n}\n\nfunction renderNextFrame<A>(state: State, options: SelectOptions<A>) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const choices = renderChoices(state, options, figures)\n const leadingSymbol = Doc.annotate(Doc.text(\"?\"), Ansi.cyanBright)\n const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright)\n const promptMsg = renderOutput(leadingSymbol, trailingSymbol, options)\n return Doc.cursorHide.pipe(\n Doc.cat(promptMsg),\n Doc.cat(Doc.hardLine),\n Doc.cat(choices),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderSubmission<A>(state: State, options: SelectOptions<A>) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const selected = Doc.text(options.choices[state].title)\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const promptMsg = renderOutput(leadingSymbol, trailingSymbol, options)\n return promptMsg.pipe(\n Doc.cat(Doc.space),\n Doc.cat(Doc.annotate(selected, Ansi.white)),\n Doc.cat(Doc.hardLine),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction processCursorUp<A>(state: State, choices: Prompt.Prompt.SelectOptions<A>[\"choices\"]) {\n if (state === 0) {\n return Effect.succeed(Action.NextFrame({ state: choices.length - 1 }))\n }\n return Effect.succeed(Action.NextFrame({ state: state - 1 }))\n}\n\nfunction processCursorDown<A>(state: State, choices: Prompt.Prompt.SelectOptions<A>[\"choices\"]) {\n if (state === choices.length - 1) {\n return Effect.succeed(Action.NextFrame({ state: 0 }))\n }\n return Effect.succeed(Action.NextFrame({ state: state + 1 }))\n}\n\nfunction processNext<A>(state: State, choices: Prompt.Prompt.SelectOptions<A>[\"choices\"]) {\n return Effect.succeed(Action.NextFrame({ state: (state + 1) % choices.length }))\n}\n\nfunction handleRender<A>(options: SelectOptions<A>) {\n return (state: State, action: Prompt.Prompt.Action<State, A>) => {\n return Action.$match(action, {\n Beep: () => Effect.succeed(renderBeep),\n NextFrame: ({ state }) => renderNextFrame(state, options),\n Submit: () => renderSubmission(state, options)\n })\n }\n}\n\nexport function handleClear<A>(options: SelectOptions<A>) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const clearPrompt = Doc.cat(Doc.eraseLine, Doc.cursorLeft)\n const text = \"\\n\".repeat(Math.min(options.choices.length, options.maxPerPage)) + options.message\n const clearOutput = InternalAnsiUtils.eraseText(text, columns)\n return clearOutput.pipe(\n Doc.cat(clearPrompt),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction handleProcess<A>(options: SelectOptions<A>) {\n return (input: Terminal.UserInput, state: State) => {\n switch (input.key.name) {\n case \"k\":\n case \"up\": {\n return processCursorUp(state, options.choices)\n }\n case \"j\":\n case \"down\": {\n return processCursorDown(state, options.choices)\n }\n case \"tab\": {\n return processNext(state, options.choices)\n }\n case \"enter\":\n case \"return\": {\n const selected = options.choices[state]\n if (selected.disabled) {\n return Effect.succeed(Action.Beep())\n }\n return Effect.succeed(Action.Submit({ value: selected.value }))\n }\n default: {\n return Effect.succeed(Action.Beep())\n }\n }\n }\n}\n\n/** @internal */\nexport const select = <const A>(options: Prompt.Prompt.SelectOptions<A>): Prompt.Prompt<A> => {\n const opts: SelectOptions<A> = {\n maxPerPage: 10,\n ...options\n }\n // Validate and seed initial index from any choice marked selected: true\n let initialIndex = 0\n let seenSelected = -1\n for (let i = 0; i < opts.choices.length; i++) {\n const choice = opts.choices[i] as Prompt.Prompt.SelectChoice<A>\n if (choice.selected === true) {\n if (seenSelected !== -1) {\n throw new Error(\"InvalidArgumentException: only a single choice can be selected by default for Prompt.select\")\n }\n seenSelected = i\n }\n }\n if (seenSelected !== -1) {\n initialIndex = seenSelected\n }\n return InternalPrompt.custom(initialIndex, {\n render: handleRender(opts),\n process: handleProcess(opts),\n clear: () => handleClear(opts)\n })\n}\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport * as Option from \"effect/Option\"\nimport * as Redacted from \"effect/Redacted\"\nimport type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport { Action } from \"./action.js\"\nimport * as InternalAnsiUtils from \"./ansi-utils.js\"\n\ninterface Options extends Required<Prompt.Prompt.TextOptions> {\n /**\n * The type of the text option.\n */\n readonly type: \"hidden\" | \"password\" | \"text\"\n}\n\ninterface State {\n readonly cursor: number\n readonly value: string\n readonly error: Option.Option<string>\n}\n\nfunction getValue(state: State, options: Options): string {\n return state.value.length > 0 ? state.value : options.default\n}\n\nconst renderBeep = Doc.render(Doc.beep, { style: \"pretty\" })\n\nfunction renderClearScreen(state: State, options: Options) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n // Erase the current line and place the cursor in column one\n const resetCurrentLine = Doc.cat(Doc.eraseLine, Doc.cursorLeft)\n // Check for any error output\n const clearError = Option.match(state.error, {\n onNone: () => Doc.empty,\n onSome: (error) =>\n // If there was an error, move the cursor down to the final error line and\n // then clear all lines of error output\n Doc.cursorDown(InternalAnsiUtils.lines(error, columns)).pipe(\n // Add a leading newline to the error message to ensure that the corrrect\n // number of error lines are erased\n Doc.cat(InternalAnsiUtils.eraseText(`\\n${error}`, columns))\n )\n })\n // Ensure that the prior prompt output is cleaned up\n // Calculate full rendered line: \"? \" + message + \" › \" + input\n const inputValue = state.value.length > 0 ? state.value : options.default\n const fullLine = `? ${options.message} \\u203a ${inputValue}`\n const clearOutput = InternalAnsiUtils.eraseText(fullLine, columns)\n // Concatenate and render all documents\n return clearError.pipe(\n Doc.cat(clearOutput),\n Doc.cat(resetCurrentLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderInput(nextState: State, options: Options, submitted: boolean) {\n const text = getValue(nextState, options)\n\n const annotation = Option.match(nextState.error, {\n onNone: () => {\n if (submitted) {\n return Ansi.white\n }\n\n if (nextState.value.length === 0) {\n return Ansi.blackBright\n }\n\n return Ansi.combine(Ansi.underlined, Ansi.cyanBright)\n },\n onSome: () => Ansi.red\n })\n\n switch (options.type) {\n case \"hidden\": {\n return Doc.empty\n }\n case \"password\": {\n return Doc.annotate(Doc.text(\"*\".repeat(text.length)), annotation)\n }\n case \"text\": {\n return Doc.annotate(Doc.text(text), annotation)\n }\n }\n}\n\nfunction renderError(nextState: State, pointer: Doc.AnsiDoc) {\n return Option.match(nextState.error, {\n onNone: () => Doc.empty,\n onSome: (error) =>\n Arr.match(error.split(/\\r?\\n/), {\n onEmpty: () => Doc.empty,\n onNonEmpty: (errorLines) => {\n const annotateLine = (line: string): Doc.AnsiDoc =>\n Doc.text(line).pipe(\n Doc.annotate(Ansi.combine(Ansi.italicized, Ansi.red))\n )\n const prefix = Doc.cat(Doc.annotate(pointer, Ansi.red), Doc.space)\n const lines = Arr.map(errorLines, (str) => annotateLine(str))\n return Doc.cursorSavePosition.pipe(\n Doc.cat(Doc.hardLine),\n Doc.cat(prefix),\n Doc.cat(Doc.align(Doc.vsep(lines))),\n Doc.cat(Doc.cursorRestorePosition)\n )\n }\n })\n })\n}\n\nfunction renderOutput(\n nextState: State,\n leadingSymbol: Doc.AnsiDoc,\n trailingSymbol: Doc.AnsiDoc,\n options: Options,\n submitted: boolean = false\n) {\n const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold)\n const promptLines = options.message.split(/\\r?\\n/)\n const prefix = Doc.cat(leadingSymbol, Doc.space)\n if (Arr.isNonEmptyReadonlyArray(promptLines)) {\n const lines = Arr.map(promptLines, (line) => annotateLine(line))\n return prefix.pipe(\n Doc.cat(Doc.nest(Doc.vsep(lines), 2)),\n Doc.cat(Doc.space),\n Doc.cat(trailingSymbol),\n Doc.cat(Doc.space),\n Doc.cat(renderInput(nextState, options, submitted))\n )\n }\n return Doc.hsep([prefix, trailingSymbol, renderInput(nextState, options, submitted)])\n}\n\nfunction renderNextFrame(state: State, options: Options) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(Doc.text(\"?\"), Ansi.cyanBright)\n const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright)\n const promptMsg = renderOutput(state, leadingSymbol, trailingSymbol, options)\n const errorMsg = renderError(state, figures.pointerSmall)\n const offset = state.cursor - state.value.length\n return promptMsg.pipe(\n Doc.cat(errorMsg),\n Doc.cat(Doc.cursorMove(offset)),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderSubmission(state: State, options: Options) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const figures = yield* InternalAnsiUtils.figures\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const promptMsg = renderOutput(state, leadingSymbol, trailingSymbol, options, true)\n return promptMsg.pipe(\n Doc.cat(Doc.hardLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction processBackspace(state: State) {\n if (state.cursor <= 0) {\n return Effect.succeed(Action.Beep())\n }\n const beforeCursor = state.value.slice(0, state.cursor - 1)\n const afterCursor = state.value.slice(state.cursor)\n const cursor = state.cursor - 1\n const value = `${beforeCursor}${afterCursor}`\n return Effect.succeed(\n Action.NextFrame({\n state: { ...state, cursor, value, error: Option.none() }\n })\n )\n}\n\nfunction processCursorLeft(state: State) {\n if (state.cursor <= 0) {\n return Effect.succeed(Action.Beep())\n }\n const cursor = state.cursor - 1\n return Effect.succeed(\n Action.NextFrame({\n state: { ...state, cursor, error: Option.none() }\n })\n )\n}\n\nfunction processCursorRight(state: State) {\n if (state.cursor >= state.value.length) {\n return Effect.succeed(Action.Beep())\n }\n const cursor = Math.min(state.cursor + 1, state.value.length)\n return Effect.succeed(\n Action.NextFrame({\n state: { ...state, cursor, error: Option.none() }\n })\n )\n}\n\nfunction processTab(state: State, options: Options) {\n if (state.value === options.default) {\n return Effect.succeed(Action.Beep())\n }\n const value = getValue(state, options)\n const cursor = value.length\n return Effect.succeed(\n Action.NextFrame({\n state: { ...state, value, cursor, error: Option.none() }\n })\n )\n}\n\nfunction defaultProcessor(input: string, state: State) {\n const beforeCursor = state.value.slice(0, state.cursor)\n const afterCursor = state.value.slice(state.cursor)\n const value = `${beforeCursor}${input}${afterCursor}`\n const cursor = state.cursor + input.length\n return Effect.succeed(\n Action.NextFrame({\n state: { ...state, cursor, value, error: Option.none() }\n })\n )\n}\n\nconst initialState: State = {\n cursor: 0,\n value: \"\",\n error: Option.none()\n}\n\nfunction handleRender(options: Options) {\n return (state: State, action: Prompt.Prompt.Action<State, string>) => {\n return Action.$match(action, {\n Beep: () => Effect.succeed(renderBeep),\n NextFrame: ({ state }) => renderNextFrame(state, options),\n Submit: () => renderSubmission(state, options)\n })\n }\n}\n\nfunction handleProcess(options: Options) {\n return (input: Terminal.UserInput, state: State) => {\n switch (input.key.name) {\n case \"backspace\": {\n return processBackspace(state)\n }\n case \"left\": {\n return processCursorLeft(state)\n }\n case \"right\": {\n return processCursorRight(state)\n }\n case \"enter\":\n case \"return\": {\n const value = getValue(state, options)\n return Effect.match(options.validate(value), {\n onFailure: (error) =>\n Action.NextFrame({\n state: { ...state, value, error: Option.some(error) }\n }),\n onSuccess: (value) => Action.Submit({ value })\n })\n }\n case \"tab\": {\n return processTab(state, options)\n }\n default: {\n const value = Option.getOrElse(input.input, () => \"\")\n return defaultProcessor(value, state)\n }\n }\n }\n}\n\nfunction handleClear(options: Options) {\n return (state: State, _: Prompt.Prompt.Action<State, string>) => {\n return renderClearScreen(state, options)\n }\n}\n\nfunction basePrompt(\n options: Prompt.Prompt.TextOptions,\n type: Options[\"type\"]\n): Prompt.Prompt<string> {\n const opts: Options = {\n default: \"\",\n type,\n validate: Effect.succeed,\n ...options\n }\n\n return InternalPrompt.custom(initialState, {\n render: handleRender(opts),\n process: handleProcess(opts),\n clear: handleClear(opts)\n })\n}\n\n/** @internal */\nexport const hidden = (\n options: Prompt.Prompt.TextOptions\n): Prompt.Prompt<Redacted.Redacted> => basePrompt(options, \"hidden\").pipe(InternalPrompt.map(Redacted.make))\n\n/** @internal */\nexport const password = (\n options: Prompt.Prompt.TextOptions\n): Prompt.Prompt<Redacted.Redacted> => basePrompt(options, \"password\").pipe(InternalPrompt.map(Redacted.make))\n\n/** @internal */\nexport const text = (\n options: Prompt.Prompt.TextOptions\n): Prompt.Prompt<string> => basePrompt(options, \"text\")\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Ansi from \"@effect/printer-ansi/Ansi\"\nimport * as Doc from \"@effect/printer-ansi/AnsiDoc\"\nimport * as Optimize from \"@effect/printer/Optimize\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport { Action } from \"./action.js\"\nimport * as InternalAnsiUtils from \"./ansi-utils.js\"\n\ninterface ToggleOptions extends Required<Prompt.Prompt.ToggleOptions> {}\n\ntype State = boolean\n\nconst renderBeep = Doc.render(Doc.beep, { style: \"pretty\" })\n\nfunction handleClear(options: ToggleOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const columns = yield* terminal.columns\n const clearPrompt = Doc.cat(Doc.eraseLine, Doc.cursorLeft)\n const clearOutput = InternalAnsiUtils.eraseText(options.message, columns)\n return clearOutput.pipe(\n Doc.cat(clearPrompt),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderToggle(\n value: boolean,\n options: ToggleOptions,\n submitted: boolean = false\n) {\n const separator = Doc.annotate(Doc.char(\"/\"), Ansi.blackBright)\n const selectedAnnotation = Ansi.combine(Ansi.underlined, submitted ? Ansi.white : Ansi.cyanBright)\n const inactive = value\n ? Doc.text(options.inactive)\n : Doc.annotate(Doc.text(options.inactive), selectedAnnotation)\n const active = value\n ? Doc.annotate(Doc.text(options.active), selectedAnnotation)\n : Doc.text(options.active)\n return Doc.hsep([active, separator, inactive])\n}\n\nfunction renderOutput(\n toggle: Doc.AnsiDoc,\n leadingSymbol: Doc.AnsiDoc,\n trailingSymbol: Doc.AnsiDoc,\n options: ToggleOptions\n) {\n const annotateLine = (line: string): Doc.AnsiDoc => Doc.annotate(Doc.text(line), Ansi.bold)\n const promptLines = options.message.split(/\\r?\\n/)\n const prefix = Doc.cat(leadingSymbol, Doc.space)\n if (Arr.isNonEmptyReadonlyArray(promptLines)) {\n const lines = Arr.map(promptLines, (line) => annotateLine(line))\n return prefix.pipe(\n Doc.cat(Doc.nest(Doc.vsep(lines), 2)),\n Doc.cat(Doc.space),\n Doc.cat(trailingSymbol),\n Doc.cat(Doc.space),\n Doc.cat(toggle)\n )\n }\n return Doc.hsep([prefix, trailingSymbol, toggle])\n}\n\nfunction renderNextFrame(state: State, options: ToggleOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const figures = yield* InternalAnsiUtils.figures\n const columns = yield* terminal.columns\n const leadingSymbol = Doc.annotate(Doc.text(\"?\"), Ansi.cyanBright)\n const trailingSymbol = Doc.annotate(figures.pointerSmall, Ansi.blackBright)\n const toggle = renderToggle(state, options)\n const promptMsg = renderOutput(toggle, leadingSymbol, trailingSymbol, options)\n return Doc.cursorHide.pipe(\n Doc.cat(promptMsg),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nfunction renderSubmission(value: boolean, options: ToggleOptions) {\n return Effect.gen(function*() {\n const terminal = yield* Terminal.Terminal\n const figures = yield* InternalAnsiUtils.figures\n const columns = yield* terminal.columns\n const leadingSymbol = Doc.annotate(figures.tick, Ansi.green)\n const trailingSymbol = Doc.annotate(figures.ellipsis, Ansi.blackBright)\n const toggle = renderToggle(value, options, true)\n const promptMsg = renderOutput(toggle, leadingSymbol, trailingSymbol, options)\n return promptMsg.pipe(\n Doc.cat(Doc.hardLine),\n Optimize.optimize(Optimize.Deep),\n Doc.render({ style: \"pretty\", options: { lineWidth: columns } })\n )\n })\n}\n\nconst activate = Effect.succeed(Action.NextFrame({ state: true }))\nconst deactivate = Effect.succeed(Action.NextFrame({ state: false }))\n\nfunction handleRender(options: ToggleOptions) {\n return (state: State, action: Prompt.Prompt.Action<State, boolean>) => {\n switch (action._tag) {\n case \"Beep\": {\n return Effect.succeed(renderBeep)\n }\n case \"NextFrame\": {\n return renderNextFrame(state, options)\n }\n case \"Submit\": {\n return renderSubmission(state, options)\n }\n }\n }\n}\n\nfunction handleProcess(input: Terminal.UserInput, state: State) {\n switch (input.key.name) {\n case \"0\":\n case \"j\":\n case \"delete\":\n case \"right\":\n case \"down\": {\n return deactivate\n }\n case \"1\":\n case \"k\":\n case \"left\":\n case \"up\": {\n return activate\n }\n case \" \":\n case \"tab\": {\n return state ? deactivate : activate\n }\n case \"enter\":\n case \"return\": {\n return Effect.succeed(Action.Submit({ value: state }))\n }\n default: {\n return Effect.succeed(Action.Beep())\n }\n }\n}\n\n/** @internal */\nexport const toggle = (options: Prompt.Prompt.ToggleOptions): Prompt.Prompt<boolean> => {\n const opts: ToggleOptions = {\n initial: false,\n active: \"on\",\n inactive: \"off\",\n ...options\n }\n return InternalPrompt.custom(opts.initial, {\n render: handleRender(opts),\n process: handleProcess,\n clear: () => handleClear(opts)\n })\n}\n","import * as FileSystem from \"@effect/platform/FileSystem\"\nimport * as Arr from \"effect/Array\"\nimport * as Effect from \"effect/Effect\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as Option from \"effect/Option\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport * as EffectRedacted from \"effect/Redacted\"\nimport * as Schema from \"effect/Schema\"\nimport * as EffectSecret from \"effect/Secret\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Span from \"../HelpDoc/Span.js\"\nimport type * as Primitive from \"../Primitive.js\"\nimport type * as Prompt from \"../Prompt.js\"\nimport * as InternalCliConfig from \"./cliConfig.js\"\nimport * as InternalHelpDoc from \"./helpDoc.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\nimport * as InternalPrompt from \"./prompt.js\"\nimport * as InternalDatePrompt from \"./prompt/date.js\"\nimport * as InternalFilePrompt from \"./prompt/file.js\"\nimport * as InternalNumberPrompt from \"./prompt/number.js\"\nimport * as InternalSelectPrompt from \"./prompt/select.js\"\nimport * as InternalTextPrompt from \"./prompt/text.js\"\nimport * as InternalTogglePrompt from \"./prompt/toggle.js\"\n\nconst PrimitiveSymbolKey = \"@effect/cli/Primitive\"\n\n/** @internal */\nexport const PrimitiveTypeId: Primitive.PrimitiveTypeId = Symbol.for(\n PrimitiveSymbolKey\n) as Primitive.PrimitiveTypeId\n\n/** @internal */\nexport type Op<Tag extends string, Body = {}> = Primitive.Primitive<never> & Body & {\n readonly _tag: Tag\n}\n\nconst proto = {\n [PrimitiveTypeId]: {\n _A: (_: never) => _\n },\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\n/** @internal */\nexport type Instruction =\n | Bool\n | Choice\n | DateTime\n | Float\n | Integer\n | Path\n | Secret\n | Redacted\n | Text\n\n/** @internal */\nexport interface Bool extends\n Op<\"Bool\", {\n readonly defaultValue: Option.Option<boolean>\n }>\n{}\n\n/** @internal */\nexport interface Choice extends\n Op<\"Choice\", {\n readonly alternatives: ReadonlyArray<[string, unknown]>\n }>\n{}\n\n/** @internal */\nexport interface DateTime extends Op<\"DateTime\", {}> {}\n\n/** @internal */\nexport interface Float extends Op<\"Float\", {}> {}\n\n/** @internal */\nexport interface Integer extends Op<\"Integer\", {}> {}\n\n/** @internal */\nexport interface Path extends\n Op<\"Path\", {\n readonly pathType: Primitive.Primitive.PathType\n readonly pathExists: Primitive.Primitive.PathExists\n }>\n{}\n\n/** @internal */\nexport interface Redacted extends Op<\"Redacted\", {}> {}\n\n/** @internal */\nexport interface Secret extends Op<\"Secret\", {}> {}\n\n/** @internal */\nexport interface Text extends Op<\"Text\", {}> {}\n\n// =============================================================================\n// Refinements\n// =============================================================================\n\n/** @internal */\nexport const isPrimitive = (u: unknown): u is Primitive.Primitive<unknown> =>\n typeof u === \"object\" && u != null && PrimitiveTypeId in u\n\n/** @internal */\nexport const isBool = <A>(self: Primitive.Primitive<A>): boolean => isPrimitive(self) && isBoolType(self as Instruction)\n\n/** @internal */\nexport const isBoolType = (self: Instruction): self is Bool => self._tag === \"Bool\"\n\n/** @internal */\nexport const isChoiceType = (self: Instruction): self is Choice => self._tag === \"Choice\"\n\n/** @internal */\nexport const isDateTimeType = (self: Instruction): self is DateTime => self._tag === \"DateTime\"\n\n/** @internal */\nexport const isFloatType = (self: Instruction): self is Float => self._tag === \"Float\"\n\n/** @internal */\nexport const isIntegerType = (self: Instruction): self is Integer => self._tag === \"Integer\"\n\n/** @internal */\nexport const isPathType = (self: Instruction): self is Path => self._tag === \"Path\"\n\n/** @internal */\nexport const isSecretType = (self: Instruction): self is Path => self._tag === \"Path\"\n\n/** @internal */\nexport const isTextType = (self: Instruction): self is Text => self._tag === \"Text\"\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/** @internal */\nexport const trueValues = Schema.Literal(\"true\", \"1\", \"y\", \"yes\", \"on\")\n\n/** @internal */\nexport const isTrueValue = Schema.is(trueValues)\n\n/** @internal */\nexport const falseValues = Schema.Literal(\"false\", \"0\", \"n\", \"no\", \"off\")\n\n/** @internal */\nexport const isFalseValue = Schema.is(falseValues)\n\n/** @internal */\nexport const boolean = (defaultValue: Option.Option<boolean>): Primitive.Primitive<boolean> => {\n const op = Object.create(proto)\n op._tag = \"Bool\"\n op.defaultValue = defaultValue\n return op\n}\n\n/** @internal */\nexport const choice = <A>(\n alternatives: ReadonlyArray<[string, A]>\n): Primitive.Primitive<A> => {\n const op = Object.create(proto)\n op._tag = \"Choice\"\n op.alternatives = alternatives\n return op\n}\n\n/** @internal */\nexport const date: Primitive.Primitive<globalThis.Date> = (() => {\n const op = Object.create(proto)\n op._tag = \"DateTime\"\n return op\n})()\n\n/** @internal */\nexport const float: Primitive.Primitive<number> = (() => {\n const op = Object.create(proto)\n op._tag = \"Float\"\n return op\n})()\n\n/** @internal */\nexport const integer: Primitive.Primitive<number> = (() => {\n const op = Object.create(proto)\n op._tag = \"Integer\"\n return op\n})()\n\n/** @internal */\nexport const path = (\n pathType: Primitive.Primitive.PathType,\n pathExists: Primitive.Primitive.PathExists\n): Primitive.Primitive<string> => {\n const op = Object.create(proto)\n op._tag = \"Path\"\n op.pathType = pathType\n op.pathExists = pathExists\n return op\n}\n\n/** @internal */\nexport const redacted: Primitive.Primitive<EffectRedacted.Redacted> = (() => {\n const op = Object.create(proto)\n op._tag = \"Redacted\"\n return op\n})()\n\n/** @internal */\nexport const secret: Primitive.Primitive<EffectSecret.Secret> = (() => {\n const op = Object.create(proto)\n op._tag = \"Secret\"\n return op\n})()\n\n/** @internal */\nexport const text: Primitive.Primitive<string> = (() => {\n const op = Object.create(proto)\n op._tag = \"Text\"\n return op\n})()\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/** @internal */\nexport const getChoices = <A>(self: Primitive.Primitive<A>): Option.Option<string> =>\n getChoicesInternal(self as Instruction)\n\n/** @internal */\nexport const getHelp = <A>(self: Primitive.Primitive<A>): Span.Span => getHelpInternal(self as Instruction)\n\n/** @internal */\nexport const getTypeName = <A>(self: Primitive.Primitive<A>): string => getTypeNameInternal(self as Instruction)\n\n/** @internal */\nexport const validate = dual<\n (\n value: Option.Option<string>,\n config: CliConfig.CliConfig\n ) => <A>(self: Primitive.Primitive<A>) => Effect.Effect<\n A,\n string,\n FileSystem.FileSystem\n >,\n <A>(\n self: Primitive.Primitive<A>,\n value: Option.Option<string>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<\n A,\n string,\n FileSystem.FileSystem\n >\n>(3, (self, value, config) => validateInternal(self as Instruction, value, config))\n\n/** @internal */\nexport const wizard = dual<\n (help: HelpDoc.HelpDoc) => <A>(self: Primitive.Primitive<A>) => Prompt.Prompt<A>,\n <A>(self: Primitive.Primitive<A>, help: HelpDoc.HelpDoc) => Prompt.Prompt<A>\n>(2, (self, help) => wizardInternal(self as Instruction, help))\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst getChoicesInternal = (self: Instruction): Option.Option<string> => {\n switch (self._tag) {\n case \"Bool\": {\n return Option.some(\"true | false\")\n }\n case \"Choice\": {\n const choices = pipe(\n Arr.map(self.alternatives, ([choice]) => choice),\n Arr.join(\" | \")\n )\n return Option.some(choices)\n }\n case \"DateTime\": {\n return Option.some(\"date\")\n }\n case \"Float\":\n case \"Integer\":\n case \"Path\":\n case \"Redacted\":\n case \"Secret\":\n case \"Text\": {\n return Option.none()\n }\n }\n}\n\nconst getHelpInternal = (self: Instruction): Span.Span => {\n switch (self._tag) {\n case \"Bool\": {\n return InternalSpan.text(\"A true or false value.\")\n }\n case \"Choice\": {\n const choices = pipe(\n Arr.map(self.alternatives, ([choice]) => choice),\n Arr.join(\", \")\n )\n return InternalSpan.text(`One of the following: ${choices}`)\n }\n case \"DateTime\": {\n return InternalSpan.text(\n \"A date without a time-zone in the ISO-8601 format, such as 2007-12-03T10:15:30.\"\n )\n }\n case \"Float\": {\n return InternalSpan.text(\"A floating point number.\")\n }\n case \"Integer\": {\n return InternalSpan.text(\"An integer.\")\n }\n case \"Path\": {\n if (self.pathType === \"either\" && self.pathExists === \"yes\") {\n return InternalSpan.text(\"An existing file or directory.\")\n }\n if (self.pathType === \"file\" && self.pathExists === \"yes\") {\n return InternalSpan.text(\"An existing file.\")\n }\n if (self.pathType === \"directory\" && self.pathExists === \"yes\") {\n return InternalSpan.text(\"An existing directory.\")\n }\n if (self.pathType === \"either\" && self.pathExists === \"no\") {\n return InternalSpan.text(\"A file or directory that must not exist.\")\n }\n if (self.pathType === \"file\" && self.pathExists === \"no\") {\n return InternalSpan.text(\"A file that must not exist.\")\n }\n if (self.pathType === \"directory\" && self.pathExists === \"no\") {\n return InternalSpan.text(\"A directory that must not exist.\")\n }\n if (self.pathType === \"either\" && self.pathExists === \"either\") {\n return InternalSpan.text(\"A file or directory.\")\n }\n if (self.pathType === \"file\" && self.pathExists === \"either\") {\n return InternalSpan.text(\"A file.\")\n }\n if (self.pathType === \"directory\" && self.pathExists === \"either\") {\n return InternalSpan.text(\"A directory.\")\n }\n throw new Error(\n \"[BUG]: Path.help - encountered invalid combination of path type \" +\n `('${self.pathType}') and path existence ('${self.pathExists}')`\n )\n }\n case \"Secret\":\n case \"Redacted\": {\n return InternalSpan.text(\"A user-defined piece of text that is confidential.\")\n }\n case \"Text\": {\n return InternalSpan.text(\"A user-defined piece of text.\")\n }\n }\n}\n\nconst getTypeNameInternal = (self: Instruction): string => {\n switch (self._tag) {\n case \"Bool\": {\n return \"boolean\"\n }\n case \"Choice\": {\n return \"choice\"\n }\n case \"DateTime\": {\n return \"date\"\n }\n case \"Float\": {\n return \"float\"\n }\n case \"Integer\": {\n return \"integer\"\n }\n case \"Path\": {\n if (self.pathType === \"either\") {\n return \"path\"\n }\n return self.pathType\n }\n case \"Redacted\": {\n return \"redacted\"\n }\n case \"Secret\": {\n return \"secret\"\n }\n case \"Text\": {\n return \"text\"\n }\n }\n}\n\nconst validateInternal = (\n self: Instruction,\n value: Option.Option<string>,\n config: CliConfig.CliConfig\n): Effect.Effect<any, string, FileSystem.FileSystem> => {\n switch (self._tag) {\n case \"Bool\": {\n return Option.map(value, (str) => InternalCliConfig.normalizeCase(config, str)).pipe(\n Option.match({\n onNone: () =>\n Effect.orElseFail(\n self.defaultValue,\n () => `Missing default value for boolean parameter`\n ),\n onSome: (value) =>\n isTrueValue(value)\n ? Effect.succeed(true)\n : isFalseValue(value)\n ? Effect.succeed(false)\n : Effect.fail(`Unable to recognize '${value}' as a valid boolean`)\n })\n )\n }\n case \"Choice\": {\n return Effect.orElseFail(\n value,\n () => `Choice options to not have a default value`\n ).pipe(\n Effect.flatMap((value) => Arr.findFirst(self.alternatives, ([choice]) => choice === value)),\n Effect.mapBoth({\n onFailure: () => {\n const choices = pipe(\n Arr.map(self.alternatives, ([choice]) => choice),\n Arr.join(\", \")\n )\n return `Expected one of the following cases: ${choices}`\n },\n onSuccess: ([, value]) => value\n })\n )\n }\n case \"DateTime\": {\n return attempt(value, getTypeNameInternal(self), Schema.decodeUnknown(Schema.Date))\n }\n case \"Float\": {\n return attempt(value, getTypeNameInternal(self), Schema.decodeUnknown(Schema.NumberFromString))\n }\n case \"Integer\": {\n const intFromString = Schema.compose(Schema.NumberFromString, Schema.Int)\n return attempt(value, getTypeNameInternal(self), Schema.decodeUnknown(intFromString))\n }\n case \"Path\": {\n return Effect.flatMap(FileSystem.FileSystem, (fileSystem) => {\n const errorMsg = \"Path options do not have a default value\"\n return Effect.orElseFail(value, () => errorMsg).pipe(\n Effect.tap((path) =>\n Effect.orDie(fileSystem.exists(path)).pipe(\n Effect.tap((pathExists) =>\n validatePathExistence(path, self.pathExists, pathExists).pipe(\n Effect.zipRight(\n validatePathType(path, self.pathType, fileSystem).pipe(\n Effect.when(() => self.pathExists !== \"no\" && pathExists)\n )\n )\n )\n )\n )\n )\n )\n })\n }\n case \"Redacted\": {\n return attempt(value, getTypeNameInternal(self), Schema.decodeUnknown(Schema.String)).pipe(\n Effect.map((value) => EffectRedacted.make(value))\n )\n }\n case \"Secret\": {\n return attempt(value, getTypeNameInternal(self), Schema.decodeUnknown(Schema.String)).pipe(\n Effect.map((value) => EffectSecret.fromString(value))\n )\n }\n case \"Text\": {\n return attempt(value, getTypeNameInternal(self), Schema.decodeUnknown(Schema.String))\n }\n }\n}\n\nconst attempt = <E, A>(\n option: Option.Option<string>,\n typeName: string,\n parse: (value: string) => Effect.Effect<A, E>\n): Effect.Effect<A, string> =>\n Effect.orElseFail(\n option,\n () => `${typeName} options do not have a default value`\n ).pipe(\n Effect.flatMap((value) =>\n Effect.orElseFail(\n parse(value),\n () => `'${value}' is not a ${typeName}`\n )\n )\n )\n\nconst validatePathExistence = (\n path: string,\n shouldPathExist: Primitive.Primitive.PathExists,\n pathExists: boolean\n): Effect.Effect<void, string> => {\n if (shouldPathExist === \"no\" && pathExists) {\n return Effect.fail(`Path '${path}' must not exist`)\n }\n if (shouldPathExist === \"yes\" && !pathExists) {\n return Effect.fail(`Path '${path}' must exist`)\n }\n return Effect.void\n}\n\nconst validatePathType = (\n path: string,\n pathType: Primitive.Primitive.PathType,\n fileSystem: FileSystem.FileSystem\n): Effect.Effect<void, string> => {\n switch (pathType) {\n case \"file\": {\n const checkIsFile = fileSystem.stat(path).pipe(\n Effect.map((info) => info.type === \"File\"),\n Effect.orDie\n )\n return Effect.fail(`Expected path '${path}' to be a regular file`).pipe(\n Effect.unlessEffect(checkIsFile),\n Effect.asVoid\n )\n }\n case \"directory\": {\n const checkIsDirectory = fileSystem.stat(path).pipe(\n Effect.map((info) => info.type === \"Directory\"),\n Effect.orDie\n )\n return Effect.fail(`Expected path '${path}' to be a directory`).pipe(\n Effect.unlessEffect(checkIsDirectory),\n Effect.asVoid\n )\n }\n case \"either\": {\n return Effect.void\n }\n }\n}\n\nconst wizardInternal = (self: Instruction, help: HelpDoc.HelpDoc): Prompt.Prompt<any> => {\n switch (self._tag) {\n case \"Bool\": {\n const primitiveHelp = InternalHelpDoc.p(\"Select true or false\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n const initial = Option.getOrElse(self.defaultValue, () => false)\n return InternalTogglePrompt.toggle({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n initial,\n active: \"true\",\n inactive: \"false\"\n }).pipe(InternalPrompt.map((bool) => `${bool}`))\n }\n case \"Choice\": {\n const primitiveHelp = InternalHelpDoc.p(\"Select one of the following choices\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalSelectPrompt.select({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n choices: Arr.map(\n self.alternatives,\n ([title]) => ({ title, value: title })\n )\n })\n }\n case \"DateTime\": {\n const primitiveHelp = InternalHelpDoc.p(\"Enter a date\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalDatePrompt.date({\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n }).pipe(InternalPrompt.map((date) => date.toISOString()))\n }\n case \"Float\": {\n const primitiveHelp = InternalHelpDoc.p(\"Enter a floating point value\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalNumberPrompt.float({\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n }).pipe(InternalPrompt.map((value) => `${value}`))\n }\n case \"Integer\": {\n const primitiveHelp = InternalHelpDoc.p(\"Enter an integer\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalNumberPrompt.integer({\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n }).pipe(InternalPrompt.map((value) => `${value}`))\n }\n case \"Path\": {\n const primitiveHelp = InternalHelpDoc.p(\"Select a file system path\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalFilePrompt.file({\n type: self.pathType,\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n })\n }\n case \"Redacted\": {\n const primitiveHelp = InternalHelpDoc.p(\"Enter some text (value will be redacted)\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalTextPrompt.hidden({\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n })\n }\n case \"Secret\": {\n const primitiveHelp = InternalHelpDoc.p(\"Enter some text (value will be redacted)\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalTextPrompt.hidden({\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n })\n }\n case \"Text\": {\n const primitiveHelp = InternalHelpDoc.p(\"Enter some text\")\n const message = InternalHelpDoc.sequence(help, primitiveHelp)\n return InternalTextPrompt.text({\n message: InternalHelpDoc.toAnsiText(message).trimEnd()\n })\n }\n }\n}\n\n// =============================================================================\n// Completion Internals\n// =============================================================================\n\n/** @internal */\nexport const getBashCompletions = (self: Instruction): string => {\n switch (self._tag) {\n case \"Bool\": {\n return \"\\\"${cur}\\\"\"\n }\n case \"DateTime\":\n case \"Float\":\n case \"Integer\":\n case \"Secret\":\n case \"Redacted\":\n case \"Text\": {\n return \"$(compgen -f \\\"${cur}\\\")\"\n }\n case \"Path\": {\n switch (self.pathType) {\n case \"file\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? \"$(compgen -f \\\"${cur}\\\")\"\n : \"\"\n }\n case \"directory\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? \"$(compgen -d \\\"${cur}\\\")\"\n : \"\"\n }\n case \"either\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? \"$(compgen -f \\\"${cur}\\\")\"\n : \"\"\n }\n }\n }\n case \"Choice\": {\n const choices = pipe(\n Arr.map(self.alternatives, ([choice]) => choice),\n Arr.join(\",\")\n )\n return `$(compgen -W \"${choices}\" -- \"\\${cur}\")`\n }\n }\n}\n\n/** @internal */\nexport const getFishCompletions = (self: Instruction): Array<string> => {\n switch (self._tag) {\n case \"Bool\": {\n return Arr.empty()\n }\n case \"DateTime\":\n case \"Float\":\n case \"Integer\":\n case \"Redacted\":\n case \"Secret\":\n case \"Text\": {\n return Arr.make(\"-r\", \"-f\")\n }\n case \"Path\": {\n switch (self.pathType) {\n case \"file\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? Arr.make(\"-r\", \"-F\")\n : Arr.make(\"-r\")\n }\n case \"directory\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? Arr.make(\n \"-r\",\n \"-f\",\n \"-a\",\n `\"(__fish_complete_directories (commandline -ct))\"`\n )\n : Arr.make(\"-r\")\n }\n case \"either\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? Arr.make(\"-r\", \"-F\")\n : Arr.make(\"-r\")\n }\n }\n }\n case \"Choice\": {\n const choices = pipe(\n Arr.map(self.alternatives, ([choice]) => `${choice}''`),\n Arr.join(\",\")\n )\n return Arr.make(\"-r\", \"-f\", \"-a\", `\"{${choices}}\"`)\n }\n }\n}\n\n/** @internal */\nexport const getZshCompletions = (self: Instruction): string => {\n switch (self._tag) {\n case \"Bool\": {\n return \"\"\n }\n case \"Choice\": {\n const choices = pipe(\n Arr.map(self.alternatives, ([name]) => name),\n Arr.join(\" \")\n )\n return `:CHOICE:(${choices})`\n }\n case \"DateTime\": {\n return \"\"\n }\n case \"Float\": {\n return \"\"\n }\n case \"Integer\": {\n return \"\"\n }\n case \"Path\": {\n switch (self.pathType) {\n case \"file\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? \":PATH:_files\"\n : \"\"\n }\n case \"directory\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? \":PATH:_files -/\"\n : \"\"\n }\n case \"either\": {\n return self.pathExists === \"yes\" || self.pathExists === \"either\"\n ? \":PATH:_files\"\n : \"\"\n }\n }\n }\n case \"Redacted\":\n case \"Secret\":\n case \"Text\": {\n return \"\"\n }\n }\n}\n","import * as Arr from \"effect/Array\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as Option from \"effect/Option\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Span from \"../HelpDoc/Span.js\"\nimport type * as Usage from \"../Usage.js\"\nimport * as InternalCliConfig from \"./cliConfig.js\"\nimport * as InternalHelpDoc from \"./helpDoc.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/** @internal */\nexport const empty: Usage.Usage = {\n _tag: \"Empty\"\n}\n\n/** @internal */\nexport const mixed: Usage.Usage = {\n _tag: \"Empty\"\n}\n\n/** @internal */\nexport const named = (\n names: ReadonlyArray<string>,\n acceptedValues: Option.Option<string>\n): Usage.Usage => ({\n _tag: \"Named\",\n names,\n acceptedValues\n})\n\n/** @internal */\nexport const optional = (self: Usage.Usage): Usage.Usage => ({\n _tag: \"Optional\",\n usage: self\n})\n\n/** @internal */\nexport const repeated = (self: Usage.Usage): Usage.Usage => ({\n _tag: \"Repeated\",\n usage: self\n})\n\nexport const alternation = dual<\n (that: Usage.Usage) => (self: Usage.Usage) => Usage.Usage,\n (self: Usage.Usage, that: Usage.Usage) => Usage.Usage\n>(2, (self, that) => ({\n _tag: \"Alternation\",\n left: self,\n right: that\n}))\n\n/** @internal */\nexport const concat = dual<\n (that: Usage.Usage) => (self: Usage.Usage) => Usage.Usage,\n (self: Usage.Usage, that: Usage.Usage) => Usage.Usage\n>(2, (self, that) => ({\n _tag: \"Concat\",\n left: self,\n right: that\n}))\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/** @internal */\nexport const getHelp = (self: Usage.Usage): HelpDoc.HelpDoc => {\n const spans = enumerate(self, InternalCliConfig.defaultConfig)\n if (Arr.isNonEmptyReadonlyArray(spans)) {\n const head = Arr.headNonEmpty(spans)\n const tail = Arr.tailNonEmpty(spans)\n if (Arr.isNonEmptyReadonlyArray(tail)) {\n return pipe(\n Arr.map(spans, (span) => InternalHelpDoc.p(span)),\n Arr.reduceRight(\n InternalHelpDoc.empty,\n (left, right) => InternalHelpDoc.sequence(left, right)\n )\n )\n }\n return InternalHelpDoc.p(head)\n }\n return InternalHelpDoc.empty\n}\n\n/** @internal */\nexport const enumerate = dual<\n (config: CliConfig.CliConfig) => (self: Usage.Usage) => Array<Span.Span>,\n (self: Usage.Usage, config: CliConfig.CliConfig) => Array<Span.Span>\n>(2, (self, config) => render(simplify(self, config), config))\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst simplify = (self: Usage.Usage, config: CliConfig.CliConfig): Usage.Usage => {\n switch (self._tag) {\n case \"Empty\": {\n return empty\n }\n case \"Mixed\": {\n return mixed\n }\n case \"Named\": {\n if (Option.isNone(Arr.head(render(self, config)))) {\n return empty\n }\n return self\n }\n case \"Optional\": {\n if (self.usage._tag === \"Empty\") {\n return empty\n }\n const usage = simplify(self.usage, config)\n // No need to do anything for empty usage\n return usage._tag === \"Empty\"\n ? empty\n // Avoid re-wrapping the usage in an optional instruction\n : usage._tag === \"Optional\"\n ? usage\n : optional(usage)\n }\n case \"Repeated\": {\n const usage = simplify(self.usage, config)\n return usage._tag === \"Empty\" ? empty : repeated(usage)\n }\n case \"Alternation\": {\n const leftUsage = simplify(self.left, config)\n const rightUsage = simplify(self.right, config)\n return leftUsage._tag === \"Empty\"\n ? rightUsage\n : rightUsage._tag === \"Empty\"\n ? leftUsage\n : alternation(leftUsage, rightUsage)\n }\n case \"Concat\": {\n const leftUsage = simplify(self.left, config)\n const rightUsage = simplify(self.right, config)\n return leftUsage._tag === \"Empty\"\n ? rightUsage\n : rightUsage._tag === \"Empty\"\n ? leftUsage\n : concat(leftUsage, rightUsage)\n }\n }\n}\n\nconst render = (self: Usage.Usage, config: CliConfig.CliConfig): Array<Span.Span> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.of(InternalSpan.text(\"\"))\n }\n case \"Mixed\": {\n return Arr.of(InternalSpan.text(\"<command>\"))\n }\n case \"Named\": {\n const typeInfo = config.showTypes\n ? Option.match(self.acceptedValues, {\n onNone: () => InternalSpan.empty,\n onSome: (s) => InternalSpan.concat(InternalSpan.space, InternalSpan.text(s))\n })\n : InternalSpan.empty\n const namesToShow = config.showAllNames\n ? self.names\n : self.names.length > 1\n ? pipe(\n Arr.filter(self.names, (name) => name.startsWith(\"--\")),\n Arr.head,\n Option.map(Arr.of),\n Option.getOrElse(() => self.names)\n )\n : self.names\n const nameInfo = InternalSpan.text(Arr.join(namesToShow, \", \"))\n return config.showAllNames && self.names.length > 1\n ? Arr.of(InternalSpan.spans([\n InternalSpan.text(\"(\"),\n nameInfo,\n typeInfo,\n InternalSpan.text(\")\")\n ]))\n : Arr.of(InternalSpan.concat(nameInfo, typeInfo))\n }\n case \"Optional\": {\n return Arr.map(render(self.usage, config), (span) =>\n InternalSpan.spans([\n InternalSpan.text(\"[\"),\n span,\n InternalSpan.text(\"]\")\n ]))\n }\n case \"Repeated\": {\n return Arr.map(\n render(self.usage, config),\n (span) => InternalSpan.concat(span, InternalSpan.text(\"...\"))\n )\n }\n case \"Alternation\": {\n if (\n self.left._tag === \"Repeated\" ||\n self.right._tag === \"Repeated\" ||\n self.left._tag === \"Concat\" ||\n self.right._tag === \"Concat\"\n ) {\n return Arr.appendAll(\n render(self.left, config),\n render(self.right, config)\n )\n }\n return Arr.flatMap(\n render(self.left, config),\n (left) =>\n Arr.map(\n render(self.right, config),\n (right) => InternalSpan.spans([left, InternalSpan.text(\"|\"), right])\n )\n )\n }\n case \"Concat\": {\n const leftSpan = render(self.left, config)\n const rightSpan = render(self.right, config)\n const separator = Arr.isNonEmptyReadonlyArray(leftSpan) &&\n Arr.isNonEmptyReadonlyArray(rightSpan)\n ? InternalSpan.space\n : InternalSpan.empty\n return Arr.flatMap(\n leftSpan,\n (left) => Arr.map(rightSpan, (right) => InternalSpan.spans([left, separator, right]))\n )\n }\n }\n}\n","import type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as ValidationError from \"../ValidationError.js\"\n\nconst ValidationErrorSymbolKey = \"@effect/cli/ValidationError\"\n\n/** @internal */\nexport const ValidationErrorTypeId: ValidationError.ValidationErrorTypeId = Symbol.for(\n ValidationErrorSymbolKey\n) as ValidationError.ValidationErrorTypeId\n\n/** @internal */\nexport const proto: ValidationError.ValidationError.Proto = {\n [ValidationErrorTypeId]: ValidationErrorTypeId\n}\n\n/** @internal */\nexport const isValidationError = (u: unknown): u is ValidationError.ValidationError =>\n typeof u === \"object\" && u != null && ValidationErrorTypeId in u\n\n/** @internal */\nexport const isCommandMismatch = (\n self: ValidationError.ValidationError\n): self is ValidationError.CommandMismatch => self._tag === \"CommandMismatch\"\n\n/** @internal */\nexport const isCorrectedFlag = (\n self: ValidationError.ValidationError\n): self is ValidationError.CorrectedFlag => self._tag === \"CorrectedFlag\"\n\n/** @internal */\nexport const isHelpRequested = (\n self: ValidationError.ValidationError\n): self is ValidationError.HelpRequested => self._tag === \"HelpRequested\"\n\n/** @internal */\nexport const isInvalidArgument = (\n self: ValidationError.ValidationError\n): self is ValidationError.InvalidArgument => self._tag === \"InvalidArgument\"\n\n/** @internal */\nexport const isInvalidValue = (\n self: ValidationError.ValidationError\n): self is ValidationError.InvalidValue => self._tag === \"InvalidValue\"\n\n/** @internal */\nexport const isMultipleValuesDetected = (\n self: ValidationError.ValidationError\n): self is ValidationError.MultipleValuesDetected => self._tag === \"MultipleValuesDetected\"\n\n/** @internal */\nexport const isMissingFlag = (\n self: ValidationError.ValidationError\n): self is ValidationError.MissingFlag => self._tag === \"MissingFlag\"\n\n/** @internal */\nexport const isMissingValue = (\n self: ValidationError.ValidationError\n): self is ValidationError.MissingValue => self._tag === \"MissingValue\"\n\n/** @internal */\nexport const isMissingSubcommand = (\n self: ValidationError.ValidationError\n): self is ValidationError.MissingSubcommand => self._tag === \"MissingSubcommand\"\n\n/** @internal */\nexport const isNoBuiltInMatch = (\n self: ValidationError.ValidationError\n): self is ValidationError.NoBuiltInMatch => self._tag === \"NoBuiltInMatch\"\n\n/** @internal */\nexport const isUnclusteredFlag = (\n self: ValidationError.ValidationError\n): self is ValidationError.UnclusteredFlag => self._tag === \"UnclusteredFlag\"\n\n/** @internal */\nexport const commandMismatch = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"CommandMismatch\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const correctedFlag = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"CorrectedFlag\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const invalidArgument = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"InvalidArgument\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const invalidValue = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"InvalidValue\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const missingFlag = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"MissingFlag\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const missingValue = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"MissingValue\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const missingSubcommand = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"MissingSubcommand\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const multipleValuesDetected = (\n error: HelpDoc.HelpDoc,\n values: ReadonlyArray<unknown>\n): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"MultipleValuesDetected\"\n op.error = error\n op.values = values\n return op\n}\n\n/** @internal */\nexport const noBuiltInMatch = (error: HelpDoc.HelpDoc): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"NoBuiltInMatch\"\n op.error = error\n return op\n}\n\n/** @internal */\nexport const unclusteredFlag = (\n error: HelpDoc.HelpDoc,\n unclustered: ReadonlyArray<string>,\n rest: ReadonlyArray<string>\n): ValidationError.ValidationError => {\n const op = Object.create(proto)\n op._tag = \"UnclusteredFlag\"\n op.error = error\n op.unclustered = unclustered\n op.rest = rest\n return op\n}\n","import type * as FileSystem from \"@effect/platform/FileSystem\"\nimport type * as Path from \"@effect/platform/Path\"\nimport type * as Terminal from \"@effect/platform/Terminal\"\nimport * as Arr from \"effect/Array\"\nimport type * as Config from \"effect/Config\"\nimport * as ConfigError from \"effect/ConfigError\"\nimport * as Console from \"effect/Console\"\nimport * as Effect from \"effect/Effect\"\nimport * as Either from \"effect/Either\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as Inspectable from \"effect/Inspectable\"\nimport * as Option from \"effect/Option\"\nimport * as ParseResult from \"effect/ParseResult\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport * as Predicate from \"effect/Predicate\"\nimport type * as Redacted from \"effect/Redacted\"\nimport * as Ref from \"effect/Ref\"\nimport type * as Schema from \"effect/Schema\"\nimport type * as Secret from \"effect/Secret\"\nimport type * as Args from \"../Args.js\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Primitive from \"../Primitive.js\"\nimport type * as Usage from \"../Usage.js\"\nimport type * as ValidationError from \"../ValidationError.js\"\nimport * as InternalFiles from \"./files.js\"\nimport * as InternalHelpDoc from \"./helpDoc.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\nimport * as InternalPrimitive from \"./primitive.js\"\nimport * as InternalNumberPrompt from \"./prompt/number.js\"\nimport * as InternalSelectPrompt from \"./prompt/select.js\"\nimport * as InternalUsage from \"./usage.js\"\nimport * as InternalValidationError from \"./validationError.js\"\n\nconst ArgsSymbolKey = \"@effect/cli/Args\"\n\n/** @internal */\nexport const ArgsTypeId: Args.ArgsTypeId = Symbol.for(\n ArgsSymbolKey\n) as Args.ArgsTypeId\n\n/** @internal */\nexport type Op<Tag extends string, Body = {}> = Args.Args<never> & Body & {\n readonly _tag: Tag\n}\n\nconst proto = {\n [ArgsTypeId]: {\n _A: (_: never) => _\n },\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\n/** @internal */\nexport type Instruction =\n | Empty\n | Single\n | Map\n | Both\n | Variadic\n | WithDefault\n | WithFallbackConfig\n\n/** @internal */\nexport interface Empty extends Op<\"Empty\", {}> {}\n\n/** @internal */\nexport interface Single extends\n Op<\"Single\", {\n readonly name: string\n readonly pseudoName: Option.Option<string>\n readonly primitiveType: Primitive.Primitive<unknown>\n readonly description: HelpDoc.HelpDoc\n }>\n{}\n\n/** @internal */\nexport interface Map extends\n Op<\"Map\", {\n readonly args: Args.Args<unknown>\n readonly f: (value: unknown) => Effect.Effect<\n unknown,\n HelpDoc.HelpDoc,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n }>\n{}\n\n/** @internal */\nexport interface Both extends\n Op<\"Both\", {\n readonly left: Args.Args<unknown>\n readonly right: Args.Args<unknown>\n }>\n{}\n\n/** @internal */\nexport interface Variadic extends\n Op<\"Variadic\", {\n readonly args: Args.Args<unknown>\n readonly min: Option.Option<number>\n readonly max: Option.Option<number>\n }>\n{}\n\n/** @internal */\nexport interface WithDefault extends\n Op<\"WithDefault\", {\n readonly args: Args.Args<unknown>\n readonly fallback: unknown\n }>\n{}\n\n/** @internal */\nexport interface WithFallbackConfig extends\n Op<\"WithFallbackConfig\", {\n readonly args: Args.Args<unknown>\n readonly config: Config.Config<unknown>\n }>\n{}\n\n// =============================================================================\n// Refinements\n// =============================================================================\n\n/** @internal */\nexport const isArgs = (u: unknown): u is Args.Args<unknown> => typeof u === \"object\" && u != null && ArgsTypeId in u\n\n/** @internal */\nexport const isInstruction = <_>(self: Args.Args<_>): self is Instruction => self as any\n\n/** @internal */\nexport const isEmpty = (self: Instruction): self is Empty => self._tag === \"Empty\"\n\n/** @internal */\nexport const isSingle = (self: Instruction): self is Single => self._tag === \"Single\"\n\n/** @internal */\nexport const isBoth = (self: Instruction): self is Both => self._tag === \"Both\"\n\n/** @internal */\nexport const isMap = (self: Instruction): self is Map => self._tag === \"Map\"\n\n/** @internal */\nexport const isVariadic = (self: Instruction): self is Variadic => self._tag === \"Variadic\"\n\n/** @internal */\nexport const isWithDefault = (self: Instruction): self is WithDefault => self._tag === \"WithDefault\"\n\n/** @internal */\nexport const isWithFallbackConfig = (self: Instruction): self is WithFallbackConfig =>\n self._tag === \"WithFallbackConfig\"\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/** @internal */\nexport const all: <\n const Arg extends Iterable<Args.Args<any>> | Record<string, Args.Args<any>>\n>(arg: Arg) => Args.All.Return<Arg> = function() {\n if (arguments.length === 1) {\n if (isArgs(arguments[0])) {\n return map(arguments[0], (x) => [x]) as any\n } else if (Arr.isArray(arguments[0])) {\n return allTupled(arguments[0] as Array<any>) as any\n } else {\n const entries = Object.entries(arguments[0] as Readonly<{ [K: string]: Args.Args<any> }>)\n let result = map(entries[0][1], (value) => ({ [entries[0][0]]: value }))\n if (entries.length === 1) {\n return result as any\n }\n const rest = entries.slice(1)\n for (const [key, options] of rest) {\n result = map(makeBoth(result, options), ([record, value]) => ({\n ...record,\n [key]: value\n }))\n }\n return result as any\n }\n }\n return allTupled(arguments[0]) as any\n}\n\n/** @internal */\nexport const boolean = (config?: Args.Args.BaseArgsConfig): Args.Args<boolean> =>\n makeSingle(Option.fromNullable(config?.name), InternalPrimitive.boolean(Option.none()))\n\n/** @internal */\nexport const choice = <A>(\n choices: ReadonlyArray<[string, A]>,\n config?: Args.Args.BaseArgsConfig\n): Args.Args<A> => makeSingle(Option.fromNullable(config?.name), InternalPrimitive.choice(choices))\n\n/** @internal */\nexport const date = (config?: Args.Args.BaseArgsConfig): Args.Args<globalThis.Date> =>\n makeSingle(Option.fromNullable(config?.name), InternalPrimitive.date)\n\n/** @internal */\nexport const directory = (config?: Args.Args.PathArgsConfig): Args.Args<string> =>\n makeSingle(\n Option.fromNullable(config?.name),\n InternalPrimitive.path(\"directory\", config?.exists || \"either\")\n )\n\n/** @internal */\nexport const file = (config?: Args.Args.PathArgsConfig): Args.Args<string> =>\n makeSingle(\n Option.fromNullable(config?.name),\n InternalPrimitive.path(\"file\", config?.exists || \"either\")\n )\n\n/** @internal */\nexport const fileContent = (\n config?: Args.Args.BaseArgsConfig\n): Args.Args<readonly [path: string, content: Uint8Array]> =>\n mapEffect(\n file({ ...config, exists: \"yes\" }),\n (path) => Effect.mapError(InternalFiles.read(path), (e) => InternalHelpDoc.p(e))\n )\n\n/** @internal */\nexport const fileParse = (\n config?: Args.Args.FormatArgsConfig\n): Args.Args<unknown> =>\n mapEffect(fileText(config), ([path, content]) =>\n Effect.mapError(\n InternalFiles.parse(path, content, config?.format),\n (e) => InternalHelpDoc.p(e)\n ))\n\n/** @internal */\nexport const fileSchema = <I, A>(\n schema: Schema.Schema<A, I, FileSystem.FileSystem | Path.Path | Terminal.Terminal>,\n config?: Args.Args.FormatArgsConfig\n): Args.Args<A> => withSchema(fileParse(config), schema)\n\n/** @internal */\nexport const fileText = (\n config?: Args.Args.BaseArgsConfig\n): Args.Args<readonly [path: string, content: string]> =>\n mapEffect(file({ ...config, exists: \"yes\" }), (path) =>\n Effect.mapError(\n InternalFiles.readString(path),\n (e) => InternalHelpDoc.p(e)\n ))\n\n/** @internal */\nexport const float = (config?: Args.Args.BaseArgsConfig): Args.Args<number> =>\n makeSingle(Option.fromNullable(config?.name), InternalPrimitive.float)\n\n/** @internal */\nexport const integer = (config?: Args.Args.BaseArgsConfig): Args.Args<number> =>\n makeSingle(Option.fromNullable(config?.name), InternalPrimitive.integer)\n\n/** @internal */\nexport const none: Args.Args<void> = (() => {\n const op = Object.create(proto)\n op._tag = \"Empty\"\n return op\n})()\n\n/** @internal */\nexport const path = (config?: Args.Args.PathArgsConfig): Args.Args<string> =>\n makeSingle(\n Option.fromNullable(config?.name),\n InternalPrimitive.path(\"either\", config?.exists || \"either\")\n )\n\n/** @internal */\nexport const redacted = (\n config?: Args.Args.BaseArgsConfig\n): Args.Args<Redacted.Redacted> => makeSingle(Option.fromNullable(config?.name), InternalPrimitive.redacted)\n\n/** @internal */\nexport const secret = (\n config?: Args.Args.BaseArgsConfig\n): Args.Args<Secret.Secret> => makeSingle(Option.fromNullable(config?.name), InternalPrimitive.secret)\n\n/** @internal */\nexport const text = (config?: Args.Args.BaseArgsConfig): Args.Args<string> =>\n makeSingle(Option.fromNullable(config?.name), InternalPrimitive.text)\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/** @internal */\nexport const atLeast = dual<\n {\n (times: 0): <A>(self: Args.Args<A>) => Args.Args<Array<A>>\n (times: number): <A>(self: Args.Args<A>) => Args.Args<Arr.NonEmptyArray<A>>\n },\n {\n <A>(self: Args.Args<A>, times: 0): Args.Args<Array<A>>\n <A>(self: Args.Args<A>, times: number): Args.Args<Arr.NonEmptyArray<A>>\n }\n>(2, (self, times) => makeVariadic(self, Option.some(times), Option.none()) as any)\n\n/** @internal */\nexport const atMost = dual<\n (times: number) => <A>(self: Args.Args<A>) => Args.Args<Array<A>>,\n <A>(self: Args.Args<A>, times: number) => Args.Args<Array<A>>\n>(2, (self, times) => makeVariadic(self, Option.none(), Option.some(times)))\n\n/** @internal */\nexport const between = dual<\n {\n (min: 0, max: number): <A>(self: Args.Args<A>) => Args.Args<Array<A>>\n (\n min: number,\n max: number\n ): <A>(self: Args.Args<A>) => Args.Args<Arr.NonEmptyArray<A>>\n },\n {\n <A>(self: Args.Args<A>, min: 0, max: number): Args.Args<Array<A>>\n <A>(\n self: Args.Args<A>,\n min: number,\n max: number\n ): Args.Args<Arr.NonEmptyArray<A>>\n }\n>(3, (self, min, max) => makeVariadic(self, Option.some(min), Option.some(max)) as any)\n\n/** @internal */\nexport const getHelp = <A>(self: Args.Args<A>): HelpDoc.HelpDoc => getHelpInternal(self as Instruction)\n\n/** @internal */\nexport const getIdentifier = <A>(self: Args.Args<A>): Option.Option<string> =>\n getIdentifierInternal(self as Instruction)\n\n/** @internal */\nexport const getMinSize = <A>(self: Args.Args<A>): number => getMinSizeInternal(self as Instruction)\n\n/** @internal */\nexport const getMaxSize = <A>(self: Args.Args<A>): number => getMaxSizeInternal(self as Instruction)\n\n/** @internal */\nexport const getUsage = <A>(self: Args.Args<A>): Usage.Usage => getUsageInternal(self as Instruction)\n\n/** @internal */\nexport const map = dual<\n <A, B>(f: (a: A) => B) => (self: Args.Args<A>) => Args.Args<B>,\n <A, B>(self: Args.Args<A>, f: (a: A) => B) => Args.Args<B>\n>(2, (self, f) => mapEffect(self, (a) => Effect.succeed(f(a))))\n\n/** @internal */\nexport const mapEffect = dual<\n <A, B>(\n f: (a: A) => Effect.Effect<B, HelpDoc.HelpDoc, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => (self: Args.Args<A>) => Args.Args<B>,\n <A, B>(\n self: Args.Args<A>,\n f: (a: A) => Effect.Effect<B, HelpDoc.HelpDoc, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => Args.Args<B>\n>(2, (self, f) => makeMap(self, f))\n\n/** @internal */\nexport const mapTryCatch = dual<\n <A, B>(\n f: (a: A) => B,\n onError: (e: unknown) => HelpDoc.HelpDoc\n ) => (self: Args.Args<A>) => Args.Args<B>,\n <A, B>(\n self: Args.Args<A>,\n f: (a: A) => B,\n onError: (e: unknown) => HelpDoc.HelpDoc\n ) => Args.Args<B>\n>(3, (self, f, onError) =>\n mapEffect(self, (a) => {\n try {\n return Either.right(f(a))\n } catch (e) {\n return Either.left(onError(e))\n }\n }))\n\n/** @internal */\nexport const optional = <A>(self: Args.Args<A>): Args.Args<Option.Option<A>> =>\n makeWithDefault(map(self, Option.some), Option.none())\n\n/** @internal */\nexport const repeated = <A>(self: Args.Args<A>): Args.Args<Array<A>> => makeVariadic(self, Option.none(), Option.none())\n\n/** @internal */\nexport const validate = dual<\n (\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => <A>(self: Args.Args<A>) => Effect.Effect<\n [Array<string>, A],\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <A>(\n self: Args.Args<A>,\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<\n [Array<string>, A],\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(3, (self, args, config) => validateInternal(self as Instruction, args, config))\n\n/** @internal */\nexport const withDefault = dual<\n <const B>(fallback: B) => <A>(self: Args.Args<A>) => Args.Args<A | B>,\n <A, const B>(self: Args.Args<A>, fallback: B) => Args.Args<A | B>\n>(2, (self, fallback) => makeWithDefault(self, fallback))\n\n/** @internal */\nexport const withFallbackConfig: {\n <B>(config: Config.Config<B>): <A>(self: Args.Args<A>) => Args.Args<B | A>\n <A, B>(self: Args.Args<A>, config: Config.Config<B>): Args.Args<A | B>\n} = dual<\n <B>(config: Config.Config<B>) => <A>(self: Args.Args<A>) => Args.Args<A | B>,\n <A, B>(self: Args.Args<A>, config: Config.Config<B>) => Args.Args<A | B>\n>(2, (self, config) => {\n if (isInstruction(self) && isWithDefault(self)) {\n return makeWithDefault(\n withFallbackConfig(self.args, config),\n self.fallback as any\n )\n }\n return makeWithFallbackConfig(self, config)\n})\n\n/** @internal */\nexport const withSchema = dual<\n <A, I extends A, B>(\n schema: Schema.Schema<B, I, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => (self: Args.Args<A>) => Args.Args<B>,\n <A, I extends A, B>(\n self: Args.Args<A>,\n schema: Schema.Schema<B, I, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => Args.Args<B>\n>(2, (self, schema) => {\n const decode = ParseResult.decode(schema)\n return mapEffect(self, (_) =>\n Effect.mapError(\n decode(_ as any),\n (issue) => InternalHelpDoc.p(ParseResult.TreeFormatter.formatIssueSync(issue))\n ))\n})\n\n/** @internal */\nexport const withDescription = dual<\n (description: string) => <A>(self: Args.Args<A>) => Args.Args<A>,\n <A>(self: Args.Args<A>, description: string) => Args.Args<A>\n>(2, (self, description) => withDescriptionInternal(self as Instruction, description))\n\n/** @internal */\nexport const wizard = dual<\n (config: CliConfig.CliConfig) => <A>(self: Args.Args<A>) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <A>(self: Args.Args<A>, config: CliConfig.CliConfig) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(2, (self, config) => wizardInternal(self as Instruction, config))\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst allTupled = <const T extends ArrayLike<Args.Args<any>>>(arg: T): Args.Args<\n {\n [K in keyof T]: [T[K]] extends [Args.Args<infer A>] ? A : never\n }\n> => {\n if (arg.length === 0) {\n return none as any\n }\n if (arg.length === 1) {\n return map(arg[0], (x) => [x]) as any\n }\n let result = map(arg[0], (x) => [x])\n for (let i = 1; i < arg.length; i++) {\n const curr = arg[i]\n result = map(makeBoth(result, curr), ([a, b]) => [...a, b])\n }\n return result as any\n}\n\nconst getHelpInternal = (self: Instruction): HelpDoc.HelpDoc => {\n switch (self._tag) {\n case \"Empty\": {\n return InternalHelpDoc.empty\n }\n case \"Single\": {\n return InternalHelpDoc.descriptionList([[\n InternalSpan.weak(self.name),\n InternalHelpDoc.sequence(\n InternalHelpDoc.p(InternalPrimitive.getHelp(self.primitiveType)),\n self.description\n )\n ]])\n }\n case \"Map\": {\n return getHelpInternal(self.args as Instruction)\n }\n case \"Both\": {\n return InternalHelpDoc.sequence(\n getHelpInternal(self.left as Instruction),\n getHelpInternal(self.right as Instruction)\n )\n }\n case \"Variadic\": {\n const help = getHelpInternal(self.args as Instruction)\n return InternalHelpDoc.mapDescriptionList(help, (oldSpan, oldBlock) => {\n const min = getMinSizeInternal(self as Instruction)\n const max = getMaxSizeInternal(self as Instruction)\n const newSpan = InternalSpan.text(\n Option.isSome(self.max) ? ` ${min} - ${max}` : min === 0 ? \"...\" : ` ${min}+`\n )\n const newBlock = InternalHelpDoc.p(\n Option.isSome(self.max)\n ? `This argument must be repeated at least ${min} times and may be repeated up to ${max} times.`\n : min === 0\n ? \"This argument may be repeated zero or more times.\"\n : `This argument must be repeated at least ${min} times.`\n )\n return [InternalSpan.concat(oldSpan, newSpan), InternalHelpDoc.sequence(oldBlock, newBlock)]\n })\n }\n case \"WithDefault\": {\n return InternalHelpDoc.mapDescriptionList(\n getHelpInternal(self.args as Instruction),\n (span, block) => {\n const optionalDescription = Option.isOption(self.fallback)\n ? Option.match(self.fallback, {\n onNone: () => InternalHelpDoc.p(\"This setting is optional.\"),\n onSome: (fallbackValue) => {\n const inspectableValue = Predicate.isObject(fallbackValue) ? fallbackValue : String(fallbackValue)\n const displayValue = Inspectable.toStringUnknown(inspectableValue, 0)\n return InternalHelpDoc.p(`This setting is optional. Defaults to: ${displayValue}`)\n }\n })\n : InternalHelpDoc.p(\"This setting is optional.\")\n return [span, InternalHelpDoc.sequence(block, optionalDescription)]\n }\n )\n }\n case \"WithFallbackConfig\": {\n return InternalHelpDoc.mapDescriptionList(\n getHelpInternal(self.args as Instruction),\n (span, block) => [\n span,\n InternalHelpDoc.sequence(\n block,\n InternalHelpDoc.p(\n \"This argument can be set from environment variables.\"\n )\n )\n ]\n )\n }\n }\n}\n\nconst getIdentifierInternal = (self: Instruction): Option.Option<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Option.none()\n }\n case \"Single\": {\n return Option.some(self.name)\n }\n case \"Map\":\n case \"Variadic\":\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return getIdentifierInternal(self.args as Instruction)\n }\n case \"Both\": {\n const ids = Arr.getSomes([\n getIdentifierInternal(self.left as Instruction),\n getIdentifierInternal(self.right as Instruction)\n ])\n return Arr.match(ids, {\n onEmpty: () => Option.none(),\n onNonEmpty: (ids) => Option.some(Arr.join(ids, \", \"))\n })\n }\n }\n}\n\nconst getMinSizeInternal = (self: Instruction): number => {\n switch (self._tag) {\n case \"Empty\":\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return 0\n }\n case \"Single\": {\n return 1\n }\n case \"Map\": {\n return getMinSizeInternal(self.args as Instruction)\n }\n case \"Both\": {\n const leftMinSize = getMinSizeInternal(self.left as Instruction)\n const rightMinSize = getMinSizeInternal(self.right as Instruction)\n return leftMinSize + rightMinSize\n }\n case \"Variadic\": {\n const argsMinSize = getMinSizeInternal(self.args as Instruction)\n return Math.floor(Option.getOrElse(self.min, () => 0) * argsMinSize)\n }\n }\n}\n\nconst getMaxSizeInternal = (self: Instruction): number => {\n switch (self._tag) {\n case \"Empty\": {\n return 0\n }\n case \"Single\": {\n return 1\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return getMaxSizeInternal(self.args as Instruction)\n }\n case \"Both\": {\n const leftMaxSize = getMaxSizeInternal(self.left as Instruction)\n const rightMaxSize = getMaxSizeInternal(self.right as Instruction)\n return leftMaxSize + rightMaxSize\n }\n case \"Variadic\": {\n const argsMaxSize = getMaxSizeInternal(self.args as Instruction)\n return Math.floor(Option.getOrElse(self.max, () => Number.MAX_SAFE_INTEGER / 2) * argsMaxSize)\n }\n }\n}\n\nconst getUsageInternal = (self: Instruction): Usage.Usage => {\n switch (self._tag) {\n case \"Empty\": {\n return InternalUsage.empty\n }\n case \"Single\": {\n return InternalUsage.named(\n Arr.of(self.name),\n InternalPrimitive.getChoices(self.primitiveType)\n )\n }\n case \"Map\": {\n return getUsageInternal(self.args as Instruction)\n }\n case \"Both\": {\n return InternalUsage.concat(\n getUsageInternal(self.left as Instruction),\n getUsageInternal(self.right as Instruction)\n )\n }\n case \"Variadic\": {\n return InternalUsage.repeated(getUsageInternal(self.args as Instruction))\n }\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return InternalUsage.optional(getUsageInternal(self.args as Instruction))\n }\n }\n}\n\nconst makeSingle = <A>(\n pseudoName: Option.Option<string>,\n primitiveType: Primitive.Primitive<A>,\n description: HelpDoc.HelpDoc = InternalHelpDoc.empty\n): Args.Args<A> => {\n const op = Object.create(proto)\n op._tag = \"Single\"\n op.name = `<${Option.getOrElse(pseudoName, () => InternalPrimitive.getTypeName(primitiveType))}>`\n op.pseudoName = pseudoName\n op.primitiveType = primitiveType\n op.description = description\n return op\n}\n\nconst makeMap = <A, B>(\n self: Args.Args<A>,\n f: (value: A) => Effect.Effect<B, HelpDoc.HelpDoc, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n): Args.Args<B> => {\n const op = Object.create(proto)\n op._tag = \"Map\"\n op.args = self\n op.f = f\n return op\n}\n\nconst makeBoth = <A, B>(left: Args.Args<A>, right: Args.Args<B>): Args.Args<[A, B]> => {\n const op = Object.create(proto)\n op._tag = \"Both\"\n op.left = left\n op.right = right\n return op\n}\n\nconst makeWithDefault = <A, const B>(\n self: Args.Args<A>,\n fallback: B\n): Args.Args<A | B> => {\n const op = Object.create(proto)\n op._tag = \"WithDefault\"\n op.args = self\n op.fallback = fallback\n return op\n}\n\nconst makeWithFallbackConfig = <A, B>(\n args: Args.Args<A>,\n config: Config.Config<B>\n): Args.Args<A | B> => {\n const op = Object.create(proto)\n op._tag = \"WithFallbackConfig\"\n op.args = args\n op.config = config\n return op\n}\n\nconst makeVariadic = <A>(\n args: Args.Args<A>,\n min: Option.Option<number>,\n max: Option.Option<number>\n): Args.Args<Array<A>> => {\n const op = Object.create(proto)\n op._tag = \"Variadic\"\n op.args = args\n op.min = min\n op.max = max\n return op\n}\n\nconst validateInternal = (\n self: Instruction,\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n [Array<string>, any],\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n> => {\n switch (self._tag) {\n case \"Empty\": {\n return Effect.succeed([args as Array<string>, undefined])\n }\n case \"Single\": {\n return Effect.suspend(() => {\n return Arr.matchLeft(args, {\n onEmpty: () => {\n const choices = InternalPrimitive.getChoices(self.primitiveType)\n if (Option.isSome(self.pseudoName) && Option.isSome(choices)) {\n return Effect.fail(InternalValidationError.missingValue(InternalHelpDoc.p(\n `Missing argument <${self.pseudoName.value}> with choices ${choices.value}`\n )))\n }\n if (Option.isSome(self.pseudoName)) {\n return Effect.fail(InternalValidationError.missingValue(InternalHelpDoc.p(\n `Missing argument <${self.pseudoName.value}>`\n )))\n }\n if (Option.isSome(choices)) {\n return Effect.fail(InternalValidationError.missingValue(InternalHelpDoc.p(\n `Missing argument ${InternalPrimitive.getTypeName(self.primitiveType)} with choices ${choices.value}`\n )))\n }\n return Effect.fail(InternalValidationError.missingValue(InternalHelpDoc.p(\n `Missing argument ${InternalPrimitive.getTypeName(self.primitiveType)}`\n )))\n },\n onNonEmpty: (head, tail) =>\n InternalPrimitive.validate(self.primitiveType, Option.some(head), config).pipe(\n Effect.mapBoth({\n onFailure: (text) => InternalValidationError.invalidArgument(InternalHelpDoc.p(text)),\n onSuccess: (a) => [tail, a]\n })\n )\n })\n })\n }\n case \"Map\": {\n return validateInternal(self.args as Instruction, args, config).pipe(\n Effect.flatMap(([leftover, a]) =>\n Effect.matchEffect(self.f(a), {\n onFailure: (doc) => Effect.fail(InternalValidationError.invalidArgument(doc)),\n onSuccess: (b) => Effect.succeed([leftover, b])\n })\n )\n )\n }\n case \"Both\": {\n return validateInternal(self.left as Instruction, args, config).pipe(\n Effect.flatMap(([args, a]) =>\n validateInternal(self.right as Instruction, args, config).pipe(\n Effect.map(([args, b]) => [args, [a, b]])\n )\n )\n )\n }\n case \"Variadic\": {\n const min1 = Option.getOrElse(self.min, () => 0)\n const max1 = Option.getOrElse(self.max, () => Number.MAX_SAFE_INTEGER)\n const loop = (\n args: ReadonlyArray<string>,\n acc: ReadonlyArray<any>\n ): Effect.Effect<\n [ReadonlyArray<string>, ReadonlyArray<any>],\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n > => {\n if (acc.length >= max1) {\n return Effect.succeed([args, acc])\n }\n return validateInternal(self.args as Instruction, args, config).pipe(Effect.matchEffect({\n onFailure: (failure) =>\n acc.length >= min1 && Arr.isEmptyReadonlyArray(args)\n ? Effect.succeed([args, acc])\n : Effect.fail(failure),\n onSuccess: ([args, a]) => loop(args, Arr.append(acc, a))\n }))\n }\n return loop(args, Arr.empty()).pipe(\n Effect.map(([args, acc]) => [args as Array<string>, acc])\n )\n }\n case \"WithDefault\": {\n return validateInternal(self.args as Instruction, args, config).pipe(\n Effect.catchTag(\"MissingValue\", () =>\n Effect.succeed<[Array<string>, any]>([\n args as Array<string>,\n self.fallback\n ]))\n )\n }\n case \"WithFallbackConfig\": {\n return validateInternal(self.args as Instruction, args, config).pipe(\n Effect.catchTag(\"MissingValue\", (e) =>\n Effect.map(\n Effect.catchAll(self.config, (e2) => {\n if (ConfigError.isMissingDataOnly(e2)) {\n const help = InternalHelpDoc.p(String(e2))\n const error = InternalValidationError.invalidValue(help)\n return Effect.fail(error)\n }\n return Effect.fail(e)\n }),\n (value) => [args, value] as [Array<string>, any]\n ))\n )\n }\n }\n}\n\nconst withDescriptionInternal = (self: Instruction, description: string): Args.Args<any> => {\n switch (self._tag) {\n case \"Empty\": {\n return none\n }\n case \"Single\": {\n const desc = InternalHelpDoc.sequence(self.description, InternalHelpDoc.p(description))\n return makeSingle(self.pseudoName, self.primitiveType, desc)\n }\n case \"Map\": {\n return makeMap(withDescriptionInternal(self.args as Instruction, description), self.f)\n }\n case \"Both\": {\n return makeBoth(\n withDescriptionInternal(self.left as Instruction, description),\n withDescriptionInternal(self.right as Instruction, description)\n )\n }\n case \"Variadic\": {\n return makeVariadic(\n withDescriptionInternal(self.args as Instruction, description),\n self.min,\n self.max\n )\n }\n case \"WithDefault\": {\n return makeWithDefault(\n withDescriptionInternal(self.args as Instruction, description),\n self.fallback\n )\n }\n case \"WithFallbackConfig\": {\n return makeWithFallbackConfig(\n withDescriptionInternal(self.args as Instruction, description),\n self.config\n )\n }\n }\n}\n\nconst wizardInternal = (self: Instruction, config: CliConfig.CliConfig): Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n> => {\n switch (self._tag) {\n case \"Empty\": {\n return Effect.succeed(Arr.empty())\n }\n case \"Single\": {\n const help = getHelpInternal(self)\n return InternalPrimitive.wizard(self.primitiveType, help).pipe(\n Effect.zipLeft(Console.log()),\n Effect.flatMap((input) => {\n const args = Arr.of(input as string)\n return validateInternal(self, args, config).pipe(Effect.as(args))\n })\n )\n }\n case \"Map\": {\n return wizardInternal(self.args as Instruction, config).pipe(\n Effect.tap((args) => validateInternal(self.args as Instruction, args, config))\n )\n }\n case \"Both\": {\n return Effect.zipWith(\n wizardInternal(self.left as Instruction, config),\n wizardInternal(self.right as Instruction, config),\n (left, right) => Arr.appendAll(left, right)\n ).pipe(Effect.tap((args) => validateInternal(self, args, config)))\n }\n case \"Variadic\": {\n const repeatHelp = InternalHelpDoc.p(\n \"How many times should this argument should be repeated?\"\n )\n const message = pipe(\n getHelpInternal(self),\n InternalHelpDoc.sequence(repeatHelp)\n )\n return InternalNumberPrompt.integer({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n min: getMinSizeInternal(self),\n max: getMaxSizeInternal(self)\n }).pipe(\n Effect.zipLeft(Console.log()),\n Effect.flatMap((n) =>\n n <= 0\n ? Effect.succeed(Arr.empty<string>())\n : Ref.make(Arr.empty<string>()).pipe(\n Effect.flatMap((ref) =>\n wizardInternal(self.args as Instruction, config).pipe(\n Effect.flatMap((args) => Ref.update(ref, Arr.appendAll(args))),\n Effect.repeatN(n - 1),\n Effect.zipRight(Ref.get(ref)),\n Effect.tap((args) => validateInternal(self, args, config))\n )\n )\n )\n )\n )\n }\n case \"WithDefault\": {\n const defaultHelp = InternalHelpDoc.p(`This argument is optional - use the default?`)\n const message = pipe(\n getHelpInternal(self.args as Instruction),\n InternalHelpDoc.sequence(defaultHelp)\n )\n return InternalSelectPrompt.select({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n choices: [\n { title: `Default ['${JSON.stringify(self.fallback)}']`, value: true },\n { title: \"Custom\", value: false }\n ]\n }).pipe(\n Effect.zipLeft(Console.log()),\n Effect.flatMap((useFallback) =>\n useFallback\n ? Effect.succeed(Arr.empty())\n : wizardInternal(self.args as Instruction, config)\n )\n )\n }\n case \"WithFallbackConfig\": {\n const defaultHelp = InternalHelpDoc.p(`Try load this option from the environment?`)\n const message = pipe(\n getHelpInternal(self.args as Instruction),\n InternalHelpDoc.sequence(defaultHelp)\n )\n return InternalSelectPrompt.select({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n choices: [\n { title: `Use environment variables`, value: true },\n { title: \"Custom\", value: false }\n ]\n }).pipe(\n Effect.zipLeft(Console.log()),\n Effect.flatMap((useFallback) =>\n useFallback\n ? Effect.succeed(Arr.empty())\n : wizardInternal(self.args as Instruction, config)\n )\n )\n }\n }\n}\n\n// =============================================================================\n// Completion Internals\n// =============================================================================\n\nconst getShortDescription = (self: Instruction): string => {\n switch (self._tag) {\n case \"Empty\":\n case \"Both\": {\n return \"\"\n }\n case \"Single\": {\n return InternalSpan.getText(InternalHelpDoc.getSpan(self.description))\n }\n case \"Map\":\n case \"Variadic\":\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return getShortDescription(self.args as Instruction)\n }\n }\n}\n\n/** @internal */\nexport const getFishCompletions = (self: Instruction): Array<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\": {\n const description = getShortDescription(self)\n return pipe(\n InternalPrimitive.getFishCompletions(\n self.primitiveType as InternalPrimitive.Instruction\n ),\n Arr.appendAll(\n description.length === 0\n ? Arr.empty()\n : Arr.of(`-d '${description}'`)\n ),\n Arr.join(\" \"),\n Arr.of\n )\n }\n case \"Both\": {\n return pipe(\n getFishCompletions(self.left as Instruction),\n Arr.appendAll(getFishCompletions(self.right as Instruction))\n )\n }\n case \"Map\":\n case \"Variadic\":\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return getFishCompletions(self.args as Instruction)\n }\n }\n}\n\ninterface ZshCompletionState {\n readonly multiple: boolean\n readonly optional: boolean\n}\n\nexport const getZshCompletions = (\n self: Instruction,\n state: ZshCompletionState = { multiple: false, optional: false }\n): Array<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\": {\n const multiple = state.multiple ? \"*\" : \"\"\n const optional = state.optional ? \"::\" : \":\"\n const shortDescription = getShortDescription(self)\n const description = shortDescription.length > 0 ? ` -- ${shortDescription}` : \"\"\n const possibleValues = InternalPrimitive.getZshCompletions(\n self.primitiveType as InternalPrimitive.Instruction\n )\n return possibleValues.length === 0\n ? Arr.empty()\n : Arr.of(`${multiple}${optional}${self.name}${description}${possibleValues}`)\n }\n case \"Map\": {\n return getZshCompletions(self.args as Instruction, state)\n }\n case \"Both\": {\n const left = getZshCompletions(self.left as Instruction, state)\n const right = getZshCompletions(self.right as Instruction, state)\n return Arr.appendAll(left, right)\n }\n case \"Variadic\": {\n return Option.isSome(self.max) && self.max.value > 1\n ? getZshCompletions(self.args as Instruction, { ...state, multiple: true })\n : getZshCompletions(self.args as Instruction, state)\n }\n case \"WithDefault\":\n case \"WithFallbackConfig\": {\n return getZshCompletions(self.args as Instruction, { ...state, optional: true })\n }\n }\n}\n","import type * as CliConfig from \"../CliConfig.js\"\nimport * as cliConfig from \"./cliConfig.js\"\n\n/** @internal */\nexport const levensteinDistance = (\n first: string,\n second: string,\n config: CliConfig.CliConfig\n): number => {\n if (first.length === 0 && second.length === 0) {\n return 0\n }\n if (first.length === 0) {\n return second.length\n }\n if (second.length === 0) {\n return first.length\n }\n const rowCount = first.length\n const columnCount = second.length\n const matrix = new Array<Array<number>>(rowCount)\n const normalFirst = cliConfig.normalizeCase(config, first)\n const normalSecond = cliConfig.normalizeCase(config, second)\n // Increment each row in the first column\n for (let x = 0; x <= rowCount; x++) {\n matrix[x] = new Array<number>(columnCount)\n matrix[x][0] = x\n }\n // Increment each column in the first row\n for (let y = 0; y <= columnCount; y++) {\n matrix[0][y] = y\n }\n // Fill in the rest of the matrix\n for (let row = 1; row <= rowCount; row++) {\n for (let col = 1; col <= columnCount; col++) {\n const cost = normalFirst.charAt(row - 1) === normalSecond.charAt(col - 1) ? 0 : 1\n matrix[row][col] = Math.min(\n matrix[row][col - 1] + 1,\n Math.min(matrix[row - 1][col] + 1, matrix[row - 1][col - 1] + cost)\n )\n }\n }\n return matrix[rowCount][columnCount]\n}\n","import type * as Prompt from \"../../Prompt.js\"\nimport * as InternalPrompt from \"../prompt.js\"\nimport * as InternalTextPrompt from \"./text.js\"\n\n/** @internal */\nexport const list = (options: Prompt.Prompt.ListOptions): Prompt.Prompt<Array<string>> =>\n InternalTextPrompt.text(options).pipe(\n InternalPrompt.map((output) => output.split(options.delimiter || \",\"))\n )\n","import type * as FileSystem from \"@effect/platform/FileSystem\"\nimport type * as Path from \"@effect/platform/Path\"\nimport type * as Terminal from \"@effect/platform/Terminal\"\nimport * as Arr from \"effect/Array\"\nimport * as Config from \"effect/Config\"\nimport * as ConfigError from \"effect/ConfigError\"\nimport * as Console from \"effect/Console\"\nimport * as Effect from \"effect/Effect\"\nimport * as Either from \"effect/Either\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as HashMap from \"effect/HashMap\"\nimport * as Inspectable from \"effect/Inspectable\"\nimport * as Option from \"effect/Option\"\nimport * as Order from \"effect/Order\"\nimport * as ParseResult from \"effect/ParseResult\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport * as Predicate from \"effect/Predicate\"\nimport type * as Redacted from \"effect/Redacted\"\nimport * as Ref from \"effect/Ref\"\nimport type * as Schema from \"effect/Schema\"\nimport type * as Secret from \"effect/Secret\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Options from \"../Options.js\"\nimport type * as Primitive from \"../Primitive.js\"\nimport type * as Prompt from \"../Prompt.js\"\nimport type * as Usage from \"../Usage.js\"\nimport type * as ValidationError from \"../ValidationError.js\"\nimport * as InternalAutoCorrect from \"./autoCorrect.js\"\nimport * as InternalCliConfig from \"./cliConfig.js\"\nimport * as InternalFiles from \"./files.js\"\nimport * as InternalHelpDoc from \"./helpDoc.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\nimport * as InternalPrimitive from \"./primitive.js\"\nimport * as InternalPrompt from \"./prompt.js\"\nimport * as InternalListPrompt from \"./prompt/list.js\"\nimport * as InternalNumberPrompt from \"./prompt/number.js\"\nimport * as InternalSelectPrompt from \"./prompt/select.js\"\nimport * as InternalUsage from \"./usage.js\"\nimport * as InternalValidationError from \"./validationError.js\"\n\nconst OptionsSymbolKey = \"@effect/cli/Options\"\n\n/** @internal */\nexport const OptionsTypeId: Options.OptionsTypeId = Symbol.for(\n OptionsSymbolKey\n) as Options.OptionsTypeId\n\n/** @internal */\nexport type Op<Tag extends string, Body = {}> = Options.Options<never> & Body & {\n readonly _tag: Tag\n}\n\nconst proto = {\n [OptionsTypeId]: {\n _A: (_: never) => _\n },\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\n/** @internal */\nexport type Instruction =\n | Empty\n | Single\n | KeyValueMap\n | Map\n | Both\n | OrElse\n | WithFallback\n | Variadic\n | WithDefault\n\n/** @internal */\nexport type ParseableInstruction = Single | KeyValueMap | Variadic\n\n/** @internal */\nexport interface Empty extends Op<\"Empty\", {}> {}\n\n/** @internal */\nexport interface Single extends\n Op<\"Single\", {\n readonly name: string\n readonly fullName: string\n readonly placeholder: string\n readonly aliases: ReadonlyArray<string>\n readonly primitiveType: Primitive.Primitive<unknown>\n readonly description: HelpDoc.HelpDoc\n readonly pseudoName: Option.Option<string>\n }>\n{}\n\n/** @internal */\nexport interface KeyValueMap extends\n Op<\"KeyValueMap\", {\n readonly argumentOption: Single\n }>\n{}\n\n/** @internal */\nexport interface Map extends\n Op<\"Map\", {\n readonly options: Options.Options<unknown>\n readonly f: (a: unknown) => Effect.Effect<\n unknown,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n }>\n{}\n\n/** @internal */\nexport interface Both extends\n Op<\"Both\", {\n readonly left: Options.Options<unknown>\n readonly right: Options.Options<unknown>\n }>\n{}\n\n/** @internal */\nexport interface OrElse extends\n Op<\"OrElse\", {\n readonly left: Options.Options<unknown>\n readonly right: Options.Options<unknown>\n }>\n{}\n\n/** @internal */\nexport interface WithFallback extends\n Op<\"WithFallback\", {\n readonly options: Options.Options<unknown>\n readonly effect: Effect.Effect<\n unknown,\n unknown,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n }>\n{}\n\n/** @internal */\nexport interface Variadic extends\n Op<\"Variadic\", {\n readonly argumentOption: Single\n readonly min: Option.Option<number>\n readonly max: Option.Option<number>\n }>\n{}\n\n/** @internal */\nexport interface WithDefault extends\n Op<\"WithDefault\", {\n readonly options: Options.Options<unknown>\n readonly fallback: unknown\n }>\n{}\n\n// =============================================================================\n// Refinements\n// =============================================================================\n\n/** @internal */\nexport const isOptions = (u: unknown): u is Options.Options<unknown> =>\n typeof u === \"object\" && u != null && OptionsTypeId in u\n\n/** @internal */\nexport const isInstruction = <_>(self: Options.Options<_>): self is Instruction => self as any\n\n/** @internal */\nexport const isEmpty = (self: Instruction): self is Empty => self._tag === \"Empty\"\n\n/** @internal */\nexport const isSingle = (self: Instruction): self is Single => self._tag === \"Single\"\n\n/** @internal */\nexport const isKeyValueMap = (self: Instruction): self is KeyValueMap => self._tag === \"KeyValueMap\"\n\n/** @internal */\nexport const isMap = (self: Instruction): self is Map => self._tag === \"Map\"\n\n/** @internal */\nexport const isBoth = (self: Instruction): self is Both => self._tag === \"Both\"\n\n/** @internal */\nexport const isOrElse = (self: Instruction): self is OrElse => self._tag === \"OrElse\"\n\n/** @internal */\nexport const isWithDefault = (self: Instruction): self is WithDefault => self._tag === \"WithDefault\"\n\n/** @internal */\nexport const isWithFallback = (self: Instruction): self is WithFallback => self._tag === \"WithFallback\"\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/** @internal */\nexport const all: <\n const Arg extends Iterable<Options.Options<any>> | Record<string, Options.Options<any>>\n>(arg: Arg) => Options.All.Return<Arg> = function() {\n if (arguments.length === 1) {\n if (isOptions(arguments[0])) {\n return map(arguments[0], (x) => [x]) as any\n } else if (Arr.isArray(arguments[0])) {\n return allTupled(arguments[0] as Array<any>) as any\n } else {\n const entries = Object.entries(\n arguments[0] as Readonly<{ [K: string]: Options.Options<any> }>\n )\n let result = map(entries[0][1], (value) => ({ [entries[0][0]]: value }))\n if (entries.length === 1) {\n return result as any\n }\n const rest = entries.slice(1)\n for (const [key, options] of rest) {\n result = map(makeBoth(result, options), ([record, value]) => ({\n ...record,\n [key]: value\n }))\n }\n return result as any\n }\n }\n return allTupled(arguments[0]) as any\n}\n\nconst defaultBooleanOptions = {\n ifPresent: true,\n negationNames: [],\n aliases: []\n}\n\n/** @internal */\nexport const boolean = (\n name: string,\n options?: Options.Options.BooleanOptionsConfig\n): Options.Options<boolean> => {\n const { aliases, ifPresent, negationNames } = { ...defaultBooleanOptions, ...options }\n const option = makeSingle(\n name,\n aliases,\n InternalPrimitive.boolean(Option.some(ifPresent))\n )\n if (Arr.isNonEmptyReadonlyArray(negationNames)) {\n const head = Arr.headNonEmpty(negationNames)\n const tail = Arr.tailNonEmpty(negationNames)\n const negationOption = makeSingle(\n head,\n tail,\n InternalPrimitive.boolean(Option.some(!ifPresent))\n )\n return withDefault(\n orElse(option, negationOption),\n !ifPresent\n )\n }\n return withDefault(option, !ifPresent)\n}\n\n/** @internal */\nexport const choice = <A extends string, C extends ReadonlyArray<A>>(\n name: string,\n choices: C\n): Options.Options<C[number]> => {\n const primitive = InternalPrimitive.choice(\n Arr.map(choices, (choice) => [choice, choice])\n )\n return makeSingle(name, Arr.empty(), primitive)\n}\n\n/** @internal */\nexport const choiceWithValue = <const C extends ReadonlyArray<[string, any]>>(\n name: string,\n choices: C\n): Options.Options<C[number][1]> => makeSingle(name, Arr.empty(), InternalPrimitive.choice(choices))\n\n/** @internal */\nexport const date = (name: string): Options.Options<Date> => makeSingle(name, Arr.empty(), InternalPrimitive.date)\n\n/** @internal */\nexport const directory = (\n name: string,\n config?: Options.Options.PathOptionsConfig\n): Options.Options<string> =>\n makeSingle(\n name,\n Arr.empty(),\n InternalPrimitive.path(\"directory\", config?.exists ?? \"either\")\n )\n\n/** @internal */\nexport const file = (\n name: string,\n config?: Options.Options.PathOptionsConfig\n): Options.Options<string> =>\n makeSingle(\n name,\n Arr.empty(),\n InternalPrimitive.path(\"file\", config?.exists ?? \"either\")\n )\n\n/** @internal */\nexport const fileContent = (\n name: string\n): Options.Options<readonly [path: string, content: Uint8Array]> =>\n mapEffect(file(name, { exists: \"yes\" }), (path) =>\n Effect.mapError(\n InternalFiles.read(path),\n (msg) => InternalValidationError.invalidValue(InternalHelpDoc.p(msg))\n ))\n\n/** @internal */\nexport const fileParse = (\n name: string,\n format?: \"json\" | \"yaml\" | \"ini\" | \"toml\"\n): Options.Options<unknown> =>\n mapEffect(fileText(name), ([path, content]) =>\n Effect.mapError(\n InternalFiles.parse(path, content, format),\n (error) => InternalValidationError.invalidValue(InternalHelpDoc.p(error))\n ))\n\n/** @internal */\nexport const fileSchema = <I, A>(\n name: string,\n schema: Schema.Schema<A, I, FileSystem.FileSystem | Path.Path | Terminal.Terminal>,\n format?: \"json\" | \"yaml\" | \"ini\" | \"toml\"\n): Options.Options<A> => withSchema(fileParse(name, format), schema)\n\n/** @internal */\nexport const fileText = (\n name: string\n): Options.Options<readonly [path: string, content: string]> =>\n mapEffect(file(name, { exists: \"yes\" }), (path) =>\n Effect.mapError(\n InternalFiles.readString(path),\n (error) => InternalValidationError.invalidValue(InternalHelpDoc.p(error))\n ))\n\n/** @internal */\nexport const filterMap = dual<\n <A, B>(\n f: (a: A) => Option.Option<B>,\n message: string\n ) => (self: Options.Options<A>) => Options.Options<B>,\n <A, B>(\n self: Options.Options<A>,\n f: (a: A) => Option.Option<B>,\n message: string\n ) => Options.Options<B>\n>(3, (self, f, message) =>\n mapEffect(self, (a) =>\n Option.match(f(a), {\n onNone: () => Either.left(InternalValidationError.invalidValue(InternalHelpDoc.p(message))),\n onSome: Either.right\n })))\n\n/** @internal */\nexport const float = (name: string): Options.Options<number> => makeSingle(name, Arr.empty(), InternalPrimitive.float)\n\n/** @internal */\nexport const integer = (name: string): Options.Options<number> =>\n makeSingle(name, Arr.empty(), InternalPrimitive.integer)\n\n/** @internal */\nexport const keyValueMap = (\n option: string | Options.Options<string>\n): Options.Options<HashMap.HashMap<string, string>> => {\n if (typeof option === \"string\") {\n const single = makeSingle(option, Arr.empty(), InternalPrimitive.text)\n return makeKeyValueMap(single as Single)\n }\n if (!isSingle(option as Instruction)) {\n throw new Error(\"InvalidArgumentException: only single options can be key/value maps\")\n } else {\n return makeKeyValueMap(option as Single)\n }\n}\n\n/** @internal */\nexport const none: Options.Options<void> = (() => {\n const op = Object.create(proto)\n op._tag = \"Empty\"\n return op\n})()\n\n/** @internal */\nexport const redacted = (name: string): Options.Options<Redacted.Redacted> =>\n makeSingle(name, Arr.empty(), InternalPrimitive.redacted)\n\n/** @internal */\nexport const secret = (name: string): Options.Options<Secret.Secret> =>\n makeSingle(name, Arr.empty(), InternalPrimitive.secret)\n\n/** @internal */\nexport const text = (name: string): Options.Options<string> => makeSingle(name, Arr.empty(), InternalPrimitive.text)\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/** @internal */\nexport const atLeast = dual<\n {\n (times: 0): <A>(self: Options.Options<A>) => Options.Options<Array<A>>\n (\n times: number\n ): <A>(self: Options.Options<A>) => Options.Options<Arr.NonEmptyArray<A>>\n },\n {\n <A>(self: Options.Options<A>, times: 0): Options.Options<Array<A>>\n <A>(\n self: Options.Options<A>,\n times: number\n ): Options.Options<Arr.NonEmptyArray<A>>\n }\n>(2, (self, times) => makeVariadic(self, Option.some(times), Option.none()) as any)\n\n/** @internal */\nexport const atMost = dual<\n (times: number) => <A>(self: Options.Options<A>) => Options.Options<Array<A>>,\n <A>(self: Options.Options<A>, times: number) => Options.Options<Array<A>>\n>(2, (self, times) => makeVariadic(self, Option.none(), Option.some(times)) as any)\n\n/** @internal */\nexport const between = dual<\n {\n (min: 0, max: number): <A>(self: Options.Options<A>) => Options.Options<Array<A>>\n (\n min: number,\n max: number\n ): <A>(self: Options.Options<A>) => Options.Options<Arr.NonEmptyArray<A>>\n },\n {\n <A>(self: Options.Options<A>, min: 0, max: number): Options.Options<Array<A>>\n <A>(\n self: Options.Options<A>,\n min: number,\n max: number\n ): Options.Options<Arr.NonEmptyArray<A>>\n }\n>(3, (self, min, max) => makeVariadic(self, Option.some(min), Option.some(max)) as any)\n\n/** @internal */\nexport const isBool = <A>(self: Options.Options<A>): boolean => isBoolInternal(self as Instruction)\n\n/** @internal */\nexport const getHelp = <A>(self: Options.Options<A>): HelpDoc.HelpDoc => getHelpInternal(self as Instruction)\n\n/** @internal */\nexport const getIdentifier = <A>(self: Options.Options<A>): Option.Option<string> =>\n getIdentifierInternal(self as Instruction)\n\n/** @internal */\nexport const getMinSize = <A>(self: Options.Options<A>): number => getMinSizeInternal(self as Instruction)\n\n/** @internal */\nexport const getMaxSize = <A>(self: Options.Options<A>): number => getMaxSizeInternal(self as Instruction)\n\n/** @internal */\nexport const getUsage = <A>(self: Options.Options<A>): Usage.Usage => getUsageInternal(self as Instruction)\n\n/** @internal */\nexport const map = dual<\n <A, B>(f: (a: A) => B) => (self: Options.Options<A>) => Options.Options<B>,\n <A, B>(self: Options.Options<A>, f: (a: A) => B) => Options.Options<B>\n>(2, (self, f) => makeMap(self, (a) => Either.right(f(a))))\n\n/** @internal */\nexport const mapEffect = dual<\n <A, B>(\n f: (\n a: A\n ) => Effect.Effect<B, ValidationError.ValidationError, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => (self: Options.Options<A>) => Options.Options<B>,\n <A, B>(\n self: Options.Options<A>,\n f: (\n a: A\n ) => Effect.Effect<B, ValidationError.ValidationError, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => Options.Options<B>\n>(2, (self, f) => makeMap(self, f))\n\n/** @internal */\nexport const mapTryCatch = dual<\n <A, B>(\n f: (a: A) => B,\n onError: (e: unknown) => HelpDoc.HelpDoc\n ) => (self: Options.Options<A>) => Options.Options<B>,\n <A, B>(\n self: Options.Options<A>,\n f: (a: A) => B,\n onError: (e: unknown) => HelpDoc.HelpDoc\n ) => Options.Options<B>\n>(3, (self, f, onError) =>\n mapEffect(self, (a) => {\n try {\n return Either.right(f(a))\n } catch (e) {\n return Either.left(InternalValidationError.invalidValue(onError(e)))\n }\n }))\n\n/** @internal */\nexport const optional = <A>(self: Options.Options<A>): Options.Options<Option.Option<A>> =>\n withDefault(map(self, Option.some), Option.none())\n\n/** @internal */\nexport const orElse = dual<\n <B>(that: Options.Options<B>) => <A>(self: Options.Options<A>) => Options.Options<A | B>,\n <A, B>(self: Options.Options<A>, that: Options.Options<B>) => Options.Options<A | B>\n>(2, (self, that) => orElseEither(self, that).pipe(map(Either.merge)))\n\n/** @internal */\nexport const orElseEither = dual<\n <B>(\n that: Options.Options<B>\n ) => <A>(self: Options.Options<A>) => Options.Options<Either.Either<B, A>>,\n <A, B>(self: Options.Options<A>, that: Options.Options<B>) => Options.Options<Either.Either<B, A>>\n>(2, (self, that) => makeOrElse(self, that))\n\n/** @internal */\nexport const parse = dual<\n (\n args: HashMap.HashMap<string, ReadonlyArray<string>>,\n config: CliConfig.CliConfig\n ) => <A>(\n self: Options.Options<A>\n ) => Effect.Effect<A, ValidationError.ValidationError, FileSystem.FileSystem>,\n <A>(\n self: Options.Options<A>,\n args: HashMap.HashMap<string, ReadonlyArray<string>>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<A, ValidationError.ValidationError, FileSystem.FileSystem>\n>(3, (self, args, config) => parseInternal(self as Instruction, args, config) as any)\n\n/** @internal */\nexport const processCommandLine = dual<\n (\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => <A>(\n self: Options.Options<A>\n ) => Effect.Effect<\n [Option.Option<ValidationError.ValidationError>, Array<string>, A],\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <A>(\n self: Options.Options<A>,\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<\n [Option.Option<ValidationError.ValidationError>, Array<string>, A],\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(\n 3,\n (self, args, config) =>\n matchOptions(args, toParseableInstruction(self as Instruction), config).pipe(\n Effect.flatMap(([error, commandArgs, matchedOptions]) =>\n parseInternal(self as Instruction, matchedOptions, config).pipe(\n Effect.catchAll((e) =>\n Option.match(error, {\n onNone: () => Effect.fail(e),\n onSome: (err) => Effect.fail(err)\n })\n ),\n Effect.map((a) => [error, commandArgs as Array<string>, a as any])\n )\n )\n )\n)\n\n/** @internal */\nexport const repeated = <A>(self: Options.Options<A>): Options.Options<Array<A>> =>\n makeVariadic(self, Option.none(), Option.none())\n\n/** @internal */\nexport const withAlias = dual<\n (alias: string) => <A>(self: Options.Options<A>) => Options.Options<A>,\n <A>(self: Options.Options<A>, alias: string) => Options.Options<A>\n>(2, (self, alias) =>\n modifySingle(self as Instruction, (single) => {\n const aliases = Arr.append(single.aliases, alias)\n return makeSingle(\n single.name,\n aliases,\n single.primitiveType,\n single.description,\n single.pseudoName\n ) as Single\n }))\n\n/** @internal */\nexport const withDefault = dual<\n <const B>(fallback: B) => <A>(self: Options.Options<A>) => Options.Options<A | B>,\n <A, const B>(self: Options.Options<A>, fallback: B) => Options.Options<A | B>\n>(2, (self, fallback) => makeWithDefault(self, fallback))\n\n/** @internal */\nexport const withFallbackConfig: {\n <B>(config: Config.Config<B>): <A>(self: Options.Options<A>) => Options.Options<B | A>\n <A, B>(self: Options.Options<A>, config: Config.Config<B>): Options.Options<A | B>\n} = dual<\n <B>(config: Config.Config<B>) => <A>(self: Options.Options<A>) => Options.Options<A | B>,\n <A, B>(self: Options.Options<A>, config: Config.Config<B>) => Options.Options<A | B>\n>(2, (self, config) => {\n if (isInstruction(self) && isWithDefault(self)) {\n return makeWithDefault(\n withFallbackConfig(self.options, config),\n self.fallback as any\n )\n }\n return makeWithFallback(self, config)\n})\n\n/** @internal */\nexport const withFallbackPrompt: {\n <B>(prompt: Prompt.Prompt<B>): <A>(self: Options.Options<A>) => Options.Options<B | A>\n <A, B>(self: Options.Options<A>, prompt: Prompt.Prompt<B>): Options.Options<A | B>\n} = dual<\n <B>(prompt: Prompt.Prompt<B>) => <A>(self: Options.Options<A>) => Options.Options<A | B>,\n <A, B>(self: Options.Options<A>, prompt: Prompt.Prompt<B>) => Options.Options<A | B>\n>(2, (self, prompt) => {\n if (isInstruction(self) && isWithDefault(self)) {\n return makeWithDefault(\n withFallbackPrompt(self.options, prompt),\n self.fallback as any\n )\n }\n return makeWithFallback(self, prompt)\n})\n\n/** @internal */\nexport const withDescription = dual<\n (description: string) => <A>(self: Options.Options<A>) => Options.Options<A>,\n <A>(self: Options.Options<A>, description: string) => Options.Options<A>\n>(2, (self, desc) =>\n modifySingle(self as Instruction, (single) => {\n const description = InternalHelpDoc.sequence(single.description, InternalHelpDoc.p(desc))\n return makeSingle(\n single.name,\n single.aliases,\n single.primitiveType,\n description,\n single.pseudoName\n ) as Single\n }))\n\n/** @internal */\nexport const withPseudoName = dual<\n (pseudoName: string) => <A>(self: Options.Options<A>) => Options.Options<A>,\n <A>(self: Options.Options<A>, pseudoName: string) => Options.Options<A>\n>(2, (self, pseudoName) =>\n modifySingle(self as Instruction, (single) =>\n makeSingle(\n single.name,\n single.aliases,\n single.primitiveType,\n single.description,\n Option.some(pseudoName)\n ) as Single))\n\n/** @internal */\nexport const withSchema = dual<\n <A, I extends A, B>(\n schema: Schema.Schema<B, I, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => (self: Options.Options<A>) => Options.Options<B>,\n <A, I extends A, B>(\n self: Options.Options<A>,\n schema: Schema.Schema<B, I, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n ) => Options.Options<B>\n>(2, (self, schema) => {\n const decode = ParseResult.decode(schema)\n return mapEffect(self, (_) =>\n Effect.mapError(\n decode(_ as any),\n (issue) =>\n InternalValidationError.invalidValue(InternalHelpDoc.p(ParseResult.TreeFormatter.formatIssueSync(issue)))\n ))\n})\n\n/** @internal */\nexport const wizard = dual<\n (config: CliConfig.CliConfig) => <A>(self: Options.Options<A>) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <A>(self: Options.Options<A>, config: CliConfig.CliConfig) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(2, (self, config) => wizardInternal(self as Instruction, config))\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst allTupled = <const T extends ArrayLike<Options.Options<any>>>(arg: T): Options.Options<\n {\n [K in keyof T]: [T[K]] extends [Options.Options<infer A>] ? A : never\n }\n> => {\n if (arg.length === 0) {\n return none as any\n }\n if (arg.length === 1) {\n return map(arg[0], (x) => [x]) as any\n }\n let result = map(arg[0], (x) => [x])\n for (let i = 1; i < arg.length; i++) {\n const curr = arg[i]\n result = map(makeBoth(result, curr), ([a, b]) => [...a, b])\n }\n return result as any\n}\n\nconst getHelpInternal = (self: Instruction): HelpDoc.HelpDoc => {\n switch (self._tag) {\n case \"Empty\": {\n return InternalHelpDoc.empty\n }\n case \"Single\": {\n return InternalHelpDoc.descriptionList(Arr.of([\n InternalHelpDoc.getSpan(InternalUsage.getHelp(getUsageInternal(self))),\n InternalHelpDoc.sequence(\n InternalHelpDoc.p(InternalPrimitive.getHelp(self.primitiveType)),\n self.description\n )\n ]))\n }\n case \"KeyValueMap\": {\n // Single options always have an identifier, so we can safely `getOrThrow`\n const identifier = Option.getOrThrow(\n getIdentifierInternal(self.argumentOption as Instruction)\n )\n return InternalHelpDoc.mapDescriptionList(\n getHelpInternal(self.argumentOption as Instruction),\n (span, oldBlock) => {\n const header = InternalHelpDoc.p(\"This setting is a property argument which:\")\n const single = `${identifier} key1=value key2=value2`\n const multiple = `${identifier} key1=value ${identifier} key2=value2`\n const description = InternalHelpDoc.enumeration([\n InternalHelpDoc.p(`May be specified a single time: '${single}'`),\n InternalHelpDoc.p(`May be specified multiple times: '${multiple}'`)\n ])\n const newBlock = pipe(\n oldBlock,\n InternalHelpDoc.sequence(header),\n InternalHelpDoc.sequence(description)\n )\n return [span, newBlock]\n }\n )\n }\n case \"Map\": {\n return getHelpInternal(self.options as Instruction)\n }\n case \"Both\":\n case \"OrElse\": {\n return InternalHelpDoc.sequence(\n getHelpInternal(self.left as Instruction),\n getHelpInternal(self.right as Instruction)\n )\n }\n case \"Variadic\": {\n const help = getHelpInternal(self.argumentOption as Instruction)\n return InternalHelpDoc.mapDescriptionList(help, (oldSpan, oldBlock) => {\n const min = getMinSizeInternal(self as Instruction)\n const max = getMaxSizeInternal(self as Instruction)\n const newSpan = InternalSpan.text(\n Option.isSome(self.max) ? ` ${min} - ${max}` : min === 0 ? \"...\" : ` ${min}+`\n )\n const newBlock = InternalHelpDoc.p(\n Option.isSome(self.max)\n ? `This option must be repeated at least ${min} times and may be repeated up to ${max} times.`\n : min === 0\n ? \"This option may be repeated zero or more times.\"\n : `This option must be repeated at least ${min} times.`\n )\n return [InternalSpan.concat(oldSpan, newSpan), InternalHelpDoc.sequence(oldBlock, newBlock)]\n })\n }\n case \"WithDefault\": {\n return InternalHelpDoc.mapDescriptionList(\n getHelpInternal(self.options as Instruction),\n (span, block) => {\n const optionalDescription = Option.isOption(self.fallback)\n ? Option.match(self.fallback, {\n onNone: () => InternalHelpDoc.p(\"This setting is optional.\"),\n onSome: (fallbackValue) => {\n const inspectableValue = Predicate.isObject(fallbackValue) ? fallbackValue : String(fallbackValue)\n const displayValue = Inspectable.toStringUnknown(inspectableValue, 0)\n return InternalHelpDoc.p(`This setting is optional. Defaults to: ${displayValue}`)\n }\n })\n : InternalHelpDoc.p(\"This setting is optional.\")\n return [span, InternalHelpDoc.sequence(block, optionalDescription)]\n }\n )\n }\n case \"WithFallback\": {\n const helpDoc: HelpDoc.HelpDoc = Config.isConfig(self.effect)\n ? InternalHelpDoc.p(\"This option can be set from environment variables.\")\n : InternalPrompt.isPrompt(self.effect)\n ? InternalHelpDoc.p(\"Will prompt the user for input if this option is not provided.\")\n : InternalHelpDoc.empty\n return InternalHelpDoc.mapDescriptionList(\n getHelpInternal(self.options as Instruction),\n (span, block) => [span, InternalHelpDoc.sequence(block, helpDoc)]\n )\n }\n }\n}\n\nconst getIdentifierInternal = (self: Instruction): Option.Option<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Option.none()\n }\n case \"Single\": {\n return Option.some(self.fullName)\n }\n case \"Both\":\n case \"OrElse\": {\n const ids = Arr.getSomes([\n getIdentifierInternal(self.left as Instruction),\n getIdentifierInternal(self.right as Instruction)\n ])\n return Arr.match(ids, {\n onEmpty: () => Option.none(),\n onNonEmpty: (ids) => Option.some(Arr.join(ids, \", \"))\n })\n }\n case \"KeyValueMap\":\n case \"Variadic\": {\n return getIdentifierInternal(self.argumentOption as Instruction)\n }\n case \"Map\":\n case \"WithFallback\":\n case \"WithDefault\": {\n return getIdentifierInternal(self.options as Instruction)\n }\n }\n}\n\nconst getMinSizeInternal = (self: Instruction): number => {\n switch (self._tag) {\n case \"Empty\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return 0\n }\n case \"Single\":\n case \"KeyValueMap\": {\n return 1\n }\n case \"Map\": {\n return getMinSizeInternal(self.options as Instruction)\n }\n case \"Both\": {\n const leftMinSize = getMinSizeInternal(self.left as Instruction)\n const rightMinSize = getMinSizeInternal(self.right as Instruction)\n return leftMinSize + rightMinSize\n }\n case \"OrElse\": {\n const leftMinSize = getMinSizeInternal(self.left as Instruction)\n const rightMinSize = getMinSizeInternal(self.right as Instruction)\n return Math.min(leftMinSize, rightMinSize)\n }\n case \"Variadic\": {\n const selfMinSize = Option.getOrElse(self.min, () => 0)\n const argumentOptionMinSize = getMinSizeInternal(self.argumentOption as Instruction)\n return selfMinSize * argumentOptionMinSize\n }\n }\n}\n\nconst getMaxSizeInternal = (self: Instruction): number => {\n switch (self._tag) {\n case \"Empty\": {\n return 0\n }\n case \"Single\": {\n return 1\n }\n case \"KeyValueMap\": {\n return Number.MAX_SAFE_INTEGER\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return getMaxSizeInternal(self.options as Instruction)\n }\n case \"Both\": {\n const leftMaxSize = getMaxSizeInternal(self.left as Instruction)\n const rightMaxSize = getMaxSizeInternal(self.right as Instruction)\n return leftMaxSize + rightMaxSize\n }\n case \"OrElse\": {\n const leftMin = getMaxSizeInternal(self.left as Instruction)\n const rightMin = getMaxSizeInternal(self.right as Instruction)\n return Math.min(leftMin, rightMin)\n }\n case \"Variadic\": {\n const selfMaxSize = Option.getOrElse(self.max, () => Number.MAX_SAFE_INTEGER / 2)\n const optionsMaxSize = getMaxSizeInternal(self.argumentOption as Instruction)\n return Math.floor(selfMaxSize * optionsMaxSize)\n }\n }\n}\n\nconst getUsageInternal = (self: Instruction): Usage.Usage => {\n switch (self._tag) {\n case \"Empty\": {\n return InternalUsage.empty\n }\n case \"Single\": {\n const acceptedValues = InternalPrimitive.isBool(self.primitiveType)\n ? Option.none()\n : Option.orElse(\n InternalPrimitive.getChoices(self.primitiveType),\n () => Option.some(self.placeholder)\n )\n return InternalUsage.named(getNames(self), acceptedValues)\n }\n case \"KeyValueMap\": {\n return getUsageInternal(self.argumentOption as Instruction)\n }\n case \"Map\": {\n return getUsageInternal(self.options as Instruction)\n }\n case \"Both\": {\n return InternalUsage.concat(\n getUsageInternal(self.left as Instruction),\n getUsageInternal(self.right as Instruction)\n )\n }\n case \"OrElse\": {\n return InternalUsage.alternation(\n getUsageInternal(self.left as Instruction),\n getUsageInternal(self.right as Instruction)\n )\n }\n case \"Variadic\": {\n return InternalUsage.repeated(getUsageInternal(self.argumentOption as Instruction))\n }\n case \"WithDefault\":\n case \"WithFallback\": {\n return InternalUsage.optional(getUsageInternal(self.options as Instruction))\n }\n }\n}\n\nconst isBoolInternal = (self: Instruction): boolean => {\n switch (self._tag) {\n case \"Single\": {\n return InternalPrimitive.isBool(self.primitiveType)\n }\n case \"Map\": {\n return isBoolInternal(self.options as Instruction)\n }\n case \"WithDefault\": {\n return isBoolInternal(self.options as Instruction)\n }\n default: {\n return false\n }\n }\n}\n\nconst makeBoth = <A, B>(\n left: Options.Options<A>,\n right: Options.Options<B>\n): Options.Options<[A, B]> => {\n const op = Object.create(proto)\n op._tag = \"Both\"\n op.left = left\n op.right = right\n return op\n}\n\nconst makeFullName = (str: string): [boolean, string] => str.length === 1 ? [true, `-${str}`] : [false, `--${str}`]\n\nconst makeKeyValueMap = (\n argumentOption: Single\n): Options.Options<HashMap.HashMap<string, string>> => {\n const op = Object.create(proto)\n op._tag = \"KeyValueMap\"\n op.argumentOption = argumentOption\n return op\n}\n\nconst makeMap = <A, B>(\n options: Options.Options<A>,\n f: (a: A) => Effect.Effect<B, ValidationError.ValidationError, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n): Options.Options<B> => {\n const op = Object.create(proto)\n op._tag = \"Map\"\n op.options = options\n op.f = f\n return op\n}\n\nconst makeOrElse = <A, B>(\n left: Options.Options<A>,\n right: Options.Options<B>\n): Options.Options<Either.Either<B, A>> => {\n const op = Object.create(proto)\n op._tag = \"OrElse\"\n op.left = left\n op.right = right\n return op\n}\n\nconst makeSingle = <A>(\n name: string,\n aliases: ReadonlyArray<string>,\n primitiveType: Primitive.Primitive<A>,\n description: HelpDoc.HelpDoc = InternalHelpDoc.empty,\n pseudoName: Option.Option<string> = Option.none()\n): Options.Options<A> => {\n const op = Object.create(proto)\n op._tag = \"Single\"\n op.name = name\n op.fullName = makeFullName(name)[1]\n op.placeholder = `${Option.getOrElse(pseudoName, () => InternalPrimitive.getTypeName(primitiveType))}`\n op.aliases = aliases\n op.primitiveType = primitiveType\n op.description = description\n op.pseudoName = pseudoName\n return op\n}\n\nconst makeVariadic = <A>(\n argumentOption: Options.Options<A>,\n min: Option.Option<number>,\n max: Option.Option<number>\n): Options.Options<Array<A>> => {\n if (!isSingle(argumentOption as Instruction)) {\n throw new Error(\"InvalidArgumentException: only single options can be variadic\")\n }\n const op = Object.create(proto)\n op._tag = \"Variadic\"\n op.argumentOption = argumentOption\n op.min = min\n op.max = max\n return op\n}\n\nconst makeWithDefault = <A, const B>(\n options: Options.Options<A>,\n fallback: B\n): Options.Options<A | B> => {\n const op = Object.create(proto)\n op._tag = \"WithDefault\"\n op.options = options\n op.fallback = fallback\n return op\n}\n\nconst makeWithFallback = <A, B>(\n options: Options.Options<A>,\n effect: Effect.Effect<B, unknown, FileSystem.FileSystem | Path.Path | Terminal.Terminal>\n): Options.Options<A | B> => {\n const op = Object.create(proto)\n op._tag = \"WithFallback\"\n op.options = options\n op.effect = effect\n return op\n}\n\nconst modifySingle = (self: Instruction, f: (single: Single) => Single): Options.Options<any> => {\n switch (self._tag) {\n case \"Empty\": {\n return none\n }\n case \"Single\": {\n return f(self)\n }\n case \"KeyValueMap\": {\n return makeKeyValueMap(f(self.argumentOption))\n }\n case \"Map\": {\n return makeMap(modifySingle(self.options as Instruction, f), self.f)\n }\n case \"Both\": {\n return makeBoth(\n modifySingle(self.left as Instruction, f),\n modifySingle(self.right as Instruction, f)\n )\n }\n case \"OrElse\": {\n return makeOrElse(\n modifySingle(self.left as Instruction, f),\n modifySingle(self.right as Instruction, f)\n )\n }\n case \"Variadic\": {\n return makeVariadic(f(self.argumentOption), self.min, self.max)\n }\n case \"WithDefault\": {\n return makeWithDefault(modifySingle(self.options as Instruction, f), self.fallback)\n }\n case \"WithFallback\": {\n return makeWithFallback(\n modifySingle(self.options as Instruction, f),\n self.effect\n )\n }\n }\n}\n\n/** @internal */\nexport const getNames = (self: Instruction): Array<string> => {\n const loop = (self: Instruction): ReadonlyArray<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\": {\n return Arr.prepend(self.aliases, self.name)\n }\n case \"KeyValueMap\":\n case \"Variadic\": {\n return loop(self.argumentOption as Instruction)\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return loop(self.options as Instruction)\n }\n case \"Both\":\n case \"OrElse\": {\n const left = loop(self.left as Instruction)\n const right = loop(self.right as Instruction)\n return Arr.appendAll(left, right)\n }\n }\n }\n const order = Order.mapInput(\n Order.boolean,\n (tuple: [boolean, string]) => !tuple[0]\n )\n return pipe(\n loop(self),\n Arr.map((str) => makeFullName(str)),\n Arr.sort(order),\n Arr.map((tuple) => tuple[1])\n )\n}\n\nconst toParseableInstruction = (self: Instruction): Array<ParseableInstruction> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\":\n case \"KeyValueMap\":\n case \"Variadic\": {\n return Arr.of(self)\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return toParseableInstruction(self.options as Instruction)\n }\n case \"Both\":\n case \"OrElse\": {\n return Arr.appendAll(\n toParseableInstruction(self.left as Instruction),\n toParseableInstruction(self.right as Instruction)\n )\n }\n }\n}\n\n/** @internal */\nconst keyValueSplitter = /=(.*)/\n\nconst parseInternal = (\n self: Instruction,\n args: HashMap.HashMap<string, ReadonlyArray<string>>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n unknown,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n> => {\n switch (self._tag) {\n case \"Empty\": {\n return Effect.void\n }\n case \"Single\": {\n const singleNames = Arr.filterMap(getNames(self), (name) => HashMap.get(args, name))\n if (Arr.isNonEmptyReadonlyArray(singleNames)) {\n const head = Arr.headNonEmpty(singleNames)\n const tail = Arr.tailNonEmpty(singleNames)\n if (Arr.isEmptyReadonlyArray(tail)) {\n if (Arr.isEmptyReadonlyArray(head)) {\n return InternalPrimitive.validate(self.primitiveType, Option.none(), config).pipe(\n Effect.mapError((e) => InternalValidationError.invalidValue(InternalHelpDoc.p(e)))\n )\n }\n if (\n Arr.isNonEmptyReadonlyArray(head) &&\n Arr.isEmptyReadonlyArray(Arr.tailNonEmpty(head))\n ) {\n const value = Arr.headNonEmpty(head)\n return InternalPrimitive.validate(self.primitiveType, Option.some(value), config).pipe(\n Effect.mapError((e) => InternalValidationError.invalidValue(InternalHelpDoc.p(e)))\n )\n }\n return Effect.fail(\n InternalValidationError.multipleValuesDetected(InternalHelpDoc.empty, head)\n )\n }\n const error = InternalHelpDoc.p(\n `More than one reference to option '${self.fullName}' detected`\n )\n return Effect.fail(InternalValidationError.invalidValue(error))\n }\n const error = InternalHelpDoc.p(`Expected to find option: '${self.fullName}'`)\n return Effect.fail(InternalValidationError.missingValue(error))\n }\n case \"KeyValueMap\": {\n const extractKeyValue = (\n value: string\n ): Effect.Effect<[string, string], ValidationError.ValidationError> => {\n const split = value.trim().split(keyValueSplitter, 2)\n if (Arr.isNonEmptyReadonlyArray(split) && split.length === 2 && split[1] !== \"\") {\n return Effect.succeed(split as unknown as [string, string])\n }\n const error = InternalHelpDoc.p(`Expected a key/value pair but received '${value}'`)\n return Effect.fail(InternalValidationError.invalidArgument(error))\n }\n return parseInternal(self.argumentOption, args, config).pipe(Effect.matchEffect({\n onFailure: (e) =>\n InternalValidationError.isMultipleValuesDetected(e)\n ? Effect.forEach(e.values, (kv) => extractKeyValue(kv)).pipe(\n Effect.map(HashMap.fromIterable)\n )\n : Effect.fail(e),\n onSuccess: (kv) => extractKeyValue(kv as string).pipe(Effect.map(HashMap.make))\n }))\n }\n case \"Map\": {\n return parseInternal(self.options as Instruction, args, config).pipe(\n Effect.flatMap((a) => self.f(a))\n )\n }\n case \"Both\": {\n return parseInternal(self.left as Instruction, args, config).pipe(\n Effect.catchAll((err1) =>\n parseInternal(self.right as Instruction, args, config).pipe(Effect.matchEffect({\n onFailure: (err2) => {\n const error = InternalHelpDoc.sequence(err1.error, err2.error)\n return Effect.fail(InternalValidationError.missingValue(error))\n },\n onSuccess: () => Effect.fail(err1)\n }))\n ),\n Effect.zip(parseInternal(self.right as Instruction, args, config))\n )\n }\n case \"OrElse\": {\n return parseInternal(self.left as Instruction, args, config).pipe(\n Effect.matchEffect({\n onFailure: (err1) =>\n parseInternal(self.right as Instruction, args, config).pipe(\n Effect.mapBoth({\n onFailure: (err2) =>\n // orElse option is only missing in case neither option was given\n InternalValidationError.isMissingValue(err1) &&\n InternalValidationError.isMissingValue(err2)\n ? InternalValidationError.missingValue(\n InternalHelpDoc.sequence(err1.error, err2.error)\n )\n : InternalValidationError.invalidValue(\n InternalHelpDoc.sequence(err1.error, err2.error)\n ),\n onSuccess: (b) => Either.right(b)\n })\n ),\n onSuccess: (a) =>\n parseInternal(self.right as Instruction, args, config).pipe(Effect.matchEffect({\n onFailure: () => Effect.succeed(Either.left(a)),\n onSuccess: () => {\n // The `identifier` will only be `None` for `Options.Empty`, which\n // means the user would have had to purposefully compose\n // `Options.Empty | otherArgument`\n const leftUid = Option.getOrElse(\n getIdentifierInternal(self.left as Instruction),\n () => \"???\"\n )\n const rightUid = Option.getOrElse(\n getIdentifierInternal(self.right as Instruction),\n () => \"???\"\n )\n const error = InternalHelpDoc.p(\n \"Collision between two options detected - you can only specify \" +\n `one of either: ['${leftUid}', '${rightUid}']`\n )\n return Effect.fail(InternalValidationError.invalidValue(error))\n }\n }))\n })\n )\n }\n case \"Variadic\": {\n const min = Option.getOrElse(self.min, () => 0)\n const max = Option.getOrElse(self.max, () => Number.MAX_SAFE_INTEGER)\n const matchedArgument = Arr.filterMap(getNames(self), (name) => HashMap.get(args, name))\n const validateMinMax = (values: ReadonlyArray<string>) => {\n if (values.length < min) {\n const name = self.argumentOption.fullName\n const error = `Expected at least ${min} value(s) for option: '${name}'`\n return Effect.fail(InternalValidationError.invalidValue(InternalHelpDoc.p(error)))\n }\n if (values.length > max) {\n const name = self.argumentOption.fullName\n const error = `Expected at most ${max} value(s) for option: '${name}'`\n return Effect.fail(InternalValidationError.invalidValue(InternalHelpDoc.p(error)))\n }\n const primitive = self.argumentOption.primitiveType\n const validatePrimitive = (value: string) =>\n InternalPrimitive.validate(primitive, Option.some(value), config).pipe(\n Effect.mapError((e) => InternalValidationError.invalidValue(InternalHelpDoc.p(e)))\n )\n return Effect.forEach(values, (value) => validatePrimitive(value))\n }\n // If we did not receive any variadic arguments then perform the bounds\n // checks with an empty array\n if (Arr.every(matchedArgument, Arr.isEmptyReadonlyArray)) {\n return validateMinMax(Arr.empty())\n }\n return parseInternal(self.argumentOption, args, config).pipe(Effect.matchEffect({\n onFailure: (error) =>\n InternalValidationError.isMultipleValuesDetected(error)\n ? validateMinMax(error.values)\n : Effect.fail(error),\n onSuccess: (value) => validateMinMax(Arr.of(value as string))\n }))\n }\n case \"WithDefault\": {\n return parseInternal(self.options as Instruction, args, config).pipe(\n Effect.catchTag(\"MissingValue\", () => Effect.succeed(self.fallback))\n )\n }\n case \"WithFallback\": {\n return parseInternal(self.options as Instruction, args, config).pipe(\n Effect.catchTag(\"MissingValue\", (e) =>\n self.effect.pipe(Effect.catchAll((e2) => {\n if (Predicate.isTagged(e2, \"QuitException\")) {\n return Effect.die(e2)\n }\n if (ConfigError.isConfigError(e2) && !ConfigError.isMissingDataOnly(e2)) {\n const help = InternalHelpDoc.p(String(e2))\n const error = InternalValidationError.invalidValue(help)\n return Effect.fail(error)\n }\n return Effect.fail(e)\n })))\n )\n }\n }\n}\n\nconst wizardInternal = (self: Instruction, config: CliConfig.CliConfig): Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n> => {\n switch (self._tag) {\n case \"Empty\": {\n return Effect.succeed(Arr.empty())\n }\n case \"Single\": {\n const help = getHelpInternal(self)\n return InternalPrimitive.wizard(self.primitiveType, help).pipe(\n Effect.flatMap((input) => {\n // There will always be at least one name in names\n const args = Arr.make(getNames(self)[0]!, input as string)\n return parseCommandLine(self, args, config).pipe(Effect.as(args))\n }),\n Effect.zipLeft(Console.log())\n )\n }\n case \"KeyValueMap\": {\n const message = InternalHelpDoc.p(\"Enter `key=value` pairs separated by spaces\")\n return InternalListPrompt.list({\n message: InternalHelpDoc.toAnsiText(message).trim(),\n delimiter: \" \"\n }).pipe(\n Effect.flatMap((args) => {\n const identifier = Option.getOrElse(getIdentifierInternal(self), () => \"\")\n return parseInternal(self, HashMap.make([identifier, args]), config).pipe(\n Effect.as(Arr.prepend(args, identifier))\n )\n }),\n Effect.zipLeft(Console.log())\n )\n }\n case \"Map\": {\n return wizardInternal(self.options as Instruction, config)\n }\n case \"Both\": {\n return Effect.zipWith(\n wizardInternal(self.left as Instruction, config),\n wizardInternal(self.right as Instruction, config),\n (left, right) => Arr.appendAll(left, right)\n )\n }\n case \"OrElse\": {\n const alternativeHelp = InternalHelpDoc.p(\"Select which option you would like to use\")\n const message = pipe(\n getHelpInternal(self),\n InternalHelpDoc.sequence(alternativeHelp)\n )\n const makeChoice = (title: string, value: Instruction) => ({ title, value })\n const choices = Arr.getSomes([\n Option.map(\n getIdentifierInternal(self.left as Instruction),\n (title) => makeChoice(title, self.left as Instruction)\n ),\n Option.map(\n getIdentifierInternal(self.right as Instruction),\n (title) => makeChoice(title, self.right as Instruction)\n )\n ])\n return InternalSelectPrompt.select({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n choices\n }).pipe(Effect.flatMap((option) => wizardInternal(option, config)))\n }\n case \"Variadic\": {\n const repeatHelp = InternalHelpDoc.p(\n \"How many times should this argument be repeated?\"\n )\n const message = pipe(\n getHelpInternal(self),\n InternalHelpDoc.sequence(repeatHelp)\n )\n return InternalNumberPrompt.integer({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n min: getMinSizeInternal(self),\n max: getMaxSizeInternal(self)\n }).pipe(\n Effect.flatMap((n) =>\n n <= 0\n ? Effect.succeed(Arr.empty<string>())\n : Ref.make(Arr.empty<string>()).pipe(\n Effect.flatMap((ref) =>\n wizardInternal(self.argumentOption as Instruction, config).pipe(\n Effect.flatMap((args) => Ref.update(ref, Arr.appendAll(args))),\n Effect.repeatN(n - 1),\n Effect.zipRight(Ref.get(ref))\n )\n )\n )\n )\n )\n }\n case \"WithDefault\": {\n if (isBoolInternal(self.options as Instruction)) {\n return wizardInternal(self.options as Instruction, config)\n }\n const defaultHelp = InternalHelpDoc.p(`This option is optional - use the default?`)\n const message = pipe(\n getHelpInternal(self.options as Instruction),\n InternalHelpDoc.sequence(defaultHelp)\n )\n return InternalSelectPrompt.select({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n choices: [\n {\n title: \"Yes\",\n value: true,\n description: `use the default ${\n Option.isOption(self.fallback)\n ? Option.match(self.fallback, {\n onNone: () => \"\",\n onSome: (a) => `(${JSON.stringify(a)})`\n })\n : `(${JSON.stringify(self.fallback)})`\n }`\n },\n { title: \"No\", value: false, description: \"use a custom value\" }\n ]\n }).pipe(\n Effect.zipLeft(Console.log()),\n Effect.flatMap((useFallback) =>\n useFallback\n ? Effect.succeed(Arr.empty())\n : wizardInternal(self.options as Instruction, config)\n )\n )\n }\n case \"WithFallback\": {\n if (isBoolInternal(self.options as Instruction)) {\n return wizardInternal(self.options as Instruction, config)\n }\n // TODO: should we use the prompt directly here?\n if (InternalPrompt.isPrompt(self.effect)) {\n return wizardInternal(self.options as Instruction, config)\n }\n const defaultHelp = InternalHelpDoc.p(`Try load this option from the environment?`)\n const message = pipe(\n getHelpInternal(self.options as Instruction),\n InternalHelpDoc.sequence(defaultHelp)\n )\n return InternalSelectPrompt.select({\n message: InternalHelpDoc.toAnsiText(message).trimEnd(),\n choices: [\n { title: `Use environment variables`, value: true },\n { title: \"Custom\", value: false }\n ]\n }).pipe(\n Effect.zipLeft(Console.log()),\n Effect.flatMap((useFallback) =>\n useFallback\n ? Effect.succeed(Arr.empty())\n : wizardInternal(self.options as Instruction, config)\n )\n )\n }\n }\n}\n\n// =============================================================================\n// Parsing Internals\n// =============================================================================\n\n/**\n * Returns a possible `ValidationError` when parsing the commands, leftover\n * arguments from `input` and a mapping between each flag and its values.\n */\nconst matchOptions = (\n input: ReadonlyArray<string>,\n options: ReadonlyArray<ParseableInstruction>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n [\n Option.Option<ValidationError.ValidationError>,\n ReadonlyArray<string>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ]\n> => {\n if (Arr.isNonEmptyReadonlyArray(options)) {\n return findOptions(input, options, config).pipe(\n Effect.flatMap(([otherArgs, otherOptions, map1]) => {\n if (HashMap.isEmpty(map1)) {\n return Effect.succeed([Option.none(), input, map1] as [\n Option.Option<ValidationError.ValidationError>,\n ReadonlyArray<string>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ])\n }\n return matchOptions(otherArgs, otherOptions, config).pipe(\n Effect.map(([error, otherArgs, map2]) =>\n [error, otherArgs, merge(map1, Arr.fromIterable(map2))] as [\n Option.Option<ValidationError.ValidationError>,\n ReadonlyArray<string>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ]\n )\n )\n }),\n Effect.catchAll((e) =>\n Effect.succeed([Option.some(e), input, HashMap.empty()] as [\n Option.Option<ValidationError.ValidationError>,\n ReadonlyArray<string>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ])\n )\n )\n }\n return Arr.isEmptyReadonlyArray(input)\n ? Effect.succeed([Option.none(), Arr.empty(), HashMap.empty()] as [\n Option.Option<ValidationError.ValidationError>,\n ReadonlyArray<string>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ])\n : Effect.succeed([Option.none(), input, HashMap.empty()] as [\n Option.Option<ValidationError.ValidationError>,\n ReadonlyArray<string>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ])\n}\n\n/**\n * Returns the leftover arguments, leftover options, and a mapping between the\n * first argument with its values if it corresponds to an option flag.\n */\nconst findOptions = (\n input: ReadonlyArray<string>,\n options: ReadonlyArray<ParseableInstruction>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n [\n ReadonlyArray<string>,\n ReadonlyArray<ParseableInstruction>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ],\n ValidationError.ValidationError\n> =>\n Arr.matchLeft(options, {\n onEmpty: () => Effect.succeed([input, Arr.empty(), HashMap.empty()]),\n onNonEmpty: (head, tail) =>\n parseCommandLine(head, input, config).pipe(\n Effect.flatMap(({ leftover, parsed }) =>\n Option.match(parsed, {\n onNone: () =>\n findOptions(leftover, tail, config).pipe(Effect.map(([nextArgs, nextOptions, map]) =>\n [nextArgs, Arr.prepend(nextOptions, head), map] as [\n ReadonlyArray<string>,\n ReadonlyArray<ParseableInstruction>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ]\n )),\n onSome: ({ name, values }) =>\n Effect.succeed([leftover, tail, HashMap.make([name, values])] as [\n ReadonlyArray<string>,\n ReadonlyArray<ParseableInstruction>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ])\n })\n ),\n Effect.catchTags({\n CorrectedFlag: (e) =>\n findOptions(input, tail, config).pipe(\n Effect.catchSome(() => Option.some(Effect.fail(e))),\n Effect.flatMap(([otherArgs, otherOptions, map]) =>\n Effect.fail(e).pipe(\n Effect.when(() => HashMap.isEmpty(map)),\n Effect.as([otherArgs, Arr.prepend(otherOptions, head), map] as [\n ReadonlyArray<string>,\n ReadonlyArray<ParseableInstruction>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ])\n )\n )\n ),\n MissingFlag: () =>\n findOptions(input, tail, config).pipe(\n Effect.map(([otherArgs, otherOptions, map]) =>\n [otherArgs, Arr.prepend(otherOptions, head), map] as [\n ReadonlyArray<string>,\n ReadonlyArray<ParseableInstruction>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ]\n )\n ),\n UnclusteredFlag: (e) =>\n matchUnclustered(e.unclustered, e.rest, options, config).pipe(\n Effect.catchAll(() => Effect.fail(e))\n )\n })\n )\n })\n\ninterface ParsedCommandLine {\n readonly parsed: Option.Option<{\n readonly name: string\n readonly values: ReadonlyArray<string>\n }>\n readonly leftover: ReadonlyArray<string>\n}\n\nconst CLUSTERED_REGEX = /^-{1}([^-]{2,}$)/\nconst FLAG_REGEX = /^(--[^=]+)(?:=(.+))?$/\n\n/**\n * Normalizes the leading command-line argument by performing the following:\n * 1. If a clustered series of short command-line options is encountered,\n * uncluster the options and return a `ValidationError.UnclusteredFlag`\n * to be handled later on in the parsing algorithm\n * 2. If a long command-line option with a value is encountered, ensure that\n * the option and it's value are separated (i.e. `--option=value` becomes\n * [\"--option\", \"value\"])\n */\nconst processArgs = (\n args: ReadonlyArray<string>\n): Effect.Effect<ReadonlyArray<string>, ValidationError.ValidationError> =>\n Arr.matchLeft(args, {\n onEmpty: () => Effect.succeed(Arr.empty()),\n onNonEmpty: (head, tail) => {\n const value = head.trim()\n // Attempt to match clustered short command-line arguments (i.e. `-abc`)\n if (CLUSTERED_REGEX.test(value)) {\n const unclustered = value.substring(1).split(\"\").map((c) => `-${c}`)\n return Effect.fail(InternalValidationError.unclusteredFlag(\n InternalHelpDoc.empty,\n unclustered,\n tail\n ))\n }\n // Attempt to match a long command-line argument and ensure the option and\n // it's value have been separated and added back to the arguments\n if (FLAG_REGEX.test(value)) {\n const result = FLAG_REGEX.exec(value)\n if (result !== null && result[2] !== undefined) {\n return Effect.succeed<ReadonlyArray<string>>(\n Arr.appendAll([result[1], result[2]], tail)\n )\n }\n }\n // Otherwise return the original command-line arguments\n return Effect.succeed(args)\n }\n })\n\n/**\n * Processes the command-line arguments for a parseable option, returning the\n * parsed command line results, which inclue:\n * - The name of the option and its associated value(s), if any\n * - Any leftover command-line arguments\n */\nconst parseCommandLine = (\n self: ParseableInstruction,\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n): Effect.Effect<ParsedCommandLine, ValidationError.ValidationError> => {\n switch (self._tag) {\n case \"Single\": {\n return processArgs(args).pipe(Effect.flatMap((args) =>\n Arr.matchLeft(args, {\n onEmpty: () => {\n const error = InternalHelpDoc.p(`Expected to find option: '${self.fullName}'`)\n return Effect.fail(InternalValidationError.missingFlag(error))\n },\n onNonEmpty: (head, tail) => {\n const normalize = (value: string) => InternalCliConfig.normalizeCase(config, value)\n const normalizedHead = normalize(head)\n const normalizedNames = Arr.map(getNames(self), (name) => normalize(name))\n\n if (Arr.contains(normalizedNames, normalizedHead)) {\n if (InternalPrimitive.isBool(self.primitiveType)) {\n return Arr.matchLeft(tail, {\n onEmpty: () => {\n const parsed = Option.some({ name: head, values: Arr.empty() })\n return Effect.succeed({ parsed, leftover: tail })\n },\n onNonEmpty: (value, leftover) => {\n if (InternalPrimitive.isTrueValue(value)) {\n const parsed = Option.some({ name: head, values: Arr.of(\"true\") })\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n if (InternalPrimitive.isFalseValue(value)) {\n const parsed = Option.some({ name: head, values: Arr.of(\"false\") })\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n const parsed = Option.some({ name: head, values: Arr.empty() })\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover: tail })\n }\n })\n }\n return Arr.matchLeft(tail, {\n onEmpty: () => {\n const error = InternalHelpDoc.p(\n `Expected a value following option: '${self.fullName}'`\n )\n return Effect.fail(InternalValidationError.missingValue(error))\n },\n onNonEmpty: (value, leftover) => {\n const parsed = Option.some({ name: head, values: Arr.of(value) })\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n })\n }\n\n if (head.startsWith(\"-\")) {\n if (\n self.name.length > config.autoCorrectLimit + 1 &&\n InternalAutoCorrect.levensteinDistance(head, self.fullName, config) <=\n config.autoCorrectLimit\n ) {\n const error = InternalHelpDoc.p(\n `The flag '${head}' is not recognized. Did you mean '${self.fullName}'?`\n )\n return Effect.fail(InternalValidationError.correctedFlag(error))\n }\n const error = InternalHelpDoc.p(`Expected to find option: '${self.fullName}'`)\n return Effect.fail(InternalValidationError.missingFlag(error))\n }\n\n let optionIndex = -1\n let equalsValue: string | undefined = undefined\n for (let i = 0; i < tail.length; i++) {\n const arg = tail[i]\n const normalizedArg = normalize(arg)\n if (Arr.contains(normalizedNames, normalizedArg)) {\n optionIndex = i\n break\n }\n const flagMatch = FLAG_REGEX.exec(arg)\n if (flagMatch !== null) {\n const normalizedFlag = normalize(flagMatch[1])\n if (Arr.contains(normalizedNames, normalizedFlag)) {\n optionIndex = i\n equalsValue = flagMatch[2]\n break\n }\n }\n }\n\n if (optionIndex === -1) {\n const error = InternalHelpDoc.p(`Expected to find option: '${self.fullName}'`)\n return Effect.fail(InternalValidationError.missingFlag(error))\n }\n\n const rawArg = tail[optionIndex]\n const optionName = equalsValue !== undefined ? FLAG_REGEX.exec(rawArg)![1] : rawArg\n const beforeOption = Arr.prepend(tail.slice(0, optionIndex), head)\n const afterOption = tail.slice(optionIndex + 1)\n\n if (InternalPrimitive.isBool(self.primitiveType)) {\n if (equalsValue !== undefined) {\n if (InternalPrimitive.isTrueValue(equalsValue)) {\n const parsed = Option.some({ name: optionName, values: Arr.of(\"true\") })\n const leftover = Arr.appendAll(beforeOption, afterOption)\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n if (InternalPrimitive.isFalseValue(equalsValue)) {\n const parsed = Option.some({ name: optionName, values: Arr.of(\"false\") })\n const leftover = Arr.appendAll(beforeOption, afterOption)\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n }\n if (afterOption.length > 0) {\n const nextValue = afterOption[0]\n if (InternalPrimitive.isTrueValue(nextValue)) {\n const parsed = Option.some({ name: optionName, values: Arr.of(\"true\") })\n const leftover = Arr.appendAll(beforeOption, afterOption.slice(1))\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n if (InternalPrimitive.isFalseValue(nextValue)) {\n const parsed = Option.some({ name: optionName, values: Arr.of(\"false\") })\n const leftover = Arr.appendAll(beforeOption, afterOption.slice(1))\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n }\n const parsed = Option.some({ name: optionName, values: Arr.empty() })\n const leftover = Arr.appendAll(beforeOption, afterOption)\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n\n if (equalsValue !== undefined) {\n const parsed = Option.some({ name: optionName, values: Arr.of(equalsValue) })\n const leftover = Arr.appendAll(beforeOption, afterOption)\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n\n if (afterOption.length === 0) {\n const error = InternalHelpDoc.p(\n `Expected a value following option: '${self.fullName}'`\n )\n return Effect.fail(InternalValidationError.missingValue(error))\n }\n\n const optionValue = afterOption[0]\n const parsed = Option.some({ name: optionName, values: Arr.of(optionValue) })\n const leftover = Arr.appendAll(beforeOption, afterOption.slice(1))\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n })\n ))\n }\n case \"KeyValueMap\": {\n const normalizedNames = Arr.map(\n getNames(self.argumentOption),\n (name) => InternalCliConfig.normalizeCase(config, name)\n )\n return Arr.matchLeft(args, {\n onEmpty: () => Effect.succeed<ParsedCommandLine>({ parsed: Option.none(), leftover: args }),\n onNonEmpty: (head, tail) => {\n const loop = (\n args: ReadonlyArray<string>\n ): [ReadonlyArray<string>, ReadonlyArray<string>] => {\n let keyValues = Arr.empty<string>()\n let leftover = args as ReadonlyArray<string>\n while (Arr.isNonEmptyReadonlyArray(leftover)) {\n const name = Arr.headNonEmpty(leftover).trim()\n const normalizedName = InternalCliConfig.normalizeCase(config, name)\n // Can be in the form of \"--flag key1=value1 --flag key2=value2\"\n if (leftover.length >= 2 && Arr.contains(normalizedNames, normalizedName)) {\n const keyValue = leftover[1].trim()\n const [key, value] = keyValue.split(\"=\")\n if (key !== undefined && value !== undefined && value.length > 0) {\n keyValues = Arr.append(keyValues, keyValue)\n leftover = leftover.slice(2)\n continue\n }\n }\n // Can be in the form of \"--flag key1=value1 key2=value2\")\n if (name.includes(\"=\")) {\n const [key, value] = name.split(\"=\")\n if (key !== undefined && value !== undefined && value.length > 0) {\n keyValues = Arr.append(keyValues, name)\n leftover = leftover.slice(1)\n continue\n }\n }\n break\n }\n return [keyValues, leftover]\n }\n const normalizedName = InternalCliConfig.normalizeCase(config, head)\n if (Arr.contains(normalizedNames, normalizedName)) {\n const [values, leftover] = loop(tail)\n return Effect.succeed({ parsed: Option.some({ name: head, values }), leftover })\n }\n\n if (head.startsWith(\"-\")) {\n return Effect.succeed<ParsedCommandLine>({ parsed: Option.none(), leftover: args })\n }\n\n let optionIndex = -1\n for (let i = 0; i < tail.length; i++) {\n const arg = tail[i]\n const normalizedArg = InternalCliConfig.normalizeCase(config, arg)\n if (Arr.contains(normalizedNames, normalizedArg)) {\n optionIndex = i\n break\n }\n }\n\n if (optionIndex === -1) {\n return Effect.succeed<ParsedCommandLine>({ parsed: Option.none(), leftover: args })\n }\n\n const optionName = tail[optionIndex]\n const beforeOption = Arr.prepend(tail.slice(0, optionIndex), head)\n const afterOption = tail.slice(optionIndex + 1)\n const [values, remaining] = loop(afterOption)\n const leftover = Arr.appendAll(beforeOption, remaining)\n return Effect.succeed({ parsed: Option.some({ name: optionName, values }), leftover })\n }\n })\n }\n case \"Variadic\": {\n const normalizedNames = Arr.map(\n getNames(self.argumentOption),\n (name) => InternalCliConfig.normalizeCase(config, name)\n )\n let optionName: string | undefined = undefined\n let values = Arr.empty<string>()\n let unparsed = args as ReadonlyArray<string>\n let leftover = Arr.empty<string>()\n while (Arr.isNonEmptyReadonlyArray(unparsed)) {\n const name = Arr.headNonEmpty(unparsed)\n const normalizedName = InternalCliConfig.normalizeCase(config, name)\n\n if (Arr.contains(normalizedNames, normalizedName)) {\n if (optionName === undefined) {\n optionName = name\n }\n const value = unparsed[1]\n if (value !== undefined && value.length > 0) {\n values = Arr.append(values, value.trim())\n }\n unparsed = unparsed.slice(2)\n } else {\n leftover = Arr.append(leftover, Arr.headNonEmpty(unparsed))\n unparsed = unparsed.slice(1)\n }\n }\n const parsed = Option.fromNullable(optionName).pipe(\n Option.orElse(() => Option.some(self.argumentOption.fullName)),\n Option.map((name) => ({ name, values }))\n )\n return Effect.succeed<ParsedCommandLine>({ parsed, leftover })\n }\n }\n}\n\nconst matchUnclustered = (\n input: ReadonlyArray<string>,\n tail: ReadonlyArray<string>,\n options: ReadonlyArray<ParseableInstruction>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n [\n ReadonlyArray<string>,\n ReadonlyArray<ParseableInstruction>,\n HashMap.HashMap<string, ReadonlyArray<string>>\n ],\n ValidationError.ValidationError\n> => {\n if (Arr.isNonEmptyReadonlyArray(input)) {\n const flag = Arr.headNonEmpty(input)\n const otherFlags = Arr.tailNonEmpty(input)\n return findOptions(Arr.of(flag), options, config).pipe(\n Effect.flatMap(([_, opts1, map1]) => {\n if (HashMap.isEmpty(map1)) {\n return Effect.fail(\n InternalValidationError.unclusteredFlag(\n InternalHelpDoc.empty,\n Arr.empty(),\n tail\n )\n )\n }\n return matchUnclustered(otherFlags, tail, opts1, config).pipe(\n Effect.map((\n [_, opts2, map2]\n ) => [tail, opts2, merge(map1, Arr.fromIterable(map2))])\n )\n })\n )\n }\n return Effect.succeed([tail, options, HashMap.empty()])\n}\n\n/**\n * Sums the list associated with the same key.\n */\nconst merge = (\n map1: HashMap.HashMap<string, ReadonlyArray<string>>,\n map2: ReadonlyArray<[string, ReadonlyArray<string>]>\n): HashMap.HashMap<string, ReadonlyArray<string>> => {\n if (Arr.isNonEmptyReadonlyArray(map2)) {\n const head = Arr.headNonEmpty(map2)\n const tail = Arr.tailNonEmpty(map2)\n const newMap = Option.match(HashMap.get(map1, head[0]), {\n onNone: () => HashMap.set(map1, head[0], head[1]),\n onSome: (elems) => HashMap.set(map1, head[0], Arr.appendAll(elems, head[1]))\n })\n return merge(newMap, tail)\n }\n return map1\n}\n\n// =============================================================================\n// Completion Internals\n// =============================================================================\n\nconst escape = (string: string): string =>\n string\n .replaceAll(\"\\\\\", \"\\\\\\\\\")\n .replaceAll(\"'\", \"'\\\\''\")\n .replaceAll(\"[\", \"\\\\[\")\n .replaceAll(\"]\", \"\\\\]\")\n .replaceAll(\":\", \"\\\\:\")\n .replaceAll(\"$\", \"\\\\$\")\n .replaceAll(\"`\", \"\\\\`\")\n .replaceAll(\"(\", \"\\\\(\")\n .replaceAll(\")\", \"\\\\)\")\n\nconst getShortDescription = (self: Instruction): string => {\n switch (self._tag) {\n case \"Empty\":\n case \"Both\":\n case \"OrElse\": {\n return \"\"\n }\n case \"Single\": {\n return InternalSpan.getText(InternalHelpDoc.getSpan(self.description))\n }\n case \"KeyValueMap\":\n case \"Variadic\": {\n return getShortDescription(self.argumentOption as Instruction)\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return getShortDescription(self.options as Instruction)\n }\n }\n}\n\n/** @internal */\nexport const getBashCompletions = (self: Instruction): ReadonlyArray<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\": {\n const names = getNames(self)\n const cases = Arr.join(names, \"|\")\n const compgen = InternalPrimitive.getBashCompletions(\n self.primitiveType as InternalPrimitive.Instruction\n )\n return Arr.make(\n `${cases})`,\n ` COMPREPLY=( ${compgen} )`,\n ` return 0`,\n ` ;;`\n )\n }\n case \"KeyValueMap\":\n case \"Variadic\": {\n return getBashCompletions(self.argumentOption as Instruction)\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return getBashCompletions(self.options as Instruction)\n }\n case \"Both\":\n case \"OrElse\": {\n const left = getBashCompletions(self.left as Instruction)\n const right = getBashCompletions(self.right as Instruction)\n return Arr.appendAll(left, right)\n }\n }\n}\n\n/** @internal */\nexport const getFishCompletions = (self: Instruction): Array<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\": {\n const description = getShortDescription(self)\n const order = Order.mapInput(Order.boolean, (tuple: readonly [boolean, string]) => !tuple[0])\n return pipe(\n Arr.prepend(self.aliases, self.name),\n Arr.map((name) => [name.length === 1, name] as const),\n Arr.sort(order),\n Arr.flatMap(([isShort, name]) => Arr.make(isShort ? \"-s\" : \"-l\", name)),\n Arr.appendAll(InternalPrimitive.getFishCompletions(\n self.primitiveType as InternalPrimitive.Instruction\n )),\n Arr.appendAll(\n description.length === 0\n ? Arr.empty()\n : Arr.of(`-d '${description}'`)\n ),\n Arr.join(\" \"),\n Arr.of\n )\n }\n case \"KeyValueMap\":\n case \"Variadic\": {\n return getFishCompletions(self.argumentOption as Instruction)\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return getFishCompletions(self.options as Instruction)\n }\n case \"Both\":\n case \"OrElse\": {\n return pipe(\n getFishCompletions(self.left as Instruction),\n Arr.appendAll(getFishCompletions(self.right as Instruction))\n )\n }\n }\n}\n\ninterface ZshCompletionState {\n readonly conflicts: ReadonlyArray<string>\n readonly multiple: boolean\n}\n\n/** @internal */\nexport const getZshCompletions = (\n self: Instruction,\n state: ZshCompletionState = { conflicts: Arr.empty(), multiple: false }\n): Array<string> => {\n switch (self._tag) {\n case \"Empty\": {\n return Arr.empty()\n }\n case \"Single\": {\n const names = getNames(self)\n const description = getShortDescription(self)\n const possibleValues = InternalPrimitive.getZshCompletions(\n self.primitiveType as InternalPrimitive.Instruction\n )\n const multiple = state.multiple ? \"*\" : \"\"\n const conflicts = Arr.isNonEmptyReadonlyArray(state.conflicts)\n ? `(${Arr.join(state.conflicts, \" \")})`\n : \"\"\n return Arr.map(\n names,\n (name) => `${conflicts}${multiple}${name}[${escape(description)}]${possibleValues}`\n )\n }\n case \"KeyValueMap\": {\n return getZshCompletions(self.argumentOption as Instruction, { ...state, multiple: true })\n }\n case \"Map\":\n case \"WithDefault\":\n case \"WithFallback\": {\n return getZshCompletions(self.options as Instruction, state)\n }\n case \"Both\": {\n const left = getZshCompletions(self.left as Instruction, state)\n const right = getZshCompletions(self.right as Instruction, state)\n return Arr.appendAll(left, right)\n }\n case \"OrElse\": {\n const leftNames = getNames(self.left as Instruction)\n const rightNames = getNames(self.right as Instruction)\n const left = getZshCompletions(\n self.left as Instruction,\n { ...state, conflicts: Arr.appendAll(state.conflicts, rightNames) }\n )\n const right = getZshCompletions(\n self.right as Instruction,\n { ...state, conflicts: Arr.appendAll(state.conflicts, leftNames) }\n )\n return Arr.appendAll(left, right)\n }\n case \"Variadic\": {\n return Option.isSome(self.max) && self.max.value > 1\n ? getZshCompletions(self.argumentOption as Instruction, { ...state, multiple: true })\n : getZshCompletions(self.argumentOption as Instruction, state)\n }\n }\n}\n","import * as LogLevel from \"effect/LogLevel\"\nimport * as Option from \"effect/Option\"\nimport type * as BuiltInOptions from \"../BuiltInOptions.js\"\nimport type * as Command from \"../CommandDescriptor.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Options from \"../Options.js\"\nimport type * as Usage from \"../Usage.js\"\nimport * as InternalOptions from \"./options.js\"\n\n/** @internal */\nexport const setLogLevel = (\n level: LogLevel.LogLevel\n): BuiltInOptions.BuiltInOptions => ({\n _tag: \"SetLogLevel\",\n level\n})\n\n/** @internal */\nexport const showCompletions = (\n shellType: BuiltInOptions.BuiltInOptions.ShellType\n): BuiltInOptions.BuiltInOptions => ({\n _tag: \"ShowCompletions\",\n shellType\n})\n\n/** @internal */\nexport const showHelp = (\n usage: Usage.Usage,\n helpDoc: HelpDoc.HelpDoc\n): BuiltInOptions.BuiltInOptions => ({\n _tag: \"ShowHelp\",\n usage,\n helpDoc\n})\n\n/** @internal */\nexport const showWizard = (command: Command.Command<unknown>): BuiltInOptions.BuiltInOptions => ({\n _tag: \"ShowWizard\",\n command\n})\n\n/** @internal */\nexport const showVersion: BuiltInOptions.BuiltInOptions = {\n _tag: \"ShowVersion\"\n}\n\n/** @internal */\nexport const isShowCompletions = (\n self: BuiltInOptions.BuiltInOptions\n): self is BuiltInOptions.ShowCompletions => self._tag === \"ShowCompletions\"\n\n/** @internal */\nexport const isShowHelp = (self: BuiltInOptions.BuiltInOptions): self is BuiltInOptions.ShowHelp =>\n self._tag === \"ShowHelp\"\n\n/** @internal */\nexport const isShowWizard = (\n self: BuiltInOptions.BuiltInOptions\n): self is BuiltInOptions.ShowWizard => self._tag === \"ShowWizard\"\n\n/** @internal */\nexport const isShowVersion = (\n self: BuiltInOptions.BuiltInOptions\n): self is BuiltInOptions.ShowVersion => self._tag === \"ShowVersion\"\n\n/** @internal */\nexport const completionsOptions: Options.Options<\n Option.Option<BuiltInOptions.BuiltInOptions.ShellType>\n> = InternalOptions.choiceWithValue(\"completions\", [\n [\"sh\", \"bash\" as const],\n [\"bash\", \"bash\" as const],\n [\"fish\", \"fish\" as const],\n [\"zsh\", \"zsh\" as const]\n]).pipe(\n InternalOptions.optional,\n InternalOptions.withDescription(\"Generate a completion script for a specific shell.\")\n)\n\n/** @internal */\nexport const logLevelOptions: Options.Options<\n Option.Option<LogLevel.LogLevel>\n> = InternalOptions.choiceWithValue(\n \"log-level\",\n LogLevel.allLevels.map((level) => [level._tag.toLowerCase(), level] as const)\n).pipe(\n InternalOptions.optional,\n InternalOptions.withDescription(\"Sets the minimum log level for a command.\")\n)\n\n/** @internal */\nexport const helpOptions: Options.Options<boolean> = InternalOptions.boolean(\"help\").pipe(\n InternalOptions.withAlias(\"h\"),\n InternalOptions.withDescription(\"Show the help documentation for a command.\")\n)\n\n/** @internal */\nexport const versionOptions: Options.Options<boolean> = InternalOptions.boolean(\"version\").pipe(\n InternalOptions.withDescription(\"Show the version of the application.\")\n)\n\n/** @internal */\nexport const wizardOptions: Options.Options<boolean> = InternalOptions.boolean(\"wizard\").pipe(\n InternalOptions.withDescription(\"Start wizard mode for a command.\")\n)\n\n/** @internal */\nexport const builtIns = InternalOptions.all({\n completions: completionsOptions,\n logLevel: logLevelOptions,\n help: helpOptions,\n wizard: wizardOptions,\n version: versionOptions\n})\n\n/** @internal */\nexport const builtInOptions = <A>(\n command: Command.Command<A>,\n usage: Usage.Usage,\n helpDoc: HelpDoc.HelpDoc\n): Options.Options<Option.Option<BuiltInOptions.BuiltInOptions>> =>\n InternalOptions.map(builtIns, (builtIn) => {\n if (Option.isSome(builtIn.completions)) {\n return Option.some(showCompletions(builtIn.completions.value))\n }\n if (Option.isSome(builtIn.logLevel)) {\n return Option.some(setLogLevel(builtIn.logLevel.value))\n }\n if (builtIn.help) {\n return Option.some(showHelp(usage, helpDoc))\n }\n if (builtIn.wizard) {\n return Option.some(showWizard(command))\n }\n if (builtIn.version) {\n return Option.some(showVersion)\n }\n return Option.none()\n })\n","/**\n * @since 1.0.0\n */\nimport type { AnsiDoc } from \"@effect/printer-ansi/AnsiDoc\"\nimport type { NonEmptyReadonlyArray } from \"effect/Array\"\nimport type { Span } from \"./HelpDoc/Span.js\"\nimport * as InternalHelpDoc from \"./internal/helpDoc.js\"\n\n/**\n * A `HelpDoc` models the full documentation for a command-line application.\n *\n * `HelpDoc` is composed of optional header and footers, and in-between, a\n * list of HelpDoc-level content items.\n *\n * HelpDoc-level content items, in turn, can be headers, paragraphs, description\n * lists, and enumerations.\n *\n * A `HelpDoc` can be converted into plaintext, JSON, and HTML.\n *\n * @since 1.0.0\n * @category models\n */\nexport type HelpDoc = Empty | Header | Paragraph | DescriptionList | Enumeration | Sequence\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Empty {\n readonly _tag: \"Empty\"\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Header {\n readonly _tag: \"Header\"\n readonly value: Span\n readonly level: number\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Paragraph {\n readonly _tag: \"Paragraph\"\n readonly value: Span\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface DescriptionList {\n readonly _tag: \"DescriptionList\"\n readonly definitions: NonEmptyReadonlyArray<readonly [Span, HelpDoc]>\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Enumeration {\n readonly _tag: \"Enumeration\"\n readonly elements: NonEmptyReadonlyArray<HelpDoc>\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Sequence {\n readonly _tag: \"Sequence\"\n readonly left: HelpDoc\n readonly right: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isEmpty: (helpDoc: HelpDoc) => helpDoc is Empty = InternalHelpDoc.isEmpty\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isHeader: (helpDoc: HelpDoc) => helpDoc is Header = InternalHelpDoc.isHeader\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isParagraph: (helpDoc: HelpDoc) => helpDoc is Paragraph = InternalHelpDoc.isParagraph\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isDescriptionList: (helpDoc: HelpDoc) => helpDoc is DescriptionList = InternalHelpDoc.isDescriptionList\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isEnumeration: (helpDoc: HelpDoc) => helpDoc is Enumeration = InternalHelpDoc.isEnumeration\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isSequence: (helpDoc: HelpDoc) => helpDoc is Sequence = InternalHelpDoc.isSequence\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const empty: HelpDoc = InternalHelpDoc.empty\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const blocks: (helpDocs: Iterable<HelpDoc>) => HelpDoc = InternalHelpDoc.blocks\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const h1: (value: string | Span) => HelpDoc = InternalHelpDoc.h1\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const h2: (value: string | Span) => HelpDoc = InternalHelpDoc.h2\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const h3: (value: string | Span) => HelpDoc = InternalHelpDoc.h3\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const p: (value: string | Span) => HelpDoc = InternalHelpDoc.p\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const descriptionList: (\n definitions: NonEmptyReadonlyArray<[Span, HelpDoc]>\n) => HelpDoc = InternalHelpDoc.descriptionList\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const enumeration: (elements: NonEmptyReadonlyArray<HelpDoc>) => HelpDoc = InternalHelpDoc.enumeration\n\n/**\n * @since 1.0.0\n * @category getters\n */\nexport const getSpan: (self: HelpDoc) => Span = InternalHelpDoc.getSpan\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const sequence: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (that: HelpDoc): (self: HelpDoc) => HelpDoc\n /**\n * @since 1.0.0\n * @category combinators\n */\n (self: HelpDoc, that: HelpDoc): HelpDoc\n} = InternalHelpDoc.sequence\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const orElse: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (that: HelpDoc): (self: HelpDoc) => HelpDoc\n /**\n * @since 1.0.0\n * @category combinators\n */\n (self: HelpDoc, that: HelpDoc): HelpDoc\n} = InternalHelpDoc.orElse\n\n/**\n * @since 1.0.0\n * @category mapping\n */\nexport const mapDescriptionList: {\n /**\n * @since 1.0.0\n * @category mapping\n */\n (f: (span: Span, helpDoc: HelpDoc) => [Span, HelpDoc]): (self: HelpDoc) => HelpDoc\n /**\n * @since 1.0.0\n * @category mapping\n */\n (self: HelpDoc, f: (span: Span, helpDoc: HelpDoc) => [Span, HelpDoc]): HelpDoc\n} = InternalHelpDoc.mapDescriptionList\n\n/**\n * @since 1.0.0\n * @category rendering\n */\nexport const toAnsiDoc: (self: HelpDoc) => AnsiDoc = InternalHelpDoc.toAnsiDoc\n\n/**\n * @since 1.0.0\n * @category rendering\n */\nexport const toAnsiText: (self: HelpDoc) => string = InternalHelpDoc.toAnsiText\n","/**\n * @since 1.0.0\n */\nimport type { FileSystem } from \"@effect/platform/FileSystem\"\nimport type { Path } from \"@effect/platform/Path\"\nimport type { QuitException, Terminal } from \"@effect/platform/Terminal\"\nimport type { NonEmptyArray } from \"effect/Array\"\nimport type { Config } from \"effect/Config\"\nimport type { Effect } from \"effect/Effect\"\nimport type { Either } from \"effect/Either\"\nimport type { HashMap } from \"effect/HashMap\"\nimport type { Option } from \"effect/Option\"\nimport type { Pipeable } from \"effect/Pipeable\"\nimport type { Redacted } from \"effect/Redacted\"\nimport type { Schema } from \"effect/Schema\"\nimport type { Secret } from \"effect/Secret\"\nimport type { CliConfig } from \"./CliConfig.js\"\nimport type { HelpDoc } from \"./HelpDoc.js\"\nimport * as InternalOptions from \"./internal/options.js\"\nimport type { Primitive } from \"./Primitive.js\"\nimport type { Prompt } from \"./Prompt.js\"\nimport type { Usage } from \"./Usage.js\"\nimport type { ValidationError } from \"./ValidationError.js\"\n\n/**\n * @since 1.0.0\n * @category symbols\n */\nexport const OptionsTypeId: unique symbol = InternalOptions.OptionsTypeId\n\n/**\n * @since 1.0.0\n * @category symbols\n */\nexport type OptionsTypeId = typeof OptionsTypeId\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Options<A> extends Options.Variance<A>, Pipeable {}\n\n/**\n * @since 1.0.0\n */\nexport declare namespace Options {\n /**\n * @since 1.0.0\n * @category models\n */\n export interface Variance<A> {\n readonly [OptionsTypeId]: {\n _A: (_: never) => A\n }\n }\n\n /**\n * @since 1.0.0\n * @category models\n */\n export interface BooleanOptionsConfig {\n readonly ifPresent?: boolean\n readonly negationNames?: ReadonlyArray<string>\n readonly aliases?: ReadonlyArray<string>\n }\n\n /**\n * @since 1.0.0\n * @category models\n */\n export interface PathOptionsConfig {\n readonly exists?: Primitive.PathExists\n }\n}\n\n/**\n * @since 1.0.0\n */\nexport declare namespace All {\n /**\n * @since 1.0.0\n */\n export type OptionsAny = Options<any>\n\n /**\n * @since 1.0.0\n */\n export type ReturnIterable<T extends Iterable<OptionsAny>> = [T] extends [Iterable<Options.Variance<infer A>>] ?\n Options<Array<A>>\n : never\n\n /**\n * @since 1.0.0\n */\n export type ReturnTuple<T extends ReadonlyArray<unknown>> = Options<\n T[number] extends never ? []\n : {\n -readonly [K in keyof T]: [T[K]] extends [Options.Variance<infer _A>] ? _A : never\n }\n > extends infer X ? X : never\n\n /**\n * @since 1.0.0\n */\n export type ReturnObject<T> = [T] extends [{ [K: string]: OptionsAny }] ? Options<\n {\n -readonly [K in keyof T]: [T[K]] extends [Options.Variance<infer _A>] ? _A : never\n }\n >\n : never\n\n /**\n * @since 1.0.0\n */\n export type Return<\n Arg extends Iterable<OptionsAny> | Record<string, OptionsAny>\n > = [Arg] extends [ReadonlyArray<OptionsAny>] ? ReturnTuple<Arg>\n : [Arg] extends [Iterable<OptionsAny>] ? ReturnIterable<Arg>\n : [Arg] extends [Record<string, OptionsAny>] ? ReturnObject<Arg>\n : never\n}\n\n// =============================================================================\n// Refinements\n// =============================================================================\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isOptions: (u: unknown) => u is Options<unknown> = InternalOptions.isOptions\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const all: <\n const Arg extends Iterable<Options<any>> | Record<string, Options<any>>\n>(arg: Arg) => All.Return<Arg> = InternalOptions.all\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const boolean: (name: string, options?: Options.BooleanOptionsConfig) => Options<boolean> =\n InternalOptions.boolean\n\n/**\n * Constructs command-line `Options` that represent a choice between several\n * inputs. The input will be mapped to it's associated value during parsing.\n *\n * **Example**\n *\n * ```ts\n * import * as Options from \"@effect/cli/Options\"\n *\n * export const animal: Options.Options<\"dog\" | \"cat\"> = Options.choice(\n * \"animal\",\n * [\"dog\", \"cat\"]\n * )\n * ```\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const choice: <A extends string, C extends ReadonlyArray<A>>(\n name: string,\n choices: C\n) => Options<C[number]> = InternalOptions.choice\n\n/**\n * Constructs command-line `Options` that represent a choice between several\n * inputs. The input will be mapped to it's associated value during parsing.\n *\n * **Example**\n *\n * ```ts\n * import * as Options from \"@effect/cli/Options\"\n * import * as Data from \"effect/Data\"\n *\n * export type Animal = Dog | Cat\n *\n * export interface Dog {\n * readonly _tag: \"Dog\"\n * }\n *\n * export const Dog = Data.tagged<Dog>(\"Dog\")\n *\n * export interface Cat {\n * readonly _tag: \"Cat\"\n * }\n *\n * export const Cat = Data.tagged<Cat>(\"Cat\")\n *\n * export const animal: Options.Options<Animal> = Options.choiceWithValue(\"animal\", [\n * [\"dog\", Dog()],\n * [\"cat\", Cat()],\n * ])\n * ```\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const choiceWithValue: <C extends ReadonlyArray<[string, any]>>(\n name: string,\n choices: C\n) => Options<C[number][1]> = InternalOptions.choiceWithValue\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const date: (name: string) => Options<globalThis.Date> = InternalOptions.date\n\n/**\n * Creates a parameter expecting path to a directory.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const directory: (name: string, config?: Options.PathOptionsConfig) => Options<string> =\n InternalOptions.directory\n\n/**\n * Creates a parameter expecting path to a file.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const file: (name: string, config?: Options.PathOptionsConfig) => Options<string> = InternalOptions.file\n\n/**\n * Creates a parameter expecting path to a file and reads its contents.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const fileContent: (name: string) => Options<readonly [path: string, content: Uint8Array]> =\n InternalOptions.fileContent\n\n/**\n * Creates a parameter expecting path to a file and parse its contents.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const fileParse: (name: string, format?: \"json\" | \"yaml\" | \"ini\" | \"toml\" | undefined) => Options<unknown> =\n InternalOptions.fileParse\n\n/**\n * Creates a parameter expecting path to a file, parse its contents and validate\n * it with a Schema.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const fileSchema: <I, A>(\n name: string,\n schema: Schema<A, I, FileSystem | Path | Terminal>,\n format?: \"json\" | \"yaml\" | \"ini\" | \"toml\" | undefined\n) => Options<A> = InternalOptions.fileSchema\n\n/**\n * Creates a parameter expecting path to a file and reads its contents.\n *\n * @since 1.0.0\n * @category constructors\n */\nexport const fileText: (name: string) => Options<readonly [path: string, content: string]> = InternalOptions.fileText\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const float: (name: string) => Options<number> = InternalOptions.float\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const getHelp: <A>(self: Options<A>) => HelpDoc = InternalOptions.getHelp\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const getIdentifier: <A>(self: Options<A>) => Option<string> = InternalOptions.getIdentifier\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const getUsage: <A>(self: Options<A>) => Usage = InternalOptions.getUsage\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const integer: (name: string) => Options<number> = InternalOptions.integer\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const keyValueMap: (option: string | Options<string>) => Options<HashMap<string, string>> =\n InternalOptions.keyValueMap\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const none: Options<void> = InternalOptions.none\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const redacted: (name: string) => Options<Redacted> = InternalOptions.redacted\n\n/**\n * @since 1.0.0\n * @category constructors\n * @deprecated\n */\nexport const secret: (name: string) => Options<Secret> = InternalOptions.secret\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const text: (name: string) => Options<string> = InternalOptions.text\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const atMost: {\n // =============================================================================\n // Combinators\n // =============================================================================\n\n /**\n * @since 1.0.0\n * @category combinators\n */\n (times: number): <A>(self: Options<A>) => Options<Array<A>>\n // =============================================================================\n // Combinators\n // =============================================================================\n\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, times: number): Options<Array<A>>\n} = InternalOptions.atMost\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const atLeast: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (times: 0): <A>(self: Options<A>) => Options<Array<A>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n (times: number): <A>(self: Options<A>) => Options<NonEmptyArray<A>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, times: 0): Options<Array<A>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, times: number): Options<NonEmptyArray<A>>\n} = InternalOptions.atLeast\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const between: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (min: 0, max: number): <A>(self: Options<A>) => Options<Array<A>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n (min: number, max: number): <A>(self: Options<A>) => Options<NonEmptyArray<A>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, min: 0, max: number): Options<Array<A>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, min: number, max: number): Options<NonEmptyArray<A>>\n} = InternalOptions.between\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const filterMap: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(f: (a: A) => Option<B>, message: string): (self: Options<A>) => Options<B>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, f: (a: A) => Option<B>, message: string): Options<B>\n} = InternalOptions.filterMap\n\n/**\n * Returns `true` if the specified `Options` is a boolean flag, `false`\n * otherwise.\n *\n * @since 1.0.0\n * @category combinators\n */\nexport const isBool: <A>(self: Options<A>) => boolean = InternalOptions.isBool\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const map: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(f: (a: A) => B): (self: Options<A>) => Options<B>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, f: (a: A) => B): Options<B>\n} = InternalOptions.map\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const mapEffect: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(f: (a: A) => Effect<B, ValidationError, FileSystem | Path | Terminal>): (self: Options<A>) => Options<B>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(\n self: Options<A>,\n f: (a: A) => Effect<B, ValidationError, FileSystem | Path | Terminal>\n ): Options<B>\n} = InternalOptions.mapEffect\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const mapTryCatch: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(f: (a: A) => B, onError: (e: unknown) => HelpDoc): (self: Options<A>) => Options<B>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, f: (a: A) => B, onError: (e: unknown) => HelpDoc): Options<B>\n} = InternalOptions.mapTryCatch\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const optional: <A>(self: Options<A>) => Options<Option<A>> = InternalOptions.optional\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const orElse: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(that: Options<A>): <B>(self: Options<B>) => Options<A | B>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, that: Options<B>): Options<A | B>\n} = InternalOptions.orElse\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const orElseEither: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(that: Options<A>): <B>(self: Options<B>) => Options<Either<A, B>>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, that: Options<B>): Options<Either<A, B>>\n} = InternalOptions.orElseEither\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const parse: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (args: HashMap<string, ReadonlyArray<string>>, config: CliConfig): <A>(self: Options<A>) => Effect<A, ValidationError, FileSystem>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(\n self: Options<A>,\n args: HashMap<string, ReadonlyArray<string>>,\n config: CliConfig\n ): Effect<A, ValidationError, FileSystem>\n} = InternalOptions.parse\n\n/**\n * Indicates that the specified command-line option can be repeated `0` or more\n * times.\n *\n * **NOTE**: if the command-line option is not provided, and empty array will be\n * returned as the value for said option.\n *\n * @since 1.0.0\n * @category combinators\n */\nexport const repeated: <A>(self: Options<A>) => Options<Array<A>> = InternalOptions.repeated\n\n/**\n * Processes the provided command-line arguments, searching for the specified\n * `Options`.\n *\n * Returns an `Option<ValidationError>`, any leftover arguments, and the\n * constructed value of type `A`. The possible error inside\n * `Option<ValidationError>` would only be triggered if there is an error when\n * parsing the command-line arguments. This is because `ValidationError`s are\n * also used internally to control the end of the command-line arguments (i.e.\n * the command-line symbol `--`) corresponding to options.\n *\n * @since 1.0.0\n * @category combinators\n */\nexport const processCommandLine: {\n /**\n * Processes the provided command-line arguments, searching for the specified\n * `Options`.\n *\n * Returns an `Option<ValidationError>`, any leftover arguments, and the\n * constructed value of type `A`. The possible error inside\n * `Option<ValidationError>` would only be triggered if there is an error when\n * parsing the command-line arguments. This is because `ValidationError`s are\n * also used internally to control the end of the command-line arguments (i.e.\n * the command-line symbol `--`) corresponding to options.\n *\n * @since 1.0.0\n * @category combinators\n */\n (args: ReadonlyArray<string>, config: CliConfig): <A>(\n self: Options<A>\n ) => Effect<\n [Option<ValidationError>, Array<string>, A],\n ValidationError,\n FileSystem | Path | Terminal\n >\n /**\n * Processes the provided command-line arguments, searching for the specified\n * `Options`.\n *\n * Returns an `Option<ValidationError>`, any leftover arguments, and the\n * constructed value of type `A`. The possible error inside\n * `Option<ValidationError>` would only be triggered if there is an error when\n * parsing the command-line arguments. This is because `ValidationError`s are\n * also used internally to control the end of the command-line arguments (i.e.\n * the command-line symbol `--`) corresponding to options.\n *\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, args: ReadonlyArray<string>, config: CliConfig): Effect<\n [Option<ValidationError>, Array<string>, A],\n ValidationError,\n FileSystem | Path | Terminal\n >\n} = InternalOptions.processCommandLine\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withAlias: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (alias: string): <A>(self: Options<A>) => Options<A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, alias: string): Options<A>\n} = InternalOptions.withAlias\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withDefault: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <const B>(fallback: B): <A>(self: Options<A>) => Options<B | A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, const B>(self: Options<A>, fallback: B): Options<A | B>\n} = InternalOptions.withDefault\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withFallbackConfig: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <B>(config: Config<B>): <A>(self: Options<A>) => Options<B | A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, config: Config<B>): Options<A | B>\n} = InternalOptions.withFallbackConfig\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withFallbackPrompt: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <B>(prompt: Prompt<B>): <A>(self: Options<A>) => Options<B | A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, B>(self: Options<A>, prompt: Prompt<B>): Options<A | B>\n} = InternalOptions.withFallbackPrompt\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withDescription: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (description: string): <A>(self: Options<A>) => Options<A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, description: string): Options<A>\n} = InternalOptions.withDescription\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withPseudoName: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (pseudoName: string): <A>(self: Options<A>) => Options<A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, pseudoName: string): Options<A>\n} = InternalOptions.withPseudoName\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withSchema: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, I extends A, B>(schema: Schema<B, I, FileSystem | Path | Terminal>): (self: Options<A>) => Options<B>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, I extends A, B>(self: Options<A>, schema: Schema<B, I, FileSystem | Path | Terminal>): Options<B>\n} = InternalOptions.withSchema\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const wizard: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (config: CliConfig): <A>(\n self: Options<A>\n ) => Effect<\n Array<string>,\n QuitException | ValidationError,\n FileSystem | Path | Terminal\n >\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A>(self: Options<A>, config: CliConfig): Effect<\n Array<string>,\n QuitException | ValidationError,\n FileSystem | Path | Terminal\n >\n} = InternalOptions.wizard\n","import { dual } from \"effect/Function\"\nimport type * as BuiltInOption from \"../BuiltInOptions.js\"\nimport type * as CommandDirective from \"../CommandDirective.js\"\n\n/** @internal */\nexport const builtIn = (\n option: BuiltInOption.BuiltInOptions\n): CommandDirective.CommandDirective<never> => ({\n _tag: \"BuiltIn\",\n option\n})\n\n/** @internal */\nexport const userDefined = <A>(\n leftover: ReadonlyArray<string>,\n value: A\n): CommandDirective.CommandDirective<A> => ({\n _tag: \"UserDefined\",\n leftover,\n value\n})\n\n/** @internal */\nexport const isBuiltIn = <A>(\n self: CommandDirective.CommandDirective<A>\n): self is CommandDirective.BuiltIn => self._tag === \"BuiltIn\"\n\n/** @internal */\nexport const isUserDefined = <A>(\n self: CommandDirective.CommandDirective<A>\n): self is CommandDirective.UserDefined<A> => self._tag === \"UserDefined\"\n\n/** @internal */\nexport const map = dual<\n <A, B>(\n f: (a: A) => B\n ) => (self: CommandDirective.CommandDirective<A>) => CommandDirective.CommandDirective<B>,\n <A, B>(\n self: CommandDirective.CommandDirective<A>,\n f: (a: A) => B\n ) => CommandDirective.CommandDirective<B>\n>(2, (self, f) => isUserDefined(self) ? userDefined(self.leftover, f(self.value)) : self)\n","import type * as FileSystem from \"@effect/platform/FileSystem\"\nimport type * as Path from \"@effect/platform/Path\"\nimport type * as Terminal from \"@effect/platform/Terminal\"\nimport * as Color from \"@effect/printer-ansi/Color\"\nimport * as Arr from \"effect/Array\"\nimport * as Console from \"effect/Console\"\nimport * as Effect from \"effect/Effect\"\nimport * as Either from \"effect/Either\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as HashMap from \"effect/HashMap\"\nimport * as HashSet from \"effect/HashSet\"\nimport * as Option from \"effect/Option\"\nimport * as Order from \"effect/Order\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport * as Ref from \"effect/Ref\"\nimport * as SynchronizedRef from \"effect/SynchronizedRef\"\nimport type * as Args from \"../Args.js\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as Descriptor from \"../CommandDescriptor.js\"\nimport type * as Directive from \"../CommandDirective.js\"\nimport * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Span from \"../HelpDoc/Span.js\"\nimport * as Options from \"../Options.js\"\nimport type * as Prompt from \"../Prompt.js\"\nimport type * as Usage from \"../Usage.js\"\nimport type * as ValidationError from \"../ValidationError.js\"\nimport * as InternalArgs from \"./args.js\"\nimport * as InternalBuiltInOptions from \"./builtInOptions.js\"\nimport * as InternalCliConfig from \"./cliConfig.js\"\nimport * as InternalCommandDirective from \"./commandDirective.js\"\nimport * as InternalHelpDoc from \"./helpDoc.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\nimport * as InternalOptions from \"./options.js\"\nimport * as InternalPrompt from \"./prompt.js\"\nimport * as InternalSelectPrompt from \"./prompt/select.js\"\nimport * as InternalUsage from \"./usage.js\"\nimport * as InternalValidationError from \"./validationError.js\"\n\nconst CommandDescriptorSymbolKey = \"@effect/cli/CommandDescriptor\"\n\n/** @internal */\nexport const TypeId: Descriptor.TypeId = Symbol.for(\n CommandDescriptorSymbolKey\n) as Descriptor.TypeId\n\n/** @internal */\nexport type Op<Tag extends string, Body = {}> = Descriptor.Command<never> & Body & {\n readonly _tag: Tag\n}\n\nconst proto = {\n [TypeId]: {\n _A: (_: never) => _\n },\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\n/** @internal */\nexport type Instruction =\n | Standard\n | GetUserInput\n | Map\n | Subcommands\n\n/** @internal */\nexport interface Standard extends\n Op<\"Standard\", {\n readonly name: string\n readonly description: HelpDoc.HelpDoc\n readonly options: Options.Options<unknown>\n readonly args: Args.Args<unknown>\n }>\n{}\n\n/** @internal */\nexport interface GetUserInput extends\n Op<\"GetUserInput\", {\n readonly name: string\n readonly description: HelpDoc.HelpDoc\n readonly prompt: Prompt.Prompt<unknown>\n }>\n{}\n\n/** @internal */\nexport interface Map extends\n Op<\"Map\", {\n readonly command: Instruction\n readonly f: (value: unknown) => Effect.Effect<\n unknown,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n }>\n{}\n\n/** @internal */\nexport interface Subcommands extends\n Op<\"Subcommands\", {\n readonly parent: Instruction\n readonly children: Arr.NonEmptyReadonlyArray<Instruction>\n }>\n{}\n\n// =============================================================================\n// Refinements\n// =============================================================================\n\n/** @internal */\nexport const isCommand = (u: unknown): u is Descriptor.Command<unknown> =>\n typeof u === \"object\" && u != null && TypeId in u\n\n/** @internal */\nexport const isStandard = (self: Instruction): self is Standard => self._tag === \"Standard\"\n\n/** @internal */\nexport const isGetUserInput = (self: Instruction): self is GetUserInput => self._tag === \"GetUserInput\"\n\n/** @internal */\nexport const isMap = (self: Instruction): self is Map => self._tag === \"Map\"\n\n/** @internal */\nexport const isSubcommands = (self: Instruction): self is Subcommands => self._tag === \"Subcommands\"\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/** @internal */\nexport const make = <Name extends string, OptionsType = void, ArgsType = void>(\n name: Name,\n options: Options.Options<OptionsType> = InternalOptions.none as any,\n args: Args.Args<ArgsType> = InternalArgs.none as any\n): Descriptor.Command<\n Descriptor.Command.ParsedStandardCommand<Name, OptionsType, ArgsType>\n> => {\n const op = Object.create(proto)\n op._tag = \"Standard\"\n op.name = name\n op.description = InternalHelpDoc.empty\n op.options = options\n op.args = args\n return op\n}\n\n/** @internal */\nexport const prompt = <Name extends string, A>(\n name: Name,\n prompt: Prompt.Prompt<A>\n): Descriptor.Command<Descriptor.Command.ParsedUserInputCommand<Name, A>> => {\n const op = Object.create(proto)\n op._tag = \"GetUserInput\"\n op.name = name\n op.description = InternalHelpDoc.empty\n op.prompt = prompt\n return op\n}\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/** @internal */\nexport const getHelp = <A>(\n self: Descriptor.Command<A>,\n config: CliConfig.CliConfig\n): HelpDoc.HelpDoc => getHelpInternal(self as Instruction, config)\n\n/** @internal */\nexport const getNames = <A>(self: Descriptor.Command<A>): HashSet.HashSet<string> =>\n HashSet.fromIterable(getNamesInternal(self as Instruction))\n\n/** @internal */\nexport const getBashCompletions = <A>(\n self: Descriptor.Command<A>,\n executable: string\n): Effect.Effect<Array<string>> => getBashCompletionsInternal(self as Instruction, executable)\n\n/** @internal */\nexport const getFishCompletions = <A>(\n self: Descriptor.Command<A>,\n executable: string\n): Effect.Effect<Array<string>> => getFishCompletionsInternal(self as Instruction, executable)\n\n/** @internal */\nexport const getZshCompletions = <A>(\n self: Descriptor.Command<A>,\n executable: string\n): Effect.Effect<Array<string>> => getZshCompletionsInternal(self as Instruction, executable)\n\n/** @internal */\nexport const getSubcommands = <A>(\n self: Descriptor.Command<A>\n): HashMap.HashMap<string, Descriptor.Command<unknown>> =>\n HashMap.fromIterable(getSubcommandsInternal(self as Instruction))\n\n/** @internal */\nexport const getUsage = <A>(self: Descriptor.Command<A>): Usage.Usage => getUsageInternal(self as Instruction)\n\n/** @internal */\nexport const map = dual<\n <A, B>(f: (a: A) => B) => (self: Descriptor.Command<A>) => Descriptor.Command<B>,\n <A, B>(self: Descriptor.Command<A>, f: (a: A) => B) => Descriptor.Command<B>\n>(2, (self, f) => mapEffect(self, (a) => Either.right(f(a))))\n\n/** @internal */\nexport const mapEffect = dual<\n <A, B>(\n f: (a: A) => Effect.Effect<\n B,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n ) => (self: Descriptor.Command<A>) => Descriptor.Command<B>,\n <A, B>(\n self: Descriptor.Command<A>,\n f: (a: A) => Effect.Effect<\n B,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n ) => Descriptor.Command<B>\n>(2, (self, f) => {\n const op = Object.create(proto)\n op._tag = \"Map\"\n op.command = self\n op.f = f\n return op\n})\n\n/** @internal */\nexport const parse = dual<\n (\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => <A>(self: Descriptor.Command<A>) => Effect.Effect<\n Directive.CommandDirective<A>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <A>(\n self: Descriptor.Command<A>,\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<\n Directive.CommandDirective<A>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(3, (self, args, config) => parseInternal(self as Instruction, args, config))\n\n/** @internal */\nexport const withDescription = dual<\n (\n help: string | HelpDoc.HelpDoc\n ) => <A>(self: Descriptor.Command<A>) => Descriptor.Command<A>,\n <A>(\n self: Descriptor.Command<A>,\n help: string | HelpDoc.HelpDoc\n ) => Descriptor.Command<A>\n>(2, (self, help) => withDescriptionInternal(self as Instruction, help))\n\n/** @internal */\nexport const withSubcommands = dual<\n <\n const Subcommands extends Arr.NonEmptyReadonlyArray<\n readonly [id: unknown, command: Descriptor.Command<any>]\n >\n >(\n subcommands: [...Subcommands]\n ) => <A>(\n self: Descriptor.Command<A>\n ) => Descriptor.Command<\n Descriptor.Command.ComputeParsedType<\n & A\n & Readonly<{ subcommand: Option.Option<Descriptor.Command.Subcommands<Subcommands>> }>\n >\n >,\n <\n A,\n const Subcommands extends Arr.NonEmptyReadonlyArray<\n readonly [id: unknown, command: Descriptor.Command<any>]\n >\n >(\n self: Descriptor.Command<A>,\n subcommands: [...Subcommands]\n ) => Descriptor.Command<\n Descriptor.Command.ComputeParsedType<\n & A\n & Readonly<{ subcommand: Option.Option<Descriptor.Command.Subcommands<Subcommands>> }>\n >\n >\n>(2, (self, subcommands) => {\n const op = Object.create(proto)\n op._tag = \"Subcommands\"\n op.parent = self\n op.children = Arr.map(subcommands, ([id, command]) => map(command, (a) => [id, a]))\n return op\n})\n\n/** @internal */\nexport const wizard = dual<\n (\n prefix: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => <A>(self: Descriptor.Command<A>) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <A>(\n self: Descriptor.Command<A>,\n prefix: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(3, (self, prefix, config) => wizardInternal(self as Instruction, prefix, config))\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst getHelpInternal = (self: Instruction, config: CliConfig.CliConfig): HelpDoc.HelpDoc => {\n switch (self._tag) {\n case \"Standard\": {\n const header = InternalHelpDoc.isEmpty(self.description)\n ? InternalHelpDoc.empty\n : InternalHelpDoc.sequence(InternalHelpDoc.h1(\"DESCRIPTION\"), self.description)\n const argsHelp = InternalArgs.getHelp(self.args)\n const argsSection = InternalHelpDoc.isEmpty(argsHelp)\n ? InternalHelpDoc.empty\n : InternalHelpDoc.sequence(InternalHelpDoc.h1(\"ARGUMENTS\"), argsHelp)\n const options = config.showBuiltIns\n ? Options.all([self.options, InternalBuiltInOptions.builtIns])\n : self.options\n const optionsHelp = InternalOptions.getHelp(options)\n const optionsSection = InternalHelpDoc.isEmpty(optionsHelp)\n ? InternalHelpDoc.empty\n : InternalHelpDoc.sequence(InternalHelpDoc.h1(\"OPTIONS\"), optionsHelp)\n return InternalHelpDoc.sequence(header, InternalHelpDoc.sequence(argsSection, optionsSection))\n }\n case \"GetUserInput\": {\n return InternalHelpDoc.isEmpty(self.description)\n ? InternalHelpDoc.empty\n : InternalHelpDoc.sequence(InternalHelpDoc.h1(\"DESCRIPTION\"), self.description)\n }\n case \"Map\": {\n return getHelpInternal(self.command, config)\n }\n case \"Subcommands\": {\n const getUsage = (\n command: Instruction,\n preceding: ReadonlyArray<Span.Span>\n ): ReadonlyArray<[Span.Span, Span.Span]> => {\n switch (command._tag) {\n case \"Standard\":\n case \"GetUserInput\": {\n const usage = InternalHelpDoc.getSpan(InternalUsage.getHelp(getUsageInternal(command)))\n const usages = Arr.append(preceding, usage)\n const finalUsage = Arr.reduce(\n usages,\n InternalSpan.empty,\n (acc, next) =>\n InternalSpan.isText(acc) && acc.value === \"\"\n ? next\n : InternalSpan.isText(next) && next.value === \"\"\n ? acc\n : InternalSpan.spans([acc, InternalSpan.space, next])\n )\n const description = InternalHelpDoc.getSpan(command.description)\n return Arr.of([finalUsage, description])\n }\n case \"Map\": {\n return getUsage(command.command, preceding)\n }\n case \"Subcommands\": {\n const parentUsage = getUsage(command.parent, preceding)\n return Option.match(Arr.head(parentUsage), {\n onNone: () =>\n Arr.flatMap(\n command.children,\n (child) => getUsage(child, preceding)\n ),\n onSome: ([usage]) => {\n const childrenUsage = Arr.flatMap(\n command.children,\n (child) => getUsage(child, Arr.append(preceding, usage))\n )\n return Arr.appendAll(parentUsage, childrenUsage)\n }\n })\n }\n }\n }\n const printSubcommands = (\n subcommands: ReadonlyArray<[Span.Span, Span.Span]>\n ): HelpDoc.HelpDoc => {\n const maxUsageLength = Arr.reduceRight(\n subcommands,\n 0,\n (max, [usage]) => Math.max(InternalSpan.size(usage), max)\n )\n const documents = Arr.map(subcommands, ([usage, desc]) =>\n InternalHelpDoc.p(\n InternalSpan.spans([\n usage,\n InternalSpan.text(\" \".repeat(maxUsageLength - InternalSpan.size(usage) + 2)),\n desc\n ])\n ))\n if (Arr.isNonEmptyReadonlyArray(documents)) {\n return InternalHelpDoc.enumeration(documents)\n }\n throw new Error(\"[BUG]: Subcommands.usage - received empty list of subcommands to print\")\n }\n return InternalHelpDoc.sequence(\n getHelpInternal(self.parent, config),\n InternalHelpDoc.sequence(\n InternalHelpDoc.h1(\"COMMANDS\"),\n printSubcommands(Arr.flatMap(\n self.children,\n (child) => getUsage(child, Arr.empty())\n ))\n )\n )\n }\n }\n}\n\nconst getNamesInternal = (self: Instruction): Array<string> => {\n switch (self._tag) {\n case \"Standard\":\n case \"GetUserInput\": {\n return Arr.of(self.name)\n }\n case \"Map\": {\n return getNamesInternal(self.command)\n }\n case \"Subcommands\": {\n return getNamesInternal(self.parent)\n }\n }\n}\n\nconst getSubcommandsInternal = (\n self: Instruction\n): Array<[string, GetUserInput | Standard]> => {\n const loop = (\n self: Instruction,\n isSubcommand: boolean\n ): Array<[string, GetUserInput | Standard]> => {\n switch (self._tag) {\n case \"Standard\":\n case \"GetUserInput\": {\n return Arr.of([self.name, self])\n }\n case \"Map\": {\n return loop(self.command, isSubcommand)\n }\n case \"Subcommands\": {\n // Ensure that we only traverse the subcommands one level deep from the\n // parent command\n return isSubcommand\n ? loop(self.parent, false)\n : Arr.flatMap(self.children, (child) => loop(child, true))\n }\n }\n }\n return loop(self, false)\n}\n\nconst getUsageInternal = (self: Instruction): Usage.Usage => {\n switch (self._tag) {\n case \"Standard\": {\n return InternalUsage.concat(\n InternalUsage.named(Arr.of(self.name), Option.none()),\n InternalUsage.concat(\n InternalOptions.getUsage(self.options),\n InternalArgs.getUsage(self.args)\n )\n )\n }\n case \"GetUserInput\": {\n return InternalUsage.named(Arr.of(self.name), Option.none())\n }\n case \"Map\": {\n return getUsageInternal(self.command)\n }\n case \"Subcommands\": {\n return InternalUsage.concat(\n getUsageInternal(self.parent),\n InternalUsage.mixed\n )\n }\n }\n}\n\nconst parseInternal = (\n self: Instruction,\n args: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n Directive.CommandDirective<any>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n> => {\n const parseCommandLine = (\n self: Standard | GetUserInput,\n args: ReadonlyArray<string>\n ): Effect.Effect<Array<string>, ValidationError.ValidationError> =>\n Arr.matchLeft(args, {\n onEmpty: () => {\n const error = InternalHelpDoc.p(`Missing command name: '${self.name}'`)\n return Effect.fail(InternalValidationError.commandMismatch(error))\n },\n onNonEmpty: (head, tail) => {\n const normalizedArgv0 = InternalCliConfig.normalizeCase(config, head)\n const normalizedCommandName = InternalCliConfig.normalizeCase(config, self.name)\n return Effect.succeed(tail).pipe(\n Effect.when(() => normalizedArgv0 === normalizedCommandName),\n Effect.flatten,\n Effect.catchTag(\"NoSuchElementException\", () => {\n const error = InternalHelpDoc.p(`Missing command name: '${self.name}'`)\n return Effect.fail(InternalValidationError.commandMismatch(error))\n })\n )\n }\n })\n switch (self._tag) {\n case \"Standard\": {\n const parseBuiltInArgs = (\n args: ReadonlyArray<string>\n ): Effect.Effect<\n Directive.CommandDirective<never>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n > =>\n Arr.matchLeft(args, {\n onEmpty: () => {\n const error = InternalHelpDoc.p(`Missing command name: '${self.name}'`)\n return Effect.fail(InternalValidationError.commandMismatch(error))\n },\n onNonEmpty: (argv0) => {\n const normalizedArgv0 = InternalCliConfig.normalizeCase(config, argv0)\n const normalizedCommandName = InternalCliConfig.normalizeCase(config, self.name)\n if (normalizedArgv0 === normalizedCommandName) {\n const help = getHelpInternal(self, config)\n const usage = getUsageInternal(self)\n const options = InternalBuiltInOptions.builtInOptions(self, usage, help)\n const argsWithoutCommand = Arr.drop(args, 1)\n return InternalOptions.processCommandLine(options, argsWithoutCommand, config)\n .pipe(\n Effect.flatMap((tuple) => tuple[2]),\n Effect.catchTag(\"NoSuchElementException\", () => {\n const error = InternalHelpDoc.p(\"No built-in option was matched\")\n return Effect.fail(InternalValidationError.noBuiltInMatch(error))\n }),\n Effect.map(InternalCommandDirective.builtIn)\n )\n }\n const error = InternalHelpDoc.p(`Missing command name: '${self.name}'`)\n return Effect.fail(InternalValidationError.commandMismatch(error))\n }\n })\n const parseUserDefinedArgs = (\n args: ReadonlyArray<string>\n ): Effect.Effect<\n Directive.CommandDirective<unknown>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n > =>\n parseCommandLine(self, args).pipe(Effect.flatMap((commandOptionsAndArgs) => {\n const [optionsAndArgs, forcedCommandArgs] = splitForcedArgs(commandOptionsAndArgs)\n return InternalOptions.processCommandLine(self.options, optionsAndArgs, config).pipe(\n Effect.flatMap(([error, commandArgs, optionsType]) =>\n InternalArgs.validate(\n self.args,\n Arr.appendAll(commandArgs, forcedCommandArgs),\n config\n ).pipe(\n Effect.catchAll((e) =>\n Option.match(error, {\n onNone: () => Effect.fail(e),\n onSome: (err) => Effect.fail(err)\n })\n ),\n Effect.map(([argsLeftover, argsType]) =>\n InternalCommandDirective.userDefined(argsLeftover, {\n name: self.name,\n options: optionsType,\n args: argsType\n })\n )\n )\n )\n )\n }))\n const exhaustiveSearch = (\n args: ReadonlyArray<string>\n ): Effect.Effect<\n Directive.CommandDirective<never>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n > => {\n if (Arr.contains(args, \"--help\") || Arr.contains(args, \"-h\")) {\n return parseBuiltInArgs(Arr.make(self.name, \"--help\"))\n }\n if (Arr.contains(args, \"--wizard\")) {\n return parseBuiltInArgs(Arr.make(self.name, \"--wizard\"))\n }\n if (Arr.contains(args, \"--version\")) {\n return parseBuiltInArgs(Arr.make(self.name, \"--version\"))\n }\n const error = InternalHelpDoc.p(`Missing command name: '${self.name}'`)\n return Effect.fail(InternalValidationError.commandMismatch(error))\n }\n return parseBuiltInArgs(args).pipe(\n Effect.orElse(() => parseUserDefinedArgs(args)),\n Effect.catchSome((e) => {\n if (InternalValidationError.isValidationError(e)) {\n if (config.finalCheckBuiltIn) {\n return Option.some(\n exhaustiveSearch(args).pipe(\n Effect.catchSome((_) =>\n InternalValidationError.isValidationError(_)\n ? Option.some(Effect.fail(e))\n : Option.none()\n )\n )\n )\n }\n return Option.some(Effect.fail(e))\n }\n return Option.none()\n })\n )\n }\n case \"GetUserInput\": {\n return parseCommandLine(self, args).pipe(\n Effect.zipRight(InternalPrompt.run(self.prompt)),\n Effect.catchTag(\"QuitException\", (e) => Effect.die(e)),\n Effect.map((value) =>\n InternalCommandDirective.userDefined(Arr.drop(args, 1), {\n name: self.name,\n value\n })\n )\n )\n }\n case \"Map\": {\n return parseInternal(self.command, args, config).pipe(\n Effect.flatMap((directive) => {\n if (InternalCommandDirective.isUserDefined(directive)) {\n return self.f(directive.value).pipe(Effect.map((value) =>\n InternalCommandDirective.userDefined(\n directive.leftover,\n value\n )\n ))\n }\n return Effect.succeed(directive)\n })\n )\n }\n case \"Subcommands\": {\n const names = getNamesInternal(self)\n const subcommands = getSubcommandsInternal(self)\n const [parentArgs, childArgs] = Arr.span(\n args,\n (arg) => !Arr.some(subcommands, ([name]) => name === arg)\n )\n const parseChildrenWith = (argsForChildren: ReadonlyArray<string>) =>\n Effect.suspend(() => {\n const iterator = self.children[Symbol.iterator]()\n const loop = (\n next: Instruction\n ): Effect.Effect<\n Directive.CommandDirective<any>,\n ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n > => {\n return parseInternal(next, argsForChildren, config).pipe(\n Effect.catchIf(InternalValidationError.isCommandMismatch, (e) => {\n const next = iterator.next()\n return next.done ? Effect.fail(e) : loop(next.value)\n })\n )\n }\n return loop(iterator.next().value!)\n })\n const parseChildren = parseChildrenWith(childArgs)\n const helpDirectiveForParent = Effect.sync(() => {\n return InternalCommandDirective.builtIn(InternalBuiltInOptions.showHelp(\n getUsageInternal(self),\n getHelpInternal(self, config)\n ))\n })\n const helpDirectiveForChild = parseChildren.pipe(\n Effect.flatMap((directive) => {\n if (\n InternalCommandDirective.isBuiltIn(directive) &&\n InternalBuiltInOptions.isShowHelp(directive.option)\n ) {\n const parentName = Option.getOrElse(Arr.head(names), () => \"\")\n const newDirective = InternalCommandDirective.builtIn(InternalBuiltInOptions.showHelp(\n InternalUsage.concat(\n InternalUsage.named(Arr.of(parentName), Option.none()),\n directive.option.usage\n ),\n directive.option.helpDoc\n ))\n return Effect.succeed(newDirective)\n }\n return Effect.fail(InternalValidationError.invalidArgument(InternalHelpDoc.empty))\n })\n )\n const wizardDirectiveForParent = Effect.sync(() =>\n InternalCommandDirective.builtIn(InternalBuiltInOptions.showWizard(self))\n )\n const wizardDirectiveForChild = parseChildren.pipe(\n Effect.flatMap((directive) => {\n if (\n InternalCommandDirective.isBuiltIn(directive) &&\n InternalBuiltInOptions.isShowWizard(directive.option)\n ) {\n return Effect.succeed(directive)\n }\n return Effect.fail(InternalValidationError.invalidArgument(InternalHelpDoc.empty))\n })\n )\n return Effect.suspend(() =>\n parseInternal(self.parent, parentArgs, config).pipe(\n Effect.flatMap((directive) => {\n switch (directive._tag) {\n case \"BuiltIn\": {\n if (InternalBuiltInOptions.isShowHelp(directive.option)) {\n // We do not want to display the child help docs if there are\n // no arguments indicating the CLI command was for the child\n return Arr.isNonEmptyReadonlyArray(childArgs)\n ? Effect.orElse(helpDirectiveForChild, () => helpDirectiveForParent)\n : helpDirectiveForParent\n }\n if (InternalBuiltInOptions.isShowWizard(directive.option)) {\n return Effect.orElse(wizardDirectiveForChild, () => wizardDirectiveForParent)\n }\n return Effect.succeed(directive)\n }\n case \"UserDefined\": {\n const args = Arr.appendAll(directive.leftover, childArgs)\n if (Arr.isNonEmptyReadonlyArray(args)) {\n return parseChildrenWith(args).pipe(\n Effect.flatMap((childDirective) => {\n if (!InternalCommandDirective.isUserDefined(childDirective)) {\n return Effect.succeed(childDirective)\n }\n const childLeftover = childDirective.leftover\n if (Arr.isEmptyReadonlyArray(childLeftover)) {\n return Effect.succeed(InternalCommandDirective.userDefined(childLeftover, {\n ...directive.value as any,\n subcommand: Option.some(childDirective.value)\n }))\n }\n const parentArgsWithLeftover = Arr.appendAll(parentArgs, childLeftover)\n return parseInternal(self.parent, parentArgsWithLeftover, config).pipe(\n Effect.flatMap((reParsedParentDirective) => {\n if (!InternalCommandDirective.isUserDefined(reParsedParentDirective)) {\n return Effect.succeed(InternalCommandDirective.userDefined(childLeftover, {\n ...directive.value as any,\n subcommand: Option.some(childDirective.value)\n }))\n }\n return Effect.succeed(InternalCommandDirective.userDefined(\n reParsedParentDirective.leftover as Array<string>,\n {\n ...reParsedParentDirective.value as any,\n subcommand: Option.some(childDirective.value)\n }\n ))\n }),\n Effect.catchAll(() =>\n Effect.succeed(InternalCommandDirective.userDefined(childLeftover, {\n ...directive.value as any,\n subcommand: Option.some(childDirective.value)\n }))\n )\n )\n }),\n Effect.catchAll((err) => {\n if (InternalValidationError.isCommandMismatch(err)) {\n const parentName = Option.getOrElse(Arr.head(names), () => \"\")\n const childNames = Arr.map(subcommands, ([name]) => `'${name}'`)\n const oneOf = childNames.length === 1 ? \"\" : \" one of\"\n const error = InternalHelpDoc.p(\n `Invalid subcommand for ${parentName} - use${oneOf} ${Arr.join(childNames, \", \")}`\n )\n return Effect.fail(InternalValidationError.commandMismatch(error))\n }\n return Effect.fail(err)\n })\n )\n }\n return Effect.succeed(InternalCommandDirective.userDefined(directive.leftover, {\n ...directive.value as any,\n subcommand: Option.none()\n }))\n }\n }\n }),\n Effect.catchSome(() =>\n Arr.isEmptyReadonlyArray(args)\n ? Option.some(helpDirectiveForParent) :\n Option.none()\n )\n )\n )\n }\n }\n}\n\nconst splitForcedArgs = (\n args: ReadonlyArray<string>\n): [Array<string>, Array<string>] => {\n const [remainingArgs, forcedArgs] = Arr.span(args, (str) => str !== \"--\")\n return [remainingArgs, Arr.drop(forcedArgs, 1)]\n}\n\nconst withDescriptionInternal = (\n self: Instruction,\n description: string | HelpDoc.HelpDoc\n): Descriptor.Command<any> => {\n switch (self._tag) {\n case \"Standard\": {\n const helpDoc = typeof description === \"string\" ? HelpDoc.p(description) : description\n const op = Object.create(proto)\n op._tag = \"Standard\"\n op.name = self.name\n op.description = helpDoc\n op.options = self.options\n op.args = self.args\n return op\n }\n case \"GetUserInput\": {\n const helpDoc = typeof description === \"string\" ? HelpDoc.p(description) : description\n const op = Object.create(proto)\n op._tag = \"GetUserInput\"\n op.name = self.name\n op.description = helpDoc\n op.prompt = self.prompt\n return op\n }\n case \"Map\": {\n return mapEffect(withDescriptionInternal(self.command, description), self.f)\n }\n case \"Subcommands\": {\n const op = Object.create(proto)\n op._tag = \"Subcommands\"\n op.parent = withDescriptionInternal(self.parent, description)\n op.children = self.children.slice()\n return op\n }\n }\n}\n\nconst argsWizardHeader = InternalSpan.code(\"Args Wizard - \")\nconst optionsWizardHeader = InternalSpan.code(\"Options Wizard - \")\n\nconst wizardInternal = (\n self: Instruction,\n prefix: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n): Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n> => {\n const loop = (\n self: Instruction,\n commandLineRef: Ref.Ref<ReadonlyArray<string>>\n ): Effect.Effect<\n ReadonlyArray<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n > => {\n switch (self._tag) {\n case \"GetUserInput\":\n case \"Standard\": {\n return Effect.gen(function*() {\n const logCurrentCommand = Ref.get(commandLineRef).pipe(Effect.flatMap((commandLine) => {\n const currentCommand = InternalHelpDoc.p(pipe(\n InternalSpan.strong(InternalSpan.highlight(\"COMMAND:\", Color.cyan)),\n InternalSpan.concat(InternalSpan.space),\n InternalSpan.concat(InternalSpan.highlight(\n Arr.join(commandLine, \" \"),\n Color.magenta\n ))\n ))\n return Console.log(InternalHelpDoc.toAnsiText(currentCommand))\n }))\n if (isStandard(self)) {\n // Log the current command line arguments\n yield* logCurrentCommand\n const commandName = InternalSpan.highlight(self.name, Color.magenta)\n // If the command has options, run the wizard for them\n if (!InternalOptions.isEmpty(self.options as InternalOptions.Instruction)) {\n const message = InternalHelpDoc.p(\n InternalSpan.concat(optionsWizardHeader, commandName)\n )\n yield* Console.log(InternalHelpDoc.toAnsiText(message))\n const options = yield* InternalOptions.wizard(self.options, config)\n yield* Ref.updateAndGet(commandLineRef, Arr.appendAll(options))\n yield* logCurrentCommand\n }\n // If the command has args, run the wizard for them\n if (!InternalArgs.isEmpty(self.args as InternalArgs.Instruction)) {\n const message = InternalHelpDoc.p(\n InternalSpan.concat(argsWizardHeader, commandName)\n )\n yield* Console.log(InternalHelpDoc.toAnsiText(message))\n const options = yield* InternalArgs.wizard(self.args, config)\n yield* Ref.updateAndGet(commandLineRef, Arr.appendAll(options))\n yield* logCurrentCommand\n }\n }\n return yield* Ref.get(commandLineRef)\n })\n }\n case \"Map\": {\n return loop(self.command, commandLineRef)\n }\n case \"Subcommands\": {\n const description = InternalHelpDoc.p(\"Select which command you would like to execute\")\n const message = InternalHelpDoc.toAnsiText(description).trimEnd()\n const makeChoice = (title: string, index: number) => ({\n title,\n value: [title, index] as const\n })\n const choices = pipe(\n getSubcommandsInternal(self),\n Arr.map(([name], index) => makeChoice(name, index))\n )\n return loop(self.parent, commandLineRef).pipe(\n Effect.zipRight(\n InternalSelectPrompt.select({ message, choices }).pipe(\n Effect.tap(([name]) => Ref.update(commandLineRef, Arr.append(name))),\n Effect.zipLeft(Console.log()),\n Effect.flatMap(([, nextIndex]) => loop(self.children[nextIndex], commandLineRef))\n )\n )\n )\n }\n }\n }\n return Ref.make(prefix).pipe(\n Effect.flatMap((commandLineRef) =>\n loop(self, commandLineRef).pipe(\n Effect.zipRight(Ref.get(commandLineRef) as Effect.Effect<Array<string>>)\n )\n )\n )\n}\n\n// =============================================================================\n// Completion Internals\n// =============================================================================\n\nconst getShortDescription = (self: Instruction): string => {\n switch (self._tag) {\n case \"Standard\": {\n return InternalSpan.getText(InternalHelpDoc.getSpan(self.description))\n }\n case \"GetUserInput\": {\n return InternalSpan.getText(InternalHelpDoc.getSpan(self.description))\n }\n case \"Map\": {\n return getShortDescription(self.command)\n }\n case \"Subcommands\": {\n return \"\"\n }\n }\n}\n\ninterface CommandInfo {\n readonly command: Standard | GetUserInput\n readonly parentCommands: ReadonlyArray<string>\n readonly subcommands: ReadonlyArray<[string, Standard | GetUserInput]>\n readonly level: number\n}\n\n/**\n * Allows for linear traversal of a `Command` data structure, accumulating state\n * based on information acquired from the command.\n */\nconst traverseCommand = <S>(\n self: Instruction,\n initialState: S,\n f: (state: S, info: CommandInfo) => Effect.Effect<S>\n): Effect.Effect<S> =>\n SynchronizedRef.make(initialState).pipe(Effect.flatMap((ref) => {\n const loop = (\n self: Instruction,\n parentCommands: ReadonlyArray<string>,\n subcommands: ReadonlyArray<[string, Standard | GetUserInput]>,\n level: number\n ): Effect.Effect<void, never, never> => {\n switch (self._tag) {\n case \"Standard\": {\n const info: CommandInfo = {\n command: self,\n parentCommands,\n subcommands,\n level\n }\n return SynchronizedRef.updateEffect(ref, (state) => f(state, info))\n }\n case \"GetUserInput\": {\n const info: CommandInfo = {\n command: self,\n parentCommands,\n subcommands,\n level\n }\n return SynchronizedRef.updateEffect(ref, (state) => f(state, info))\n }\n case \"Map\": {\n return loop(self.command, parentCommands, subcommands, level)\n }\n case \"Subcommands\": {\n const parentNames = getNamesInternal(self.parent)\n const nextSubcommands = getSubcommandsInternal(self)\n const nextParentCommands = Arr.appendAll(parentCommands, parentNames)\n // Traverse the parent command using old parent names and next subcommands\n return loop(self.parent, parentCommands, nextSubcommands, level).pipe(\n Effect.zipRight(Effect.forEach(self.children, (child) =>\n // Traverse the child command using next parent names and old subcommands\n loop(child, nextParentCommands, subcommands, level + 1)))\n )\n }\n }\n }\n return Effect.suspend(() => loop(self, Arr.empty(), Arr.empty(), 0)).pipe(\n Effect.zipRight(SynchronizedRef.get(ref))\n )\n }))\n\nconst indentAll = dual<\n (indent: number) => (self: ReadonlyArray<string>) => Array<string>,\n (self: ReadonlyArray<string>, indent: number) => Array<string>\n>(2, (self: ReadonlyArray<string>, indent: number): Array<string> => {\n const indentation = Arr.allocate(indent + 1).join(\" \")\n return Arr.map(self, (line) => `${indentation}${line}`)\n})\n\nconst getBashCompletionsInternal = (\n self: Instruction,\n executable: string\n): Effect.Effect<Array<string>> =>\n traverseCommand(\n self,\n Arr.empty<[ReadonlyArray<string>, ReadonlyArray<string>]>(),\n (state, info) => {\n const options = isStandard(info.command)\n ? Options.all([info.command.options, InternalBuiltInOptions.builtIns])\n : InternalBuiltInOptions.builtIns\n const optionNames = InternalOptions.getNames(options as InternalOptions.Instruction)\n const optionCases = isStandard(info.command)\n ? InternalOptions.getBashCompletions(info.command.options as InternalOptions.Instruction)\n : Arr.empty()\n const subcommandNames = pipe(\n info.subcommands,\n Arr.map(([name]) => name),\n Arr.sort(Order.string)\n )\n const wordList = Arr.appendAll(optionNames, subcommandNames)\n const preformatted = Arr.isEmptyReadonlyArray(info.parentCommands)\n ? Arr.of(info.command.name)\n : pipe(\n info.parentCommands,\n Arr.append(info.command.name),\n Arr.map((command) => command.replace(\"-\", \"__\"))\n )\n const caseName = Arr.join(preformatted, \",\")\n const funcName = Arr.join(preformatted, \"__\")\n const funcLines = Arr.isEmptyReadonlyArray(info.parentCommands)\n ? Arr.empty()\n : [\n `${caseName})`,\n ` cmd=\"${funcName}\"`,\n \" ;;\"\n ]\n const cmdLines = [\n `${funcName})`,\n ` opts=\"${Arr.join(wordList, \" \")}\"`,\n ` if [[ \\${cur} == -* || \\${COMP_CWORD} -eq ${info.level + 1} ]] ; then`,\n \" COMPREPLY=( $(compgen -W \\\"${opts}\\\" -- \\\"${cur}\\\") )\",\n \" return 0\",\n \" fi\",\n \" case \\\"${prev}\\\" in\",\n ...indentAll(optionCases, 8),\n \" *)\",\n \" COMPREPLY=()\",\n \" ;;\",\n \" esac\",\n \" COMPREPLY=( $(compgen -W \\\"${opts}\\\" -- \\\"${cur}\\\") )\",\n \" return 0\",\n \" ;;\"\n ]\n const lines = Arr.append(\n state,\n [funcLines, cmdLines] as [ReadonlyArray<string>, ReadonlyArray<string>]\n )\n return Effect.succeed(lines)\n }\n ).pipe(Effect.map((lines) => {\n const rootCommand = Arr.unsafeGet(getNamesInternal(self), 0)\n const scriptName = `_${rootCommand}_bash_completions`\n const funcCases = Arr.flatMap(lines, ([funcLines]) => funcLines)\n const cmdCases = Arr.flatMap(lines, ([, cmdLines]) => cmdLines)\n return [\n `function ${scriptName}() {`,\n \" local i cur prev opts cmd\",\n \" COMPREPLY=()\",\n \" cur=\\\"${COMP_WORDS[COMP_CWORD]}\\\"\",\n \" prev=\\\"${COMP_WORDS[COMP_CWORD-1]}\\\"\",\n \" cmd=\\\"\\\"\",\n \" opts=\\\"\\\"\",\n \" for i in \\\"${COMP_WORDS[@]}\\\"; do\",\n \" case \\\"${cmd},${i}\\\" in\",\n \" \\\",$1\\\")\",\n ` cmd=\"${executable}\"`,\n \" ;;\",\n ...indentAll(funcCases, 12),\n \" *)\",\n \" ;;\",\n \" esac\",\n \" done\",\n \" case \\\"${cmd}\\\" in\",\n ...indentAll(cmdCases, 8),\n \" esac\",\n \"}\",\n `complete -F ${scriptName} -o nosort -o bashdefault -o default ${rootCommand}`\n ]\n }))\n\nconst getFishCompletionsInternal = (\n self: Instruction,\n executable: string\n): Effect.Effect<Array<string>> =>\n traverseCommand(self, Arr.empty(), (state, info) => {\n const baseTemplate = Arr.make(\"complete\", \"-c\", executable)\n const options = isStandard(info.command)\n ? InternalOptions.all([InternalBuiltInOptions.builtIns, info.command.options])\n : InternalBuiltInOptions.builtIns\n const optionsCompletions = InternalOptions.getFishCompletions(\n options as InternalOptions.Instruction\n )\n const argsCompletions = isStandard(info.command)\n ? InternalArgs.getFishCompletions(info.command.args as InternalArgs.Instruction)\n : Arr.empty()\n const rootCompletions = (conditionals: ReadonlyArray<string>) =>\n pipe(\n Arr.map(optionsCompletions, (option) =>\n pipe(\n baseTemplate,\n Arr.appendAll(conditionals),\n Arr.append(option),\n Arr.join(\" \")\n )),\n Arr.appendAll(\n Arr.map(argsCompletions, (option) =>\n pipe(\n baseTemplate,\n Arr.appendAll(conditionals),\n Arr.append(option),\n Arr.join(\" \")\n ))\n )\n )\n const subcommandCompletions = (conditionals: ReadonlyArray<string>) =>\n Arr.map(info.subcommands, ([name, subcommand]) => {\n const description = getShortDescription(subcommand)\n return pipe(\n baseTemplate,\n Arr.appendAll(conditionals),\n Arr.appendAll(Arr.make(\"-f\", \"-a\", `\"${name}\"`)),\n Arr.appendAll(\n description.length === 0\n ? Arr.empty()\n : Arr.make(\"-d\", `'${description}'`)\n ),\n Arr.join(\" \")\n )\n })\n // If parent commands are empty, then the info is for the root command\n if (Arr.isEmptyReadonlyArray(info.parentCommands)) {\n const conditionals = Arr.make(\"-n\", \"\\\"__fish_use_subcommand\\\"\")\n return Effect.succeed(pipe(\n state,\n Arr.appendAll(rootCompletions(conditionals)),\n Arr.appendAll(subcommandCompletions(conditionals))\n ))\n }\n // Otherwise the info is for a subcommand\n const parentConditionals = pipe(\n info.parentCommands,\n // Drop the root command name from the subcommand conditionals\n Arr.drop(1),\n Arr.append(info.command.name),\n Arr.map((command) => `__fish_seen_subcommand_from ${command}`)\n )\n const subcommandConditionals = Arr.map(\n info.subcommands,\n ([name]) => `not __fish_seen_subcommand_from ${name}`\n )\n const baseConditionals = pipe(\n Arr.appendAll(parentConditionals, subcommandConditionals),\n Arr.join(\"; and \")\n )\n const conditionals = Arr.make(\"-n\", `\"${baseConditionals}\"`)\n return Effect.succeed(pipe(\n state,\n Arr.appendAll(rootCompletions(conditionals)),\n Arr.appendAll(subcommandCompletions(conditionals))\n ))\n })\n\nconst getZshCompletionsInternal = (\n self: Instruction,\n executable: string\n): Effect.Effect<Array<string>> =>\n traverseCommand(self, Arr.empty<string>(), (state, info) => {\n const preformatted = Arr.isEmptyReadonlyArray(info.parentCommands)\n ? Arr.of(info.command.name)\n : pipe(\n info.parentCommands,\n Arr.append(info.command.name),\n Arr.map((command) => command.replace(\"-\", \"__\"))\n )\n const underscoreName = Arr.join(preformatted, \"__\")\n const spaceName = Arr.join(preformatted, \" \")\n const subcommands = pipe(\n info.subcommands,\n Arr.map(([name, subcommand]) => {\n const desc = getShortDescription(subcommand)\n return `'${name}:${desc}' \\\\`\n })\n )\n const commands = Arr.isEmptyReadonlyArray(subcommands)\n ? `commands=()`\n : `commands=(\\n${Arr.join(indentAll(subcommands, 8), \"\\n\")}\\n )`\n const handlerLines = [\n `(( $+functions[_${underscoreName}_commands] )) ||`,\n `_${underscoreName}_commands() {`,\n ` local commands; ${commands}`,\n ` _describe -t commands '${spaceName} commands' commands \"$@\"`,\n \"}\"\n ]\n return Effect.succeed(Arr.appendAll(state, handlerLines))\n }).pipe(Effect.map((handlers) => {\n const rootCommand = Arr.unsafeGet(getNamesInternal(self), 0)\n const cases = getZshSubcommandCases(self, Arr.empty(), Arr.empty())\n const scriptName = `_${rootCommand}_zsh_completions`\n return [\n `#compdef ${executable}`,\n \"\",\n \"autoload -U is-at-least\",\n \"\",\n `function ${scriptName}() {`,\n \" typeset -A opt_args\",\n \" typeset -a _arguments_options\",\n \" local ret=1\",\n \"\",\n \" if is-at-least 5.2; then\",\n \" _arguments_options=(-s -S -C)\",\n \" else\",\n \" _arguments_options=(-s -C)\",\n \" fi\",\n \"\",\n \" local context curcontext=\\\"$curcontext\\\" state line\",\n ...indentAll(cases, 4),\n \"}\",\n \"\",\n ...handlers,\n \"\",\n `if [ \"$funcstack[1]\" = \"${scriptName}\" ]; then`,\n ` ${scriptName} \"$@\"`,\n \"else\",\n ` compdef ${scriptName} ${rootCommand}`,\n \"fi\"\n ]\n }))\n\nconst getZshSubcommandCases = (\n self: Instruction,\n parentCommands: ReadonlyArray<string>,\n subcommands: ReadonlyArray<[string, Standard | GetUserInput]>\n): Array<string> => {\n switch (self._tag) {\n case \"Standard\":\n case \"GetUserInput\": {\n const options = isStandard(self)\n ? InternalOptions.all([InternalBuiltInOptions.builtIns, self.options])\n : InternalBuiltInOptions.builtIns\n const args = isStandard(self) ? self.args : InternalArgs.none\n const optionCompletions = pipe(\n InternalOptions.getZshCompletions(options as InternalOptions.Instruction),\n Arr.map((completion) => `'${completion}' \\\\`)\n )\n const argCompletions = pipe(\n InternalArgs.getZshCompletions(args as InternalArgs.Instruction),\n Arr.map((completion) => `'${completion}' \\\\`)\n )\n if (Arr.isEmptyReadonlyArray(parentCommands)) {\n return [\n \"_arguments \\\"${_arguments_options[@]}\\\" \\\\\",\n ...indentAll(optionCompletions, 4),\n ...indentAll(argCompletions, 4),\n ` \":: :_${self.name}_commands\" \\\\`,\n ` \"*::: :->${self.name}\" \\\\`,\n \" && ret=0\"\n ]\n }\n if (Arr.isEmptyReadonlyArray(subcommands)) {\n return [\n `(${self.name})`,\n \"_arguments \\\"${_arguments_options[@]}\\\" \\\\\",\n ...indentAll(optionCompletions, 4),\n ...indentAll(argCompletions, 4),\n \" && ret=0\",\n \";;\"\n ]\n }\n return [\n `(${self.name})`,\n \"_arguments \\\"${_arguments_options[@]}\\\" \\\\\",\n ...indentAll(optionCompletions, 4),\n ...indentAll(argCompletions, 4),\n ` \":: :_${Arr.append(parentCommands, self.name).join(\"__\")}_commands\" \\\\`,\n ` \"*::: :->${self.name}\" \\\\`,\n \" && ret=0\"\n ]\n }\n case \"Map\": {\n return getZshSubcommandCases(self.command, parentCommands, subcommands)\n }\n case \"Subcommands\": {\n const nextSubcommands = getSubcommandsInternal(self)\n const parentNames = getNamesInternal(self.parent)\n const parentLines = getZshSubcommandCases(\n self.parent,\n parentCommands,\n Arr.appendAll(subcommands, nextSubcommands)\n )\n const childCases = pipe(\n self.children,\n Arr.flatMap((child) =>\n getZshSubcommandCases(\n child,\n Arr.appendAll(parentCommands, parentNames),\n subcommands\n )\n )\n )\n const hyphenName = pipe(\n Arr.appendAll(parentCommands, parentNames),\n Arr.join(\"-\")\n )\n const childLines = pipe(\n parentNames,\n Arr.flatMap((parentName) => [\n \"case $state in\",\n ` (${parentName})`,\n ` words=($line[1] \"\\${words[@]}\")`,\n \" (( CURRENT += 1 ))\",\n ` curcontext=\"\\${curcontext%:*:*}:${hyphenName}-command-$line[1]:\"`,\n ` case $line[1] in`,\n ...indentAll(childCases, 8),\n \" esac\",\n \" ;;\",\n \"esac\"\n ]),\n Arr.appendAll(\n Arr.isEmptyReadonlyArray(parentCommands)\n ? Arr.empty()\n : Arr.of(\";;\")\n )\n )\n return Arr.appendAll(parentLines, childLines)\n }\n }\n}\n\n// Circular with ValidationError\n\n/** @internal */\nexport const helpRequestedError = <A>(\n command: Descriptor.Command<A>\n): ValidationError.ValidationError => {\n const op = Object.create(InternalValidationError.proto)\n op._tag = \"HelpRequested\"\n op.error = InternalHelpDoc.empty\n op.command = command\n return op\n}\n","import * as Terminal from \"@effect/platform/Terminal\"\nimport * as Color from \"@effect/printer-ansi/Color\"\nimport * as Arr from \"effect/Array\"\nimport * as Console from \"effect/Console\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport { dual, pipe } from \"effect/Function\"\nimport * as HashMap from \"effect/HashMap\"\nimport * as Logger from \"effect/Logger\"\nimport * as Option from \"effect/Option\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport * as Unify from \"effect/Unify\"\nimport type * as BuiltInOptions from \"../BuiltInOptions.js\"\nimport type * as CliApp from \"../CliApp.js\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as Command from \"../CommandDescriptor.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as ValidationError from \"../ValidationError.js\"\nimport * as InternalBuiltInOptions from \"./builtInOptions.js\"\nimport * as InternalCliConfig from \"./cliConfig.js\"\nimport * as InternalCommand from \"./commandDescriptor.js\"\nimport * as InternalHelpDoc from \"./helpDoc.js\"\nimport * as InternalSpan from \"./helpDoc/span.js\"\nimport * as InternalTogglePrompt from \"./prompt/toggle.js\"\nimport * as InternalUsage from \"./usage.js\"\nimport * as InternalValidationError from \"./validationError.js\"\n\nconst proto = {\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\n// =============================================================================\n// Constructors\n// =============================================================================\n\n/** @internal */\nexport const make = <A>(config: CliApp.CliApp.ConstructorArgs<A>): CliApp.CliApp<A> => {\n const op = Object.create(proto)\n op.name = config.name\n op.version = config.version\n op.executable = config.executable\n op.command = config.command\n op.summary = config.summary || InternalSpan.empty\n op.footer = config.footer || InternalHelpDoc.empty\n return op\n}\n\n// =============================================================================\n// Combinators\n// =============================================================================\n\n/** @internal */\nexport const run = dual<\n <R, E, A>(\n args: ReadonlyArray<string>,\n execute: (a: A) => Effect.Effect<void, E, R>\n ) => (\n self: CliApp.CliApp<A>\n ) => Effect.Effect<void, E | ValidationError.ValidationError, R | CliApp.CliApp.Environment>,\n <R, E, A>(\n self: CliApp.CliApp<A>,\n args: ReadonlyArray<string>,\n execute: (a: A) => Effect.Effect<void, E, R>\n ) => Effect.Effect<void, E | ValidationError.ValidationError, R | CliApp.CliApp.Environment>\n>(3, <R, E, A>(\n self: CliApp.CliApp<A>,\n args: ReadonlyArray<string>,\n execute: (a: A) => Effect.Effect<void, E, R>\n): Effect.Effect<void, E | ValidationError.ValidationError, R | CliApp.CliApp.Environment> =>\n Effect.contextWithEffect((context: Context.Context<CliApp.CliApp.Environment>) => {\n // Attempt to parse the CliConfig from the environment, falling back to the\n // default CliConfig if none was provided\n const config = Option.getOrElse(\n Context.getOption(context, InternalCliConfig.Tag),\n () => InternalCliConfig.defaultConfig\n )\n // Remove the executable from the command line arguments\n const [executable, filteredArgs] = splitExecutable(self, args)\n // Prefix the command name to the command line arguments\n const prefixedArgs = Arr.appendAll(prefixCommand(self.command), filteredArgs)\n // Handle the command\n return Effect.matchEffect(InternalCommand.parse(self.command, prefixedArgs, config), {\n onFailure: (e) => Effect.zipRight(printDocs(e.error), Effect.fail(e)),\n onSuccess: Unify.unify((directive) => {\n switch (directive._tag) {\n case \"UserDefined\": {\n return Arr.matchLeft(directive.leftover, {\n onEmpty: () =>\n execute(directive.value).pipe(\n Effect.catchSome((e) =>\n InternalValidationError.isValidationError(e) &&\n InternalValidationError.isHelpRequested(e)\n ? Option.some(\n handleBuiltInOption(\n self,\n executable,\n filteredArgs,\n InternalBuiltInOptions.showHelp(\n InternalCommand.getUsage(e.command),\n InternalCommand.getHelp(e.command, config)\n ),\n execute,\n config,\n args\n )\n )\n : Option.none()\n )\n ),\n onNonEmpty: (head) => {\n const error = InternalHelpDoc.p(`Received unknown argument: '${head}'`)\n return Effect.zipRight(printDocs(error), Effect.fail(InternalValidationError.invalidValue(error)))\n }\n })\n }\n case \"BuiltIn\": {\n return handleBuiltInOption(self, executable, filteredArgs, directive.option, execute, config, args).pipe(\n Effect.catchSome((e) =>\n InternalValidationError.isValidationError(e)\n ? Option.some(Effect.zipRight(printDocs(e.error), Effect.fail(e)))\n : Option.none()\n )\n )\n }\n }\n })\n })\n }))\n\n// =============================================================================\n// Internals\n// =============================================================================\n\nconst splitExecutable = <A>(self: CliApp.CliApp<A>, args: ReadonlyArray<string>): [\n executable: string,\n args: ReadonlyArray<string>\n] => {\n if (self.executable !== undefined) {\n return [self.executable, Arr.drop(args, 2)]\n }\n const [[runtime, script], optionsAndArgs] = Arr.splitAt(args, 2)\n return [`${runtime} ${script}`, optionsAndArgs]\n}\n\nconst printDocs = (error: HelpDoc.HelpDoc): Effect.Effect<void> => Console.error(InternalHelpDoc.toAnsiText(error))\n\nconst handleBuiltInOption = <R, E, A>(\n self: CliApp.CliApp<A>,\n executable: string,\n args: ReadonlyArray<string>,\n builtIn: BuiltInOptions.BuiltInOptions,\n execute: (a: A) => Effect.Effect<void, E, R>,\n config: CliConfig.CliConfig,\n originalArgs: ReadonlyArray<string>\n): Effect.Effect<\n void,\n E | ValidationError.ValidationError,\n R | CliApp.CliApp.Environment | Terminal.Terminal\n> => {\n switch (builtIn._tag) {\n case \"SetLogLevel\": {\n // Use first 2 elements from originalArgs (runtime + script) to preserve paths with spaces\n // Filter out --log-level from args before re-executing\n const baseArgs = Arr.take(originalArgs, 2)\n const filteredArgs: Array<string> = []\n for (let i = 0; i < args.length; i++) {\n if (isLogLevelArg(args[i]) || isLogLevelArg(args[i - 1])) {\n continue\n }\n filteredArgs.push(args[i])\n }\n const nextArgs = Arr.appendAll(baseArgs, filteredArgs)\n return run(self, nextArgs, execute).pipe(\n Logger.withMinimumLogLevel(builtIn.level)\n )\n }\n case \"ShowHelp\": {\n const banner = InternalHelpDoc.h1(InternalSpan.code(self.name))\n const header = InternalHelpDoc.p(InternalSpan.spans([\n InternalSpan.text(`${self.name} ${self.version}`),\n InternalSpan.isEmpty(self.summary)\n ? InternalSpan.empty\n : InternalSpan.spans([\n InternalSpan.space,\n InternalSpan.text(\"--\"),\n InternalSpan.space,\n self.summary\n ])\n ]))\n const usage = InternalHelpDoc.sequence(\n InternalHelpDoc.h1(\"USAGE\"),\n pipe(\n InternalUsage.enumerate(builtIn.usage, config),\n Arr.map((span) => InternalHelpDoc.p(InternalSpan.concat(InternalSpan.text(\"$ \"), span))),\n Arr.reduceRight(\n InternalHelpDoc.empty,\n (left, right) => InternalHelpDoc.sequence(left, right)\n )\n )\n )\n const helpDoc = pipe(\n banner,\n InternalHelpDoc.sequence(header),\n InternalHelpDoc.sequence(usage),\n InternalHelpDoc.sequence(builtIn.helpDoc),\n InternalHelpDoc.sequence(self.footer)\n )\n return Console.log(InternalHelpDoc.toAnsiText(helpDoc))\n }\n case \"ShowCompletions\": {\n const command = Arr.fromIterable(InternalCommand.getNames(self.command))[0]!\n switch (builtIn.shellType) {\n case \"bash\": {\n return InternalCommand.getBashCompletions(self.command, command).pipe(\n Effect.flatMap((completions) => Console.log(Arr.join(completions, \"\\n\")))\n )\n }\n case \"fish\": {\n return InternalCommand.getFishCompletions(self.command, command).pipe(\n Effect.flatMap((completions) => Console.log(Arr.join(completions, \"\\n\")))\n )\n }\n case \"zsh\":\n return InternalCommand.getZshCompletions(self.command, command).pipe(\n Effect.flatMap((completions) => Console.log(Arr.join(completions, \"\\n\")))\n )\n }\n }\n case \"ShowWizard\": {\n const summary = InternalSpan.isEmpty(self.summary)\n ? InternalSpan.empty\n : InternalSpan.spans([\n InternalSpan.space,\n InternalSpan.text(\"--\"),\n InternalSpan.space,\n self.summary\n ])\n const instructions = InternalHelpDoc.sequence(\n InternalHelpDoc.p(InternalSpan.spans([\n InternalSpan.text(\"The wizard mode will assist you with constructing commands for\"),\n InternalSpan.space,\n InternalSpan.code(`${self.name} (${self.version})`),\n InternalSpan.text(\".\")\n ])),\n InternalHelpDoc.p(\"Please answer all prompts provided by the wizard.\")\n )\n const description = InternalHelpDoc.descriptionList([[\n InternalSpan.text(\"Instructions\"),\n instructions\n ]])\n const header = InternalHelpDoc.h1(\n InternalSpan.spans([\n InternalSpan.code(\"Wizard Mode for CLI Application:\"),\n InternalSpan.space,\n InternalSpan.code(self.name),\n InternalSpan.space,\n InternalSpan.code(`(${self.version})`),\n summary\n ])\n )\n const help = InternalHelpDoc.sequence(header, description)\n const text = InternalHelpDoc.toAnsiText(help)\n const command = Arr.fromIterable(InternalCommand.getNames(self.command))[0]!\n const wizardPrefix = getWizardPrefix(builtIn, command, args)\n return Console.log(text).pipe(\n Effect.zipRight(InternalCommand.wizard(builtIn.command, wizardPrefix, config)),\n Effect.tap((args) => Console.log(InternalHelpDoc.toAnsiText(renderWizardArgs(args)))),\n Effect.flatMap((args) =>\n InternalTogglePrompt.toggle({\n message: \"Would you like to run the command?\",\n initial: true,\n active: \"yes\",\n inactive: \"no\"\n }).pipe(Effect.flatMap((shouldRunCommand) => {\n // Use first 2 elements from originalArgs (runtime + script) to preserve paths with spaces\n // This mimics executable.split() behavior but without breaking Windows paths\n const baseArgs = Arr.take(originalArgs, 2)\n const wizardArgs = Arr.drop(args, 1)\n const finalArgs = Arr.appendAll(baseArgs, wizardArgs)\n return shouldRunCommand\n ? Console.log().pipe(Effect.zipRight(run(self, finalArgs, execute)))\n : Effect.void\n }))\n ),\n Effect.catchAll((e) => {\n if (Terminal.isQuitException(e)) {\n const message = InternalHelpDoc.p(InternalSpan.error(\"\\n\\nQuitting wizard mode...\"))\n return Console.log(InternalHelpDoc.toAnsiText(message))\n }\n return Effect.fail(e)\n })\n )\n }\n case \"ShowVersion\": {\n const help = InternalHelpDoc.p(self.version)\n return Console.log(InternalHelpDoc.toAnsiText(help))\n }\n }\n}\n\nconst prefixCommand = <A>(self: Command.Command<A>): ReadonlyArray<string> => {\n let command: InternalCommand.Instruction | undefined = self as InternalCommand.Instruction\n let prefix: ReadonlyArray<string> = Arr.empty()\n while (command !== undefined) {\n switch (command._tag) {\n case \"Standard\": {\n prefix = Arr.of(command.name)\n command = undefined\n break\n }\n case \"GetUserInput\": {\n prefix = Arr.of(command.name)\n command = undefined\n break\n }\n case \"Map\": {\n command = command.command\n break\n }\n case \"Subcommands\": {\n command = command.parent\n break\n }\n }\n }\n return prefix\n}\n\nconst getWizardPrefix = (\n builtIn: BuiltInOptions.ShowWizard,\n rootCommand: string,\n commandLineArgs: ReadonlyArray<string>\n): ReadonlyArray<string> => {\n const subcommands = InternalCommand.getSubcommands(builtIn.command)\n const [parentArgs, childArgs] = Arr.span(\n commandLineArgs,\n (name) => !HashMap.has(subcommands, name)\n )\n const args = Arr.matchLeft(childArgs, {\n onEmpty: () => Arr.filter(parentArgs, (arg) => arg !== \"--wizard\"),\n onNonEmpty: (head) => Arr.append(parentArgs, head)\n })\n return Arr.appendAll(rootCommand.split(/\\s+/), args)\n}\n\nconst renderWizardArgs = (args: ReadonlyArray<string>) => {\n const params = pipe(\n Arr.filter(args, (param) => param.length > 0),\n Arr.join(\" \")\n )\n const executeMsg = InternalSpan.text(\n \"You may now execute your command directly with the following options and arguments:\"\n )\n return InternalHelpDoc.blocks([\n InternalHelpDoc.p(InternalSpan.strong(InternalSpan.code(\"Wizard Mode Complete!\"))),\n InternalHelpDoc.p(executeMsg),\n InternalHelpDoc.p(InternalSpan.concat(\n InternalSpan.text(\" \"),\n InternalSpan.highlight(params, Color.cyan)\n ))\n ])\n}\n\nconst isLogLevelArg = (arg?: string) => {\n return arg && (arg === \"--log-level\" || arg.startsWith(\"--log-level=\"))\n}\n","/**\n * @since 1.0.0\n */\nimport type { FileSystem } from \"@effect/platform/FileSystem\"\nimport type { Path } from \"@effect/platform/Path\"\nimport type { QuitException, Terminal } from \"@effect/platform/Terminal\"\nimport type { Tag } from \"effect/Context\"\nimport type { Effect } from \"effect/Effect\"\nimport type { HashMap } from \"effect/HashMap\"\nimport type { HashSet } from \"effect/HashSet\"\nimport type { Layer } from \"effect/Layer\"\nimport type { Option } from \"effect/Option\"\nimport { type Pipeable } from \"effect/Pipeable\"\nimport type * as Types from \"effect/Types\"\nimport type { Args } from \"./Args.js\"\nimport type { CliApp } from \"./CliApp.js\"\nimport type { CliConfig } from \"./CliConfig.js\"\nimport type * as Descriptor from \"./CommandDescriptor.js\"\nimport type { HelpDoc } from \"./HelpDoc.js\"\nimport * as Internal from \"./internal/command.js\"\nimport type { Options } from \"./Options.js\"\nimport type { Prompt } from \"./Prompt.js\"\nimport type { Usage } from \"./Usage.js\"\nimport type { ValidationError } from \"./ValidationError.js\"\n\n/**\n * @since 1.0.0\n * @category type ids\n */\nexport const TypeId: unique symbol = Internal.TypeId\n\n/**\n * @since 1.0.0\n * @category type ids\n */\nexport type TypeId = typeof TypeId\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface Command<Name extends string, R, E, A> extends Pipeable, Effect<A, never, Command.Context<Name>> {\n readonly [TypeId]: TypeId\n readonly descriptor: Descriptor.Command<A>\n readonly handler: (_: A) => Effect<void, E, R>\n readonly tag: Tag<Command.Context<Name>, A>\n readonly transform: Command.Transform<R, E, A>\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport declare namespace Command {\n /**\n * @since 1.0.0\n * @category models\n */\n export interface Context<Name extends string> {\n readonly _: unique symbol\n readonly name: Name\n }\n\n /**\n * @since 1.0.0\n * @category models\n */\n export interface Config {\n readonly [key: string]:\n | Args<any>\n | Options<any>\n | ReadonlyArray<Args<any> | Options<any> | Config>\n | Config\n }\n\n /**\n * @since 1.0.0\n * @category models\n */\n export type ParseConfig<A extends Config> = Types.Simplify<\n { readonly [Key in keyof A]: ParseConfigValue<A[Key]> }\n >\n\n type ParseConfigValue<A> = A extends ReadonlyArray<infer _> ?\n { readonly [Key in keyof A]: ParseConfigValue<A[Key]> } :\n A extends Args<infer Value> ? Value\n : A extends Options<infer Value> ? Value\n : A extends Config ? ParseConfig<A>\n : never\n\n interface ParsedConfigTree {\n [key: string]: ParsedConfigNode\n }\n\n type ParsedConfigNode = {\n readonly _tag: \"Args\"\n readonly index: number\n } | {\n readonly _tag: \"Options\"\n readonly index: number\n } | {\n readonly _tag: \"Array\"\n readonly children: ReadonlyArray<ParsedConfigNode>\n } | {\n readonly _tag: \"ParsedConfig\"\n readonly tree: ParsedConfigTree\n }\n\n /**\n * @since 1.0.0\n * @category models\n */\n export interface ParsedConfig {\n readonly args: ReadonlyArray<Args<any>>\n readonly options: ReadonlyArray<Options<any>>\n readonly tree: ParsedConfigTree\n }\n\n /**\n * @since 1.0.0\n * @category models\n */\n export type Transform<R, E, A> = (effect: Effect<void, any, any>, config: A) => Effect<void, E, R>\n}\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const fromDescriptor: {\n /**\n * @since 1.0.0\n * @category constructors\n */\n (): <A extends { readonly name: string }>(\n command: Descriptor.Command<A>\n ) => Command<A[\"name\"], never, never, A>\n\n /**\n * @since 1.0.0\n * @category constructors\n */\n <A extends { readonly name: string }, R, E>(handler: (_: A) => Effect<void, E, R>): (command: Descriptor.Command<A>) => Command<A[\"name\"], R, E, A>\n\n /**\n * @since 1.0.0\n * @category constructors\n */\n <A extends { readonly name: string }>(descriptor: Descriptor.Command<A>): Command<A[\"name\"], never, never, A>\n\n /**\n * @since 1.0.0\n * @category constructors\n */\n <A extends { readonly name: string }, R, E>(descriptor: Descriptor.Command<A>, handler: (_: A) => Effect<void, E, R>): Command<A[\"name\"], R, E, A>\n} = Internal.fromDescriptor\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getHelp: <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>,\n config: CliConfig\n) => HelpDoc = Internal.getHelp\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getNames: <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>\n) => HashSet<string> = Internal.getNames\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getBashCompletions: <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>,\n programName: string\n) => Effect<Array<string>> = Internal.getBashCompletions\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getFishCompletions: <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>,\n programName: string\n) => Effect<Array<string>> = Internal.getFishCompletions\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getZshCompletions: <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>,\n programName: string\n) => Effect<Array<string>> = Internal.getZshCompletions\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getSubcommands: <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>\n) => HashMap<string, Descriptor.Command<unknown>> = Internal.getSubcommands\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const getUsage: <Name extends string, R, E, A>(self: Command<Name, R, E, A>) => Usage = Internal.getUsage\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const make: {\n /**\n * @since 1.0.0\n * @category constructors\n */\n <Name extends string>(name: Name): Command<\n Name,\n never,\n never,\n {}\n >\n\n /**\n * @since 1.0.0\n * @category constructors\n */\n <Name extends string, const Config extends Command.Config>(name: Name, config: Config): Command<\n Name,\n never,\n never,\n Types.Simplify<Command.ParseConfig<Config>>\n >\n\n /**\n * @since 1.0.0\n * @category constructors\n */\n <Name extends string, const Config extends Command.Config, R, E>(\n name: Name,\n config: Config,\n handler: (_: Types.Simplify<Command.ParseConfig<Config>>) => Effect<void, E, R>\n ): Command<\n Name,\n R,\n E,\n Types.Simplify<Command.ParseConfig<Config>>\n >\n} = Internal.make\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const prompt: <Name extends string, A, R, E>(\n name: Name,\n prompt: Prompt<A>,\n handler: (_: A) => Effect<void, E, R>\n) => Command<string, R, E, A> = Internal.prompt\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const provide: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, LR, LE, LA>(layer: Layer<LA, LE, LR> | ((_: A) => Layer<LA, LE, LR>)): <Name extends string, R, E>(\n self: Command<Name, R, E, A>\n ) => Command<Name, LR | Exclude<R, LA>, LE | E, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, R, E, A, LR, LE, LA>(\n self: Command<Name, R, E, A>,\n layer: Layer<LA, LE, LR> | ((_: A) => Layer<LA, LE, LR>)\n ): Command<Name, LR | Exclude<R, LA>, E | LE, A>\n} = Internal.provide\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const provideEffect: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <I, S, A, R2, E2>(tag: Tag<I, S>, effect: Effect<S, E2, R2> | ((_: A) => Effect<S, E2, R2>)): <Name extends string, R, E>(\n self: Command<Name, R, E, A>\n ) => Command<Name, R2 | Exclude<R, I>, E2 | E, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, R, E, A, I, S, R2, E2>(\n self: Command<Name, R, E, A>,\n tag: Tag<I, S>,\n effect: Effect<S, E2, R2> | ((_: A) => Effect<S, E2, R2>)\n ): Command<Name, R2 | Exclude<R, I>, E | E2, A>\n} = Internal.provideEffect\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const provideEffectDiscard: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, R2, E2, _>(effect: Effect<_, E2, R2> | ((_: A) => Effect<_, E2, R2>)): <Name extends string, R, E>(self: Command<Name, R, E, A>) => Command<Name, R2 | R, E2 | E, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, R, E, A, R2, E2, _>(\n self: Command<Name, R, E, A>,\n effect: Effect<_, E2, R2> | ((_: A) => Effect<_, E2, R2>)\n ): Command<Name, R | R2, E | E2, A>\n} = Internal.provideEffectDiscard\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const provideSync: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <I, S, A>(tag: Tag<I, S>, service: S | ((_: A) => S)): <Name extends string, R, E>(self: Command<Name, R, E, A>) => Command<Name, Exclude<R, I>, E, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, R, E, A, I, S>(self: Command<Name, R, E, A>, tag: Tag<I, S>, service: S | ((_: A) => S)): Command<Name, Exclude<R, I>, E, A>\n} = Internal.provideSync\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const transformHandler: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <R, E, A, R2, E2>(f: (effect: Effect<void, E, R>, config: A) => Effect<void, E2, R2>): <Name extends string>(self: Command<Name, R, E, A>) => Command<Name, R | R2, E | E2, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, R, E, A, R2, E2>(\n self: Command<Name, R, E, A>,\n f: (effect: Effect<void, E, R>, config: A) => Effect<void, E2, R2>\n ): Command<Name, R | R2, E | E2, A>\n} = Internal.transformHandler\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withDescription: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n (help: string | HelpDoc): <Name extends string, R, E, A>(self: Command<Name, R, E, A>) => Command<Name, R, E, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, R, E, A>(self: Command<Name, R, E, A>, help: string | HelpDoc): Command<Name, R, E, A>\n} = Internal.withDescription\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withHandler: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <A, R, E>(handler: (_: A) => Effect<void, E, R>): <Name extends string, XR, XE>(self: Command<Name, XR, XE, A>) => Command<Name, R, E, A>\n /**\n * @since 1.0.0\n * @category combinators\n */\n <Name extends string, XR, XE, A, R, E>(self: Command<Name, XR, XE, A>, handler: (_: A) => Effect<void, E, R>): Command<Name, R, E, A>\n} = Internal.withHandler\n\n/**\n * @since 1.0.0\n * @category combinators\n */\nexport const withSubcommands: {\n /**\n * @since 1.0.0\n * @category combinators\n */\n <\n Subcommand extends readonly [Command<any, any, any, any>, ...Array<Command<any, any, any, any>>]\n >(subcommands: Subcommand): <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>\n ) => Command<\n Name,\n | R\n | Exclude<Effect.Context<ReturnType<Subcommand[number][\"handler\"]>>, Command.Context<Name>>,\n E | Effect.Error<ReturnType<Subcommand[number][\"handler\"]>>,\n Descriptor.Command.ComputeParsedType<\n & A\n & Readonly<\n { subcommand: Option<Descriptor.Command.GetParsedType<Subcommand[number][\"descriptor\"]>> }\n >\n >\n >\n /**\n * @since 1.0.0\n * @category combinators\n */\n <\n Name extends string,\n R,\n E,\n A,\n Subcommand extends readonly [Command<any, any, any, any>, ...Array<Command<any, any, any, any>>]\n >(self: Command<Name, R, E, A>, subcommands: Subcommand): Command<\n Name,\n | R\n | Exclude<Effect.Context<ReturnType<Subcommand[number][\"handler\"]>>, Command.Context<Name>>,\n E | Effect.Error<ReturnType<Subcommand[number][\"handler\"]>>,\n Descriptor.Command.ComputeParsedType<\n & A\n & Readonly<\n { subcommand: Option<Descriptor.Command.GetParsedType<Subcommand[number][\"descriptor\"]>> }\n >\n >\n >\n} = Internal.withSubcommands\n\n/**\n * @since 1.0.0\n * @category accessors\n */\nexport const wizard: {\n /**\n * @since 1.0.0\n * @category accessors\n */\n (prefix: ReadonlyArray<string>, config: CliConfig): <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>\n ) => Effect<\n Array<string>,\n QuitException | ValidationError,\n FileSystem | Path | Terminal\n >\n /**\n * @since 1.0.0\n * @category accessors\n */\n <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>,\n prefix: ReadonlyArray<string>,\n config: CliConfig\n ): Effect<\n Array<string>,\n QuitException | ValidationError,\n FileSystem | Path | Terminal\n >\n} = Internal.wizard\n\n/**\n * @since 1.0.0\n * @category conversions\n */\nexport const run: {\n /**\n * @since 1.0.0\n * @category conversions\n */\n (config: Omit<CliApp.ConstructorArgs<never>, \"command\">): <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>\n ) => (args: ReadonlyArray<string>) => Effect<void, E | ValidationError, R | CliApp.Environment>\n /**\n * @since 1.0.0\n * @category conversions\n */\n <Name extends string, R, E, A>(\n self: Command<Name, R, E, A>,\n config: Omit<CliApp.ConstructorArgs<never>, \"command\">\n ): (args: ReadonlyArray<string>) => Effect<void, E | ValidationError, R | CliApp.Environment>\n} = Internal.run\n","/**\n * @since 1.0.0\n */\nimport type { Command } from \"./CommandDescriptor.js\"\nimport type { HelpDoc } from \"./HelpDoc.js\"\nimport * as InternalCommand from \"./internal/commandDescriptor.js\"\nimport * as InternalValidationError from \"./internal/validationError.js\"\n\n/**\n * @since 1.0.0\n * @category symbols\n */\nexport const ValidationErrorTypeId: unique symbol = InternalValidationError.ValidationErrorTypeId\n\n/**\n * @since 1.0.0\n * @category symbols\n */\nexport type ValidationErrorTypeId = typeof ValidationErrorTypeId\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport type ValidationError =\n | CommandMismatch\n | CorrectedFlag\n | HelpRequested\n | InvalidArgument\n | InvalidValue\n | MissingValue\n | MissingFlag\n | MultipleValuesDetected\n | MissingSubcommand\n | NoBuiltInMatch\n | UnclusteredFlag\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface CommandMismatch extends ValidationError.Proto {\n readonly _tag: \"CommandMismatch\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface CorrectedFlag extends ValidationError.Proto {\n readonly _tag: \"CorrectedFlag\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface HelpRequested extends ValidationError.Proto {\n readonly _tag: \"HelpRequested\"\n readonly error: HelpDoc\n readonly command: Command<unknown>\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface InvalidArgument extends ValidationError.Proto {\n readonly _tag: \"InvalidArgument\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface InvalidValue extends ValidationError.Proto {\n readonly _tag: \"InvalidValue\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface MissingFlag extends ValidationError.Proto {\n readonly _tag: \"MissingFlag\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface MissingValue extends ValidationError.Proto {\n readonly _tag: \"MissingValue\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface MissingSubcommand extends ValidationError.Proto {\n readonly _tag: \"MissingSubcommand\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface MultipleValuesDetected extends ValidationError.Proto {\n readonly _tag: \"MultipleValuesDetected\"\n readonly error: HelpDoc\n readonly values: ReadonlyArray<string>\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface NoBuiltInMatch extends ValidationError.Proto {\n readonly _tag: \"NoBuiltInMatch\"\n readonly error: HelpDoc\n}\n\n/**\n * @since 1.0.0\n * @category models\n */\nexport interface UnclusteredFlag extends ValidationError.Proto {\n readonly _tag: \"UnclusteredFlag\"\n readonly error: HelpDoc\n readonly unclustered: ReadonlyArray<string>\n readonly rest: ReadonlyArray<string>\n}\n\n/**\n * @since 1.0.0\n */\nexport declare namespace ValidationError {\n /**\n * @since 1.0.0\n * @category models\n */\n export interface Proto {\n readonly [ValidationErrorTypeId]: ValidationErrorTypeId\n }\n}\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isValidationError: (u: unknown) => u is ValidationError = InternalValidationError.isValidationError\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isCommandMismatch: (self: ValidationError) => self is CommandMismatch =\n InternalValidationError.isCommandMismatch\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isCorrectedFlag: (self: ValidationError) => self is CorrectedFlag = InternalValidationError.isCorrectedFlag\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isHelpRequested: (self: ValidationError) => self is HelpRequested = InternalValidationError.isHelpRequested\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isInvalidArgument: (self: ValidationError) => self is InvalidArgument =\n InternalValidationError.isInvalidArgument\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isInvalidValue: (self: ValidationError) => self is InvalidValue = InternalValidationError.isInvalidValue\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isMultipleValuesDetected: (self: ValidationError) => self is MultipleValuesDetected =\n InternalValidationError.isMultipleValuesDetected\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isMissingFlag: (self: ValidationError) => self is MissingFlag = InternalValidationError.isMissingFlag\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isMissingValue: (self: ValidationError) => self is MissingValue = InternalValidationError.isMissingValue\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isMissingSubcommand: (self: ValidationError) => self is MissingSubcommand =\n InternalValidationError.isMissingSubcommand\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isNoBuiltInMatch: (self: ValidationError) => self is NoBuiltInMatch =\n InternalValidationError.isNoBuiltInMatch\n\n/**\n * @since 1.0.0\n * @category refinements\n */\nexport const isUnclusteredFlag: (self: ValidationError) => self is UnclusteredFlag =\n InternalValidationError.isUnclusteredFlag\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const commandMismatch: (error: HelpDoc) => ValidationError = InternalValidationError.commandMismatch\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const correctedFlag: (error: HelpDoc) => ValidationError = InternalValidationError.correctedFlag\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const helpRequested: <A>(command: Command<A>) => ValidationError = InternalCommand.helpRequestedError\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const invalidArgument: (error: HelpDoc) => ValidationError = InternalValidationError.invalidArgument\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const invalidValue: (error: HelpDoc) => ValidationError = InternalValidationError.invalidValue\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const keyValuesDetected: (\n error: HelpDoc,\n keyValues: ReadonlyArray<string>\n) => ValidationError = InternalValidationError.multipleValuesDetected\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const missingFlag: (error: HelpDoc) => ValidationError = InternalValidationError.missingFlag\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const missingValue: (error: HelpDoc) => ValidationError = InternalValidationError.missingValue\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const missingSubcommand: (error: HelpDoc) => ValidationError = InternalValidationError.missingSubcommand\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const noBuiltInMatch: (error: HelpDoc) => ValidationError = InternalValidationError.noBuiltInMatch\n\n/**\n * @since 1.0.0\n * @category constructors\n */\nexport const unclusteredFlag: (\n error: HelpDoc,\n unclustered: ReadonlyArray<string>,\n rest: ReadonlyArray<string>\n) => ValidationError = InternalValidationError.unclusteredFlag\n","import type * as FileSystem from \"@effect/platform/FileSystem\"\nimport type * as Path from \"@effect/platform/Path\"\nimport type * as Terminal from \"@effect/platform/Terminal\"\nimport * as Arr from \"effect/Array\"\nimport * as Context from \"effect/Context\"\nimport * as Effect from \"effect/Effect\"\nimport * as Effectable from \"effect/Effectable\"\nimport { dual, identity } from \"effect/Function\"\nimport { globalValue } from \"effect/GlobalValue\"\nimport type * as HashMap from \"effect/HashMap\"\nimport type * as HashSet from \"effect/HashSet\"\nimport type * as Layer from \"effect/Layer\"\nimport type * as Option from \"effect/Option\"\nimport { pipeArguments } from \"effect/Pipeable\"\nimport type * as Types from \"effect/Types\"\nimport type * as Args from \"../Args.js\"\nimport type * as CliApp from \"../CliApp.js\"\nimport type * as CliConfig from \"../CliConfig.js\"\nimport type * as Command from \"../Command.js\"\nimport type * as Descriptor from \"../CommandDescriptor.js\"\nimport type * as HelpDoc from \"../HelpDoc.js\"\nimport type * as Options from \"../Options.js\"\nimport type * as Prompt from \"../Prompt.js\"\nimport type * as Usage from \"../Usage.js\"\nimport * as ValidationError from \"../ValidationError.js\"\nimport * as InternalArgs from \"./args.js\"\nimport * as InternalCliApp from \"./cliApp.js\"\nimport * as InternalDescriptor from \"./commandDescriptor.js\"\nimport * as InternalOptions from \"./options.js\"\n\nconst CommandSymbolKey = \"@effect/cli/Command\"\n\n/** @internal */\nexport const TypeId: Command.TypeId = Symbol.for(\n CommandSymbolKey\n) as Command.TypeId\n\nconst parseConfig = (config: Command.Command.Config): Command.Command.ParsedConfig => {\n const args: Array<Args.Args<any>> = []\n let argsIndex = 0\n const options: Array<Options.Options<any>> = []\n let optionsIndex = 0\n\n function parse(config: Command.Command.Config) {\n const tree: Command.Command.ParsedConfigTree = {}\n for (const key in config) {\n tree[key] = parseValue(config[key])\n }\n return tree\n }\n\n function parseValue(\n value:\n | Args.Args<any>\n | Options.Options<any>\n | ReadonlyArray<Args.Args<any> | Options.Options<any> | Command.Command.Config>\n | Command.Command.Config\n ): Command.Command.ParsedConfigNode {\n if (Arr.isArray(value)) {\n return {\n _tag: \"Array\",\n children: Arr.map(value as Array<any>, parseValue)\n }\n } else if (InternalArgs.isArgs(value)) {\n args.push(value)\n return {\n _tag: \"Args\",\n index: argsIndex++\n }\n } else if (InternalOptions.isOptions(value)) {\n options.push(value)\n return {\n _tag: \"Options\",\n index: optionsIndex++\n }\n } else {\n return {\n _tag: \"ParsedConfig\",\n tree: parse(value as any)\n }\n }\n }\n\n return {\n args,\n options,\n tree: parse(config)\n }\n}\n\nconst reconstructConfigTree = (\n tree: Command.Command.ParsedConfigTree,\n args: ReadonlyArray<any>,\n options: ReadonlyArray<any>\n): Record<string, any> => {\n const output: Record<string, any> = {}\n\n for (const key in tree) {\n output[key] = nodeValue(tree[key])\n }\n\n return output\n\n function nodeValue(node: Command.Command.ParsedConfigNode): any {\n if (node._tag === \"Args\") {\n return args[node.index]\n } else if (node._tag === \"Options\") {\n return options[node.index]\n } else if (node._tag === \"Array\") {\n return Arr.map(node.children, nodeValue)\n } else {\n return reconstructConfigTree(node.tree, args, options)\n }\n }\n}\n\nconst Prototype = {\n ...Effectable.CommitPrototype,\n [TypeId]: TypeId,\n commit(this: Command.Command<string, any, any, any>) {\n return this.tag\n },\n pipe() {\n return pipeArguments(this, arguments)\n }\n}\n\nconst registeredDescriptors = globalValue(\n \"@effect/cli/Command/registeredDescriptors\",\n () => new WeakMap<Context.Tag<any, any>, Descriptor.Command<any>>()\n)\n\nconst getDescriptor = <Name extends string, R, E, A>(self: Command.Command<Name, R, E, A>) =>\n registeredDescriptors.get(self.tag) ?? self.descriptor\n\nconst makeProto = <Name extends string, R, E, A>(\n descriptor: Descriptor.Command<A>,\n handler: (_: A) => Effect.Effect<void, E, R>,\n tag: Context.Tag<any, any>,\n transform: Command.Command.Transform<R, E, A> = identity\n): Command.Command<Name, R, E, A> => {\n const self = Object.create(Prototype)\n self.descriptor = descriptor\n self.handler = handler\n self.transform = transform\n self.tag = tag\n return self\n}\n\nconst makeDerive = <Name extends string, R, E, A>(\n self: Command.Command<Name, any, any, A>,\n options: {\n readonly descriptor?: Descriptor.Command<A>\n readonly handler?: (_: A) => Effect.Effect<void, E, R>\n readonly transform?: Command.Command.Transform<R, E, A>\n }\n): Command.Command<Name, R, E, A> => {\n const command = Object.create(Prototype)\n command.descriptor = options.descriptor ?? self.descriptor\n command.handler = options.handler ?? self.handler\n command.transform = options.transform\n ? ((effect: Effect.Effect<void, E, R>, opts: A) => options.transform!(self.transform(effect, opts), opts))\n : self.transform\n command.tag = self.tag\n return command\n}\n\n/** @internal */\nexport const fromDescriptor = dual<\n {\n (): <A extends { readonly name: string }>(\n command: Descriptor.Command<A>\n ) => Command.Command<A[\"name\"], never, never, A>\n <A extends { readonly name: string }, R, E>(\n handler: (_: A) => Effect.Effect<void, E, R>\n ): (command: Descriptor.Command<A>) => Command.Command<A[\"name\"], R, E, A>\n },\n {\n <A extends { readonly name: string }>(\n descriptor: Descriptor.Command<A>\n ): Command.Command<A[\"name\"], never, never, A>\n <A extends { readonly name: string }, R, E>(\n descriptor: Descriptor.Command<A>,\n handler: (_: A) => Effect.Effect<void, E, R>\n ): Command.Command<A[\"name\"], R, E, A>\n }\n>(\n (args) => InternalDescriptor.isCommand(args[0]),\n (descriptor: Descriptor.Command<any>, handler?: (_: any) => Effect.Effect<any, any, any>) => {\n const self: Command.Command<any, any, any, any> = makeProto(\n descriptor,\n handler ??\n ((_) => Effect.failSync(() => ValidationError.helpRequested(getDescriptor(self)))),\n Context.GenericTag(\n `@effect/cli/Command/(${Arr.fromIterable(InternalDescriptor.getNames(descriptor)).join(\"|\")})`\n )\n )\n return self as any\n }\n)\n\nconst makeDescriptor = <const Config extends Command.Command.Config>(\n name: string,\n config: Config\n): Descriptor.Command<Types.Simplify<Command.Command.ParseConfig<Config>>> => {\n const { args, options, tree } = parseConfig(config)\n return InternalDescriptor.map(\n InternalDescriptor.make(name, InternalOptions.all(options), InternalArgs.all(args)),\n ({ args, options }) => reconstructConfigTree(tree, args, options)\n ) as any\n}\n\n/** @internal */\nexport const make: {\n <Name extends string>(name: Name): Command.Command<\n Name,\n never,\n never,\n {}\n >\n\n <Name extends string, const Config extends Command.Command.Config>(\n name: Name,\n config: Config\n ): Command.Command<\n Name,\n never,\n never,\n Types.Simplify<Command.Command.ParseConfig<Config>>\n >\n\n <Name extends string, const Config extends Command.Command.Config, R, E>(\n name: Name,\n config: Config,\n handler: (_: Types.Simplify<Command.Command.ParseConfig<Config>>) => Effect.Effect<void, E, R>\n ): Command.Command<\n Name,\n R,\n E,\n Types.Simplify<Command.Command.ParseConfig<Config>>\n >\n} = (\n name: string,\n config: Command.Command.Config = {},\n handler?: (_: any) => Effect.Effect<any, any, any>\n) => fromDescriptor(makeDescriptor(name, config) as any, handler as any) as any\n\n/** @internal */\nexport const getHelp = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n config: CliConfig.CliConfig\n): HelpDoc.HelpDoc => InternalDescriptor.getHelp(self.descriptor, config)\n\n/** @internal */\nexport const getNames = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>\n): HashSet.HashSet<string> => InternalDescriptor.getNames(self.descriptor)\n\n/** @internal */\nexport const getBashCompletions = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n programName: string\n): Effect.Effect<Array<string>> => InternalDescriptor.getBashCompletions(self.descriptor, programName)\n\n/** @internal */\nexport const getFishCompletions = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n programName: string\n): Effect.Effect<Array<string>> => InternalDescriptor.getFishCompletions(self.descriptor, programName)\n\n/** @internal */\nexport const getZshCompletions = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n programName: string\n): Effect.Effect<Array<string>> => InternalDescriptor.getZshCompletions(self.descriptor, programName)\n\n/** @internal */\nexport const getSubcommands = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>\n): HashMap.HashMap<string, Descriptor.Command<unknown>> => InternalDescriptor.getSubcommands(self.descriptor)\n\n/** @internal */\nexport const getUsage = <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>\n): Usage.Usage => InternalDescriptor.getUsage(self.descriptor)\n\nconst mapDescriptor = dual<\n <A>(f: (_: Descriptor.Command<A>) => Descriptor.Command<A>) => <Name extends string, R, E>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, R, E, A>,\n <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n f: (_: Descriptor.Command<A>) => Descriptor.Command<A>\n ) => Command.Command<Name, R, E, A>\n>(2, (self, f) => makeDerive(self, { descriptor: f(self.descriptor) }))\n\n/** @internal */\nexport const prompt = <Name extends string, A, R, E>(\n name: Name,\n prompt: Prompt.Prompt<A>,\n handler: (_: A) => Effect.Effect<void, E, R>\n) =>\n makeProto(\n InternalDescriptor.map(\n InternalDescriptor.prompt(name, prompt),\n (_) => _.value\n ),\n handler,\n Context.GenericTag(`@effect/cli/Prompt/${name}`)\n )\n\n/** @internal */\nexport const withHandler = dual<\n <A, R, E>(\n handler: (_: A) => Effect.Effect<void, E, R>\n ) => <Name extends string, XR, XE>(\n self: Command.Command<Name, XR, XE, A>\n ) => Command.Command<Name, R, E, A>,\n <Name extends string, XR, XE, A, R, E>(\n self: Command.Command<Name, XR, XE, A>,\n handler: (_: A) => Effect.Effect<void, E, R>\n ) => Command.Command<Name, R, E, A>\n>(2, (self, handler) => makeDerive(self, { handler, transform: identity }))\n\n/** @internal */\nexport const transformHandler = dual<\n <R, E, A, R2, E2>(\n f: (effect: Effect.Effect<void, E, R>, config: A) => Effect.Effect<void, E2, R2>\n ) => <Name extends string>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, R | R2, E | E2, A>,\n <Name extends string, R, E, A, R2, E2>(\n self: Command.Command<Name, R, E, A>,\n f: (effect: Effect.Effect<void, E, R>, config: A) => Effect.Effect<void, E2, R2>\n ) => Command.Command<Name, R | R2, E | E2, A>\n>(2, (self, f) => makeDerive(self, { transform: f }))\n\n/** @internal */\nexport const provide = dual<\n <A, LR, LE, LA>(\n layer: Layer.Layer<LA, LE, LR> | ((_: A) => Layer.Layer<LA, LE, LR>)\n ) => <Name extends string, R, E>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, Exclude<R, LA> | LR, E | LE, A>,\n <Name extends string, R, E, A, LR, LE, LA>(\n self: Command.Command<Name, R, E, A>,\n layer: Layer.Layer<LA, LE, LR> | ((_: A) => Layer.Layer<LA, LE, LR>)\n ) => Command.Command<Name, Exclude<R, LA> | LR, E | LE, A>\n>(2, (self, layer) =>\n makeDerive(self, {\n transform: (effect, config) => Effect.provide(effect, typeof layer === \"function\" ? layer(config) : layer)\n }))\n\n/** @internal */\nexport const provideEffect = dual<\n <I, S, A, R2, E2>(\n tag: Context.Tag<I, S>,\n effect: Effect.Effect<S, E2, R2> | ((_: A) => Effect.Effect<S, E2, R2>)\n ) => <Name extends string, R, E>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, Exclude<R, I> | R2, E | E2, A>,\n <Name extends string, R, E, A, I, S, R2, E2>(\n self: Command.Command<Name, R, E, A>,\n tag: Context.Tag<I, S>,\n effect: Effect.Effect<S, E2, R2> | ((_: A) => Effect.Effect<S, E2, R2>)\n ) => Command.Command<Name, Exclude<R, I> | R2, E | E2, A>\n>(3, (self, tag, effect_) =>\n makeDerive(self, {\n transform: (self, config) => {\n const effect = typeof effect_ === \"function\" ? effect_(config) : effect_\n return Effect.provideServiceEffect(self, tag, effect)\n }\n }))\n\n/** @internal */\nexport const provideEffectDiscard = dual<\n <A, R2, E2, _>(\n effect: Effect.Effect<_, E2, R2> | ((_: A) => Effect.Effect<_, E2, R2>)\n ) => <Name extends string, R, E>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, R | R2, E | E2, A>,\n <Name extends string, R, E, A, R2, E2, _>(\n self: Command.Command<Name, R, E, A>,\n effect: Effect.Effect<_, E2, R2> | ((_: A) => Effect.Effect<_, E2, R2>)\n ) => Command.Command<Name, R | R2, E | E2, A>\n>(2, (self, effect_) =>\n makeDerive(self, {\n transform: (self, config) => {\n const effect = typeof effect_ === \"function\" ? effect_(config) : effect_\n return Effect.zipRight(effect, self)\n }\n }))\n\n/** @internal */\nexport const provideSync = dual<\n <I, S, A>(\n tag: Context.Tag<I, S>,\n service: S | ((_: A) => S)\n ) => <Name extends string, R, E>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, Exclude<R, I>, E, A>,\n <Name extends string, R, E, A, I, S>(\n self: Command.Command<Name, R, E, A>,\n tag: Context.Tag<I, S>,\n service: S | ((_: A) => S)\n ) => Command.Command<Name, Exclude<R, I>, E, A>\n>(3, (self, tag, f) =>\n makeDerive(self, {\n transform: (self, config) => {\n const service = typeof f === \"function\" ? (f as any)(config) : f\n return Effect.provideService(self, tag, service)\n }\n }))\n\n/** @internal */\nexport const withDescription = dual<\n (\n help: string | HelpDoc.HelpDoc\n ) => <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>\n ) => Command.Command<Name, R, E, A>,\n <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n help: string | HelpDoc.HelpDoc\n ) => Command.Command<Name, R, E, A>\n>(2, (self, help) => mapDescriptor(self, InternalDescriptor.withDescription(help)))\n\n/** @internal */\nexport const withSubcommands = dual<\n <Subcommand extends Arr.NonEmptyReadonlyArray<Command.Command<any, any, any, any>>>(\n subcommands: Subcommand\n ) => <Name extends string, R, E, A>(self: Command.Command<Name, R, E, A>) => Command.Command<\n Name,\n | R\n | Exclude<\n Effect.Effect.Context<ReturnType<Subcommand[number][\"handler\"]>>,\n Descriptor.Command<Name>\n >,\n E | Effect.Effect.Error<ReturnType<Subcommand[number][\"handler\"]>>,\n Descriptor.Command.ComputeParsedType<\n & A\n & Readonly<\n {\n subcommand: Option.Option<\n Descriptor.Command.GetParsedType<Subcommand[number][\"descriptor\"]>\n >\n }\n >\n >\n >,\n <\n Name extends string,\n R,\n E,\n A,\n Subcommand extends Arr.NonEmptyReadonlyArray<Command.Command<any, any, any, any>>\n >(\n self: Command.Command<Name, R, E, A>,\n subcommands: Subcommand\n ) => Command.Command<\n Name,\n | R\n | Exclude<\n Effect.Effect.Context<ReturnType<Subcommand[number][\"handler\"]>>,\n Descriptor.Command<Name>\n >,\n E | Effect.Effect.Error<ReturnType<Subcommand[number][\"handler\"]>>,\n Descriptor.Command.ComputeParsedType<\n & A\n & Readonly<\n {\n subcommand: Option.Option<\n Descriptor.Command.GetParsedType<Subcommand[number][\"descriptor\"]>\n >\n }\n >\n >\n >\n>(2, (self, subcommands) => {\n const command = InternalDescriptor.withSubcommands(\n self.descriptor,\n Arr.map(subcommands, (_) => [_.tag, _.descriptor])\n )\n const subcommandMap = Arr.reduce(\n subcommands,\n new Map<Context.Tag<any, any>, Command.Command<any, any, any, any>>(),\n (handlers, subcommand) => {\n handlers.set(subcommand.tag, subcommand)\n registeredDescriptors.set(subcommand.tag, subcommand.descriptor)\n return handlers\n }\n )\n function handler(\n args: {\n readonly name: string\n readonly subcommand: Option.Option<readonly [id: Context.Tag<any, any>, value: unknown]>\n }\n ) {\n if (args.subcommand._tag === \"Some\") {\n const [tag, value] = args.subcommand.value\n const subcommand = subcommandMap.get(tag)!\n const subcommandEffect = subcommand.transform(subcommand.handler(value), value)\n return Effect.provideService(\n subcommandEffect,\n self.tag,\n args as any\n )\n }\n return self.handler(args as any)\n }\n return makeDerive(self as any, { descriptor: command as any, handler }) as any\n})\n\n/** @internal */\nexport const wizard = dual<\n (\n prefix: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>\n ) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >,\n <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n prefix: ReadonlyArray<string>,\n config: CliConfig.CliConfig\n ) => Effect.Effect<\n Array<string>,\n Terminal.QuitException | ValidationError.ValidationError,\n FileSystem.FileSystem | Path.Path | Terminal.Terminal\n >\n>(3, (self, prefix, config) => InternalDescriptor.wizard(self.descriptor, prefix, config))\n\n/** @internal */\nexport const run = dual<\n (\n config: Omit<CliApp.CliApp.ConstructorArgs<never>, \"command\">\n ) => <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>\n ) => (\n args: ReadonlyArray<string>\n ) => Effect.Effect<void, E | ValidationError.ValidationError, R | CliApp.CliApp.Environment>,\n <Name extends string, R, E, A>(\n self: Command.Command<Name, R, E, A>,\n config: Omit<CliApp.CliApp.ConstructorArgs<never>, \"command\">\n ) => (\n args: ReadonlyArray<string>\n ) => Effect.Effect<void, E | ValidationError.ValidationError, R | CliApp.CliApp.Environment>\n>(2, (self, config) => {\n const app = InternalCliApp.make({\n ...config,\n command: self.descriptor\n })\n registeredDescriptors.set(self.tag, self.descriptor)\n const handler = (args: any) => self.transform(self.handler(args), args)\n return (args) => InternalCliApp.run(app, args, handler)\n})\n","import { Effect } from \"effect\";\nimport { execFile } from \"node:child_process\";\nimport { resolve } from \"node:path\";\nimport { PodmanError } from \"./errors.js\";\n\nconst podmanExec = (args: string[]): Effect.Effect<string, PodmanError> =>\n Effect.async((resume) => {\n execFile(\n \"podman\",\n args,\n { maxBuffer: 10 * 1024 * 1024 },\n (error, stdout, stderr) => {\n if (error) {\n resume(\n Effect.fail(\n new PodmanError({\n message: `podman ${args[0]} failed: ${stderr?.toString() || error.message}`,\n }),\n ),\n );\n } else {\n resume(Effect.succeed(stdout.toString()));\n }\n },\n );\n });\n\n/**\n * Build the sandcastle Podman image.\n *\n * When `containerfile` is provided, uses `podman build -f <containerfile> <cwd>`\n * so COPY instructions resolve relative to the current working directory.\n * Otherwise, uses `podman build <containerfileDir>` (the default .sandcastle/ directory).\n */\nexport const buildImage = (\n imageName: string,\n containerfileDir: string,\n options?: { readonly containerfile?: string },\n): Effect.Effect<void, PodmanError> =>\n Effect.gen(function* () {\n if (options?.containerfile) {\n yield* podmanExec([\n \"build\",\n \"-t\",\n imageName,\n \"-f\",\n resolve(options.containerfile),\n process.cwd(),\n ]);\n } else {\n yield* podmanExec([\"build\", \"-t\", imageName, resolve(containerfileDir)]);\n }\n });\n\n/**\n * Remove a Podman image.\n */\nexport const removeImage = (\n imageName: string,\n): Effect.Effect<void, PodmanError> =>\n Effect.gen(function* () {\n yield* podmanExec([\"rmi\", imageName]);\n });\n","import { FileSystem } from \"@effect/platform\";\nimport { Effect } from \"effect\";\nimport { dirname, join } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { AGENT_DEFAULT_MODELS } from \"./AgentProvider.js\";\nimport { SANDBOX_REPO_DIR } from \"./SandboxFactory.js\";\n\nconst GITIGNORE = `.env\nlogs/\nworktrees/\n`;\n\n/**\n * Filename of the setup prompt scaffolded for the `custom` issue tracker.\n * Both the per-agent `setupCommand` and the in-scaffold sentinels point at it,\n * so it is defined once here.\n */\nconst SETUP_ISSUE_TRACKER_DOC = \"SETUP_ISSUE_TRACKER.md\";\nconst SETUP_ISSUE_TRACKER_PATH = `.sandcastle/${SETUP_ISSUE_TRACKER_DOC}`;\n\nexport interface TemplateMetadata {\n name: string;\n description: string;\n /**\n * Host-side npm packages the template's `main` file imports directly (e.g.\n * the planner templates import `zod` for their `<plan>` output schema). Init\n * offers to install these with the detected package manager so that\n * `npx tsx .sandcastle/main.ts` doesn't crash with ERR_MODULE_NOT_FOUND.\n */\n dependencies?: readonly string[];\n}\n\nconst TEMPLATES: TemplateMetadata[] = [\n {\n name: \"blank\",\n description: \"Bare scaffold — write your own prompt and orchestration\",\n },\n {\n name: \"simple-loop\",\n description: \"Picks issues one by one and closes them\",\n },\n {\n name: \"sequential-reviewer\",\n description:\n \"Implements issues one by one, with a code review step after each\",\n },\n {\n name: \"parallel-planner\",\n description:\n \"Plans parallelizable issues, executes on separate branches, merges\",\n dependencies: [\"zod\"],\n },\n {\n name: \"parallel-planner-with-review\",\n description:\n \"Plans parallelizable issues, executes with per-branch review, merges\",\n dependencies: [\"zod\"],\n },\n];\n\nexport const listTemplates = (): TemplateMetadata[] => TEMPLATES;\n\n/**\n * Host-side npm packages the given template imports directly. Empty when the\n * template name is unknown or the template declares no extra dependencies.\n */\nexport const getTemplateDependencies = (\n templateName: string,\n): readonly string[] =>\n TEMPLATES.find((t) => t.name === templateName)?.dependencies ?? [];\n\n// ---------------------------------------------------------------------------\n// Package manager detection (internal — not part of public API)\n// ---------------------------------------------------------------------------\n\nconst PACKAGE_MANAGERS = [\"npm\", \"pnpm\", \"yarn\", \"bun\"] as const;\n\n/** A package manager Sandcastle can detect on the host and build install commands for. */\nexport type PackageManager = (typeof PACKAGE_MANAGERS)[number];\n\n// Lockfiles checked in priority order. bun.lock / bun.lockb are both valid bun\n// lockfiles (text vs binary), so both map to bun.\nconst LOCKFILES: ReadonlyArray<readonly [string, PackageManager]> = [\n [\"bun.lockb\", \"bun\"],\n [\"bun.lock\", \"bun\"],\n [\"pnpm-lock.yaml\", \"pnpm\"],\n [\"yarn.lock\", \"yarn\"],\n [\"package-lock.json\", \"npm\"],\n];\n\n/**\n * Detect the host project's package manager. An explicit corepack-style\n * `packageManager` field in package.json wins; otherwise the first matching\n * lockfile decides. Defaults to npm when nothing matches.\n */\nexport const detectPackageManager = (\n repoDir: string,\n): Effect.Effect<PackageManager, never, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n\n const pkgPath = join(repoDir, \"package.json\");\n const pkgExists = yield* fs\n .exists(pkgPath)\n .pipe(Effect.orElseSucceed(() => false));\n if (pkgExists) {\n const content = yield* fs\n .readFileString(pkgPath)\n .pipe(Effect.orElseSucceed(() => \"\"));\n try {\n const pkg = JSON.parse(content) as Record<string, unknown>;\n const field = pkg[\"packageManager\"];\n if (typeof field === \"string\") {\n const name = field.split(\"@\")[0];\n const match = PACKAGE_MANAGERS.find((pm) => pm === name);\n if (match) return match;\n }\n } catch {\n // Malformed package.json — fall through to lockfile detection.\n }\n }\n\n for (const [file, pm] of LOCKFILES) {\n const exists = yield* fs\n .exists(join(repoDir, file))\n .pipe(Effect.orElseSucceed(() => false));\n if (exists) return pm;\n }\n\n return \"npm\";\n });\n\n/** Build the command that adds a runtime dependency for the given package manager. */\nexport const addDependencyCommand = (\n packageManager: PackageManager,\n pkg: string,\n): string => {\n switch (packageManager) {\n case \"pnpm\":\n return `pnpm add ${pkg}`;\n case \"yarn\":\n return `yarn add ${pkg}`;\n case \"bun\":\n return `bun add ${pkg}`;\n case \"npm\":\n return `npm install ${pkg}`;\n }\n};\n\n/**\n * Whether the host package.json already declares `pkg` in any of its dependency\n * maps. Used so init doesn't offer to install something already present.\n */\nexport const hostHasDependency = (\n repoDir: string,\n pkg: string,\n): Effect.Effect<boolean, never, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const pkgPath = join(repoDir, \"package.json\");\n const exists = yield* fs\n .exists(pkgPath)\n .pipe(Effect.orElseSucceed(() => false));\n if (!exists) return false;\n const content = yield* fs\n .readFileString(pkgPath)\n .pipe(Effect.orElseSucceed(() => \"\"));\n try {\n const parsed = JSON.parse(content) as Record<string, unknown>;\n const depMaps = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ];\n return depMaps.some((key) => {\n const deps = parsed[key];\n return (\n typeof deps === \"object\" && deps !== null && pkg in (deps as object)\n );\n });\n } catch {\n return false;\n }\n });\n\n// ---------------------------------------------------------------------------\n// Agent registry (internal — not part of public API)\n// ---------------------------------------------------------------------------\n\n/**\n * Per-agent Dockerfile install steps, composed by `composeAgentDockerfile` onto\n * a shared base. `root` snippets run before the `USER agent` switch (global npm\n * installs); `user` snippets run after it (installers that write to the agent's\n * home, e.g. `~/.local/bin`). `pathAddition` is a directory prepended to PATH\n * once for the whole image, de-duplicated across agents.\n */\nexport interface DockerInstall {\n readonly root?: string;\n readonly user?: string;\n readonly pathAddition?: string;\n}\n\nexport interface AgentEntry {\n readonly name: string;\n readonly label: string;\n readonly defaultModel: string;\n readonly factoryImport: string;\n /** Per-agent install steps composed onto the shared base by `composeAgentDockerfile`. */\n readonly dockerInstall: DockerInstall;\n /** Lines to include in the generated `.env.example` for this agent's API key. */\n readonly envExample: string;\n /**\n * Copy-pasteable interactive command that feeds the custom-issue-tracker\n * setup prompt to this agent's CLI on the host. Printed in init's next steps\n * when the `custom` issue tracker is selected. Runs on the host (the\n * sandbox image isn't built yet), so the user must have the CLI installed.\n */\n readonly setupCommand: string;\n}\n\n// Shared Dockerfile base composed by `composeAgentDockerfile`. The head ends\n// just before the `USER agent` switch so root-phase installs can be inserted;\n// the tail starts at WORKDIR so user-phase installs and PATH additions slot in\n// between. `{{ISSUE_TRACKER_TOOLS}}` is preserved for later substitution.\nconst DOCKERFILE_BASE_HEAD = `FROM node:22-bookworm\n\n# Install system dependencies\nRUN apt-get update && apt-get install -y \\\\\n git \\\\\n curl \\\\\n jq \\\\\n && rm -rf /var/lib/apt/lists/*\n\n{{ISSUE_TRACKER_TOOLS}}\n\n# Build-args for UID/GID alignment: sandcastle docker build-image\n# defaults these to the host user's UID/GID so image-built files\n# and bind-mounted files share an owner without runtime chown.\nARG AGENT_UID=1000\nARG AGENT_GID=1000\n\n# Rename the base image's \"node\" user to \"agent\" and align UID/GID.\nRUN groupmod -o -g $AGENT_GID node && usermod -o -u $AGENT_UID -g $AGENT_GID -d /home/agent -m -l agent node`;\n\nconst DOCKERFILE_BASE_TAIL = `WORKDIR /home/agent\n\n# In worktree sandbox mode, Sandcastle bind-mounts the git worktree at ${SANDBOX_REPO_DIR}\n# and overrides the working directory to ${SANDBOX_REPO_DIR} at container start.\n# Structure your Dockerfile so that ${SANDBOX_REPO_DIR} can serve as the project root.\nENTRYPOINT [\"sleep\", \"infinity\"]`;\n\n// Per-agent install snippets, slotted into the shared base. `root` snippets run\n// as root before the USER switch; `user` snippets run as the agent user after.\nconst CLAUDE_CODE_INSTALL = `# Install Claude Code CLI\nRUN curl -fsSL https://claude.ai/install.sh | bash`;\n\nconst PI_INSTALL = `# Install pi coding agent (run as root before USER agent)\nRUN npm install -g @mariozechner/pi-coding-agent`;\n\nconst CODEX_INSTALL = `# Install Codex CLI (run as root before USER agent)\nRUN npm install -g @openai/codex`;\n\nconst CURSOR_INSTALL = `# Install Cursor Agent CLI\nRUN curl https://cursor.com/install -fsS | bash`;\n\nconst OPENCODE_INSTALL = `# Install OpenCode CLI (run as root before USER agent)\nRUN npm install -g opencode-ai@latest`;\n\nconst COPILOT_INSTALL = `# Install GitHub Copilot CLI (run as root before USER agent)\nRUN npm install -g @github/copilot`;\n\nconst AGENT_LOCAL_BIN = \"/home/agent/.local/bin\";\n\nconst AGENT_REGISTRY: AgentEntry[] = [\n {\n name: \"claude-code\",\n label: \"Claude Code\",\n defaultModel: AGENT_DEFAULT_MODELS[\"claude-code\"],\n factoryImport: \"claudeCode\",\n dockerInstall: { user: CLAUDE_CODE_INSTALL, pathAddition: AGENT_LOCAL_BIN },\n envExample: `# Anthropic API key\n# If you want to use your Claude subscription instead of an API key, see https://github.com/mattpocock/sandcastle/issues/191\nANTHROPIC_API_KEY=`,\n setupCommand: `claude \"$(cat ${SETUP_ISSUE_TRACKER_PATH})\"`,\n },\n {\n name: \"pi\",\n label: \"Pi\",\n defaultModel: AGENT_DEFAULT_MODELS.pi,\n factoryImport: \"pi\",\n dockerInstall: { root: PI_INSTALL },\n envExample: `# Anthropic API key\nANTHROPIC_API_KEY=`,\n setupCommand: `pi \"$(cat ${SETUP_ISSUE_TRACKER_PATH})\"`,\n },\n {\n name: \"codex\",\n label: \"Codex\",\n defaultModel: AGENT_DEFAULT_MODELS.codex,\n factoryImport: \"codex\",\n dockerInstall: { root: CODEX_INSTALL },\n envExample: `# OpenAI API key\nOPENAI_KEY=`,\n setupCommand: `codex \"$(cat ${SETUP_ISSUE_TRACKER_PATH})\"`,\n },\n {\n name: \"cursor\",\n label: \"Cursor\",\n defaultModel: AGENT_DEFAULT_MODELS.cursor,\n factoryImport: \"cursor\",\n dockerInstall: { user: CURSOR_INSTALL, pathAddition: AGENT_LOCAL_BIN },\n envExample: `# Cursor API key (recommended)\n# You can also pass --api-key directly to the agent CLI.\nCURSOR_API_KEY=`,\n setupCommand: `agent \"$(cat ${SETUP_ISSUE_TRACKER_PATH})\"`,\n },\n {\n name: \"opencode\",\n label: \"OpenCode\",\n defaultModel: AGENT_DEFAULT_MODELS.opencode,\n factoryImport: \"opencode\",\n dockerInstall: { root: OPENCODE_INSTALL },\n envExample: `# OpenCode API key\nOPENCODE_API_KEY=`,\n setupCommand: `opencode -p \"$(cat ${SETUP_ISSUE_TRACKER_PATH})\"`,\n },\n {\n name: \"copilot\",\n label: \"GitHub Copilot CLI\",\n defaultModel: AGENT_DEFAULT_MODELS.copilot,\n factoryImport: \"copilot\",\n dockerInstall: { root: COPILOT_INSTALL },\n envExample: `# GitHub token with the \"Copilot Requests\" permission\n# (a fine-grained PAT, or any token from \\`gh auth login\\`).\n# COPILOT_GITHUB_TOKEN takes precedence over GH_TOKEN and GITHUB_TOKEN.\nGITHUB_TOKEN=`,\n setupCommand: `copilot -i \"$(cat ${SETUP_ISSUE_TRACKER_PATH})\"`,\n },\n];\n\nexport const listAgents = (): AgentEntry[] => AGENT_REGISTRY;\n\nconst resolveAgentEntries = (agentNames: readonly string[]): AgentEntry[] => {\n if (agentNames.length === 0) {\n throw new Error(\"At least one agent must be selected.\");\n }\n return agentNames.map((name) => {\n const entry = AGENT_REGISTRY.find((a) => a.name === name);\n if (!entry) {\n const valid = AGENT_REGISTRY.map((a) => a.name).join(\", \");\n throw new Error(`Unknown agent \"${name}\". Valid agents: ${valid}`);\n }\n return entry;\n });\n};\n\n/**\n * Compose a single Dockerfile that installs every selected agent's CLI onto one\n * shared base image. Root-phase installs (global npm) run before the `USER\n * agent` switch; user-phase installs (home-dir installers) run after it; PATH\n * additions are de-duplicated. `{{ISSUE_TRACKER_TOOLS}}` is preserved for later\n * substitution by `substituteTemplateArgs`.\n */\nexport const composeAgentDockerfile = (\n agentNames: readonly string[],\n): string => {\n const entries = resolveAgentEntries(agentNames);\n\n const rootInstalls = entries\n .map((e) => e.dockerInstall.root)\n .filter((s): s is string => Boolean(s));\n const userInstalls = entries\n .map((e) => e.dockerInstall.user)\n .filter((s): s is string => Boolean(s));\n const pathAdditions = [\n ...new Set(\n entries\n .map((e) => e.dockerInstall.pathAddition)\n .filter((s): s is string => Boolean(s)),\n ),\n ];\n\n const sections: string[] = [DOCKERFILE_BASE_HEAD];\n if (rootInstalls.length > 0) sections.push(rootInstalls.join(\"\\n\\n\"));\n sections.push(\"USER ${AGENT_UID}:${AGENT_GID}\");\n if (userInstalls.length > 0) sections.push(userInstalls.join(\"\\n\\n\"));\n if (pathAdditions.length > 0) {\n const pathValue = [...pathAdditions, \"$PATH\"].join(\":\");\n sections.push(\n `# Add installed agent CLIs to PATH\\nENV PATH=\"${pathValue}\"`,\n );\n }\n sections.push(DOCKERFILE_BASE_TAIL);\n\n return sections.join(\"\\n\\n\") + \"\\n\";\n};\n\n/**\n * Compose the agent portion of `.env.example` for the selected agents. Per-agent\n * key blocks are aggregated and de-duplicated by env var name (so selecting two\n * Anthropic-backed agents yields a single `ANTHROPIC_API_KEY`). Documented\n * `AGENT=`/`AGENT_MODEL=` lines — listing the valid agent names and the default\n * (the first selected agent) — are appended last, after any `extraEnvBlocks`\n * (e.g. the issue tracker's block).\n */\nexport const composeAgentEnvExample = (\n agentNames: readonly string[],\n options?: {\n readonly modelOverride?: string;\n readonly extraEnvBlocks?: readonly string[];\n },\n): string => {\n const entries = resolveAgentEntries(agentNames);\n\n const seenVars = new Set<string>();\n const keyBlocks: string[] = [];\n for (const entry of entries) {\n const vars = [...entry.envExample.matchAll(/^([A-Z][A-Z0-9_]*)=/gm)].map(\n (m) => m[1]!,\n );\n if (vars.some((v) => seenVars.has(v))) continue;\n vars.forEach((v) => seenVars.add(v));\n keyBlocks.push(entry.envExample);\n }\n\n const defaultName = entries[0]!.name;\n // Only the selected agents are installed in the generated image, so only they\n // are valid AGENT values — documenting an uninstalled agent would make agent()\n // resolve to a CLI that was never installed.\n const validNames = entries.map((a) => a.name).join(\", \");\n const modelLine = options?.modelOverride\n ? `AGENT_MODEL=${options.modelOverride}`\n : \"# AGENT_MODEL=\";\n const agentDoc = `# --- Agent selection (resolved at runtime by agent()) ---\n# AGENT: which agent provider to use.\n# Valid values: ${validNames}\n# Defaults to \"${defaultName}\" when unset.\nAGENT=${defaultName}\n# AGENT_MODEL: override the selected agent's default model (optional).\n${modelLine}`;\n\n return [...keyBlocks, ...(options?.extraEnvBlocks ?? []), agentDoc].join(\n \"\\n\\n\",\n );\n};\n\n// ---------------------------------------------------------------------------\n// Issue tracker registry (internal — not part of public API)\n// ---------------------------------------------------------------------------\n\nexport interface IssueTrackerEntry {\n readonly name: string;\n readonly label: string;\n readonly templateArgs: {\n readonly LIST_TASKS_COMMAND: string;\n readonly VIEW_TASK_COMMAND: string;\n readonly CLOSE_TASK_COMMAND: string;\n readonly ISSUE_TRACKER_TOOLS: string;\n };\n /** Lines to append to `.env.example` for this issue tracker, or empty string if none needed. */\n readonly envExample: string;\n}\n\nconst GITHUB_CLI_TOOLS = `# Install GitHub CLI\nRUN curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg \\\\\n | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \\\\\n && echo \"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main\" \\\\\n | tee /etc/apt/sources.list.d/github-cli.list > /dev/null \\\\\n && apt-get update && apt-get install -y gh \\\\\n && rm -rf /var/lib/apt/lists/*`;\n\nconst BEADS_TOOLS = `# Install system dependencies for Beads\nRUN apt-get update && apt-get install -y \\\\\n dpkg-dev \\\\\n libicu72 \\\\\n && rm -rf /var/lib/apt/lists/* \\\\\n && ARCH_DIR=$(dpkg-architecture -qDEB_HOST_MULTIARCH) \\\\\n && for lib in /usr/lib/$ARCH_DIR/libicu*.so.72; do \\\\\n ln -s \"$lib\" \"\\${lib%.72}.74\"; \\\\\n done\n\nRUN curl -fsSL https://raw.githubusercontent.com/steveyegge/beads/main/scripts/install.sh | bash\n\nRUN corepack enable`;\n\n// Sentinels baked into the scaffold for the `custom` issue tracker. The\n// project ships deliberately broken-until-configured; the setup agent finds\n// and replaces these markers in place (see SETUP_ISSUE_TRACKER.md). Defined as\n// shared constants so the registry entry and the setup doc stay in sync.\nconst CUSTOM_LIST_TASKS_SENTINEL = `echo 'No issue tracker configured — run ${SETUP_ISSUE_TRACKER_PATH} through your coding agent.' >&2; exit 1`;\nconst CUSTOM_VIEW_TASK_MARKER = `<view command — see ${SETUP_ISSUE_TRACKER_PATH}>`;\nconst CUSTOM_CLOSE_TASK_MARKER = `<close command — see ${SETUP_ISSUE_TRACKER_PATH}>`;\nconst CUSTOM_TRACKER_TOOLS = `# TODO: install your issue tracker's CLI here. See ${SETUP_ISSUE_TRACKER_PATH}`;\nconst CUSTOM_ENV_EXAMPLE = `# TODO: add any env vars your issue tracker needs (e.g. an API token).\n# See ${SETUP_ISSUE_TRACKER_PATH}`;\n\nconst ISSUE_TRACKER_REGISTRY: IssueTrackerEntry[] = [\n {\n name: \"github-issues\",\n label: \"GitHub Issues\",\n templateArgs: {\n LIST_TASKS_COMMAND: `gh issue list --state open --label Sandcastle --limit 100 --json number,title,body,labels,comments --jq '[.[] | {number, title, body, labels: [.labels[].name], comments: [.comments[].body]}]'`,\n VIEW_TASK_COMMAND: \"gh issue view <ID>\",\n CLOSE_TASK_COMMAND: `gh issue close <ID> --comment \"Completed by Sandcastle\"`,\n ISSUE_TRACKER_TOOLS: GITHUB_CLI_TOOLS,\n },\n envExample: `# GitHub personal access token — the agent uses it to read and manage GitHub Issues\n# Create a fine-grained token: https://github.com/settings/personal-access-tokens/new\n# Required repository permissions: Issues (Read and write) and Metadata (Read)\nGH_TOKEN=`,\n },\n {\n name: \"beads\",\n label: \"Beads\",\n templateArgs: {\n LIST_TASKS_COMMAND: \"bd ready --json\",\n VIEW_TASK_COMMAND: \"bd show <ID>\",\n CLOSE_TASK_COMMAND: `bd close <ID> --reason=\"Completed by Sandcastle\"`,\n ISSUE_TRACKER_TOOLS: BEADS_TOOLS,\n },\n envExample: \"\",\n },\n {\n name: \"custom\",\n label: \"Custom\",\n templateArgs: {\n // The only real shell expression: PromptPreprocessor fails the run on a\n // non-zero exit and surfaces stderr, so this is the single enforcement\n // point that keeps the scaffold broken until the user configures it.\n LIST_TASKS_COMMAND: CUSTOM_LIST_TASKS_SENTINEL,\n // Inline text markers — replaced by the setup agent, never executed.\n VIEW_TASK_COMMAND: CUSTOM_VIEW_TASK_MARKER,\n CLOSE_TASK_COMMAND: CUSTOM_CLOSE_TASK_MARKER,\n ISSUE_TRACKER_TOOLS: CUSTOM_TRACKER_TOOLS,\n },\n envExample: CUSTOM_ENV_EXAMPLE,\n },\n];\n\nexport const listIssueTrackers = (): IssueTrackerEntry[] =>\n ISSUE_TRACKER_REGISTRY;\n\nexport const getIssueTracker = (name: string): IssueTrackerEntry | undefined =>\n ISSUE_TRACKER_REGISTRY.find((b) => b.name === name);\n\nexport const getAgent = (name: string): AgentEntry | undefined =>\n AGENT_REGISTRY.find((a) => a.name === name);\n\n// ---------------------------------------------------------------------------\n// Sandbox provider registry (internal — not part of public API)\n// ---------------------------------------------------------------------------\n\nexport interface SandboxProviderEntry {\n readonly name: string;\n readonly label: string;\n /** Filename written to .sandcastle/ (e.g. \"Dockerfile\" or \"Containerfile\") */\n readonly containerfileName: string;\n /** CLI namespace for build/remove commands (e.g. \"docker\" or \"podman\") */\n readonly cliNamespace: string;\n}\n\nconst SANDBOX_PROVIDER_REGISTRY: SandboxProviderEntry[] = [\n {\n name: \"docker\",\n label: \"Docker\",\n containerfileName: \"Dockerfile\",\n cliNamespace: \"docker\",\n },\n {\n name: \"podman\",\n label: \"Podman\",\n containerfileName: \"Containerfile\",\n cliNamespace: \"podman\",\n },\n];\n\nexport const listSandboxProviders = (): SandboxProviderEntry[] =>\n SANDBOX_PROVIDER_REGISTRY;\n\nexport const getSandboxProvider = (\n name: string,\n): SandboxProviderEntry | undefined =>\n SANDBOX_PROVIDER_REGISTRY.find((p) => p.name === name);\n\n// ---------------------------------------------------------------------------\n// Next steps\n// ---------------------------------------------------------------------------\n\nexport function getNextStepsLines(\n template: string,\n mainFilename: string,\n issueTracker: IssueTrackerEntry,\n agent: AgentEntry,\n packageManager: PackageManager,\n): string[] {\n // The custom issue tracker scaffolds a broken-until-configured project, so\n // its next steps are about running the setup prompt — not the template's\n // normal \"set env vars and go\" flow. This branch wins over template-specific\n // steps regardless of the chosen template.\n if (issueTracker.name === \"custom\") {\n return [\n \"Next steps:\",\n \"1. Your custom issue tracker isn't wired up yet — runs hard-fail until you configure it.\",\n `2. Feed the setup prompt to ${agent.label} on your host to finish wiring it up:`,\n ` ${agent.setupCommand}`,\n ` (Runs on the host — you need the ${agent.label} CLI installed locally, since the sandbox image isn't built yet.)`,\n `3. Follow .sandcastle/${SETUP_ISSUE_TRACKER_DOC} to edit the scaffolded files in place, build the image, and verify.`,\n ];\n }\n if (template === \"blank\") {\n return [\n \"Next steps:\",\n `1. Set the required env vars in .sandcastle/.env (see .sandcastle/.env.example)`,\n \" If you want to use your Claude subscription instead of an API key, see https://github.com/mattpocock/sandcastle/issues/191\",\n \"2. Read and customize .sandcastle/prompt.md to describe what you want the agent to do\",\n `3. Customize .sandcastle/${mainFilename} — it uses the JS API (\\`run()\\`) to control how the agent runs`,\n `4. Add \"sandcastle\": \"npx tsx .sandcastle/${mainFilename}\" to your package.json scripts`,\n \"5. Run `npm run sandcastle` to start the agent\",\n ];\n } else {\n const hasReviewer = template.includes(\"review\");\n const usesPlanSchema = getTemplateDependencies(template).includes(\"zod\");\n let step = 1;\n const lines: string[] = [\n \"Next steps:\",\n `${step++}. Set the required env vars in .sandcastle/.env (see .sandcastle/.env.example)`,\n \" If you want to use your Claude subscription instead of an API key, see https://github.com/mattpocock/sandcastle/issues/191\",\n `${step++}. Add \"sandcastle\": \"npx tsx .sandcastle/${mainFilename}\" to your package.json scripts`,\n `${step++}. Templates use \\`copyToWorktree: [\"node_modules\"]\\` to copy your host node_modules into the sandbox for fast startup — the \\`npm install\\` in the onSandboxReady hook is a safety net for platform-specific binaries. Adjust both if you use a different package manager`,\n ];\n if (usesPlanSchema) {\n lines.push(\n `${step++}. Install a schema validator for the planner's \\`<plan>\\` output — the template uses Zod (\\`${addDependencyCommand(packageManager, \"zod\")}\\`), but Valibot, ArkType, or any Standard Schema library works (https://standardschema.dev)`,\n );\n }\n lines.push(\n `${step++}. Read and customize the prompt files in .sandcastle/ — they shape what the agent does`,\n );\n if (hasReviewer) {\n lines.push(\n `${step++}. Customize .sandcastle/CODING_STANDARDS.md with your project's standards — the reviewer agent loads it during review`,\n );\n }\n lines.push(`${step++}. Run \\`npm run sandcastle\\` to start the agent`);\n return lines;\n }\n}\n\n// ---------------------------------------------------------------------------\n// Scaffolding helpers\n// ---------------------------------------------------------------------------\n\nfunction getTemplatesDir(): string {\n const thisFile = fileURLToPath(import.meta.url);\n return join(dirname(thisFile), \"templates\");\n}\n\nconst getTemplateDir = (\n templateName: string,\n): Effect.Effect<string, Error, never> =>\n Effect.gen(function* () {\n const template = TEMPLATES.find((t) => t.name === templateName);\n if (!template) {\n const names = TEMPLATES.map((t) => t.name).join(\", \");\n yield* Effect.fail(\n new Error(`Unknown template: \"${templateName}\". Available: ${names}`),\n );\n }\n return join(getTemplatesDir(), templateName);\n });\n\nconst COMPILED_FILE_EXTENSIONS = [\n \".js\",\n \".js.map\",\n \".d.ts\",\n \".d.ts.map\",\n \".mjs\",\n \".mjs.map\",\n \".d.mts\",\n \".d.mts.map\",\n];\n\nconst copyTemplateFiles = (\n templateDir: string,\n destDir: string,\n mainFilename: string,\n): Effect.Effect<void, Error, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const files = yield* fs\n .readDirectory(templateDir)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n yield* Effect.all(\n files\n .filter(\n (f) =>\n f !== \"template.json\" &&\n f !== \".env.example\" &&\n !COMPILED_FILE_EXTENSIONS.some((ext) => f.endsWith(ext)),\n )\n .map((f) => {\n const destName = f === \"main.mts\" ? mainFilename : f;\n return fs\n .copyFile(join(templateDir, f), join(destDir, destName))\n .pipe(Effect.mapError((e) => new Error(e.message)));\n }),\n { concurrency: \"unbounded\" },\n );\n });\n\n/**\n * Replace the agent factory and sandbox provider in a scaffolded main.ts.\n *\n * Templates use `claudeCode` as the default agent factory and `docker` as the\n * default sandbox provider. When a different agent, model, or sandbox provider\n * is selected, this function rewrites the imports and factory calls.\n */\nconst rewriteMainTs = (\n configDir: string,\n defaultAgentName: string,\n sandboxProvider: SandboxProviderEntry,\n mainFilename: string,\n): Effect.Effect<void, Error, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const mainTsPath = join(configDir, mainFilename);\n\n const exists = yield* fs\n .exists(mainTsPath)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n if (!exists) return;\n\n let content = yield* fs\n .readFileString(mainTsPath)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n\n // Templates use main.mts as the canonical filename in comments.\n // When the target is main.ts, rewrite those references.\n if (mainFilename === \"main.ts\") {\n content = content.replace(/main\\.mts/g, \"main.ts\");\n }\n\n // Templates call the runtime resolver `agent({ default: \"claude-code\" })`\n // as a placeholder. Inject the first-selected agent as the baked default;\n // the actual provider and model are still resolved at runtime from the\n // AGENT / AGENT_MODEL env vars. A no-op when claude-code is the default.\n content = content.replace(\n /agent\\(\\{\\s*default:\\s*\"[^\"]*\"\\s*\\}\\)/g,\n `agent({ default: \"${defaultAgentName}\" })`,\n );\n\n // Replace the sandbox provider. Templates always use `docker` as the\n // placeholder, where the registry name doubles as both the factory function\n // name and the `/sandboxes/<name>` import subpath segment. A single\n // case-sensitive word-boundary replace therefore rewrites the named import,\n // the import subpath, and every factory call site — and is a no-op when\n // docker is selected.\n content = content.replace(/\\bdocker\\b/g, sandboxProvider.name);\n\n yield* fs\n .writeFileString(mainTsPath, content)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n });\n\n/**\n * When the user opted out of the Sandcastle label, strip ` --label Sandcastle`\n * from all `.md` files in the scaffolded config directory so that `gh issue list`\n * commands work without a label filter.\n */\nconst rewritePromptFiles = (\n configDir: string,\n): Effect.Effect<void, Error, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const files = yield* fs\n .readDirectory(configDir)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n const mdFiles = files.filter((f) => f.endsWith(\".md\"));\n yield* Effect.all(\n mdFiles.map((f) =>\n Effect.gen(function* () {\n const filePath = join(configDir, f);\n const content = yield* fs\n .readFileString(filePath)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n const updated = content.replace(/ --label Sandcastle/g, \"\");\n if (updated !== content) {\n yield* fs\n .writeFileString(filePath, updated)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n }\n }),\n ),\n { concurrency: \"unbounded\" },\n );\n });\n\n/** Text file extensions eligible for `{{KEY}}` template argument substitution. */\nconst TEXT_FILE_EXTENSIONS = new Set([\n \".md\",\n \".txt\",\n \".env\",\n \".example\",\n // Dockerfile / Containerfile have no extension — handled by name check below\n]);\n\nconst isTextFile = (filename: string): boolean => {\n if (\n filename === \"Dockerfile\" ||\n filename === \"Containerfile\" ||\n filename === \".gitignore\"\n )\n return true;\n const dotIdx = filename.lastIndexOf(\".\");\n if (dotIdx === -1) return false;\n return TEXT_FILE_EXTENSIONS.has(filename.slice(dotIdx));\n};\n\n/**\n * Replace `{{KEY}}` template arguments from the issue tracker's\n * `templateArgs` map in all text files in the scaffolded config directory.\n */\nconst substituteTemplateArgs = (\n configDir: string,\n issueTracker: IssueTrackerEntry,\n): Effect.Effect<void, Error, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const files = yield* fs\n .readDirectory(configDir)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n const textFiles = files.filter(isTextFile);\n yield* Effect.all(\n textFiles.map((f) =>\n Effect.gen(function* () {\n const filePath = join(configDir, f);\n let content = yield* fs\n .readFileString(filePath)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n const original = content;\n for (const [key, value] of Object.entries(\n issueTracker.templateArgs,\n )) {\n content = content.replace(\n new RegExp(`\\\\{\\\\{${key}\\\\}\\\\}`, \"g\"),\n value,\n );\n }\n if (content !== original) {\n yield* fs\n .writeFileString(filePath, content)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n }\n }),\n ),\n { concurrency: \"unbounded\" },\n );\n });\n\n/**\n * Build the `SETUP_ISSUE_TRACKER.md` prompt scaffolded for the `custom` issue\n * tracker. It addresses the user's coding agent and walks it through wiring up\n * the tracker by editing the scaffolded files in place. The build command is\n * provider-parameterized so it names the actual CLI namespace (docker/podman).\n */\nconst buildSetupIssueTrackerDoc = (cliNamespace: string): string =>\n `# Set up your custom issue tracker\n\nYou are a coding agent. Finish wiring up the **custom issue tracker** for this Sandcastle project. It was scaffolded in a deliberately broken-until-configured state: until you complete the steps below, every Sandcastle run hard-fails with a pointer back to this file.\n\n## Goal\n\nWire up the issue tracker so the scaffolded prompts can **list**, **view**, and **close** tasks. There is no runtime abstraction to implement — the tracker commands are baked into the scaffolded files, so you edit those files **in place**.\n\n## 1. Interview the user\n\nAsk the user:\n\n- Which issue tracker do they use (e.g. Jira, Linear, a GitHub repo other than this one, an internal API)?\n- How should the sandbox authenticate — a CLI that is already logged in, or an API token? If a token, what is the environment variable name?\n\n## 2. Produce three commands\n\nWork out, together with the user, the shell commands for:\n\n- **list** — print all open tasks **as JSON** (match the shape the built-in trackers emit: an array of objects, each with at least an id/number, title, and body). This is what the agent reads at the start of every iteration.\n- **view** \\`<ID>\\` — show a single task by id.\n- **close** \\`<ID>\\` — close a single task by id.\n\n## 3. Edit the scaffolded files in place\n\n- **Dockerfile / Containerfile** — replace the line\n\n \\`\\`\\`\n ${CUSTOM_TRACKER_TOOLS}\n \\`\\`\\`\n\n with the install steps for your tracker's CLI (if it needs one).\n\n- **Prompt files (\\`.sandcastle/*.md\\`)** — replace the sentinel\n\n \\`\\`\\`\n ${CUSTOM_LIST_TASKS_SENTINEL}\n \\`\\`\\`\n\n with your **list** command. In the prompt file the sentinel sits inside a Sandcastle **shell expression** — a leading \\`!\\` followed by the command in backticks — whose output is injected into the prompt before each run. Keep that \\`!\\` and the surrounding backticks; replace only the command between them, and **remove the \\`exit 1\\`** (leaving it keeps every run hard-failing). Then replace the \\`${CUSTOM_VIEW_TASK_MARKER}\\` and \\`${CUSTOM_CLOSE_TASK_MARKER}\\` markers with your **view** and **close** commands.\n\n- **\\`.env.example\\`** — replace the \\`# TODO\\` block with the real env var(s) your tracker needs, then tell the user to set them in \\`.sandcastle/.env\\`.\n\n## 4. Build the image\n\nOnce the files are wired up, build the sandbox image:\n\n\\`\\`\\`\nsandcastle ${cliNamespace} build-image\n\\`\\`\\`\n\n## 5. Verify\n\nRun your **list** command inside the built image and confirm it returns the open tasks as JSON. If it errors, fix the command or the auth and rebuild.\n`;\n\n// ---------------------------------------------------------------------------\n// Main scaffold function\n// ---------------------------------------------------------------------------\n\nexport interface ScaffoldOptions {\n /** Selected agents. The first is baked as the generated `agent({ default })`. */\n agents: AgentEntry[];\n /** Optional `AGENT_MODEL` value pre-filled in `.env.example`. Not baked into main. */\n modelOverride?: string;\n templateName?: string;\n createLabel?: boolean;\n issueTracker?: IssueTrackerEntry;\n sandboxProvider?: SandboxProviderEntry;\n}\n\nexport interface ScaffoldResult {\n mainFilename: string;\n}\n\n/**\n * Detect whether the project's package.json has `\"type\": \"module\"`.\n * If so, we can use plain `.ts`; otherwise we use `.mts` to ensure ESM.\n */\nconst detectMainFilename = (\n repoDir: string,\n): Effect.Effect<string, never, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const pkgPath = join(repoDir, \"package.json\");\n const exists = yield* fs\n .exists(pkgPath)\n .pipe(Effect.orElseSucceed(() => false));\n if (!exists) return \"main.mts\";\n const content = yield* fs\n .readFileString(pkgPath)\n .pipe(Effect.orElseSucceed(() => \"\"));\n try {\n const pkg = JSON.parse(content) as Record<string, unknown>;\n return pkg[\"type\"] === \"module\" ? \"main.ts\" : \"main.mts\";\n } catch {\n return \"main.mts\";\n }\n });\n\nexport const scaffold = (\n repoDir: string,\n options: ScaffoldOptions,\n): Effect.Effect<ScaffoldResult, Error, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const {\n agents,\n modelOverride,\n templateName = \"blank\",\n createLabel = true,\n issueTracker = ISSUE_TRACKER_REGISTRY[0]!, // default: github-issues\n sandboxProvider = SANDBOX_PROVIDER_REGISTRY[0]!, // default: docker\n } = options;\n if (agents.length === 0) {\n yield* Effect.fail(new Error(\"At least one agent must be selected.\"));\n }\n const agentNames = agents.map((a) => a.name);\n const fs = yield* FileSystem.FileSystem;\n const configDir = join(repoDir, \".sandcastle\");\n\n const exists = yield* fs\n .exists(configDir)\n .pipe(Effect.mapError((e) => new Error(e.message)));\n if (exists) {\n yield* Effect.fail(\n new Error(\n \".sandcastle/ directory already exists. Remove it first if you want to re-initialize.\",\n ),\n );\n }\n\n const mainFilename = yield* detectMainFilename(repoDir);\n\n yield* fs\n .makeDirectory(configDir, { recursive: false })\n .pipe(Effect.mapError((e) => new Error(e.message)));\n\n const templateDir = yield* getTemplateDir(templateName);\n\n // Build .env.example from the de-duplicated agent key blocks, the issue\n // tracker block, and the appended AGENT=/AGENT_MODEL= documentation.\n const envExampleContent =\n composeAgentEnvExample(agentNames, {\n modelOverride,\n extraEnvBlocks: issueTracker.envExample\n ? [issueTracker.envExample]\n : [],\n }) + \"\\n\";\n\n yield* Effect.all(\n [\n fs\n .writeFileString(\n join(configDir, sandboxProvider.containerfileName),\n composeAgentDockerfile(agentNames),\n )\n .pipe(Effect.mapError((e) => new Error(e.message))),\n fs\n .writeFileString(join(configDir, \".gitignore\"), GITIGNORE)\n .pipe(Effect.mapError((e) => new Error(e.message))),\n fs\n .writeFileString(join(configDir, \".env.example\"), envExampleContent)\n .pipe(Effect.mapError((e) => new Error(e.message))),\n copyTemplateFiles(templateDir, configDir, mainFilename),\n ],\n { concurrency: \"unbounded\" },\n );\n\n // Rewrite main file: inject the default agent name into the resolver call\n // and rewrite the sandbox provider.\n yield* rewriteMainTs(\n configDir,\n agentNames[0]!,\n sandboxProvider,\n mainFilename,\n );\n\n // Replace issue tracker template arguments in all text files (must run before label stripping)\n yield* substituteTemplateArgs(configDir, issueTracker);\n\n // Strip --label Sandcastle from prompt files when the user declined label creation\n if (!createLabel) {\n yield* rewritePromptFiles(configDir);\n }\n\n // For the custom issue tracker, drop the setup prompt the user feeds to\n // their coding agent. Written after substituteTemplateArgs so it isn't\n // clobbered and references the resolved sentinel markers the agent finds\n // (not the {{KEY}} names, which are gone by now).\n if (issueTracker.name === \"custom\") {\n yield* fs\n .writeFileString(\n join(configDir, SETUP_ISSUE_TRACKER_DOC),\n buildSetupIssueTrackerDoc(sandboxProvider.cliNamespace),\n )\n .pipe(Effect.mapError((e) => new Error(e.message)));\n }\n\n return { mainFilename };\n });\n","import { createRequire } from \"node:module\";\n\ndeclare const __SANDCASTLE_VERSION__: string | undefined;\n\nconst fallbackVersion = (): string => {\n const require = createRequire(import.meta.url);\n const pkg = require(\"../package.json\") as { version: string };\n return pkg.version;\n};\n\n/**\n * The package version. Injected at build time by tsup via `define`. When\n * the source is loaded directly (e.g. via `tsx` during tests) the constant\n * is undefined, so we fall back to reading `package.json` at runtime.\n */\nexport const VERSION: string =\n typeof __SANDCASTLE_VERSION__ !== \"undefined\"\n ? __SANDCASTLE_VERSION__\n : fallbackVersion();\n","import { Command, Options } from \"@effect/cli\";\nimport { FileSystem } from \"@effect/platform\";\nimport { Effect, Option } from \"effect\";\nimport * as clack from \"@clack/prompts\";\nimport { execSync } from \"node:child_process\";\nimport { join } from \"node:path\";\nimport { styleText } from \"node:util\";\n\nimport { Display } from \"./Display.js\";\nimport { buildImage, removeImage } from \"./DockerLifecycle.js\";\nimport {\n buildImage as podmanBuildImage,\n removeImage as podmanRemoveImage,\n} from \"./PodmanLifecycle.js\";\nimport {\n scaffold,\n listTemplates,\n listAgents,\n getAgent,\n listIssueTrackers,\n getIssueTracker,\n listSandboxProviders,\n getSandboxProvider,\n getNextStepsLines,\n detectPackageManager,\n addDependencyCommand,\n hostHasDependency,\n getTemplateDependencies,\n} from \"./InitService.js\";\nimport { defaultImageName } from \"./sandboxes/docker.js\";\nimport type {\n AgentEntry,\n IssueTrackerEntry,\n SandboxProviderEntry,\n} from \"./InitService.js\";\nimport { ConfigDirError, InitError } from \"./errors.js\";\nimport { VERSION } from \"./version.js\";\n\n// --- Shared options ---\n\nconst imageNameOption = Options.text(\"image-name\").pipe(\n Options.withDescription(\"Docker image name\"),\n Options.optional,\n);\n\nconst resolveImageName = (\n cliFlag: Option.Option<string>,\n cwd: string,\n): string => (cliFlag._tag === \"Some\" ? cliFlag.value : defaultImageName(cwd));\n\n// --- UID build-args ---\n\n/** Build-args that align the image UID/GID to the host (Linux/macOS). No-op on Windows. */\nconst defaultUidBuildArgs = (): Record<string, string> => {\n const args: Record<string, string> = {};\n const uid = process.getuid?.();\n const gid = process.getgid?.();\n if (uid !== undefined) args.AGENT_UID = String(uid);\n if (gid !== undefined) args.AGENT_GID = String(gid);\n return args;\n};\n\n// --- Config directory check ---\n\nconst CONFIG_DIR = \".sandcastle\";\n\nconst requireConfigDir = (\n cwd: string,\n): Effect.Effect<void, ConfigDirError, FileSystem.FileSystem> =>\n Effect.gen(function* () {\n const fs = yield* FileSystem.FileSystem;\n const exists = yield* fs\n .exists(join(cwd, CONFIG_DIR))\n .pipe(Effect.catchAll(() => Effect.succeed(false)));\n if (!exists) {\n yield* Effect.fail(\n new ConfigDirError({\n message: \"No .sandcastle/ found. Run `sandcastle init` first.\",\n }),\n );\n }\n });\n\n// --- Init command ---\n\nconst templateOption = Options.text(\"template\").pipe(\n Options.withDescription(\n \"Template to scaffold (e.g. blank, simple-loop, parallel-planner)\",\n ),\n Options.optional,\n);\n\nconst agentOption = Options.text(\"agent\").pipe(\n Options.withDescription(\"Agent to use (e.g. claude-code)\"),\n Options.optional,\n);\n\nconst initModelOption = Options.text(\"model\").pipe(\n Options.withDescription(\n \"Model to use for the agent (e.g. claude-sonnet-4-6). Defaults to the agent's default model\",\n ),\n Options.optional,\n);\n\nconst sandboxOption = Options.text(\"sandbox\").pipe(\n Options.withDescription(\"Sandbox provider to use (e.g. docker, podman)\"),\n Options.optional,\n);\n\nconst issueTrackerOption = Options.text(\"issue-tracker\").pipe(\n Options.withDescription(\n \"Issue tracker to use (e.g. github-issues, beads, custom)\",\n ),\n Options.optional,\n);\n\n// Tri-state booleans (Some(true) / Some(false) / None) so we can tell \"user\n// chose false\" from \"user didn't pass the flag at all\" — only the latter\n// triggers the interactive prompt.\nconst createLabelOption = Options.choice(\"create-label\", [\n \"true\",\n \"false\",\n]).pipe(\n Options.withDescription(\n 'Whether to create the \"Sandcastle\" GitHub label (only meaningful with --issue-tracker github-issues)',\n ),\n Options.optional,\n);\n\nconst buildImageOption = Options.choice(\"build-image\", [\"true\", \"false\"]).pipe(\n Options.withDescription(\n \"Whether to build the sandbox image now (ignored when --issue-tracker custom is selected)\",\n ),\n Options.optional,\n);\n\nconst installTemplateDepsOption = Options.choice(\"install-template-deps\", [\n \"true\",\n \"false\",\n]).pipe(\n Options.withDescription(\n \"Whether to install the template's host dependencies (e.g. zod for the planner templates)\",\n ),\n Options.optional,\n);\n\n/**\n * Translate an `Options.choice(\"flag\", [\"true\", \"false\"]).optional` value into\n * a tri-state boolean. None when the flag was absent; otherwise the parsed bool.\n */\nconst choiceToTriBool = (\n opt: Option.Option<\"true\" | \"false\">,\n): Option.Option<boolean> =>\n opt._tag === \"Some\" ? Option.some(opt.value === \"true\") : Option.none();\n\nconst initCommand = Command.make(\n \"init\",\n {\n imageName: imageNameOption,\n template: templateOption,\n agent: agentOption,\n model: initModelOption,\n sandbox: sandboxOption,\n issueTracker: issueTrackerOption,\n createLabel: createLabelOption,\n buildImage: buildImageOption,\n installTemplateDeps: installTemplateDepsOption,\n },\n ({\n imageName: imageNameFlag,\n template,\n agent: agentFlag,\n model: modelFlag,\n sandbox: sandboxFlag,\n issueTracker: issueTrackerFlag,\n createLabel: createLabelFlag,\n buildImage: buildImageFlag,\n installTemplateDeps: installTemplateDepsFlag,\n }) =>\n Effect.gen(function* () {\n const d = yield* Display;\n const cwd = process.cwd();\n const imageName = resolveImageName(imageNameFlag, cwd);\n\n // Early validation of CLI flags before interactive prompts\n const templates = listTemplates();\n if (template._tag === \"Some\") {\n const valid = templates.find((tmpl) => tmpl.name === template.value);\n if (!valid) {\n const names = templates.map((tmpl) => tmpl.name).join(\", \");\n yield* Effect.fail(\n new InitError({\n message: `Unknown template \"${template.value}\". Available: ${names}`,\n }),\n );\n }\n }\n\n if (sandboxFlag._tag === \"Some\") {\n const valid = getSandboxProvider(sandboxFlag.value);\n if (!valid) {\n const names = listSandboxProviders()\n .map((p) => p.name)\n .join(\", \");\n yield* Effect.fail(\n new InitError({\n message: `Unknown sandbox provider \"${sandboxFlag.value}\". Available: ${names}`,\n }),\n );\n }\n }\n\n if (issueTrackerFlag._tag === \"Some\") {\n const valid = getIssueTracker(issueTrackerFlag.value);\n if (!valid) {\n const names = listIssueTrackers()\n .map((t) => t.name)\n .join(\", \");\n yield* Effect.fail(\n new InitError({\n message: `Unknown issue tracker \"${issueTrackerFlag.value}\". Available: ${names}`,\n }),\n );\n }\n }\n\n const createLabelChoice = choiceToTriBool(createLabelFlag);\n const buildImageChoice = choiceToTriBool(buildImageFlag);\n const installTemplateDepsChoice = choiceToTriBool(\n installTemplateDepsFlag,\n );\n\n const isInteractive = process.stdin.isTTY === true;\n const failIfNonInteractive = (flag: string) =>\n Effect.fail(\n new InitError({\n message: `${flag} is required in non-interactive mode (no TTY detected).`,\n }),\n );\n\n // Tri-state confirm: CLI flag wins; otherwise prompt interactively (or\n // fail fast in non-interactive mode naming the missing flag). Cancelling\n // the prompt is treated as abort — same shape as the select prompts above.\n const resolveConfirmFlag = (params: {\n choice: Option.Option<boolean>;\n flag: string;\n promptMessage: string;\n cancelMessage: string;\n }): Effect.Effect<boolean, InitError> =>\n Effect.gen(function* () {\n if (params.choice._tag === \"Some\") return params.choice.value;\n if (!isInteractive) {\n yield* failIfNonInteractive(params.flag);\n }\n const confirmed = yield* Effect.promise(() =>\n clack.confirm({\n message: params.promptMessage,\n initialValue: true,\n }),\n );\n if (clack.isCancel(confirmed)) {\n yield* Effect.fail(\n new InitError({ message: params.cancelMessage }),\n );\n }\n return confirmed === true;\n });\n\n // Resolve agents: CLI flag (comma-separated) > interactive multi-select.\n // The first selected agent becomes the generated `agent({ default })`.\n const agents = listAgents();\n let selectedAgents: AgentEntry[];\n if (agentFlag._tag === \"Some\") {\n const names = agentFlag.value\n .split(\",\")\n .map((n) => n.trim())\n .filter((n) => n.length > 0);\n if (names.length === 0) {\n yield* Effect.fail(\n new InitError({ message: \"--agent must name at least one agent.\" }),\n );\n }\n const resolved: AgentEntry[] = [];\n for (const name of names) {\n const entry = getAgent(name);\n if (!entry) {\n const available = agents.map((a) => a.name).join(\", \");\n yield* Effect.fail(\n new InitError({\n message: `Unknown agent \"${name}\". Available: ${available}`,\n }),\n );\n }\n resolved.push(entry!);\n }\n // De-duplicate while preserving order (first occurrence = default).\n const seen = new Set<string>();\n selectedAgents = resolved.filter((a) =>\n seen.has(a.name) ? false : (seen.add(a.name), true),\n );\n } else {\n if (!isInteractive) {\n yield* failIfNonInteractive(\"--agent\");\n }\n const selected = yield* Effect.promise(() =>\n clack.multiselect({\n message: \"Select one or more agents (first is the default):\",\n initialValues: [\"claude-code\"],\n required: true,\n options: agents.map((a) => ({\n value: a.name,\n label: a.label,\n hint: `Default model: ${a.defaultModel}`,\n })),\n }),\n );\n if (clack.isCancel(selected)) {\n yield* Effect.fail(\n new InitError({ message: \"Agent selection cancelled.\" }),\n );\n }\n selectedAgents = (selected as string[]).map((n) => getAgent(n)!);\n }\n\n // The default agent (first selected) drives the next-steps setup command.\n const defaultAgent = selectedAgents[0]!;\n\n // Resolve optional model override: CLI flag pre-fills AGENT_MODEL in\n // .env.example. Unset leaves AGENT_MODEL commented (per-agent default).\n const modelOverride =\n modelFlag._tag === \"Some\" ? modelFlag.value : undefined;\n\n // Resolve sandbox provider: CLI flag > interactive select (no default — user must choose)\n const sandboxProviders = listSandboxProviders();\n let selectedSandboxProvider: SandboxProviderEntry;\n if (sandboxFlag._tag === \"Some\") {\n selectedSandboxProvider = getSandboxProvider(sandboxFlag.value)!;\n } else {\n if (!isInteractive) {\n yield* failIfNonInteractive(\"--sandbox\");\n }\n const selected = yield* Effect.promise(() =>\n clack.select({\n message: \"Select a sandbox provider:\",\n options: sandboxProviders.map((p) => ({\n value: p.name,\n label: p.label,\n })),\n }),\n );\n if (clack.isCancel(selected)) {\n yield* Effect.fail(\n new InitError({\n message: \"Sandbox provider selection cancelled.\",\n }),\n );\n }\n selectedSandboxProvider = getSandboxProvider(selected as string)!;\n }\n\n // Resolve issue tracker: CLI flag > interactive select (already validated above)\n const issueTrackers = listIssueTrackers();\n let selectedIssueTracker: IssueTrackerEntry;\n if (issueTrackerFlag._tag === \"Some\") {\n selectedIssueTracker = getIssueTracker(issueTrackerFlag.value)!;\n } else {\n if (!isInteractive) {\n yield* failIfNonInteractive(\"--issue-tracker\");\n }\n const selected = yield* Effect.promise(() =>\n clack.select({\n message: \"Select an issue tracker:\",\n initialValue: \"github-issues\",\n options: issueTrackers.map((b) => ({\n value: b.name,\n label: b.label,\n })),\n }),\n );\n if (clack.isCancel(selected)) {\n yield* Effect.fail(\n new InitError({\n message: \"Issue tracker selection cancelled.\",\n }),\n );\n }\n selectedIssueTracker = getIssueTracker(selected as string)!;\n }\n\n // Resolve template: CLI flag > interactive select (already validated above)\n let selectedTemplate: string;\n if (template._tag === \"Some\") {\n selectedTemplate = template.value;\n } else {\n if (!isInteractive) {\n yield* failIfNonInteractive(\"--template\");\n }\n const selected = yield* Effect.promise(() =>\n clack.select({\n message: \"Select a template:\",\n initialValue: \"blank\",\n options: templates.map((tmpl) => ({\n value: tmpl.name,\n label: tmpl.name,\n hint: tmpl.description,\n })),\n }),\n );\n if (clack.isCancel(selected)) {\n yield* Effect.fail(\n new InitError({ message: \"Template selection cancelled.\" }),\n );\n }\n selectedTemplate = selected as string;\n }\n\n // Offer to create the \"Sandcastle\" label on the repo (skip for non-GitHub issue trackers).\n // CLI flag > interactive confirm. The flag is only meaningful for the github-issues tracker.\n let shouldCreateLabel = false;\n if (selectedIssueTracker.name === \"github-issues\") {\n shouldCreateLabel = yield* resolveConfirmFlag({\n choice: createLabelChoice,\n flag: \"--create-label\",\n promptMessage:\n 'Create a \"Sandcastle\" GitHub label? (Templates filter issues by this label)',\n cancelMessage: \"Label selection cancelled.\",\n });\n\n if (shouldCreateLabel) {\n yield* Effect.try({\n try: () =>\n execSync(\n 'gh label create \"Sandcastle\" --description \"Issues for Sandcastle to work on\" --color \"F9A825\" 2>/dev/null',\n { cwd, stdio: \"ignore\" },\n ),\n catch: () => undefined,\n }).pipe(Effect.ignore);\n }\n }\n\n const scaffoldResult = yield* d.spinner(\n \"Scaffolding .sandcastle/ config directory...\",\n scaffold(cwd, {\n agents: selectedAgents,\n modelOverride,\n templateName: selectedTemplate,\n createLabel: shouldCreateLabel,\n issueTracker: selectedIssueTracker,\n sandboxProvider: selectedSandboxProvider,\n }).pipe(\n Effect.mapError(\n (e) =>\n new InitError({\n message: `${e instanceof Error ? e.message : e}`,\n }),\n ),\n ),\n );\n\n // Detect the host package manager so the zod offer below and the next\n // steps below both use the right install command.\n const packageManager = yield* detectPackageManager(cwd);\n\n // If the chosen template imports zod on the host (the planner templates\n // build their <plan> output schema with it) and the host doesn't already\n // declare it, offer to install it. Without this, the very first\n // `npx tsx .sandcastle/main.ts` crashes with ERR_MODULE_NOT_FOUND.\n if (getTemplateDependencies(selectedTemplate).includes(\"zod\")) {\n const alreadyInstalled = yield* hostHasDependency(cwd, \"zod\");\n if (!alreadyInstalled) {\n const installCmd = addDependencyCommand(packageManager, \"zod\");\n const shouldInstall = yield* resolveConfirmFlag({\n choice: installTemplateDepsChoice,\n flag: \"--install-template-deps\",\n promptMessage: `The ${selectedTemplate} template needs a schema validator. Install zod now (\\`${installCmd}\\`)?`,\n cancelMessage: \"Install-template-deps selection cancelled.\",\n });\n if (shouldInstall) {\n const installed = yield* Effect.sync(() => {\n try {\n execSync(installCmd, { cwd, stdio: \"ignore\" });\n return true;\n } catch {\n return false;\n }\n });\n yield* installed\n ? d.status(`Installed zod with ${packageManager}.`, \"success\")\n : d.status(\n `Couldn't install zod automatically. Run \\`${installCmd}\\` before running the agent.`,\n \"warn\",\n );\n }\n }\n }\n\n // Prompt user before building image. The custom issue tracker scaffolds\n // an intentionally unfinished Dockerfile (the install block is a TODO),\n // so there is nothing valid to build yet — skip the build prompt entirely\n // (and silently ignore --build-image) and let the next steps point the\n // user at the setup doc.\n const providerLabel = selectedSandboxProvider.label;\n if (selectedIssueTracker.name === \"custom\") {\n yield* d.status(\n \"Init complete! Your custom issue tracker isn't configured yet — see the steps below before building.\",\n \"success\",\n );\n } else {\n const shouldBuild = yield* resolveConfirmFlag({\n choice: buildImageChoice,\n flag: \"--build-image\",\n promptMessage: `Build the default ${providerLabel} image now?`,\n cancelMessage: \"Build-image selection cancelled.\",\n });\n\n if (shouldBuild) {\n const containerfileDir = join(cwd, CONFIG_DIR);\n if (selectedSandboxProvider.name === \"podman\") {\n yield* d.spinner(\n `Building ${providerLabel} image '${imageName}'...`,\n podmanBuildImage(imageName, containerfileDir),\n );\n } else {\n yield* d.spinner(\n `Building ${providerLabel} image '${imageName}'...`,\n buildImage(imageName, containerfileDir, {\n buildArgs: defaultUidBuildArgs(),\n }),\n );\n }\n yield* d.status(\n \"Init complete! Image built successfully.\",\n \"success\",\n );\n } else {\n yield* d.status(\n `Init complete! Run \\`sandcastle ${selectedSandboxProvider.cliNamespace} build-image\\` to build the ${providerLabel} image later.`,\n \"success\",\n );\n }\n }\n\n // Show template-specific next steps\n const nextSteps = getNextStepsLines(\n selectedTemplate,\n scaffoldResult.mainFilename,\n selectedIssueTracker,\n defaultAgent,\n packageManager,\n );\n for (const [i, line] of nextSteps.entries()) {\n yield* d.text(i === 0 ? line : styleText(\"dim\", line));\n }\n }),\n);\n\n// --- Build-image command ---\n\nconst dockerfileOption = Options.file(\"dockerfile\").pipe(\n Options.withDescription(\n \"Path to a custom Dockerfile (build context will be the current working directory)\",\n ),\n Options.optional,\n);\n\nconst buildImageCommand = Command.make(\n \"build-image\",\n {\n imageName: imageNameOption,\n dockerfile: dockerfileOption,\n },\n ({ imageName: imageNameFlag, dockerfile }) =>\n Effect.gen(function* () {\n const d = yield* Display;\n const cwd = process.cwd();\n yield* requireConfigDir(cwd);\n\n const imageName = resolveImageName(imageNameFlag, cwd);\n\n const dockerfileDir = join(cwd, CONFIG_DIR);\n const dockerfilePath =\n dockerfile._tag === \"Some\" ? dockerfile.value : undefined;\n\n yield* d.spinner(\n `Building Docker image '${imageName}'...`,\n buildImage(imageName, dockerfileDir, {\n dockerfile: dockerfilePath,\n buildArgs: defaultUidBuildArgs(),\n }),\n );\n\n yield* d.status(\"Build complete!\", \"success\");\n }),\n);\n\n// --- Remove-image command ---\n\nconst removeImageCommand = Command.make(\n \"remove-image\",\n {\n imageName: imageNameOption,\n },\n ({ imageName: imageNameFlag }) =>\n Effect.gen(function* () {\n const d = yield* Display;\n const cwd = process.cwd();\n\n const imageName = resolveImageName(imageNameFlag, cwd);\n\n yield* d.spinner(\n `Removing Docker image '${imageName}'...`,\n removeImage(imageName),\n );\n yield* d.status(\"Image removed.\", \"success\");\n }),\n);\n\n// --- Docker namespace command ---\n\nconst dockerCommand = Command.make(\"docker\", {}, () =>\n Effect.gen(function* () {\n const d = yield* Display;\n yield* d.status(\n \"Docker sandbox commands. Use --help to see available subcommands.\",\n \"info\",\n );\n }),\n).pipe(Command.withSubcommands([buildImageCommand, removeImageCommand]));\n\n// --- Podman build-image command ---\n\nconst containerfileOption = Options.file(\"containerfile\").pipe(\n Options.withDescription(\n \"Path to a custom Containerfile (build context will be the current working directory)\",\n ),\n Options.optional,\n);\n\nconst podmanBuildImageCommand = Command.make(\n \"build-image\",\n {\n imageName: imageNameOption,\n containerfile: containerfileOption,\n },\n ({ imageName: imageNameFlag, containerfile }) =>\n Effect.gen(function* () {\n const d = yield* Display;\n const cwd = process.cwd();\n yield* requireConfigDir(cwd);\n\n const imageName = resolveImageName(imageNameFlag, cwd);\n\n const containerfileDir = join(cwd, CONFIG_DIR);\n const containerfilePath =\n containerfile._tag === \"Some\" ? containerfile.value : undefined;\n yield* d.spinner(\n `Building Podman image '${imageName}'...`,\n podmanBuildImage(imageName, containerfileDir, {\n containerfile: containerfilePath,\n }),\n );\n\n yield* d.status(\"Build complete!\", \"success\");\n }),\n);\n\n// --- Podman remove-image command ---\n\nconst podmanRemoveImageCommand = Command.make(\n \"remove-image\",\n {\n imageName: imageNameOption,\n },\n ({ imageName: imageNameFlag }) =>\n Effect.gen(function* () {\n const d = yield* Display;\n const cwd = process.cwd();\n\n const imageName = resolveImageName(imageNameFlag, cwd);\n\n yield* d.spinner(\n `Removing Podman image '${imageName}'...`,\n podmanRemoveImage(imageName),\n );\n yield* d.status(\"Image removed.\", \"success\");\n }),\n);\n\n// --- Podman namespace command ---\n\nconst podmanCommand = Command.make(\"podman\", {}, () =>\n Effect.gen(function* () {\n const d = yield* Display;\n yield* d.status(\n \"Podman sandbox commands. Use --help to see available subcommands.\",\n \"info\",\n );\n }),\n).pipe(\n Command.withSubcommands([podmanBuildImageCommand, podmanRemoveImageCommand]),\n);\n\n// --- Root command ---\n\nconst rootCommand = Command.make(\"sandcastle\", {}, () =>\n Effect.gen(function* () {\n const d = yield* Display;\n yield* d.status(`Sandcastle v${VERSION}`, \"info\");\n yield* d.status(\"Use --help to see available commands.\", \"info\");\n }),\n);\n\nexport const sandcastle = rootCommand.pipe(\n Command.withSubcommands([initCommand, dockerCommand, podmanCommand]),\n);\n\nexport const cli = Command.run(sandcastle, {\n name: \"sandcastle\",\n version: VERSION,\n});\n","/**\n * Terminal cleanup for abrupt exits.\n *\n * @clack/prompts' spinner and taskLog call stdin.setRawMode(true) and hide\n * the cursor via escape sequences. When the process is killed by a signal\n * handler that calls process.exit() directly (e.g. during Ctrl-C cleanup in\n * SandboxFactory), clack's own cleanup is bypassed and the terminal is left\n * in raw mode with the cursor hidden.\n *\n * Registering a process 'exit' listener that restores these guarantees the\n * terminal is always left in a usable state.\n */\n\n/** Escape sequence to show the cursor (DECTCEM). */\nexport const SHOW_CURSOR = \"\\x1b[?25h\";\n\n/**\n * Creates a synchronous exit handler that restores terminal state.\n * Extracted as a pure function so it can be unit-tested without side effects.\n */\nexport const makeTerminalCleanupHandler =\n (\n stdin: { isTTY?: boolean; setRawMode?: (raw: boolean) => void },\n stdout: { write: (data: string) => boolean },\n ) =>\n (): void => {\n if (stdin.isTTY && stdin.setRawMode) {\n try {\n stdin.setRawMode(false);\n } catch {\n // Best-effort — may fail if stdin is already closed\n }\n }\n stdout.write(SHOW_CURSOR);\n };\n\n/**\n * Registers the terminal cleanup handler on process 'exit'.\n * Call once at program startup (main.ts).\n */\nexport const setupTerminalCleanup = (): void => {\n process.on(\"exit\", makeTerminalCleanupHandler(process.stdin, process.stdout));\n};\n","#!/usr/bin/env node\nimport { NodeContext, NodeRuntime } from \"@effect/platform-node\";\nimport { Effect, Layer } from \"effect\";\nimport { cli } from \"./cli.js\";\nimport { ClackDisplay } from \"./Display.js\";\nimport { withFriendlyErrors } from \"./ErrorHandler.js\";\nimport { setupTerminalCleanup } from \"./terminalCleanup.js\";\n\n// Restore terminal state on any exit.\n// @clack/prompts' spinner/taskLog set stdin to raw mode and hide the cursor.\n// If the process exits via a signal handler that calls process.exit() directly\n// (e.g. the Ctrl-C handler in SandboxFactory), clack's own cleanup is\n// bypassed, leaving the terminal broken. This exit hook fixes that.\nsetupTerminalCleanup();\n\nconst mainLayer = Layer.merge(NodeContext.layer, ClackDisplay.layer);\n\ncli(process.argv).pipe(\n withFriendlyErrors,\n Effect.provide(mainLayer),\n NodeRuntime.runMain,\n);\n"]}
|