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.
Files changed (509) hide show
  1. package/README.md +10 -1
  2. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2479 -1639
  3. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.75364bef27ac5a049b87c3325f846fc6dbda23b8ed7187ed06748b96bb6a50a7.json +1 -0
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. 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
  26. 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
  27. 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
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +38 -0
  43. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +29673 -0
  44. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +1 -0
  45. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +27 -0
  46. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  47. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  48. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  49. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  50. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  51. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  52. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  53. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1327 -122
  54. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +15412 -13274
  55. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  56. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  57. package/generator/dead-code-review/elm.json +8 -6
  58. package/generator/dead-code-review/node_modules/.package-lock.json +484 -0
  59. package/generator/dead-code-review/node_modules/ansi-styles/index.d.ts +345 -0
  60. package/generator/dead-code-review/node_modules/ansi-styles/index.js +163 -0
  61. package/generator/dead-code-review/node_modules/ansi-styles/license +9 -0
  62. package/generator/dead-code-review/node_modules/ansi-styles/package.json +56 -0
  63. package/generator/dead-code-review/node_modules/ansi-styles/readme.md +152 -0
  64. package/generator/dead-code-review/node_modules/anymatch/LICENSE +15 -0
  65. package/generator/dead-code-review/node_modules/anymatch/README.md +87 -0
  66. package/generator/dead-code-review/node_modules/anymatch/index.d.ts +20 -0
  67. package/generator/dead-code-review/node_modules/anymatch/index.js +104 -0
  68. package/generator/dead-code-review/node_modules/anymatch/package.json +48 -0
  69. package/generator/dead-code-review/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  70. package/generator/dead-code-review/node_modules/balanced-match/LICENSE.md +21 -0
  71. package/generator/dead-code-review/node_modules/balanced-match/README.md +97 -0
  72. package/generator/dead-code-review/node_modules/balanced-match/index.js +62 -0
  73. package/generator/dead-code-review/node_modules/balanced-match/package.json +48 -0
  74. package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json +260 -0
  75. package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json.d.ts +3 -0
  76. package/generator/dead-code-review/node_modules/binary-extensions/index.d.ts +14 -0
  77. package/generator/dead-code-review/node_modules/binary-extensions/index.js +1 -0
  78. package/generator/dead-code-review/node_modules/binary-extensions/license +9 -0
  79. package/generator/dead-code-review/node_modules/binary-extensions/package.json +38 -0
  80. package/generator/dead-code-review/node_modules/binary-extensions/readme.md +41 -0
  81. package/generator/dead-code-review/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
  82. package/generator/dead-code-review/node_modules/brace-expansion/LICENSE +21 -0
  83. package/generator/dead-code-review/node_modules/brace-expansion/README.md +135 -0
  84. package/generator/dead-code-review/node_modules/brace-expansion/index.js +203 -0
  85. package/generator/dead-code-review/node_modules/brace-expansion/package.json +46 -0
  86. package/generator/dead-code-review/node_modules/braces/CHANGELOG.md +184 -0
  87. package/generator/dead-code-review/node_modules/braces/LICENSE +21 -0
  88. package/generator/dead-code-review/node_modules/braces/README.md +593 -0
  89. package/generator/dead-code-review/node_modules/braces/index.js +170 -0
  90. package/generator/dead-code-review/node_modules/braces/lib/compile.js +57 -0
  91. package/generator/dead-code-review/node_modules/braces/lib/constants.js +57 -0
  92. package/generator/dead-code-review/node_modules/braces/lib/expand.js +113 -0
  93. package/generator/dead-code-review/node_modules/braces/lib/parse.js +333 -0
  94. package/generator/dead-code-review/node_modules/braces/lib/stringify.js +32 -0
  95. package/generator/dead-code-review/node_modules/braces/lib/utils.js +112 -0
  96. package/generator/dead-code-review/node_modules/braces/package.json +77 -0
  97. package/generator/dead-code-review/node_modules/chalk/index.d.ts +415 -0
  98. package/generator/dead-code-review/node_modules/chalk/license +9 -0
  99. package/generator/dead-code-review/node_modules/chalk/package.json +68 -0
  100. package/generator/dead-code-review/node_modules/chalk/readme.md +341 -0
  101. package/generator/dead-code-review/node_modules/chalk/source/index.js +229 -0
  102. package/generator/dead-code-review/node_modules/chalk/source/templates.js +134 -0
  103. package/generator/dead-code-review/node_modules/chalk/source/util.js +39 -0
  104. package/generator/dead-code-review/node_modules/chokidar/LICENSE +21 -0
  105. package/generator/dead-code-review/node_modules/chokidar/README.md +308 -0
  106. package/generator/dead-code-review/node_modules/chokidar/index.js +973 -0
  107. package/generator/dead-code-review/node_modules/chokidar/lib/constants.js +65 -0
  108. package/generator/dead-code-review/node_modules/chokidar/lib/fsevents-handler.js +524 -0
  109. package/generator/dead-code-review/node_modules/chokidar/lib/nodefs-handler.js +654 -0
  110. package/generator/dead-code-review/node_modules/chokidar/package.json +85 -0
  111. package/generator/dead-code-review/node_modules/chokidar/types/index.d.ts +188 -0
  112. package/generator/dead-code-review/node_modules/color-convert/CHANGELOG.md +54 -0
  113. package/generator/dead-code-review/node_modules/color-convert/LICENSE +21 -0
  114. package/generator/dead-code-review/node_modules/color-convert/README.md +68 -0
  115. package/generator/dead-code-review/node_modules/color-convert/conversions.js +839 -0
  116. package/generator/dead-code-review/node_modules/color-convert/index.js +81 -0
  117. package/generator/dead-code-review/node_modules/color-convert/package.json +48 -0
  118. package/generator/dead-code-review/node_modules/color-convert/route.js +97 -0
  119. package/generator/dead-code-review/node_modules/color-name/LICENSE +8 -0
  120. package/generator/dead-code-review/node_modules/color-name/README.md +11 -0
  121. package/generator/dead-code-review/node_modules/color-name/index.js +152 -0
  122. package/generator/dead-code-review/node_modules/color-name/package.json +28 -0
  123. package/generator/dead-code-review/node_modules/commander/LICENSE +22 -0
  124. package/generator/dead-code-review/node_modules/commander/Readme.md +1118 -0
  125. package/generator/dead-code-review/node_modules/commander/esm.mjs +16 -0
  126. package/generator/dead-code-review/node_modules/commander/index.js +27 -0
  127. package/generator/dead-code-review/node_modules/commander/lib/argument.js +147 -0
  128. package/generator/dead-code-review/node_modules/commander/lib/command.js +2160 -0
  129. package/generator/dead-code-review/node_modules/commander/lib/error.js +45 -0
  130. package/generator/dead-code-review/node_modules/commander/lib/help.js +406 -0
  131. package/generator/dead-code-review/node_modules/commander/lib/option.js +326 -0
  132. package/generator/dead-code-review/node_modules/commander/lib/suggestSimilar.js +100 -0
  133. package/generator/dead-code-review/node_modules/commander/package-support.json +16 -0
  134. package/generator/dead-code-review/node_modules/commander/package.json +80 -0
  135. package/generator/dead-code-review/node_modules/commander/typings/index.d.ts +881 -0
  136. package/generator/dead-code-review/node_modules/cross-spawn/CHANGELOG.md +130 -0
  137. package/generator/dead-code-review/node_modules/cross-spawn/LICENSE +21 -0
  138. package/generator/dead-code-review/node_modules/cross-spawn/README.md +96 -0
  139. package/generator/dead-code-review/node_modules/cross-spawn/index.js +39 -0
  140. package/generator/dead-code-review/node_modules/cross-spawn/lib/enoent.js +59 -0
  141. package/generator/dead-code-review/node_modules/cross-spawn/lib/parse.js +91 -0
  142. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/escape.js +45 -0
  143. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  144. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  145. package/generator/dead-code-review/node_modules/cross-spawn/package.json +73 -0
  146. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/LICENSE +373 -0
  147. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/README.md +64 -0
  148. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.d.ts +22 -0
  149. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.js +419 -0
  150. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm_bg.wasm +0 -0
  151. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/package.json +27 -0
  152. package/generator/dead-code-review/node_modules/elm-test/LICENSE +27 -0
  153. package/generator/dead-code-review/node_modules/elm-test/README.md +192 -0
  154. package/generator/dead-code-review/node_modules/elm-test/bin/elm-test +3 -0
  155. package/generator/dead-code-review/node_modules/elm-test/elm/elm.json +25 -0
  156. package/generator/dead-code-review/node_modules/elm-test/elm/src/Console/Text.elm +217 -0
  157. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Color.elm +30 -0
  158. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Monochrome.elm +39 -0
  159. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format.elm +212 -0
  160. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console.elm +207 -0
  161. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Highlightable.elm +48 -0
  162. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/JUnit.elm +161 -0
  163. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Json.elm +158 -0
  164. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Reporter.elm +53 -0
  165. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/TestResults.elm +113 -0
  166. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/JsMessage.elm +38 -0
  167. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Console.elm +230 -0
  168. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Diff.elm +326 -0
  169. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node.elm +440 -0
  170. package/generator/dead-code-review/node_modules/elm-test/lib/Compile.js +110 -0
  171. package/generator/dead-code-review/node_modules/elm-test/lib/DependencyProvider.js +343 -0
  172. package/generator/dead-code-review/node_modules/elm-test/lib/ElmCompiler.js +109 -0
  173. package/generator/dead-code-review/node_modules/elm-test/lib/ElmHome.js +47 -0
  174. package/generator/dead-code-review/node_modules/elm-test/lib/ElmJson.js +194 -0
  175. package/generator/dead-code-review/node_modules/elm-test/lib/FindTests.js +276 -0
  176. package/generator/dead-code-review/node_modules/elm-test/lib/Generate.js +294 -0
  177. package/generator/dead-code-review/node_modules/elm-test/lib/Install.js +290 -0
  178. package/generator/dead-code-review/node_modules/elm-test/lib/Parser.js +941 -0
  179. package/generator/dead-code-review/node_modules/elm-test/lib/Project.js +117 -0
  180. package/generator/dead-code-review/node_modules/elm-test/lib/Report.js +23 -0
  181. package/generator/dead-code-review/node_modules/elm-test/lib/RunTests.js +322 -0
  182. package/generator/dead-code-review/node_modules/elm-test/lib/Solve.js +76 -0
  183. package/generator/dead-code-review/node_modules/elm-test/lib/Supervisor.js +294 -0
  184. package/generator/dead-code-review/node_modules/elm-test/lib/SyncGet.js +45 -0
  185. package/generator/dead-code-review/node_modules/elm-test/lib/SyncGetWorker.js +36 -0
  186. package/generator/dead-code-review/node_modules/elm-test/lib/elm-test.js +318 -0
  187. package/generator/dead-code-review/node_modules/elm-test/package.json +69 -0
  188. package/generator/dead-code-review/node_modules/elm-test/templates/after.js +29 -0
  189. package/generator/dead-code-review/node_modules/elm-test/templates/before.js +58 -0
  190. package/generator/dead-code-review/node_modules/elm-test/templates/tests/Example.elm +10 -0
  191. package/generator/dead-code-review/node_modules/fill-range/LICENSE +21 -0
  192. package/generator/dead-code-review/node_modules/fill-range/README.md +237 -0
  193. package/generator/dead-code-review/node_modules/fill-range/index.js +249 -0
  194. package/generator/dead-code-review/node_modules/fill-range/package.json +69 -0
  195. package/generator/dead-code-review/node_modules/fs.realpath/LICENSE +43 -0
  196. package/generator/dead-code-review/node_modules/fs.realpath/README.md +33 -0
  197. package/generator/dead-code-review/node_modules/fs.realpath/index.js +66 -0
  198. package/generator/dead-code-review/node_modules/fs.realpath/old.js +303 -0
  199. package/generator/dead-code-review/node_modules/fs.realpath/package.json +26 -0
  200. package/generator/dead-code-review/node_modules/fsevents/LICENSE +22 -0
  201. package/generator/dead-code-review/node_modules/fsevents/README.md +83 -0
  202. package/generator/dead-code-review/node_modules/fsevents/fsevents.d.ts +46 -0
  203. package/generator/dead-code-review/node_modules/fsevents/fsevents.js +82 -0
  204. package/generator/dead-code-review/node_modules/fsevents/fsevents.node +0 -0
  205. package/generator/dead-code-review/node_modules/fsevents/package.json +62 -0
  206. package/generator/dead-code-review/node_modules/glob/LICENSE +15 -0
  207. package/generator/dead-code-review/node_modules/glob/README.md +378 -0
  208. package/generator/dead-code-review/node_modules/glob/common.js +240 -0
  209. package/generator/dead-code-review/node_modules/glob/glob.js +790 -0
  210. package/generator/dead-code-review/node_modules/glob/package.json +55 -0
  211. package/generator/dead-code-review/node_modules/glob/sync.js +486 -0
  212. package/generator/dead-code-review/node_modules/glob-parent/CHANGELOG.md +110 -0
  213. package/generator/dead-code-review/node_modules/glob-parent/LICENSE +15 -0
  214. package/generator/dead-code-review/node_modules/glob-parent/README.md +137 -0
  215. package/generator/dead-code-review/node_modules/glob-parent/index.js +42 -0
  216. package/generator/dead-code-review/node_modules/glob-parent/package.json +48 -0
  217. package/generator/dead-code-review/node_modules/graceful-fs/LICENSE +15 -0
  218. package/generator/dead-code-review/node_modules/graceful-fs/README.md +143 -0
  219. package/generator/dead-code-review/node_modules/graceful-fs/clone.js +23 -0
  220. package/generator/dead-code-review/node_modules/graceful-fs/graceful-fs.js +448 -0
  221. package/generator/dead-code-review/node_modules/graceful-fs/legacy-streams.js +118 -0
  222. package/generator/dead-code-review/node_modules/graceful-fs/package.json +50 -0
  223. package/generator/dead-code-review/node_modules/graceful-fs/polyfills.js +355 -0
  224. package/generator/dead-code-review/node_modules/has-flag/index.d.ts +39 -0
  225. package/generator/dead-code-review/node_modules/has-flag/index.js +8 -0
  226. package/generator/dead-code-review/node_modules/has-flag/license +9 -0
  227. package/generator/dead-code-review/node_modules/has-flag/package.json +46 -0
  228. package/generator/dead-code-review/node_modules/has-flag/readme.md +89 -0
  229. package/generator/dead-code-review/node_modules/inflight/LICENSE +15 -0
  230. package/generator/dead-code-review/node_modules/inflight/README.md +37 -0
  231. package/generator/dead-code-review/node_modules/inflight/inflight.js +54 -0
  232. package/generator/dead-code-review/node_modules/inflight/package.json +29 -0
  233. package/generator/dead-code-review/node_modules/inherits/LICENSE +16 -0
  234. package/generator/dead-code-review/node_modules/inherits/README.md +42 -0
  235. package/generator/dead-code-review/node_modules/inherits/inherits.js +9 -0
  236. package/generator/dead-code-review/node_modules/inherits/inherits_browser.js +27 -0
  237. package/generator/dead-code-review/node_modules/inherits/package.json +29 -0
  238. package/generator/dead-code-review/node_modules/is-binary-path/index.d.ts +17 -0
  239. package/generator/dead-code-review/node_modules/is-binary-path/index.js +7 -0
  240. package/generator/dead-code-review/node_modules/is-binary-path/license +9 -0
  241. package/generator/dead-code-review/node_modules/is-binary-path/package.json +40 -0
  242. package/generator/dead-code-review/node_modules/is-binary-path/readme.md +34 -0
  243. package/generator/dead-code-review/node_modules/is-extglob/LICENSE +21 -0
  244. package/generator/dead-code-review/node_modules/is-extglob/README.md +107 -0
  245. package/generator/dead-code-review/node_modules/is-extglob/index.js +20 -0
  246. package/generator/dead-code-review/node_modules/is-extglob/package.json +69 -0
  247. package/generator/dead-code-review/node_modules/is-glob/LICENSE +21 -0
  248. package/generator/dead-code-review/node_modules/is-glob/README.md +206 -0
  249. package/generator/dead-code-review/node_modules/is-glob/index.js +150 -0
  250. package/generator/dead-code-review/node_modules/is-glob/package.json +81 -0
  251. package/generator/dead-code-review/node_modules/is-number/LICENSE +21 -0
  252. package/generator/dead-code-review/node_modules/is-number/README.md +187 -0
  253. package/generator/dead-code-review/node_modules/is-number/index.js +18 -0
  254. package/generator/dead-code-review/node_modules/is-number/package.json +82 -0
  255. package/generator/dead-code-review/node_modules/isexe/LICENSE +15 -0
  256. package/generator/dead-code-review/node_modules/isexe/README.md +51 -0
  257. package/generator/dead-code-review/node_modules/isexe/index.js +57 -0
  258. package/generator/dead-code-review/node_modules/isexe/mode.js +41 -0
  259. package/generator/dead-code-review/node_modules/isexe/package.json +31 -0
  260. package/generator/dead-code-review/node_modules/isexe/test/basic.js +221 -0
  261. package/generator/dead-code-review/node_modules/isexe/windows.js +42 -0
  262. package/generator/dead-code-review/node_modules/minimatch/LICENSE +15 -0
  263. package/generator/dead-code-review/node_modules/minimatch/README.md +259 -0
  264. package/generator/dead-code-review/node_modules/minimatch/lib/path.js +4 -0
  265. package/generator/dead-code-review/node_modules/minimatch/minimatch.js +906 -0
  266. package/generator/dead-code-review/node_modules/minimatch/package.json +32 -0
  267. package/generator/dead-code-review/node_modules/normalize-path/LICENSE +21 -0
  268. package/generator/dead-code-review/node_modules/normalize-path/README.md +127 -0
  269. package/generator/dead-code-review/node_modules/normalize-path/index.js +35 -0
  270. package/generator/dead-code-review/node_modules/normalize-path/package.json +77 -0
  271. package/generator/dead-code-review/node_modules/once/LICENSE +15 -0
  272. package/generator/dead-code-review/node_modules/once/README.md +79 -0
  273. package/generator/dead-code-review/node_modules/once/once.js +42 -0
  274. package/generator/dead-code-review/node_modules/once/package.json +33 -0
  275. package/generator/dead-code-review/node_modules/path-key/index.d.ts +40 -0
  276. package/generator/dead-code-review/node_modules/path-key/index.js +16 -0
  277. package/generator/dead-code-review/node_modules/path-key/license +9 -0
  278. package/generator/dead-code-review/node_modules/path-key/package.json +39 -0
  279. package/generator/dead-code-review/node_modules/path-key/readme.md +61 -0
  280. package/generator/dead-code-review/node_modules/picomatch/CHANGELOG.md +136 -0
  281. package/generator/dead-code-review/node_modules/picomatch/LICENSE +21 -0
  282. package/generator/dead-code-review/node_modules/picomatch/README.md +708 -0
  283. package/generator/dead-code-review/node_modules/picomatch/index.js +3 -0
  284. package/generator/dead-code-review/node_modules/picomatch/lib/constants.js +179 -0
  285. package/generator/dead-code-review/node_modules/picomatch/lib/parse.js +1091 -0
  286. package/generator/dead-code-review/node_modules/picomatch/lib/picomatch.js +342 -0
  287. package/generator/dead-code-review/node_modules/picomatch/lib/scan.js +391 -0
  288. package/generator/dead-code-review/node_modules/picomatch/lib/utils.js +64 -0
  289. package/generator/dead-code-review/node_modules/picomatch/package.json +81 -0
  290. package/generator/dead-code-review/node_modules/readdirp/LICENSE +21 -0
  291. package/generator/dead-code-review/node_modules/readdirp/README.md +122 -0
  292. package/generator/dead-code-review/node_modules/readdirp/index.d.ts +43 -0
  293. package/generator/dead-code-review/node_modules/readdirp/index.js +287 -0
  294. package/generator/dead-code-review/node_modules/readdirp/package.json +122 -0
  295. package/generator/dead-code-review/node_modules/shebang-command/index.js +19 -0
  296. package/generator/dead-code-review/node_modules/shebang-command/license +9 -0
  297. package/generator/dead-code-review/node_modules/shebang-command/package.json +34 -0
  298. package/generator/dead-code-review/node_modules/shebang-command/readme.md +34 -0
  299. package/generator/dead-code-review/node_modules/shebang-regex/index.d.ts +22 -0
  300. package/generator/dead-code-review/node_modules/shebang-regex/index.js +2 -0
  301. package/generator/dead-code-review/node_modules/shebang-regex/license +9 -0
  302. package/generator/dead-code-review/node_modules/shebang-regex/package.json +35 -0
  303. package/generator/dead-code-review/node_modules/shebang-regex/readme.md +33 -0
  304. package/generator/dead-code-review/node_modules/split/.travis.yml +3 -0
  305. package/generator/dead-code-review/node_modules/split/LICENCE +22 -0
  306. package/generator/dead-code-review/node_modules/split/examples/pretty.js +26 -0
  307. package/generator/dead-code-review/node_modules/split/index.js +63 -0
  308. package/generator/dead-code-review/node_modules/split/package.json +30 -0
  309. package/generator/dead-code-review/node_modules/split/readme.markdown +72 -0
  310. package/generator/dead-code-review/node_modules/split/test/options.asynct.js +46 -0
  311. package/generator/dead-code-review/node_modules/split/test/partitioned_unicode.js +34 -0
  312. package/generator/dead-code-review/node_modules/split/test/split.asynct.js +137 -0
  313. package/generator/dead-code-review/node_modules/split/test/try_catch.asynct.js +51 -0
  314. package/generator/dead-code-review/node_modules/supports-color/browser.js +5 -0
  315. package/generator/dead-code-review/node_modules/supports-color/index.js +135 -0
  316. package/generator/dead-code-review/node_modules/supports-color/license +9 -0
  317. package/generator/dead-code-review/node_modules/supports-color/package.json +53 -0
  318. package/generator/dead-code-review/node_modules/supports-color/readme.md +76 -0
  319. package/generator/dead-code-review/node_modules/through/.travis.yml +5 -0
  320. package/generator/dead-code-review/node_modules/through/LICENSE.APACHE2 +15 -0
  321. package/generator/dead-code-review/node_modules/through/LICENSE.MIT +24 -0
  322. package/generator/dead-code-review/node_modules/through/index.js +108 -0
  323. package/generator/dead-code-review/node_modules/through/package.json +36 -0
  324. package/generator/dead-code-review/node_modules/through/readme.markdown +64 -0
  325. package/generator/dead-code-review/node_modules/through/test/async.js +28 -0
  326. package/generator/dead-code-review/node_modules/through/test/auto-destroy.js +30 -0
  327. package/generator/dead-code-review/node_modules/through/test/buffering.js +71 -0
  328. package/generator/dead-code-review/node_modules/through/test/end.js +45 -0
  329. package/generator/dead-code-review/node_modules/through/test/index.js +133 -0
  330. package/generator/dead-code-review/node_modules/to-regex-range/LICENSE +21 -0
  331. package/generator/dead-code-review/node_modules/to-regex-range/README.md +305 -0
  332. package/generator/dead-code-review/node_modules/to-regex-range/index.js +288 -0
  333. package/generator/dead-code-review/node_modules/to-regex-range/package.json +88 -0
  334. package/generator/dead-code-review/node_modules/which/CHANGELOG.md +166 -0
  335. package/generator/dead-code-review/node_modules/which/LICENSE +15 -0
  336. package/generator/dead-code-review/node_modules/which/README.md +54 -0
  337. package/generator/dead-code-review/node_modules/which/bin/node-which +52 -0
  338. package/generator/dead-code-review/node_modules/which/package.json +43 -0
  339. package/generator/dead-code-review/node_modules/which/which.js +125 -0
  340. package/generator/dead-code-review/node_modules/wrappy/LICENSE +15 -0
  341. package/generator/dead-code-review/node_modules/wrappy/README.md +36 -0
  342. package/generator/dead-code-review/node_modules/wrappy/package.json +29 -0
  343. package/generator/dead-code-review/node_modules/wrappy/wrappy.js +33 -0
  344. package/generator/dead-code-review/node_modules/xmlbuilder/.nycrc +6 -0
  345. package/generator/dead-code-review/node_modules/xmlbuilder/.vscode/launch.json +23 -0
  346. package/generator/dead-code-review/node_modules/xmlbuilder/CHANGELOG.md +593 -0
  347. package/generator/dead-code-review/node_modules/xmlbuilder/LICENSE +21 -0
  348. package/generator/dead-code-review/node_modules/xmlbuilder/README.md +103 -0
  349. package/generator/dead-code-review/node_modules/xmlbuilder/lib/Derivation.js +10 -0
  350. package/generator/dead-code-review/node_modules/xmlbuilder/lib/DocumentPosition.js +12 -0
  351. package/generator/dead-code-review/node_modules/xmlbuilder/lib/NodeType.js +25 -0
  352. package/generator/dead-code-review/node_modules/xmlbuilder/lib/OperationType.js +11 -0
  353. package/generator/dead-code-review/node_modules/xmlbuilder/lib/Utility.js +88 -0
  354. package/generator/dead-code-review/node_modules/xmlbuilder/lib/WriterState.js +10 -0
  355. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLAttribute.js +130 -0
  356. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCData.js +41 -0
  357. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCharacterData.js +86 -0
  358. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLComment.js +41 -0
  359. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js +80 -0
  360. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js +20 -0
  361. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMImplementation.js +55 -0
  362. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMStringList.js +44 -0
  363. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDAttList.js +66 -0
  364. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDElement.js +44 -0
  365. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDEntity.js +115 -0
  366. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDNotation.js +66 -0
  367. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDeclaration.js +51 -0
  368. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocType.js +235 -0
  369. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocument.js +282 -0
  370. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentCB.js +650 -0
  371. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentFragment.js +21 -0
  372. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDummy.js +39 -0
  373. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLElement.js +334 -0
  374. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js +77 -0
  375. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNode.js +999 -0
  376. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeFilter.js +51 -0
  377. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeList.js +45 -0
  378. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js +56 -0
  379. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLRaw.js +40 -0
  380. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStreamWriter.js +209 -0
  381. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringWriter.js +40 -0
  382. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringifier.js +291 -0
  383. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLText.js +82 -0
  384. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLTypeInfo.js +23 -0
  385. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLUserDataHandler.js +27 -0
  386. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLWriterBase.js +485 -0
  387. package/generator/dead-code-review/node_modules/xmlbuilder/lib/index.js +120 -0
  388. package/generator/dead-code-review/node_modules/xmlbuilder/package.json +51 -0
  389. package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/escaping.coffee +244 -0
  390. package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/object.coffee +21 -0
  391. package/generator/dead-code-review/node_modules/xmlbuilder/perf/index.coffee +161 -0
  392. package/generator/dead-code-review/node_modules/xmlbuilder/perf/perf.list +11 -0
  393. package/generator/dead-code-review/node_modules/xmlbuilder/typings/index.d.ts +1771 -0
  394. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +189 -17
  395. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +255 -21
  396. package/generator/review/elm-stuff/0.19.1/d.dat +0 -0
  397. package/generator/review/elm-stuff/0.19.1/i.dat +0 -0
  398. package/generator/review/elm-stuff/0.19.1/o.dat +0 -0
  399. 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
  400. 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
  401. 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
  402. package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm.json +25 -0
  403. 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
  404. 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
  405. 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
  406. package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm.json +41 -0
  407. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  408. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  409. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  410. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  411. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1327 -122
  412. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +14621 -12637
  413. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  414. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  415. package/generator/review/elm.json +8 -8
  416. package/generator/src/RouteBuilder.elm +66 -52
  417. package/generator/src/SharedTemplate.elm +3 -2
  418. package/generator/src/SiteConfig.elm +3 -2
  419. package/generator/src/basepath-middleware.js +3 -3
  420. package/generator/src/build.js +122 -86
  421. package/generator/src/cli.js +256 -52
  422. package/generator/src/codegen.js +29 -27
  423. package/generator/src/compatibility-key.js +3 -0
  424. package/generator/src/compile-elm.js +20 -22
  425. package/generator/src/config.js +39 -0
  426. package/generator/src/copy-dir.js +2 -2
  427. package/generator/src/dev-server.js +106 -110
  428. package/generator/src/dir-helpers.js +9 -26
  429. package/generator/src/elm-codegen.js +5 -4
  430. package/generator/src/elm-file-constants.js +2 -3
  431. package/generator/src/error-formatter.js +12 -11
  432. package/generator/src/file-helpers.js +3 -4
  433. package/generator/src/generate-template-module-connector.js +14 -21
  434. package/generator/src/init.js +8 -7
  435. package/generator/src/pre-render-html.js +39 -28
  436. package/generator/src/render-test.js +109 -0
  437. package/generator/src/render-worker.js +29 -28
  438. package/generator/src/render.js +322 -142
  439. package/generator/src/request-cache.js +252 -163
  440. package/generator/src/rewrite-client-elm-json.js +5 -5
  441. package/generator/src/rewrite-elm-json.js +7 -7
  442. package/generator/src/route-codegen-helpers.js +16 -31
  443. package/generator/src/seo-renderer.js +12 -7
  444. package/generator/src/vite-utils.js +77 -0
  445. package/generator/static-code/hmr.js +16 -2
  446. package/generator/template/app/Api.elm +6 -5
  447. package/generator/template/app/Effect.elm +123 -0
  448. package/generator/template/app/ErrorPage.elm +37 -6
  449. package/generator/template/app/Route/Index.elm +15 -8
  450. package/generator/template/app/Shared.elm +24 -47
  451. package/generator/template/app/Site.elm +19 -6
  452. package/generator/template/app/View.elm +1 -8
  453. package/generator/template/elm-tooling.json +0 -3
  454. package/generator/template/elm.json +34 -25
  455. package/generator/template/package.json +10 -4
  456. package/package.json +21 -21
  457. package/src/ApiRoute.elm +199 -61
  458. package/src/BackendTask/Custom.elm +318 -0
  459. package/src/BackendTask/Env.elm +90 -0
  460. package/src/{DataSource → BackendTask}/File.elm +128 -43
  461. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  462. package/src/BackendTask/Http.elm +673 -0
  463. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  464. package/src/BackendTask/Internal/Request.elm +28 -0
  465. package/src/BackendTask/Random.elm +79 -0
  466. package/src/BackendTask/Time.elm +47 -0
  467. package/src/BackendTask.elm +537 -0
  468. package/src/FatalError.elm +89 -0
  469. package/src/Form/Field.elm +22 -10
  470. package/src/Form/FieldView.elm +14 -4
  471. package/src/Form.elm +99 -111
  472. package/src/Head/Seo.elm +4 -4
  473. package/src/Head.elm +237 -7
  474. package/src/HtmlPrinter.elm +7 -3
  475. package/src/Internal/ApiRoute.elm +7 -5
  476. package/src/PageServerResponse.elm +6 -1
  477. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  478. package/src/Pages/Internal/FatalError.elm +5 -0
  479. package/src/Pages/Internal/Form.elm +21 -1
  480. package/src/Pages/Internal/Platform/Cli.elm +505 -746
  481. package/src/Pages/Internal/Platform/Cli.elm.bak +1276 -0
  482. package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
  483. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  484. package/src/Pages/Internal/Platform/GeneratorApplication.elm +373 -0
  485. package/src/Pages/Internal/Platform/StaticResponses.elm +73 -270
  486. package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -7
  487. package/src/Pages/Internal/Platform.elm +110 -88
  488. package/src/Pages/Internal/Script.elm +17 -0
  489. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  490. package/src/Pages/Manifest.elm +29 -4
  491. package/src/Pages/ProgramConfig.elm +12 -8
  492. package/src/Pages/Script.elm +109 -0
  493. package/src/Pages/SiteConfig.elm +3 -2
  494. package/src/Pages/StaticHttp/Request.elm +2 -2
  495. package/src/Pages/StaticHttpRequest.elm +23 -98
  496. package/src/RequestsAndPending.elm +8 -19
  497. package/src/Result/Extra.elm +26 -0
  498. package/src/Scaffold/Form.elm +474 -0
  499. package/src/Scaffold/Route.elm +1473 -0
  500. package/src/Server/Request.elm +43 -34
  501. package/src/Server/Session.elm +166 -100
  502. package/src/Server/SetCookie.elm +89 -31
  503. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  504. package/src/DataSource/Env.elm +0 -38
  505. package/src/DataSource/Http.elm +0 -446
  506. package/src/DataSource/Internal/Request.elm +0 -20
  507. package/src/DataSource/Port.elm +0 -90
  508. package/src/DataSource.elm +0 -538
  509. package/src/Pages/Generate.elm +0 -800
@@ -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 exposing (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 -> DataSource Data`:
122
+ That's why `RouteBuilder.preRender` has `data : RouteParams -> BackendTask Data`:
122
123
 
123
- import DataSource exposing (DataSource)
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 -> DataSource Data
130
+ data : RouteParams -> BackendTask Data
130
131
  data routeParams =
131
- DataSource.succeed Data
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 (DataSource (Response Data))`. That means that you
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 DataSource exposing (DataSource)
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 (DataSource (Response Data))
165
+ -> Request.Parser (BackendTask (Response Data))
165
166
  data routeParams =
166
167
  {}
167
168
  |> Server.Response.render
168
- |> DataSource.succeed
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 (DataSource response) -> Json.Decode.Decoder (Result ( ValidationError, List ValidationError ) (DataSource response))
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 (DataSource (Validation error combined kind constraints))
885
- -> Parser (DataSource (Result (Form.Response error) ( Form.Response error, combined )))
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
- |> DataSource.map
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
- ( _, maybeErrors ) ->
914
+ _ ->
913
915
  Err
914
- (Form.Response
916
+ (Pages.Internal.Form.Response
915
917
  { fields = rawFormData_
916
- , errors =
917
- maybeErrors
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
- |> DataSource.succeed
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
- Ok decoded
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
- Err
963
- { fields = rawFormData_
964
- , errors =
965
- maybeErrors
966
- |> Maybe.map List.NonEmpty.toList
967
- |> Maybe.withDefault []
968
- |> Dict.fromList
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
 
@@ -1,19 +1,119 @@
1
- module Server.Session exposing (Decoder, NotLoadedReason(..), Session(..), Value(..), clearFlashCookies, empty, expectSession, flashPrefix, get, insert, remove, setValues, succeed, unwrap, update, withFlash, withSession)
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
- @docs Decoder, NotLoadedReason, Session, Value, clearFlashCookies, empty, expectSession, flashPrefix, get, insert, remove, setValues, succeed, unwrap, update, withFlash, withSession
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 DataSource exposing (DataSource)
10
- import DataSource.Http
11
- import DataSource.Internal.Request
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 as Request exposing (Parser)
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
- = NoCookies
117
- | MissingHeaders
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
- setValues : Session -> Json.Encode.Value
129
- setValues (Session session) =
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 : DataSource (List String)
189
- , sameSite : String
245
+ , secrets : BackendTask error (List String)
246
+ , options : SetCookie.Options
190
247
  }
191
- -> Parser request
192
- -> (request -> Result () (Maybe Session) -> DataSource ( Session, Response data errorPage ))
193
- -> Parser (DataSource (Response data errorPage))
194
- withSession config userRequest toRequest =
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
- decrypted : DataSource (Result () (Maybe Session))
199
- decrypted =
255
+ unsigned : BackendTask error (Result NotLoadedReason Session)
256
+ unsigned =
200
257
  case maybeSessionCookie of
201
258
  Just sessionCookie ->
202
259
  sessionCookie
203
- |> decryptCookie config
204
- |> DataSource.map (Result.map Just)
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
- Ok Nothing
208
- |> DataSource.succeed
272
+ Err NoSessionCookie
273
+ |> BackendTask.succeed
209
274
  in
210
- decrypted
211
- |> DataSource.andThen
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 : { a | name : String, secrets : DataSource (List String) } -> (c -> d -> DataSource ( Session, Response data errorPage )) -> c -> d -> DataSource (Response data errorPage)
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
- |> DataSource.andThen
295
+ |> BackendTask.andThen
223
296
  (\( sessionUpdate, response ) ->
224
- DataSource.map
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
- (encrypt config.secrets
238
- (setValues sessionUpdate)
303
+ (sign config.secrets
304
+ (encodeNonExpiringPairs sessionUpdate)
239
305
  )
240
306
  )
241
307
 
242
308
 
243
- decryptCookie : { a | secrets : DataSource (List String) } -> String -> DataSource (Result () Session)
244
- decryptCookie config sessionCookie =
309
+ unsignCookie : { a | secrets : BackendTask error (List String) } -> String -> BackendTask error (Result () Session)
310
+ unsignCookie config sessionCookie =
245
311
  sessionCookie
246
- |> decrypt config.secrets (Json.Decode.dict Json.Decode.string)
247
- |> DataSource.map
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
- encrypt : DataSource (List String) -> Json.Encode.Value -> DataSource String
269
- encrypt getSecrets input =
334
+ sign : BackendTask error (List String) -> Json.Encode.Value -> BackendTask error String
335
+ sign getSecrets input =
270
336
  getSecrets
271
- |> DataSource.andThen
337
+ |> BackendTask.andThen
272
338
  (\secrets ->
273
- DataSource.Internal.Request.request
339
+ BackendTask.Internal.Request.request
274
340
  { name = "encrypt"
275
341
  , body =
276
- DataSource.Http.jsonBody
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
- DataSource.Http.expectJson
356
+ BackendTask.Http.expectJson
291
357
  Json.Decode.string
292
358
  }
293
359
  )
294
360
 
295
361
 
296
- decrypt : DataSource (List String) -> Json.Decode.Decoder a -> String -> DataSource (Result () a)
297
- decrypt getSecrets decoder input =
362
+ unsign : BackendTask error (List String) -> Json.Decode.Decoder a -> String -> BackendTask error (Result () a)
363
+ unsign getSecrets decoder input =
298
364
  getSecrets
299
- |> DataSource.andThen
365
+ |> BackendTask.andThen
300
366
  (\secrets ->
301
- DataSource.Internal.Request.request
367
+ BackendTask.Internal.Request.request
302
368
  { name = "decrypt"
303
369
  , body =
304
- DataSource.Http.jsonBody
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
- |> DataSource.Http.expectJson
380
+ |> BackendTask.Http.expectJson
315
381
  }
316
382
  )