elm-pages 3.0.0-beta.2 → 3.0.0-beta.21
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/README.md +10 -1
- package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2479 -1639
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.75364bef27ac5a049b87c3325f846fc6dbda23b8ed7187ed06748b96bb6a50a7.json +1 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/lock +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +38 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +29673 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +1 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +27 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1327 -122
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +15412 -13274
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
- package/generator/dead-code-review/elm.json +8 -6
- package/generator/dead-code-review/node_modules/.package-lock.json +484 -0
- package/generator/dead-code-review/node_modules/ansi-styles/index.d.ts +345 -0
- package/generator/dead-code-review/node_modules/ansi-styles/index.js +163 -0
- package/generator/dead-code-review/node_modules/ansi-styles/license +9 -0
- package/generator/dead-code-review/node_modules/ansi-styles/package.json +56 -0
- package/generator/dead-code-review/node_modules/ansi-styles/readme.md +152 -0
- package/generator/dead-code-review/node_modules/anymatch/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/anymatch/README.md +87 -0
- package/generator/dead-code-review/node_modules/anymatch/index.d.ts +20 -0
- package/generator/dead-code-review/node_modules/anymatch/index.js +104 -0
- package/generator/dead-code-review/node_modules/anymatch/package.json +48 -0
- package/generator/dead-code-review/node_modules/balanced-match/.github/FUNDING.yml +2 -0
- package/generator/dead-code-review/node_modules/balanced-match/LICENSE.md +21 -0
- package/generator/dead-code-review/node_modules/balanced-match/README.md +97 -0
- package/generator/dead-code-review/node_modules/balanced-match/index.js +62 -0
- package/generator/dead-code-review/node_modules/balanced-match/package.json +48 -0
- package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json +260 -0
- package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json.d.ts +3 -0
- package/generator/dead-code-review/node_modules/binary-extensions/index.d.ts +14 -0
- package/generator/dead-code-review/node_modules/binary-extensions/index.js +1 -0
- package/generator/dead-code-review/node_modules/binary-extensions/license +9 -0
- package/generator/dead-code-review/node_modules/binary-extensions/package.json +38 -0
- package/generator/dead-code-review/node_modules/binary-extensions/readme.md +41 -0
- package/generator/dead-code-review/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
- package/generator/dead-code-review/node_modules/brace-expansion/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/brace-expansion/README.md +135 -0
- package/generator/dead-code-review/node_modules/brace-expansion/index.js +203 -0
- package/generator/dead-code-review/node_modules/brace-expansion/package.json +46 -0
- package/generator/dead-code-review/node_modules/braces/CHANGELOG.md +184 -0
- package/generator/dead-code-review/node_modules/braces/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/braces/README.md +593 -0
- package/generator/dead-code-review/node_modules/braces/index.js +170 -0
- package/generator/dead-code-review/node_modules/braces/lib/compile.js +57 -0
- package/generator/dead-code-review/node_modules/braces/lib/constants.js +57 -0
- package/generator/dead-code-review/node_modules/braces/lib/expand.js +113 -0
- package/generator/dead-code-review/node_modules/braces/lib/parse.js +333 -0
- package/generator/dead-code-review/node_modules/braces/lib/stringify.js +32 -0
- package/generator/dead-code-review/node_modules/braces/lib/utils.js +112 -0
- package/generator/dead-code-review/node_modules/braces/package.json +77 -0
- package/generator/dead-code-review/node_modules/chalk/index.d.ts +415 -0
- package/generator/dead-code-review/node_modules/chalk/license +9 -0
- package/generator/dead-code-review/node_modules/chalk/package.json +68 -0
- package/generator/dead-code-review/node_modules/chalk/readme.md +341 -0
- package/generator/dead-code-review/node_modules/chalk/source/index.js +229 -0
- package/generator/dead-code-review/node_modules/chalk/source/templates.js +134 -0
- package/generator/dead-code-review/node_modules/chalk/source/util.js +39 -0
- package/generator/dead-code-review/node_modules/chokidar/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/chokidar/README.md +308 -0
- package/generator/dead-code-review/node_modules/chokidar/index.js +973 -0
- package/generator/dead-code-review/node_modules/chokidar/lib/constants.js +65 -0
- package/generator/dead-code-review/node_modules/chokidar/lib/fsevents-handler.js +524 -0
- package/generator/dead-code-review/node_modules/chokidar/lib/nodefs-handler.js +654 -0
- package/generator/dead-code-review/node_modules/chokidar/package.json +85 -0
- package/generator/dead-code-review/node_modules/chokidar/types/index.d.ts +188 -0
- package/generator/dead-code-review/node_modules/color-convert/CHANGELOG.md +54 -0
- package/generator/dead-code-review/node_modules/color-convert/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/color-convert/README.md +68 -0
- package/generator/dead-code-review/node_modules/color-convert/conversions.js +839 -0
- package/generator/dead-code-review/node_modules/color-convert/index.js +81 -0
- package/generator/dead-code-review/node_modules/color-convert/package.json +48 -0
- package/generator/dead-code-review/node_modules/color-convert/route.js +97 -0
- package/generator/dead-code-review/node_modules/color-name/LICENSE +8 -0
- package/generator/dead-code-review/node_modules/color-name/README.md +11 -0
- package/generator/dead-code-review/node_modules/color-name/index.js +152 -0
- package/generator/dead-code-review/node_modules/color-name/package.json +28 -0
- package/generator/dead-code-review/node_modules/commander/LICENSE +22 -0
- package/generator/dead-code-review/node_modules/commander/Readme.md +1118 -0
- package/generator/dead-code-review/node_modules/commander/esm.mjs +16 -0
- package/generator/dead-code-review/node_modules/commander/index.js +27 -0
- package/generator/dead-code-review/node_modules/commander/lib/argument.js +147 -0
- package/generator/dead-code-review/node_modules/commander/lib/command.js +2160 -0
- package/generator/dead-code-review/node_modules/commander/lib/error.js +45 -0
- package/generator/dead-code-review/node_modules/commander/lib/help.js +406 -0
- package/generator/dead-code-review/node_modules/commander/lib/option.js +326 -0
- package/generator/dead-code-review/node_modules/commander/lib/suggestSimilar.js +100 -0
- package/generator/dead-code-review/node_modules/commander/package-support.json +16 -0
- package/generator/dead-code-review/node_modules/commander/package.json +80 -0
- package/generator/dead-code-review/node_modules/commander/typings/index.d.ts +881 -0
- package/generator/dead-code-review/node_modules/cross-spawn/CHANGELOG.md +130 -0
- package/generator/dead-code-review/node_modules/cross-spawn/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/cross-spawn/README.md +96 -0
- package/generator/dead-code-review/node_modules/cross-spawn/index.js +39 -0
- package/generator/dead-code-review/node_modules/cross-spawn/lib/enoent.js +59 -0
- package/generator/dead-code-review/node_modules/cross-spawn/lib/parse.js +91 -0
- package/generator/dead-code-review/node_modules/cross-spawn/lib/util/escape.js +45 -0
- package/generator/dead-code-review/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
- package/generator/dead-code-review/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
- package/generator/dead-code-review/node_modules/cross-spawn/package.json +73 -0
- package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/LICENSE +373 -0
- package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/README.md +64 -0
- package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.d.ts +22 -0
- package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.js +419 -0
- package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm_bg.wasm +0 -0
- package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/package.json +27 -0
- package/generator/dead-code-review/node_modules/elm-test/LICENSE +27 -0
- package/generator/dead-code-review/node_modules/elm-test/README.md +192 -0
- package/generator/dead-code-review/node_modules/elm-test/bin/elm-test +3 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/elm.json +25 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Console/Text.elm +217 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Color.elm +30 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Monochrome.elm +39 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format.elm +212 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console.elm +207 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Highlightable.elm +48 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/JUnit.elm +161 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Json.elm +158 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Reporter.elm +53 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/TestResults.elm +113 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/JsMessage.elm +38 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Console.elm +230 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Diff.elm +326 -0
- package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node.elm +440 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Compile.js +110 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/DependencyProvider.js +343 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/ElmCompiler.js +109 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/ElmHome.js +47 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/ElmJson.js +194 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/FindTests.js +276 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Generate.js +294 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Install.js +290 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Parser.js +941 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Project.js +117 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Report.js +23 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/RunTests.js +322 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Solve.js +76 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/Supervisor.js +294 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/SyncGet.js +45 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/SyncGetWorker.js +36 -0
- package/generator/dead-code-review/node_modules/elm-test/lib/elm-test.js +318 -0
- package/generator/dead-code-review/node_modules/elm-test/package.json +69 -0
- package/generator/dead-code-review/node_modules/elm-test/templates/after.js +29 -0
- package/generator/dead-code-review/node_modules/elm-test/templates/before.js +58 -0
- package/generator/dead-code-review/node_modules/elm-test/templates/tests/Example.elm +10 -0
- package/generator/dead-code-review/node_modules/fill-range/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/fill-range/README.md +237 -0
- package/generator/dead-code-review/node_modules/fill-range/index.js +249 -0
- package/generator/dead-code-review/node_modules/fill-range/package.json +69 -0
- package/generator/dead-code-review/node_modules/fs.realpath/LICENSE +43 -0
- package/generator/dead-code-review/node_modules/fs.realpath/README.md +33 -0
- package/generator/dead-code-review/node_modules/fs.realpath/index.js +66 -0
- package/generator/dead-code-review/node_modules/fs.realpath/old.js +303 -0
- package/generator/dead-code-review/node_modules/fs.realpath/package.json +26 -0
- package/generator/dead-code-review/node_modules/fsevents/LICENSE +22 -0
- package/generator/dead-code-review/node_modules/fsevents/README.md +83 -0
- package/generator/dead-code-review/node_modules/fsevents/fsevents.d.ts +46 -0
- package/generator/dead-code-review/node_modules/fsevents/fsevents.js +82 -0
- package/generator/dead-code-review/node_modules/fsevents/fsevents.node +0 -0
- package/generator/dead-code-review/node_modules/fsevents/package.json +62 -0
- package/generator/dead-code-review/node_modules/glob/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/glob/README.md +378 -0
- package/generator/dead-code-review/node_modules/glob/common.js +240 -0
- package/generator/dead-code-review/node_modules/glob/glob.js +790 -0
- package/generator/dead-code-review/node_modules/glob/package.json +55 -0
- package/generator/dead-code-review/node_modules/glob/sync.js +486 -0
- package/generator/dead-code-review/node_modules/glob-parent/CHANGELOG.md +110 -0
- package/generator/dead-code-review/node_modules/glob-parent/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/glob-parent/README.md +137 -0
- package/generator/dead-code-review/node_modules/glob-parent/index.js +42 -0
- package/generator/dead-code-review/node_modules/glob-parent/package.json +48 -0
- package/generator/dead-code-review/node_modules/graceful-fs/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/graceful-fs/README.md +143 -0
- package/generator/dead-code-review/node_modules/graceful-fs/clone.js +23 -0
- package/generator/dead-code-review/node_modules/graceful-fs/graceful-fs.js +448 -0
- package/generator/dead-code-review/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/generator/dead-code-review/node_modules/graceful-fs/package.json +50 -0
- package/generator/dead-code-review/node_modules/graceful-fs/polyfills.js +355 -0
- package/generator/dead-code-review/node_modules/has-flag/index.d.ts +39 -0
- package/generator/dead-code-review/node_modules/has-flag/index.js +8 -0
- package/generator/dead-code-review/node_modules/has-flag/license +9 -0
- package/generator/dead-code-review/node_modules/has-flag/package.json +46 -0
- package/generator/dead-code-review/node_modules/has-flag/readme.md +89 -0
- package/generator/dead-code-review/node_modules/inflight/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/inflight/README.md +37 -0
- package/generator/dead-code-review/node_modules/inflight/inflight.js +54 -0
- package/generator/dead-code-review/node_modules/inflight/package.json +29 -0
- package/generator/dead-code-review/node_modules/inherits/LICENSE +16 -0
- package/generator/dead-code-review/node_modules/inherits/README.md +42 -0
- package/generator/dead-code-review/node_modules/inherits/inherits.js +9 -0
- package/generator/dead-code-review/node_modules/inherits/inherits_browser.js +27 -0
- package/generator/dead-code-review/node_modules/inherits/package.json +29 -0
- package/generator/dead-code-review/node_modules/is-binary-path/index.d.ts +17 -0
- package/generator/dead-code-review/node_modules/is-binary-path/index.js +7 -0
- package/generator/dead-code-review/node_modules/is-binary-path/license +9 -0
- package/generator/dead-code-review/node_modules/is-binary-path/package.json +40 -0
- package/generator/dead-code-review/node_modules/is-binary-path/readme.md +34 -0
- package/generator/dead-code-review/node_modules/is-extglob/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/is-extglob/README.md +107 -0
- package/generator/dead-code-review/node_modules/is-extglob/index.js +20 -0
- package/generator/dead-code-review/node_modules/is-extglob/package.json +69 -0
- package/generator/dead-code-review/node_modules/is-glob/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/is-glob/README.md +206 -0
- package/generator/dead-code-review/node_modules/is-glob/index.js +150 -0
- package/generator/dead-code-review/node_modules/is-glob/package.json +81 -0
- package/generator/dead-code-review/node_modules/is-number/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/is-number/README.md +187 -0
- package/generator/dead-code-review/node_modules/is-number/index.js +18 -0
- package/generator/dead-code-review/node_modules/is-number/package.json +82 -0
- package/generator/dead-code-review/node_modules/isexe/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/isexe/README.md +51 -0
- package/generator/dead-code-review/node_modules/isexe/index.js +57 -0
- package/generator/dead-code-review/node_modules/isexe/mode.js +41 -0
- package/generator/dead-code-review/node_modules/isexe/package.json +31 -0
- package/generator/dead-code-review/node_modules/isexe/test/basic.js +221 -0
- package/generator/dead-code-review/node_modules/isexe/windows.js +42 -0
- package/generator/dead-code-review/node_modules/minimatch/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/minimatch/README.md +259 -0
- package/generator/dead-code-review/node_modules/minimatch/lib/path.js +4 -0
- package/generator/dead-code-review/node_modules/minimatch/minimatch.js +906 -0
- package/generator/dead-code-review/node_modules/minimatch/package.json +32 -0
- package/generator/dead-code-review/node_modules/normalize-path/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/normalize-path/README.md +127 -0
- package/generator/dead-code-review/node_modules/normalize-path/index.js +35 -0
- package/generator/dead-code-review/node_modules/normalize-path/package.json +77 -0
- package/generator/dead-code-review/node_modules/once/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/once/README.md +79 -0
- package/generator/dead-code-review/node_modules/once/once.js +42 -0
- package/generator/dead-code-review/node_modules/once/package.json +33 -0
- package/generator/dead-code-review/node_modules/path-key/index.d.ts +40 -0
- package/generator/dead-code-review/node_modules/path-key/index.js +16 -0
- package/generator/dead-code-review/node_modules/path-key/license +9 -0
- package/generator/dead-code-review/node_modules/path-key/package.json +39 -0
- package/generator/dead-code-review/node_modules/path-key/readme.md +61 -0
- package/generator/dead-code-review/node_modules/picomatch/CHANGELOG.md +136 -0
- package/generator/dead-code-review/node_modules/picomatch/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/picomatch/README.md +708 -0
- package/generator/dead-code-review/node_modules/picomatch/index.js +3 -0
- package/generator/dead-code-review/node_modules/picomatch/lib/constants.js +179 -0
- package/generator/dead-code-review/node_modules/picomatch/lib/parse.js +1091 -0
- package/generator/dead-code-review/node_modules/picomatch/lib/picomatch.js +342 -0
- package/generator/dead-code-review/node_modules/picomatch/lib/scan.js +391 -0
- package/generator/dead-code-review/node_modules/picomatch/lib/utils.js +64 -0
- package/generator/dead-code-review/node_modules/picomatch/package.json +81 -0
- package/generator/dead-code-review/node_modules/readdirp/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/readdirp/README.md +122 -0
- package/generator/dead-code-review/node_modules/readdirp/index.d.ts +43 -0
- package/generator/dead-code-review/node_modules/readdirp/index.js +287 -0
- package/generator/dead-code-review/node_modules/readdirp/package.json +122 -0
- package/generator/dead-code-review/node_modules/shebang-command/index.js +19 -0
- package/generator/dead-code-review/node_modules/shebang-command/license +9 -0
- package/generator/dead-code-review/node_modules/shebang-command/package.json +34 -0
- package/generator/dead-code-review/node_modules/shebang-command/readme.md +34 -0
- package/generator/dead-code-review/node_modules/shebang-regex/index.d.ts +22 -0
- package/generator/dead-code-review/node_modules/shebang-regex/index.js +2 -0
- package/generator/dead-code-review/node_modules/shebang-regex/license +9 -0
- package/generator/dead-code-review/node_modules/shebang-regex/package.json +35 -0
- package/generator/dead-code-review/node_modules/shebang-regex/readme.md +33 -0
- package/generator/dead-code-review/node_modules/split/.travis.yml +3 -0
- package/generator/dead-code-review/node_modules/split/LICENCE +22 -0
- package/generator/dead-code-review/node_modules/split/examples/pretty.js +26 -0
- package/generator/dead-code-review/node_modules/split/index.js +63 -0
- package/generator/dead-code-review/node_modules/split/package.json +30 -0
- package/generator/dead-code-review/node_modules/split/readme.markdown +72 -0
- package/generator/dead-code-review/node_modules/split/test/options.asynct.js +46 -0
- package/generator/dead-code-review/node_modules/split/test/partitioned_unicode.js +34 -0
- package/generator/dead-code-review/node_modules/split/test/split.asynct.js +137 -0
- package/generator/dead-code-review/node_modules/split/test/try_catch.asynct.js +51 -0
- package/generator/dead-code-review/node_modules/supports-color/browser.js +5 -0
- package/generator/dead-code-review/node_modules/supports-color/index.js +135 -0
- package/generator/dead-code-review/node_modules/supports-color/license +9 -0
- package/generator/dead-code-review/node_modules/supports-color/package.json +53 -0
- package/generator/dead-code-review/node_modules/supports-color/readme.md +76 -0
- package/generator/dead-code-review/node_modules/through/.travis.yml +5 -0
- package/generator/dead-code-review/node_modules/through/LICENSE.APACHE2 +15 -0
- package/generator/dead-code-review/node_modules/through/LICENSE.MIT +24 -0
- package/generator/dead-code-review/node_modules/through/index.js +108 -0
- package/generator/dead-code-review/node_modules/through/package.json +36 -0
- package/generator/dead-code-review/node_modules/through/readme.markdown +64 -0
- package/generator/dead-code-review/node_modules/through/test/async.js +28 -0
- package/generator/dead-code-review/node_modules/through/test/auto-destroy.js +30 -0
- package/generator/dead-code-review/node_modules/through/test/buffering.js +71 -0
- package/generator/dead-code-review/node_modules/through/test/end.js +45 -0
- package/generator/dead-code-review/node_modules/through/test/index.js +133 -0
- package/generator/dead-code-review/node_modules/to-regex-range/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/to-regex-range/README.md +305 -0
- package/generator/dead-code-review/node_modules/to-regex-range/index.js +288 -0
- package/generator/dead-code-review/node_modules/to-regex-range/package.json +88 -0
- package/generator/dead-code-review/node_modules/which/CHANGELOG.md +166 -0
- package/generator/dead-code-review/node_modules/which/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/which/README.md +54 -0
- package/generator/dead-code-review/node_modules/which/bin/node-which +52 -0
- package/generator/dead-code-review/node_modules/which/package.json +43 -0
- package/generator/dead-code-review/node_modules/which/which.js +125 -0
- package/generator/dead-code-review/node_modules/wrappy/LICENSE +15 -0
- package/generator/dead-code-review/node_modules/wrappy/README.md +36 -0
- package/generator/dead-code-review/node_modules/wrappy/package.json +29 -0
- package/generator/dead-code-review/node_modules/wrappy/wrappy.js +33 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/.nycrc +6 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/.vscode/launch.json +23 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/CHANGELOG.md +593 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/LICENSE +21 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/README.md +103 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/Derivation.js +10 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/DocumentPosition.js +12 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/NodeType.js +25 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/OperationType.js +11 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/Utility.js +88 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/WriterState.js +10 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLAttribute.js +130 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCData.js +41 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCharacterData.js +86 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLComment.js +41 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js +80 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js +20 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMImplementation.js +55 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMStringList.js +44 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDAttList.js +66 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDElement.js +44 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDEntity.js +115 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDNotation.js +66 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDeclaration.js +51 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocType.js +235 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocument.js +282 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentCB.js +650 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentFragment.js +21 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDummy.js +39 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLElement.js +334 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js +77 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNode.js +999 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeFilter.js +51 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeList.js +45 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js +56 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLRaw.js +40 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStreamWriter.js +209 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringWriter.js +40 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringifier.js +291 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLText.js +82 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLTypeInfo.js +23 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLUserDataHandler.js +27 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLWriterBase.js +485 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/lib/index.js +120 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/package.json +51 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/escaping.coffee +244 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/object.coffee +21 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/perf/index.coffee +161 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/perf/perf.list +11 -0
- package/generator/dead-code-review/node_modules/xmlbuilder/typings/index.d.ts +1771 -0
- package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +189 -17
- package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +255 -21
- package/generator/review/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm.json +25 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm.json +41 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1327 -122
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +14621 -12637
- package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
- package/generator/review/elm.json +8 -8
- package/generator/src/RouteBuilder.elm +66 -52
- package/generator/src/SharedTemplate.elm +3 -2
- package/generator/src/SiteConfig.elm +3 -2
- package/generator/src/basepath-middleware.js +3 -3
- package/generator/src/build.js +122 -86
- package/generator/src/cli.js +256 -52
- package/generator/src/codegen.js +29 -27
- package/generator/src/compatibility-key.js +3 -0
- package/generator/src/compile-elm.js +20 -22
- package/generator/src/config.js +39 -0
- package/generator/src/copy-dir.js +2 -2
- package/generator/src/dev-server.js +106 -110
- package/generator/src/dir-helpers.js +9 -26
- package/generator/src/elm-codegen.js +5 -4
- package/generator/src/elm-file-constants.js +2 -3
- package/generator/src/error-formatter.js +12 -11
- package/generator/src/file-helpers.js +3 -4
- package/generator/src/generate-template-module-connector.js +14 -21
- package/generator/src/init.js +8 -7
- package/generator/src/pre-render-html.js +39 -28
- package/generator/src/render-test.js +109 -0
- package/generator/src/render-worker.js +29 -28
- package/generator/src/render.js +322 -142
- package/generator/src/request-cache.js +252 -163
- package/generator/src/rewrite-client-elm-json.js +5 -5
- package/generator/src/rewrite-elm-json.js +7 -7
- package/generator/src/route-codegen-helpers.js +16 -31
- package/generator/src/seo-renderer.js +12 -7
- package/generator/src/vite-utils.js +77 -0
- package/generator/static-code/hmr.js +16 -2
- package/generator/template/app/Api.elm +6 -5
- package/generator/template/app/Effect.elm +123 -0
- package/generator/template/app/ErrorPage.elm +37 -6
- package/generator/template/app/Route/Index.elm +15 -8
- package/generator/template/app/Shared.elm +24 -47
- package/generator/template/app/Site.elm +19 -6
- package/generator/template/app/View.elm +1 -8
- package/generator/template/elm-tooling.json +0 -3
- package/generator/template/elm.json +34 -25
- package/generator/template/package.json +10 -4
- package/package.json +21 -21
- package/src/ApiRoute.elm +199 -61
- package/src/BackendTask/Custom.elm +318 -0
- package/src/BackendTask/Env.elm +90 -0
- package/src/{DataSource → BackendTask}/File.elm +128 -43
- package/src/{DataSource → BackendTask}/Glob.elm +136 -125
- package/src/BackendTask/Http.elm +673 -0
- package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
- package/src/BackendTask/Internal/Request.elm +28 -0
- package/src/BackendTask/Random.elm +79 -0
- package/src/BackendTask/Time.elm +47 -0
- package/src/BackendTask.elm +537 -0
- package/src/FatalError.elm +89 -0
- package/src/Form/Field.elm +22 -10
- package/src/Form/FieldView.elm +14 -4
- package/src/Form.elm +99 -111
- package/src/Head/Seo.elm +4 -4
- package/src/Head.elm +237 -7
- package/src/HtmlPrinter.elm +7 -3
- package/src/Internal/ApiRoute.elm +7 -5
- package/src/PageServerResponse.elm +6 -1
- package/src/Pages/GeneratorProgramConfig.elm +15 -0
- package/src/Pages/Internal/FatalError.elm +5 -0
- package/src/Pages/Internal/Form.elm +21 -1
- package/src/Pages/Internal/Platform/Cli.elm +505 -746
- package/src/Pages/Internal/Platform/Cli.elm.bak +1276 -0
- package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
- package/src/Pages/Internal/Platform/Effect.elm +1 -2
- package/src/Pages/Internal/Platform/GeneratorApplication.elm +373 -0
- package/src/Pages/Internal/Platform/StaticResponses.elm +73 -270
- package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -7
- package/src/Pages/Internal/Platform.elm +110 -88
- package/src/Pages/Internal/Script.elm +17 -0
- package/src/Pages/Internal/StaticHttpBody.elm +35 -1
- package/src/Pages/Manifest.elm +29 -4
- package/src/Pages/ProgramConfig.elm +12 -8
- package/src/Pages/Script.elm +109 -0
- package/src/Pages/SiteConfig.elm +3 -2
- package/src/Pages/StaticHttp/Request.elm +2 -2
- package/src/Pages/StaticHttpRequest.elm +23 -98
- package/src/RequestsAndPending.elm +8 -19
- package/src/Result/Extra.elm +26 -0
- package/src/Scaffold/Form.elm +474 -0
- package/src/Scaffold/Route.elm +1473 -0
- package/src/Server/Request.elm +43 -34
- package/src/Server/Session.elm +166 -100
- package/src/Server/SetCookie.elm +89 -31
- package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
- package/src/DataSource/Env.elm +0 -38
- package/src/DataSource/Http.elm +0 -446
- package/src/DataSource/Internal/Request.elm +0 -20
- package/src/DataSource/Port.elm +0 -90
- package/src/DataSource.elm +0 -538
- package/src/Pages/Generate.elm +0 -800
package/src/Server/Request.elm
CHANGED
|
@@ -86,11 +86,12 @@ module Server.Request exposing
|
|
|
86
86
|
|
|
87
87
|
-}
|
|
88
88
|
|
|
89
|
+
import BackendTask exposing (BackendTask)
|
|
89
90
|
import CookieParser
|
|
90
|
-
import DataSource exposing (DataSource)
|
|
91
91
|
import Dict exposing (Dict)
|
|
92
|
+
import FatalError exposing (FatalError)
|
|
92
93
|
import Form
|
|
93
|
-
import Form.Validation
|
|
94
|
+
import Form.Validation as Validation
|
|
94
95
|
import FormData
|
|
95
96
|
import Internal.Request
|
|
96
97
|
import Json.Decode
|
|
@@ -118,17 +119,17 @@ Note that this data is not available for pre-rendered pages or pre-rendered API
|
|
|
118
119
|
This is because when a page is pre-rendered, there _is_ no incoming HTTP request to respond to, it is rendered before a user
|
|
119
120
|
requests the page and then the pre-rendered page is served as a plain file (without running your Route Module).
|
|
120
121
|
|
|
121
|
-
That's why `RouteBuilder.preRender` has `data : RouteParams ->
|
|
122
|
+
That's why `RouteBuilder.preRender` has `data : RouteParams -> BackendTask Data`:
|
|
122
123
|
|
|
123
|
-
import
|
|
124
|
+
import BackendTask exposing (BackendTask)
|
|
124
125
|
import RouteBuilder exposing (StatelessRoute)
|
|
125
126
|
|
|
126
127
|
type alias Data =
|
|
127
128
|
{}
|
|
128
129
|
|
|
129
|
-
data : RouteParams ->
|
|
130
|
+
data : RouteParams -> BackendTask Data
|
|
130
131
|
data routeParams =
|
|
131
|
-
|
|
132
|
+
BackendTask.succeed Data
|
|
132
133
|
|
|
133
134
|
route : StatelessRoute RouteParams Data ActionData
|
|
134
135
|
route =
|
|
@@ -141,7 +142,7 @@ That's why `RouteBuilder.preRender` has `data : RouteParams -> DataSource Data`:
|
|
|
141
142
|
|
|
142
143
|
A server-rendered Route Module _does_ have access to a user's incoming HTTP request because it runs every time the page
|
|
143
144
|
is loaded. That's why `data` is a `Request.Parser` in server-rendered Route Modules. Since you have an incoming HTTP request for server-rendered routes,
|
|
144
|
-
`RouteBuilder.serverRender` has `data : RouteParams -> Request.Parser (
|
|
145
|
+
`RouteBuilder.serverRender` has `data : RouteParams -> Request.Parser (BackendTask (Response Data))`. That means that you
|
|
145
146
|
can use the incoming HTTP request data to choose how to respond. For example, you could check for a dark-mode preference
|
|
146
147
|
cookie and render a light- or dark-themed page and render a different page.
|
|
147
148
|
|
|
@@ -151,7 +152,7 @@ That's a mouthful, so let's unpack what it means.
|
|
|
151
152
|
|
|
152
153
|
data from the request payload using a Server Request Parser.
|
|
153
154
|
|
|
154
|
-
import
|
|
155
|
+
import BackendTask exposing (BackendTask)
|
|
155
156
|
import RouteBuilder exposing (StatelessRoute)
|
|
156
157
|
import Server.Request as Request exposing (Request)
|
|
157
158
|
import Server.Response as Response exposing (Response)
|
|
@@ -161,11 +162,11 @@ data from the request payload using a Server Request Parser.
|
|
|
161
162
|
|
|
162
163
|
data :
|
|
163
164
|
RouteParams
|
|
164
|
-
-> Request.Parser (
|
|
165
|
+
-> Request.Parser (BackendTask (Response Data))
|
|
165
166
|
data routeParams =
|
|
166
167
|
{}
|
|
167
168
|
|> Server.Response.render
|
|
168
|
-
|>
|
|
169
|
+
|> BackendTask.succeed
|
|
169
170
|
|> Request.succeed
|
|
170
171
|
|
|
171
172
|
route : StatelessRoute RouteParams Data ActionData
|
|
@@ -225,7 +226,7 @@ succeed value =
|
|
|
225
226
|
|
|
226
227
|
{-| TODO internal only
|
|
227
228
|
-}
|
|
228
|
-
getDecoder : Parser (
|
|
229
|
+
getDecoder : Parser (BackendTask error response) -> Json.Decode.Decoder (Result ( ValidationError, List ValidationError ) (BackendTask error response))
|
|
229
230
|
getDecoder (Internal.Request.Parser decoder) =
|
|
230
231
|
decoder
|
|
231
232
|
|> Json.Decode.map
|
|
@@ -881,8 +882,8 @@ fileField_ name =
|
|
|
881
882
|
|
|
882
883
|
{-| -}
|
|
883
884
|
formDataWithServerValidation :
|
|
884
|
-
Form.ServerForms error (
|
|
885
|
-
-> Parser (
|
|
885
|
+
Form.ServerForms error (BackendTask FatalError (Validation.Validation error combined kind constraints))
|
|
886
|
+
-> Parser (BackendTask FatalError (Result (Form.Response error) ( Form.Response error, combined )))
|
|
886
887
|
formDataWithServerValidation formParsers =
|
|
887
888
|
rawFormData
|
|
888
889
|
|> andThen
|
|
@@ -897,27 +898,25 @@ formDataWithServerValidation formParsers =
|
|
|
897
898
|
( Just decoded, Nothing ) ->
|
|
898
899
|
succeed
|
|
899
900
|
(decoded
|
|
900
|
-
|>
|
|
901
|
+
|> BackendTask.map
|
|
901
902
|
(\(Validation _ _ ( maybeParsed, errors2 )) ->
|
|
902
903
|
case ( maybeParsed, errors2 |> Dict.toList |> List.filter (\( _, value ) -> value |> List.isEmpty |> not) |> List.NonEmpty.fromList ) of
|
|
903
904
|
( Just decodedFinal, Nothing ) ->
|
|
904
905
|
Ok
|
|
905
|
-
( Form.Response
|
|
906
|
+
( Pages.Internal.Form.Response
|
|
906
907
|
{ fields = rawFormData_
|
|
907
908
|
, errors = Dict.empty
|
|
909
|
+
, clientErrors = Dict.empty
|
|
908
910
|
}
|
|
909
911
|
, decodedFinal
|
|
910
912
|
)
|
|
911
913
|
|
|
912
|
-
|
|
914
|
+
_ ->
|
|
913
915
|
Err
|
|
914
|
-
(Form.Response
|
|
916
|
+
(Pages.Internal.Form.Response
|
|
915
917
|
{ fields = rawFormData_
|
|
916
|
-
, errors =
|
|
917
|
-
|
|
918
|
-
|> Maybe.map List.NonEmpty.toList
|
|
919
|
-
|> Maybe.withDefault []
|
|
920
|
-
|> Dict.fromList
|
|
918
|
+
, errors = errors2
|
|
919
|
+
, clientErrors = errors
|
|
921
920
|
}
|
|
922
921
|
)
|
|
923
922
|
)
|
|
@@ -925,16 +924,17 @@ formDataWithServerValidation formParsers =
|
|
|
925
924
|
|
|
926
925
|
( _, maybeErrors ) ->
|
|
927
926
|
Err
|
|
928
|
-
(Form.Response
|
|
927
|
+
(Pages.Internal.Form.Response
|
|
929
928
|
{ fields = rawFormData_
|
|
930
929
|
, errors =
|
|
931
930
|
maybeErrors
|
|
932
931
|
|> Maybe.map List.NonEmpty.toList
|
|
933
932
|
|> Maybe.withDefault []
|
|
934
933
|
|> Dict.fromList
|
|
934
|
+
, clientErrors = Dict.empty
|
|
935
935
|
}
|
|
936
936
|
)
|
|
937
|
-
|>
|
|
937
|
+
|> BackendTask.succeed
|
|
938
938
|
|> succeed
|
|
939
939
|
)
|
|
940
940
|
|
|
@@ -942,7 +942,7 @@ formDataWithServerValidation formParsers =
|
|
|
942
942
|
{-| -}
|
|
943
943
|
formData :
|
|
944
944
|
Form.ServerForms error combined
|
|
945
|
-
-> Parser (Result { fields : List ( String, String ), errors : Dict String (List error) } combined)
|
|
945
|
+
-> Parser ( Form.Response error, Result { fields : List ( String, String ), errors : Dict String (List error), clientErrors : Dict String (List error) } combined )
|
|
946
946
|
formData formParsers =
|
|
947
947
|
rawFormData
|
|
948
948
|
|> andThen
|
|
@@ -955,18 +955,27 @@ formData formParsers =
|
|
|
955
955
|
in
|
|
956
956
|
case ( maybeDecoded, errors |> Dict.toList |> List.filter (\( _, value ) -> value |> List.isEmpty |> not) |> List.NonEmpty.fromList ) of
|
|
957
957
|
( Just decoded, Nothing ) ->
|
|
958
|
-
|
|
958
|
+
( Pages.Internal.Form.Response { fields = [], errors = Dict.empty, clientErrors = Dict.empty }
|
|
959
|
+
, Ok decoded
|
|
960
|
+
)
|
|
959
961
|
|> succeed
|
|
960
962
|
|
|
961
963
|
( _, maybeErrors ) ->
|
|
962
|
-
|
|
963
|
-
{ fields
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
964
|
+
let
|
|
965
|
+
record : { fields : List ( String, String ), errors : Dict String (List error), clientErrors : Dict String (List error) }
|
|
966
|
+
record =
|
|
967
|
+
{ fields = rawFormData_
|
|
968
|
+
, errors = Dict.empty
|
|
969
|
+
, clientErrors =
|
|
970
|
+
maybeErrors
|
|
971
|
+
|> Maybe.map List.NonEmpty.toList
|
|
972
|
+
|> Maybe.withDefault []
|
|
973
|
+
|> Dict.fromList
|
|
974
|
+
}
|
|
975
|
+
in
|
|
976
|
+
( Pages.Internal.Form.Response record
|
|
977
|
+
, Err record
|
|
978
|
+
)
|
|
970
979
|
|> succeed
|
|
971
980
|
)
|
|
972
981
|
|
package/src/Server/Session.elm
CHANGED
|
@@ -1,19 +1,119 @@
|
|
|
1
|
-
module Server.Session exposing
|
|
1
|
+
module Server.Session exposing
|
|
2
|
+
( withSession
|
|
3
|
+
, NotLoadedReason(..)
|
|
4
|
+
, Session, empty, get, insert, remove, update, withFlash
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
{-| You can manage server state with HTTP cookies using this Server.Session API. Server-rendered pages define a `Server.Request.Parser`
|
|
8
|
+
to choose which requests to respond to and how to extract structured data from the incoming request.
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
## Using Sessions in a Request.Parser
|
|
12
|
+
|
|
13
|
+
Using these functions, you can store and read session data in cookies to maintain state between requests.
|
|
14
|
+
For example, TODO:
|
|
15
|
+
|
|
16
|
+
action : RouteParams -> Request.Parser (BackendTask (Response ActionData ErrorPage))
|
|
17
|
+
action routeParams =
|
|
18
|
+
MySession.withSession
|
|
19
|
+
(Request.formDataWithServerValidation (form |> Form.initCombinedServer identity))
|
|
20
|
+
(\nameResultData session ->
|
|
21
|
+
nameResultData
|
|
22
|
+
|> BackendTask.map
|
|
23
|
+
(\nameResult ->
|
|
24
|
+
case nameResult of
|
|
25
|
+
Err errors ->
|
|
26
|
+
( session
|
|
27
|
+
|> Result.withDefault Nothing
|
|
28
|
+
|> Maybe.withDefault Session.empty
|
|
29
|
+
, Response.render
|
|
30
|
+
{ errors = errors
|
|
31
|
+
}
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
Ok ( _, name ) ->
|
|
35
|
+
( session
|
|
36
|
+
|> Result.withDefault Nothing
|
|
37
|
+
|> Maybe.withDefault Session.empty
|
|
38
|
+
|> Session.insert "name" name
|
|
39
|
+
|> Session.withFlash "message" ("Welcome " ++ name ++ "!")
|
|
40
|
+
, Route.redirectTo Route.Greet
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
)
|
|
44
|
+
|
|
45
|
+
The elm-pages framework will manage signing these cookies using the `secrets : BackendTask (List String)` you pass in.
|
|
46
|
+
That means that the values you set in your session will be directly visible to anyone who has access to the cookie
|
|
47
|
+
(so don't directly store sensitive data in your session). Since the session cookie is signed using the secret you provide,
|
|
48
|
+
the cookie will be invalidated if it is tampered with because it won't match when elm-pages verifies that it has been
|
|
49
|
+
signed with your secrets. Of course you need to provide secure secrets and treat your secrets with care.
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
### Rotating Secrets
|
|
53
|
+
|
|
54
|
+
The first String in `secrets : BackendTask (List String)` will be used to sign sessions, while the remaining String's will
|
|
55
|
+
still be used to attempt to "unsign" the cookies. So if you have a single secret:
|
|
56
|
+
|
|
57
|
+
Session.withSession
|
|
58
|
+
{ name = "mysession"
|
|
59
|
+
, secrets =
|
|
60
|
+
BackendTask.map List.singleton
|
|
61
|
+
(Env.expect "SESSION_SECRET2022-09-01")
|
|
62
|
+
, options = cookieOptions
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
Then you add a second secret
|
|
2
66
|
|
|
3
|
-
|
|
67
|
+
Session.withSession
|
|
68
|
+
{ name = "mysession"
|
|
69
|
+
, secrets =
|
|
70
|
+
BackendTask.map2
|
|
71
|
+
(\newSecret oldSecret -> [ newSecret, oldSecret ])
|
|
72
|
+
(Env.expect "SESSION_SECRET2022-12-01")
|
|
73
|
+
(Env.expect "SESSION_SECRET2022-09-01")
|
|
74
|
+
, options = cookieOptions
|
|
75
|
+
}
|
|
4
76
|
|
|
5
|
-
|
|
77
|
+
The new secret (`2022-12-01`) will be used to sign all requests. This API always re-signs using the newest secret in the list
|
|
78
|
+
whenever a new request comes in (even if the Session key-value pairs are unchanged), so these cookies get "refreshed" with the latest
|
|
79
|
+
signing secret when a new request comes in.
|
|
80
|
+
|
|
81
|
+
However, incoming requests with a cookie signed using the old secret (`2022-09-01`) will still successfully be unsigned
|
|
82
|
+
because they are still in the rotation (and then subsequently "refreshed" and signed using the new secret).
|
|
83
|
+
|
|
84
|
+
This allows you to rotate your session secrets (for security purposes). When a secret goes out of the rotation,
|
|
85
|
+
it will invalidate all cookies signed with that. For example, if we remove our old secret from the rotation:
|
|
86
|
+
|
|
87
|
+
Session.withSession
|
|
88
|
+
{ name = "mysession"
|
|
89
|
+
, secrets =
|
|
90
|
+
BackendTask.map List.singleton
|
|
91
|
+
(Env.expect "SESSION_SECRET2022-12-01")
|
|
92
|
+
, options = cookieOptions
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
And then a user makes a request but had a session signed with our old secret (`2022-09-01`), the session will be invalid
|
|
96
|
+
(so `withSession` would parse the session for that request as `Nothing`). It's standard for cookies to have an expiration date,
|
|
97
|
+
so there's nothing wrong with an old session expiring (and the browser will eventually delete old cookies), just be aware of that when rotating secrets.
|
|
98
|
+
|
|
99
|
+
@docs withSession
|
|
100
|
+
|
|
101
|
+
@docs NotLoadedReason
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
## Creating and Updating Sessions
|
|
105
|
+
|
|
106
|
+
@docs Session, empty, get, insert, remove, update, withFlash
|
|
6
107
|
|
|
7
108
|
-}
|
|
8
109
|
|
|
9
|
-
import
|
|
10
|
-
import
|
|
11
|
-
import
|
|
110
|
+
import BackendTask exposing (BackendTask)
|
|
111
|
+
import BackendTask.Http
|
|
112
|
+
import BackendTask.Internal.Request
|
|
12
113
|
import Dict exposing (Dict)
|
|
13
|
-
import Dict.Extra
|
|
14
114
|
import Json.Decode
|
|
15
115
|
import Json.Encode
|
|
16
|
-
import Server.Request
|
|
116
|
+
import Server.Request
|
|
17
117
|
import Server.Response exposing (Response)
|
|
18
118
|
import Server.SetCookie as SetCookie
|
|
19
119
|
|
|
@@ -23,11 +123,6 @@ type Session
|
|
|
23
123
|
= Session (Dict String Value)
|
|
24
124
|
|
|
25
125
|
|
|
26
|
-
{-| -}
|
|
27
|
-
type alias Decoder decoded =
|
|
28
|
-
Json.Decode.Decoder decoded
|
|
29
|
-
|
|
30
|
-
|
|
31
126
|
{-| -}
|
|
32
127
|
type Value
|
|
33
128
|
= Persistent String
|
|
@@ -113,20 +208,13 @@ empty =
|
|
|
113
208
|
|
|
114
209
|
{-| -}
|
|
115
210
|
type NotLoadedReason
|
|
116
|
-
=
|
|
117
|
-
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
{-| -}
|
|
121
|
-
succeed : constructor -> Decoder constructor
|
|
122
|
-
succeed constructor =
|
|
123
|
-
constructor
|
|
124
|
-
|> Json.Decode.succeed
|
|
211
|
+
= NoSessionCookie
|
|
212
|
+
| InvalidSessionCookie
|
|
125
213
|
|
|
126
214
|
|
|
127
215
|
{-| -}
|
|
128
|
-
|
|
129
|
-
|
|
216
|
+
encodeNonExpiringPairs : Session -> Json.Encode.Value
|
|
217
|
+
encodeNonExpiringPairs (Session session) =
|
|
130
218
|
session
|
|
131
219
|
|> Dict.toList
|
|
132
220
|
|> List.filterMap
|
|
@@ -151,100 +239,78 @@ flashPrefix =
|
|
|
151
239
|
"__flash__"
|
|
152
240
|
|
|
153
241
|
|
|
154
|
-
{-| -}
|
|
155
|
-
clearFlashCookies : Dict String String -> Dict String String
|
|
156
|
-
clearFlashCookies dict =
|
|
157
|
-
Dict.Extra.removeWhen
|
|
158
|
-
(\key _ ->
|
|
159
|
-
key |> String.startsWith flashPrefix
|
|
160
|
-
)
|
|
161
|
-
dict
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
{-| -}
|
|
165
|
-
expectSession :
|
|
166
|
-
{ name : String
|
|
167
|
-
, secrets : DataSource (List String)
|
|
168
|
-
, sameSite : String
|
|
169
|
-
}
|
|
170
|
-
-> Parser request
|
|
171
|
-
-> (request -> Result () Session -> DataSource ( Session, Response data errorPage ))
|
|
172
|
-
-> Parser (DataSource (Response data errorPage))
|
|
173
|
-
expectSession config userRequest toRequest =
|
|
174
|
-
Request.map2
|
|
175
|
-
(\sessionCookie userRequestData ->
|
|
176
|
-
sessionCookie
|
|
177
|
-
|> decryptCookie config
|
|
178
|
-
|> DataSource.andThen
|
|
179
|
-
(encodeSessionUpdate config toRequest userRequestData)
|
|
180
|
-
)
|
|
181
|
-
(Request.expectCookie config.name)
|
|
182
|
-
userRequest
|
|
183
|
-
|
|
184
|
-
|
|
185
242
|
{-| -}
|
|
186
243
|
withSession :
|
|
187
244
|
{ name : String
|
|
188
|
-
, secrets :
|
|
189
|
-
,
|
|
245
|
+
, secrets : BackendTask error (List String)
|
|
246
|
+
, options : SetCookie.Options
|
|
190
247
|
}
|
|
191
|
-
->
|
|
192
|
-
->
|
|
193
|
-
-> Parser (
|
|
194
|
-
withSession config userRequest
|
|
195
|
-
Request.map2
|
|
248
|
+
-> (request -> Result NotLoadedReason Session -> BackendTask error ( Session, Response data errorPage ))
|
|
249
|
+
-> Server.Request.Parser request
|
|
250
|
+
-> Server.Request.Parser (BackendTask error (Response data errorPage))
|
|
251
|
+
withSession config toRequest userRequest =
|
|
252
|
+
Server.Request.map2
|
|
196
253
|
(\maybeSessionCookie userRequestData ->
|
|
197
254
|
let
|
|
198
|
-
|
|
199
|
-
|
|
255
|
+
unsigned : BackendTask error (Result NotLoadedReason Session)
|
|
256
|
+
unsigned =
|
|
200
257
|
case maybeSessionCookie of
|
|
201
258
|
Just sessionCookie ->
|
|
202
259
|
sessionCookie
|
|
203
|
-
|>
|
|
204
|
-
|>
|
|
260
|
+
|> unsignCookie config
|
|
261
|
+
|> BackendTask.map
|
|
262
|
+
(\unsignResult ->
|
|
263
|
+
case unsignResult of
|
|
264
|
+
Ok decoded ->
|
|
265
|
+
Ok decoded
|
|
266
|
+
|
|
267
|
+
Err () ->
|
|
268
|
+
Err InvalidSessionCookie
|
|
269
|
+
)
|
|
205
270
|
|
|
206
271
|
Nothing ->
|
|
207
|
-
|
|
208
|
-
|>
|
|
272
|
+
Err NoSessionCookie
|
|
273
|
+
|> BackendTask.succeed
|
|
209
274
|
in
|
|
210
|
-
|
|
211
|
-
|>
|
|
275
|
+
unsigned
|
|
276
|
+
|> BackendTask.andThen
|
|
212
277
|
(encodeSessionUpdate config toRequest userRequestData)
|
|
213
278
|
)
|
|
214
|
-
(Request.cookie config.name)
|
|
279
|
+
(Server.Request.cookie config.name)
|
|
215
280
|
userRequest
|
|
216
281
|
|
|
217
282
|
|
|
218
|
-
encodeSessionUpdate :
|
|
283
|
+
encodeSessionUpdate :
|
|
284
|
+
{ name : String
|
|
285
|
+
, secrets : BackendTask error (List String)
|
|
286
|
+
, options : SetCookie.Options
|
|
287
|
+
}
|
|
288
|
+
-> (c -> d -> BackendTask error ( Session, Response data errorPage ))
|
|
289
|
+
-> c
|
|
290
|
+
-> d
|
|
291
|
+
-> BackendTask error (Response data errorPage)
|
|
219
292
|
encodeSessionUpdate config toRequest userRequestData sessionResult =
|
|
220
293
|
sessionResult
|
|
221
294
|
|> toRequest userRequestData
|
|
222
|
-
|>
|
|
295
|
+
|> BackendTask.andThen
|
|
223
296
|
(\( sessionUpdate, response ) ->
|
|
224
|
-
|
|
297
|
+
BackendTask.map
|
|
225
298
|
(\encoded ->
|
|
226
299
|
response
|
|
227
300
|
|> Server.Response.withSetCookieHeader
|
|
228
|
-
(SetCookie.setCookie config.name encoded
|
|
229
|
-
|> SetCookie.httpOnly
|
|
230
|
-
|> SetCookie.withPath "/"
|
|
231
|
-
-- TODO set expiration time
|
|
232
|
-
-- TODO do I need to encrypt the session expiration as part of it
|
|
233
|
-
-- TODO should I update the expiration time every time?
|
|
234
|
-
--|> SetCookie.withExpiration (Time.millisToPosix 100000000000)
|
|
235
|
-
)
|
|
301
|
+
(SetCookie.setCookie config.name encoded config.options)
|
|
236
302
|
)
|
|
237
|
-
(
|
|
238
|
-
(
|
|
303
|
+
(sign config.secrets
|
|
304
|
+
(encodeNonExpiringPairs sessionUpdate)
|
|
239
305
|
)
|
|
240
306
|
)
|
|
241
307
|
|
|
242
308
|
|
|
243
|
-
|
|
244
|
-
|
|
309
|
+
unsignCookie : { a | secrets : BackendTask error (List String) } -> String -> BackendTask error (Result () Session)
|
|
310
|
+
unsignCookie config sessionCookie =
|
|
245
311
|
sessionCookie
|
|
246
|
-
|>
|
|
247
|
-
|>
|
|
312
|
+
|> unsign config.secrets (Json.Decode.dict Json.Decode.string)
|
|
313
|
+
|> BackendTask.map
|
|
248
314
|
(Result.map
|
|
249
315
|
(\dict ->
|
|
250
316
|
dict
|
|
@@ -265,15 +331,15 @@ decryptCookie config sessionCookie =
|
|
|
265
331
|
)
|
|
266
332
|
|
|
267
333
|
|
|
268
|
-
|
|
269
|
-
|
|
334
|
+
sign : BackendTask error (List String) -> Json.Encode.Value -> BackendTask error String
|
|
335
|
+
sign getSecrets input =
|
|
270
336
|
getSecrets
|
|
271
|
-
|>
|
|
337
|
+
|> BackendTask.andThen
|
|
272
338
|
(\secrets ->
|
|
273
|
-
|
|
339
|
+
BackendTask.Internal.Request.request
|
|
274
340
|
{ name = "encrypt"
|
|
275
341
|
, body =
|
|
276
|
-
|
|
342
|
+
BackendTask.Http.jsonBody
|
|
277
343
|
(Json.Encode.object
|
|
278
344
|
[ ( "values", input )
|
|
279
345
|
, ( "secret"
|
|
@@ -287,21 +353,21 @@ encrypt getSecrets input =
|
|
|
287
353
|
]
|
|
288
354
|
)
|
|
289
355
|
, expect =
|
|
290
|
-
|
|
356
|
+
BackendTask.Http.expectJson
|
|
291
357
|
Json.Decode.string
|
|
292
358
|
}
|
|
293
359
|
)
|
|
294
360
|
|
|
295
361
|
|
|
296
|
-
|
|
297
|
-
|
|
362
|
+
unsign : BackendTask error (List String) -> Json.Decode.Decoder a -> String -> BackendTask error (Result () a)
|
|
363
|
+
unsign getSecrets decoder input =
|
|
298
364
|
getSecrets
|
|
299
|
-
|>
|
|
365
|
+
|> BackendTask.andThen
|
|
300
366
|
(\secrets ->
|
|
301
|
-
|
|
367
|
+
BackendTask.Internal.Request.request
|
|
302
368
|
{ name = "decrypt"
|
|
303
369
|
, body =
|
|
304
|
-
|
|
370
|
+
BackendTask.Http.jsonBody
|
|
305
371
|
(Json.Encode.object
|
|
306
372
|
[ ( "input", Json.Encode.string input )
|
|
307
373
|
, ( "secrets", Json.Encode.list Json.Encode.string secrets )
|
|
@@ -311,6 +377,6 @@ decrypt getSecrets decoder input =
|
|
|
311
377
|
decoder
|
|
312
378
|
|> Json.Decode.nullable
|
|
313
379
|
|> Json.Decode.map (Result.fromMaybe ())
|
|
314
|
-
|>
|
|
380
|
+
|> BackendTask.Http.expectJson
|
|
315
381
|
}
|
|
316
382
|
)
|