elm-pages 3.0.0-beta.9 → 3.0.1

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 (208) hide show
  1. package/README.md +2 -2
  2. package/adapter/netlify.js +207 -0
  3. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2730 -2938
  4. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.c59ecaf7fa8379e3a2d0f793fe9784e3060cb64a6d1fe22b8f6a054502021dbe.json +1 -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.elmi +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/Console-Text.elmo +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.elmi +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-DeadCodeEliminateData.elmo +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.elmi +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/Pages-Review-DeadCodeEliminateDataTest.elmo +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.elmi +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-Generated-Main.elmo +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.elmi +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-Color.elmo +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.elmi +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-Monochrome.elmo +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.elmi +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-Format.elmo +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.elmi +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-Console.elmo +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.elmi +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-Highlightable.elmo +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.elmi +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-JUnit.elmo +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.elmi +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-Json.elmo +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.elmi +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-Reporter.elmo +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.elmi +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-Reporter-TestResults.elmo +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.elmi +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-JsMessage.elmo +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.elmi +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-Console.elmo +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.elmi +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-Vendor-Diff.elmo +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.elmi +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/Test-Runner-Node.elmo +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/d.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/i.dat +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/lock +0 -0
  42. 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
  43. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +38 -0
  44. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +30883 -0
  45. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +1 -0
  46. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +27 -0
  47. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  48. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  49. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  50. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  51. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  52. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  53. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  54. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  55. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +17042 -13855
  56. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  57. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  58. package/generator/dead-code-review/elm.json +9 -7
  59. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +64 -13
  60. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +66 -50
  61. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  62. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
  63. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  64. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
  65. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  66. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  67. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  68. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  69. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  70. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
  71. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  72. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  73. package/generator/review/elm.json +10 -10
  74. package/generator/src/RouteBuilder.elm +93 -128
  75. package/generator/src/SharedTemplate.elm +8 -7
  76. package/generator/src/SiteConfig.elm +3 -2
  77. package/generator/src/basepath-middleware.js +3 -3
  78. package/generator/src/build.js +143 -59
  79. package/generator/src/cli.js +292 -88
  80. package/generator/src/codegen.js +29 -27
  81. package/generator/src/compatibility-key.js +3 -0
  82. package/generator/src/compile-elm.js +43 -26
  83. package/generator/src/config.js +2 -4
  84. package/generator/src/copy-dir.js +2 -2
  85. package/generator/src/dev-server.js +160 -102
  86. package/generator/src/dir-helpers.js +9 -26
  87. package/generator/src/elm-codegen.js +5 -4
  88. package/generator/src/elm-file-constants.js +2 -3
  89. package/generator/src/error-formatter.js +12 -11
  90. package/generator/src/file-helpers.js +3 -4
  91. package/generator/src/generate-template-module-connector.js +23 -23
  92. package/generator/src/init.js +9 -8
  93. package/generator/src/pre-render-html.js +10 -13
  94. package/generator/src/render-test.js +109 -0
  95. package/generator/src/render-worker.js +25 -28
  96. package/generator/src/render.js +320 -143
  97. package/generator/src/request-cache.js +265 -162
  98. package/generator/src/resolve-elm-module.js +64 -0
  99. package/generator/src/rewrite-client-elm-json.js +6 -5
  100. package/generator/src/rewrite-elm-json-help.js +56 -0
  101. package/generator/src/rewrite-elm-json.js +17 -7
  102. package/generator/src/route-codegen-helpers.js +16 -31
  103. package/generator/src/seo-renderer.js +1 -3
  104. package/generator/src/vite-utils.js +1 -2
  105. package/generator/static-code/elm-pages.js +10 -0
  106. package/generator/static-code/hmr.js +79 -13
  107. package/generator/template/app/Api.elm +3 -2
  108. package/generator/template/app/Effect.elm +155 -0
  109. package/generator/template/app/ErrorPage.elm +49 -6
  110. package/generator/template/app/Route/Blog/Slug_.elm +86 -0
  111. package/generator/template/app/Route/Greet.elm +107 -0
  112. package/generator/template/app/Route/Hello.elm +119 -0
  113. package/generator/template/app/Route/Index.elm +26 -25
  114. package/generator/template/app/Shared.elm +38 -39
  115. package/generator/template/app/Site.elm +4 -7
  116. package/generator/template/app/View.elm +9 -8
  117. package/generator/template/codegen/elm.codegen.json +18 -0
  118. package/generator/template/custom-backend-task.ts +3 -0
  119. package/generator/template/elm-pages.config.mjs +13 -0
  120. package/generator/template/elm-tooling.json +0 -3
  121. package/generator/template/elm.json +34 -25
  122. package/generator/template/index.ts +1 -2
  123. package/generator/template/netlify.toml +4 -1
  124. package/generator/template/package.json +10 -4
  125. package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
  126. package/generator/template/script/custom-backend-task.ts +3 -0
  127. package/generator/template/script/elm.json +61 -0
  128. package/generator/template/script/src/AddRoute.elm +312 -0
  129. package/generator/template/script/src/Stars.elm +42 -0
  130. package/package.json +30 -27
  131. package/src/ApiRoute.elm +249 -82
  132. package/src/BackendTask/Custom.elm +325 -0
  133. package/src/BackendTask/Env.elm +90 -0
  134. package/src/{DataSource → BackendTask}/File.elm +171 -56
  135. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  136. package/src/BackendTask/Http.elm +679 -0
  137. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  138. package/src/BackendTask/Internal/Request.elm +69 -0
  139. package/src/BackendTask/Random.elm +79 -0
  140. package/src/BackendTask/Time.elm +47 -0
  141. package/src/BackendTask.elm +531 -0
  142. package/src/FatalError.elm +90 -0
  143. package/src/FormData.elm +21 -18
  144. package/src/Head/Seo.elm +4 -4
  145. package/src/Head.elm +112 -8
  146. package/src/Internal/ApiRoute.elm +7 -5
  147. package/src/Internal/Request.elm +84 -4
  148. package/src/PageServerResponse.elm +6 -1
  149. package/src/Pages/ConcurrentSubmission.elm +127 -0
  150. package/src/Pages/Form.elm +340 -0
  151. package/src/Pages/FormData.elm +19 -0
  152. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  153. package/src/Pages/Internal/FatalError.elm +5 -0
  154. package/src/Pages/Internal/Msg.elm +93 -0
  155. package/src/Pages/Internal/NotFoundReason.elm +4 -4
  156. package/src/Pages/Internal/Platform/Cli.elm +586 -768
  157. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  158. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  159. package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
  160. package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
  161. package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
  162. package/src/Pages/Internal/Platform.elm +330 -203
  163. package/src/Pages/Internal/ResponseSketch.elm +2 -2
  164. package/src/Pages/Internal/Script.elm +17 -0
  165. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  166. package/src/Pages/Manifest.elm +52 -11
  167. package/src/Pages/Navigation.elm +85 -0
  168. package/src/Pages/PageUrl.elm +26 -12
  169. package/src/Pages/ProgramConfig.elm +32 -22
  170. package/src/Pages/Script.elm +166 -0
  171. package/src/Pages/SiteConfig.elm +3 -2
  172. package/src/Pages/StaticHttp/Request.elm +2 -2
  173. package/src/Pages/StaticHttpRequest.elm +23 -99
  174. package/src/Pages/Url.elm +3 -3
  175. package/src/PagesMsg.elm +88 -0
  176. package/src/QueryParams.elm +21 -172
  177. package/src/RenderRequest.elm +7 -7
  178. package/src/RequestsAndPending.elm +37 -20
  179. package/src/Result/Extra.elm +26 -0
  180. package/src/Scaffold/Form.elm +569 -0
  181. package/src/Scaffold/Route.elm +1431 -0
  182. package/src/Server/Request.elm +476 -1001
  183. package/src/Server/Response.elm +130 -36
  184. package/src/Server/Session.elm +181 -111
  185. package/src/Server/SetCookie.elm +80 -32
  186. package/src/Stub.elm +53 -0
  187. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  188. package/src/{Path.elm → UrlPath.elm} +33 -36
  189. package/generator/template/public/images/icon-png.png +0 -0
  190. package/src/DataSource/Env.elm +0 -38
  191. package/src/DataSource/Http.elm +0 -446
  192. package/src/DataSource/Internal/Request.elm +0 -20
  193. package/src/DataSource/Port.elm +0 -90
  194. package/src/DataSource.elm +0 -546
  195. package/src/Form/Field.elm +0 -717
  196. package/src/Form/FieldStatus.elm +0 -36
  197. package/src/Form/FieldView.elm +0 -417
  198. package/src/Form/FormData.elm +0 -22
  199. package/src/Form/Validation.elm +0 -391
  200. package/src/Form/Value.elm +0 -118
  201. package/src/Form.elm +0 -1683
  202. package/src/FormDecoder.elm +0 -102
  203. package/src/Pages/FormState.elm +0 -256
  204. package/src/Pages/Generate.elm +0 -1242
  205. package/src/Pages/Internal/Form.elm +0 -17
  206. package/src/Pages/Internal/Platform/Cli.elm.bak +0 -1276
  207. package/src/Pages/Msg.elm +0 -79
  208. package/src/Pages/Transition.elm +0 -70
@@ -75,7 +75,7 @@ console.elmlog = (str) => logs.push(str + "\n");
75
75
  const { Elm } = require("./Runner.elm.js");
76
76
 
77
77
  // Start the Elm app
78
- const flags = { initialSeed: 3518984952, fuzzRuns: 100, filter: null };
78
+ const flags = { initialSeed: 2080317264, fuzzRuns: 100, filter: null };
79
79
  const app = Elm.Runner.init({ flags: flags });
80
80
 
81
81
  // Record the timing at which we received the last "runTest" message
@@ -82,12 +82,12 @@ const verbosity = 0;
82
82
  // Create a long lived reporter worker
83
83
  const { Elm } = require("./Reporter.elm.js");
84
84
  const flags = {
85
- initialSeed: 3518984952,
85
+ initialSeed: 2080317264,
86
86
  fuzzRuns: 100,
87
87
  mode: "consoleColor",
88
88
  verbosity: verbosity,
89
89
  globs: [],
90
- paths: ["/Users/dillonkearns/src/github.com/dillonkearns/elm-pages-v3-beta/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm"],
90
+ paths: ["/Users/dillonkearns/src/github.com/dillonkearns/elm-pages/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm"],
91
91
  };
92
92
  reporter = Elm.Reporter.init({ flags: flags });
93
93
 
@@ -8,27 +8,29 @@
8
8
  "dependencies": {
9
9
  "direct": {
10
10
  "elm/core": "1.0.5",
11
+ "elm/json": "1.1.3",
11
12
  "elm-community/result-extra": "2.4.0",
12
- "jfmengels/elm-review": "2.4.2",
13
- "stil4m/elm-syntax": "7.2.5"
13
+ "jfmengels/elm-review": "2.13.0",
14
+ "stil4m/elm-syntax": "7.2.9"
14
15
  },
15
16
  "indirect": {
17
+ "elm/bytes": "1.0.8",
16
18
  "elm/html": "1.0.0",
17
- "elm/json": "1.1.3",
18
19
  "elm/parser": "1.1.0",
19
20
  "elm/project-metadata-utils": "1.0.2",
20
21
  "elm/random": "1.0.0",
21
22
  "elm/time": "1.0.0",
22
- "elm/virtual-dom": "1.0.2",
23
- "elm-community/list-extra": "8.3.0",
24
- "miniBill/elm-unicode": "1.0.2",
23
+ "elm/virtual-dom": "1.0.3",
24
+ "elm-community/list-extra": "8.7.0",
25
+ "elm-explorations/test": "2.1.1",
26
+ "miniBill/elm-unicode": "1.0.3",
25
27
  "rtfeldman/elm-hex": "1.0.0",
26
28
  "stil4m/structured-writer": "1.0.3"
27
29
  }
28
30
  },
29
31
  "test-dependencies": {
30
32
  "direct": {
31
- "elm-explorations/test": "1.2.2"
33
+ "elm-explorations/test": "2.1.1"
32
34
  },
33
35
  "indirect": {}
34
36
  }
@@ -7,6 +7,7 @@ import Elm.Syntax.Expression as Expression exposing (Expression)
7
7
  import Elm.Syntax.Import exposing (Import)
8
8
  import Elm.Syntax.ModuleName exposing (ModuleName)
9
9
  import Elm.Syntax.Node as Node exposing (Node)
10
+ import Elm.Syntax.Range exposing (Range)
10
11
  import Review.Fix
11
12
  import Review.ModuleNameLookupTable as ModuleNameLookupTable exposing (ModuleNameLookupTable)
12
13
  import Review.Rule as Rule exposing (Error, Rule)
@@ -15,6 +16,7 @@ import Review.Rule as Rule exposing (Error, Rule)
15
16
  type alias Context =
16
17
  { lookupTable : ModuleNameLookupTable
17
18
  , importContext : Dict (List String) ImportContext
19
+ , firstImport : Maybe Range
18
20
  }
19
21
 
20
22
 
@@ -62,18 +64,43 @@ toImportContext import_ =
62
64
  rule : Rule
63
65
  rule =
64
66
  Rule.newModuleRuleSchemaUsingContextCreator "Pages.Review.DeadCodeEliminateData" initialContext
67
+ |> Rule.providesFixesForModuleRule
65
68
  |> Rule.withExpressionEnterVisitor expressionVisitor
66
69
  |> Rule.withDeclarationEnterVisitor declarationVisitor
67
70
  |> Rule.withImportVisitor importVisitor
71
+ |> Rule.withFinalModuleEvaluation finalEvaluation
68
72
  |> Rule.fromModuleRuleSchema
69
73
 
70
74
 
75
+ finalEvaluation : Context -> List (Rule.Error {})
76
+ finalEvaluation context =
77
+ case Dict.get [ "FatalError" ] context.importContext of
78
+ Nothing ->
79
+ let
80
+ importAddRange : { start : { row : Int, column : Int }, end : { row : Int, column : Int } }
81
+ importAddRange =
82
+ context.firstImport |> Maybe.withDefault { start = { row = 0, column = 0 }, end = { row = 0, column = 0 } }
83
+ in
84
+ [ Rule.errorWithFix
85
+ { message = "Codemod"
86
+ , details = [ "" ]
87
+ }
88
+ importAddRange
89
+ [ Review.Fix.insertAt importAddRange.end "\nimport FatalError\n"
90
+ ]
91
+ ]
92
+
93
+ _ ->
94
+ []
95
+
96
+
71
97
  initialContext : Rule.ContextCreator () Context
72
98
  initialContext =
73
99
  Rule.initContextCreator
74
100
  (\lookupTable () ->
75
101
  { lookupTable = lookupTable
76
102
  , importContext = Dict.empty
103
+ , firstImport = Nothing
77
104
  }
78
105
  )
79
106
  |> Rule.withModuleNameLookupTable
@@ -90,12 +117,20 @@ importVisitor node context =
90
117
  , { context
91
118
  | importContext =
92
119
  context.importContext |> Dict.insert key value
120
+ , firstImport = context.firstImport |> Maybe.withDefault (Node.range node) |> Just
93
121
  }
94
122
  )
95
123
 
96
124
 
97
125
  declarationVisitor : Node Declaration -> Context -> ( List (Error {}), Context )
98
126
  declarationVisitor node context =
127
+ let
128
+ exceptionFromString : String
129
+ exceptionFromString =
130
+ "("
131
+ ++ referenceFunction context.importContext ( [ "FatalError" ], "fromString" )
132
+ ++ " \"\")"
133
+ in
99
134
  case Node.value node of
100
135
  Declaration.FunctionDeclaration { declaration } ->
101
136
  case Node.value declaration of
@@ -132,8 +167,11 @@ declarationVisitor node context =
132
167
  (Node.range dataValue)
133
168
  -- TODO need to replace `action` as well
134
169
  [ ("data = "
135
- ++ referenceFunction context.importContext ( [ "DataSource" ], "fail" )
136
- ++ " \"\"\n "
170
+ ++ referenceFunction context.importContext ( [ "BackendTask" ], "fail" )
171
+ -- TODO add `import FatalError` if not present (and use alias if present)
172
+ ++ " "
173
+ ++ exceptionFromString
174
+ ++ "\n "
137
175
  )
138
176
  |> Review.Fix.replaceRangeBy (Node.range dataValue)
139
177
  ]
@@ -179,6 +217,13 @@ expressionVisitor node context =
179
217
  ( dataFieldValue
180
218
  |> List.concatMap
181
219
  (\( key, dataValue ) ->
220
+ let
221
+ exceptionFromString : String
222
+ exceptionFromString =
223
+ "("
224
+ ++ referenceFunction context.importContext ( [ "FatalError" ], "fromString" )
225
+ ++ " \"\")"
226
+ in
182
227
  [ Rule.errorWithFix
183
228
  { message = "Codemod"
184
229
  , details = [ "" ]
@@ -190,22 +235,28 @@ expressionVisitor node context =
190
235
  ++ (case pageBuilderName of
191
236
  "preRender" ->
192
237
  "\\_ -> "
193
- ++ referenceFunction context.importContext ( [ "DataSource" ], "fail" )
194
- ++ " \"\""
238
+ ++ referenceFunction context.importContext ( [ "BackendTask" ], "fail" )
239
+ ++ " "
240
+ ++ exceptionFromString
195
241
 
196
242
  "preRenderWithFallback" ->
197
243
  "\\_ -> "
198
- ++ referenceFunction context.importContext ( [ "DataSource" ], "fail" )
199
- ++ " \"\""
244
+ ++ referenceFunction context.importContext ( [ "BackendTask" ], "fail" )
245
+ ++ " "
246
+ ++ exceptionFromString
200
247
 
201
248
  "serverRender" ->
202
- "\\_ -> "
203
- ++ referenceFunction context.importContext ( [ "Server", "Request" ], "oneOf" )
204
- ++ " []\n "
249
+ "\\_ _ -> "
250
+ ++ referenceFunction context.importContext ( [ "BackendTask" ], "fail" )
251
+ ++ " ("
252
+ ++ referenceFunction context.importContext ( [ "FatalError" ], "fromString" )
253
+ ++ " \"\")\n "
205
254
 
206
255
  "single" ->
207
- referenceFunction context.importContext ( [ "DataSource" ], "fail" )
208
- ++ " \"\"\n "
256
+ referenceFunction context.importContext ( [ "BackendTask" ], "fail" )
257
+ ++ " "
258
+ ++ exceptionFromString
259
+ ++ "\n "
209
260
 
210
261
  _ ->
211
262
  "data"
@@ -259,7 +310,7 @@ isAlreadyApplied lookupTable expression =
259
310
  )
260
311
  |> Maybe.withDefault []
261
312
  in
262
- resolvedModuleName == [ "DataSource" ]
313
+ resolvedModuleName == [ "BackendTask" ]
263
314
 
264
315
  (Expression.FunctionOrValue _ "oneOf") :: (Expression.ListExpr []) :: _ ->
265
316
  let
@@ -295,7 +346,7 @@ isAlreadyApplied lookupTable expression =
295
346
  )
296
347
  |> Maybe.withDefault []
297
348
  in
298
- resolvedModuleName == [ "DataSource" ]
349
+ resolvedModuleName == [ "BackendTask" ]
299
350
 
300
351
  _ ->
301
352
  False
@@ -14,11 +14,12 @@ all =
14
14
 
15
15
  import Server.Request as Request
16
16
 
17
- import DataSource exposing (DataSource)
18
- import RouteBuilder exposing (Page, StaticPayload, single)
17
+ import BackendTask exposing (BackendTask)
18
+ import FatalError
19
+ import RouteBuilder exposing (Page, App, single)
19
20
  import Pages.PageUrl exposing (PageUrl)
20
21
  import Pages.Url
21
- import Path
22
+ import UrlPath
22
23
  import Route exposing (Route)
23
24
  import Shared
24
25
  import View exposing (View)
@@ -49,9 +50,9 @@ route =
49
50
  |> RouteBuilder.buildNoState { view = view }
50
51
 
51
52
 
52
- data : DataSource Data
53
+ data : BackendTask Data
53
54
  data =
54
- DataSource.succeed ()
55
+ BackendTask.succeed ()
55
56
  """
56
57
  |> Review.Test.run rule
57
58
  |> Review.Test.expectErrors
@@ -68,11 +69,12 @@ data =
68
69
 
69
70
  import Server.Request as Request
70
71
 
71
- import DataSource exposing (DataSource)
72
- import RouteBuilder exposing (Page, StaticPayload, single)
72
+ import BackendTask exposing (BackendTask)
73
+ import FatalError
74
+ import RouteBuilder exposing (Page, App, single)
73
75
  import Pages.PageUrl exposing (PageUrl)
74
76
  import Pages.Url
75
- import Path
77
+ import UrlPath
76
78
  import Route exposing (Route)
77
79
  import Shared
78
80
  import View exposing (View)
@@ -98,26 +100,27 @@ route : StatelessRoute RouteParams Data ActionData
98
100
  route =
99
101
  single
100
102
  { head = head
101
- , data = DataSource.fail ""
103
+ , data = BackendTask.fail (FatalError.fromString "")
102
104
  }
103
105
  |> RouteBuilder.buildNoState { view = view }
104
106
 
105
107
 
106
- data : DataSource Data
108
+ data : BackendTask Data
107
109
  data =
108
- DataSource.succeed ()
110
+ BackendTask.succeed ()
109
111
  """
110
112
  ]
111
- , test "supports aliased DataSource module import" <|
113
+ , test "supports aliased BackendTask module import" <|
112
114
  \() ->
113
115
  """module Route.Index exposing (Data, Model, Msg, route)
114
116
 
115
117
  import Server.Request as Request
116
- import DataSource as DS
117
- import RouteBuilder exposing (Page, StaticPayload, single)
118
+ import FatalError
119
+ import BackendTask as DS
120
+ import RouteBuilder exposing (Page, App, single)
118
121
  import Pages.PageUrl exposing (PageUrl)
119
122
  import Pages.Url
120
- import Path
123
+ import UrlPath
121
124
  import Route exposing (Route)
122
125
  import Shared
123
126
  import View exposing (View)
@@ -148,9 +151,9 @@ route =
148
151
  |> RouteBuilder.buildNoState { view = view }
149
152
 
150
153
 
151
- data : DataSource Data
154
+ data : BackendTask Data
152
155
  data =
153
- DataSource.succeed ()
156
+ BackendTask.succeed ()
154
157
  """
155
158
  |> Review.Test.run rule
156
159
  |> Review.Test.expectErrors
@@ -166,11 +169,12 @@ data =
166
169
  """module Route.Index exposing (Data, Model, Msg, route)
167
170
 
168
171
  import Server.Request as Request
169
- import DataSource as DS
170
- import RouteBuilder exposing (Page, StaticPayload, single)
172
+ import FatalError
173
+ import BackendTask as DS
174
+ import RouteBuilder exposing (Page, App, single)
171
175
  import Pages.PageUrl exposing (PageUrl)
172
176
  import Pages.Url
173
- import Path
177
+ import UrlPath
174
178
  import Route exposing (Route)
175
179
  import Shared
176
180
  import View exposing (View)
@@ -196,14 +200,14 @@ route : StatelessRoute RouteParams Data ActionData
196
200
  route =
197
201
  single
198
202
  { head = head
199
- , data = DS.fail ""
203
+ , data = DS.fail (FatalError.fromString "")
200
204
  }
201
205
  |> RouteBuilder.buildNoState { view = view }
202
206
 
203
207
 
204
- data : DataSource Data
208
+ data : BackendTask Data
205
209
  data =
206
- DataSource.succeed ()
210
+ BackendTask.succeed ()
207
211
  """
208
212
  ]
209
213
  , test "replaces data record setter with non-empty RouteParams" <|
@@ -212,11 +216,12 @@ data =
212
216
 
213
217
  import Server.Request as Request
214
218
 
215
- import DataSource exposing (DataSource)
216
- import RouteBuilder exposing (Page, StaticPayload)
219
+ import BackendTask exposing (BackendTask)
220
+ import FatalError
221
+ import RouteBuilder exposing (Page, App)
217
222
  import Pages.PageUrl exposing (PageUrl)
218
223
  import Pages.Url
219
- import Path
224
+ import UrlPath
220
225
  import Route exposing (Route)
221
226
  import Shared
222
227
  import View exposing (View)
@@ -248,9 +253,9 @@ route =
248
253
  |> RouteBuilder.buildNoState { view = view }
249
254
 
250
255
 
251
- data : DataSource Data
256
+ data : BackendTask Data
252
257
  data =
253
- DataSource.succeed ()
258
+ BackendTask.succeed ()
254
259
  """
255
260
  |> Review.Test.run rule
256
261
  |> Review.Test.expectErrors
@@ -266,11 +271,12 @@ data =
266
271
 
267
272
  import Server.Request as Request
268
273
 
269
- import DataSource exposing (DataSource)
270
- import RouteBuilder exposing (Page, StaticPayload)
274
+ import BackendTask exposing (BackendTask)
275
+ import FatalError
276
+ import RouteBuilder exposing (Page, App)
271
277
  import Pages.PageUrl exposing (PageUrl)
272
278
  import Pages.Url
273
- import Path
279
+ import UrlPath
274
280
  import Route exposing (Route)
275
281
  import Shared
276
282
  import View exposing (View)
@@ -295,16 +301,16 @@ type alias Data =
295
301
  route : StatelessRoute RouteParams Data ActionData
296
302
  route =
297
303
  RouteBuilder.preRender
298
- { data = \\_ -> DataSource.fail ""
304
+ { data = \\_ -> BackendTask.fail (FatalError.fromString "")
299
305
  , head = head
300
306
  , pages = pages
301
307
  }
302
308
  |> RouteBuilder.buildNoState { view = view }
303
309
 
304
310
 
305
- data : DataSource Data
311
+ data : BackendTask Data
306
312
  data =
307
- DataSource.succeed ()
313
+ BackendTask.succeed ()
308
314
  """
309
315
  ]
310
316
  , test "replaces data record setter with RouteBuilder.serverRendered" <|
@@ -312,6 +318,7 @@ data =
312
318
  """module Route.Login exposing (Data, Model, Msg, route)
313
319
 
314
320
  import Server.Request as Request
321
+ import FatalError
315
322
 
316
323
  type alias Model =
317
324
  {}
@@ -348,6 +355,7 @@ route =
348
355
  """module Route.Login exposing (Data, Model, Msg, route)
349
356
 
350
357
  import Server.Request as Request
358
+ import FatalError
351
359
 
352
360
  type alias Model =
353
361
  {}
@@ -365,7 +373,7 @@ route : StatelessRoute RouteParams Data ActionData
365
373
  route =
366
374
  RouteBuilder.serverRender
367
375
  { head = head
368
- , data = \\_ -> Request.oneOf []
376
+ , data = \\_ _ -> BackendTask.fail (FatalError.fromString "")
369
377
  , action = action
370
378
  }
371
379
  |> RouteBuilder.buildNoState { view = view }
@@ -382,6 +390,7 @@ route =
382
390
  """module Route.Login exposing (Data, Model, Msg, route)
383
391
 
384
392
  import Server.Request as Request
393
+ import FatalError
385
394
 
386
395
  type alias Model =
387
396
  {}
@@ -400,7 +409,7 @@ route =
400
409
  RouteBuilder.serverRender
401
410
  { head = head
402
411
  , data = data
403
- , action = \\_ -> Request.oneOf []
412
+ , action = \\_ _ -> BackendTask.fail (FatalError.fromString "")
404
413
  }
405
414
  |> RouteBuilder.buildNoState { view = view }
406
415
  """
@@ -410,6 +419,7 @@ route =
410
419
  """module Route.Login exposing (Data, Model, Msg, route)
411
420
 
412
421
  import Server.Request
422
+ import FatalError
413
423
 
414
424
  type alias Model =
415
425
  {}
@@ -446,6 +456,7 @@ route =
446
456
  """module Route.Login exposing (Data, Model, Msg, route)
447
457
 
448
458
  import Server.Request
459
+ import FatalError
449
460
 
450
461
  type alias Model =
451
462
  {}
@@ -463,7 +474,7 @@ route : StatelessRoute RouteParams Data ActionData
463
474
  route =
464
475
  RouteBuilder.serverRender
465
476
  { head = head
466
- , data = \\_ -> Server.Request.oneOf []
477
+ , data = \\_ _ -> BackendTask.fail (FatalError.fromString "")
467
478
  , action = action
468
479
  }
469
480
  |> RouteBuilder.buildNoState { view = view }
@@ -480,6 +491,7 @@ route =
480
491
  """module Route.Login exposing (Data, Model, Msg, route)
481
492
 
482
493
  import Server.Request
494
+ import FatalError
483
495
 
484
496
  type alias Model =
485
497
  {}
@@ -498,7 +510,7 @@ route =
498
510
  RouteBuilder.serverRender
499
511
  { head = head
500
512
  , data = data
501
- , action = \\_ -> Server.Request.oneOf []
513
+ , action = \\_ _ -> BackendTask.fail (FatalError.fromString "")
502
514
  }
503
515
  |> RouteBuilder.buildNoState { view = view }
504
516
  """
@@ -508,6 +520,7 @@ route =
508
520
  """module Route.Login exposing (Data, Model, Msg, route)
509
521
 
510
522
  import Server.Request as Request
523
+ import FatalError
511
524
 
512
525
  type alias Model =
513
526
  {}
@@ -525,7 +538,7 @@ route : StatelessRoute RouteParams Data ActionData
525
538
  route =
526
539
  RouteBuilder.serverRender
527
540
  { head = head
528
- , data = \\_ -> Request.oneOf []
541
+ , data = \\_ _ -> BackendTask.fail (FatalError.fromString "")
529
542
  }
530
543
  |> RouteBuilder.buildNoState { view = view }
531
544
  """
@@ -536,12 +549,13 @@ route =
536
549
  """module Route.Index exposing (Data, Model, Msg, route)
537
550
 
538
551
  import Server.Request as Request
552
+ import FatalError
539
553
 
540
- import DataSource exposing (DataSource)
541
- import RouteBuilder exposing (Page, StaticPayload)
554
+ import BackendTask exposing (BackendTask)
555
+ import RouteBuilder exposing (Page, App)
542
556
  import Pages.PageUrl exposing (PageUrl)
543
557
  import Pages.Url
544
- import Path
558
+ import UrlPath
545
559
  import Route exposing (Route)
546
560
  import Shared
547
561
  import View exposing (View)
@@ -567,14 +581,14 @@ route : StatelessRoute RouteParams Data ActionData
567
581
  route =
568
582
  RouteBuilder.single
569
583
  { head = head
570
- , data = DataSource.fail ""
584
+ , data = BackendTask.fail (FatalError.fromString "")
571
585
  }
572
586
  |> RouteBuilder.buildNoState { view = view }
573
587
 
574
588
 
575
- data : DataSource Data
589
+ data : BackendTask Data
576
590
  data =
577
- DataSource.succeed ()
591
+ BackendTask.succeed ()
578
592
  """
579
593
  |> Review.Test.run rule
580
594
  |> Review.Test.expectNoErrors
@@ -583,14 +597,15 @@ data =
583
597
  """module Shared exposing (Data, Model, Msg, template)
584
598
 
585
599
  import Server.Request as Request
600
+ import FatalError
586
601
 
587
602
  import Browser.Navigation
588
- import DataSource
603
+ import BackendTask
589
604
  import Html exposing (Html)
590
605
  import Html.Styled
591
606
  import Pages.Flags
592
607
  import Pages.PageUrl exposing (PageUrl)
593
- import Path exposing (Path)
608
+ import UrlPath exposing (UrlPath)
594
609
  import Route exposing (Route)
595
610
  import SharedTemplate exposing (SharedTemplate)
596
611
  import TableOfContents
@@ -633,14 +648,15 @@ type alias Model =
633
648
  """module Shared exposing (Data, Model, Msg, template)
634
649
 
635
650
  import Server.Request as Request
651
+ import FatalError
636
652
 
637
653
  import Browser.Navigation
638
- import DataSource
654
+ import BackendTask
639
655
  import Html exposing (Html)
640
656
  import Html.Styled
641
657
  import Pages.Flags
642
658
  import Pages.PageUrl exposing (PageUrl)
643
- import Path exposing (Path)
659
+ import UrlPath exposing (UrlPath)
644
660
  import Route exposing (Route)
645
661
  import SharedTemplate exposing (SharedTemplate)
646
662
  import TableOfContents
@@ -653,7 +669,7 @@ template =
653
669
  { init = init
654
670
  , update = update
655
671
  , view = view
656
- , data = DataSource.fail ""
672
+ , data = BackendTask.fail (FatalError.fromString "")
657
673
  , subscriptions = subscriptions
658
674
  , onPageChange = Just OnPageChange
659
675
  }
@@ -1 +1 @@
1
- {"type":"application","source-directories":["../../src","../../tests","../../../../src","src"],"elm-version":"0.19.1","dependencies":{"direct":{"elm/core":"1.0.5","elm/html":"1.0.0","elm/json":"1.1.3","elm/regex":"1.0.0","elm-community/result-extra":"2.4.0","elm-explorations/test":"1.2.2","jfmengels/elm-review":"2.4.2","mdgriffith/elm-codegen":"2.0.0","mpizenberg/elm-test-runner":"5.0.0","stil4m/elm-syntax":"7.2.5","the-sett/elm-syntax-dsl":"6.0.2"},"indirect":{"Chadtech/elm-bool-extra":"2.4.2","elm/parser":"1.1.0","elm/project-metadata-utils":"1.0.2","elm/random":"1.0.0","elm/time":"1.0.0","elm/virtual-dom":"1.0.3","elm-community/basics-extra":"4.1.0","elm-community/list-extra":"8.7.0","elm-community/maybe-extra":"5.3.0","miniBill/elm-unicode":"1.0.2","rtfeldman/elm-hex":"1.0.0","stil4m/structured-writer":"1.0.3","the-sett/elm-pretty-printer":"3.0.0"}},"test-dependencies":{"direct":{},"indirect":{}}}
1
+ {"type":"application","source-directories":["../../src","../../tests","../../../../src","src"],"elm-version":"0.19.1","dependencies":{"direct":{"elm/core":"1.0.5","elm/html":"1.0.0","elm/json":"1.1.3","elm/regex":"1.0.0","elm-explorations/test":"2.1.1","jfmengels/elm-review":"2.13.0","mdgriffith/elm-codegen":"3.0.0","mpizenberg/elm-test-runner":"6.0.0","stil4m/elm-syntax":"7.2.9","the-sett/elm-syntax-dsl":"6.0.2"},"indirect":{"Chadtech/elm-bool-extra":"2.4.2","elm/bytes":"1.0.8","elm/parser":"1.1.0","elm/project-metadata-utils":"1.0.2","elm/random":"1.0.0","elm/time":"1.0.0","elm/virtual-dom":"1.0.3","elm-community/basics-extra":"4.1.0","elm-community/list-extra":"8.7.0","elm-community/maybe-extra":"5.3.0","miniBill/elm-unicode":"1.0.3","rtfeldman/elm-hex":"1.0.0","stil4m/structured-writer":"1.0.3","the-sett/elm-pretty-printer":"3.0.0"}},"test-dependencies":{"direct":{},"indirect":{}}}