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
@@ -1,941 +0,0 @@
1
- // @flow
2
-
3
- // Useful for debugging.
4
- const LOG_ERRORS = 'ELM_TEST_LOG_PARSE_ERRORS' in process.env;
5
-
6
- // For valid Elm files, this extracts _all_ (no more, no less) names that:
7
- // 1. Are exposed.
8
- // 2. _Might_ be tests. So capitalized names are excluded, for example.
9
- //
10
- // For invalid Elm files, this probably returns an empty list. It could also
11
- // return a list of things it _thinks_ are exposed values, but it doesn’t
12
- // matter. The idea is to bail early and still import the file. Then Elm gets a
13
- // chance to show its nice error messages.
14
- //
15
- // The only times the returned promise is rejected are:
16
- //
17
- // - When there’s a problem reading the file from disk.
18
- // - If there’s a bug and an unexpected exception is thrown somewhere.
19
- // - If `effect module` is encountered. That’s a real edge case. The gist of it
20
- // is that applications can’t contain effect modules and since the tests are
21
- // compiled as an application we can’t include effect modules.
22
- //
23
- // The tokenizer reads the file character by character. As soon as it’s produced
24
- // a whole token it feeds it to the parser, which works token by token. Both
25
- // parse just enough to be able to extract all exposed names that could be tests
26
- // without false positives.
27
- function extractExposedPossiblyTests(
28
- filePath /*: string */,
29
- createReadStream /*: (
30
- path: string,
31
- options?: { encoding?: string, ... }
32
- ) => stream$Readable & { close(): void } */
33
- ) /*: Promise<Array<string>> */ {
34
- return new Promise((resolve, reject) => {
35
- const exposedPossiblyTests /*: Array<string> */ = [];
36
- let tokenizerState /*: typeof TokenizerState */ = { tag: 'MaybeNewChunk' };
37
- let parserState /*: typeof ParserState */ = {
38
- tag: 'ModuleDeclaration',
39
- lastToken: 'Nothing',
40
- };
41
- let lastLowerName = '';
42
- let justSawCR = false;
43
-
44
- const readable = createReadStream(filePath, {
45
- encoding: 'utf8',
46
- });
47
- readable.on('error', reject);
48
- readable.on('data', onData);
49
- readable.on('close', () => {
50
- // There’s no need to flush here. It can’t result in more exposed names.
51
- resolve(exposedPossiblyTests);
52
- });
53
-
54
- function onData(chunk /*: string */) /*: void */ {
55
- for (let index = 0; index < chunk.length; index++) {
56
- const char = chunk[index];
57
-
58
- if (justSawCR) {
59
- if (char !== '\n') {
60
- // Elm only supports LF and CRLF, not CR by itself.
61
- Promise.resolve(expected('LF', char))
62
- .then(stop)
63
- .then(resolve, reject);
64
- readable.close();
65
- break;
66
- }
67
- justSawCR = false;
68
- } else if (char === '\r') {
69
- justSawCR = true;
70
- // Ignore CR so that the rest of the code can handle only LF.
71
- continue;
72
- }
73
-
74
- const result = tokenize(char, tokenizerState);
75
- if (!Array.isArray(result)) {
76
- Promise.resolve(result).then(stop).then(resolve, reject);
77
- readable.close();
78
- break;
79
- }
80
-
81
- const [nextTokenizerState, flushCommands] = result;
82
- let seenFlush = false;
83
- let hasFlushed = false;
84
- let flushResult = undefined;
85
-
86
- for (const flushCommand of flushCommands) {
87
- switch (flushCommand.tag) {
88
- case 'Flush':
89
- seenFlush = true;
90
- break;
91
- case 'FlushToken':
92
- if (flushResult === undefined) {
93
- hasFlushed = true;
94
- flushResult = flush(flushCommand.token);
95
- }
96
- break;
97
- default:
98
- unreachable(flushCommand.tag);
99
- }
100
- }
101
-
102
- if (seenFlush && !hasFlushed && flushResult === undefined) {
103
- flushResult = flush();
104
- }
105
-
106
- tokenizerState = nextTokenizerState;
107
-
108
- if (flushResult !== undefined) {
109
- Promise.resolve(flushResult).then(stop).then(resolve, reject);
110
- readable.close();
111
- break;
112
- }
113
- }
114
- }
115
-
116
- function flush(
117
- token /*: typeof Token | void */
118
- ) /*: typeof OnParserTokenResult | void */ {
119
- if (
120
- tokenizerState.tag === 'Initial' &&
121
- tokenizerState.otherTokenChars !== ''
122
- ) {
123
- const value = tokenizerState.otherTokenChars;
124
- tokenizerState.otherTokenChars = '';
125
- const error = onParserToken(
126
- isLowerName(value)
127
- ? { tag: 'LowerName', value }
128
- : isUpperName(value)
129
- ? { tag: 'UpperName', value }
130
- : { tag: 'Other', value }
131
- );
132
- if (error !== undefined) {
133
- return error;
134
- }
135
- }
136
- if (token !== undefined) {
137
- return onParserToken(token);
138
- }
139
- return undefined;
140
- }
141
-
142
- function stop(
143
- result /*: typeof OnParserTokenResult */
144
- ) /*: Array<string> */ {
145
- switch (result.tag) {
146
- case 'ParseError':
147
- if (LOG_ERRORS) {
148
- console.error(`${filePath}: ${result.message}`);
149
- }
150
- return [];
151
-
152
- case 'CriticalParseError':
153
- throw new Error(
154
- `This file is problematic:\n\n${filePath}\n\n${result.message}`
155
- );
156
-
157
- case 'StopParsing':
158
- return exposedPossiblyTests;
159
-
160
- default:
161
- return unreachable(result);
162
- }
163
- }
164
-
165
- function onParserToken(
166
- token /*: typeof Token */
167
- ) /*: typeof OnParserTokenResult | void */ {
168
- if (token.tag === 'LowerName') {
169
- lastLowerName = token.value;
170
- }
171
- switch (parserState.tag) {
172
- case 'ModuleDeclaration': {
173
- const rawResult = parseModuleDeclaration(
174
- token,
175
- parserState.lastToken
176
- );
177
- const result =
178
- typeof rawResult === 'string'
179
- ? { tag: 'Token', token: rawResult }
180
- : rawResult;
181
- switch (result.tag) {
182
- case 'ParseError':
183
- case 'CriticalParseError':
184
- case 'StopParsing':
185
- return result;
186
- case 'NextParserState':
187
- parserState = { tag: 'Rest', lastToken: 'Initial' };
188
- break;
189
- case 'Token':
190
- parserState.lastToken = result.token;
191
- if (result.token === 'LowerName') {
192
- exposedPossiblyTests.push(lastLowerName);
193
- }
194
- break;
195
- default:
196
- unreachable(result);
197
- }
198
- break;
199
- }
200
-
201
- case 'Rest': {
202
- const rawResult = parseRest(token, parserState.lastToken);
203
- const result =
204
- typeof rawResult === 'string'
205
- ? { tag: 'Token', token: rawResult }
206
- : rawResult;
207
- switch (result.tag) {
208
- case 'ParseError':
209
- return result;
210
- case 'Token':
211
- parserState.lastToken = result.token;
212
- if (result.token === 'PotentialTestDeclaration=') {
213
- exposedPossiblyTests.push(lastLowerName);
214
- }
215
- break;
216
- default:
217
- unreachable(result);
218
- }
219
- break;
220
- }
221
-
222
- default:
223
- unreachable(parserState.tag);
224
- }
225
- }
226
- });
227
- }
228
-
229
- // First char lowercase: https://github.com/elm/compiler/blob/2860c2e5306cb7093ba28ac7624e8f9eb8cbc867/compiler/src/Parse/Variable.hs#L296-L300
230
- // First char uppercase: https://github.com/elm/compiler/blob/2860c2e5306cb7093ba28ac7624e8f9eb8cbc867/compiler/src/Parse/Variable.hs#L263-L267
231
- // Rest: https://github.com/elm/compiler/blob/2860c2e5306cb7093ba28ac7624e8f9eb8cbc867/compiler/src/Parse/Variable.hs#L328-L335
232
- // https://hackage.haskell.org/package/base-4.14.0.0/docs/Data-Char.html#v:isLetter
233
- const lowerName = /^\p{Ll}[_\d\p{L}]*$/u;
234
- const upperName = /^\p{Lu}[_\d\p{L}]*$/u;
235
- const anyNameFirstChar = /^\p{L}$/u;
236
-
237
- // https://github.com/elm/compiler/blob/2860c2e5306cb7093ba28ac7624e8f9eb8cbc867/compiler/src/Parse/Variable.hs#L71-L81
238
- const reservedWords = new Set([
239
- 'if',
240
- 'then',
241
- 'else',
242
- 'case',
243
- 'of',
244
- 'let',
245
- 'in',
246
- 'type',
247
- 'module',
248
- 'where',
249
- 'import',
250
- 'exposing',
251
- 'as',
252
- 'port',
253
- ]);
254
-
255
- const validNewChunkKeywordsAfterModuleDeclaration = new Set([
256
- 'import',
257
- 'port',
258
- 'type',
259
- ]);
260
-
261
- // https://github.com/elm/compiler/blob/2860c2e5306cb7093ba28ac7624e8f9eb8cbc867/compiler/src/Parse/String.hs#L279-L285
262
- const backslashableChars = new Set([
263
- 'n',
264
- 'r',
265
- 't',
266
- '"',
267
- "'",
268
- '\\',
269
- // Note: `u` must be followed by for example `{1234}`.
270
- // In strings and multiline strings, we can just pretend that `\u` is the
271
- // escape and `{1234}` is just regular text, for simplicity.
272
- // In char literals, we need some extra handling.
273
- 'u',
274
- ]);
275
-
276
- function isLowerName(string) {
277
- return lowerName.test(string) && !reservedWords.has(string);
278
- }
279
-
280
- function isUpperName(string /*: string */) /*: boolean */ {
281
- return upperName.test(string);
282
- }
283
-
284
- function unreachable(value /*: empty */) /*: empty */ {
285
- throw new Error(`Unreachable: ${value}`);
286
- }
287
-
288
- // Poor man’s type alias. We can’t use /*:: type ParseError = ... */ because of:
289
- // https://github.com/prettier/prettier/issues/2597
290
- // There are a couple of more of this workaround throughout the file.
291
- const ParseError /*: {
292
- tag: 'ParseError',
293
- message: string,
294
- -[mixed]: empty, // https://github.com/facebook/flow/issues/7859
295
- } */ = {
296
- tag: 'ParseError',
297
- message: '',
298
- };
299
- void ParseError;
300
-
301
- const CriticalParseError /*: {
302
- tag: 'CriticalParseError',
303
- message: string,
304
- } */ = {
305
- tag: 'CriticalParseError',
306
- message: '',
307
- };
308
- void CriticalParseError;
309
-
310
- const OnParserTokenResult /*:
311
- | typeof ParseError
312
- | typeof CriticalParseError
313
- | { tag: 'StopParsing' } */ = ParseError;
314
- void OnParserTokenResult;
315
-
316
- function expected(
317
- expectedDescription /*: string */,
318
- actual /*: mixed */
319
- ) /*: typeof ParseError */ {
320
- return {
321
- tag: 'ParseError',
322
- message: `Expected ${expectedDescription} but got: ${stringify(actual)}`,
323
- };
324
- }
325
-
326
- function stringify(json /*: mixed */) /*: string */ {
327
- const maybeString = JSON.stringify(json);
328
- return maybeString === undefined ? 'undefined' : maybeString;
329
- }
330
-
331
- function backslashError(actual) {
332
- return expected(
333
- `one of \`${Array.from(backslashableChars).join(' ')}\``,
334
- actual
335
- );
336
- }
337
-
338
- const Token /*:
339
- | { tag: '(' }
340
- | { tag: ')' }
341
- | { tag: ',' }
342
- | { tag: '=' }
343
- | { tag: '.' }
344
- | { tag: '..' }
345
- | { tag: 'Char' }
346
- | { tag: 'String' }
347
- | { tag: 'NewChunk' }
348
- | { tag: 'LowerName', value: string }
349
- | { tag: 'UpperName', value: string }
350
- | { tag: 'Other', value: string } */ = { tag: '(' };
351
- void Token;
352
-
353
- const TokenizerState /*:
354
- | { tag: 'Initial', otherTokenChars: string }
355
- | { tag: 'MaybeNewChunk' }
356
- | { tag: 'MaybeMultilineComment{' }
357
- | { tag: 'MultilineComment', level: number }
358
- | { tag: 'MultilineComment{', level: number }
359
- | { tag: 'MultilineComment-', level: number }
360
- | { tag: 'MaybeSinglelineComment-' }
361
- | { tag: 'SinglelineComment' }
362
- | { tag: 'Maybe..' }
363
- | { tag: 'CharStart' }
364
- | { tag: 'CharBackslash' }
365
- | { tag: 'CharUnicodeEscape' }
366
- | { tag: 'CharEnd' }
367
- | { tag: 'StringStart' }
368
- | { tag: 'StringContent' }
369
- | { tag: 'StringBackslash' }
370
- | { tag: 'EmptyStringMaybeTriple' }
371
- | { tag: 'MultilineString' }
372
- | { tag: 'MultilineStringBackslash' }
373
- | { tag: 'MultilineString"' }
374
- | { tag: 'MultilineString""' } */ = {
375
- tag: 'Initial',
376
- otherTokenChars: '',
377
- };
378
- void TokenizerState;
379
-
380
- function tokenize(
381
- char /*: string */,
382
- tokenizerState /*: typeof TokenizerState */
383
- ) /*:
384
- | [
385
- typeof TokenizerState,
386
- Array<{ tag: 'Flush' } | { tag: 'FlushToken', token: typeof Token }>
387
- ]
388
- | typeof ParseError */ {
389
- switch (tokenizerState.tag) {
390
- case 'Initial':
391
- switch (char) {
392
- case ' ':
393
- return [tokenizerState, [{ tag: 'Flush' }]];
394
- case '\n':
395
- return [{ tag: 'MaybeNewChunk' }, [{ tag: 'Flush' }]];
396
- case '{':
397
- return [{ tag: 'MaybeMultilineComment{' }, [{ tag: 'Flush' }]];
398
- case '-':
399
- return [{ tag: 'MaybeSinglelineComment-' }, [{ tag: 'Flush' }]];
400
- case '.':
401
- return [{ tag: 'Maybe..' }, [{ tag: 'Flush' }]];
402
- case '(':
403
- return [tokenizerState, [{ tag: 'FlushToken', token: { tag: '(' } }]];
404
- case ')':
405
- return [tokenizerState, [{ tag: 'FlushToken', token: { tag: ')' } }]];
406
- case ',':
407
- return [tokenizerState, [{ tag: 'FlushToken', token: { tag: ',' } }]];
408
- case '=':
409
- return [tokenizerState, [{ tag: 'FlushToken', token: { tag: '=' } }]];
410
- case "'":
411
- return [{ tag: 'CharStart' }, [{ tag: 'Flush' }]];
412
- case '"':
413
- return [{ tag: 'StringStart' }, [{ tag: 'Flush' }]];
414
- default:
415
- return [
416
- {
417
- tag: 'Initial',
418
- otherTokenChars: tokenizerState.otherTokenChars + char,
419
- },
420
- [],
421
- ];
422
- }
423
-
424
- case 'MaybeNewChunk':
425
- switch (char) {
426
- case ' ':
427
- return [{ tag: 'Initial', otherTokenChars: '' }, []];
428
- case '\n':
429
- return [{ tag: 'MaybeNewChunk' }, []];
430
- case '{':
431
- return [{ tag: 'MaybeMultilineComment{' }, [{ tag: 'Flush' }]];
432
- case '-':
433
- return [{ tag: 'MaybeSinglelineComment-' }, [{ tag: 'Flush' }]];
434
- default:
435
- if (anyNameFirstChar.test(char)) {
436
- return [
437
- {
438
- tag: 'Initial',
439
- otherTokenChars: char,
440
- },
441
- [{ tag: 'FlushToken', token: { tag: 'NewChunk' } }],
442
- ];
443
- } else {
444
- return expected('a letter', char);
445
- }
446
- }
447
-
448
- case 'MaybeMultilineComment{':
449
- switch (char) {
450
- case '-':
451
- return [{ tag: 'MultilineComment', level: 1 }, []];
452
- default:
453
- return tokenizeInitial('{', char, []);
454
- }
455
-
456
- case 'MultilineComment':
457
- switch (char) {
458
- case '{':
459
- return [
460
- { tag: 'MultilineComment{', level: tokenizerState.level },
461
- [],
462
- ];
463
- case '-':
464
- return [
465
- { tag: 'MultilineComment-', level: tokenizerState.level },
466
- [],
467
- ];
468
- default:
469
- return [tokenizerState, []];
470
- }
471
-
472
- case 'MultilineComment{':
473
- switch (char) {
474
- case '-':
475
- return [
476
- { tag: 'MultilineComment', level: tokenizerState.level + 1 },
477
- [],
478
- ];
479
- case '{':
480
- return [
481
- { tag: 'MultilineComment{', level: tokenizerState.level },
482
- [],
483
- ];
484
- default:
485
- return [{ tag: 'MultilineComment', level: tokenizerState.level }, []];
486
- }
487
-
488
- case 'MultilineComment-':
489
- switch (char) {
490
- case '}':
491
- return [
492
- tokenizerState.level <= 1
493
- ? { tag: 'Initial', otherTokenChars: '' }
494
- : { tag: 'MultilineComment', level: tokenizerState.level - 1 },
495
- [],
496
- ];
497
- case '{':
498
- return [
499
- { tag: 'MultilineComment{', level: tokenizerState.level },
500
- [],
501
- ];
502
- case '-':
503
- return [
504
- { tag: 'MultilineComment-', level: tokenizerState.level },
505
- [],
506
- ];
507
- default:
508
- return [{ tag: 'MultilineComment', level: tokenizerState.level }, []];
509
- }
510
-
511
- case 'MaybeSinglelineComment-':
512
- switch (char) {
513
- case '-':
514
- return [{ tag: 'SinglelineComment' }, []];
515
- default:
516
- return tokenizeInitial('-', char, []);
517
- }
518
-
519
- case 'SinglelineComment':
520
- switch (char) {
521
- case '\n':
522
- return [{ tag: 'Initial', otherTokenChars: '' }, []];
523
- default:
524
- return [tokenizerState, []];
525
- }
526
-
527
- case 'Maybe..':
528
- switch (char) {
529
- case '.':
530
- return [
531
- { tag: 'Initial', otherTokenChars: '' },
532
- [{ tag: 'FlushToken', token: { tag: '..' } }],
533
- ];
534
- default:
535
- return tokenizeInitial('', char, [
536
- { tag: 'FlushToken', token: { tag: '.' } },
537
- ]);
538
- }
539
-
540
- case 'CharStart':
541
- switch (char) {
542
- case '\n':
543
- return expected('a non-newline', char);
544
- case '\\':
545
- return [{ tag: 'CharBackslash' }, []];
546
- default:
547
- return [{ tag: 'CharEnd' }, []];
548
- }
549
-
550
- case 'CharBackslash':
551
- if (char === 'u') {
552
- return [{ tag: 'CharUnicodeEscape' }, []];
553
- } else if (backslashableChars.has(char)) {
554
- return [{ tag: 'CharEnd' }, []];
555
- } else {
556
- return backslashError(char);
557
- }
558
-
559
- case 'CharUnicodeEscape':
560
- switch (char) {
561
- case "'":
562
- return [
563
- { tag: 'Initial', otherTokenChars: '' },
564
- [{ tag: 'FlushToken', token: { tag: 'Char' } }],
565
- ];
566
- // Note: This allows invalid escapes like `\u}abc{1` or `\u{FFFFFFFFFF}`.
567
- // It’s not worth parsing this exactly – see the comment at the top of this file.
568
- case '{':
569
- case '}':
570
- case 'a':
571
- case 'A':
572
- case 'b':
573
- case 'B':
574
- case 'c':
575
- case 'C':
576
- case 'd':
577
- case 'D':
578
- case 'e':
579
- case 'E':
580
- case 'f':
581
- case 'F':
582
- case '0':
583
- case '1':
584
- case '2':
585
- case '3':
586
- case '4':
587
- case '5':
588
- case '6':
589
- case '7':
590
- case '8':
591
- case '9':
592
- return [{ tag: 'CharUnicodeEscape' }, []];
593
- default:
594
- return expected("a valid unicode escape or `'`", char);
595
- }
596
-
597
- case 'CharEnd':
598
- switch (char) {
599
- case "'":
600
- return [
601
- { tag: 'Initial', otherTokenChars: '' },
602
- [{ tag: 'FlushToken', token: { tag: 'Char' } }],
603
- ];
604
- default:
605
- return expected("`'`", char);
606
- }
607
-
608
- case 'StringStart':
609
- switch (char) {
610
- case '\n':
611
- return expected('a non-newline', char);
612
- case '\\':
613
- return [{ tag: 'StringBackslash' }, []];
614
- case '"':
615
- return [{ tag: 'EmptyStringMaybeTriple' }, []];
616
- default:
617
- return [{ tag: 'StringContent' }, []];
618
- }
619
-
620
- case 'StringContent':
621
- switch (char) {
622
- case '\n':
623
- return expected('a non-newline', char);
624
- case '\\':
625
- return [{ tag: 'StringBackslash' }, []];
626
- case '"':
627
- return [
628
- { tag: 'Initial', otherTokenChars: '' },
629
- [{ tag: 'FlushToken', token: { tag: 'String' } }],
630
- ];
631
- default:
632
- return [{ tag: 'StringContent' }, []];
633
- }
634
-
635
- case 'StringBackslash':
636
- if (backslashableChars.has(char)) {
637
- return [{ tag: 'StringContent' }, []];
638
- } else {
639
- return backslashError(char);
640
- }
641
-
642
- case 'EmptyStringMaybeTriple':
643
- switch (char) {
644
- case '"':
645
- return [{ tag: 'MultilineString' }, []];
646
- default:
647
- return tokenizeInitial('', char, [
648
- { tag: 'FlushToken', token: { tag: 'String' } },
649
- ]);
650
- }
651
-
652
- case 'MultilineString':
653
- switch (char) {
654
- case '"':
655
- return [{ tag: 'MultilineString"' }, []];
656
- case '\\':
657
- return [{ tag: 'MultilineStringBackslash' }, []];
658
- default:
659
- return [{ tag: 'MultilineString' }, []];
660
- }
661
-
662
- case 'MultilineString"':
663
- switch (char) {
664
- case '"':
665
- return [{ tag: 'MultilineString""' }, []];
666
- case '\\':
667
- return [{ tag: 'MultilineStringBackslash' }, []];
668
- default:
669
- return [{ tag: 'MultilineString' }, []];
670
- }
671
-
672
- case 'MultilineString""':
673
- switch (char) {
674
- case '"':
675
- return [
676
- { tag: 'Initial', otherTokenChars: '' },
677
- [{ tag: 'FlushToken', token: { tag: 'String' } }],
678
- ];
679
- case '\\':
680
- return [{ tag: 'MultilineStringBackslash' }, []];
681
- default:
682
- return [{ tag: 'MultilineString' }, []];
683
- }
684
-
685
- case 'MultilineStringBackslash':
686
- if (backslashableChars.has(char)) {
687
- return [{ tag: 'MultilineString' }, []];
688
- } else {
689
- return backslashError(char);
690
- }
691
-
692
- default:
693
- return unreachable(tokenizerState.tag);
694
- }
695
- }
696
-
697
- function tokenizeInitial(previousChar, char, cmds) {
698
- const result = tokenize(char, {
699
- tag: 'Initial',
700
- otherTokenChars: previousChar,
701
- });
702
- if (result.tag === 'ParseError') {
703
- return result;
704
- }
705
- const [nextTokenizerState, nextCmds] = result;
706
- return [nextTokenizerState, cmds.concat(nextCmds)];
707
- }
708
-
709
- const ParserState /*:
710
- | {
711
- tag: 'ModuleDeclaration',
712
- lastToken: typeof ModuleDeclarationLastToken,
713
- }
714
- | {
715
- tag: 'Rest',
716
- lastToken: typeof RestLastToken,
717
- } */ = { tag: 'ModuleDeclaration', lastToken: 'Nothing' };
718
- void ParserState;
719
-
720
- const ModuleDeclarationLastToken /*:
721
- | 'Nothing'
722
- | 'NewChunk'
723
- | 'port'
724
- | 'module'
725
- | 'ModuleName'
726
- | 'ModuleName.'
727
- | 'exposing'
728
- | 'exposing('
729
- | 'exposing..'
730
- | 'LowerName'
731
- | 'UpperName'
732
- | 'UpperName('
733
- | 'UpperName..'
734
- | 'UpperName)'
735
- | ',' */ = 'Nothing';
736
- void ModuleDeclarationLastToken;
737
-
738
- function parseModuleDeclaration(
739
- token /*: typeof Token */,
740
- lastToken /*: typeof ModuleDeclarationLastToken */
741
- ) /*:
742
- | typeof ModuleDeclarationLastToken
743
- | { tag: 'NextParserState' }
744
- | typeof OnParserTokenResult */ {
745
- switch (lastToken) {
746
- case 'Nothing':
747
- if (token.tag === 'NewChunk') {
748
- return 'NewChunk';
749
- }
750
- return expected('a new chunk', token);
751
-
752
- case 'NewChunk':
753
- switch (token.tag) {
754
- case 'LowerName':
755
- case 'Other':
756
- switch (token.value) {
757
- case 'port':
758
- return 'port';
759
- case 'effect': // Not a reserved word, so this is a LowerName.
760
- return {
761
- tag: 'CriticalParseError',
762
- message:
763
- 'It starts with `effect module`. Effect modules can only exist inside src/ in elm and elm-explorations packages. They cannot contain tests.',
764
- };
765
- case 'module':
766
- return 'module';
767
- }
768
- }
769
- return expected('`port` or `module`', token);
770
-
771
- case 'port':
772
- if (token.tag === 'Other' && token.value === 'module') {
773
- return 'module';
774
- }
775
- return expected('`module`', token);
776
-
777
- case 'module':
778
- if (token.tag === 'UpperName') {
779
- return 'ModuleName';
780
- }
781
- return expected('a module name', token);
782
-
783
- case 'ModuleName':
784
- switch (token.tag) {
785
- case '.':
786
- return 'ModuleName.';
787
- case 'Other':
788
- if (token.value === 'exposing') {
789
- return 'exposing';
790
- }
791
- }
792
- return expected('`.` or `exposing`', token);
793
-
794
- case 'ModuleName.':
795
- if (token.tag === 'UpperName') {
796
- return 'ModuleName';
797
- }
798
- return expected('a module name', token);
799
-
800
- case 'exposing':
801
- if (token.tag === '(') {
802
- return 'exposing(';
803
- }
804
- return expected('`(`', token);
805
-
806
- case 'exposing(':
807
- switch (token.tag) {
808
- case '..':
809
- return 'exposing..';
810
- case 'LowerName':
811
- return 'LowerName';
812
- case 'UpperName':
813
- return 'UpperName';
814
- }
815
- return expected('an exposed name or `..`', token);
816
-
817
- case 'exposing..':
818
- if (token.tag === ')') {
819
- return { tag: 'NextParserState' };
820
- }
821
- return expected('`)`', token);
822
-
823
- case 'LowerName':
824
- switch (token.tag) {
825
- case ',':
826
- return ',';
827
- case ')':
828
- return { tag: 'StopParsing' };
829
- }
830
- return expected('`)` or `,`', token);
831
-
832
- case 'UpperName':
833
- switch (token.tag) {
834
- case ',':
835
- return ',';
836
- case '(':
837
- return 'UpperName(';
838
- case ')':
839
- return { tag: 'StopParsing' };
840
- }
841
- return expected('`(`, `)` or `,`', token);
842
-
843
- case 'UpperName(':
844
- if (token.tag === '..') {
845
- return 'UpperName..';
846
- }
847
- return expected('`..`', token);
848
-
849
- case 'UpperName..':
850
- if (token.tag === ')') {
851
- return 'UpperName)';
852
- }
853
- return expected('`)`', token);
854
-
855
- case 'UpperName)':
856
- switch (token.tag) {
857
- case ',':
858
- return ',';
859
- case ')':
860
- return { tag: 'StopParsing' };
861
- }
862
- return expected('`)` or `,`', token);
863
-
864
- case ',':
865
- switch (token.tag) {
866
- case 'LowerName':
867
- return 'LowerName';
868
- case 'UpperName':
869
- return 'UpperName';
870
- }
871
- return expected('an exposed name', token);
872
-
873
- default:
874
- return unreachable(lastToken);
875
- }
876
- }
877
-
878
- const RestLastToken /*:
879
- | 'Initial'
880
- | 'NewChunk'
881
- | 'PotentialTestDeclarationName'
882
- | 'PotentialTestDeclaration='
883
- | 'Ignore' */ = 'Initial';
884
- void RestLastToken;
885
-
886
- function parseRest(
887
- token /*: typeof Token */,
888
- lastToken /*: typeof RestLastToken */
889
- ) /*: typeof RestLastToken | typeof ParseError */ {
890
- switch (lastToken) {
891
- case 'Initial':
892
- if (token.tag === 'NewChunk') {
893
- return 'NewChunk';
894
- }
895
- return expected('a new chunk', token);
896
-
897
- case 'NewChunk':
898
- switch (token.tag) {
899
- case 'LowerName':
900
- return 'PotentialTestDeclarationName';
901
- case 'Other':
902
- if (validNewChunkKeywordsAfterModuleDeclaration.has(token.value)) {
903
- return 'Ignore';
904
- }
905
- break;
906
- }
907
- return expected(
908
- `${Array.from(
909
- validNewChunkKeywordsAfterModuleDeclaration,
910
- (keyword) => `\`${keyword}\``
911
- ).join(', ')} or a name`,
912
- token
913
- );
914
-
915
- case 'PotentialTestDeclarationName':
916
- if (token.tag === '=') {
917
- return 'PotentialTestDeclaration=';
918
- }
919
- return 'Ignore';
920
-
921
- case 'PotentialTestDeclaration=':
922
- if (token.tag === 'NewChunk') {
923
- return expected('a definition', token);
924
- }
925
- return 'Ignore';
926
-
927
- case 'Ignore':
928
- if (token.tag === 'NewChunk') {
929
- return 'NewChunk';
930
- }
931
- return 'Ignore';
932
-
933
- default:
934
- return unreachable(lastToken);
935
- }
936
- }
937
-
938
- module.exports = {
939
- extractExposedPossiblyTests,
940
- isUpperName,
941
- };