@das-org/dascode 0.0.31
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/dist/BunHttpServer-YBQwrNiq.mjs +407 -0
- package/dist/BunPtyAdapter--Swo7U5P.mjs +120 -0
- package/dist/BunServices-RIDbItx-.mjs +115 -0
- package/dist/Cache-DyGeujxI.mjs +605 -0
- package/dist/Config-DcF-IZjO.mjs +1274 -0
- package/dist/FetchHttpClient-BmjpVs1I.mjs +5976 -0
- package/dist/NodePtyAdapter-H8kyf9St.mjs +115 -0
- package/dist/NodeServices-D8d9bE2V.mjs +152 -0
- package/dist/NodeSqliteClient-CmuXRT3w.mjs +178 -0
- package/dist/NodeTerminal-C6yhrF1E.mjs +1813 -0
- package/dist/Path-BB53LP8h.mjs +9050 -0
- package/dist/PtyAdapter-mAqTlv3d.mjs +60 -0
- package/dist/Schema-DuQUv9rO.mjs +33744 -0
- package/dist/SqlClient-Dp5XVCmr.mjs +922 -0
- package/dist/SqlError-D49f1UD-.mjs +409 -0
- package/dist/SqliteClient-DEcJdONi.mjs +147 -0
- package/dist/bin.mjs +201961 -0
- package/dist/client/assets/ChatView-HZc6-lKr.js +60 -0
- package/dist/client/assets/ClientOnly-FoswohdZ.js +2 -0
- package/dist/client/assets/CompositeRoot-Yff66Zmm.js +2 -0
- package/dist/client/assets/ConnectCliAuthSurface-BLD0XNSi.js +2 -0
- package/dist/client/assets/DiffDisplayControls-DsQS9IDw.js +1403 -0
- package/dist/client/assets/DiffPanel-DnIRg_Qy.js +98 -0
- package/dist/client/assets/DiffWorkerPoolProvider-DZJfC5kN.js +2 -0
- package/dist/client/assets/FieldControl-CuSMRkbi.js +2 -0
- package/dist/client/assets/FieldItemContext-Ba7ZZoDN.js +2 -0
- package/dist/client/assets/FilePreviewPanel-D3bq1Own.js +2220 -0
- package/dist/client/assets/KeybindingsSettings.logic-BQBQ8pFk.js +2 -0
- package/dist/client/assets/LocalAnnotatableCodeView-BS3qlDRM.js +2 -0
- package/dist/client/assets/PreviewPanel-C41OCDV3.js +2 -0
- package/dist/client/assets/ProviderModelPicker-BcQ3CMKb.js +2 -0
- package/dist/client/assets/PullRequestMarkdown-D5bDuXWN.js +2 -0
- package/dist/client/assets/RedactedSensitiveText-C3lDjv-5.js +2 -0
- package/dist/client/assets/ReviewActionsPanel-7rqPggzL.js +2 -0
- package/dist/client/assets/ReviewDiffWorkerPoolBoundary-CpqNaHWe.js +2 -0
- package/dist/client/assets/ReviewDiffWorkerSurface-fGPW1-P9.js +2 -0
- package/dist/client/assets/ReviewPatchView-Dt3GW4pP.js +4 -0
- package/dist/client/assets/Schema-DzLI5hMK.js +16 -0
- package/dist/client/assets/ServerUpdateAction-N9rNsTaN.js +2 -0
- package/dist/client/assets/SettingsPanels-DgK9Gy4R.js +3 -0
- package/dist/client/assets/SymbolsNerdFontMono-Regular-aK5vsLov.woff2 +0 -0
- package/dist/client/assets/WorkerPoolContext-BG9CEDyi.js +15 -0
- package/dist/client/assets/_chat-CDYErsvF.js +2 -0
- package/dist/client/assets/_chat._environmentId._threadId-Dn7yzuy5.js +2 -0
- package/dist/client/assets/_chat.draft._draftId-CKnp5OeX.js +2 -0
- package/dist/client/assets/_chat.index-CSOaDOiG.js +2 -0
- package/dist/client/assets/abap-CLvhMVsD.js +2 -0
- package/dist/client/assets/actionscript-3--17pq3dv.js +2 -0
- package/dist/client/assets/ada-C5qYipkI.js +2 -0
- package/dist/client/assets/alert-dialog-0GbcUK1u.js +2 -0
- package/dist/client/assets/andromeeda-WkhI09AS.js +2 -0
- package/dist/client/assets/andromeeda-vGVdxbeo.js +2 -0
- package/dist/client/assets/angular-html-BmcYSFCP.js +2 -0
- package/dist/client/assets/angular-ts-Ab3z1XOh.js +2 -0
- package/dist/client/assets/apache-U0d_L8uA.js +2 -0
- package/dist/client/assets/apex-VAyPSnFM.js +2 -0
- package/dist/client/assets/apl-DdAjc1Is.js +2 -0
- package/dist/client/assets/applescript-CCn79oCD.js +2 -0
- package/dist/client/assets/ara-4CJ0cIlV.js +2 -0
- package/dist/client/assets/asciidoc-DE70LPWp.js +2 -0
- package/dist/client/assets/asm-Cmm7eHzH.js +2 -0
- package/dist/client/assets/astro-jyGOnYUN.js +2 -0
- package/dist/client/assets/aurora-x-C7CFqhAd.js +2 -0
- package/dist/client/assets/aurora-x-CDeNXAV0.js +2 -0
- package/dist/client/assets/awk-BWXHIvNe.js +2 -0
- package/dist/client/assets/ayu-dark-CRu61w6_.js +2 -0
- package/dist/client/assets/ayu-dark-DluEY0Gj.js +2 -0
- package/dist/client/assets/ayu-light-C3h-C4tm.js +2 -0
- package/dist/client/assets/ayu-light-Dn6O_aYR.js +2 -0
- package/dist/client/assets/ayu-mirage-Bqwy1Gya.js +2 -0
- package/dist/client/assets/ayu-mirage-CTjYAbs-.js +2 -0
- package/dist/client/assets/ballerina-B7ZEbQpA.js +2 -0
- package/dist/client/assets/bat-Bo4NYOV-.js +2 -0
- package/dist/client/assets/beancount-D-usSTwE.js +2 -0
- package/dist/client/assets/berry-DKpUyyne.js +2 -0
- package/dist/client/assets/bibtex-Ci_nEsc7.js +2 -0
- package/dist/client/assets/bicep-CUHmPFLl.js +2 -0
- package/dist/client/assets/bird2-C6vDhewU.js +2 -0
- package/dist/client/assets/blade-C4dPlbVG.js +2 -0
- package/dist/client/assets/branding-DWKqECp7.js +2 -0
- package/dist/client/assets/bsl-BkkzgIyY.js +2 -0
- package/dist/client/assets/c-DtlEA5ZX.js +2 -0
- package/dist/client/assets/c3-BFHwR3_K.js +2 -0
- package/dist/client/assets/cadence-CQ2zXKGN.js +2 -0
- package/dist/client/assets/cairo-DLTphjLi.js +2 -0
- package/dist/client/assets/catppuccin-frappe-3VR1Za6u.js +2 -0
- package/dist/client/assets/catppuccin-frappe-DFlFW5gh.js +2 -0
- package/dist/client/assets/catppuccin-latte-CpxdcXpJ.js +2 -0
- package/dist/client/assets/catppuccin-latte-DwIHMF0Q.js +2 -0
- package/dist/client/assets/catppuccin-macchiato-DIdIQ04K.js +2 -0
- package/dist/client/assets/catppuccin-macchiato-DYnBP6_5.js +2 -0
- package/dist/client/assets/catppuccin-mocha-Co3Xjl64.js +2 -0
- package/dist/client/assets/catppuccin-mocha-DYhrFGRu.js +2 -0
- package/dist/client/assets/checkbox-Cuif7tF0.js +2 -0
- package/dist/client/assets/circle-x-F0441fqg.js +2 -0
- package/dist/client/assets/clarity-SemFz856.js +2 -0
- package/dist/client/assets/clojure-DqKBuwfJ.js +2 -0
- package/dist/client/assets/cmake-Bj61d0ZC.js +2 -0
- package/dist/client/assets/cobol-X9aU3UsG.js +2 -0
- package/dist/client/assets/codeowners-C8r90Shi.js +2 -0
- package/dist/client/assets/codeql-oeQT6MSM.js +2 -0
- package/dist/client/assets/coffee-BluyIHgc.js +2 -0
- package/dist/client/assets/combobox-D0sqVdtm.js +2 -0
- package/dist/client/assets/common-lisp-Cv5bFMCO.js +2 -0
- package/dist/client/assets/compiler-runtime-CUwoe8mk.js +2 -0
- package/dist/client/assets/connect-CshPrK5J.js +2 -0
- package/dist/client/assets/connect_.callback-1fxfJdnn.js +2 -0
- package/dist/client/assets/coq-BrsZFFmf.js +2 -0
- package/dist/client/assets/cpp-BAWTDsD2.js +2 -0
- package/dist/client/assets/crystal-DEAezpUc.js +2 -0
- package/dist/client/assets/csharp-oqKa8noW.js +2 -0
- package/dist/client/assets/css-ZG5tpaE7.js +2 -0
- package/dist/client/assets/csv-Dx-8-gkx.js +2 -0
- package/dist/client/assets/cue-CE9AQfxI.js +2 -0
- package/dist/client/assets/cypher-ClKdZ_lG.js +2 -0
- package/dist/client/assets/d-qD-0Kul2.js +2 -0
- package/dist/client/assets/dark-plus-Cs2F2srj.js +2 -0
- package/dist/client/assets/dark-plus-GAt2ZgX8.js +2 -0
- package/dist/client/assets/dart-CnvKMtbv.js +2 -0
- package/dist/client/assets/dax-BkyTk9wS.js +2 -0
- package/dist/client/assets/desktop-Dlh5hvp9.js +2 -0
- package/dist/client/assets/diff-woXpYk--.js +2 -0
- package/dist/client/assets/dm-sans-latin-ext-wght-normal-BOFOeGcA.woff2 +0 -0
- package/dist/client/assets/dm-sans-latin-wght-normal-Xz1IZZA0.woff2 +0 -0
- package/dist/client/assets/docker-IyjqRm3v.js +2 -0
- package/dist/client/assets/dotenv-_5a1GRtc.js +2 -0
- package/dist/client/assets/dracula-BHWKrbxM.js +2 -0
- package/dist/client/assets/dracula-C2uKkzgK.js +2 -0
- package/dist/client/assets/dracula-soft-5eyTD99u.js +2 -0
- package/dist/client/assets/dracula-soft-D1bVjxWZ.js +2 -0
- package/dist/client/assets/dream-maker-DW3nJb8Q.js +2 -0
- package/dist/client/assets/edge-BUUilOUR.js +2 -0
- package/dist/client/assets/elixir-amUSnRCT.js +2 -0
- package/dist/client/assets/elm-BjxEHjzr.js +2 -0
- package/dist/client/assets/emacs-lisp-B4R74twV.js +2 -0
- package/dist/client/assets/entities-EGZcO-rg.js +2 -0
- package/dist/client/assets/environments-DPUVdQJp.js +2 -0
- package/dist/client/assets/erb-t1kck8M-.js +2 -0
- package/dist/client/assets/erlang-Cphh6RMH.js +2 -0
- package/dist/client/assets/everforest-dark-D-DlICQR.js +2 -0
- package/dist/client/assets/everforest-dark-sB-x3p7T.js +2 -0
- package/dist/client/assets/everforest-light-CeVdGHYG.js +2 -0
- package/dist/client/assets/everforest-light-Df2xbC6M.js +2 -0
- package/dist/client/assets/eye-TogxKhHZ.js +2 -0
- package/dist/client/assets/fennel-DQxkIbk2.js +2 -0
- package/dist/client/assets/fileCommentAnnotations-uFcaPOph.js +2 -0
- package/dist/client/assets/fish-BJitypiv.js +2 -0
- package/dist/client/assets/fluent-C03EYrpw.js +2 -0
- package/dist/client/assets/fortran-fixed-form-DEKoE2YW.js +2 -0
- package/dist/client/assets/fortran-free-form-CYNrtFtB.js +2 -0
- package/dist/client/assets/fsharp-D13ZGOAj.js +2 -0
- package/dist/client/assets/gauge-DXknpyA8.js +2 -0
- package/dist/client/assets/gdresource-C0sCabJj.js +2 -0
- package/dist/client/assets/gdscript-Cp2uCuqX.js +2 -0
- package/dist/client/assets/gdshader-CBce3t8t.js +2 -0
- package/dist/client/assets/genie-CV2tkWYe.js +2 -0
- package/dist/client/assets/gherkin-DExj1W_8.js +2 -0
- package/dist/client/assets/ghostty-vt-DdA0Zryv.wasm +0 -0
- package/dist/client/assets/ghostty-write-pty-hgyAvVbe.wasm +0 -0
- package/dist/client/assets/git-commit-BSykSTBG.js +2 -0
- package/dist/client/assets/git-rebase-Cq4_6JTl.js +2 -0
- package/dist/client/assets/github-dark-C-LZuMrd.js +2 -0
- package/dist/client/assets/github-dark-DwbbXv51.js +2 -0
- package/dist/client/assets/github-dark-default-CxjRwzl6.js +2 -0
- package/dist/client/assets/github-dark-default-DXG-b-1a.js +2 -0
- package/dist/client/assets/github-dark-dimmed-Bx1FflLF.js +2 -0
- package/dist/client/assets/github-dark-dimmed-Cr1oaoul.js +2 -0
- package/dist/client/assets/github-dark-high-contrast-B4qJZLZa.js +2 -0
- package/dist/client/assets/github-dark-high-contrast-B_tTalzw.js +2 -0
- package/dist/client/assets/github-light-CsVXhIlR.js +2 -0
- package/dist/client/assets/github-light-EUqPIrTm.js +2 -0
- package/dist/client/assets/github-light-default-BXViO-2h.js +2 -0
- package/dist/client/assets/github-light-default-DB_IwZa6.js +2 -0
- package/dist/client/assets/github-light-high-contrast-B68TUdTA.js +2 -0
- package/dist/client/assets/github-light-high-contrast-DLgVeSB-.js +2 -0
- package/dist/client/assets/gleam-CSRkHgEL.js +2 -0
- package/dist/client/assets/glimmer-js-u4EGJ0zO.js +2 -0
- package/dist/client/assets/glimmer-ts-Gurbt52H.js +2 -0
- package/dist/client/assets/glsl-30pqDoZO.js +2 -0
- package/dist/client/assets/gn-ilITqXS6.js +2 -0
- package/dist/client/assets/gnuplot-7GGW24-e.js +2 -0
- package/dist/client/assets/go-rLFTqkRN.js +2 -0
- package/dist/client/assets/graphql-Bs5G1kBK.js +2 -0
- package/dist/client/assets/groovy-CacY0gHj.js +2 -0
- package/dist/client/assets/group-BUXx2pDS.js +2 -0
- package/dist/client/assets/gruvbox-dark-hard-C820rvS2.js +2 -0
- package/dist/client/assets/gruvbox-dark-hard-DXm60lX3.js +2 -0
- package/dist/client/assets/gruvbox-dark-medium-BPjhmG05.js +2 -0
- package/dist/client/assets/gruvbox-dark-medium-GE2thSmD.js +2 -0
- package/dist/client/assets/gruvbox-dark-soft-04Cj-4VZ.js +2 -0
- package/dist/client/assets/gruvbox-dark-soft-MrdJrrXF.js +2 -0
- package/dist/client/assets/gruvbox-light-hard-BC_s9l72.js +2 -0
- package/dist/client/assets/gruvbox-light-hard-K6wSn29D.js +2 -0
- package/dist/client/assets/gruvbox-light-medium-BAWPOn9u.js +2 -0
- package/dist/client/assets/gruvbox-light-medium-CVy3aSlc.js +2 -0
- package/dist/client/assets/gruvbox-light-soft-BSMLrYjP.js +2 -0
- package/dist/client/assets/gruvbox-light-soft-DNgJjaY0.js +2 -0
- package/dist/client/assets/hack-Cko6MX06.js +2 -0
- package/dist/client/assets/haml-Doizmjk4.js +2 -0
- package/dist/client/assets/handlebars-b-YSlzII.js +2 -0
- package/dist/client/assets/haskell-D8IpX4py.js +2 -0
- package/dist/client/assets/haxe-OTjmBuCE.js +2 -0
- package/dist/client/assets/hcl-Dh228itO.js +2 -0
- package/dist/client/assets/hex-color-picker-DfLvGsRa.js +2 -0
- package/dist/client/assets/history-D05vcMtj.js +2 -0
- package/dist/client/assets/hjson-CxZEssPk.js +2 -0
- package/dist/client/assets/hlsl-Cvrh5tZx.js +2 -0
- package/dist/client/assets/horizon-0-RkHfro.js +2 -0
- package/dist/client/assets/horizon-CE9ld1lL.js +2 -0
- package/dist/client/assets/horizon-bright-BgL2X9oq.js +2 -0
- package/dist/client/assets/horizon-bright-DSNQnXHK.js +2 -0
- package/dist/client/assets/hostedPairing-nVVe5x4p.js +2 -0
- package/dist/client/assets/houston-CsvMBhTu.js +2 -0
- package/dist/client/assets/houston-KyjWKfuY.js +2 -0
- package/dist/client/assets/html-FzejeGn1.js +2 -0
- package/dist/client/assets/html-derivative-CnAooqTz.js +2 -0
- package/dist/client/assets/http-BxFImlHF.js +2 -0
- package/dist/client/assets/hurl-qINZb_eJ.js +2 -0
- package/dist/client/assets/hxml-B0Qn7Nwc.js +2 -0
- package/dist/client/assets/hy-CZbG8q4J.js +2 -0
- package/dist/client/assets/imba-DsUTQ-LC.js +2 -0
- package/dist/client/assets/index-DCOpJfCm.js +475 -0
- package/dist/client/assets/index-zJhfLl9C.css +1 -0
- package/dist/client/assets/ini-B5eOa1yu.js +2 -0
- package/dist/client/assets/input-group-DTqnJGXS.js +2 -0
- package/dist/client/assets/java-dMRc_cVD.js +2 -0
- package/dist/client/assets/javascript-BWMpBhVQ.js +2 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-500-normal-DJqRU3vO.woff +0 -0
- package/dist/client/assets/jetbrains-mono-cyrillic-500-normal-DmUKJPL_.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/dist/client/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-greek-500-normal-D7SFKleX.woff +0 -0
- package/dist/client/assets/jetbrains-mono-greek-500-normal-JpySY46c.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-500-normal-BWZEU5yA.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-500-normal-CJOVTJB7.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-500-normal-Cut-4mMH.woff2 +0 -0
- package/dist/client/assets/jetbrains-mono-latin-ext-500-normal-ckzbgY84.woff +0 -0
- package/dist/client/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/dist/client/assets/jetbrains-mono-vietnamese-500-normal-DNRqzVM1.woff +0 -0
- package/dist/client/assets/jinja-VDH3C9Ij.js +2 -0
- package/dist/client/assets/jison-BB0XuJyA.js +2 -0
- package/dist/client/assets/json-BjGzD-SE.js +2 -0
- package/dist/client/assets/json5-BR5RXkoi.js +2 -0
- package/dist/client/assets/jsonc-CYpm1nAK.js +2 -0
- package/dist/client/assets/jsonl-CmCQp5Yx.js +2 -0
- package/dist/client/assets/jsonnet-CJTPZ8u_.js +2 -0
- package/dist/client/assets/jssm-DXw9l8Rf.js +2 -0
- package/dist/client/assets/jsx-DzJWGKks.js +2 -0
- package/dist/client/assets/julia-BgCkjxqD.js +2 -0
- package/dist/client/assets/just-CVxSIAWS.js +2 -0
- package/dist/client/assets/kanagawa-dragon-7TqgsUPC.js +2 -0
- package/dist/client/assets/kanagawa-dragon-CXtmUGW6.js +2 -0
- package/dist/client/assets/kanagawa-lotus-BN08jTvb.js +2 -0
- package/dist/client/assets/kanagawa-lotus-CqxMQulh.js +2 -0
- package/dist/client/assets/kanagawa-wave-CTweb8Dz.js +2 -0
- package/dist/client/assets/kanagawa-wave-D8CNn6T_.js +2 -0
- package/dist/client/assets/kdl-CsD5j6eV.js +2 -0
- package/dist/client/assets/kotlin-DhhofPvG.js +2 -0
- package/dist/client/assets/kusto-C7mF5XQf.js +2 -0
- package/dist/client/assets/laserwave-CQkdhozh.js +2 -0
- package/dist/client/assets/laserwave-C_8bwKvT.js +2 -0
- package/dist/client/assets/latex-D7_rfK40.js +2 -0
- package/dist/client/assets/lean-CewbzKMR.js +2 -0
- package/dist/client/assets/less-DVTAwKKz.js +2 -0
- package/dist/client/assets/lib-b9zyleUn.js +30 -0
- package/dist/client/assets/light-plus-CNQ8_7Y0.js +2 -0
- package/dist/client/assets/light-plus-DVQuIRkW.js +2 -0
- package/dist/client/assets/link-BL3GZ_rH.js +2 -0
- package/dist/client/assets/liquid-C5PsA06M.js +2 -0
- package/dist/client/assets/llvm-Cm23YOpf.js +2 -0
- package/dist/client/assets/localApi-5K0gg1WP.js +3 -0
- package/dist/client/assets/log-BNLmms1o.js +2 -0
- package/dist/client/assets/logo-Cluzi2Zq.js +2 -0
- package/dist/client/assets/lua-Bq1DnbZG.js +2 -0
- package/dist/client/assets/luau-FMPmPwt6.js +2 -0
- package/dist/client/assets/make-Dixweg8N.js +2 -0
- package/dist/client/assets/markdown-BYOwaDjH.js +2 -0
- package/dist/client/assets/marko-C7zk2YT1.js +2 -0
- package/dist/client/assets/matchContext-C4X6O3hW.js +2 -0
- package/dist/client/assets/material-theme-Bm3Qr25_.js +2 -0
- package/dist/client/assets/material-theme-CAtLaHa3.js +2 -0
- package/dist/client/assets/material-theme-darker-2IIEA8gg.js +2 -0
- package/dist/client/assets/material-theme-darker-k-s5Bc6K.js +2 -0
- package/dist/client/assets/material-theme-lighter-CD6a-c4d.js +2 -0
- package/dist/client/assets/material-theme-lighter-uhdI0v04.js +2 -0
- package/dist/client/assets/material-theme-ocean-B3mraInd.js +2 -0
- package/dist/client/assets/material-theme-ocean-CHQ94UKr.js +2 -0
- package/dist/client/assets/material-theme-palenight-B5W6OYN7.js +2 -0
- package/dist/client/assets/material-theme-palenight-DEhAARHw.js +2 -0
- package/dist/client/assets/matlab-D7qyCx1q.js +2 -0
- package/dist/client/assets/mdc-JKnKthIF.js +2 -0
- package/dist/client/assets/mdx-DQZ5AkYe.js +2 -0
- package/dist/client/assets/mermaid-Bk4SNUv9.js +2 -0
- package/dist/client/assets/min-dark-BFqTAwCr.js +2 -0
- package/dist/client/assets/min-dark-BSWPekZh.js +2 -0
- package/dist/client/assets/min-light-DDpmG2fV.js +2 -0
- package/dist/client/assets/min-light-O7UdaaxX.js +2 -0
- package/dist/client/assets/mipsasm-BMqwQI7S.js +2 -0
- package/dist/client/assets/mojo-BgCJLMeH.js +2 -0
- package/dist/client/assets/monokai-C0p7Qecz.js +2 -0
- package/dist/client/assets/monokai-CdkpiU2Y.js +2 -0
- package/dist/client/assets/moonbit-CaWjb8XO.js +2 -0
- package/dist/client/assets/move-B1IS1UjX.js +2 -0
- package/dist/client/assets/narrat-_X_XdTYD.js +2 -0
- package/dist/client/assets/nextflow-BJtWHP5T.js +2 -0
- package/dist/client/assets/nextflow-groovy-DJMQeKeT.js +2 -0
- package/dist/client/assets/nginx-DXZZx9Fe.js +2 -0
- package/dist/client/assets/night-owl-BsnCLAKc.js +2 -0
- package/dist/client/assets/night-owl-DhmEMT88.js +2 -0
- package/dist/client/assets/night-owl-light-BODRhcTU.js +2 -0
- package/dist/client/assets/night-owl-light-eJ-hLW7d.js +2 -0
- package/dist/client/assets/nim-CkvLrvYM.js +2 -0
- package/dist/client/assets/nix-IvuFDN5E.js +2 -0
- package/dist/client/assets/nord-Cb4Vim4T.js +2 -0
- package/dist/client/assets/nord-Cd-F4txO.js +2 -0
- package/dist/client/assets/nushell-DcLAeLz5.js +2 -0
- package/dist/client/assets/objective-c-D1A_Heim.js +2 -0
- package/dist/client/assets/objective-cpp-BsSzOQcm.js +2 -0
- package/dist/client/assets/ocaml-O90oeIOV.js +2 -0
- package/dist/client/assets/odin-B1RWQWA5.js +2 -0
- package/dist/client/assets/one-dark-pro-CLwyXe_n.js +2 -0
- package/dist/client/assets/one-dark-pro-DUS_IGRK.js +2 -0
- package/dist/client/assets/one-light-CVUd7yD5.js +2 -0
- package/dist/client/assets/one-light-D7Lr4KcI.js +2 -0
- package/dist/client/assets/openscad-BUDT5pXO.js +2 -0
- package/dist/client/assets/pair-D_sKBvJj.js +2 -0
- package/dist/client/assets/pascal-4ZHwLPI5.js +2 -0
- package/dist/client/assets/perl-DKUKw9CE.js +2 -0
- package/dist/client/assets/php-GHQk7Jua.js +2 -0
- package/dist/client/assets/pierre-dark-CpLgRqie.js +2 -0
- package/dist/client/assets/pierre-dark-protanopia-deuteranopia-B35FxJx-.js +2 -0
- package/dist/client/assets/pierre-dark-soft-kZQmAZld.js +2 -0
- package/dist/client/assets/pierre-dark-tritanopia-CpjhbsIL.js +2 -0
- package/dist/client/assets/pierre-dark-vibrant-CpQYzh95.js +2 -0
- package/dist/client/assets/pierre-light-CoaEpmwp.js +2 -0
- package/dist/client/assets/pierre-light-protanopia-deuteranopia-0fSaH845.js +2 -0
- package/dist/client/assets/pierre-light-soft-lWLdNTOI.js +2 -0
- package/dist/client/assets/pierre-light-tritanopia-CEbqgOJL.js +2 -0
- package/dist/client/assets/pierre-light-vibrant-D80Fkn33.js +2 -0
- package/dist/client/assets/pkl-ot-7Btpt.js +2 -0
- package/dist/client/assets/plastic-CF8VZTnn.js +2 -0
- package/dist/client/assets/plastic-DQwYfKfQ.js +2 -0
- package/dist/client/assets/plsql-DGHpHOYJ.js +2 -0
- package/dist/client/assets/po-BiJDBrnU.js +2 -0
- package/dist/client/assets/poimandres-BX2TyY6j.js +2 -0
- package/dist/client/assets/poimandres-DRFjx7u4.js +2 -0
- package/dist/client/assets/polar-C7UOKdEL.js +2 -0
- package/dist/client/assets/postcss-BXeXVLqQ.js +2 -0
- package/dist/client/assets/powerquery-DNMTfnFr.js +2 -0
- package/dist/client/assets/powershell-DshXNtvi.js +2 -0
- package/dist/client/assets/preload-helper-D2XUqLHy.js +1 -0
- package/dist/client/assets/previewActionBus-B2LYye0P.js +2 -0
- package/dist/client/assets/prisma-BsRQq5mF.js +2 -0
- package/dist/client/assets/projects-D9v9VLJo.js +2 -0
- package/dist/client/assets/prolog-iXnhIJG7.js +2 -0
- package/dist/client/assets/proto-DB4EqR-F.js +2 -0
- package/dist/client/assets/pug-DxCMAzbD.js +2 -0
- package/dist/client/assets/puppet-CDv2pdJW.js +2 -0
- package/dist/client/assets/purescript-9MfHhQsQ.js +2 -0
- package/dist/client/assets/python-gzcpVVnB.js +2 -0
- package/dist/client/assets/qml-D3IL06-0.js +2 -0
- package/dist/client/assets/qmldir-DCQb3MpD.js +2 -0
- package/dist/client/assets/qss-Fe1Jh2GI.js +2 -0
- package/dist/client/assets/query-BTlH8ppa.js +2 -0
- package/dist/client/assets/r-D2Zb3-aq.js +2 -0
- package/dist/client/assets/racket-DcIDlBhZ.js +2 -0
- package/dist/client/assets/radio-group-VXzWvOzu.js +2 -0
- package/dist/client/assets/raku-B3gFvitq.js +2 -0
- package/dist/client/assets/razor-BfPqrQiz.js +2 -0
- package/dist/client/assets/red-7ga_dcKu.js +2 -0
- package/dist/client/assets/red-CJ3rzSJv.js +2 -0
- package/dist/client/assets/redirect-CTDpd8-N.js +2 -0
- package/dist/client/assets/reg-CRGYupPL.js +2 -0
- package/dist/client/assets/regexp-BtCnpNi-.js +2 -0
- package/dist/client/assets/rel-BtDbiS_P.js +2 -0
- package/dist/client/assets/reviewPatchParser.worker-Bx0aLcXI.js +13 -0
- package/dist/client/assets/reviews-DqcOSrtz.js +2 -0
- package/dist/client/assets/reviews._environmentId._host._owner._repository._pullRequestNumber-QICycRVU.js +11 -0
- package/dist/client/assets/reviews.index-Dw9KYVnt.js +2 -0
- package/dist/client/assets/riscv-Ckw8ddFX.js +2 -0
- package/dist/client/assets/ron-VUp2lXgN.js +2 -0
- package/dist/client/assets/rose-pine-BthvhNj6.js +2 -0
- package/dist/client/assets/rose-pine-dawn-DSuRaP6u.js +2 -0
- package/dist/client/assets/rose-pine-dawn-Dg85fqjY.js +2 -0
- package/dist/client/assets/rose-pine-moon-DdHjCvFQ.js +2 -0
- package/dist/client/assets/rose-pine-moon-hon4tzzS.js +2 -0
- package/dist/client/assets/rose-pine-rh6ipraJ.js +2 -0
- package/dist/client/assets/rosmsg-CAekHB0j.js +2 -0
- package/dist/client/assets/rotate-ccw-BuHf9qmb.js +2 -0
- package/dist/client/assets/rst-DgVsEgbv.js +2 -0
- package/dist/client/assets/ruby-DM9zEDxk.js +2 -0
- package/dist/client/assets/rust-Cfkwpbl8.js +2 -0
- package/dist/client/assets/safeLog-NeXgoMPF.js +3 -0
- package/dist/client/assets/sas-DlL3ue79.js +2 -0
- package/dist/client/assets/sass-DXrisJhu.js +2 -0
- package/dist/client/assets/scala-DKOlJaKm.js +2 -0
- package/dist/client/assets/scheduler-8SgDf5Nb.js +2 -0
- package/dist/client/assets/scheme-DQCgrYNe.js +2 -0
- package/dist/client/assets/scss-LGD8fUVB.js +2 -0
- package/dist/client/assets/sdbl-bTVj8UrX.js +2 -0
- package/dist/client/assets/settings-D4XOj85b.js +2 -0
- package/dist/client/assets/settings.appearance-CZvAeZCN.js +42 -0
- package/dist/client/assets/settings.archived-Y06GoG0S.js +2 -0
- package/dist/client/assets/settings.beta-Bd5UrFtG.js +2 -0
- package/dist/client/assets/settings.connections-YjuBg0cD.js +2 -0
- package/dist/client/assets/settings.diagnostics-DujS7DMW.js +3 -0
- package/dist/client/assets/settings.general-sQSJC3Rq.js +2 -0
- package/dist/client/assets/settings.keybindings-C6b2im1-.js +2 -0
- package/dist/client/assets/settings.providers-CzhQRSvU.js +2 -0
- package/dist/client/assets/settings.source-control-Ocoxm1T5.js +2 -0
- package/dist/client/assets/shaderlab-TOUzSsQk.js +2 -0
- package/dist/client/assets/shell-BfrxrAzH.js +2 -0
- package/dist/client/assets/shellscript-CYVg9JP5.js +2 -0
- package/dist/client/assets/shellsession-Cn2QQjIy.js +2 -0
- package/dist/client/assets/slack-dark-DYvUXyrP.js +2 -0
- package/dist/client/assets/slack-dark-DnToyrRv.js +2 -0
- package/dist/client/assets/slack-ochin-B2OO5cIa.js +2 -0
- package/dist/client/assets/slack-ochin-bqtMVDfH.js +2 -0
- package/dist/client/assets/smalltalk-B16xEiuN.js +2 -0
- package/dist/client/assets/snazzy-light-4G7pJPwS.js +2 -0
- package/dist/client/assets/snazzy-light-D8dzFmq5.js +2 -0
- package/dist/client/assets/solarized-dark-BQwPDzxK.js +2 -0
- package/dist/client/assets/solarized-dark-DV17i1UV.js +2 -0
- package/dist/client/assets/solarized-light-BLaijb3X.js +2 -0
- package/dist/client/assets/solarized-light-DSh2HLQt.js +2 -0
- package/dist/client/assets/solidity-CKzVLygQ.js +2 -0
- package/dist/client/assets/soy-BNUH7AWp.js +2 -0
- package/dist/client/assets/sparql-D_iOobhT.js +2 -0
- package/dist/client/assets/splunk-BC2Px7Mm.js +2 -0
- package/dist/client/assets/sql-BLrhh1Yv.js +2 -0
- package/dist/client/assets/ssh-config-BgfXC-Er.js +2 -0
- package/dist/client/assets/stata-CbTJOr_m.js +2 -0
- package/dist/client/assets/stylus-B6D30XZt.js +2 -0
- package/dist/client/assets/surrealql-Bp6i6018.js +2 -0
- package/dist/client/assets/svelte-CuQ8bF4c.js +2 -0
- package/dist/client/assets/swift-DonLKvLd.js +2 -0
- package/dist/client/assets/switch-rJ-jJPhK.js +2 -0
- package/dist/client/assets/synthwave-84-CIknw8y7.js +2 -0
- package/dist/client/assets/synthwave-84-nFMaYfgc.js +2 -0
- package/dist/client/assets/system-verilog-DJ5XKQeo.js +2 -0
- package/dist/client/assets/systemd-BxMlprV5.js +2 -0
- package/dist/client/assets/talonscript-CohzipZa.js +2 -0
- package/dist/client/assets/tasl-DMoTqEGO.js +2 -0
- package/dist/client/assets/tcl-CZd0xW_V.js +2 -0
- package/dist/client/assets/templ-Bo-nf_t1.js +2 -0
- package/dist/client/assets/terminalAppearance-BqQ_2bv1.js +2 -0
- package/dist/client/assets/terraform-DswuEJGm.js +2 -0
- package/dist/client/assets/tex-BgvSMBks.js +2 -0
- package/dist/client/assets/textarea-XNVgJSPU.js +2 -0
- package/dist/client/assets/toggle-QDWstdFN.js +2 -0
- package/dist/client/assets/tokyo-night-iIspnLcq.js +2 -0
- package/dist/client/assets/tokyo-night-oM2G3aXe.js +2 -0
- package/dist/client/assets/toml-CcmNWLt0.js +2 -0
- package/dist/client/assets/ts-tags-Bm95_vpn.js +2 -0
- package/dist/client/assets/tsv-sltzmVWM.js +2 -0
- package/dist/client/assets/tsx-ToB8-PkG.js +2 -0
- package/dist/client/assets/turtle-ByJddavk.js +2 -0
- package/dist/client/assets/twig-D5eIhwLo.js +2 -0
- package/dist/client/assets/typescript-55S1t3b3.js +2 -0
- package/dist/client/assets/typespec-BRdr0IET.js +2 -0
- package/dist/client/assets/typst-DI99ib-x.js +2 -0
- package/dist/client/assets/uiStateStore-DKTfup26.js +2 -0
- package/dist/client/assets/use-atom-command-CbJ8L7ju.js +4 -0
- package/dist/client/assets/useAriaLabelledBy-DcnsWgtX.js +2 -0
- package/dist/client/assets/useParams-Iww6IHUG.js +2 -0
- package/dist/client/assets/useReviewMergeAction-BgjVNuJP.js +2 -0
- package/dist/client/assets/useSettings-CGh4Xw67.js +2 -0
- package/dist/client/assets/useStore-Bv9Rrp6F.js +2 -0
- package/dist/client/assets/utils-SYwD9hoF.js +2 -0
- package/dist/client/assets/utils-Yidpy5tB.js +30 -0
- package/dist/client/assets/v-DETTlOr0.js +2 -0
- package/dist/client/assets/vala-zf12oZj6.js +2 -0
- package/dist/client/assets/vb-Djn5o6TS.js +2 -0
- package/dist/client/assets/vcsRefInvalidation-CMdkUDtM.js +2 -0
- package/dist/client/assets/verilog-CiiDBU1e.js +2 -0
- package/dist/client/assets/vesper-BIFK_oDq.js +2 -0
- package/dist/client/assets/vesper-DdrHHSXu.js +2 -0
- package/dist/client/assets/vhdl-BroJfC0k.js +2 -0
- package/dist/client/assets/viml-DvXPmvsu.js +2 -0
- package/dist/client/assets/vitesse-black-D082JcaE.js +2 -0
- package/dist/client/assets/vitesse-black-fwtXNY1n.js +2 -0
- package/dist/client/assets/vitesse-dark-BZCL-v6S.js +2 -0
- package/dist/client/assets/vitesse-dark-z-nr_5O8.js +2 -0
- package/dist/client/assets/vitesse-light-VbXTXTou.js +2 -0
- package/dist/client/assets/vitesse-light-ojz42ZLy.js +2 -0
- package/dist/client/assets/vue-BWR1mbne.js +2 -0
- package/dist/client/assets/vue-html-DGrJOwF8.js +2 -0
- package/dist/client/assets/vue-vine-SedHajQj.js +2 -0
- package/dist/client/assets/vyper-CgoNMtux.js +2 -0
- package/dist/client/assets/wasm-BnjxR4X6.js +2 -0
- package/dist/client/assets/wasm-ByWQv1Qj.js +2 -0
- package/dist/client/assets/wenyan-C8pVoKbM.js +2 -0
- package/dist/client/assets/wgsl-BsKzXJz4.js +2 -0
- package/dist/client/assets/wikitext-ClFFjSW2.js +2 -0
- package/dist/client/assets/wit-DdvCle-K.js +2 -0
- package/dist/client/assets/with-selector-C3poe37J.js +2 -0
- package/dist/client/assets/wolfram-DLL8P-h_.js +2 -0
- package/dist/client/assets/worker-CIcqvLjo.js +159 -0
- package/dist/client/assets/workspaceTitlebar-CrNTdVrF.js +2 -0
- package/dist/client/assets/xml-BB6ezbMQ.js +2 -0
- package/dist/client/assets/xsl-DygAj9pT.js +2 -0
- package/dist/client/assets/yaml-CIJj2T9S.js +2 -0
- package/dist/client/assets/zenscript-BnlCZFoB.js +2 -0
- package/dist/client/assets/zig-CMLA9XwU.js +2 -0
- package/dist/client/index.html +327 -0
- package/dist/client/mockServiceWorker.js +349 -0
- package/dist/service-launcher.mjs +461 -0
- package/package.json +54 -0
|
@@ -0,0 +1,1274 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { A as Record$1, Al as map$2, C as NonEmptyString, Cn as toEncoded, E as Number$1, En as transform, Eu as some, Fu as Prototype, Gr as flatMap, Kl as Reference, Kr as flatMapEager, Lu as PipeInspectableProto, M as String$1, Qt as decodeUnknownEffect, Si as mapErrorEager, Tn as splitKeyValue, W as Union, Wu as assignProperty, Yr as fnUntraced, Zt as _is, ad as hasProperty, bu as isSome, dr as all$1, en as SchemaError, h as Int, ht as isBetween, kr as catch_, na as succeed$1, nt as decodeTo, po as TaggedError, r as Boolean$1, tn as isSchemaError, tr as Pointer, v as Literals, vu as isNone, wu as none, xd as dual, yi as map$1, z as URL, zr as fail$1, zt as toCodecStringTree } from "./Schema-DuQUv9rO.mjs";
|
|
4
|
+
//#region ../../node_modules/.pnpm/effect@4.0.0-beta.102_patch_10dcca2e28a1e6c67a3825e6da1ff253/node_modules/effect/dist/ConfigProvider.js
|
|
5
|
+
/**
|
|
6
|
+
* Data sources used by `Config` to load raw configuration values. A
|
|
7
|
+
* `ConfigProvider` reads paths from places such as environment variables,
|
|
8
|
+
* JavaScript objects, `.env` contents, or directories, and returns a uniform
|
|
9
|
+
* `Node` shape that config schemas can decode. The module also includes helpers
|
|
10
|
+
* for composing providers, changing paths, and installing providers through
|
|
11
|
+
* layers.
|
|
12
|
+
*
|
|
13
|
+
* @since 4.0.0
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* Creates a `Value` node representing a terminal string leaf.
|
|
17
|
+
*
|
|
18
|
+
* **When to use**
|
|
19
|
+
*
|
|
20
|
+
* Use when building nodes inside a custom `ConfigProvider`'s `get`
|
|
21
|
+
* callback.
|
|
22
|
+
*
|
|
23
|
+
* **Details**
|
|
24
|
+
*
|
|
25
|
+
* The function returns a new plain object.
|
|
26
|
+
*
|
|
27
|
+
* **Example** (Creating a value node)
|
|
28
|
+
*
|
|
29
|
+
* ```ts
|
|
30
|
+
* import { ConfigProvider } from "effect"
|
|
31
|
+
*
|
|
32
|
+
* const node = ConfigProvider.makeValue("3000")
|
|
33
|
+
* // { _tag: "Value", value: "3000" }
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @see {@link makeRecord} – for object-like containers
|
|
37
|
+
* @see {@link makeArray} – for array-like containers
|
|
38
|
+
*
|
|
39
|
+
* @category constructors
|
|
40
|
+
* @since 4.0.0
|
|
41
|
+
*/
|
|
42
|
+
function makeValue(value) {
|
|
43
|
+
return {
|
|
44
|
+
_tag: "Value",
|
|
45
|
+
value
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Creates a `Record` node representing an object-like container with known
|
|
50
|
+
* child keys.
|
|
51
|
+
*
|
|
52
|
+
* **When to use**
|
|
53
|
+
*
|
|
54
|
+
* Use when you need to describe a directory or JSON object inside a custom
|
|
55
|
+
* provider.
|
|
56
|
+
*
|
|
57
|
+
* **Details**
|
|
58
|
+
*
|
|
59
|
+
* The optional `value` allows a node to be both a container and a leaf at the
|
|
60
|
+
* same time (for example, an env var `A=x` that also has children `A_FOO` and
|
|
61
|
+
* `A_BAR`).
|
|
62
|
+
*
|
|
63
|
+
* **Example** (Creating a record node)
|
|
64
|
+
*
|
|
65
|
+
* ```ts
|
|
66
|
+
* import { ConfigProvider } from "effect"
|
|
67
|
+
*
|
|
68
|
+
* const node = ConfigProvider.makeRecord(new Set(["host", "port"]))
|
|
69
|
+
* // { _tag: "Record", keys: Set(["host", "port"]), value: undefined }
|
|
70
|
+
* ```
|
|
71
|
+
*
|
|
72
|
+
* @see {@link makeValue} – for terminal leaves
|
|
73
|
+
* @see {@link makeArray} – for array-like containers
|
|
74
|
+
*
|
|
75
|
+
* @category constructors
|
|
76
|
+
* @since 4.0.0
|
|
77
|
+
*/
|
|
78
|
+
function makeRecord(keys, value) {
|
|
79
|
+
return {
|
|
80
|
+
_tag: "Record",
|
|
81
|
+
keys,
|
|
82
|
+
value
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Creates an `Array` node representing an indexed container with a known
|
|
87
|
+
* length.
|
|
88
|
+
*
|
|
89
|
+
* **When to use**
|
|
90
|
+
*
|
|
91
|
+
* Use when you need to describe a JSON array or numerically indexed env vars
|
|
92
|
+
* inside a custom provider.
|
|
93
|
+
*
|
|
94
|
+
* **Details**
|
|
95
|
+
*
|
|
96
|
+
* The optional `value` allows a node to be both a container and a leaf at the
|
|
97
|
+
* same time.
|
|
98
|
+
*
|
|
99
|
+
* **Example** (Creating an array node)
|
|
100
|
+
*
|
|
101
|
+
* ```ts
|
|
102
|
+
* import { ConfigProvider } from "effect"
|
|
103
|
+
*
|
|
104
|
+
* const node = ConfigProvider.makeArray(3)
|
|
105
|
+
* // { _tag: "Array", length: 3, value: undefined }
|
|
106
|
+
* ```
|
|
107
|
+
*
|
|
108
|
+
* @see {@link makeValue} – for terminal leaves
|
|
109
|
+
* @see {@link makeRecord} – for object-like containers
|
|
110
|
+
*
|
|
111
|
+
* @category constructors
|
|
112
|
+
* @since 4.0.0
|
|
113
|
+
*/
|
|
114
|
+
function makeArray(length, value) {
|
|
115
|
+
return {
|
|
116
|
+
_tag: "Array",
|
|
117
|
+
length,
|
|
118
|
+
value
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Typed error indicating that a configuration source could not be read.
|
|
123
|
+
*
|
|
124
|
+
* **When to use**
|
|
125
|
+
*
|
|
126
|
+
* Use when you need to report that a custom provider's underlying store is
|
|
127
|
+
* unreachable or produced an I/O error while reading configuration data.
|
|
128
|
+
*
|
|
129
|
+
* **Gotchas**
|
|
130
|
+
*
|
|
131
|
+
* Do not use `SourceError` for "key not found". That case is represented by
|
|
132
|
+
* returning `undefined` from `load`.
|
|
133
|
+
*
|
|
134
|
+
* **Example** (Failing with a SourceError)
|
|
135
|
+
*
|
|
136
|
+
* ```ts
|
|
137
|
+
* import { ConfigProvider, Effect } from "effect"
|
|
138
|
+
*
|
|
139
|
+
* const provider = ConfigProvider.make((_path) =>
|
|
140
|
+
* Effect.fail(
|
|
141
|
+
* new ConfigProvider.SourceError({ message: "connection refused" })
|
|
142
|
+
* )
|
|
143
|
+
* )
|
|
144
|
+
* ```
|
|
145
|
+
*
|
|
146
|
+
* @see {@link ConfigProvider} – the interface whose `load` may fail with this
|
|
147
|
+
* error
|
|
148
|
+
*
|
|
149
|
+
* @category models
|
|
150
|
+
* @since 4.0.0
|
|
151
|
+
*/
|
|
152
|
+
var SourceError = class extends TaggedError("SourceError") {};
|
|
153
|
+
/**
|
|
154
|
+
* Context reference for the active raw configuration provider, registered in the context with a
|
|
155
|
+
* default value of `fromEnv()`. Because it is a `Context.Reference`, it is
|
|
156
|
+
* available without explicit provision; `Config` schemas automatically resolve
|
|
157
|
+
* it.
|
|
158
|
+
*
|
|
159
|
+
* **When to use**
|
|
160
|
+
*
|
|
161
|
+
* Use to override the active raw configuration provider for an entire program,
|
|
162
|
+
* or retrieve the current provider inside an Effect.
|
|
163
|
+
*
|
|
164
|
+
* **Example** (Providing a custom provider)
|
|
165
|
+
*
|
|
166
|
+
* ```ts
|
|
167
|
+
* import { ConfigProvider, Effect } from "effect"
|
|
168
|
+
*
|
|
169
|
+
* const provider = ConfigProvider.fromUnknown({ port: 8080 })
|
|
170
|
+
*
|
|
171
|
+
* const program = Effect.gen(function*() {
|
|
172
|
+
* const current = yield* ConfigProvider.ConfigProvider
|
|
173
|
+
* return current
|
|
174
|
+
* }).pipe(
|
|
175
|
+
* Effect.provideService(ConfigProvider.ConfigProvider, provider)
|
|
176
|
+
* )
|
|
177
|
+
* ```
|
|
178
|
+
*
|
|
179
|
+
* @see {@link layer} – install a provider as a Layer
|
|
180
|
+
* @see {@link layerAdd} – add a fallback provider as a Layer
|
|
181
|
+
*
|
|
182
|
+
* @category services
|
|
183
|
+
* @since 2.0.0
|
|
184
|
+
*/
|
|
185
|
+
const ConfigProvider = /*#__PURE__*/ Reference("effect/ConfigProvider", { defaultValue: () => fromEnv() });
|
|
186
|
+
const Proto$1 = {
|
|
187
|
+
...PipeInspectableProto,
|
|
188
|
+
toJSON() {
|
|
189
|
+
return { _id: "ConfigProvider" };
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const identityPath = (path) => path;
|
|
193
|
+
function makeProvider(state, load) {
|
|
194
|
+
const self = Object.create(Proto$1);
|
|
195
|
+
self.state = state;
|
|
196
|
+
self.load = load;
|
|
197
|
+
return self;
|
|
198
|
+
}
|
|
199
|
+
function makeSource(get, transform) {
|
|
200
|
+
const state = {
|
|
201
|
+
_tag: "Source",
|
|
202
|
+
get,
|
|
203
|
+
transform
|
|
204
|
+
};
|
|
205
|
+
return makeProvider(state, (path) => state.get(state.transform(path)));
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Creates a `ConfigProvider` from a raw lookup function.
|
|
209
|
+
*
|
|
210
|
+
* **When to use**
|
|
211
|
+
*
|
|
212
|
+
* Use when implementing a provider backed by a custom store, such as a
|
|
213
|
+
* database, remote API, or in-memory map.
|
|
214
|
+
*
|
|
215
|
+
* **Details**
|
|
216
|
+
*
|
|
217
|
+
* The `get` callback receives a `Path` and must return
|
|
218
|
+
* `Effect<Node | undefined, SourceError>`. Return `undefined` when the path
|
|
219
|
+
* does not exist; fail with `SourceError` only for actual I/O errors.
|
|
220
|
+
*
|
|
221
|
+
* **Example** (Creating a simple in-memory provider)
|
|
222
|
+
*
|
|
223
|
+
* ```ts
|
|
224
|
+
* import { ConfigProvider, Effect } from "effect"
|
|
225
|
+
*
|
|
226
|
+
* const data: Record<string, string> = {
|
|
227
|
+
* host: "localhost",
|
|
228
|
+
* port: "5432"
|
|
229
|
+
* }
|
|
230
|
+
*
|
|
231
|
+
* const provider = ConfigProvider.make((path) => {
|
|
232
|
+
* const key = path.join(".")
|
|
233
|
+
* const value = data[key]
|
|
234
|
+
* return Effect.succeed(
|
|
235
|
+
* value !== undefined ? ConfigProvider.makeValue(value) : undefined
|
|
236
|
+
* )
|
|
237
|
+
* })
|
|
238
|
+
* ```
|
|
239
|
+
*
|
|
240
|
+
* @see {@link fromEnv} – pre-built provider for environment variables
|
|
241
|
+
* @see {@link fromUnknown} – pre-built provider for JSON objects
|
|
242
|
+
*
|
|
243
|
+
* @category constructors
|
|
244
|
+
* @since 2.0.0
|
|
245
|
+
*/
|
|
246
|
+
function make$1(get) {
|
|
247
|
+
return makeSource(get, identityPath);
|
|
248
|
+
}
|
|
249
|
+
function emptyStringAsMissing(value, preserveEmptyStrings) {
|
|
250
|
+
return value === "" && !preserveEmptyStrings ? void 0 : value;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Creates a `ConfigProvider` backed by environment variables.
|
|
254
|
+
*
|
|
255
|
+
* **When to use**
|
|
256
|
+
*
|
|
257
|
+
* Use to read configuration from `process.env`, which is the default when no
|
|
258
|
+
* provider is explicitly set, or pass a custom env record for testing or
|
|
259
|
+
* non-Node runtimes.
|
|
260
|
+
*
|
|
261
|
+
* **Details**
|
|
262
|
+
*
|
|
263
|
+
* Path segments are joined with `_` for direct lookup, and env var names are
|
|
264
|
+
* also split on `_` to build a trie for child key discovery. This means
|
|
265
|
+
* `DATABASE_HOST=localhost` is accessible at both path `["DATABASE_HOST"]`
|
|
266
|
+
* and `["DATABASE", "HOST"]`. If all immediate children of a trie node have
|
|
267
|
+
* purely numeric names, the node is reported as an `Array`; otherwise as a
|
|
268
|
+
* `Record`.
|
|
269
|
+
*
|
|
270
|
+
* The default environment merges `process.env` and `import.meta.env` (when
|
|
271
|
+
* available). Override by passing `{ env: { ... } }`.
|
|
272
|
+
*
|
|
273
|
+
* Literal empty strings are treated as missing values when loaded as values by
|
|
274
|
+
* default. Pass `{ preserveEmptyStrings: true }` to keep empty strings as
|
|
275
|
+
* explicit values. Child discovery still reflects the environment variable
|
|
276
|
+
* names present in the source.
|
|
277
|
+
*
|
|
278
|
+
* Never fails with `SourceError` — all lookups are synchronous.
|
|
279
|
+
*
|
|
280
|
+
* **Example** (Reading from a custom env record)
|
|
281
|
+
*
|
|
282
|
+
* ```ts
|
|
283
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
284
|
+
*
|
|
285
|
+
* const provider = ConfigProvider.fromEnv({
|
|
286
|
+
* env: {
|
|
287
|
+
* DATABASE_HOST: "localhost",
|
|
288
|
+
* DATABASE_PORT: "5432"
|
|
289
|
+
* }
|
|
290
|
+
* })
|
|
291
|
+
*
|
|
292
|
+
* const host = Config.string("HOST").parse(
|
|
293
|
+
* provider.pipe(ConfigProvider.nested("DATABASE"))
|
|
294
|
+
* )
|
|
295
|
+
*
|
|
296
|
+
* // Effect.runSync(host) // "localhost"
|
|
297
|
+
* ```
|
|
298
|
+
*
|
|
299
|
+
* @see {@link fromUnknown} – for JSON objects
|
|
300
|
+
* @see {@link constantCase} – bridge camelCase keys to SCREAMING_SNAKE_CASE
|
|
301
|
+
*
|
|
302
|
+
* @category ConfigProviders
|
|
303
|
+
* @since 2.0.0
|
|
304
|
+
*/
|
|
305
|
+
function fromEnv(options) {
|
|
306
|
+
const env = options?.env ?? {
|
|
307
|
+
...globalThis?.process?.env,
|
|
308
|
+
...import.meta.env
|
|
309
|
+
};
|
|
310
|
+
const preserveEmptyStrings = options?.preserveEmptyStrings === true;
|
|
311
|
+
const trie = buildEnvTrie(env);
|
|
312
|
+
return make$1((path) => succeed$1(nodeAtEnv(trie, env, path, preserveEmptyStrings)));
|
|
313
|
+
}
|
|
314
|
+
function buildEnvTrie(env) {
|
|
315
|
+
const trie = {};
|
|
316
|
+
for (const [name, value] of Object.entries(env)) {
|
|
317
|
+
if (value === void 0) continue;
|
|
318
|
+
const segments = name.split("_");
|
|
319
|
+
let node = trie;
|
|
320
|
+
for (const seg of segments) {
|
|
321
|
+
const children = node.children ??= Object.create(null);
|
|
322
|
+
node = children[seg] ??= {};
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
return trie;
|
|
326
|
+
}
|
|
327
|
+
const NUMERIC_INDEX = /^(0|[1-9][0-9]*)$/;
|
|
328
|
+
function nodeAtEnv(trie, env, path, preserveEmptyStrings) {
|
|
329
|
+
const key = path.map(String).join("_");
|
|
330
|
+
const leafValue = emptyStringAsMissing(Object.hasOwn(env, key) ? env[key] : void 0, preserveEmptyStrings);
|
|
331
|
+
const trieNode = trieNodeAt(trie, path);
|
|
332
|
+
const children = trieNode?.children ? Object.keys(trieNode.children) : [];
|
|
333
|
+
if (children.length === 0) return leafValue === void 0 ? void 0 : makeValue(leafValue);
|
|
334
|
+
if (children.every((k) => NUMERIC_INDEX.test(k))) return makeArray(Math.max(...children.map((k) => parseInt(k, 10))) + 1, leafValue);
|
|
335
|
+
return makeRecord(new Set(children), leafValue);
|
|
336
|
+
}
|
|
337
|
+
function trieNodeAt(root, path) {
|
|
338
|
+
if (path.length === 0) return root;
|
|
339
|
+
let node = root;
|
|
340
|
+
for (const seg of path) {
|
|
341
|
+
node = node?.children?.[String(seg)];
|
|
342
|
+
if (!node) return void 0;
|
|
343
|
+
}
|
|
344
|
+
return node;
|
|
345
|
+
}
|
|
346
|
+
//#endregion
|
|
347
|
+
//#region ../../node_modules/.pnpm/effect@4.0.0-beta.102_patch_10dcca2e28a1e6c67a3825e6da1ff253/node_modules/effect/dist/LogLevel.js
|
|
348
|
+
/**
|
|
349
|
+
* Returns all `LogLevel` values in order from `All` through the concrete severities to
|
|
350
|
+
* `None`.
|
|
351
|
+
*
|
|
352
|
+
* **When to use**
|
|
353
|
+
*
|
|
354
|
+
* Use to enumerate or validate all accepted `LogLevel` string values, including
|
|
355
|
+
* the `All` and `None` sentinel levels.
|
|
356
|
+
*
|
|
357
|
+
* **Details**
|
|
358
|
+
*
|
|
359
|
+
* The array order matches the module severity order: `All`, concrete
|
|
360
|
+
* severities from `Fatal` to `Trace`, then `None`.
|
|
361
|
+
*
|
|
362
|
+
* **Gotchas**
|
|
363
|
+
*
|
|
364
|
+
* This list includes `All` and `None`, so it is not limited to concrete emitted
|
|
365
|
+
* severities.
|
|
366
|
+
*
|
|
367
|
+
* @see {@link Severity} for the concrete message severity type that excludes `All` and `None`
|
|
368
|
+
* @see {@link Order} for comparing these levels by severity order
|
|
369
|
+
*
|
|
370
|
+
* @category models
|
|
371
|
+
* @since 4.0.0
|
|
372
|
+
*/
|
|
373
|
+
const values = [
|
|
374
|
+
"All",
|
|
375
|
+
"Fatal",
|
|
376
|
+
"Error",
|
|
377
|
+
"Warn",
|
|
378
|
+
"Info",
|
|
379
|
+
"Debug",
|
|
380
|
+
"Trace",
|
|
381
|
+
"None"
|
|
382
|
+
];
|
|
383
|
+
//#endregion
|
|
384
|
+
//#region ../../node_modules/.pnpm/effect@4.0.0-beta.102_patch_10dcca2e28a1e6c67a3825e6da1ff253/node_modules/effect/dist/Config.js
|
|
385
|
+
const TypeId = "~effect/Config";
|
|
386
|
+
/**
|
|
387
|
+
* Returns `true` if `u` is a `Config` instance.
|
|
388
|
+
*
|
|
389
|
+
* **When to use**
|
|
390
|
+
*
|
|
391
|
+
* Use when you need to distinguish a `Config` from an unknown value before
|
|
392
|
+
* calling `.parse` or {@link unwrap}.
|
|
393
|
+
*
|
|
394
|
+
* **Example** (Checking Config values)
|
|
395
|
+
*
|
|
396
|
+
* ```ts
|
|
397
|
+
* import { Config } from "effect"
|
|
398
|
+
*
|
|
399
|
+
* console.log(Config.isConfig(Config.string("HOST"))) // true
|
|
400
|
+
* console.log(Config.isConfig("not a config")) // false
|
|
401
|
+
* ```
|
|
402
|
+
*
|
|
403
|
+
* @category guards
|
|
404
|
+
* @since 2.0.0
|
|
405
|
+
*/
|
|
406
|
+
const isConfig = (u) => hasProperty(u, TypeId);
|
|
407
|
+
/**
|
|
408
|
+
* Represents the error type produced when config loading or validation fails.
|
|
409
|
+
*
|
|
410
|
+
* **When to use**
|
|
411
|
+
*
|
|
412
|
+
* Use when you need to inspect config loading or validation failures.
|
|
413
|
+
*
|
|
414
|
+
* **Details**
|
|
415
|
+
*
|
|
416
|
+
* Wraps either:
|
|
417
|
+
* - A `SourceError` — the provider could not read data (I/O failure).
|
|
418
|
+
* - A `SchemaError` — the data was found but did not match the schema
|
|
419
|
+
* (wrong type, out of range, missing key, etc.).
|
|
420
|
+
*
|
|
421
|
+
* @see {@link orElse} – recover from a ConfigError
|
|
422
|
+
* @see {@link withDefault} – provide a fallback for missing-data errors
|
|
423
|
+
*
|
|
424
|
+
* @category errors
|
|
425
|
+
* @since 4.0.0
|
|
426
|
+
*/
|
|
427
|
+
var ConfigError = class {
|
|
428
|
+
_tag = "ConfigError";
|
|
429
|
+
name = "ConfigError";
|
|
430
|
+
cause;
|
|
431
|
+
constructor(cause) {
|
|
432
|
+
this.cause = cause;
|
|
433
|
+
}
|
|
434
|
+
get message() {
|
|
435
|
+
return this.cause.toString();
|
|
436
|
+
}
|
|
437
|
+
toString() {
|
|
438
|
+
return `ConfigError(${this.message})`;
|
|
439
|
+
}
|
|
440
|
+
};
|
|
441
|
+
const Proto = {
|
|
442
|
+
.../*#__PURE__*/ Prototype({
|
|
443
|
+
label: "Config",
|
|
444
|
+
evaluate(fiber) {
|
|
445
|
+
return this.parse(fiber.getRef(ConfigProvider));
|
|
446
|
+
}
|
|
447
|
+
}),
|
|
448
|
+
[TypeId]: TypeId,
|
|
449
|
+
toJSON() {
|
|
450
|
+
return { _id: "Config" };
|
|
451
|
+
}
|
|
452
|
+
};
|
|
453
|
+
function make(parse) {
|
|
454
|
+
const self = Object.create(Proto);
|
|
455
|
+
self.parse = (provider, pathPrefix = []) => parse(provider, pathPrefix);
|
|
456
|
+
return self;
|
|
457
|
+
}
|
|
458
|
+
/**
|
|
459
|
+
* Transforms the parsed value of a config with a pure function.
|
|
460
|
+
*
|
|
461
|
+
* **When to use**
|
|
462
|
+
*
|
|
463
|
+
* Use when you need to transform a parsed config value with a function that
|
|
464
|
+
* cannot fail.
|
|
465
|
+
*
|
|
466
|
+
* **Example** (Uppercasing a string config)
|
|
467
|
+
*
|
|
468
|
+
* ```ts
|
|
469
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
470
|
+
*
|
|
471
|
+
* const upper = Config.string("name").pipe(
|
|
472
|
+
* Config.map((s) => s.toUpperCase())
|
|
473
|
+
* )
|
|
474
|
+
*
|
|
475
|
+
* const provider = ConfigProvider.fromUnknown({ name: "alice" })
|
|
476
|
+
* // Effect.runSync(upper.parse(provider)) // "ALICE"
|
|
477
|
+
* ```
|
|
478
|
+
*
|
|
479
|
+
* @see {@link mapOrFail} – when the transformation can fail
|
|
480
|
+
*
|
|
481
|
+
* @category mapping
|
|
482
|
+
* @since 2.0.0
|
|
483
|
+
*/
|
|
484
|
+
const map = /*#__PURE__*/ dual(2, (self, f) => {
|
|
485
|
+
return make((provider, pathPrefix) => map$1(self.parse(provider, pathPrefix), f));
|
|
486
|
+
});
|
|
487
|
+
/**
|
|
488
|
+
* Transforms the parsed value with a function that may fail.
|
|
489
|
+
*
|
|
490
|
+
* **When to use**
|
|
491
|
+
*
|
|
492
|
+
* Use when you need to transform a parsed config value with a function that can
|
|
493
|
+
* produce a `ConfigError` (e.g. parsing a URL, checking a range).
|
|
494
|
+
*
|
|
495
|
+
* **Example** (Wrapping a value in an effectful transformation)
|
|
496
|
+
*
|
|
497
|
+
* ```ts
|
|
498
|
+
* import { Config, Effect } from "effect"
|
|
499
|
+
*
|
|
500
|
+
* const trimmed = Config.string("name").pipe(
|
|
501
|
+
* Config.mapOrFail((s) => Effect.succeed(s.trim()))
|
|
502
|
+
* )
|
|
503
|
+
* ```
|
|
504
|
+
*
|
|
505
|
+
* @see {@link map} – when the transformation cannot fail
|
|
506
|
+
*
|
|
507
|
+
* @category mapping
|
|
508
|
+
* @since 2.0.0
|
|
509
|
+
*/
|
|
510
|
+
const mapOrFail = /*#__PURE__*/ dual(2, (self, f) => {
|
|
511
|
+
return make((provider, pathPrefix) => flatMap(self.parse(provider, pathPrefix), f));
|
|
512
|
+
});
|
|
513
|
+
/**
|
|
514
|
+
* Provides a fallback config when parsing fails with a `ConfigError`.
|
|
515
|
+
*
|
|
516
|
+
* **When to use**
|
|
517
|
+
*
|
|
518
|
+
* Use when you need to try an alternative config source after the primary one
|
|
519
|
+
* fails.
|
|
520
|
+
*
|
|
521
|
+
* **Details**
|
|
522
|
+
*
|
|
523
|
+
* Unlike {@link withDefault}, this catches **all** `ConfigError`s (not just
|
|
524
|
+
* missing data). The fallback function receives the error and returns a new
|
|
525
|
+
* `Config`.
|
|
526
|
+
*
|
|
527
|
+
* **Example** (Falling back to a literal)
|
|
528
|
+
*
|
|
529
|
+
* ```ts
|
|
530
|
+
* import { Config } from "effect"
|
|
531
|
+
*
|
|
532
|
+
* const hostConfig = Config.string("HOST").pipe(
|
|
533
|
+
* Config.orElse(() => Config.succeed("localhost"))
|
|
534
|
+
* )
|
|
535
|
+
* ```
|
|
536
|
+
*
|
|
537
|
+
* @see {@link withDefault} – fallback only on missing data
|
|
538
|
+
*
|
|
539
|
+
* @category combinators
|
|
540
|
+
* @since 2.0.0
|
|
541
|
+
*/
|
|
542
|
+
const orElse = /*#__PURE__*/ dual(2, (self, that) => {
|
|
543
|
+
return make((provider, pathPrefix) => catch_(self.parse(provider, pathPrefix), (error) => that(error).parse(provider, pathPrefix)));
|
|
544
|
+
});
|
|
545
|
+
/**
|
|
546
|
+
* Combines multiple configs into a single config that parses all of them.
|
|
547
|
+
*
|
|
548
|
+
* **When to use**
|
|
549
|
+
*
|
|
550
|
+
* Use when you need to group related configs into a tuple or named struct.
|
|
551
|
+
*
|
|
552
|
+
* **Details**
|
|
553
|
+
*
|
|
554
|
+
* Accepts a tuple (preserves positions), an iterable, or a record of configs.
|
|
555
|
+
* Returns a config whose parsed value mirrors the input shape.
|
|
556
|
+
*
|
|
557
|
+
* **Example** (Combining configs as a struct)
|
|
558
|
+
*
|
|
559
|
+
* ```ts
|
|
560
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
561
|
+
*
|
|
562
|
+
* const dbConfig = Config.all({
|
|
563
|
+
* host: Config.string("host"),
|
|
564
|
+
* port: Config.number("port")
|
|
565
|
+
* })
|
|
566
|
+
*
|
|
567
|
+
* const provider = ConfigProvider.fromUnknown({ host: "localhost", port: 5432 })
|
|
568
|
+
* // Effect.runSync(dbConfig.parse(provider))
|
|
569
|
+
* // { host: "localhost", port: 5432 }
|
|
570
|
+
* ```
|
|
571
|
+
*
|
|
572
|
+
* @category combinators
|
|
573
|
+
* @since 2.0.0
|
|
574
|
+
*/
|
|
575
|
+
function all(arg) {
|
|
576
|
+
const configs = Array.isArray(arg) ? arg : Symbol.iterator in arg ? [...arg] : arg;
|
|
577
|
+
if (Array.isArray(configs)) return make((provider, pathPrefix) => all$1(configs.map((config) => config.parse(provider, pathPrefix))));
|
|
578
|
+
else return make((provider, pathPrefix) => all$1(map$2(configs, (config) => config.parse(provider, pathPrefix))));
|
|
579
|
+
}
|
|
580
|
+
function isMissingDataOnly(issue) {
|
|
581
|
+
switch (issue._tag) {
|
|
582
|
+
case "MissingKey": return true;
|
|
583
|
+
case "InvalidType":
|
|
584
|
+
case "InvalidValue": return isNone(issue.actual) || isSome(issue.actual) && issue.actual.value === void 0;
|
|
585
|
+
case "OneOf": return issue.actual === void 0;
|
|
586
|
+
case "Encoding": return isNone(issue.actual) || isSome(issue.actual) && issue.actual.value === void 0 ? true : isMissingDataOnly(issue.issue);
|
|
587
|
+
case "Pointer": return isMissingDataOnly(issue.issue);
|
|
588
|
+
case "Filter":
|
|
589
|
+
case "UnexpectedKey":
|
|
590
|
+
case "Forbidden": return false;
|
|
591
|
+
case "Composite": return issue.issues.every(isMissingDataOnly);
|
|
592
|
+
case "AnyOf":
|
|
593
|
+
if (issue.issues.length === 0) return issue.actual === void 0;
|
|
594
|
+
return issue.issues.every(isMissingDataOnly);
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* Provides a fallback value when the config fails due to missing data.
|
|
599
|
+
*
|
|
600
|
+
* **When to use**
|
|
601
|
+
*
|
|
602
|
+
* Use when you need to make a config key optional with a sensible default.
|
|
603
|
+
*
|
|
604
|
+
* **Gotchas**
|
|
605
|
+
*
|
|
606
|
+
* Only applies when the error is a `SchemaError` caused exclusively by
|
|
607
|
+
* missing data (missing keys, undefined values). Validation errors (wrong
|
|
608
|
+
* type, out of range) still propagate.
|
|
609
|
+
*
|
|
610
|
+
* **Example** (Defaulting a missing port)
|
|
611
|
+
*
|
|
612
|
+
* ```ts
|
|
613
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
614
|
+
*
|
|
615
|
+
* const port = Config.number("port").pipe(Config.withDefault(3000))
|
|
616
|
+
*
|
|
617
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
618
|
+
* // Effect.runSync(port.parse(provider)) // 3000
|
|
619
|
+
* ```
|
|
620
|
+
*
|
|
621
|
+
* @see {@link option} – returns `Option` instead of a default value
|
|
622
|
+
* @see {@link orElse} – catches all errors, not just missing data
|
|
623
|
+
*
|
|
624
|
+
* @category combinators
|
|
625
|
+
* @since 2.0.0
|
|
626
|
+
*/
|
|
627
|
+
const withDefault = /*#__PURE__*/ dual(2, (self, defaultValue) => {
|
|
628
|
+
return orElse(self, (err) => {
|
|
629
|
+
if (isSchemaError(err.cause)) {
|
|
630
|
+
const issue = err.cause.issue;
|
|
631
|
+
if (isMissingDataOnly(issue)) return succeed(defaultValue);
|
|
632
|
+
}
|
|
633
|
+
return fail(err.cause);
|
|
634
|
+
});
|
|
635
|
+
});
|
|
636
|
+
/**
|
|
637
|
+
* Makes a config optional: returns `Some(value)` on success and `None` when
|
|
638
|
+
* data is missing.
|
|
639
|
+
*
|
|
640
|
+
* **When to use**
|
|
641
|
+
*
|
|
642
|
+
* Use when you need to handle a config key that may or may not be present.
|
|
643
|
+
*
|
|
644
|
+
* **Gotchas**
|
|
645
|
+
*
|
|
646
|
+
* Like {@link withDefault}, only missing-data errors produce `None`.
|
|
647
|
+
* Validation errors still propagate.
|
|
648
|
+
*
|
|
649
|
+
* **Example** (Reading optional config)
|
|
650
|
+
*
|
|
651
|
+
* ```ts
|
|
652
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
653
|
+
*
|
|
654
|
+
* const maybePort = Config.option(Config.number("port"))
|
|
655
|
+
*
|
|
656
|
+
* const provider = ConfigProvider.fromUnknown({})
|
|
657
|
+
* // Effect.runSync(maybePort.parse(provider)) // { _tag: "None" }
|
|
658
|
+
* ```
|
|
659
|
+
*
|
|
660
|
+
* @see {@link withDefault} – provide a concrete fallback value instead
|
|
661
|
+
*
|
|
662
|
+
* @category combinators
|
|
663
|
+
* @since 2.0.0
|
|
664
|
+
*/
|
|
665
|
+
const option = (self) => self.pipe(map(some), withDefault(none()));
|
|
666
|
+
/**
|
|
667
|
+
* Constructs a `Config<T>` from a value matching `Wrap<T>`.
|
|
668
|
+
*
|
|
669
|
+
* **When to use**
|
|
670
|
+
*
|
|
671
|
+
* Use when accepting config from callers who may pass either a single `Config` or a
|
|
672
|
+
* record of individual `Config`s.
|
|
673
|
+
*
|
|
674
|
+
* **Details**
|
|
675
|
+
*
|
|
676
|
+
* If the input is already a `Config`, it is returned as-is. Otherwise, each
|
|
677
|
+
* key is recursively unwrapped and combined.
|
|
678
|
+
*
|
|
679
|
+
* **Example** (Unwrapping a record of configs)
|
|
680
|
+
*
|
|
681
|
+
* ```ts
|
|
682
|
+
* import { Config } from "effect"
|
|
683
|
+
*
|
|
684
|
+
* interface Options {
|
|
685
|
+
* key: string
|
|
686
|
+
* }
|
|
687
|
+
*
|
|
688
|
+
* const makeConfig = (config: Config.Wrap<Options>): Config.Config<Options> =>
|
|
689
|
+
* Config.unwrap(config)
|
|
690
|
+
* ```
|
|
691
|
+
*
|
|
692
|
+
* @see {@link Wrap} – the utility type accepted by this function
|
|
693
|
+
*
|
|
694
|
+
* @category Wrap
|
|
695
|
+
* @since 2.0.0
|
|
696
|
+
*/
|
|
697
|
+
const unwrap = (wrapped) => {
|
|
698
|
+
if (isConfig(wrapped)) return wrapped;
|
|
699
|
+
return make((provider, pathPrefix) => {
|
|
700
|
+
return all$1(Object.entries(wrapped).map(([key, config]) => unwrap(config).parse(provider, pathPrefix).pipe(map$1((value) => [key, value])))).pipe(map$1(Object.fromEntries));
|
|
701
|
+
});
|
|
702
|
+
};
|
|
703
|
+
const dump = /*#__PURE__*/ fnUntraced(function* (provider, path) {
|
|
704
|
+
const stat = yield* provider.load(path);
|
|
705
|
+
if (stat === void 0) return void 0;
|
|
706
|
+
switch (stat._tag) {
|
|
707
|
+
case "Value": return stat.value;
|
|
708
|
+
case "Record": {
|
|
709
|
+
if (stat.value !== void 0) return stat.value;
|
|
710
|
+
const out = {};
|
|
711
|
+
for (const key of stat.keys) {
|
|
712
|
+
const child = yield* dump(provider, [...path, key]);
|
|
713
|
+
if (child !== void 0) assignProperty(out, key, child);
|
|
714
|
+
}
|
|
715
|
+
return out;
|
|
716
|
+
}
|
|
717
|
+
case "Array": {
|
|
718
|
+
if (stat.value !== void 0) return stat.value;
|
|
719
|
+
const out = [];
|
|
720
|
+
for (let i = 0; i < stat.length; i++) out.push(yield* dump(provider, [...path, i]));
|
|
721
|
+
return out;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
});
|
|
725
|
+
const recur = /*#__PURE__*/ fnUntraced(function* (ast, provider, path) {
|
|
726
|
+
switch (ast._tag) {
|
|
727
|
+
case "Objects": {
|
|
728
|
+
const stat = yield* provider.load(path);
|
|
729
|
+
if (stat === void 0 && path.length > 0) return void 0;
|
|
730
|
+
const out = {};
|
|
731
|
+
for (const ps of ast.propertySignatures) {
|
|
732
|
+
const name = ps.name;
|
|
733
|
+
if (typeof name === "string") {
|
|
734
|
+
const value = yield* recur(ps.type, provider, [...path, name]);
|
|
735
|
+
if (value !== void 0) assignProperty(out, name, value);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
if (ast.indexSignatures.length > 0) {
|
|
739
|
+
if (stat && stat._tag === "Record") for (const is of ast.indexSignatures) {
|
|
740
|
+
const matches = _is(is.parameter);
|
|
741
|
+
for (const key of stat.keys) if (!Object.hasOwn(out, key) && matches(key)) {
|
|
742
|
+
const value = yield* recur(is.type, provider, [...path, key]);
|
|
743
|
+
if (value !== void 0) assignProperty(out, key, value);
|
|
744
|
+
}
|
|
745
|
+
}
|
|
746
|
+
}
|
|
747
|
+
return out;
|
|
748
|
+
}
|
|
749
|
+
case "Arrays": {
|
|
750
|
+
const stat = yield* provider.load(path);
|
|
751
|
+
if (stat === void 0) return void 0;
|
|
752
|
+
if (stat && stat._tag === "Value") return stat.value === "" ? [] : stat.value.split(",");
|
|
753
|
+
if (stat && stat._tag === "Array" && stat.value !== void 0) return stat.value === "" ? [] : stat.value.split(",");
|
|
754
|
+
const out = [];
|
|
755
|
+
const length = stat && stat._tag === "Array" ? stat.length : ast.elements.length;
|
|
756
|
+
for (let i = 0; i < length; i++) {
|
|
757
|
+
const element = ast.elements[i] ?? ast.rest[0];
|
|
758
|
+
if (element !== void 0) out.push(yield* recur(element, provider, [...path, i]));
|
|
759
|
+
}
|
|
760
|
+
return out;
|
|
761
|
+
}
|
|
762
|
+
case "Union": return yield* dump(provider, path);
|
|
763
|
+
case "Suspend": return yield* recur(ast.thunk(), provider, path);
|
|
764
|
+
default: {
|
|
765
|
+
const stat = yield* provider.load(path);
|
|
766
|
+
if (stat === void 0) return void 0;
|
|
767
|
+
if (stat._tag === "Value") return stat.value;
|
|
768
|
+
if (stat._tag === "Record" && stat.value !== void 0) return stat.value;
|
|
769
|
+
if (stat._tag === "Array" && stat.value !== void 0) return stat.value;
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
}
|
|
773
|
+
});
|
|
774
|
+
/**
|
|
775
|
+
* Creates a `Config<T>` from a `Schema.Codec`.
|
|
776
|
+
*
|
|
777
|
+
* **When to use**
|
|
778
|
+
*
|
|
779
|
+
* Use when you need to read structured or schema-validated configuration.
|
|
780
|
+
*
|
|
781
|
+
* **Details**
|
|
782
|
+
*
|
|
783
|
+
* The optional `path` sets the local path segment(s) for the config lookup.
|
|
784
|
+
* It is appended to the logical path prefix accumulated from outer
|
|
785
|
+
* {@link nested} calls. Pass a single string for a flat key or an array for
|
|
786
|
+
* nested paths.
|
|
787
|
+
*
|
|
788
|
+
* Convenience constructors such as `string`, `number`, and `boolean` delegate
|
|
789
|
+
* to this API.
|
|
790
|
+
*
|
|
791
|
+
* The codec is used to decode the raw `StringTree` produced by the provider
|
|
792
|
+
* into `T`. Schema validation errors are wrapped in `ConfigError`.
|
|
793
|
+
*
|
|
794
|
+
* **Example** (Reading a structured config)
|
|
795
|
+
*
|
|
796
|
+
* ```ts
|
|
797
|
+
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
798
|
+
*
|
|
799
|
+
* const DbConfig = Config.schema(
|
|
800
|
+
* Schema.Struct({
|
|
801
|
+
* host: Schema.String,
|
|
802
|
+
* port: Schema.Int
|
|
803
|
+
* }),
|
|
804
|
+
* "db"
|
|
805
|
+
* )
|
|
806
|
+
*
|
|
807
|
+
* const provider = ConfigProvider.fromUnknown({
|
|
808
|
+
* db: { host: "localhost", port: 5432 }
|
|
809
|
+
* })
|
|
810
|
+
*
|
|
811
|
+
* // Effect.runSync(DbConfig.parse(provider))
|
|
812
|
+
* // { host: "localhost", port: 5432 }
|
|
813
|
+
* ```
|
|
814
|
+
*
|
|
815
|
+
* @see {@link string} / {@link number} / {@link boolean} – shortcuts for
|
|
816
|
+
* single-value configs
|
|
817
|
+
*
|
|
818
|
+
* @category schemas
|
|
819
|
+
* @since 4.0.0
|
|
820
|
+
*/
|
|
821
|
+
function schema(codec, path) {
|
|
822
|
+
const codecStringTree = toCodecStringTree(codec);
|
|
823
|
+
const decodeUnknownEffect$1 = decodeUnknownEffect(codecStringTree);
|
|
824
|
+
const codecStringTreeEncoded = toEncoded(codecStringTree.ast);
|
|
825
|
+
const localPath = typeof path === "string" ? [path] : path ?? [];
|
|
826
|
+
return make((provider, pathPrefix) => {
|
|
827
|
+
const fullPath = [...pathPrefix, ...localPath];
|
|
828
|
+
return recur(codecStringTreeEncoded, provider, fullPath).pipe(flatMapEager((tree) => decodeUnknownEffect$1(tree).pipe(mapErrorEager((issue) => new SchemaError(fullPath.length > 0 ? new Pointer(fullPath, issue) : issue)))), mapErrorEager((cause) => new ConfigError(cause)));
|
|
829
|
+
});
|
|
830
|
+
}
|
|
831
|
+
/** @internal */
|
|
832
|
+
const TrueValues = /*#__PURE__*/ Literals([
|
|
833
|
+
"true",
|
|
834
|
+
"yes",
|
|
835
|
+
"on",
|
|
836
|
+
"1",
|
|
837
|
+
"y"
|
|
838
|
+
]);
|
|
839
|
+
/** @internal */
|
|
840
|
+
const FalseValues = /*#__PURE__*/ Literals([
|
|
841
|
+
"false",
|
|
842
|
+
"no",
|
|
843
|
+
"off",
|
|
844
|
+
"0",
|
|
845
|
+
"n"
|
|
846
|
+
]);
|
|
847
|
+
/**
|
|
848
|
+
* Schema for boolean values encoded as strings.
|
|
849
|
+
*
|
|
850
|
+
* **When to use**
|
|
851
|
+
*
|
|
852
|
+
* Use when you need the reusable boolean schema value for `Config.schema` with
|
|
853
|
+
* custom paths.
|
|
854
|
+
*
|
|
855
|
+
* **Details**
|
|
856
|
+
*
|
|
857
|
+
* Accepted string values: `true`, `false`, `yes`, `no`, `on`, `off`, `1`,
|
|
858
|
+
* `0`, `y`, `n` (case-sensitive).
|
|
859
|
+
*
|
|
860
|
+
* @see {@link boolean} – convenience constructor
|
|
861
|
+
*
|
|
862
|
+
* @category schemas
|
|
863
|
+
* @since 4.0.0
|
|
864
|
+
*/
|
|
865
|
+
const Boolean = /*#__PURE__*/ Literals([...TrueValues.literals, ...FalseValues.literals]).pipe(/*#__PURE__*/ decodeTo(Boolean$1, /*#__PURE__*/ transform({
|
|
866
|
+
decode: (value) => value === "true" || value === "yes" || value === "on" || value === "1" || value === "y",
|
|
867
|
+
encode: (value) => value ? "true" : "false"
|
|
868
|
+
})));
|
|
869
|
+
/**
|
|
870
|
+
* Schema for port numbers (integers in 1–65535).
|
|
871
|
+
*
|
|
872
|
+
* **When to use**
|
|
873
|
+
*
|
|
874
|
+
* Use when you need the reusable port schema value for `Config.schema` with
|
|
875
|
+
* custom paths.
|
|
876
|
+
*
|
|
877
|
+
* @see {@link port} – convenience constructor
|
|
878
|
+
*
|
|
879
|
+
* @category schemas
|
|
880
|
+
* @since 4.0.0
|
|
881
|
+
*/
|
|
882
|
+
const Port = /*#__PURE__*/ Int.check(/*#__PURE__*/ isBetween({
|
|
883
|
+
minimum: 1,
|
|
884
|
+
maximum: 65535
|
|
885
|
+
}));
|
|
886
|
+
/**
|
|
887
|
+
* Schema for `LogLevel` string literals.
|
|
888
|
+
*
|
|
889
|
+
* **When to use**
|
|
890
|
+
*
|
|
891
|
+
* Use when you need the reusable log-level schema value for `Config.schema`
|
|
892
|
+
* with custom paths.
|
|
893
|
+
*
|
|
894
|
+
* **Details**
|
|
895
|
+
*
|
|
896
|
+
* Accepted values: `"All"`, `"Fatal"`, `"Error"`, `"Warn"`, `"Info"`,
|
|
897
|
+
* `"Debug"`, `"Trace"`, `"None"`.
|
|
898
|
+
*
|
|
899
|
+
* @see {@link logLevel} – convenience constructor
|
|
900
|
+
*
|
|
901
|
+
* @category schemas
|
|
902
|
+
* @since 4.0.0
|
|
903
|
+
*/
|
|
904
|
+
const LogLevel = /*#__PURE__*/ Literals(values);
|
|
905
|
+
/**
|
|
906
|
+
* Schema for key-value record types that can also be parsed from
|
|
907
|
+
* a flat comma-separated string.
|
|
908
|
+
*
|
|
909
|
+
* **When to use**
|
|
910
|
+
*
|
|
911
|
+
* Use when reading key-value maps from a single env var (e.g. OpenTelemetry
|
|
912
|
+
* resource attributes).
|
|
913
|
+
*
|
|
914
|
+
* **Details**
|
|
915
|
+
*
|
|
916
|
+
* Accepts either a JSON-like record from the provider or a flat string like
|
|
917
|
+
* `"key1=val1,key2=val2"`. The `separator` (default `","`) and
|
|
918
|
+
* `keyValueSeparator` (default `"="`) can be customized.
|
|
919
|
+
*
|
|
920
|
+
* **Example** (Parsing a comma-separated record)
|
|
921
|
+
*
|
|
922
|
+
* ```ts
|
|
923
|
+
* import { Config, ConfigProvider, Effect, Schema } from "effect"
|
|
924
|
+
*
|
|
925
|
+
* const schema = Config.Record(Schema.String, Schema.String)
|
|
926
|
+
* const config = Config.schema(schema, "OTEL_RESOURCE_ATTRIBUTES")
|
|
927
|
+
*
|
|
928
|
+
* const provider = ConfigProvider.fromEnv({
|
|
929
|
+
* env: {
|
|
930
|
+
* OTEL_RESOURCE_ATTRIBUTES:
|
|
931
|
+
* "service.name=my-service,service.version=1.0.0,custom.attribute=value"
|
|
932
|
+
* }
|
|
933
|
+
* })
|
|
934
|
+
*
|
|
935
|
+
* console.dir(Effect.runSync(config.parse(provider)))
|
|
936
|
+
* // {
|
|
937
|
+
* // 'service.name': 'my-service',
|
|
938
|
+
* // 'service.version': '1.0.0',
|
|
939
|
+
* // 'custom.attribute': 'value'
|
|
940
|
+
* // }
|
|
941
|
+
* ```
|
|
942
|
+
*
|
|
943
|
+
* @category schemas
|
|
944
|
+
* @since 4.0.0
|
|
945
|
+
*/
|
|
946
|
+
const Record = (key, value, options) => {
|
|
947
|
+
const record = Record$1(key, value);
|
|
948
|
+
return Union([record, String$1.pipe(decodeTo(Record$1(String$1, String$1), splitKeyValue(options)), decodeTo(record))]);
|
|
949
|
+
};
|
|
950
|
+
/**
|
|
951
|
+
* Creates a config that always fails with the given error.
|
|
952
|
+
*
|
|
953
|
+
* **When to use**
|
|
954
|
+
*
|
|
955
|
+
* Use when you need to re-raise a specific config error, such as inside
|
|
956
|
+
* {@link orElse}.
|
|
957
|
+
*
|
|
958
|
+
* @category constructors
|
|
959
|
+
* @since 2.0.0
|
|
960
|
+
*/
|
|
961
|
+
function fail(err) {
|
|
962
|
+
return make(() => fail$1(new ConfigError(err)));
|
|
963
|
+
}
|
|
964
|
+
/**
|
|
965
|
+
* Creates a config that always succeeds with the given value, ignoring the
|
|
966
|
+
* provider entirely.
|
|
967
|
+
*
|
|
968
|
+
* **When to use**
|
|
969
|
+
*
|
|
970
|
+
* Use when you need a hardcoded config value, such as inside {@link orElse} or
|
|
971
|
+
* tests.
|
|
972
|
+
*
|
|
973
|
+
* **Example** (Returning a constant fallback)
|
|
974
|
+
*
|
|
975
|
+
* ```ts
|
|
976
|
+
* import { Config } from "effect"
|
|
977
|
+
*
|
|
978
|
+
* const host = Config.string("HOST").pipe(
|
|
979
|
+
* Config.orElse(() => Config.succeed("localhost"))
|
|
980
|
+
* )
|
|
981
|
+
* ```
|
|
982
|
+
*
|
|
983
|
+
* @category constructors
|
|
984
|
+
* @since 2.0.0
|
|
985
|
+
*/
|
|
986
|
+
function succeed(value) {
|
|
987
|
+
return make(() => succeed$1(value));
|
|
988
|
+
}
|
|
989
|
+
/**
|
|
990
|
+
* Creates a config for a single string value.
|
|
991
|
+
*
|
|
992
|
+
* **When to use**
|
|
993
|
+
*
|
|
994
|
+
* Use when reading a single string env var or config key.
|
|
995
|
+
*
|
|
996
|
+
* **Details**
|
|
997
|
+
*
|
|
998
|
+
* Shortcut for `Config.schema(Schema.String, name)`.
|
|
999
|
+
*
|
|
1000
|
+
* **Example** (Reading a string config)
|
|
1001
|
+
*
|
|
1002
|
+
* ```ts
|
|
1003
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1004
|
+
*
|
|
1005
|
+
* const host = Config.string("HOST")
|
|
1006
|
+
*
|
|
1007
|
+
* const provider = ConfigProvider.fromUnknown({ HOST: "localhost" })
|
|
1008
|
+
* // Effect.runSync(host.parse(provider)) // "localhost"
|
|
1009
|
+
* ```
|
|
1010
|
+
*
|
|
1011
|
+
* @see {@link nonEmptyString} – rejects empty strings
|
|
1012
|
+
* @see {@link schema} – for more complex types
|
|
1013
|
+
*
|
|
1014
|
+
* @category constructors
|
|
1015
|
+
* @since 2.0.0
|
|
1016
|
+
*/
|
|
1017
|
+
function string(name) {
|
|
1018
|
+
return schema(String$1, name);
|
|
1019
|
+
}
|
|
1020
|
+
/**
|
|
1021
|
+
* Creates a config for a non-empty string value. Fails if the value is an
|
|
1022
|
+
* empty string.
|
|
1023
|
+
*
|
|
1024
|
+
* **When to use**
|
|
1025
|
+
*
|
|
1026
|
+
* Use to read a string config value that must contain at least one character.
|
|
1027
|
+
*
|
|
1028
|
+
* **Details**
|
|
1029
|
+
*
|
|
1030
|
+
* Shortcut for `Config.schema(Schema.NonEmptyString, name)`.
|
|
1031
|
+
*
|
|
1032
|
+
* @see {@link string} for allowing empty strings
|
|
1033
|
+
*
|
|
1034
|
+
* @category constructors
|
|
1035
|
+
* @since 3.7.0
|
|
1036
|
+
*/
|
|
1037
|
+
function nonEmptyString(name) {
|
|
1038
|
+
return schema(NonEmptyString, name);
|
|
1039
|
+
}
|
|
1040
|
+
/**
|
|
1041
|
+
* Creates a config for a numeric value (including `NaN`, `Infinity`).
|
|
1042
|
+
*
|
|
1043
|
+
* **When to use**
|
|
1044
|
+
*
|
|
1045
|
+
* Use when you need config input to accept JavaScript's full number domain,
|
|
1046
|
+
* including NaN and infinities, rather than reject non-finite values.
|
|
1047
|
+
*
|
|
1048
|
+
* **Details**
|
|
1049
|
+
*
|
|
1050
|
+
* Shortcut for `Config.schema(Schema.Number, name)`.
|
|
1051
|
+
*
|
|
1052
|
+
* @see {@link finite} for rejecting `NaN` and `Infinity`
|
|
1053
|
+
* @see {@link int} for accepting only integers
|
|
1054
|
+
*
|
|
1055
|
+
* @category constructors
|
|
1056
|
+
* @since 2.0.0
|
|
1057
|
+
*/
|
|
1058
|
+
function number(name) {
|
|
1059
|
+
return schema(Number$1, name);
|
|
1060
|
+
}
|
|
1061
|
+
/**
|
|
1062
|
+
* Creates a config for an integer value. Rejects floats.
|
|
1063
|
+
*
|
|
1064
|
+
* **When to use**
|
|
1065
|
+
*
|
|
1066
|
+
* Use to read a numeric config value that must be an integer.
|
|
1067
|
+
*
|
|
1068
|
+
* **Details**
|
|
1069
|
+
*
|
|
1070
|
+
* Shortcut for `Config.schema(Schema.Int, name)`.
|
|
1071
|
+
*
|
|
1072
|
+
* @see {@link number} for accepting any number
|
|
1073
|
+
* @see {@link port} for accepting only integers in `1` through `65535`
|
|
1074
|
+
*
|
|
1075
|
+
* @category constructors
|
|
1076
|
+
* @since 4.0.0
|
|
1077
|
+
*/
|
|
1078
|
+
function int(name) {
|
|
1079
|
+
return schema(Int, name);
|
|
1080
|
+
}
|
|
1081
|
+
/**
|
|
1082
|
+
* Creates a config for a boolean value parsed from common string
|
|
1083
|
+
* representations.
|
|
1084
|
+
*
|
|
1085
|
+
* **When to use**
|
|
1086
|
+
*
|
|
1087
|
+
* Use to read boolean flags from string-like config sources.
|
|
1088
|
+
*
|
|
1089
|
+
* **Details**
|
|
1090
|
+
*
|
|
1091
|
+
* Shortcut for `Config.schema(Config.Boolean, name)`.
|
|
1092
|
+
*
|
|
1093
|
+
* Accepted values: `true`, `false`, `yes`, `no`, `on`, `off`, `1`, `0`,
|
|
1094
|
+
* `y`, `n`.
|
|
1095
|
+
*
|
|
1096
|
+
* **Example** (Reading a boolean flag)
|
|
1097
|
+
*
|
|
1098
|
+
* ```ts
|
|
1099
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1100
|
+
*
|
|
1101
|
+
* const program = Effect.gen(function*() {
|
|
1102
|
+
* const flag = yield* Config.boolean("FEATURE_FLAG")
|
|
1103
|
+
* console.log(flag)
|
|
1104
|
+
* })
|
|
1105
|
+
*
|
|
1106
|
+
* const provider = ConfigProvider.fromEnv({
|
|
1107
|
+
* env: {
|
|
1108
|
+
* FEATURE_FLAG: "yes"
|
|
1109
|
+
* }
|
|
1110
|
+
* })
|
|
1111
|
+
*
|
|
1112
|
+
* Effect.runSync(
|
|
1113
|
+
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1114
|
+
* )
|
|
1115
|
+
* // Output: true
|
|
1116
|
+
* ```
|
|
1117
|
+
*
|
|
1118
|
+
* @see {@link Boolean} for the underlying boolean codec
|
|
1119
|
+
*
|
|
1120
|
+
* @category constructors
|
|
1121
|
+
* @since 2.0.0
|
|
1122
|
+
*/
|
|
1123
|
+
function boolean(name) {
|
|
1124
|
+
return schema(Boolean, name);
|
|
1125
|
+
}
|
|
1126
|
+
/**
|
|
1127
|
+
* Creates a config for a port number (integer in 1–65535).
|
|
1128
|
+
*
|
|
1129
|
+
* **When to use**
|
|
1130
|
+
*
|
|
1131
|
+
* Use to read network port settings that must be valid port numbers.
|
|
1132
|
+
*
|
|
1133
|
+
* **Details**
|
|
1134
|
+
*
|
|
1135
|
+
* Shortcut for `Config.schema(Config.Port, name)`.
|
|
1136
|
+
*
|
|
1137
|
+
* **Example** (Reading a port)
|
|
1138
|
+
*
|
|
1139
|
+
* ```ts
|
|
1140
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1141
|
+
*
|
|
1142
|
+
* const program = Effect.gen(function*() {
|
|
1143
|
+
* const port = yield* Config.port("PORT")
|
|
1144
|
+
* console.log(port)
|
|
1145
|
+
* })
|
|
1146
|
+
*
|
|
1147
|
+
* const provider = ConfigProvider.fromEnv({
|
|
1148
|
+
* env: {
|
|
1149
|
+
* PORT: "8080"
|
|
1150
|
+
* }
|
|
1151
|
+
* })
|
|
1152
|
+
*
|
|
1153
|
+
* Effect.runSync(
|
|
1154
|
+
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1155
|
+
* )
|
|
1156
|
+
* // Output: 8080
|
|
1157
|
+
* ```
|
|
1158
|
+
*
|
|
1159
|
+
* @see {@link int} for integer config values outside the port range
|
|
1160
|
+
* @see {@link Port} for the underlying port codec
|
|
1161
|
+
*
|
|
1162
|
+
* @category constructors
|
|
1163
|
+
* @since 3.16.0
|
|
1164
|
+
*/
|
|
1165
|
+
function port(name) {
|
|
1166
|
+
return schema(Port, name);
|
|
1167
|
+
}
|
|
1168
|
+
/**
|
|
1169
|
+
* Creates a config for a log level string.
|
|
1170
|
+
*
|
|
1171
|
+
* **When to use**
|
|
1172
|
+
*
|
|
1173
|
+
* Use to read Effect log-level settings from configuration.
|
|
1174
|
+
*
|
|
1175
|
+
* **Details**
|
|
1176
|
+
*
|
|
1177
|
+
* Shortcut for `Config.schema(Config.LogLevel, name)`.
|
|
1178
|
+
*
|
|
1179
|
+
* Accepted values: `"All"`, `"Fatal"`, `"Error"`, `"Warn"`, `"Info"`,
|
|
1180
|
+
* `"Debug"`, `"Trace"`, `"None"`.
|
|
1181
|
+
*
|
|
1182
|
+
* **Example** (Reading a log level)
|
|
1183
|
+
*
|
|
1184
|
+
* ```ts
|
|
1185
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1186
|
+
*
|
|
1187
|
+
* const program = Effect.gen(function*() {
|
|
1188
|
+
* const logLevel = yield* Config.logLevel("LOG_LEVEL")
|
|
1189
|
+
* console.log(logLevel)
|
|
1190
|
+
* })
|
|
1191
|
+
*
|
|
1192
|
+
* const provider = ConfigProvider.fromEnv({
|
|
1193
|
+
* env: {
|
|
1194
|
+
* LOG_LEVEL: "Info"
|
|
1195
|
+
* }
|
|
1196
|
+
* })
|
|
1197
|
+
*
|
|
1198
|
+
* Effect.runSync(
|
|
1199
|
+
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1200
|
+
* )
|
|
1201
|
+
* // Output: "Info"
|
|
1202
|
+
* ```
|
|
1203
|
+
*
|
|
1204
|
+
* @see {@link LogLevel} for the underlying log-level codec
|
|
1205
|
+
*
|
|
1206
|
+
* @category constructors
|
|
1207
|
+
* @since 2.0.0
|
|
1208
|
+
*/
|
|
1209
|
+
function logLevel(name) {
|
|
1210
|
+
return schema(LogLevel, name);
|
|
1211
|
+
}
|
|
1212
|
+
/**
|
|
1213
|
+
* Creates a config for a `URL` value parsed from a string.
|
|
1214
|
+
*
|
|
1215
|
+
* **When to use**
|
|
1216
|
+
*
|
|
1217
|
+
* Use to read configuration values that must be valid URL strings.
|
|
1218
|
+
*
|
|
1219
|
+
* **Details**
|
|
1220
|
+
*
|
|
1221
|
+
* This is a shortcut for `Config.schema(Schema.URL, name)`.
|
|
1222
|
+
*
|
|
1223
|
+
* **Gotchas**
|
|
1224
|
+
*
|
|
1225
|
+
* Fails if the string cannot be parsed by the `URL` constructor.
|
|
1226
|
+
*
|
|
1227
|
+
* **Example** (Reading a URL)
|
|
1228
|
+
*
|
|
1229
|
+
* ```ts
|
|
1230
|
+
* import { Config, ConfigProvider, Effect } from "effect"
|
|
1231
|
+
*
|
|
1232
|
+
* const program = Effect.gen(function*() {
|
|
1233
|
+
* const url = yield* Config.url("URL")
|
|
1234
|
+
* console.log(url)
|
|
1235
|
+
* })
|
|
1236
|
+
*
|
|
1237
|
+
* const provider = ConfigProvider.fromEnv({
|
|
1238
|
+
* env: {
|
|
1239
|
+
* URL: "https://example.com"
|
|
1240
|
+
* }
|
|
1241
|
+
* })
|
|
1242
|
+
*
|
|
1243
|
+
* Effect.runSync(
|
|
1244
|
+
* program.pipe(Effect.provideService(ConfigProvider.ConfigProvider, provider))
|
|
1245
|
+
* )
|
|
1246
|
+
* // Output:
|
|
1247
|
+
* // URL {
|
|
1248
|
+
* // href: 'https://example.com/',
|
|
1249
|
+
* // origin: 'https://example.com',
|
|
1250
|
+
* // protocol: 'https:',
|
|
1251
|
+
* // username: '',
|
|
1252
|
+
* // password: '',
|
|
1253
|
+
* // host: 'example.com',
|
|
1254
|
+
* // hostname: 'example.com',
|
|
1255
|
+
* // port: '',
|
|
1256
|
+
* // pathname: '/',
|
|
1257
|
+
* // search: '',
|
|
1258
|
+
* // searchParams: URLSearchParams {},
|
|
1259
|
+
* // hash: ''
|
|
1260
|
+
* // }
|
|
1261
|
+
* ```
|
|
1262
|
+
*
|
|
1263
|
+
* @see {@link schema} for decoding configuration values with a custom codec
|
|
1264
|
+
*
|
|
1265
|
+
* @category constructors
|
|
1266
|
+
* @since 3.11.0
|
|
1267
|
+
*/
|
|
1268
|
+
function url(name) {
|
|
1269
|
+
return schema(URL, name);
|
|
1270
|
+
}
|
|
1271
|
+
//#endregion
|
|
1272
|
+
export { SourceError as S, schema as _, TrueValues as a, url as b, int as c, mapOrFail as d, nonEmptyString as f, port as g, orElse as h, Record as i, logLevel as l, option as m, ConfigError as n, all as o, number as p, FalseValues as r, boolean as s, Boolean as t, map as u, string as v, withDefault as x, unwrap as y };
|
|
1273
|
+
|
|
1274
|
+
//# sourceMappingURL=Config-DcF-IZjO.mjs.map
|