elm-pages 3.0.0-beta.13 → 3.0.0-beta.15

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 (501) hide show
  1. package/README.md +1 -1
  2. package/codegen/elm-pages-codegen.js +1497 -1130
  3. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1 -1
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +152 -40
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  13. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +58 -10
  14. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +45 -29
  15. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  16. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  17. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  18. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1 -1
  19. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +46 -5
  20. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  21. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  22. package/generator/src/RouteBuilder.elm +66 -52
  23. package/generator/src/SharedTemplate.elm +3 -2
  24. package/generator/src/SiteConfig.elm +3 -2
  25. package/generator/src/build.js +5 -5
  26. package/generator/src/cli.js +7 -6
  27. package/generator/src/compatibility-key.js +1 -1
  28. package/generator/src/dev-server.js +7 -7
  29. package/generator/src/error-formatter.js +7 -3
  30. package/generator/src/render-test.js +109 -0
  31. package/generator/src/render.js +83 -66
  32. package/generator/src/request-cache.js +181 -160
  33. package/generator/static-code/hmr.js +16 -2
  34. package/generator/template/app/Api.elm +2 -2
  35. package/generator/template/app/Route/Index.elm +3 -3
  36. package/generator/template/app/Shared.elm +3 -3
  37. package/generator/template/app/Site.elm +3 -3
  38. package/package.json +10 -10
  39. package/src/ApiRoute.elm +60 -57
  40. package/src/BackendTask/Env.elm +89 -0
  41. package/src/{DataSource → BackendTask}/File.elm +89 -43
  42. package/src/{DataSource → BackendTask}/Glob.elm +134 -125
  43. package/src/BackendTask/Http.elm +673 -0
  44. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  45. package/src/BackendTask/Internal/Request.elm +28 -0
  46. package/src/BackendTask/Port.elm +206 -0
  47. package/src/{DataSource.elm → BackendTask.elm} +223 -207
  48. package/src/Exception.elm +95 -0
  49. package/src/Form.elm +21 -20
  50. package/src/Head.elm +7 -7
  51. package/src/Internal/ApiRoute.elm +7 -5
  52. package/src/PageServerResponse.elm +6 -1
  53. package/src/Pages/Generate.elm +334 -165
  54. package/src/Pages/Internal/Platform/Cli.elm +432 -761
  55. package/src/Pages/Internal/Platform/Cli.elm.bak +22 -22
  56. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  57. package/src/Pages/Internal/Platform/Effect.elm +0 -1
  58. package/src/Pages/Internal/Platform/GeneratorApplication.elm +63 -147
  59. package/src/Pages/Internal/Platform/StaticResponses.elm +73 -301
  60. package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -4
  61. package/src/Pages/Internal/Platform.elm +25 -31
  62. package/src/Pages/Internal/Script.elm +3 -2
  63. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  64. package/src/Pages/Manifest.elm +5 -4
  65. package/src/Pages/ProgramConfig.elm +8 -7
  66. package/src/Pages/Script.elm +28 -13
  67. package/src/Pages/SiteConfig.elm +3 -2
  68. package/src/Pages/StaticHttp/Request.elm +2 -2
  69. package/src/Pages/StaticHttpRequest.elm +23 -100
  70. package/src/RequestsAndPending.elm +8 -19
  71. package/src/Server/Request.elm +15 -14
  72. package/src/Server/Session.elm +34 -34
  73. package/src/Server/SetCookie.elm +1 -1
  74. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.75364bef27ac5a049b87c3325f846fc6dbda23b8ed7187ed06748b96bb6a50a7.json +0 -1
  75. 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
  76. 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
  77. 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
  78. 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
  79. 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
  80. 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
  81. 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
  82. 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
  83. 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
  84. 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
  85. 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
  86. 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
  87. 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
  88. 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
  89. 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
  90. 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
  91. 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
  92. 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
  93. 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
  94. 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
  95. 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
  96. 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
  97. 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
  98. 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
  99. 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
  100. 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
  101. 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
  102. 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
  103. 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
  104. 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
  105. 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
  106. 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
  107. 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
  108. 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
  109. 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
  110. 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
  111. 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
  112. 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
  113. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +0 -38
  114. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +0 -29603
  115. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +0 -1
  116. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +0 -27
  117. package/generator/dead-code-review/node_modules/.package-lock.json +0 -484
  118. package/generator/dead-code-review/node_modules/ansi-styles/index.d.ts +0 -345
  119. package/generator/dead-code-review/node_modules/ansi-styles/index.js +0 -163
  120. package/generator/dead-code-review/node_modules/ansi-styles/license +0 -9
  121. package/generator/dead-code-review/node_modules/ansi-styles/package.json +0 -56
  122. package/generator/dead-code-review/node_modules/ansi-styles/readme.md +0 -152
  123. package/generator/dead-code-review/node_modules/anymatch/LICENSE +0 -15
  124. package/generator/dead-code-review/node_modules/anymatch/README.md +0 -87
  125. package/generator/dead-code-review/node_modules/anymatch/index.d.ts +0 -20
  126. package/generator/dead-code-review/node_modules/anymatch/index.js +0 -104
  127. package/generator/dead-code-review/node_modules/anymatch/package.json +0 -48
  128. package/generator/dead-code-review/node_modules/balanced-match/.github/FUNDING.yml +0 -2
  129. package/generator/dead-code-review/node_modules/balanced-match/LICENSE.md +0 -21
  130. package/generator/dead-code-review/node_modules/balanced-match/README.md +0 -97
  131. package/generator/dead-code-review/node_modules/balanced-match/index.js +0 -62
  132. package/generator/dead-code-review/node_modules/balanced-match/package.json +0 -48
  133. package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json +0 -260
  134. package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json.d.ts +0 -3
  135. package/generator/dead-code-review/node_modules/binary-extensions/index.d.ts +0 -14
  136. package/generator/dead-code-review/node_modules/binary-extensions/index.js +0 -1
  137. package/generator/dead-code-review/node_modules/binary-extensions/license +0 -9
  138. package/generator/dead-code-review/node_modules/binary-extensions/package.json +0 -38
  139. package/generator/dead-code-review/node_modules/binary-extensions/readme.md +0 -41
  140. package/generator/dead-code-review/node_modules/brace-expansion/.github/FUNDING.yml +0 -2
  141. package/generator/dead-code-review/node_modules/brace-expansion/LICENSE +0 -21
  142. package/generator/dead-code-review/node_modules/brace-expansion/README.md +0 -135
  143. package/generator/dead-code-review/node_modules/brace-expansion/index.js +0 -203
  144. package/generator/dead-code-review/node_modules/brace-expansion/package.json +0 -46
  145. package/generator/dead-code-review/node_modules/braces/CHANGELOG.md +0 -184
  146. package/generator/dead-code-review/node_modules/braces/LICENSE +0 -21
  147. package/generator/dead-code-review/node_modules/braces/README.md +0 -593
  148. package/generator/dead-code-review/node_modules/braces/index.js +0 -170
  149. package/generator/dead-code-review/node_modules/braces/lib/compile.js +0 -57
  150. package/generator/dead-code-review/node_modules/braces/lib/constants.js +0 -57
  151. package/generator/dead-code-review/node_modules/braces/lib/expand.js +0 -113
  152. package/generator/dead-code-review/node_modules/braces/lib/parse.js +0 -333
  153. package/generator/dead-code-review/node_modules/braces/lib/stringify.js +0 -32
  154. package/generator/dead-code-review/node_modules/braces/lib/utils.js +0 -112
  155. package/generator/dead-code-review/node_modules/braces/package.json +0 -77
  156. package/generator/dead-code-review/node_modules/chalk/index.d.ts +0 -415
  157. package/generator/dead-code-review/node_modules/chalk/license +0 -9
  158. package/generator/dead-code-review/node_modules/chalk/package.json +0 -68
  159. package/generator/dead-code-review/node_modules/chalk/readme.md +0 -341
  160. package/generator/dead-code-review/node_modules/chalk/source/index.js +0 -229
  161. package/generator/dead-code-review/node_modules/chalk/source/templates.js +0 -134
  162. package/generator/dead-code-review/node_modules/chalk/source/util.js +0 -39
  163. package/generator/dead-code-review/node_modules/chokidar/LICENSE +0 -21
  164. package/generator/dead-code-review/node_modules/chokidar/README.md +0 -308
  165. package/generator/dead-code-review/node_modules/chokidar/index.js +0 -973
  166. package/generator/dead-code-review/node_modules/chokidar/lib/constants.js +0 -65
  167. package/generator/dead-code-review/node_modules/chokidar/lib/fsevents-handler.js +0 -524
  168. package/generator/dead-code-review/node_modules/chokidar/lib/nodefs-handler.js +0 -654
  169. package/generator/dead-code-review/node_modules/chokidar/package.json +0 -85
  170. package/generator/dead-code-review/node_modules/chokidar/types/index.d.ts +0 -188
  171. package/generator/dead-code-review/node_modules/color-convert/CHANGELOG.md +0 -54
  172. package/generator/dead-code-review/node_modules/color-convert/LICENSE +0 -21
  173. package/generator/dead-code-review/node_modules/color-convert/README.md +0 -68
  174. package/generator/dead-code-review/node_modules/color-convert/conversions.js +0 -839
  175. package/generator/dead-code-review/node_modules/color-convert/index.js +0 -81
  176. package/generator/dead-code-review/node_modules/color-convert/package.json +0 -48
  177. package/generator/dead-code-review/node_modules/color-convert/route.js +0 -97
  178. package/generator/dead-code-review/node_modules/color-name/LICENSE +0 -8
  179. package/generator/dead-code-review/node_modules/color-name/README.md +0 -11
  180. package/generator/dead-code-review/node_modules/color-name/index.js +0 -152
  181. package/generator/dead-code-review/node_modules/color-name/package.json +0 -28
  182. package/generator/dead-code-review/node_modules/commander/LICENSE +0 -22
  183. package/generator/dead-code-review/node_modules/commander/Readme.md +0 -1118
  184. package/generator/dead-code-review/node_modules/commander/esm.mjs +0 -16
  185. package/generator/dead-code-review/node_modules/commander/index.js +0 -27
  186. package/generator/dead-code-review/node_modules/commander/lib/argument.js +0 -147
  187. package/generator/dead-code-review/node_modules/commander/lib/command.js +0 -2160
  188. package/generator/dead-code-review/node_modules/commander/lib/error.js +0 -45
  189. package/generator/dead-code-review/node_modules/commander/lib/help.js +0 -406
  190. package/generator/dead-code-review/node_modules/commander/lib/option.js +0 -326
  191. package/generator/dead-code-review/node_modules/commander/lib/suggestSimilar.js +0 -100
  192. package/generator/dead-code-review/node_modules/commander/package-support.json +0 -16
  193. package/generator/dead-code-review/node_modules/commander/package.json +0 -80
  194. package/generator/dead-code-review/node_modules/commander/typings/index.d.ts +0 -881
  195. package/generator/dead-code-review/node_modules/cross-spawn/CHANGELOG.md +0 -130
  196. package/generator/dead-code-review/node_modules/cross-spawn/LICENSE +0 -21
  197. package/generator/dead-code-review/node_modules/cross-spawn/README.md +0 -96
  198. package/generator/dead-code-review/node_modules/cross-spawn/index.js +0 -39
  199. package/generator/dead-code-review/node_modules/cross-spawn/lib/enoent.js +0 -59
  200. package/generator/dead-code-review/node_modules/cross-spawn/lib/parse.js +0 -91
  201. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/escape.js +0 -45
  202. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  203. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  204. package/generator/dead-code-review/node_modules/cross-spawn/package.json +0 -73
  205. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/LICENSE +0 -373
  206. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/README.md +0 -64
  207. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.d.ts +0 -22
  208. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.js +0 -419
  209. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm_bg.wasm +0 -0
  210. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/package.json +0 -27
  211. package/generator/dead-code-review/node_modules/elm-test/LICENSE +0 -27
  212. package/generator/dead-code-review/node_modules/elm-test/README.md +0 -192
  213. package/generator/dead-code-review/node_modules/elm-test/bin/elm-test +0 -3
  214. package/generator/dead-code-review/node_modules/elm-test/elm/elm.json +0 -25
  215. package/generator/dead-code-review/node_modules/elm-test/elm/src/Console/Text.elm +0 -217
  216. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Color.elm +0 -30
  217. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Monochrome.elm +0 -39
  218. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format.elm +0 -212
  219. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console.elm +0 -207
  220. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Highlightable.elm +0 -48
  221. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/JUnit.elm +0 -161
  222. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Json.elm +0 -158
  223. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Reporter.elm +0 -53
  224. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/TestResults.elm +0 -113
  225. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/JsMessage.elm +0 -38
  226. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Console.elm +0 -230
  227. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Diff.elm +0 -326
  228. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node.elm +0 -440
  229. package/generator/dead-code-review/node_modules/elm-test/lib/Compile.js +0 -110
  230. package/generator/dead-code-review/node_modules/elm-test/lib/DependencyProvider.js +0 -343
  231. package/generator/dead-code-review/node_modules/elm-test/lib/ElmCompiler.js +0 -109
  232. package/generator/dead-code-review/node_modules/elm-test/lib/ElmHome.js +0 -47
  233. package/generator/dead-code-review/node_modules/elm-test/lib/ElmJson.js +0 -194
  234. package/generator/dead-code-review/node_modules/elm-test/lib/FindTests.js +0 -276
  235. package/generator/dead-code-review/node_modules/elm-test/lib/Generate.js +0 -294
  236. package/generator/dead-code-review/node_modules/elm-test/lib/Install.js +0 -290
  237. package/generator/dead-code-review/node_modules/elm-test/lib/Parser.js +0 -941
  238. package/generator/dead-code-review/node_modules/elm-test/lib/Project.js +0 -117
  239. package/generator/dead-code-review/node_modules/elm-test/lib/Report.js +0 -23
  240. package/generator/dead-code-review/node_modules/elm-test/lib/RunTests.js +0 -322
  241. package/generator/dead-code-review/node_modules/elm-test/lib/Solve.js +0 -76
  242. package/generator/dead-code-review/node_modules/elm-test/lib/Supervisor.js +0 -294
  243. package/generator/dead-code-review/node_modules/elm-test/lib/SyncGet.js +0 -45
  244. package/generator/dead-code-review/node_modules/elm-test/lib/SyncGetWorker.js +0 -36
  245. package/generator/dead-code-review/node_modules/elm-test/lib/elm-test.js +0 -318
  246. package/generator/dead-code-review/node_modules/elm-test/package.json +0 -69
  247. package/generator/dead-code-review/node_modules/elm-test/templates/after.js +0 -29
  248. package/generator/dead-code-review/node_modules/elm-test/templates/before.js +0 -58
  249. package/generator/dead-code-review/node_modules/elm-test/templates/tests/Example.elm +0 -10
  250. package/generator/dead-code-review/node_modules/fill-range/LICENSE +0 -21
  251. package/generator/dead-code-review/node_modules/fill-range/README.md +0 -237
  252. package/generator/dead-code-review/node_modules/fill-range/index.js +0 -249
  253. package/generator/dead-code-review/node_modules/fill-range/package.json +0 -69
  254. package/generator/dead-code-review/node_modules/fs.realpath/LICENSE +0 -43
  255. package/generator/dead-code-review/node_modules/fs.realpath/README.md +0 -33
  256. package/generator/dead-code-review/node_modules/fs.realpath/index.js +0 -66
  257. package/generator/dead-code-review/node_modules/fs.realpath/old.js +0 -303
  258. package/generator/dead-code-review/node_modules/fs.realpath/package.json +0 -26
  259. package/generator/dead-code-review/node_modules/fsevents/LICENSE +0 -22
  260. package/generator/dead-code-review/node_modules/fsevents/README.md +0 -83
  261. package/generator/dead-code-review/node_modules/fsevents/fsevents.d.ts +0 -46
  262. package/generator/dead-code-review/node_modules/fsevents/fsevents.js +0 -82
  263. package/generator/dead-code-review/node_modules/fsevents/fsevents.node +0 -0
  264. package/generator/dead-code-review/node_modules/fsevents/package.json +0 -62
  265. package/generator/dead-code-review/node_modules/glob/LICENSE +0 -15
  266. package/generator/dead-code-review/node_modules/glob/README.md +0 -378
  267. package/generator/dead-code-review/node_modules/glob/common.js +0 -240
  268. package/generator/dead-code-review/node_modules/glob/glob.js +0 -790
  269. package/generator/dead-code-review/node_modules/glob/package.json +0 -55
  270. package/generator/dead-code-review/node_modules/glob/sync.js +0 -486
  271. package/generator/dead-code-review/node_modules/glob-parent/CHANGELOG.md +0 -110
  272. package/generator/dead-code-review/node_modules/glob-parent/LICENSE +0 -15
  273. package/generator/dead-code-review/node_modules/glob-parent/README.md +0 -137
  274. package/generator/dead-code-review/node_modules/glob-parent/index.js +0 -42
  275. package/generator/dead-code-review/node_modules/glob-parent/package.json +0 -48
  276. package/generator/dead-code-review/node_modules/graceful-fs/LICENSE +0 -15
  277. package/generator/dead-code-review/node_modules/graceful-fs/README.md +0 -143
  278. package/generator/dead-code-review/node_modules/graceful-fs/clone.js +0 -23
  279. package/generator/dead-code-review/node_modules/graceful-fs/graceful-fs.js +0 -448
  280. package/generator/dead-code-review/node_modules/graceful-fs/legacy-streams.js +0 -118
  281. package/generator/dead-code-review/node_modules/graceful-fs/package.json +0 -50
  282. package/generator/dead-code-review/node_modules/graceful-fs/polyfills.js +0 -355
  283. package/generator/dead-code-review/node_modules/has-flag/index.d.ts +0 -39
  284. package/generator/dead-code-review/node_modules/has-flag/index.js +0 -8
  285. package/generator/dead-code-review/node_modules/has-flag/license +0 -9
  286. package/generator/dead-code-review/node_modules/has-flag/package.json +0 -46
  287. package/generator/dead-code-review/node_modules/has-flag/readme.md +0 -89
  288. package/generator/dead-code-review/node_modules/inflight/LICENSE +0 -15
  289. package/generator/dead-code-review/node_modules/inflight/README.md +0 -37
  290. package/generator/dead-code-review/node_modules/inflight/inflight.js +0 -54
  291. package/generator/dead-code-review/node_modules/inflight/package.json +0 -29
  292. package/generator/dead-code-review/node_modules/inherits/LICENSE +0 -16
  293. package/generator/dead-code-review/node_modules/inherits/README.md +0 -42
  294. package/generator/dead-code-review/node_modules/inherits/inherits.js +0 -9
  295. package/generator/dead-code-review/node_modules/inherits/inherits_browser.js +0 -27
  296. package/generator/dead-code-review/node_modules/inherits/package.json +0 -29
  297. package/generator/dead-code-review/node_modules/is-binary-path/index.d.ts +0 -17
  298. package/generator/dead-code-review/node_modules/is-binary-path/index.js +0 -7
  299. package/generator/dead-code-review/node_modules/is-binary-path/license +0 -9
  300. package/generator/dead-code-review/node_modules/is-binary-path/package.json +0 -40
  301. package/generator/dead-code-review/node_modules/is-binary-path/readme.md +0 -34
  302. package/generator/dead-code-review/node_modules/is-extglob/LICENSE +0 -21
  303. package/generator/dead-code-review/node_modules/is-extglob/README.md +0 -107
  304. package/generator/dead-code-review/node_modules/is-extglob/index.js +0 -20
  305. package/generator/dead-code-review/node_modules/is-extglob/package.json +0 -69
  306. package/generator/dead-code-review/node_modules/is-glob/LICENSE +0 -21
  307. package/generator/dead-code-review/node_modules/is-glob/README.md +0 -206
  308. package/generator/dead-code-review/node_modules/is-glob/index.js +0 -150
  309. package/generator/dead-code-review/node_modules/is-glob/package.json +0 -81
  310. package/generator/dead-code-review/node_modules/is-number/LICENSE +0 -21
  311. package/generator/dead-code-review/node_modules/is-number/README.md +0 -187
  312. package/generator/dead-code-review/node_modules/is-number/index.js +0 -18
  313. package/generator/dead-code-review/node_modules/is-number/package.json +0 -82
  314. package/generator/dead-code-review/node_modules/isexe/LICENSE +0 -15
  315. package/generator/dead-code-review/node_modules/isexe/README.md +0 -51
  316. package/generator/dead-code-review/node_modules/isexe/index.js +0 -57
  317. package/generator/dead-code-review/node_modules/isexe/mode.js +0 -41
  318. package/generator/dead-code-review/node_modules/isexe/package.json +0 -31
  319. package/generator/dead-code-review/node_modules/isexe/test/basic.js +0 -221
  320. package/generator/dead-code-review/node_modules/isexe/windows.js +0 -42
  321. package/generator/dead-code-review/node_modules/minimatch/LICENSE +0 -15
  322. package/generator/dead-code-review/node_modules/minimatch/README.md +0 -259
  323. package/generator/dead-code-review/node_modules/minimatch/lib/path.js +0 -4
  324. package/generator/dead-code-review/node_modules/minimatch/minimatch.js +0 -906
  325. package/generator/dead-code-review/node_modules/minimatch/package.json +0 -32
  326. package/generator/dead-code-review/node_modules/normalize-path/LICENSE +0 -21
  327. package/generator/dead-code-review/node_modules/normalize-path/README.md +0 -127
  328. package/generator/dead-code-review/node_modules/normalize-path/index.js +0 -35
  329. package/generator/dead-code-review/node_modules/normalize-path/package.json +0 -77
  330. package/generator/dead-code-review/node_modules/once/LICENSE +0 -15
  331. package/generator/dead-code-review/node_modules/once/README.md +0 -79
  332. package/generator/dead-code-review/node_modules/once/once.js +0 -42
  333. package/generator/dead-code-review/node_modules/once/package.json +0 -33
  334. package/generator/dead-code-review/node_modules/path-key/index.d.ts +0 -40
  335. package/generator/dead-code-review/node_modules/path-key/index.js +0 -16
  336. package/generator/dead-code-review/node_modules/path-key/license +0 -9
  337. package/generator/dead-code-review/node_modules/path-key/package.json +0 -39
  338. package/generator/dead-code-review/node_modules/path-key/readme.md +0 -61
  339. package/generator/dead-code-review/node_modules/picomatch/CHANGELOG.md +0 -136
  340. package/generator/dead-code-review/node_modules/picomatch/LICENSE +0 -21
  341. package/generator/dead-code-review/node_modules/picomatch/README.md +0 -708
  342. package/generator/dead-code-review/node_modules/picomatch/index.js +0 -3
  343. package/generator/dead-code-review/node_modules/picomatch/lib/constants.js +0 -179
  344. package/generator/dead-code-review/node_modules/picomatch/lib/parse.js +0 -1091
  345. package/generator/dead-code-review/node_modules/picomatch/lib/picomatch.js +0 -342
  346. package/generator/dead-code-review/node_modules/picomatch/lib/scan.js +0 -391
  347. package/generator/dead-code-review/node_modules/picomatch/lib/utils.js +0 -64
  348. package/generator/dead-code-review/node_modules/picomatch/package.json +0 -81
  349. package/generator/dead-code-review/node_modules/readdirp/LICENSE +0 -21
  350. package/generator/dead-code-review/node_modules/readdirp/README.md +0 -122
  351. package/generator/dead-code-review/node_modules/readdirp/index.d.ts +0 -43
  352. package/generator/dead-code-review/node_modules/readdirp/index.js +0 -287
  353. package/generator/dead-code-review/node_modules/readdirp/package.json +0 -122
  354. package/generator/dead-code-review/node_modules/shebang-command/index.js +0 -19
  355. package/generator/dead-code-review/node_modules/shebang-command/license +0 -9
  356. package/generator/dead-code-review/node_modules/shebang-command/package.json +0 -34
  357. package/generator/dead-code-review/node_modules/shebang-command/readme.md +0 -34
  358. package/generator/dead-code-review/node_modules/shebang-regex/index.d.ts +0 -22
  359. package/generator/dead-code-review/node_modules/shebang-regex/index.js +0 -2
  360. package/generator/dead-code-review/node_modules/shebang-regex/license +0 -9
  361. package/generator/dead-code-review/node_modules/shebang-regex/package.json +0 -35
  362. package/generator/dead-code-review/node_modules/shebang-regex/readme.md +0 -33
  363. package/generator/dead-code-review/node_modules/split/.travis.yml +0 -3
  364. package/generator/dead-code-review/node_modules/split/LICENCE +0 -22
  365. package/generator/dead-code-review/node_modules/split/examples/pretty.js +0 -26
  366. package/generator/dead-code-review/node_modules/split/index.js +0 -63
  367. package/generator/dead-code-review/node_modules/split/package.json +0 -30
  368. package/generator/dead-code-review/node_modules/split/readme.markdown +0 -72
  369. package/generator/dead-code-review/node_modules/split/test/options.asynct.js +0 -46
  370. package/generator/dead-code-review/node_modules/split/test/partitioned_unicode.js +0 -34
  371. package/generator/dead-code-review/node_modules/split/test/split.asynct.js +0 -137
  372. package/generator/dead-code-review/node_modules/split/test/try_catch.asynct.js +0 -51
  373. package/generator/dead-code-review/node_modules/supports-color/browser.js +0 -5
  374. package/generator/dead-code-review/node_modules/supports-color/index.js +0 -135
  375. package/generator/dead-code-review/node_modules/supports-color/license +0 -9
  376. package/generator/dead-code-review/node_modules/supports-color/package.json +0 -53
  377. package/generator/dead-code-review/node_modules/supports-color/readme.md +0 -76
  378. package/generator/dead-code-review/node_modules/through/.travis.yml +0 -5
  379. package/generator/dead-code-review/node_modules/through/LICENSE.APACHE2 +0 -15
  380. package/generator/dead-code-review/node_modules/through/LICENSE.MIT +0 -24
  381. package/generator/dead-code-review/node_modules/through/index.js +0 -108
  382. package/generator/dead-code-review/node_modules/through/package.json +0 -36
  383. package/generator/dead-code-review/node_modules/through/readme.markdown +0 -64
  384. package/generator/dead-code-review/node_modules/through/test/async.js +0 -28
  385. package/generator/dead-code-review/node_modules/through/test/auto-destroy.js +0 -30
  386. package/generator/dead-code-review/node_modules/through/test/buffering.js +0 -71
  387. package/generator/dead-code-review/node_modules/through/test/end.js +0 -45
  388. package/generator/dead-code-review/node_modules/through/test/index.js +0 -133
  389. package/generator/dead-code-review/node_modules/to-regex-range/LICENSE +0 -21
  390. package/generator/dead-code-review/node_modules/to-regex-range/README.md +0 -305
  391. package/generator/dead-code-review/node_modules/to-regex-range/index.js +0 -288
  392. package/generator/dead-code-review/node_modules/to-regex-range/package.json +0 -88
  393. package/generator/dead-code-review/node_modules/which/CHANGELOG.md +0 -166
  394. package/generator/dead-code-review/node_modules/which/LICENSE +0 -15
  395. package/generator/dead-code-review/node_modules/which/README.md +0 -54
  396. package/generator/dead-code-review/node_modules/which/bin/node-which +0 -52
  397. package/generator/dead-code-review/node_modules/which/package.json +0 -43
  398. package/generator/dead-code-review/node_modules/which/which.js +0 -125
  399. package/generator/dead-code-review/node_modules/wrappy/LICENSE +0 -15
  400. package/generator/dead-code-review/node_modules/wrappy/README.md +0 -36
  401. package/generator/dead-code-review/node_modules/wrappy/package.json +0 -29
  402. package/generator/dead-code-review/node_modules/wrappy/wrappy.js +0 -33
  403. package/generator/dead-code-review/node_modules/xmlbuilder/.nycrc +0 -6
  404. package/generator/dead-code-review/node_modules/xmlbuilder/.vscode/launch.json +0 -23
  405. package/generator/dead-code-review/node_modules/xmlbuilder/CHANGELOG.md +0 -593
  406. package/generator/dead-code-review/node_modules/xmlbuilder/LICENSE +0 -21
  407. package/generator/dead-code-review/node_modules/xmlbuilder/README.md +0 -103
  408. package/generator/dead-code-review/node_modules/xmlbuilder/lib/Derivation.js +0 -10
  409. package/generator/dead-code-review/node_modules/xmlbuilder/lib/DocumentPosition.js +0 -12
  410. package/generator/dead-code-review/node_modules/xmlbuilder/lib/NodeType.js +0 -25
  411. package/generator/dead-code-review/node_modules/xmlbuilder/lib/OperationType.js +0 -11
  412. package/generator/dead-code-review/node_modules/xmlbuilder/lib/Utility.js +0 -88
  413. package/generator/dead-code-review/node_modules/xmlbuilder/lib/WriterState.js +0 -10
  414. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLAttribute.js +0 -130
  415. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCData.js +0 -41
  416. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCharacterData.js +0 -86
  417. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLComment.js +0 -41
  418. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js +0 -80
  419. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js +0 -20
  420. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMImplementation.js +0 -55
  421. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMStringList.js +0 -44
  422. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDAttList.js +0 -66
  423. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDElement.js +0 -44
  424. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDEntity.js +0 -115
  425. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDNotation.js +0 -66
  426. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDeclaration.js +0 -51
  427. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocType.js +0 -235
  428. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocument.js +0 -282
  429. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentCB.js +0 -650
  430. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentFragment.js +0 -21
  431. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDummy.js +0 -39
  432. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLElement.js +0 -334
  433. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js +0 -77
  434. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNode.js +0 -999
  435. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeFilter.js +0 -51
  436. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeList.js +0 -45
  437. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js +0 -56
  438. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLRaw.js +0 -40
  439. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStreamWriter.js +0 -209
  440. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringWriter.js +0 -40
  441. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringifier.js +0 -291
  442. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLText.js +0 -82
  443. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLTypeInfo.js +0 -23
  444. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLUserDataHandler.js +0 -27
  445. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLWriterBase.js +0 -485
  446. package/generator/dead-code-review/node_modules/xmlbuilder/lib/index.js +0 -120
  447. package/generator/dead-code-review/node_modules/xmlbuilder/package.json +0 -51
  448. package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/escaping.coffee +0 -244
  449. package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/object.coffee +0 -21
  450. package/generator/dead-code-review/node_modules/xmlbuilder/perf/index.coffee +0 -161
  451. package/generator/dead-code-review/node_modules/xmlbuilder/perf/perf.list +0 -11
  452. package/generator/dead-code-review/node_modules/xmlbuilder/typings/index.d.ts +0 -1771
  453. package/generator/review/elm-stuff/0.19.1/d.dat +0 -0
  454. package/generator/review/elm-stuff/0.19.1/i.dat +0 -0
  455. package/generator/review/elm-stuff/0.19.1/o.dat +0 -0
  456. 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
  457. 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
  458. 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
  459. package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm.json +0 -25
  460. 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
  461. 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
  462. 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
  463. package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm.json +0 -41
  464. package/src/DataSource/Env.elm +0 -62
  465. package/src/DataSource/Http.elm +0 -446
  466. package/src/DataSource/Internal/Request.elm +0 -20
  467. package/src/DataSource/Port.elm +0 -90
  468. package/src/MultiDict.elm +0 -49
  469. package/src/PairingHeap.elm +0 -137
  470. package/src/Parser/Extra/String.elm +0 -33
  471. package/src/Parser/Extra.elm +0 -69
  472. package/src/ProgramTest/ComplexQuery.elm +0 -360
  473. package/src/ProgramTest/EffectSimulation.elm +0 -122
  474. package/src/ProgramTest/Failure.elm +0 -367
  475. package/src/ProgramTest/HtmlHighlighter.elm +0 -116
  476. package/src/ProgramTest/HtmlParserHacks.elm +0 -58
  477. package/src/ProgramTest/HtmlRenderer.elm +0 -73
  478. package/src/ProgramTest/Program.elm +0 -30
  479. package/src/ProgramTest/StringLines.elm +0 -26
  480. package/src/ProgramTest/TestHtmlHacks.elm +0 -132
  481. package/src/ProgramTest/TestHtmlParser.elm +0 -201
  482. package/src/ProgramTest.elm +0 -2339
  483. package/src/Query/Extra.elm +0 -55
  484. package/src/SimulatedEffect/Cmd.elm +0 -69
  485. package/src/SimulatedEffect/Http.elm +0 -330
  486. package/src/SimulatedEffect/Navigation.elm +0 -69
  487. package/src/SimulatedEffect/Ports.elm +0 -62
  488. package/src/SimulatedEffect/Process.elm +0 -24
  489. package/src/SimulatedEffect/Sub.elm +0 -48
  490. package/src/SimulatedEffect/Task.elm +0 -252
  491. package/src/SimulatedEffect/Time.elm +0 -25
  492. package/src/SimulatedEffect.elm +0 -42
  493. package/src/String/Extra.elm +0 -6
  494. package/src/Test/Http.elm +0 -145
  495. package/src/TestResult.elm +0 -35
  496. package/src/TestState.elm +0 -305
  497. package/src/Url/Extra.elm +0 -100
  498. package/src/Vendored/Diff.elm +0 -321
  499. package/src/Vendored/Failure.elm +0 -217
  500. package/src/Vendored/FormatMonochrome.elm +0 -44
  501. package/src/Vendored/Highlightable.elm +0 -53
package/src/ApiRoute.elm CHANGED
@@ -5,12 +5,12 @@ module ApiRoute exposing
5
5
  , ApiRoute, ApiRouteBuilder, Response
6
6
  , capture, literal, slash, succeed
7
7
  , withGlobalHeadTags
8
- , toJson, getBuildTimeRoutes, getGlobalHeadTagsDataSource
8
+ , toJson, getBuildTimeRoutes, getGlobalHeadTagsBackendTask
9
9
  )
10
10
 
11
11
  {-| ApiRoute's are defined in `src/Api.elm` and are a way to generate files, like RSS feeds, sitemaps, or any text-based file that you output with an Elm function! You get access
12
- to a DataSource so you can pull in HTTP data, etc. Because ApiRoutes don't hydrate into Elm apps (like pages in elm-pages do), you can pull in as much data as you want in
13
- the DataSource for your ApiRoutes, and it won't effect the payload size. Instead, the size of an ApiRoute is just the content you output for that route.
12
+ to a BackendTask so you can pull in HTTP data, etc. Because ApiRoutes don't hydrate into Elm apps (like pages in elm-pages do), you can pull in as much data as you want in
13
+ the BackendTask for your ApiRoutes, and it won't effect the payload size. Instead, the size of an ApiRoute is just the content you output for that route.
14
14
 
15
15
  Similar to your elm-pages Route Modules, ApiRoute's can be either server-rendered or pre-rendered. Let's compare the differences between pre-rendered and server-rendered ApiRoutes, and the different
16
16
  use cases they support.
@@ -25,7 +25,7 @@ A pre-rendered ApiRoute is just a generated file. For example:
25
25
  - A redirect file for a hosting provider like Netlify
26
26
 
27
27
  You could even generate a JavaScript file, an Elm file, or any file with a String body! It's really just a way to generate files, which are typically used to serve files to a user or Browser, but you execute them, copy them, etc. The only limit is your imagination!
28
- The beauty is that you have a way to 1) pull in type-safe data using DataSource's, and 2) write those files, and all in pure Elm!
28
+ The beauty is that you have a way to 1) pull in type-safe data using BackendTask's, and 2) write those files, and all in pure Elm!
29
29
 
30
30
  @docs single, preRender
31
31
 
@@ -62,11 +62,11 @@ You define your ApiRoute's in `app/Api.elm`. Here's a simple example:
62
62
  module Api exposing (routes)
63
63
 
64
64
  import ApiRoute
65
- import DataSource exposing (DataSource)
65
+ import BackendTask exposing (BackendTask)
66
66
  import Server.Request
67
67
 
68
68
  routes :
69
- DataSource (List Route)
69
+ BackendTask (List Route)
70
70
  -> (Maybe { indent : Int, newLines : Bool } -> Html Never -> String)
71
71
  -> List (ApiRoute.ApiRoute ApiRoute.Response)
72
72
  routes getStaticRoutes htmlToString =
@@ -89,7 +89,7 @@ You define your ApiRoute's in `app/Api.elm`. Here's a simple example:
89
89
  preRenderedExample =
90
90
  ApiRoute.succeed
91
91
  (\userId ->
92
- DataSource.succeed
92
+ BackendTask.succeed
93
93
  (Json.Encode.object
94
94
  [ ( "id", Json.Encode.string userId )
95
95
  , ( "name", "Data for user " ++ userId |> Json.Encode.string )
@@ -103,7 +103,7 @@ You define your ApiRoute's in `app/Api.elm`. Here's a simple example:
103
103
  |> ApiRoute.literal ".json"
104
104
  |> ApiRoute.preRender
105
105
  (\route ->
106
- DataSource.succeed
106
+ BackendTask.succeed
107
107
  [ route "1"
108
108
  , route "2"
109
109
  , route "3"
@@ -144,7 +144,7 @@ You define your ApiRoute's in `app/Api.elm`. Here's a simple example:
144
144
  )
145
145
  ]
146
146
  |> Response.json
147
- |> DataSource.succeed
147
+ |> BackendTask.succeed
148
148
  )
149
149
  Server.Request.rawBody
150
150
  Server.Request.method
@@ -168,12 +168,12 @@ You define your ApiRoute's in `app/Api.elm`. Here's a simple example:
168
168
 
169
169
  ## Internals
170
170
 
171
- @docs toJson, getBuildTimeRoutes, getGlobalHeadTagsDataSource
171
+ @docs toJson, getBuildTimeRoutes, getGlobalHeadTagsBackendTask
172
172
 
173
173
  -}
174
174
 
175
- import DataSource exposing (DataSource)
176
- import DataSource.Http
175
+ import BackendTask exposing (BackendTask)
176
+ import Exception exposing (Throwable)
177
177
  import Head
178
178
  import Internal.ApiRoute exposing (ApiRoute(..), ApiRouteBuilder(..))
179
179
  import Json.Decode as Decode
@@ -190,28 +190,37 @@ type alias ApiRoute response =
190
190
 
191
191
 
192
192
  {-| Same as [`preRender`](#preRender), but for an ApiRoute that has no dynamic segments. This is just a bit simpler because
193
- since there are no dynamic segments, you don't need to provide a DataSource with the list of dynamic segments to pre-render because there is only a single possible route.
193
+ since there are no dynamic segments, you don't need to provide a BackendTask with the list of dynamic segments to pre-render because there is only a single possible route.
194
194
  -}
195
- single : ApiRouteBuilder (DataSource String) (List String) -> ApiRoute Response
195
+ single : ApiRouteBuilder (BackendTask Throwable String) (List String) -> ApiRoute Response
196
196
  single handler =
197
197
  handler
198
- |> preRender (\constructor -> DataSource.succeed [ constructor ])
198
+ |> preRender (\constructor -> BackendTask.succeed [ constructor ])
199
199
 
200
200
 
201
201
  {-| -}
202
- serverRender : ApiRouteBuilder (Server.Request.Parser (DataSource (Server.Response.Response Never Never))) constructor -> ApiRoute Response
202
+ serverRender : ApiRouteBuilder (Server.Request.Parser (BackendTask Throwable (Server.Response.Response Never Never))) constructor -> ApiRoute Response
203
203
  serverRender ((ApiRouteBuilder patterns pattern _ _ _) as fullHandler) =
204
204
  ApiRoute
205
205
  { regex = Regex.fromString ("^" ++ pattern ++ "$") |> Maybe.withDefault Regex.never
206
206
  , matchesToResponse =
207
- \path ->
207
+ \serverRequest path ->
208
208
  Internal.ApiRoute.tryMatch path fullHandler
209
209
  |> Maybe.map
210
- (\toDataSource ->
211
- DataSource.Http.get
212
- "$$elm-pages$$headers"
213
- (toDataSource |> Server.Request.getDecoder |> Decode.map Just)
214
- |> DataSource.andThen
210
+ (\toBackendTask ->
211
+ Server.Request.getDecoder toBackendTask
212
+ |> (\decoder ->
213
+ Decode.decodeValue decoder serverRequest
214
+ |> Result.mapError Decode.errorToString
215
+ |> BackendTask.fromResult
216
+ |> BackendTask.map Just
217
+ )
218
+ |> BackendTask.onError
219
+ (\stringError ->
220
+ -- TODO make error with title and better context/formatting
221
+ Exception.fromString stringError |> BackendTask.fail
222
+ )
223
+ |> BackendTask.andThen
215
224
  (\rendered ->
216
225
  case rendered of
217
226
  Just (Ok okRendered) ->
@@ -222,21 +231,21 @@ serverRender ((ApiRouteBuilder patterns pattern _ _ _) as fullHandler) =
222
231
  |> Server.Request.errorsToString
223
232
  |> Server.Response.plainText
224
233
  |> Server.Response.withStatusCode 400
225
- |> DataSource.succeed
234
+ |> BackendTask.succeed
226
235
 
227
236
  Nothing ->
228
237
  Server.Response.plainText "No matching request handler"
229
238
  |> Server.Response.withStatusCode 400
230
- |> DataSource.succeed
239
+ |> BackendTask.succeed
231
240
  )
232
241
  )
233
- |> Maybe.map (DataSource.map (Server.Response.toJson >> Just))
242
+ |> Maybe.map (BackendTask.map (Server.Response.toJson >> Just))
234
243
  |> Maybe.withDefault
235
- (DataSource.succeed Nothing)
236
- , buildTimeRoutes = DataSource.succeed []
244
+ (BackendTask.succeed Nothing)
245
+ , buildTimeRoutes = BackendTask.succeed []
237
246
  , handleRoute =
238
247
  \path ->
239
- DataSource.succeed
248
+ BackendTask.succeed
240
249
  (case Internal.ApiRoute.tryMatch path fullHandler of
241
250
  Just _ ->
242
251
  True
@@ -251,26 +260,26 @@ serverRender ((ApiRouteBuilder patterns pattern _ _ _) as fullHandler) =
251
260
 
252
261
 
253
262
  {-| -}
254
- preRenderWithFallback : (constructor -> DataSource (List (List String))) -> ApiRouteBuilder (DataSource (Server.Response.Response Never Never)) constructor -> ApiRoute Response
263
+ preRenderWithFallback : (constructor -> BackendTask Throwable (List (List String))) -> ApiRouteBuilder (BackendTask Throwable (Server.Response.Response Never Never)) constructor -> ApiRoute Response
255
264
  preRenderWithFallback buildUrls ((ApiRouteBuilder patterns pattern _ toString constructor) as fullHandler) =
256
265
  let
257
- buildTimeRoutes__ : DataSource (List String)
266
+ buildTimeRoutes__ : BackendTask Throwable (List String)
258
267
  buildTimeRoutes__ =
259
268
  buildUrls (constructor [])
260
- |> DataSource.map (List.map toString)
269
+ |> BackendTask.map (List.map toString)
261
270
  in
262
271
  ApiRoute
263
272
  { regex = Regex.fromString ("^" ++ pattern ++ "$") |> Maybe.withDefault Regex.never
264
273
  , matchesToResponse =
265
- \path ->
274
+ \_ path ->
266
275
  Internal.ApiRoute.tryMatch path fullHandler
267
- |> Maybe.map (DataSource.map (Server.Response.toJson >> Just))
276
+ |> Maybe.map (BackendTask.map (Server.Response.toJson >> Just))
268
277
  |> Maybe.withDefault
269
- (DataSource.succeed Nothing)
278
+ (BackendTask.succeed Nothing)
270
279
  , buildTimeRoutes = buildTimeRoutes__
271
280
  , handleRoute =
272
281
  \path ->
273
- DataSource.succeed
282
+ BackendTask.succeed
274
283
  (case Internal.ApiRoute.tryMatch path fullHandler of
275
284
  Just _ ->
276
285
  True
@@ -293,42 +302,42 @@ encodeStaticFileBody fileBody =
293
302
 
294
303
 
295
304
  {-| -}
296
- preRender : (constructor -> DataSource (List (List String))) -> ApiRouteBuilder (DataSource String) constructor -> ApiRoute Response
305
+ preRender : (constructor -> BackendTask Throwable (List (List String))) -> ApiRouteBuilder (BackendTask Throwable String) constructor -> ApiRoute Response
297
306
  preRender buildUrls ((ApiRouteBuilder patterns pattern _ toString constructor) as fullHandler) =
298
307
  let
299
- buildTimeRoutes__ : DataSource (List String)
308
+ buildTimeRoutes__ : BackendTask Throwable (List String)
300
309
  buildTimeRoutes__ =
301
310
  buildUrls (constructor [])
302
- |> DataSource.map (List.map toString)
311
+ |> BackendTask.map (List.map toString)
303
312
 
304
- preBuiltMatches : DataSource (List (List String))
313
+ preBuiltMatches : BackendTask Throwable (List (List String))
305
314
  preBuiltMatches =
306
315
  buildUrls (constructor [])
307
316
  in
308
317
  ApiRoute
309
318
  { regex = Regex.fromString ("^" ++ pattern ++ "$") |> Maybe.withDefault Regex.never
310
319
  , matchesToResponse =
311
- \path ->
320
+ \_ path ->
312
321
  let
313
322
  matches : List String
314
323
  matches =
315
324
  Internal.ApiRoute.pathToMatches path fullHandler
316
325
 
317
- routeFound : DataSource Bool
326
+ routeFound : BackendTask Throwable Bool
318
327
  routeFound =
319
328
  preBuiltMatches
320
- |> DataSource.map (List.member matches)
329
+ |> BackendTask.map (List.member matches)
321
330
  in
322
331
  routeFound
323
- |> DataSource.andThen
332
+ |> BackendTask.andThen
324
333
  (\found ->
325
334
  if found then
326
335
  Internal.ApiRoute.tryMatch path fullHandler
327
- |> Maybe.map (DataSource.map (encodeStaticFileBody >> Just))
328
- |> Maybe.withDefault (DataSource.succeed Nothing)
336
+ |> Maybe.map (BackendTask.map (encodeStaticFileBody >> Just))
337
+ |> Maybe.withDefault (BackendTask.succeed Nothing)
329
338
 
330
339
  else
331
- DataSource.succeed Nothing
340
+ BackendTask.succeed Nothing
332
341
  )
333
342
  , buildTimeRoutes = buildTimeRoutes__
334
343
  , handleRoute =
@@ -339,7 +348,7 @@ preRender buildUrls ((ApiRouteBuilder patterns pattern _ toString constructor) a
339
348
  Internal.ApiRoute.pathToMatches path fullHandler
340
349
  in
341
350
  preBuiltMatches
342
- |> DataSource.map (List.member matches)
351
+ |> BackendTask.map (List.member matches)
343
352
  , pattern = patterns
344
353
  , kind = "prerender"
345
354
  , globalHeadTags = Nothing
@@ -422,25 +431,19 @@ capture (ApiRouteBuilder patterns pattern previousHandler toString constructor)
422
431
 
423
432
  {-| For internal use by generated code. Not so useful in user-land.
424
433
  -}
425
- getBuildTimeRoutes : ApiRoute response -> DataSource (List String)
434
+ getBuildTimeRoutes : ApiRoute response -> BackendTask Throwable (List String)
426
435
  getBuildTimeRoutes (ApiRoute handler) =
427
436
  handler.buildTimeRoutes
428
437
 
429
438
 
430
439
  {-| Include head tags on every page's HTML.
431
440
  -}
432
- withGlobalHeadTags : DataSource (List Head.Tag) -> ApiRoute response -> ApiRoute response
441
+ withGlobalHeadTags : BackendTask Throwable (List Head.Tag) -> ApiRoute response -> ApiRoute response
433
442
  withGlobalHeadTags globalHeadTags (ApiRoute handler) =
434
443
  ApiRoute { handler | globalHeadTags = Just globalHeadTags }
435
444
 
436
445
 
437
446
  {-| -}
438
- getGlobalHeadTagsDataSource : ApiRoute response -> Maybe (DataSource (List Head.Tag))
439
- getGlobalHeadTagsDataSource (ApiRoute handler) =
447
+ getGlobalHeadTagsBackendTask : ApiRoute response -> Maybe (BackendTask Throwable (List Head.Tag))
448
+ getGlobalHeadTagsBackendTask (ApiRoute handler) =
440
449
  handler.globalHeadTags
441
-
442
-
443
-
444
- --captureRest : ApiRouteBuilder (List String -> a) b -> ApiRouteBuilder a b
445
- --captureRest previousHandler =
446
- -- Debug.todo ""
@@ -0,0 +1,89 @@
1
+ module BackendTask.Env exposing
2
+ ( get, expect
3
+ , Error(..)
4
+ )
5
+
6
+ {-| Because BackendTask's in `elm-pages` never run in the browser (see [the BackendTask docs](BackendTask)), you can access environment variables securely. As long as the environment variable isn't sent
7
+ down into the final `Data` value, it won't end up in the client!
8
+
9
+ import BackendTask exposing (BackendTask)
10
+ import BackendTask.Env
11
+ import Exception exposing (Throwable)
12
+
13
+ type alias EnvVariables =
14
+ { sendGridKey : String
15
+ , siteUrl : String
16
+ }
17
+
18
+ sendEmail : Email -> BackendTask Throwable ()
19
+ sendEmail email =
20
+ BackendTask.map2 EnvVariables
21
+ (BackendTask.Env.expect "SEND_GRID_KEY" |> BackendTask.throw)
22
+ (BackendTask.Env.get "BASE_URL"
23
+ |> BackendTask.map (Maybe.withDefault "http://localhost:1234")
24
+ )
25
+ |> BackendTask.andThen (sendEmailBackendTask email)
26
+
27
+ sendEmailBackendTask : Email -> EnvVariables -> BackendTask Throwable ()
28
+ sendEmailBackendTask email envVariables =
29
+ Debug.todo "Not defined here"
30
+
31
+ @docs get, expect
32
+
33
+
34
+ ## Errors
35
+
36
+ @docs Error
37
+
38
+ -}
39
+
40
+ import BackendTask exposing (BackendTask)
41
+ import BackendTask.Http
42
+ import BackendTask.Internal.Request
43
+ import Exception exposing (Exception)
44
+ import Json.Decode as Decode
45
+ import Json.Encode as Encode
46
+ import TerminalText
47
+
48
+
49
+ {-| -}
50
+ type Error
51
+ = MissingEnvVariable String
52
+
53
+
54
+ {-| Get an environment variable, or Nothing if there is no environment variable matching that name. This `BackendTask`
55
+ will never fail, but instead will return `Nothing` if the environment variable is missing.
56
+ -}
57
+ get : String -> BackendTask error (Maybe String)
58
+ get envVariableName =
59
+ BackendTask.Internal.Request.request
60
+ { name = "env"
61
+ , body = BackendTask.Http.jsonBody (Encode.string envVariableName)
62
+ , expect =
63
+ BackendTask.Http.expectJson
64
+ (Decode.nullable Decode.string)
65
+ }
66
+
67
+
68
+ {-| Get an environment variable, or a BackendTask Exception if there is no environment variable matching that name.
69
+ -}
70
+ expect : String -> BackendTask (Exception Error) String
71
+ expect envVariableName =
72
+ envVariableName
73
+ |> get
74
+ |> BackendTask.andThen
75
+ (\maybeValue ->
76
+ maybeValue
77
+ |> Result.fromMaybe
78
+ (Exception.Exception (MissingEnvVariable envVariableName)
79
+ { title = "Missing Env Variable"
80
+ , body =
81
+ [ TerminalText.text "BackendTask.Env.expect was expecting a variable `"
82
+ , TerminalText.yellow envVariableName
83
+ , TerminalText.text "` but couldn't find a variable with that name."
84
+ ]
85
+ |> TerminalText.toString
86
+ }
87
+ )
88
+ |> BackendTask.fromResult
89
+ )
@@ -1,9 +1,10 @@
1
- module DataSource.File exposing
1
+ module BackendTask.File exposing
2
2
  ( bodyWithFrontmatter, bodyWithoutFrontmatter, onlyFrontmatter
3
3
  , jsonFile, rawFile
4
+ , FileReadError(..)
4
5
  )
5
6
 
6
- {-| This module lets you read files from the local filesystem as a [`DataSource`](DataSource#DataSource).
7
+ {-| This module lets you read files from the local filesystem as a [`BackendTask`](BackendTask#BackendTask).
7
8
  File paths are relative to the root of your `elm-pages` project (next to the `elm.json` file and `src/` directory).
8
9
 
9
10
 
@@ -40,12 +41,19 @@ plain old JSON in Elm.
40
41
 
41
42
  @docs jsonFile, rawFile
42
43
 
44
+
45
+ ## Exceptions
46
+
47
+ @docs FileReadError
48
+
43
49
  -}
44
50
 
45
- import DataSource exposing (DataSource)
46
- import DataSource.Http
47
- import DataSource.Internal.Request
51
+ import BackendTask exposing (BackendTask)
52
+ import BackendTask.Http
53
+ import BackendTask.Internal.Request
54
+ import Exception exposing (Exception)
48
55
  import Json.Decode as Decode exposing (Decoder)
56
+ import TerminalText
49
57
 
50
58
 
51
59
  frontmatter : Decoder frontmatter -> Decoder frontmatter
@@ -55,11 +63,11 @@ frontmatter frontmatterDecoder =
55
63
 
56
64
  {-|
57
65
 
58
- import DataSource exposing (DataSource)
59
- import DataSource.File as File
66
+ import BackendTask exposing (BackendTask)
67
+ import BackendTask.File as File
60
68
  import Decode as Decode exposing (Decoder)
61
69
 
62
- blogPost : DataSource BlogPostMetadata
70
+ blogPost : BackendTask BlogPostMetadata
63
71
  blogPost =
64
72
  File.bodyWithFrontmatter blogPostDecoder
65
73
  "blog/hello-world.md"
@@ -81,7 +89,7 @@ frontmatter frontmatterDecoder =
81
89
  Decode.map (String.split " ")
82
90
  Decode.string
83
91
 
84
- This will give us a DataSource that results in the following value:
92
+ This will give us a BackendTask that results in the following value:
85
93
 
86
94
  value =
87
95
  { body = "Hey there! This is my first post :)"
@@ -91,13 +99,13 @@ This will give us a DataSource that results in the following value:
91
99
 
92
100
  It's common to parse the body with a markdown parser or other format.
93
101
 
94
- import DataSource exposing (DataSource)
95
- import DataSource.File as File
102
+ import BackendTask exposing (BackendTask)
103
+ import BackendTask.File as File
96
104
  import Decode as Decode exposing (Decoder)
97
105
  import Html exposing (Html)
98
106
 
99
107
  example :
100
- DataSource
108
+ BackendTask
101
109
  { title : String
102
110
  , body : List (Html msg)
103
111
  }
@@ -133,7 +141,7 @@ It's common to parse the body with a markdown parser or other format.
133
141
  )
134
142
 
135
143
  -}
136
- bodyWithFrontmatter : (String -> Decoder frontmatter) -> String -> DataSource frontmatter
144
+ bodyWithFrontmatter : (String -> Decoder frontmatter) -> String -> BackendTask (Exception (FileReadError Decode.Error)) frontmatter
137
145
  bodyWithFrontmatter frontmatterDecoder filePath =
138
146
  read filePath
139
147
  (body
@@ -144,16 +152,23 @@ bodyWithFrontmatter frontmatterDecoder filePath =
144
152
  )
145
153
 
146
154
 
155
+ {-| -}
156
+ type FileReadError decoding
157
+ = FileDoesntExist
158
+ | FileReadError String
159
+ | DecodingError decoding
160
+
161
+
147
162
  {-| Same as `bodyWithFrontmatter` except it doesn't include the body.
148
163
 
149
164
  This is often useful when you're aggregating data, for example getting a listing of blog posts and need to extract
150
165
  just the metadata.
151
166
 
152
- import DataSource exposing (DataSource)
153
- import DataSource.File as File
167
+ import BackendTask exposing (BackendTask)
168
+ import BackendTask.File as File
154
169
  import Decode as Decode exposing (Decoder)
155
170
 
156
- blogPost : DataSource BlogPostMetadata
171
+ blogPost : BackendTask BlogPostMetadata
157
172
  blogPost =
158
173
  File.onlyFrontmatter
159
174
  blogPostDecoder
@@ -171,34 +186,34 @@ just the metadata.
171
186
  (Decode.field "tags" (Decode.list Decode.string))
172
187
 
173
188
  If you wanted to use this to get this metadata for all blog posts in a folder, you could use
174
- the [`DataSource`](DataSource) API along with [`DataSource.Glob`](DataSource-Glob).
189
+ the [`BackendTask`](BackendTask) API along with [`BackendTask.Glob`](BackendTask-Glob).
175
190
 
176
- import DataSource exposing (DataSource)
177
- import DataSource.File as File
191
+ import BackendTask exposing (BackendTask)
192
+ import BackendTask.File as File
178
193
  import Decode as Decode exposing (Decoder)
179
194
 
180
- blogPostFiles : DataSource (List String)
195
+ blogPostFiles : BackendTask (List String)
181
196
  blogPostFiles =
182
197
  Glob.succeed identity
183
198
  |> Glob.captureFilePath
184
199
  |> Glob.match (Glob.literal "content/blog/")
185
200
  |> Glob.match Glob.wildcard
186
201
  |> Glob.match (Glob.literal ".md")
187
- |> Glob.toDataSource
202
+ |> Glob.toBackendTask
188
203
 
189
- allMetadata : DataSource (List BlogPostMetadata)
204
+ allMetadata : BackendTask (List BlogPostMetadata)
190
205
  allMetadata =
191
206
  blogPostFiles
192
- |> DataSource.map
207
+ |> BackendTask.map
193
208
  (List.map
194
209
  (File.onlyFrontmatter
195
210
  blogPostDecoder
196
211
  )
197
212
  )
198
- |> DataSource.resolve
213
+ |> BackendTask.resolve
199
214
 
200
215
  -}
201
- onlyFrontmatter : Decoder frontmatter -> String -> DataSource frontmatter
216
+ onlyFrontmatter : Decoder frontmatter -> String -> BackendTask (Exception (FileReadError Decode.Error)) frontmatter
202
217
  onlyFrontmatter frontmatterDecoder filePath =
203
218
  read filePath
204
219
  (frontmatter frontmatterDecoder)
@@ -216,16 +231,16 @@ tags: elm
216
231
  Hey there! This is my first post :)
217
232
  ```
218
233
 
219
- import DataSource exposing (DataSource)
234
+ import BackendTask exposing (BackendTask)
220
235
 
221
- data : DataSource String
236
+ data : BackendTask String
222
237
  data =
223
238
  bodyWithoutFrontmatter "blog/hello-world.md"
224
239
 
225
240
  Then data will yield the value `"Hey there! This is my first post :)"`.
226
241
 
227
242
  -}
228
- bodyWithoutFrontmatter : String -> DataSource String
243
+ bodyWithoutFrontmatter : String -> BackendTask (Exception (FileReadError decoderError)) String
229
244
  bodyWithoutFrontmatter filePath =
230
245
  read filePath
231
246
  body
@@ -241,15 +256,15 @@ use `jsonFile` to get the benefits of the `Decode` here.
241
256
 
242
257
  You could read a file called `hello.txt` in your root project directory like this:
243
258
 
244
- import DataSource exposing (DataSource)
245
- import DataSource.File as File
259
+ import BackendTask exposing (BackendTask)
260
+ import BackendTask.File as File
246
261
 
247
- elmJsonFile : DataSource String
262
+ elmJsonFile : BackendTask String
248
263
  elmJsonFile =
249
264
  File.rawFile "hello.txt"
250
265
 
251
266
  -}
252
- rawFile : String -> DataSource String
267
+ rawFile : String -> BackendTask (Exception (FileReadError decoderError)) String
253
268
  rawFile filePath =
254
269
  read filePath (Decode.field "rawFile" Decode.string)
255
270
 
@@ -258,10 +273,10 @@ rawFile filePath =
258
273
 
259
274
  The Decode will strip off any unused JSON data.
260
275
 
261
- import DataSource exposing (DataSource)
262
- import DataSource.File as File
276
+ import BackendTask exposing (BackendTask)
277
+ import BackendTask.File as File
263
278
 
264
- sourceDirectories : DataSource (List String)
279
+ sourceDirectories : BackendTask (List String)
265
280
  sourceDirectories =
266
281
  File.jsonFile
267
282
  (Decode.field
@@ -271,15 +286,24 @@ The Decode will strip off any unused JSON data.
271
286
  "elm.json"
272
287
 
273
288
  -}
274
- jsonFile : Decoder a -> String -> DataSource a
289
+ jsonFile : Decoder a -> String -> BackendTask (Exception (FileReadError Decode.Error)) a
275
290
  jsonFile jsonFileDecoder filePath =
276
291
  rawFile filePath
277
- |> DataSource.andThen
292
+ |> BackendTask.andThen
278
293
  (\jsonString ->
279
294
  jsonString
280
295
  |> Decode.decodeString jsonFileDecoder
281
- |> Result.mapError Decode.errorToString
282
- |> DataSource.fromResult
296
+ |> Result.mapError
297
+ (\jsonDecodeError ->
298
+ Exception.Exception (DecodingError jsonDecodeError)
299
+ { title = "JSON Decoding Error"
300
+ , body =
301
+ [ TerminalText.text (Decode.errorToString jsonDecodeError)
302
+ ]
303
+ |> TerminalText.toString
304
+ }
305
+ )
306
+ |> BackendTask.fromResult
283
307
  )
284
308
 
285
309
 
@@ -290,10 +314,32 @@ body =
290
314
  Decode.field "withoutFrontmatter" Decode.string
291
315
 
292
316
 
293
- read : String -> Decoder a -> DataSource a
317
+ read : String -> Decoder a -> BackendTask (Exception (FileReadError error)) a
294
318
  read filePath decoder =
295
- DataSource.Internal.Request.request
319
+ BackendTask.Internal.Request.request
296
320
  { name = "read-file"
297
- , body = DataSource.Http.stringBody "" filePath
298
- , expect = decoder |> DataSource.Http.expectJson
321
+ , body = BackendTask.Http.stringBody "" filePath
322
+ , expect =
323
+ Decode.oneOf
324
+ [ Decode.field "errorCode"
325
+ (Decode.map Err (errorDecoder filePath))
326
+ , decoder |> Decode.map Ok
327
+ ]
328
+ |> BackendTask.Http.expectJson
299
329
  }
330
+ |> BackendTask.andThen BackendTask.fromResult
331
+
332
+
333
+ errorDecoder : String -> Decoder (Exception (FileReadError decoding))
334
+ errorDecoder filePath =
335
+ Decode.succeed
336
+ (Exception.Exception FileDoesntExist
337
+ { title = "File Doesn't Exist"
338
+ , body =
339
+ [ TerminalText.text "Couldn't find file at path `"
340
+ , TerminalText.yellow filePath
341
+ , TerminalText.text "`"
342
+ ]
343
+ |> TerminalText.toString
344
+ }
345
+ )