elm-pages 3.0.0-beta.20 → 3.0.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (433) hide show
  1. package/README.md +1 -1
  2. package/codegen/elm-pages-codegen.cjs +111 -99
  3. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.75364bef27ac5a049b87c3325f846fc6dbda23b8ed7187ed06748b96bb6a50a7.json +1 -0
  4. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmi +0 -0
  5. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  7. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  8. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmi +0 -0
  9. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  10. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmi +0 -0
  11. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmo +0 -0
  12. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmi +0 -0
  13. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmo +0 -0
  14. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmi +0 -0
  15. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmo +0 -0
  16. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmi +0 -0
  17. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmo +0 -0
  18. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmi +0 -0
  19. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmo +0 -0
  20. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmi +0 -0
  21. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmo +0 -0
  22. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmi +0 -0
  23. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmo +0 -0
  24. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmi +0 -0
  25. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmo +0 -0
  26. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmi +0 -0
  27. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmo +0 -0
  28. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmi +0 -0
  29. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmo +0 -0
  30. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmi +0 -0
  31. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmo +0 -0
  32. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmi +0 -0
  33. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmo +0 -0
  34. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmi +0 -0
  35. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmo +0 -0
  36. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmi +0 -0
  37. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmo +0 -0
  38. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/d.dat +0 -0
  39. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/i.dat +0 -0
  40. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/lock +0 -0
  41. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/o.dat +0 -0
  42. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +38 -0
  43. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +29673 -0
  44. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +1 -0
  45. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +27 -0
  46. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  47. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  48. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  49. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  50. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1 -1
  51. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +37 -107
  52. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  53. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  54. package/generator/dead-code-review/node_modules/.package-lock.json +484 -0
  55. package/generator/dead-code-review/node_modules/ansi-styles/index.d.ts +345 -0
  56. package/generator/dead-code-review/node_modules/ansi-styles/index.js +163 -0
  57. package/generator/dead-code-review/node_modules/ansi-styles/license +9 -0
  58. package/generator/dead-code-review/node_modules/ansi-styles/package.json +56 -0
  59. package/generator/dead-code-review/node_modules/ansi-styles/readme.md +152 -0
  60. package/generator/dead-code-review/node_modules/anymatch/LICENSE +15 -0
  61. package/generator/dead-code-review/node_modules/anymatch/README.md +87 -0
  62. package/generator/dead-code-review/node_modules/anymatch/index.d.ts +20 -0
  63. package/generator/dead-code-review/node_modules/anymatch/index.js +104 -0
  64. package/generator/dead-code-review/node_modules/anymatch/package.json +48 -0
  65. package/generator/dead-code-review/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  66. package/generator/dead-code-review/node_modules/balanced-match/LICENSE.md +21 -0
  67. package/generator/dead-code-review/node_modules/balanced-match/README.md +97 -0
  68. package/generator/dead-code-review/node_modules/balanced-match/index.js +62 -0
  69. package/generator/dead-code-review/node_modules/balanced-match/package.json +48 -0
  70. package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json +260 -0
  71. package/generator/dead-code-review/node_modules/binary-extensions/binary-extensions.json.d.ts +3 -0
  72. package/generator/dead-code-review/node_modules/binary-extensions/index.d.ts +14 -0
  73. package/generator/dead-code-review/node_modules/binary-extensions/index.js +1 -0
  74. package/generator/dead-code-review/node_modules/binary-extensions/license +9 -0
  75. package/generator/dead-code-review/node_modules/binary-extensions/package.json +38 -0
  76. package/generator/dead-code-review/node_modules/binary-extensions/readme.md +41 -0
  77. package/generator/dead-code-review/node_modules/brace-expansion/.github/FUNDING.yml +2 -0
  78. package/generator/dead-code-review/node_modules/brace-expansion/LICENSE +21 -0
  79. package/generator/dead-code-review/node_modules/brace-expansion/README.md +135 -0
  80. package/generator/dead-code-review/node_modules/brace-expansion/index.js +203 -0
  81. package/generator/dead-code-review/node_modules/brace-expansion/package.json +46 -0
  82. package/generator/dead-code-review/node_modules/braces/CHANGELOG.md +184 -0
  83. package/generator/dead-code-review/node_modules/braces/LICENSE +21 -0
  84. package/generator/dead-code-review/node_modules/braces/README.md +593 -0
  85. package/generator/dead-code-review/node_modules/braces/index.js +170 -0
  86. package/generator/dead-code-review/node_modules/braces/lib/compile.js +57 -0
  87. package/generator/dead-code-review/node_modules/braces/lib/constants.js +57 -0
  88. package/generator/dead-code-review/node_modules/braces/lib/expand.js +113 -0
  89. package/generator/dead-code-review/node_modules/braces/lib/parse.js +333 -0
  90. package/generator/dead-code-review/node_modules/braces/lib/stringify.js +32 -0
  91. package/generator/dead-code-review/node_modules/braces/lib/utils.js +112 -0
  92. package/generator/dead-code-review/node_modules/braces/package.json +77 -0
  93. package/generator/dead-code-review/node_modules/chalk/index.d.ts +415 -0
  94. package/generator/dead-code-review/node_modules/chalk/license +9 -0
  95. package/generator/dead-code-review/node_modules/chalk/package.json +68 -0
  96. package/generator/dead-code-review/node_modules/chalk/readme.md +341 -0
  97. package/generator/dead-code-review/node_modules/chalk/source/index.js +229 -0
  98. package/generator/dead-code-review/node_modules/chalk/source/templates.js +134 -0
  99. package/generator/dead-code-review/node_modules/chalk/source/util.js +39 -0
  100. package/generator/dead-code-review/node_modules/chokidar/LICENSE +21 -0
  101. package/generator/dead-code-review/node_modules/chokidar/README.md +308 -0
  102. package/generator/dead-code-review/node_modules/chokidar/index.js +973 -0
  103. package/generator/dead-code-review/node_modules/chokidar/lib/constants.js +65 -0
  104. package/generator/dead-code-review/node_modules/chokidar/lib/fsevents-handler.js +524 -0
  105. package/generator/dead-code-review/node_modules/chokidar/lib/nodefs-handler.js +654 -0
  106. package/generator/dead-code-review/node_modules/chokidar/package.json +85 -0
  107. package/generator/dead-code-review/node_modules/chokidar/types/index.d.ts +188 -0
  108. package/generator/dead-code-review/node_modules/color-convert/CHANGELOG.md +54 -0
  109. package/generator/dead-code-review/node_modules/color-convert/LICENSE +21 -0
  110. package/generator/dead-code-review/node_modules/color-convert/README.md +68 -0
  111. package/generator/dead-code-review/node_modules/color-convert/conversions.js +839 -0
  112. package/generator/dead-code-review/node_modules/color-convert/index.js +81 -0
  113. package/generator/dead-code-review/node_modules/color-convert/package.json +48 -0
  114. package/generator/dead-code-review/node_modules/color-convert/route.js +97 -0
  115. package/generator/dead-code-review/node_modules/color-name/LICENSE +8 -0
  116. package/generator/dead-code-review/node_modules/color-name/README.md +11 -0
  117. package/generator/dead-code-review/node_modules/color-name/index.js +152 -0
  118. package/generator/dead-code-review/node_modules/color-name/package.json +28 -0
  119. package/generator/dead-code-review/node_modules/commander/LICENSE +22 -0
  120. package/generator/dead-code-review/node_modules/commander/Readme.md +1118 -0
  121. package/generator/dead-code-review/node_modules/commander/esm.mjs +16 -0
  122. package/generator/dead-code-review/node_modules/commander/index.js +27 -0
  123. package/generator/dead-code-review/node_modules/commander/lib/argument.js +147 -0
  124. package/generator/dead-code-review/node_modules/commander/lib/command.js +2160 -0
  125. package/generator/dead-code-review/node_modules/commander/lib/error.js +45 -0
  126. package/generator/dead-code-review/node_modules/commander/lib/help.js +406 -0
  127. package/generator/dead-code-review/node_modules/commander/lib/option.js +326 -0
  128. package/generator/dead-code-review/node_modules/commander/lib/suggestSimilar.js +100 -0
  129. package/generator/dead-code-review/node_modules/commander/package-support.json +16 -0
  130. package/generator/dead-code-review/node_modules/commander/package.json +80 -0
  131. package/generator/dead-code-review/node_modules/commander/typings/index.d.ts +881 -0
  132. package/generator/dead-code-review/node_modules/cross-spawn/CHANGELOG.md +130 -0
  133. package/generator/dead-code-review/node_modules/cross-spawn/LICENSE +21 -0
  134. package/generator/dead-code-review/node_modules/cross-spawn/README.md +96 -0
  135. package/generator/dead-code-review/node_modules/cross-spawn/index.js +39 -0
  136. package/generator/dead-code-review/node_modules/cross-spawn/lib/enoent.js +59 -0
  137. package/generator/dead-code-review/node_modules/cross-spawn/lib/parse.js +91 -0
  138. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/escape.js +45 -0
  139. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/readShebang.js +23 -0
  140. package/generator/dead-code-review/node_modules/cross-spawn/lib/util/resolveCommand.js +52 -0
  141. package/generator/dead-code-review/node_modules/cross-spawn/package.json +73 -0
  142. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/LICENSE +373 -0
  143. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/README.md +64 -0
  144. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.d.ts +22 -0
  145. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm.js +419 -0
  146. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/elm_solve_deps_wasm_bg.wasm +0 -0
  147. package/generator/dead-code-review/node_modules/elm-solve-deps-wasm/package.json +27 -0
  148. package/generator/dead-code-review/node_modules/elm-test/LICENSE +27 -0
  149. package/generator/dead-code-review/node_modules/elm-test/README.md +192 -0
  150. package/generator/dead-code-review/node_modules/elm-test/bin/elm-test +3 -0
  151. package/generator/dead-code-review/node_modules/elm-test/elm/elm.json +25 -0
  152. package/generator/dead-code-review/node_modules/elm-test/elm/src/Console/Text.elm +217 -0
  153. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Color.elm +30 -0
  154. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format/Monochrome.elm +39 -0
  155. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console/Format.elm +212 -0
  156. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Console.elm +207 -0
  157. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Highlightable.elm +48 -0
  158. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/JUnit.elm +161 -0
  159. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Json.elm +158 -0
  160. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/Reporter.elm +53 -0
  161. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Reporter/TestResults.elm +113 -0
  162. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/JsMessage.elm +38 -0
  163. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Console.elm +230 -0
  164. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node/Vendor/Diff.elm +326 -0
  165. package/generator/dead-code-review/node_modules/elm-test/elm/src/Test/Runner/Node.elm +440 -0
  166. package/generator/dead-code-review/node_modules/elm-test/lib/Compile.js +110 -0
  167. package/generator/dead-code-review/node_modules/elm-test/lib/DependencyProvider.js +343 -0
  168. package/generator/dead-code-review/node_modules/elm-test/lib/ElmCompiler.js +109 -0
  169. package/generator/dead-code-review/node_modules/elm-test/lib/ElmHome.js +47 -0
  170. package/generator/dead-code-review/node_modules/elm-test/lib/ElmJson.js +194 -0
  171. package/generator/dead-code-review/node_modules/elm-test/lib/FindTests.js +276 -0
  172. package/generator/dead-code-review/node_modules/elm-test/lib/Generate.js +294 -0
  173. package/generator/dead-code-review/node_modules/elm-test/lib/Install.js +290 -0
  174. package/generator/dead-code-review/node_modules/elm-test/lib/Parser.js +941 -0
  175. package/generator/dead-code-review/node_modules/elm-test/lib/Project.js +117 -0
  176. package/generator/dead-code-review/node_modules/elm-test/lib/Report.js +23 -0
  177. package/generator/dead-code-review/node_modules/elm-test/lib/RunTests.js +322 -0
  178. package/generator/dead-code-review/node_modules/elm-test/lib/Solve.js +76 -0
  179. package/generator/dead-code-review/node_modules/elm-test/lib/Supervisor.js +294 -0
  180. package/generator/dead-code-review/node_modules/elm-test/lib/SyncGet.js +45 -0
  181. package/generator/dead-code-review/node_modules/elm-test/lib/SyncGetWorker.js +36 -0
  182. package/generator/dead-code-review/node_modules/elm-test/lib/elm-test.js +318 -0
  183. package/generator/dead-code-review/node_modules/elm-test/package.json +69 -0
  184. package/generator/dead-code-review/node_modules/elm-test/templates/after.js +29 -0
  185. package/generator/dead-code-review/node_modules/elm-test/templates/before.js +58 -0
  186. package/generator/dead-code-review/node_modules/elm-test/templates/tests/Example.elm +10 -0
  187. package/generator/dead-code-review/node_modules/fill-range/LICENSE +21 -0
  188. package/generator/dead-code-review/node_modules/fill-range/README.md +237 -0
  189. package/generator/dead-code-review/node_modules/fill-range/index.js +249 -0
  190. package/generator/dead-code-review/node_modules/fill-range/package.json +69 -0
  191. package/generator/dead-code-review/node_modules/fs.realpath/LICENSE +43 -0
  192. package/generator/dead-code-review/node_modules/fs.realpath/README.md +33 -0
  193. package/generator/dead-code-review/node_modules/fs.realpath/index.js +66 -0
  194. package/generator/dead-code-review/node_modules/fs.realpath/old.js +303 -0
  195. package/generator/dead-code-review/node_modules/fs.realpath/package.json +26 -0
  196. package/generator/dead-code-review/node_modules/fsevents/LICENSE +22 -0
  197. package/generator/dead-code-review/node_modules/fsevents/README.md +83 -0
  198. package/generator/dead-code-review/node_modules/fsevents/fsevents.d.ts +46 -0
  199. package/generator/dead-code-review/node_modules/fsevents/fsevents.js +82 -0
  200. package/generator/dead-code-review/node_modules/fsevents/fsevents.node +0 -0
  201. package/generator/dead-code-review/node_modules/fsevents/package.json +62 -0
  202. package/generator/dead-code-review/node_modules/glob/LICENSE +15 -0
  203. package/generator/dead-code-review/node_modules/glob/README.md +378 -0
  204. package/generator/dead-code-review/node_modules/glob/common.js +240 -0
  205. package/generator/dead-code-review/node_modules/glob/glob.js +790 -0
  206. package/generator/dead-code-review/node_modules/glob/package.json +55 -0
  207. package/generator/dead-code-review/node_modules/glob/sync.js +486 -0
  208. package/generator/dead-code-review/node_modules/glob-parent/CHANGELOG.md +110 -0
  209. package/generator/dead-code-review/node_modules/glob-parent/LICENSE +15 -0
  210. package/generator/dead-code-review/node_modules/glob-parent/README.md +137 -0
  211. package/generator/dead-code-review/node_modules/glob-parent/index.js +42 -0
  212. package/generator/dead-code-review/node_modules/glob-parent/package.json +48 -0
  213. package/generator/dead-code-review/node_modules/graceful-fs/LICENSE +15 -0
  214. package/generator/dead-code-review/node_modules/graceful-fs/README.md +143 -0
  215. package/generator/dead-code-review/node_modules/graceful-fs/clone.js +23 -0
  216. package/generator/dead-code-review/node_modules/graceful-fs/graceful-fs.js +448 -0
  217. package/generator/dead-code-review/node_modules/graceful-fs/legacy-streams.js +118 -0
  218. package/generator/dead-code-review/node_modules/graceful-fs/package.json +50 -0
  219. package/generator/dead-code-review/node_modules/graceful-fs/polyfills.js +355 -0
  220. package/generator/dead-code-review/node_modules/has-flag/index.d.ts +39 -0
  221. package/generator/dead-code-review/node_modules/has-flag/index.js +8 -0
  222. package/generator/dead-code-review/node_modules/has-flag/license +9 -0
  223. package/generator/dead-code-review/node_modules/has-flag/package.json +46 -0
  224. package/generator/dead-code-review/node_modules/has-flag/readme.md +89 -0
  225. package/generator/dead-code-review/node_modules/inflight/LICENSE +15 -0
  226. package/generator/dead-code-review/node_modules/inflight/README.md +37 -0
  227. package/generator/dead-code-review/node_modules/inflight/inflight.js +54 -0
  228. package/generator/dead-code-review/node_modules/inflight/package.json +29 -0
  229. package/generator/dead-code-review/node_modules/inherits/LICENSE +16 -0
  230. package/generator/dead-code-review/node_modules/inherits/README.md +42 -0
  231. package/generator/dead-code-review/node_modules/inherits/inherits.js +9 -0
  232. package/generator/dead-code-review/node_modules/inherits/inherits_browser.js +27 -0
  233. package/generator/dead-code-review/node_modules/inherits/package.json +29 -0
  234. package/generator/dead-code-review/node_modules/is-binary-path/index.d.ts +17 -0
  235. package/generator/dead-code-review/node_modules/is-binary-path/index.js +7 -0
  236. package/generator/dead-code-review/node_modules/is-binary-path/license +9 -0
  237. package/generator/dead-code-review/node_modules/is-binary-path/package.json +40 -0
  238. package/generator/dead-code-review/node_modules/is-binary-path/readme.md +34 -0
  239. package/generator/dead-code-review/node_modules/is-extglob/LICENSE +21 -0
  240. package/generator/dead-code-review/node_modules/is-extglob/README.md +107 -0
  241. package/generator/dead-code-review/node_modules/is-extglob/index.js +20 -0
  242. package/generator/dead-code-review/node_modules/is-extglob/package.json +69 -0
  243. package/generator/dead-code-review/node_modules/is-glob/LICENSE +21 -0
  244. package/generator/dead-code-review/node_modules/is-glob/README.md +206 -0
  245. package/generator/dead-code-review/node_modules/is-glob/index.js +150 -0
  246. package/generator/dead-code-review/node_modules/is-glob/package.json +81 -0
  247. package/generator/dead-code-review/node_modules/is-number/LICENSE +21 -0
  248. package/generator/dead-code-review/node_modules/is-number/README.md +187 -0
  249. package/generator/dead-code-review/node_modules/is-number/index.js +18 -0
  250. package/generator/dead-code-review/node_modules/is-number/package.json +82 -0
  251. package/generator/dead-code-review/node_modules/isexe/LICENSE +15 -0
  252. package/generator/dead-code-review/node_modules/isexe/README.md +51 -0
  253. package/generator/dead-code-review/node_modules/isexe/index.js +57 -0
  254. package/generator/dead-code-review/node_modules/isexe/mode.js +41 -0
  255. package/generator/dead-code-review/node_modules/isexe/package.json +31 -0
  256. package/generator/dead-code-review/node_modules/isexe/test/basic.js +221 -0
  257. package/generator/dead-code-review/node_modules/isexe/windows.js +42 -0
  258. package/generator/dead-code-review/node_modules/minimatch/LICENSE +15 -0
  259. package/generator/dead-code-review/node_modules/minimatch/README.md +259 -0
  260. package/generator/dead-code-review/node_modules/minimatch/lib/path.js +4 -0
  261. package/generator/dead-code-review/node_modules/minimatch/minimatch.js +906 -0
  262. package/generator/dead-code-review/node_modules/minimatch/package.json +32 -0
  263. package/generator/dead-code-review/node_modules/normalize-path/LICENSE +21 -0
  264. package/generator/dead-code-review/node_modules/normalize-path/README.md +127 -0
  265. package/generator/dead-code-review/node_modules/normalize-path/index.js +35 -0
  266. package/generator/dead-code-review/node_modules/normalize-path/package.json +77 -0
  267. package/generator/dead-code-review/node_modules/once/LICENSE +15 -0
  268. package/generator/dead-code-review/node_modules/once/README.md +79 -0
  269. package/generator/dead-code-review/node_modules/once/once.js +42 -0
  270. package/generator/dead-code-review/node_modules/once/package.json +33 -0
  271. package/generator/dead-code-review/node_modules/path-key/index.d.ts +40 -0
  272. package/generator/dead-code-review/node_modules/path-key/index.js +16 -0
  273. package/generator/dead-code-review/node_modules/path-key/license +9 -0
  274. package/generator/dead-code-review/node_modules/path-key/package.json +39 -0
  275. package/generator/dead-code-review/node_modules/path-key/readme.md +61 -0
  276. package/generator/dead-code-review/node_modules/picomatch/CHANGELOG.md +136 -0
  277. package/generator/dead-code-review/node_modules/picomatch/LICENSE +21 -0
  278. package/generator/dead-code-review/node_modules/picomatch/README.md +708 -0
  279. package/generator/dead-code-review/node_modules/picomatch/index.js +3 -0
  280. package/generator/dead-code-review/node_modules/picomatch/lib/constants.js +179 -0
  281. package/generator/dead-code-review/node_modules/picomatch/lib/parse.js +1091 -0
  282. package/generator/dead-code-review/node_modules/picomatch/lib/picomatch.js +342 -0
  283. package/generator/dead-code-review/node_modules/picomatch/lib/scan.js +391 -0
  284. package/generator/dead-code-review/node_modules/picomatch/lib/utils.js +64 -0
  285. package/generator/dead-code-review/node_modules/picomatch/package.json +81 -0
  286. package/generator/dead-code-review/node_modules/readdirp/LICENSE +21 -0
  287. package/generator/dead-code-review/node_modules/readdirp/README.md +122 -0
  288. package/generator/dead-code-review/node_modules/readdirp/index.d.ts +43 -0
  289. package/generator/dead-code-review/node_modules/readdirp/index.js +287 -0
  290. package/generator/dead-code-review/node_modules/readdirp/package.json +122 -0
  291. package/generator/dead-code-review/node_modules/shebang-command/index.js +19 -0
  292. package/generator/dead-code-review/node_modules/shebang-command/license +9 -0
  293. package/generator/dead-code-review/node_modules/shebang-command/package.json +34 -0
  294. package/generator/dead-code-review/node_modules/shebang-command/readme.md +34 -0
  295. package/generator/dead-code-review/node_modules/shebang-regex/index.d.ts +22 -0
  296. package/generator/dead-code-review/node_modules/shebang-regex/index.js +2 -0
  297. package/generator/dead-code-review/node_modules/shebang-regex/license +9 -0
  298. package/generator/dead-code-review/node_modules/shebang-regex/package.json +35 -0
  299. package/generator/dead-code-review/node_modules/shebang-regex/readme.md +33 -0
  300. package/generator/dead-code-review/node_modules/split/.travis.yml +3 -0
  301. package/generator/dead-code-review/node_modules/split/LICENCE +22 -0
  302. package/generator/dead-code-review/node_modules/split/examples/pretty.js +26 -0
  303. package/generator/dead-code-review/node_modules/split/index.js +63 -0
  304. package/generator/dead-code-review/node_modules/split/package.json +30 -0
  305. package/generator/dead-code-review/node_modules/split/readme.markdown +72 -0
  306. package/generator/dead-code-review/node_modules/split/test/options.asynct.js +46 -0
  307. package/generator/dead-code-review/node_modules/split/test/partitioned_unicode.js +34 -0
  308. package/generator/dead-code-review/node_modules/split/test/split.asynct.js +137 -0
  309. package/generator/dead-code-review/node_modules/split/test/try_catch.asynct.js +51 -0
  310. package/generator/dead-code-review/node_modules/supports-color/browser.js +5 -0
  311. package/generator/dead-code-review/node_modules/supports-color/index.js +135 -0
  312. package/generator/dead-code-review/node_modules/supports-color/license +9 -0
  313. package/generator/dead-code-review/node_modules/supports-color/package.json +53 -0
  314. package/generator/dead-code-review/node_modules/supports-color/readme.md +76 -0
  315. package/generator/dead-code-review/node_modules/through/.travis.yml +5 -0
  316. package/generator/dead-code-review/node_modules/through/LICENSE.APACHE2 +15 -0
  317. package/generator/dead-code-review/node_modules/through/LICENSE.MIT +24 -0
  318. package/generator/dead-code-review/node_modules/through/index.js +108 -0
  319. package/generator/dead-code-review/node_modules/through/package.json +36 -0
  320. package/generator/dead-code-review/node_modules/through/readme.markdown +64 -0
  321. package/generator/dead-code-review/node_modules/through/test/async.js +28 -0
  322. package/generator/dead-code-review/node_modules/through/test/auto-destroy.js +30 -0
  323. package/generator/dead-code-review/node_modules/through/test/buffering.js +71 -0
  324. package/generator/dead-code-review/node_modules/through/test/end.js +45 -0
  325. package/generator/dead-code-review/node_modules/through/test/index.js +133 -0
  326. package/generator/dead-code-review/node_modules/to-regex-range/LICENSE +21 -0
  327. package/generator/dead-code-review/node_modules/to-regex-range/README.md +305 -0
  328. package/generator/dead-code-review/node_modules/to-regex-range/index.js +288 -0
  329. package/generator/dead-code-review/node_modules/to-regex-range/package.json +88 -0
  330. package/generator/dead-code-review/node_modules/which/CHANGELOG.md +166 -0
  331. package/generator/dead-code-review/node_modules/which/LICENSE +15 -0
  332. package/generator/dead-code-review/node_modules/which/README.md +54 -0
  333. package/generator/dead-code-review/node_modules/which/bin/node-which +52 -0
  334. package/generator/dead-code-review/node_modules/which/package.json +43 -0
  335. package/generator/dead-code-review/node_modules/which/which.js +125 -0
  336. package/generator/dead-code-review/node_modules/wrappy/LICENSE +15 -0
  337. package/generator/dead-code-review/node_modules/wrappy/README.md +36 -0
  338. package/generator/dead-code-review/node_modules/wrappy/package.json +29 -0
  339. package/generator/dead-code-review/node_modules/wrappy/wrappy.js +33 -0
  340. package/generator/dead-code-review/node_modules/xmlbuilder/.nycrc +6 -0
  341. package/generator/dead-code-review/node_modules/xmlbuilder/.vscode/launch.json +23 -0
  342. package/generator/dead-code-review/node_modules/xmlbuilder/CHANGELOG.md +593 -0
  343. package/generator/dead-code-review/node_modules/xmlbuilder/LICENSE +21 -0
  344. package/generator/dead-code-review/node_modules/xmlbuilder/README.md +103 -0
  345. package/generator/dead-code-review/node_modules/xmlbuilder/lib/Derivation.js +10 -0
  346. package/generator/dead-code-review/node_modules/xmlbuilder/lib/DocumentPosition.js +12 -0
  347. package/generator/dead-code-review/node_modules/xmlbuilder/lib/NodeType.js +25 -0
  348. package/generator/dead-code-review/node_modules/xmlbuilder/lib/OperationType.js +11 -0
  349. package/generator/dead-code-review/node_modules/xmlbuilder/lib/Utility.js +88 -0
  350. package/generator/dead-code-review/node_modules/xmlbuilder/lib/WriterState.js +10 -0
  351. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLAttribute.js +130 -0
  352. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCData.js +41 -0
  353. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLCharacterData.js +86 -0
  354. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLComment.js +41 -0
  355. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMConfiguration.js +80 -0
  356. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMErrorHandler.js +20 -0
  357. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMImplementation.js +55 -0
  358. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDOMStringList.js +44 -0
  359. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDAttList.js +66 -0
  360. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDElement.js +44 -0
  361. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDEntity.js +115 -0
  362. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDTDNotation.js +66 -0
  363. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDeclaration.js +51 -0
  364. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocType.js +235 -0
  365. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocument.js +282 -0
  366. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentCB.js +650 -0
  367. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDocumentFragment.js +21 -0
  368. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLDummy.js +39 -0
  369. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLElement.js +334 -0
  370. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNamedNodeMap.js +77 -0
  371. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNode.js +999 -0
  372. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeFilter.js +51 -0
  373. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLNodeList.js +45 -0
  374. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js +56 -0
  375. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLRaw.js +40 -0
  376. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStreamWriter.js +209 -0
  377. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringWriter.js +40 -0
  378. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLStringifier.js +291 -0
  379. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLText.js +82 -0
  380. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLTypeInfo.js +23 -0
  381. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLUserDataHandler.js +27 -0
  382. package/generator/dead-code-review/node_modules/xmlbuilder/lib/XMLWriterBase.js +485 -0
  383. package/generator/dead-code-review/node_modules/xmlbuilder/lib/index.js +120 -0
  384. package/generator/dead-code-review/node_modules/xmlbuilder/package.json +51 -0
  385. package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/escaping.coffee +244 -0
  386. package/generator/dead-code-review/node_modules/xmlbuilder/perf/basic/object.coffee +21 -0
  387. package/generator/dead-code-review/node_modules/xmlbuilder/perf/index.coffee +161 -0
  388. package/generator/dead-code-review/node_modules/xmlbuilder/perf/perf.list +11 -0
  389. package/generator/dead-code-review/node_modules/xmlbuilder/typings/index.d.ts +1771 -0
  390. package/generator/review/elm-stuff/0.19.1/d.dat +0 -0
  391. package/generator/review/elm-stuff/0.19.1/i.dat +0 -0
  392. package/generator/review/elm-stuff/0.19.1/o.dat +0 -0
  393. 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
  394. 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
  395. 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
  396. package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision10/install/elm.json +25 -0
  397. 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
  398. 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
  399. 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
  400. package/generator/review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision7/install/elm.json +41 -0
  401. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  402. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1 -1
  403. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +1 -1
  404. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  405. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  406. package/generator/src/cli.js +15 -7
  407. package/generator/src/compatibility-key.js +3 -1
  408. package/generator/src/dev-server.js +0 -13
  409. package/generator/src/pre-render-html.js +4 -6
  410. package/generator/src/render-worker.js +4 -1
  411. package/generator/src/request-cache.js +59 -8
  412. package/generator/template/app/Api.elm +4 -3
  413. package/generator/template/app/Effect.elm +123 -0
  414. package/generator/template/app/ErrorPage.elm +37 -6
  415. package/generator/template/app/Route/Index.elm +14 -7
  416. package/generator/template/app/Shared.elm +23 -46
  417. package/generator/template/app/Site.elm +11 -3
  418. package/generator/template/app/View.elm +1 -8
  419. package/generator/template/elm-tooling.json +0 -3
  420. package/generator/template/elm.json +34 -25
  421. package/generator/template/package.json +10 -4
  422. package/package.json +1 -1
  423. package/src/BackendTask/Custom.elm +110 -6
  424. package/src/Form/Field.elm +21 -9
  425. package/src/Form/FieldView.elm +14 -4
  426. package/src/Form.elm +61 -53
  427. package/src/Pages/Internal/Platform/Cli.elm +262 -235
  428. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  429. package/src/Pages/Internal/Platform.elm +56 -35
  430. package/src/Result/Extra.elm +6 -1
  431. package/src/Scaffold/Form.elm +474 -0
  432. package/src/{Pages/Generate.elm → Scaffold/Route.elm} +35 -5
  433. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
@@ -0,0 +1,117 @@
1
+ // @flow
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const ElmJson = require('./ElmJson');
6
+
7
+ // Poor man’s type alias. We can’t use /*:: type Project = ... */ because of:
8
+ // https://github.com/prettier/prettier/issues/2597
9
+ const Project /*: {
10
+ rootDir: string,
11
+ testsDir: string,
12
+ generatedCodeDir: string,
13
+ testsSourceDirs: Array<string>,
14
+ elmJson: typeof ElmJson.ElmJson,
15
+ } */ = {
16
+ rootDir: '',
17
+ testsDir: '',
18
+ generatedCodeDir: '',
19
+ testsSourceDirs: [],
20
+ elmJson: ElmJson.ElmJson,
21
+ };
22
+
23
+ function getTestsDir(rootDir /*: string */) /*: string */ {
24
+ return path.join(rootDir, 'tests');
25
+ }
26
+
27
+ function init(
28
+ rootDir /*: string */,
29
+ version /*: string */
30
+ ) /*: typeof Project */ {
31
+ const testsDir = getTestsDir(rootDir);
32
+
33
+ // The tests/ directory is not required. You can also co-locate tests with
34
+ // their source files.
35
+ const shouldAddTestsDirAsSource = fs.existsSync(testsDir);
36
+
37
+ const elmJson = ElmJson.read(rootDir);
38
+
39
+ const projectSourceDirs =
40
+ elmJson.type === 'package' ? ['src'] : elmJson['source-directories'];
41
+
42
+ const testsSourceDirs /*: Array<string> */ = projectSourceDirs
43
+ .map((src) => path.resolve(rootDir, src))
44
+ .concat(shouldAddTestsDirAsSource ? [testsDir] : []);
45
+
46
+ const generatedCodeDir = path.join(
47
+ rootDir,
48
+ 'elm-stuff',
49
+ 'generated-code',
50
+ 'elm-community',
51
+ 'elm-test',
52
+ version
53
+ );
54
+
55
+ return {
56
+ rootDir,
57
+ testsDir,
58
+ generatedCodeDir,
59
+ testsSourceDirs,
60
+ elmJson,
61
+ };
62
+ }
63
+
64
+ /* We do this validation ourselves to avoid the ../../../../../ in Elm’s error message:
65
+
66
+ -- MISSING SOURCE DIRECTORY ------------------------------------------- elm.json
67
+
68
+ I need a valid elm.json file, but the "source-directories" field lists the
69
+ following directory:
70
+
71
+ ../../../../../app
72
+
73
+ I cannot find it though. Is it missing? Is there a typo?
74
+ */
75
+ function validateTestsSourceDirs(project /*: typeof Project */) /*: void */ {
76
+ for (const dir of project.testsSourceDirs) {
77
+ const fullDir = path.resolve(project.rootDir, dir);
78
+ let stats;
79
+ try {
80
+ stats = fs.statSync(fullDir);
81
+ } catch (error) {
82
+ throw new Error(
83
+ validateTestsSourceDirsError(
84
+ fullDir,
85
+ error.code === 'ENOENT'
86
+ ? "It doesn't exist though. Is it missing? Is there a typo?"
87
+ : `Failed to read that directory: ${error.message}`
88
+ )
89
+ );
90
+ }
91
+ if (!stats.isDirectory()) {
92
+ throw new Error(
93
+ validateTestsSourceDirsError(
94
+ fullDir,
95
+ `It exists but isn't a directory!`
96
+ )
97
+ );
98
+ }
99
+ }
100
+ }
101
+
102
+ function validateTestsSourceDirsError(dir, message) {
103
+ return `
104
+ The "source-directories" field in your elm.json lists the following directory:
105
+
106
+ ${dir}
107
+
108
+ ${message}
109
+ `.trim();
110
+ }
111
+
112
+ module.exports = {
113
+ Project,
114
+ getTestsDir,
115
+ init,
116
+ validateTestsSourceDirs,
117
+ };
@@ -0,0 +1,23 @@
1
+ // @flow
2
+
3
+ // Poor man’s type alias. We can’t use /*:: type Report = ... */ because of:
4
+ // https://github.com/prettier/prettier/issues/2597
5
+ const Report /*: 'console' | 'json' | 'junit' */ = 'console';
6
+
7
+ const all = ['json', 'junit', 'console'];
8
+
9
+ function isMachineReadable(report /*: typeof Report */) /*: boolean */ {
10
+ switch (report) {
11
+ case 'json':
12
+ case 'junit':
13
+ return true;
14
+ case 'console':
15
+ return false;
16
+ }
17
+ }
18
+
19
+ module.exports = {
20
+ Report,
21
+ all,
22
+ isMachineReadable,
23
+ };
@@ -0,0 +1,322 @@
1
+ // @flow
2
+
3
+ const chalk = require('chalk');
4
+ const chokidar = require('chokidar');
5
+ const path = require('path');
6
+ const readline = require('readline');
7
+ const packageInfo = require('../package.json');
8
+ const Compile = require('./Compile');
9
+ const DependencyProvider = require('./DependencyProvider.js');
10
+ const ElmJson = require('./ElmJson');
11
+ const FindTests = require('./FindTests');
12
+ const Generate = require('./Generate');
13
+ const Project = require('./Project');
14
+ const Report = require('./Report');
15
+ const Supervisor = require('./Supervisor');
16
+
17
+ // This value is used _only_ in flow types. 'use' it with the javascript
18
+ // void operator to keep eslint happy.
19
+ void DependencyProvider;
20
+
21
+ // Incorporate the process PID into the socket name, so elm-test processes can
22
+ // be run parallel without accidentally sharing each others' sockets.
23
+ //
24
+ // See https://github.com/rtfeldman/node-test-runner/pull/231
25
+ // Also incorporate a salt number into it on Windows, to avoid EADDRINUSE -
26
+ // see https://github.com/rtfeldman/node-test-runner/issues/275 - because the
27
+ // alternative approach of deleting the file before creating a new one doesn't
28
+ // work on Windows. We have to let Windows clean up the named pipe. This is
29
+ // essentially a band-aid fix. The alternative is to rewrite a ton of stuff.
30
+ function getPipeFilename(runsExecuted /*: number */) /*: string */ {
31
+ return process.platform === 'win32'
32
+ ? `\\\\.\\pipe\\elm_test-${process.pid}-${runsExecuted}`
33
+ : `/tmp/elm_test-${process.pid}.sock`;
34
+ }
35
+
36
+ // This could have been a class, but I couldn’t figure out how to type it with
37
+ // Flow comments and Prettier.
38
+ // This lets you log something like `elm.json changed > Compiling > Starting tests`
39
+ // where each segment appears over time.
40
+ // `\r` moves the cursor to the start of the line. This is important when there
41
+ // are Elm compilation errors - they overwrite the progress text rather than
42
+ // weirdly ending up with stuff like:
43
+ // `elm.json changed > Compiling-- NAMING ERROR - File.elm`
44
+ // Also note that using too much `clearLine` or `clearConsole` causes flickering
45
+ // on Windows, so it's nicer to cleverly overwrite old output when possible.
46
+ function makeProgressLogger(report /*: typeof Report.Report */) {
47
+ const items = [];
48
+ return {
49
+ log(message) {
50
+ items.push(message);
51
+ if (!Report.isMachineReadable(report)) {
52
+ process.stdout.write(`${items.join(' > ')}\r`);
53
+ }
54
+ },
55
+ newLine() {
56
+ items.length = 0;
57
+ if (!Report.isMachineReadable(report)) {
58
+ process.stdout.write('\n');
59
+ }
60
+ },
61
+ overwrite(message) {
62
+ items.length = 0;
63
+ items.push(message);
64
+ if (!Report.isMachineReadable(report)) {
65
+ process.stdout.write(`${message}\r`);
66
+ }
67
+ },
68
+ clearLine() {
69
+ items.length = 0;
70
+ if (!Report.isMachineReadable(report)) {
71
+ readline.clearLine(process.stdout, 0);
72
+ }
73
+ },
74
+ clearConsole() {
75
+ items.length = 0;
76
+ if (!Report.isMachineReadable(report)) {
77
+ process.stdout.write(
78
+ process.platform === 'win32'
79
+ ? '\x1B[2J\x1B[0f'
80
+ : '\x1B[2J\x1B[3J\x1B[H'
81
+ );
82
+ }
83
+ },
84
+ };
85
+ }
86
+
87
+ function diffArrays/*:: <T> */(
88
+ from /*: Array<T> */,
89
+ to /*: Array<T> */
90
+ ) /*: { added: Array<T>, removed: Array<T> } */ {
91
+ return {
92
+ added: to.filter((item) => !from.includes(item)),
93
+ removed: from.filter((item) => !to.includes(item)),
94
+ };
95
+ }
96
+
97
+ function delay(ms /*: number */) /*: Promise<void> */ {
98
+ return new Promise((resolve) => {
99
+ setTimeout(resolve, ms);
100
+ });
101
+ }
102
+
103
+ const Queue /*: Array<{
104
+ event: 'added' | 'changed' | 'removed',
105
+ filePath: string,
106
+ }> */ = [];
107
+ void Queue;
108
+
109
+ function watcherEventMessage(queue /*: typeof Queue */) /*: string */ {
110
+ const filePaths = Array.from(new Set(queue.map(({ filePath }) => filePath)));
111
+ if (filePaths.length === 1) {
112
+ const { event, filePath } = queue[0];
113
+ return `${filePath} ${event}`;
114
+ }
115
+
116
+ const events = Array.from(new Set(queue.map(({ event }) => event))).sort();
117
+ return `${filePaths.length} files ${events.join('/')}`;
118
+ }
119
+
120
+ function runTests(
121
+ dependencyProvider /*: DependencyProvider */,
122
+ projectRootDir /*: string */,
123
+ pathToElmBinary /*: string */,
124
+ testFileGlobs /*: Array<string> */,
125
+ processes /*: number */,
126
+ {
127
+ watch,
128
+ report,
129
+ seed,
130
+ fuzz,
131
+ } /*: {
132
+ watch: boolean,
133
+ report: typeof Report.Report,
134
+ seed: number,
135
+ fuzz: number,
136
+ } */
137
+ ) /*: Promise<number> */ {
138
+ let watcher = undefined;
139
+ let watchedPaths /*: Array<string> */ = [];
140
+ let runsExecuted /*: number */ = 0;
141
+ let currentRun /*: Promise<void> | void */ = undefined;
142
+ let queue /*: typeof Queue */ = [];
143
+
144
+ const progressLogger = makeProgressLogger(report);
145
+
146
+ async function run() /*: Promise<number> */ {
147
+ try {
148
+ // Don’t delay the first run (that’s the only time the queue is empty).
149
+ // Otherwise, wait for a little bit to batch events that happened roughly
150
+ // at the same time. The chokidar docs also mention that by default, the
151
+ // add event will fire when a file first appears on disk, before the
152
+ // entire file has been written. They have a `awaitWriteFinish` option for
153
+ // that, with a `stabilityThreshold` that is an amount of time in
154
+ // milliseconds for a file size to remain constant before emitting its
155
+ // event. Elm files aren’t that huge so it should be fine to just wait a
156
+ // fixed amount of time here instead. I tried it with a 378 MB file. That
157
+ // resulted in first a "added" event and then a "changed" event a little
158
+ // later. So the worst thing that can happen is that you get one run with
159
+ // half a file immediately followed by another run with the whole file.
160
+ // I tested touching 100 files at a time. All of them produced events
161
+ // within 60 ms on Windows, and faster on Mac and Linux. So 100 ms sounds
162
+ // like a reasonable number – not too short, not too long of a wait.
163
+ const queueLengthBeforeWaiting = queue.length;
164
+ if (queueLengthBeforeWaiting > 0) {
165
+ await delay(100);
166
+ // Re-print the message in case the queue has become longer while waiting.
167
+ if (queue.length > queueLengthBeforeWaiting) {
168
+ progressLogger.clearLine();
169
+ progressLogger.log(watcherEventMessage(queue));
170
+ }
171
+ }
172
+
173
+ queue = [];
174
+
175
+ // All operations down to `Generate.generateElmJson(project)` could
176
+ // potentially be avoided depending on what changed (checking what’s
177
+ // inside `queue`). But at the time of this writing all of them are fast
178
+ // (less than 20 ms, often less than 1 ms) so it’s not worth bothering.
179
+
180
+ // Files may be changed, added or removed so always re-create project info
181
+ // from disk to stay fresh.
182
+ const project = Project.init(projectRootDir, packageInfo.version);
183
+ Project.validateTestsSourceDirs(project);
184
+
185
+ const testFilePaths = FindTests.resolveGlobs(
186
+ testFileGlobs.length === 0 ? [project.testsDir] : testFileGlobs,
187
+ project.rootDir
188
+ );
189
+
190
+ if (testFilePaths.length === 0) {
191
+ throw new Error(
192
+ FindTests.noFilesFoundError(project.rootDir, testFileGlobs)
193
+ );
194
+ }
195
+
196
+ if (watcher !== undefined) {
197
+ const diff = diffArrays(watchedPaths, project.testsSourceDirs);
198
+ watchedPaths = project.testsSourceDirs;
199
+ watcher.add(diff.added);
200
+ watcher.unwatch(diff.removed);
201
+ }
202
+
203
+ runsExecuted++;
204
+ const pipeFilename = getPipeFilename(runsExecuted);
205
+ const testModules = await FindTests.findTests(testFilePaths, project);
206
+ const mainModule = Generate.getMainModule(project.generatedCodeDir);
207
+ const dest = path.join(project.generatedCodeDir, 'elmTestOutput.js');
208
+
209
+ await Generate.generateElmJson(dependencyProvider, project);
210
+
211
+ progressLogger.log('Compiling');
212
+
213
+ Generate.generateMainModule(
214
+ fuzz,
215
+ seed,
216
+ report,
217
+ testFileGlobs,
218
+ testFilePaths,
219
+ testModules,
220
+ mainModule,
221
+ processes
222
+ );
223
+
224
+ await Compile.compile(
225
+ project.generatedCodeDir,
226
+ mainModule.path,
227
+ dest,
228
+ pathToElmBinary,
229
+ report
230
+ );
231
+
232
+ Generate.prepareCompiledJsFile(pipeFilename, dest);
233
+
234
+ progressLogger.log('Starting tests');
235
+ progressLogger.newLine();
236
+
237
+ return await Supervisor.run(
238
+ packageInfo.version,
239
+ pipeFilename,
240
+ report,
241
+ processes,
242
+ dest,
243
+ watch
244
+ );
245
+ } catch (err) {
246
+ progressLogger.newLine();
247
+ console.error(err.message);
248
+ return 1;
249
+ }
250
+ }
251
+
252
+ if (watch) {
253
+ progressLogger.clearConsole();
254
+
255
+ const onRunFinish = () => {
256
+ if (queue.length > 0) {
257
+ progressLogger.clearConsole();
258
+ progressLogger.log(watcherEventMessage(queue));
259
+ currentRun = run().then(onRunFinish);
260
+ } else {
261
+ if (!Report.isMachineReadable(report)) {
262
+ console.log(chalk.blue('Watching for changes...'));
263
+ }
264
+ currentRun = undefined;
265
+ }
266
+ };
267
+
268
+ // The directories to watch change over time and are added and removed as
269
+ // needed in `run`. We should always watch `elm.json` and `tests/`, though
270
+ // (see the 'addDir' event below).
271
+ const alwaysWatched = [
272
+ ElmJson.getPath(projectRootDir),
273
+ Project.getTestsDir(projectRootDir),
274
+ ];
275
+
276
+ const rerun = (event) => (absoluteFilePath) => {
277
+ if (
278
+ absoluteFilePath.endsWith('.elm') ||
279
+ alwaysWatched.includes(absoluteFilePath)
280
+ ) {
281
+ queue.push({
282
+ event,
283
+ filePath: path.relative(projectRootDir, absoluteFilePath),
284
+ });
285
+ if (currentRun === undefined) {
286
+ progressLogger.clearConsole();
287
+ progressLogger.log(watcherEventMessage(queue));
288
+ currentRun = run().then(onRunFinish);
289
+ }
290
+ }
291
+ };
292
+
293
+ watcher = chokidar.watch(alwaysWatched, {
294
+ ignoreInitial: true,
295
+ ignored: FindTests.ignoredDirsGlobs,
296
+ disableGlobbing: true,
297
+ });
298
+
299
+ watcher.on('add', rerun('added'));
300
+ watcher.on('change', rerun('changed'));
301
+ watcher.on('unlink', rerun('removed'));
302
+
303
+ // The only time this event is interesting is when the `tests/` directory is
304
+ // created after the watcher was started. There’s no need to listen for
305
+ // 'unlinkDir' – that makes no difference.
306
+ watcher.on('addDir', rerun('added'));
307
+
308
+ // It’s unclear when this event occurrs.
309
+ watcher.on('error', (error) => console.error('Watcher error:', error));
310
+
311
+ currentRun = run().then(onRunFinish);
312
+
313
+ // A promise that never resolves. We’ll watch until killed.
314
+ return new Promise(() => {});
315
+ } else {
316
+ return run();
317
+ }
318
+ }
319
+
320
+ module.exports = {
321
+ runTests,
322
+ };
@@ -0,0 +1,76 @@
1
+ // @flow
2
+
3
+ const crypto = require('crypto');
4
+ const fs = require('fs');
5
+ const path = require('path');
6
+ const ElmJson = require('./ElmJson');
7
+ const Project = require('./Project');
8
+ const DependencyProvider = require('./DependencyProvider.js');
9
+
10
+ // These value are used _only_ in flow types. 'use' them with the javascript
11
+ // void operator to keep eslint happy.
12
+ void Project;
13
+ void DependencyProvider;
14
+
15
+ function sha256(string) {
16
+ return crypto.createHash('sha256').update(string).digest('hex');
17
+ }
18
+
19
+ function getDependenciesCached(
20
+ dependencyProvider /*: DependencyProvider */,
21
+ project /*: typeof Project.Project */
22
+ ) /*: typeof ElmJson.DirectAndIndirectDependencies */ {
23
+ const hash = sha256(
24
+ JSON.stringify({
25
+ dependencies: project.elmJson.dependencies,
26
+ 'test-dependencies': project.elmJson['test-dependencies'],
27
+ })
28
+ );
29
+
30
+ const cacheFile = path.join(
31
+ project.generatedCodeDir,
32
+ `dependencies.${hash}.json`
33
+ );
34
+
35
+ try {
36
+ return JSON.parse(fs.readFileSync(cacheFile, 'utf8'));
37
+ } catch (error) {
38
+ if (error.code !== 'ENOENT') {
39
+ console.warn(
40
+ `Ignoring bad dependencies cache file:\n\n${error.message}\n\nPlease report this issue: https://github.com/rtfeldman/node-test-runner/issues/new`
41
+ );
42
+ }
43
+ }
44
+
45
+ const dependencies = getDependencies(dependencyProvider, project.elmJson);
46
+
47
+ fs.writeFileSync(cacheFile, dependencies);
48
+
49
+ return ElmJson.parseDirectAndIndirectDependencies(
50
+ JSON.parse(dependencies),
51
+ 'cached solved dependencies'
52
+ );
53
+ }
54
+
55
+ function getDependencies(
56
+ dependencyProvider /*: DependencyProvider */,
57
+ elmJson /*: typeof ElmJson.ElmJson */
58
+ ) /*: string */ {
59
+ const useTest = true;
60
+ const extra = {
61
+ 'elm/core': '1.0.0 <= v < 2.0.0',
62
+ 'elm/json': '1.0.0 <= v < 2.0.0',
63
+ 'elm/time': '1.0.0 <= v < 2.0.0',
64
+ 'elm/random': '1.0.0 <= v < 2.0.0',
65
+ };
66
+ const elmJsonStr = JSON.stringify(elmJson);
67
+ try {
68
+ return dependencyProvider.solveOffline(elmJsonStr, useTest, extra);
69
+ } catch (_) {
70
+ return dependencyProvider.solveOnline(elmJsonStr, useTest, extra);
71
+ }
72
+ }
73
+
74
+ module.exports = {
75
+ getDependenciesCached,
76
+ };