elm-pages 3.0.0-beta.10 → 3.0.0-beta.13
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 +1 -1
- package/codegen/elm-pages-codegen.js +1 -1
- 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 +29603 -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.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 +15157 -13245
- 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 +1 -0
- 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 +14575 -12632
- 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/build.js +7 -10
- package/generator/src/cli.js +124 -42
- package/generator/src/codegen.js +11 -10
- package/generator/src/compatibility-key.js +1 -1
- package/generator/src/elm-codegen.js +3 -0
- package/generator/src/render-worker.js +1 -1
- package/generator/src/render.js +222 -37
- package/generator/src/request-cache.js +1 -0
- package/generator/src/rewrite-elm-json.js +3 -3
- package/package.json +12 -12
- package/src/ApiRoute.elm +147 -9
- package/src/DataSource/Env.elm +27 -3
- package/src/DataSource.elm +11 -22
- package/src/Form.elm +32 -32
- package/src/Head.elm +112 -8
- package/src/MultiDict.elm +49 -0
- package/src/Pages/Generate.elm +4 -1
- package/src/Pages/GeneratorProgramConfig.elm +15 -0
- package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
- package/src/Pages/Internal/Platform/GeneratorApplication.elm +455 -0
- package/src/Pages/Internal/Platform/StaticResponses.elm +35 -5
- package/src/Pages/Internal/Script.elm +16 -0
- package/src/Pages/Manifest.elm +24 -0
- package/src/Pages/Script.elm +94 -0
- package/src/Pages/StaticHttpRequest.elm +9 -7
- package/src/PairingHeap.elm +137 -0
- package/src/Parser/Extra/String.elm +33 -0
- package/src/Parser/Extra.elm +69 -0
- package/src/ProgramTest/ComplexQuery.elm +360 -0
- package/src/ProgramTest/EffectSimulation.elm +122 -0
- package/src/ProgramTest/Failure.elm +367 -0
- package/src/ProgramTest/HtmlHighlighter.elm +116 -0
- package/src/ProgramTest/HtmlParserHacks.elm +58 -0
- package/src/ProgramTest/HtmlRenderer.elm +73 -0
- package/src/ProgramTest/Program.elm +30 -0
- package/src/ProgramTest/StringLines.elm +26 -0
- package/src/ProgramTest/TestHtmlHacks.elm +132 -0
- package/src/ProgramTest/TestHtmlParser.elm +201 -0
- package/src/ProgramTest.elm +2339 -0
- package/src/Query/Extra.elm +55 -0
- package/src/Result/Extra.elm +21 -0
- package/src/Server/Request.elm +2 -2
- package/src/SimulatedEffect/Cmd.elm +69 -0
- package/src/SimulatedEffect/Http.elm +330 -0
- package/src/SimulatedEffect/Navigation.elm +69 -0
- package/src/SimulatedEffect/Ports.elm +62 -0
- package/src/SimulatedEffect/Process.elm +24 -0
- package/src/SimulatedEffect/Sub.elm +48 -0
- package/src/SimulatedEffect/Task.elm +252 -0
- package/src/SimulatedEffect/Time.elm +25 -0
- package/src/SimulatedEffect.elm +42 -0
- package/src/String/Extra.elm +6 -0
- package/src/Test/Http.elm +145 -0
- package/src/TestResult.elm +35 -0
- package/src/TestState.elm +305 -0
- package/src/Url/Extra.elm +100 -0
- package/src/Vendored/Diff.elm +321 -0
- package/src/Vendored/Failure.elm +217 -0
- package/src/Vendored/FormatMonochrome.elm +44 -0
- package/src/Vendored/Highlightable.elm +53 -0
package/src/DataSource.elm
CHANGED
|
@@ -38,38 +38,27 @@ So why not just get the data the old-fashioned way, with `elm/http`, for example
|
|
|
38
38
|
A few reasons:
|
|
39
39
|
|
|
40
40
|
1. DataSource's allow you to pull in data that you wouldn't normally be able to access from an Elm app, like local files, or listings of files in a folder. Not only that, but the dev server knows to automatically hot reload the data when the files it depends on change, so you can edit the files you used in your DataSource and see the page hot reload as you save!
|
|
41
|
-
2.
|
|
42
|
-
3.
|
|
43
|
-
4. You can
|
|
41
|
+
2. You can pre-render HTML for your pages, including the SEO meta tags, with all that rich, well-typed Elm data available! That's something you can't accomplish with a vanilla Elm app, and it's one of the main use cases for elm-pages.
|
|
42
|
+
3. Because `elm-pages` has a build step, you know that your `DataSource.Http` requests succeeded, your decoders succeeded, your custom DataSource validations succeeded, and everything went smoothly. If something went wrong, you get a build failure and can deal with the issues before the site goes live. That means your users won't see those errors, and as a developer you don't need to handle those error cases in your code! Think of it as "parse, don't validate", but for your entire build. In the case of server-rendered routes, a DataSource failure will render a 500 page, so more care needs to be taken to make sure all common errors are handled properly, but the tradeoff is that you can use DataSource's to pull in highly dynamic data and even render user-specific pages.
|
|
43
|
+
4. For static routes, you don't have to worry about an API being down, or hitting it repeatedly. You can build in data and it will end up as optimized binary-encoded data served up with all the other assets of your site. If your CDN (static site host) is down, then the rest of your site is probably down anyway. If your site host is up, then so is all of your `DataSource` data. Also, it will be served up extremely quickly without needing to wait for any database queries to be performed, `andThen` requests to be resolved, etc., because all of that work and waiting was done at build-time!
|
|
44
44
|
|
|
45
45
|
|
|
46
46
|
## Mental Model
|
|
47
47
|
|
|
48
48
|
You can think of a DataSource as a declarative (not imperative) definition of data. It represents where to get the data from, and how to transform it (map, combine with other DataSources, etc.).
|
|
49
49
|
|
|
50
|
-
Even though an HTTP request is non-deterministic, you should think of it that way as much as possible with a DataSource because elm-pages will only perform a given DataSource.Http request once, and
|
|
51
|
-
it will share the result between any other DataSource.Http requests that have the exact same URL, Method, Body, and Headers.
|
|
52
50
|
|
|
53
|
-
|
|
51
|
+
## How do I actually use a DataSource?
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
<https://my-api.example.com/increment-counter>
|
|
58
|
-
-> Returns 2
|
|
59
|
-
<https://my-api.example.com/increment-counter>
|
|
60
|
-
-> Returns 3
|
|
53
|
+
This is very similar to Cmd's in Elm. You don't perform a Cmd just by running that code, as you might in a language like JavaScript. Instead, a Cmd _will not do anything_ unless you pass it to The Elm Architecture to have it perform it for you.
|
|
54
|
+
You pass a Cmd to The Elm Architecture by returning it in `init` or `update`. So actually a `Cmd` is just data describing a side-effect that the Elm runtime can perform, and how to build a `Msg` once it's done.
|
|
61
55
|
|
|
62
|
-
|
|
56
|
+
`DataSource`'s are very similar. A `DataSource` doesn't do anything just by "running" it. Just like a `Cmd`, it's only data that describes a side-effect to perform. Specifically, it describes a side-effect that the _elm-pages runtime_ can perform.
|
|
57
|
+
There are a few places where we can pass a `DataSource` to the `elm-pages` runtime so it can perform it. Most commonly, you give a field called `data` in your Route Module's definition. Instead of giving a `Msg` when the side-effects are complete,
|
|
58
|
+
the page will render once all of the side-effects have run and all the data is resolved. `elm-pages` makes the resolved data available your Route Module's `init`, `view`, `update`, and `head` functions, similar to how a regular Elm app passes `Msg`'s in
|
|
59
|
+
to `update`.
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
DataSource.Http.get
|
|
66
|
-
"https://my-api.example.com/increment-counter"
|
|
67
|
-
Decode.int
|
|
68
|
-
|
|
69
|
-
No matter how many places we use that `DataSource`, its response will be "locked in" (let's say the response was `3`, then every page would have the same value of `3` for that request).
|
|
70
|
-
|
|
71
|
-
So even though HTTP requests, JavaScript code, etc. can be non-deterministic, a `DataSource` always represents a single snapshot of a resource, and those values will be re-used as if they were a deterministic, declarative resource.
|
|
72
|
-
So it's best to use that mental model to avoid confusion.
|
|
61
|
+
Any place in your `elm-pages` app where the framework lets you pass in a value of type `DataSource` is a place where you can give `elm-pages` a DataSource to perform (for example, `Site.head` where you define global head tags for your site).
|
|
73
62
|
|
|
74
63
|
|
|
75
64
|
## Basics
|
package/src/Form.elm
CHANGED
|
@@ -272,7 +272,7 @@ import Dict exposing (Dict)
|
|
|
272
272
|
import Form.Field as Field exposing (Field(..))
|
|
273
273
|
import Form.FieldStatus as FieldStatus exposing (FieldStatus)
|
|
274
274
|
import Form.FieldView
|
|
275
|
-
import Form.Validation as Validation exposing (Combined
|
|
275
|
+
import Form.Validation as Validation exposing (Combined)
|
|
276
276
|
import Html exposing (Html)
|
|
277
277
|
import Html.Attributes as Attr
|
|
278
278
|
import Html.Lazy
|
|
@@ -332,7 +332,7 @@ dynamic :
|
|
|
332
332
|
->
|
|
333
333
|
Form
|
|
334
334
|
error
|
|
335
|
-
{ combine : Validation error parsed named constraints1
|
|
335
|
+
{ combine : Validation.Validation error parsed named constraints1
|
|
336
336
|
, view : subView
|
|
337
337
|
}
|
|
338
338
|
data
|
|
@@ -341,7 +341,7 @@ dynamic :
|
|
|
341
341
|
Form
|
|
342
342
|
error
|
|
343
343
|
--((decider -> Validation error parsed named) -> combined)
|
|
344
|
-
({ combine : decider -> Validation error parsed named constraints1
|
|
344
|
+
({ combine : decider -> Validation.Validation error parsed named constraints1
|
|
345
345
|
, view : decider -> subView
|
|
346
346
|
}
|
|
347
347
|
-> combineAndView
|
|
@@ -674,14 +674,14 @@ hiddenField name (Field fieldParser _) (Form definitions parseFn toInitialValues
|
|
|
674
674
|
toServerForm :
|
|
675
675
|
Form
|
|
676
676
|
error
|
|
677
|
-
{ combine : Validation error combined kind constraints
|
|
677
|
+
{ combine : Validation.Validation error combined kind constraints
|
|
678
678
|
, view : viewFn
|
|
679
679
|
}
|
|
680
680
|
data
|
|
681
681
|
->
|
|
682
682
|
Form
|
|
683
683
|
error
|
|
684
|
-
{ combine : Validation error (DataSource (Validation error combined kind constraints)) kind constraints
|
|
684
|
+
{ combine : Validation.Validation error (DataSource (Validation.Validation error combined kind constraints)) kind constraints
|
|
685
685
|
, view : viewFn
|
|
686
686
|
}
|
|
687
687
|
data
|
|
@@ -694,7 +694,7 @@ toServerForm (Form a b c) =
|
|
|
694
694
|
{ result : Dict String (List error)
|
|
695
695
|
, isMatchCandidate : Bool
|
|
696
696
|
, combineAndView :
|
|
697
|
-
{ combine : Validation error (DataSource (Validation error combined kind constraints)) kind constraints
|
|
697
|
+
{ combine : Validation.Validation error (DataSource (Validation.Validation error combined kind constraints)) kind constraints
|
|
698
698
|
, view : viewFn
|
|
699
699
|
}
|
|
700
700
|
}
|
|
@@ -844,7 +844,7 @@ parse :
|
|
|
844
844
|
String
|
|
845
845
|
-> AppContext app actionData
|
|
846
846
|
-> data
|
|
847
|
-
-> Form error { info | combine : Validation error parsed named constraints } data
|
|
847
|
+
-> Form error { info | combine : Validation.Validation error parsed named constraints } data
|
|
848
848
|
-> ( Maybe parsed, Dict String (List error) )
|
|
849
849
|
parse formId app data (Form _ parser _) =
|
|
850
850
|
-- TODO Get transition context from `app` so you can check if the current form is being submitted
|
|
@@ -883,7 +883,7 @@ insertIfNonempty key values dict =
|
|
|
883
883
|
{-| -}
|
|
884
884
|
runServerSide :
|
|
885
885
|
List ( String, String )
|
|
886
|
-
-> Form error (Validation error parsed kind constraints) data
|
|
886
|
+
-> Form error (Validation.Validation error parsed kind constraints) data
|
|
887
887
|
-> ( Bool, ( Maybe parsed, Dict String (List error) ) )
|
|
888
888
|
runServerSide rawFormData (Form _ parser _) =
|
|
889
889
|
let
|
|
@@ -989,7 +989,7 @@ renderHtml :
|
|
|
989
989
|
->
|
|
990
990
|
FinalForm
|
|
991
991
|
error
|
|
992
|
-
(Validation error parsed named constraints)
|
|
992
|
+
(Validation.Validation error parsed named constraints)
|
|
993
993
|
data
|
|
994
994
|
(Context error data
|
|
995
995
|
-> List (Html (Pages.Msg.Msg msg))
|
|
@@ -1025,14 +1025,14 @@ toDynamicFetcher :
|
|
|
1025
1025
|
->
|
|
1026
1026
|
Form
|
|
1027
1027
|
error
|
|
1028
|
-
{ combine : Validation error parsed field constraints
|
|
1028
|
+
{ combine : Validation.Validation error parsed field constraints
|
|
1029
1029
|
, view : Context error data -> view
|
|
1030
1030
|
}
|
|
1031
1031
|
data
|
|
1032
1032
|
->
|
|
1033
1033
|
FinalForm
|
|
1034
1034
|
error
|
|
1035
|
-
(Validation error parsed field constraints)
|
|
1035
|
+
(Validation.Validation error parsed field constraints)
|
|
1036
1036
|
data
|
|
1037
1037
|
(Context error data -> view)
|
|
1038
1038
|
userMsg
|
|
@@ -1098,14 +1098,14 @@ toDynamicTransition :
|
|
|
1098
1098
|
->
|
|
1099
1099
|
Form
|
|
1100
1100
|
error
|
|
1101
|
-
{ combine : Validation error parsed field constraints
|
|
1101
|
+
{ combine : Validation.Validation error parsed field constraints
|
|
1102
1102
|
, view : Context error data -> view
|
|
1103
1103
|
}
|
|
1104
1104
|
data
|
|
1105
1105
|
->
|
|
1106
1106
|
FinalForm
|
|
1107
1107
|
error
|
|
1108
|
-
(Validation error parsed field constraints)
|
|
1108
|
+
(Validation.Validation error parsed field constraints)
|
|
1109
1109
|
data
|
|
1110
1110
|
(Context error data -> view)
|
|
1111
1111
|
userMsg
|
|
@@ -1126,7 +1126,7 @@ toDynamicTransition name (Form a b c) =
|
|
|
1126
1126
|
{ result : Dict String (List error)
|
|
1127
1127
|
, isMatchCandidate : Bool
|
|
1128
1128
|
, combineAndView :
|
|
1129
|
-
{ combine : Validation error parsed field constraints
|
|
1129
|
+
{ combine : Validation.Validation error parsed field constraints
|
|
1130
1130
|
, view : Context error data -> view
|
|
1131
1131
|
}
|
|
1132
1132
|
}
|
|
@@ -1136,7 +1136,7 @@ toDynamicTransition name (Form a b c) =
|
|
|
1136
1136
|
-> FormState
|
|
1137
1137
|
->
|
|
1138
1138
|
{ result :
|
|
1139
|
-
( Validation error parsed field constraints
|
|
1139
|
+
( Validation.Validation error parsed field constraints
|
|
1140
1140
|
, Dict String (List error)
|
|
1141
1141
|
)
|
|
1142
1142
|
, isMatchCandidate : Bool
|
|
@@ -1150,7 +1150,7 @@ toDynamicTransition name (Form a b c) =
|
|
|
1150
1150
|
{ result : Dict String (List error)
|
|
1151
1151
|
, isMatchCandidate : Bool
|
|
1152
1152
|
, combineAndView :
|
|
1153
|
-
{ combine : Validation error parsed field constraints
|
|
1153
|
+
{ combine : Validation.Validation error parsed field constraints
|
|
1154
1154
|
, view : Context error data -> view
|
|
1155
1155
|
}
|
|
1156
1156
|
}
|
|
@@ -1190,7 +1190,7 @@ renderStyledHtml :
|
|
|
1190
1190
|
->
|
|
1191
1191
|
FinalForm
|
|
1192
1192
|
error
|
|
1193
|
-
(Validation error parsed named constraints)
|
|
1193
|
+
(Validation.Validation error parsed named constraints)
|
|
1194
1194
|
data
|
|
1195
1195
|
(Context error data
|
|
1196
1196
|
-> List (Html.Styled.Html (Pages.Msg.Msg msg))
|
|
@@ -1219,7 +1219,7 @@ renderHelper :
|
|
|
1219
1219
|
-> RenderOptions msg
|
|
1220
1220
|
-> AppContext app actionData
|
|
1221
1221
|
-> data
|
|
1222
|
-
-> FormInternal error (Validation error parsed named constraints) data (Context error data -> List (Html (Pages.Msg.Msg msg)))
|
|
1222
|
+
-> FormInternal error (Validation.Validation error parsed named constraints) data (Context error data -> List (Html (Pages.Msg.Msg msg)))
|
|
1223
1223
|
-> Html (Pages.Msg.Msg msg)
|
|
1224
1224
|
renderHelper attrs maybe options formState data form =
|
|
1225
1225
|
-- TODO Get transition context from `app` so you can check if the current form is being submitted
|
|
@@ -1261,7 +1261,7 @@ renderStyledHelper :
|
|
|
1261
1261
|
-> RenderOptions msg
|
|
1262
1262
|
-> AppContext app actionData
|
|
1263
1263
|
-> data
|
|
1264
|
-
-> FormInternal error (Validation error parsed named constraints) data (Context error data -> List (Html.Styled.Html (Pages.Msg.Msg msg)))
|
|
1264
|
+
-> FormInternal error (Validation.Validation error parsed named constraints) data (Context error data -> List (Html.Styled.Html (Pages.Msg.Msg msg)))
|
|
1265
1265
|
-> Html.Styled.Html (Pages.Msg.Msg msg)
|
|
1266
1266
|
renderStyledHelper attrs maybe options formState data form =
|
|
1267
1267
|
-- TODO Get transition context from `app` so you can check if the current form is being submitted
|
|
@@ -1304,7 +1304,7 @@ helperValues :
|
|
|
1304
1304
|
-> AppContext app actionData
|
|
1305
1305
|
-> data
|
|
1306
1306
|
---> Form error parsed data view
|
|
1307
|
-
-> FormInternal error (Validation error parsed named constraints) data (Context error data -> List view)
|
|
1307
|
+
-> FormInternal error (Validation.Validation error parsed named constraints) data (Context error data -> List view)
|
|
1308
1308
|
-> { formId : String, hiddenInputs : List view, children : List view, isValid : Bool }
|
|
1309
1309
|
helperValues toHiddenInput maybe options formState data (FormInternal fieldDefinitions parser toInitialValues) =
|
|
1310
1310
|
let
|
|
@@ -1343,18 +1343,18 @@ helperValues toHiddenInput maybe options formState data (FormInternal fieldDefin
|
|
|
1343
1343
|
|> Dict.union part2
|
|
1344
1344
|
|
|
1345
1345
|
parsed :
|
|
1346
|
-
{ result : ( Validation error parsed named constraints, Dict String (List error) )
|
|
1346
|
+
{ result : ( Validation.Validation error parsed named constraints, Dict String (List error) )
|
|
1347
1347
|
, isMatchCandidate : Bool
|
|
1348
1348
|
, view : Context error data -> List view
|
|
1349
1349
|
}
|
|
1350
1350
|
parsed =
|
|
1351
1351
|
parser (Just data) thisFormState
|
|
1352
1352
|
|
|
1353
|
-
withoutServerErrors : Validation error parsed named constraints
|
|
1353
|
+
withoutServerErrors : Validation.Validation error parsed named constraints
|
|
1354
1354
|
withoutServerErrors =
|
|
1355
1355
|
parsed |> mergeResults
|
|
1356
1356
|
|
|
1357
|
-
withServerErrors : Validation error parsed named constraints
|
|
1357
|
+
withServerErrors : Validation.Validation error parsed named constraints
|
|
1358
1358
|
withServerErrors =
|
|
1359
1359
|
mergeResults
|
|
1360
1360
|
{ parsed
|
|
@@ -1498,7 +1498,7 @@ initCombined :
|
|
|
1498
1498
|
Form
|
|
1499
1499
|
error
|
|
1500
1500
|
{ combineAndView
|
|
1501
|
-
| combine : Validation error parsed kind constraints
|
|
1501
|
+
| combine : Validation.Validation error parsed kind constraints
|
|
1502
1502
|
}
|
|
1503
1503
|
input
|
|
1504
1504
|
-> ServerForms error combined
|
|
@@ -1511,7 +1511,7 @@ initCombined mapFn (Form _ parseFn _) =
|
|
|
1511
1511
|
foo :
|
|
1512
1512
|
{ result : Dict String (List error)
|
|
1513
1513
|
, isMatchCandidate : Bool
|
|
1514
|
-
, combineAndView : { combineAndView | combine : Validation error parsed kind constraints }
|
|
1514
|
+
, combineAndView : { combineAndView | combine : Validation.Validation error parsed kind constraints }
|
|
1515
1515
|
}
|
|
1516
1516
|
foo =
|
|
1517
1517
|
parseFn Nothing formState
|
|
@@ -1532,7 +1532,7 @@ combine :
|
|
|
1532
1532
|
Form
|
|
1533
1533
|
error
|
|
1534
1534
|
{ combineAndView
|
|
1535
|
-
| combine : Validation error parsed kind constraints
|
|
1535
|
+
| combine : Validation.Validation error parsed kind constraints
|
|
1536
1536
|
}
|
|
1537
1537
|
input
|
|
1538
1538
|
-> ServerForms error combined
|
|
@@ -1546,7 +1546,7 @@ combine mapFn (Form _ parseFn _) (ServerForms serverForms) =
|
|
|
1546
1546
|
foo :
|
|
1547
1547
|
{ result : Dict String (List error)
|
|
1548
1548
|
, isMatchCandidate : Bool
|
|
1549
|
-
, combineAndView : { combineAndView | combine : Validation error parsed kind constraints }
|
|
1549
|
+
, combineAndView : { combineAndView | combine : Validation.Validation error parsed kind constraints }
|
|
1550
1550
|
}
|
|
1551
1551
|
foo =
|
|
1552
1552
|
parseFn Nothing formState
|
|
@@ -1568,10 +1568,10 @@ initCombinedServer :
|
|
|
1568
1568
|
Form
|
|
1569
1569
|
error
|
|
1570
1570
|
{ combineAndView
|
|
1571
|
-
| combine : Combined error (DataSource (Validation error parsed kind constraints))
|
|
1571
|
+
| combine : Combined error (DataSource (Validation.Validation error parsed kind constraints))
|
|
1572
1572
|
}
|
|
1573
1573
|
input
|
|
1574
|
-
-> ServerForms error (DataSource (Validation error combined kind constraints))
|
|
1574
|
+
-> ServerForms error (DataSource (Validation.Validation error combined kind constraints))
|
|
1575
1575
|
initCombinedServer mapFn serverForms =
|
|
1576
1576
|
initCombined (DataSource.map (Validation.map mapFn)) serverForms
|
|
1577
1577
|
|
|
@@ -1584,11 +1584,11 @@ combineServer :
|
|
|
1584
1584
|
error
|
|
1585
1585
|
{ combineAndView
|
|
1586
1586
|
| combine :
|
|
1587
|
-
Combined error (DataSource (Validation error parsed kind constraints))
|
|
1587
|
+
Combined error (DataSource (Validation.Validation error parsed kind constraints))
|
|
1588
1588
|
}
|
|
1589
1589
|
input
|
|
1590
|
-
-> ServerForms error (DataSource (Validation error combined kind constraints))
|
|
1591
|
-
-> ServerForms error (DataSource (Validation error combined kind constraints))
|
|
1590
|
+
-> ServerForms error (DataSource (Validation.Validation error combined kind constraints))
|
|
1591
|
+
-> ServerForms error (DataSource (Validation.Validation error combined kind constraints))
|
|
1592
1592
|
combineServer mapFn a b =
|
|
1593
1593
|
combine (DataSource.map (Validation.map mapFn)) a b
|
|
1594
1594
|
|
package/src/Head.elm
CHANGED
|
@@ -9,14 +9,118 @@ module Head exposing
|
|
|
9
9
|
, toJson, canonicalLink
|
|
10
10
|
)
|
|
11
11
|
|
|
12
|
-
{-| This module contains
|
|
13
|
-
|
|
14
|
-
when
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
12
|
+
{-| This module contains functions for building up
|
|
13
|
+
tags with metadata that will be rendered into the page's `<head>` tag
|
|
14
|
+
when your page is pre-rendered (or server-rendered, in the case of your server-rendered Route Modules). See also [`Head.Seo`](Head-Seo),
|
|
15
|
+
which has some helper functions for defining OpenGraph and Twitter tags.
|
|
16
|
+
|
|
17
|
+
One of the unique benefits of using `elm-pages` is that all of your routes (both pre-rendered and server-rendered) fully
|
|
18
|
+
render the HTML of your page. That includes the full initial `view` (with the DataSource resolved, and the `Model` from `init`).
|
|
19
|
+
The HTML response also includes all of the `Head` tags, which are defined in two places:
|
|
20
|
+
|
|
21
|
+
1. `app/Site.elm` - there is a `head` definition in `Site.elm` where you define global head tags that will be included on every rendered page.
|
|
22
|
+
|
|
23
|
+
2. In each Route Module - there is a `head` function where you have access to both the resolved `DataSource` and the `RouteParams` for the page and can return head tags based on that.
|
|
24
|
+
|
|
25
|
+
Here is a common set of global head tags that we can define in `Site.elm`:
|
|
26
|
+
|
|
27
|
+
module Site exposing (canonicalUrl, config)
|
|
28
|
+
|
|
29
|
+
import DataSource exposing (DataSource)
|
|
30
|
+
import Head
|
|
31
|
+
import MimeType
|
|
32
|
+
import SiteConfig exposing (SiteConfig)
|
|
33
|
+
|
|
34
|
+
config : SiteConfig
|
|
35
|
+
config =
|
|
36
|
+
{ canonicalUrl = "<https://elm-pages.com">
|
|
37
|
+
, head = head
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
head : DataSource (List Head.Tag)
|
|
41
|
+
head =
|
|
42
|
+
[ Head.metaName "viewport" (Head.raw "width=device-width,initial-scale=1")
|
|
43
|
+
, Head.metaName "mobile-web-app-capable" (Head.raw "yes")
|
|
44
|
+
, Head.metaName "theme-color" (Head.raw "#ffffff")
|
|
45
|
+
, Head.metaName "apple-mobile-web-app-capable" (Head.raw "yes")
|
|
46
|
+
, Head.metaName "apple-mobile-web-app-status-bar-style" (Head.raw "black-translucent")
|
|
47
|
+
, Head.icon [ ( 32, 32 ) ] MimeType.Png (cloudinaryIcon MimeType.Png 32)
|
|
48
|
+
, Head.icon [ ( 16, 16 ) ] MimeType.Png (cloudinaryIcon MimeType.Png 16)
|
|
49
|
+
, Head.appleTouchIcon (Just 180) (cloudinaryIcon MimeType.Png 180)
|
|
50
|
+
, Head.appleTouchIcon (Just 192) (cloudinaryIcon MimeType.Png 192)
|
|
51
|
+
]
|
|
52
|
+
|> DataSource.succeed
|
|
53
|
+
|
|
54
|
+
And here is a `head` function for a Route Module for a blog post. Note that we have access to our `DataSource` Data and
|
|
55
|
+
are using it to populate article metadata like the article's image, publish date, etc.
|
|
56
|
+
|
|
57
|
+
import Article
|
|
58
|
+
import DataSource
|
|
59
|
+
import Date
|
|
60
|
+
import Head
|
|
61
|
+
import Head.Seo
|
|
62
|
+
import Path
|
|
63
|
+
import Route exposing (Route)
|
|
64
|
+
import RouteBuilder exposing (StatelessRoute, StaticPayload)
|
|
65
|
+
|
|
66
|
+
type alias RouteParams =
|
|
67
|
+
{ slug : String }
|
|
68
|
+
|
|
69
|
+
type alias Data =
|
|
70
|
+
{ metadata : ArticleMetadata
|
|
71
|
+
, body : List Markdown.Block.Block
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
route : StatelessRoute RouteParams Data ActionData
|
|
75
|
+
route =
|
|
76
|
+
RouteBuilder.preRender
|
|
77
|
+
{ data = data
|
|
78
|
+
, head = head
|
|
79
|
+
, pages = pages
|
|
80
|
+
}
|
|
81
|
+
|> RouteBuilder.buildNoState { view = view }
|
|
82
|
+
|
|
83
|
+
head :
|
|
84
|
+
StaticPayload Data ActionData RouteParams
|
|
85
|
+
-> List Head.Tag
|
|
86
|
+
head static =
|
|
87
|
+
let
|
|
88
|
+
metadata =
|
|
89
|
+
static.data.metadata
|
|
90
|
+
in
|
|
91
|
+
Head.Seo.summaryLarge
|
|
92
|
+
{ canonicalUrlOverride = Nothing
|
|
93
|
+
, siteName = "elm-pages"
|
|
94
|
+
, image =
|
|
95
|
+
{ url = metadata.image
|
|
96
|
+
, alt = metadata.description
|
|
97
|
+
, dimensions = Nothing
|
|
98
|
+
, mimeType = Nothing
|
|
99
|
+
}
|
|
100
|
+
, description = metadata.description
|
|
101
|
+
, locale = Nothing
|
|
102
|
+
, title = metadata.title
|
|
103
|
+
}
|
|
104
|
+
|> Head.Seo.article
|
|
105
|
+
{ tags = []
|
|
106
|
+
, section = Nothing
|
|
107
|
+
, publishedTime = Just (DateOrDateTime.Date metadata.published)
|
|
108
|
+
, modifiedTime = Nothing
|
|
109
|
+
, expirationTime = Nothing
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
## Why is pre-rendered HTML important? Does it still matter for SEO?
|
|
114
|
+
|
|
115
|
+
Many search engines are able to execute JavaScript now. However, not all are, and even with crawlers like Google, there
|
|
116
|
+
is a longer lead time for your pages to be indexed when you have HTML with a blank page that is only visible after the JavaScript executes.
|
|
117
|
+
|
|
118
|
+
But most importantly, many tools that unfurl links will not execute JavaScript at all, but rather simply do a simple pass to parse your `<head>` tags.
|
|
119
|
+
It is not viable or reliable to add `<head>` tags for metadata on the client-side, it must be present in the initial HTML payload. Otherwise you may not
|
|
120
|
+
get unfurling preview content when you share a link to your site on Slack, Twitter, etc.
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
## Building up Head Tags
|
|
20
124
|
|
|
21
125
|
@docs Tag, metaName, metaProperty, metaRedirect
|
|
22
126
|
@docs rssLink, sitemapLink, rootLanguage, manifestLink
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
module MultiDict exposing (MultiDict, empty, get, insert, keys, remove, set)
|
|
2
|
+
|
|
3
|
+
import Dict exposing (Dict)
|
|
4
|
+
import List.Extra
|
|
5
|
+
import List.Nonempty as NonEmpty
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
type alias NonEmpty a =
|
|
9
|
+
NonEmpty.Nonempty a
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
type MultiDict k v
|
|
13
|
+
= MultiDict (Dict k (NonEmpty v))
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
empty : MultiDict k v
|
|
17
|
+
empty =
|
|
18
|
+
MultiDict Dict.empty
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
insert : comparable -> v -> MultiDict comparable v -> MultiDict comparable v
|
|
22
|
+
insert key value (MultiDict dict) =
|
|
23
|
+
MultiDict
|
|
24
|
+
(Dict.update key (Maybe.map (NonEmpty.cons value) >> Maybe.withDefault (NonEmpty.fromElement value) >> Just) dict)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
get : comparable -> MultiDict comparable v -> List v
|
|
28
|
+
get key (MultiDict dict) =
|
|
29
|
+
Dict.get key dict
|
|
30
|
+
|> Maybe.map NonEmpty.toList
|
|
31
|
+
|> Maybe.withDefault []
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
keys : MultiDict k v -> List k
|
|
35
|
+
keys (MultiDict dict) =
|
|
36
|
+
Dict.toList dict
|
|
37
|
+
|> List.concatMap (\( k, vs ) -> List.repeat (NonEmpty.length vs) k)
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
remove : comparable -> v -> MultiDict comparable v -> MultiDict comparable v
|
|
41
|
+
remove key value (MultiDict dict) =
|
|
42
|
+
MultiDict
|
|
43
|
+
(Dict.update key (Maybe.andThen (NonEmpty.toList >> List.Extra.remove value >> NonEmpty.fromList)) dict)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
set : comparable -> List v -> MultiDict comparable v -> MultiDict comparable v
|
|
47
|
+
set key values (MultiDict dict) =
|
|
48
|
+
MultiDict
|
|
49
|
+
(Dict.update key (\_ -> NonEmpty.fromList values) dict)
|
package/src/Pages/Generate.elm
CHANGED
|
@@ -5,7 +5,10 @@ module Pages.Generate exposing
|
|
|
5
5
|
, preRender, single
|
|
6
6
|
)
|
|
7
7
|
|
|
8
|
-
{-|
|
|
8
|
+
{-| This module provides some functions for scaffolding code for a new Route Module. It uses [`elm-codegen`'s API](https://package.elm-lang.org/packages/mdgriffith/elm-codegen/latest/) for generating code.
|
|
9
|
+
|
|
10
|
+
Typically you'll want to use this via the `elm-pages codegen` CLI command. The default starter template includes a file that uses these functions, which you can tweak to customize your scaffolding commands.
|
|
11
|
+
Learn more about [the `elm-pages run` CLI command in its docs page](https://elm-pages.com/docs/run-command).
|
|
9
12
|
|
|
10
13
|
|
|
11
14
|
## Initializing the Generator Builder
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
module Pages.GeneratorProgramConfig exposing (GeneratorProgramConfig)
|
|
2
|
+
|
|
3
|
+
import Json.Decode as Decode
|
|
4
|
+
import Json.Encode
|
|
5
|
+
import Pages.Internal.Platform.ToJsPayload
|
|
6
|
+
import Pages.Script exposing (Script)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
type alias GeneratorProgramConfig =
|
|
10
|
+
{ data : Script
|
|
11
|
+
, toJsPort : Json.Encode.Value -> Cmd Never
|
|
12
|
+
, fromJsPort : Sub Decode.Value
|
|
13
|
+
, gotBatchSub : Sub Decode.Value
|
|
14
|
+
, sendPageData : Pages.Internal.Platform.ToJsPayload.NewThingForPort -> Cmd Never
|
|
15
|
+
}
|