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,343 @@
1
+ // @flow
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const wasm = require('elm-solve-deps-wasm');
6
+ const ElmHome = require('./ElmHome.js');
7
+ const SyncGet = require('./SyncGet.js');
8
+ const collator = new Intl.Collator('en', { numeric: true }); // for sorting SemVer strings
9
+
10
+ // Initialization work done only once.
11
+ wasm.init();
12
+ const syncGetWorker /*: {| get: (string) => string, shutDown: () => void |} */ =
13
+ SyncGet.startWorker();
14
+
15
+ // Cache of existing versions according to the package website.
16
+ class OnlineVersionsCache {
17
+ map /*: Map<string, Array<string>> */ = new Map();
18
+
19
+ update() {
20
+ const pubgrubHome = path.join(ElmHome.elmHome(), 'pubgrub');
21
+ fs.mkdirSync(pubgrubHome, { recursive: true });
22
+ const cachePath = path.join(pubgrubHome, 'versions_cache.json');
23
+ const remotePackagesUrl = 'https://package.elm-lang.org/all-packages';
24
+ if (this.map.size === 0) {
25
+ let cacheFile;
26
+ try {
27
+ // Read from disk existing versions which are already cached.
28
+ cacheFile = fs.readFileSync(cachePath, 'utf8');
29
+ } catch (_) {
30
+ // The cache file does not exist so let's reset it.
31
+ this.map = onlineVersionsFromScratch(cachePath, remotePackagesUrl);
32
+ return;
33
+ }
34
+ try {
35
+ this.map = parseOnlineVersions(JSON.parse(cacheFile));
36
+ } catch (error) {
37
+ throw new Error(
38
+ `Failed to parse the cache file ${cachePath}.\n${error.message}`
39
+ );
40
+ }
41
+ }
42
+ this.updateWithRequestSince(cachePath, remotePackagesUrl);
43
+ }
44
+
45
+ // Update the cache with a request to the package server.
46
+ updateWithRequestSince(
47
+ cachePath /*: string */,
48
+ remotePackagesUrl /*: string */
49
+ ) /*: void */ {
50
+ // Count existing versions.
51
+ let versionsCount = 0;
52
+ for (const versions of this.map.values()) {
53
+ versionsCount += versions.length;
54
+ }
55
+
56
+ // Complete cache with a remote call to the package server.
57
+ const remoteUrl = remotePackagesUrl + '/since/' + (versionsCount - 1); // -1 to check if no package was deleted.
58
+ const newVersions = JSON.parse(syncGetWorker.get(remoteUrl));
59
+ if (newVersions.length === 0) {
60
+ // Reload from scratch since it means at least one package was deleted from the registry.
61
+ this.map = onlineVersionsFromScratch(cachePath, remotePackagesUrl);
62
+ return;
63
+ }
64
+ // Check that the last package in the list was already in cache
65
+ // since the list returned by the package server is sorted newest first.
66
+ const { pkg, version } = splitPkgVersion(newVersions.pop());
67
+ const cachePkgVersions = this.map.get(pkg);
68
+ if (
69
+ cachePkgVersions !== undefined &&
70
+ cachePkgVersions[cachePkgVersions.length - 1] === version
71
+ ) {
72
+ // Insert (in reverse) newVersions into onlineVersionsCache map.
73
+ for (const pkgVersion of newVersions.reverse()) {
74
+ const { pkg, version } = splitPkgVersion(pkgVersion);
75
+ const versionsOfPkg = this.map.get(pkg);
76
+ if (versionsOfPkg === undefined) {
77
+ this.map.set(pkg, [version]);
78
+ } else {
79
+ versionsOfPkg.push(version);
80
+ }
81
+ }
82
+ // Save the updated onlineVersionsCache to disk.
83
+ const onlineVersions = Object.fromEntries(this.map.entries());
84
+ fs.writeFileSync(cachePath, JSON.stringify(onlineVersions));
85
+ } else {
86
+ // There was a problem and a package got deleted from the server.
87
+ this.map = onlineVersionsFromScratch(cachePath, remotePackagesUrl);
88
+ }
89
+ }
90
+
91
+ getVersions(pkg /*: string */) /*: Array<string> */ {
92
+ const versions = this.map.get(pkg);
93
+ return versions === undefined ? [] : versions;
94
+ }
95
+ }
96
+
97
+ class OnlineAvailableVersionLister {
98
+ // Memoization cache to avoid doing the same work twice in list.
99
+ memoCache /*: Map<string, Array<string>> */ = new Map();
100
+ onlineCache /*: OnlineVersionsCache */;
101
+
102
+ constructor(onlineCache /*: OnlineVersionsCache */) {
103
+ onlineCache.update();
104
+ this.onlineCache = onlineCache;
105
+ }
106
+
107
+ list(pkg /*: string */) /*: Array<string> */ {
108
+ const memoVersions = this.memoCache.get(pkg);
109
+ if (memoVersions !== undefined) {
110
+ return memoVersions;
111
+ }
112
+ const offlineVersions = readVersionsInElmHomeAndSort(pkg);
113
+ const allVersionsSet = new Set(this.onlineCache.getVersions(pkg));
114
+ // Combine local and online versions.
115
+ for (const version of offlineVersions) {
116
+ allVersionsSet.add(version);
117
+ }
118
+ const allVersions = [...allVersionsSet].sort(flippedSemverCompare);
119
+ this.memoCache.set(pkg, allVersions);
120
+ return allVersions;
121
+ }
122
+ }
123
+
124
+ class OfflineAvailableVersionLister {
125
+ // Memoization cache to avoid doing the same work twice in list.
126
+ cache /*: Map<string, Array<string>> */ = new Map();
127
+
128
+ list(pkg /*: string */) /*: Array<string> */ {
129
+ const memoVersions = this.cache.get(pkg);
130
+ if (memoVersions !== undefined) {
131
+ return memoVersions;
132
+ }
133
+
134
+ const offlineVersions = readVersionsInElmHomeAndSort(pkg);
135
+
136
+ this.cache.set(pkg, offlineVersions);
137
+ return offlineVersions;
138
+ }
139
+ }
140
+
141
+ function readVersionsInElmHomeAndSort(pkg /*: string */) /*: Array<string> */ {
142
+ const pkgPath = ElmHome.packagePath(pkg);
143
+ let offlineVersions;
144
+ try {
145
+ offlineVersions = fs.readdirSync(pkgPath);
146
+ } catch (_) {
147
+ // The directory doesn't exist or we don't have permissions.
148
+ // It's fine to catch all cases and return an empty list.
149
+ offlineVersions = [];
150
+ }
151
+
152
+ return offlineVersions.sort(flippedSemverCompare);
153
+ }
154
+
155
+ class DependencyProvider {
156
+ cache /*: OnlineVersionsCache */ = new OnlineVersionsCache();
157
+
158
+ // Solve dependencies completely offline, without any http request.
159
+ solveOffline(
160
+ elmJson /*: string */,
161
+ useTest /*: boolean */,
162
+ extra /*: { [string]: string } */
163
+ ) /*: string */ {
164
+ const lister = new OfflineAvailableVersionLister();
165
+ try {
166
+ return wasm.solve_deps(
167
+ elmJson,
168
+ useTest,
169
+ extra,
170
+ fetchElmJsonOffline,
171
+ (pkg) => lister.list(pkg)
172
+ );
173
+ } catch (errorMessage) {
174
+ throw new Error(errorMessage);
175
+ }
176
+ }
177
+
178
+ // Solve dependencies with http requests when required.
179
+ solveOnline(
180
+ elmJson /*: string */,
181
+ useTest /*: boolean */,
182
+ extra /*: { [string]: string } */
183
+ ) /*: string */ {
184
+ const lister = new OnlineAvailableVersionLister(this.cache);
185
+ try {
186
+ return wasm.solve_deps(
187
+ elmJson,
188
+ useTest,
189
+ extra,
190
+ fetchElmJsonOnline,
191
+ (pkg) => lister.list(pkg)
192
+ );
193
+ } catch (errorMessage) {
194
+ throw new Error(errorMessage);
195
+ }
196
+ }
197
+ }
198
+
199
+ function fetchElmJsonOnline(
200
+ pkg /*: string */,
201
+ version /*: string */
202
+ ) /*: string */ {
203
+ try {
204
+ return fetchElmJsonOffline(pkg, version);
205
+ } catch (_) {
206
+ // `fetchElmJsonOffline` can only fail in ways that are either expected
207
+ // (such as file does not exist or no permissions)
208
+ // or because there was an error parsing `pkg` and `version`.
209
+ // In such case, this will throw again with `cacheElmJsonPath()` so it's fine.
210
+ const remoteUrl = remoteElmJsonUrl(pkg, version);
211
+ const elmJson = syncGetWorker.get(remoteUrl);
212
+ const cachePath = cacheElmJsonPath(pkg, version);
213
+ const parentDir = path.dirname(cachePath);
214
+ fs.mkdirSync(parentDir, { recursive: true });
215
+ fs.writeFileSync(cachePath, elmJson);
216
+ return elmJson;
217
+ }
218
+ }
219
+
220
+ function fetchElmJsonOffline(
221
+ pkg /*: string */,
222
+ version /*: string */
223
+ ) /*: string */ {
224
+ try {
225
+ return fs.readFileSync(homeElmJsonPath(pkg, version), 'utf8');
226
+ } catch (_) {
227
+ // The read can only fail if the elm.json file does not exist
228
+ // or if we don't have the permissions to read it so it's fine to catch all.
229
+ // Otherwise, it means that `homeElmJsonPath()` failed while processing `pkg` and `version`.
230
+ // In such case, again, it's fine to catch all since the next call to `cacheElmJsonPath()`
231
+ // will fail the same anyway.
232
+ return fs.readFileSync(cacheElmJsonPath(pkg, version), 'utf8');
233
+ }
234
+ }
235
+
236
+ // Reset the cache of existing versions from scratch
237
+ // with a request to the package server.
238
+ function onlineVersionsFromScratch(
239
+ cachePath /*: string */,
240
+ remotePackagesUrl /*: string */
241
+ ) /*: Map<string, Array<string>> */ {
242
+ const onlineVersionsJson = syncGetWorker.get(remotePackagesUrl);
243
+ fs.writeFileSync(cachePath, onlineVersionsJson);
244
+ const onlineVersions = JSON.parse(onlineVersionsJson);
245
+ try {
246
+ return parseOnlineVersions(onlineVersions);
247
+ } catch (error) {
248
+ throw new Error(
249
+ `Failed to parse the response from the request to ${remotePackagesUrl}.\n${error.message}`
250
+ );
251
+ }
252
+ }
253
+
254
+ // Helper functions ##################################################
255
+
256
+ /* Compares two versions so that newer versions appear first when sorting with this function. */
257
+ function flippedSemverCompare(a /*: string */, b /*: string */) /*: number */ {
258
+ return collator.compare(b, a);
259
+ }
260
+
261
+ function parseOnlineVersions(
262
+ json /*: mixed */
263
+ ) /*: Map<string, Array<string>> */ {
264
+ if (typeof json !== 'object' || json === null || Array.isArray(json)) {
265
+ throw new Error(
266
+ `Expected an object, but got: ${
267
+ json === null ? 'null' : Array.isArray(json) ? 'Array' : typeof json
268
+ }`
269
+ );
270
+ }
271
+
272
+ const result = new Map();
273
+
274
+ for (const [key, value] of Object.entries(json)) {
275
+ result.set(key, parseVersions(key, value));
276
+ }
277
+
278
+ return result;
279
+ }
280
+
281
+ function parseVersions(
282
+ key /*: string */,
283
+ json /*: mixed */
284
+ ) /*: Array<string> */ {
285
+ if (!Array.isArray(json)) {
286
+ throw new Error(
287
+ `Expected ${JSON.stringify(key)} to be an array, but got: ${typeof json}`
288
+ );
289
+ }
290
+
291
+ for (const [index, item] of json.entries()) {
292
+ if (typeof item !== 'string') {
293
+ throw new Error(
294
+ `Expected${JSON.stringify(
295
+ key
296
+ )}->${index} to be a string, but got: ${typeof item}`
297
+ );
298
+ }
299
+ }
300
+
301
+ // $FlowFixMe[incompatible-return]: We dynamically checked that `json` is an `Array<string>`.
302
+ return json;
303
+ }
304
+
305
+ function remoteElmJsonUrl(
306
+ pkg /*: string */,
307
+ version /*: string */
308
+ ) /*: string */ {
309
+ return `https://package.elm-lang.org/packages/${pkg}/${version}/elm.json`;
310
+ }
311
+
312
+ function cacheElmJsonPath(
313
+ pkg /*: string */,
314
+ version /*: string */
315
+ ) /*: string */ {
316
+ const parts = ElmHome.splitAuthorPkg(pkg);
317
+ return path.join(
318
+ ElmHome.elmHome(),
319
+ 'pubgrub',
320
+ 'elm_json_cache',
321
+ parts.author,
322
+ parts.pkg,
323
+ version,
324
+ 'elm.json'
325
+ );
326
+ }
327
+
328
+ function homeElmJsonPath(
329
+ pkg /*: string */,
330
+ version /*: string */
331
+ ) /*: string */ {
332
+ return path.join(ElmHome.packagePath(pkg), version, 'elm.json');
333
+ }
334
+
335
+ function splitPkgVersion(str /*: string */) /*: {
336
+ pkg: string,
337
+ version: string,
338
+ } */ {
339
+ const parts = str.split('@');
340
+ return { pkg: parts[0], version: parts[1] };
341
+ }
342
+
343
+ module.exports = DependencyProvider;
@@ -0,0 +1,109 @@
1
+ // @flow
2
+
3
+ 'use strict';
4
+
5
+ var spawn = require('cross-spawn');
6
+
7
+ var defaultOptions = {
8
+ spawn: spawn,
9
+ cwd: undefined,
10
+ pathToElm: 'elm',
11
+ output: undefined,
12
+ report: undefined,
13
+ processOpts: undefined,
14
+ };
15
+
16
+ // Converts an object of key/value pairs to an array of arguments suitable
17
+ // to be passed to child_process.spawn for elm-make.
18
+ function compilerArgsFromOptions(options) {
19
+ var args = [];
20
+
21
+ if (options.output != null) {
22
+ args.push('--output', options.output);
23
+ }
24
+
25
+ if (options.report != null) {
26
+ args.push('--report', options.report);
27
+ }
28
+
29
+ return args;
30
+ }
31
+
32
+ function runCompiler(sources, options) {
33
+ var pathToElm = options.pathToElm;
34
+ var processArgs = ['make'].concat(sources, compilerArgsFromOptions(options));
35
+
36
+ var processOpts = Object.assign(
37
+ {},
38
+ {
39
+ env: Object.assign({ LANG: 'en_US.UTF-8' }, process.env),
40
+ stdio: 'inherit',
41
+ cwd: options.cwd,
42
+ },
43
+ options.processOpts
44
+ );
45
+
46
+ return options.spawn(pathToElm, processArgs, processOpts);
47
+ }
48
+
49
+ function compilerErrorToString(err, pathToElm) {
50
+ if (typeof err === 'object' && typeof err.code === 'string') {
51
+ switch (err.code) {
52
+ case 'ENOENT':
53
+ return (
54
+ 'Could not find Elm compiler "' + pathToElm + '". Is it installed?'
55
+ );
56
+
57
+ case 'EACCES':
58
+ return (
59
+ 'Elm compiler "' +
60
+ pathToElm +
61
+ '" did not have permission to run. Do you need to give it executable permissions?'
62
+ );
63
+
64
+ default:
65
+ return (
66
+ 'Error attempting to run Elm compiler "' + pathToElm + '":\n' + err
67
+ );
68
+ }
69
+ } else if (typeof err === 'object' && typeof err.message === 'string') {
70
+ return JSON.stringify(err.message);
71
+ } else {
72
+ return (
73
+ 'Exception thrown when attempting to run Elm compiler ' +
74
+ JSON.stringify(pathToElm)
75
+ );
76
+ }
77
+ }
78
+
79
+ function compile(
80
+ sources /*: Array<string> */,
81
+ options /*: {|
82
+ spawn?: (
83
+ string,
84
+ Array<string>,
85
+ child_process$spawnOpts
86
+ ) => child_process$ChildProcess,
87
+ cwd?: string,
88
+ pathToElm?: string,
89
+ output?: string,
90
+ report?: 'json',
91
+ processOpts?: child_process$spawnOpts,
92
+ |} */
93
+ ) /*: child_process$ChildProcess */ {
94
+ var optionsWithDefaults = Object.assign({}, defaultOptions, options);
95
+ try {
96
+ return runCompiler(sources, optionsWithDefaults).on(
97
+ 'error',
98
+ function (err) {
99
+ throw err;
100
+ }
101
+ );
102
+ } catch (err) {
103
+ throw new Error(compilerErrorToString(err, optionsWithDefaults.pathToElm));
104
+ }
105
+ }
106
+
107
+ module.exports = {
108
+ compile: compile,
109
+ };
@@ -0,0 +1,47 @@
1
+ // @flow
2
+
3
+ const path = require('path');
4
+ const os = require('os');
5
+
6
+ function elmHome() /*: string */ {
7
+ const elmHomeEnv = process.env['ELM_HOME'];
8
+ return elmHomeEnv === undefined ? defaultElmHome() : elmHomeEnv;
9
+ }
10
+
11
+ function defaultElmHome() /*: string */ {
12
+ return process.platform === 'win32'
13
+ ? defaultWindowsElmHome()
14
+ : defaultUnixElmHome();
15
+ }
16
+
17
+ function defaultUnixElmHome() /*: string */ {
18
+ return path.join(os.homedir(), '.elm');
19
+ }
20
+
21
+ function defaultWindowsElmHome() /*: string */ {
22
+ const appData = process.env.APPDATA;
23
+ const dir =
24
+ appData === undefined
25
+ ? path.join(os.homedir(), 'AppData', 'Roaming')
26
+ : appData;
27
+ return path.join(dir, 'elm');
28
+ }
29
+
30
+ function packagePath(pkg /*: string */) /*: string */ {
31
+ const parts = splitAuthorPkg(pkg);
32
+ return path.join(elmHome(), '0.19.1', 'packages', parts.author, parts.pkg);
33
+ }
34
+
35
+ function splitAuthorPkg(pkgIdentifier /*: string */) /*: {
36
+ author: string,
37
+ pkg: string,
38
+ } */ {
39
+ const parts = pkgIdentifier.split('/');
40
+ return { author: parts[0], pkg: parts[1] };
41
+ }
42
+
43
+ module.exports = {
44
+ elmHome,
45
+ packagePath,
46
+ splitAuthorPkg,
47
+ };
@@ -0,0 +1,194 @@
1
+ // @flow
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+
6
+ // Poor man’s type alias. We can’t use /*:: type Dependencies = ... */ because of:
7
+ // https://github.com/prettier/prettier/issues/2597
8
+ const Dependencies /*: { [string]: string } */ = {};
9
+
10
+ const DirectAndIndirectDependencies /*: {
11
+ direct: typeof Dependencies,
12
+ indirect: typeof Dependencies,
13
+ } */ = { direct: {}, indirect: {} };
14
+
15
+ const ElmJson /*:
16
+ | {
17
+ type: 'application',
18
+ 'source-directories': Array<string>,
19
+ dependencies: typeof DirectAndIndirectDependencies,
20
+ 'test-dependencies': typeof DirectAndIndirectDependencies,
21
+ [string]: mixed,
22
+ }
23
+ | {
24
+ type: 'package',
25
+ dependencies: typeof Dependencies,
26
+ 'test-dependencies': typeof Dependencies,
27
+ [string]: mixed,
28
+ } */ = {
29
+ type: 'package',
30
+ dependencies: Dependencies,
31
+ 'test-dependencies': Dependencies,
32
+ };
33
+
34
+ function getPath(dir /*: string */) /*: string */ {
35
+ return path.join(dir, 'elm.json');
36
+ }
37
+
38
+ function write(dir /*: string */, elmJson /*: typeof ElmJson */) /*: void */ {
39
+ const elmJsonPath = getPath(dir);
40
+
41
+ try {
42
+ fs.writeFileSync(elmJsonPath, JSON.stringify(elmJson, null, 4) + '\n');
43
+ } catch (error) {
44
+ throw new Error(
45
+ `${elmJsonPath}\nFailed to write elm.json:\n${error.message}`
46
+ );
47
+ }
48
+ }
49
+
50
+ function read(dir /*: string */) /*: typeof ElmJson */ {
51
+ const elmJsonPath = getPath(dir);
52
+
53
+ try {
54
+ return readHelper(elmJsonPath);
55
+ } catch (error) {
56
+ throw new Error(
57
+ `${elmJsonPath}\nFailed to read elm.json:\n${error.message}`
58
+ );
59
+ }
60
+ }
61
+
62
+ function readHelper(elmJsonPath /*: string */) /*: typeof ElmJson */ {
63
+ const json = parseObject(
64
+ JSON.parse(fs.readFileSync(elmJsonPath, 'utf8')),
65
+ 'the file'
66
+ );
67
+
68
+ switch (json.type) {
69
+ case 'application':
70
+ return {
71
+ ...json,
72
+ type: 'application',
73
+ 'source-directories': parseSourceDirectories(
74
+ json['source-directories']
75
+ ),
76
+ dependencies: parseDirectAndIndirectDependencies(
77
+ json.dependencies,
78
+ 'dependencies'
79
+ ),
80
+ 'test-dependencies': parseDirectAndIndirectDependencies(
81
+ json['test-dependencies'],
82
+ 'test-dependencies'
83
+ ),
84
+ };
85
+
86
+ case 'package':
87
+ return {
88
+ ...json,
89
+ type: 'package',
90
+ dependencies: parseDependencies(json.dependencies, 'dependencies'),
91
+ 'test-dependencies': parseDependencies(
92
+ json['test-dependencies'],
93
+ 'test-dependencies'
94
+ ),
95
+ };
96
+
97
+ default:
98
+ throw new Error(
99
+ `Expected "type" to be "application" or "package", but got: ${stringify(
100
+ json.type
101
+ )}`
102
+ );
103
+ }
104
+ }
105
+
106
+ function parseSourceDirectories(json /*: mixed */) /*: Array<string> */ {
107
+ if (!Array.isArray(json)) {
108
+ throw new Error(
109
+ `Expected "source-directories" to be an array, but got: ${stringify(
110
+ json
111
+ )}`
112
+ );
113
+ }
114
+
115
+ const result = [];
116
+
117
+ for (const [index, item] of json.entries()) {
118
+ if (typeof item !== 'string') {
119
+ throw new Error(
120
+ `Expected "source-directories"->${index} to be a string, but got: ${stringify(
121
+ item
122
+ )}`
123
+ );
124
+ }
125
+ result.push(item);
126
+ }
127
+
128
+ if (result.length === 0) {
129
+ throw new Error(
130
+ 'Expected "source-directories" to contain at least one item, but it is empty.'
131
+ );
132
+ }
133
+
134
+ return result;
135
+ }
136
+
137
+ function parseDirectAndIndirectDependencies(
138
+ json /*: mixed */,
139
+ what /*: string */
140
+ ) /*: typeof DirectAndIndirectDependencies */ {
141
+ const jsonObject = parseObject(json, what);
142
+ return {
143
+ direct: parseDependencies(jsonObject.direct, `${what}->"direct"`),
144
+ indirect: parseDependencies(jsonObject.indirect, `${what}->"indirect"`),
145
+ };
146
+ }
147
+
148
+ function parseDependencies(
149
+ json /*: mixed */,
150
+ what /*: string */
151
+ ) /*: typeof Dependencies */ {
152
+ const jsonObject = parseObject(json, what);
153
+ const result = {};
154
+
155
+ for (const [key, value] of Object.entries(jsonObject)) {
156
+ if (typeof value !== 'string') {
157
+ throw new Error(
158
+ `Expected ${what}->${stringify(
159
+ key
160
+ )} to be a string, but got: ${stringify(value)}`
161
+ );
162
+ }
163
+ result[key] = value;
164
+ }
165
+
166
+ return result;
167
+ }
168
+
169
+ function parseObject(
170
+ json /*: mixed */,
171
+ what /*: string */
172
+ ) /*: { +[string]: mixed } */ {
173
+ if (json == null || typeof json !== 'object' || Array.isArray(json)) {
174
+ throw new Error(
175
+ `Expected ${what} to be an object, but got: ${stringify(json)}`
176
+ );
177
+ }
178
+ return json;
179
+ }
180
+
181
+ function stringify(json /*: mixed */) /*: string */ {
182
+ const maybeString = JSON.stringify(json);
183
+ return maybeString === undefined ? 'undefined' : maybeString;
184
+ }
185
+
186
+ module.exports = {
187
+ Dependencies,
188
+ DirectAndIndirectDependencies,
189
+ ElmJson,
190
+ getPath,
191
+ parseDirectAndIndirectDependencies,
192
+ read,
193
+ write,
194
+ };