elm-pages 3.0.0-beta.9 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +2 -2
  2. package/adapter/netlify.js +207 -0
  3. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2730 -2938
  4. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.c59ecaf7fa8379e3a2d0f793fe9784e3060cb64a6d1fe22b8f6a054502021dbe.json +1 -0
  5. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmi +0 -0
  6. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmo +0 -0
  7. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  8. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  9. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmi +0 -0
  10. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  11. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmi +0 -0
  12. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmo +0 -0
  13. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmi +0 -0
  14. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmo +0 -0
  15. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmi +0 -0
  16. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmo +0 -0
  17. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmi +0 -0
  18. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmo +0 -0
  19. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmi +0 -0
  20. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmo +0 -0
  21. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmi +0 -0
  22. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmo +0 -0
  23. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmi +0 -0
  24. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmo +0 -0
  25. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmi +0 -0
  26. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmo +0 -0
  27. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmi +0 -0
  28. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmo +0 -0
  29. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmi +0 -0
  30. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmo +0 -0
  31. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmi +0 -0
  32. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmo +0 -0
  33. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmi +0 -0
  34. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmo +0 -0
  35. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmi +0 -0
  36. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmo +0 -0
  37. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmi +0 -0
  38. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmo +0 -0
  39. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/d.dat +0 -0
  40. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/i.dat +0 -0
  41. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/lock +0 -0
  42. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/o.dat +0 -0
  43. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +38 -0
  44. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +30883 -0
  45. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +1 -0
  46. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +27 -0
  47. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  48. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  49. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  50. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  51. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  52. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  53. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  54. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  55. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +17042 -13855
  56. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  57. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  58. package/generator/dead-code-review/elm.json +9 -7
  59. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +64 -13
  60. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +66 -50
  61. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  62. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
  63. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  64. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
  65. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  66. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  67. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  68. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  69. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
  70. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
  71. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  72. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  73. package/generator/review/elm.json +10 -10
  74. package/generator/src/RouteBuilder.elm +93 -128
  75. package/generator/src/SharedTemplate.elm +8 -7
  76. package/generator/src/SiteConfig.elm +3 -2
  77. package/generator/src/basepath-middleware.js +3 -3
  78. package/generator/src/build.js +143 -59
  79. package/generator/src/cli.js +292 -88
  80. package/generator/src/codegen.js +29 -27
  81. package/generator/src/compatibility-key.js +3 -0
  82. package/generator/src/compile-elm.js +43 -26
  83. package/generator/src/config.js +2 -4
  84. package/generator/src/copy-dir.js +2 -2
  85. package/generator/src/dev-server.js +160 -102
  86. package/generator/src/dir-helpers.js +9 -26
  87. package/generator/src/elm-codegen.js +5 -4
  88. package/generator/src/elm-file-constants.js +2 -3
  89. package/generator/src/error-formatter.js +12 -11
  90. package/generator/src/file-helpers.js +3 -4
  91. package/generator/src/generate-template-module-connector.js +23 -23
  92. package/generator/src/init.js +9 -8
  93. package/generator/src/pre-render-html.js +10 -13
  94. package/generator/src/render-test.js +109 -0
  95. package/generator/src/render-worker.js +25 -28
  96. package/generator/src/render.js +320 -143
  97. package/generator/src/request-cache.js +265 -162
  98. package/generator/src/resolve-elm-module.js +64 -0
  99. package/generator/src/rewrite-client-elm-json.js +6 -5
  100. package/generator/src/rewrite-elm-json-help.js +56 -0
  101. package/generator/src/rewrite-elm-json.js +17 -7
  102. package/generator/src/route-codegen-helpers.js +16 -31
  103. package/generator/src/seo-renderer.js +1 -3
  104. package/generator/src/vite-utils.js +1 -2
  105. package/generator/static-code/elm-pages.js +10 -0
  106. package/generator/static-code/hmr.js +79 -13
  107. package/generator/template/app/Api.elm +3 -2
  108. package/generator/template/app/Effect.elm +155 -0
  109. package/generator/template/app/ErrorPage.elm +49 -6
  110. package/generator/template/app/Route/Blog/Slug_.elm +86 -0
  111. package/generator/template/app/Route/Greet.elm +107 -0
  112. package/generator/template/app/Route/Hello.elm +119 -0
  113. package/generator/template/app/Route/Index.elm +26 -25
  114. package/generator/template/app/Shared.elm +38 -39
  115. package/generator/template/app/Site.elm +4 -7
  116. package/generator/template/app/View.elm +9 -8
  117. package/generator/template/codegen/elm.codegen.json +18 -0
  118. package/generator/template/custom-backend-task.ts +3 -0
  119. package/generator/template/elm-pages.config.mjs +13 -0
  120. package/generator/template/elm-tooling.json +0 -3
  121. package/generator/template/elm.json +34 -25
  122. package/generator/template/index.ts +1 -2
  123. package/generator/template/netlify.toml +4 -1
  124. package/generator/template/package.json +10 -4
  125. package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
  126. package/generator/template/script/custom-backend-task.ts +3 -0
  127. package/generator/template/script/elm.json +61 -0
  128. package/generator/template/script/src/AddRoute.elm +312 -0
  129. package/generator/template/script/src/Stars.elm +42 -0
  130. package/package.json +30 -27
  131. package/src/ApiRoute.elm +249 -82
  132. package/src/BackendTask/Custom.elm +325 -0
  133. package/src/BackendTask/Env.elm +90 -0
  134. package/src/{DataSource → BackendTask}/File.elm +171 -56
  135. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  136. package/src/BackendTask/Http.elm +679 -0
  137. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  138. package/src/BackendTask/Internal/Request.elm +69 -0
  139. package/src/BackendTask/Random.elm +79 -0
  140. package/src/BackendTask/Time.elm +47 -0
  141. package/src/BackendTask.elm +531 -0
  142. package/src/FatalError.elm +90 -0
  143. package/src/FormData.elm +21 -18
  144. package/src/Head/Seo.elm +4 -4
  145. package/src/Head.elm +112 -8
  146. package/src/Internal/ApiRoute.elm +7 -5
  147. package/src/Internal/Request.elm +84 -4
  148. package/src/PageServerResponse.elm +6 -1
  149. package/src/Pages/ConcurrentSubmission.elm +127 -0
  150. package/src/Pages/Form.elm +340 -0
  151. package/src/Pages/FormData.elm +19 -0
  152. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  153. package/src/Pages/Internal/FatalError.elm +5 -0
  154. package/src/Pages/Internal/Msg.elm +93 -0
  155. package/src/Pages/Internal/NotFoundReason.elm +4 -4
  156. package/src/Pages/Internal/Platform/Cli.elm +586 -768
  157. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  158. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  159. package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
  160. package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
  161. package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
  162. package/src/Pages/Internal/Platform.elm +330 -203
  163. package/src/Pages/Internal/ResponseSketch.elm +2 -2
  164. package/src/Pages/Internal/Script.elm +17 -0
  165. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  166. package/src/Pages/Manifest.elm +52 -11
  167. package/src/Pages/Navigation.elm +85 -0
  168. package/src/Pages/PageUrl.elm +26 -12
  169. package/src/Pages/ProgramConfig.elm +32 -22
  170. package/src/Pages/Script.elm +166 -0
  171. package/src/Pages/SiteConfig.elm +3 -2
  172. package/src/Pages/StaticHttp/Request.elm +2 -2
  173. package/src/Pages/StaticHttpRequest.elm +23 -99
  174. package/src/Pages/Url.elm +3 -3
  175. package/src/PagesMsg.elm +88 -0
  176. package/src/QueryParams.elm +21 -172
  177. package/src/RenderRequest.elm +7 -7
  178. package/src/RequestsAndPending.elm +37 -20
  179. package/src/Result/Extra.elm +26 -0
  180. package/src/Scaffold/Form.elm +569 -0
  181. package/src/Scaffold/Route.elm +1431 -0
  182. package/src/Server/Request.elm +476 -1001
  183. package/src/Server/Response.elm +130 -36
  184. package/src/Server/Session.elm +181 -111
  185. package/src/Server/SetCookie.elm +80 -32
  186. package/src/Stub.elm +53 -0
  187. package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
  188. package/src/{Path.elm → UrlPath.elm} +33 -36
  189. package/generator/template/public/images/icon-png.png +0 -0
  190. package/src/DataSource/Env.elm +0 -38
  191. package/src/DataSource/Http.elm +0 -446
  192. package/src/DataSource/Internal/Request.elm +0 -20
  193. package/src/DataSource/Port.elm +0 -90
  194. package/src/DataSource.elm +0 -546
  195. package/src/Form/Field.elm +0 -717
  196. package/src/Form/FieldStatus.elm +0 -36
  197. package/src/Form/FieldView.elm +0 -417
  198. package/src/Form/FormData.elm +0 -22
  199. package/src/Form/Validation.elm +0 -391
  200. package/src/Form/Value.elm +0 -118
  201. package/src/Form.elm +0 -1683
  202. package/src/FormDecoder.elm +0 -102
  203. package/src/Pages/FormState.elm +0 -256
  204. package/src/Pages/Generate.elm +0 -1242
  205. package/src/Pages/Internal/Form.elm +0 -17
  206. package/src/Pages/Internal/Platform/Cli.elm.bak +0 -1276
  207. package/src/Pages/Msg.elm +0 -79
  208. package/src/Pages/Transition.elm +0 -70
@@ -1,12 +1,15 @@
1
- const fs = require("fs");
2
- const copySync = require("fs-extra").copySync;
3
- const path = require("path");
4
- const kleur = require("kleur");
1
+ import * as fs from "fs";
2
+ import * as fsExtra from "fs-extra";
3
+ import * as path from "path";
4
+ import * as kleur from "kleur/colors";
5
+ import { fileURLToPath } from "url";
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = path.dirname(__filename);
5
8
 
6
9
  /**
7
10
  * @param {string} name
8
11
  */
9
- async function run(name) {
12
+ export async function run(name) {
10
13
  console.log("Creating " + name + " project...");
11
14
 
12
15
  const appRoot = path.resolve(name.toString());
@@ -14,7 +17,7 @@ async function run(name) {
14
17
 
15
18
  if (!fs.existsSync(name)) {
16
19
  try {
17
- copySync(template, appRoot);
20
+ await fsExtra.copy(template, appRoot);
18
21
  fs.renameSync(
19
22
  path.resolve(appRoot, "gitignore"),
20
23
  path.resolve(appRoot, ".gitignore")
@@ -36,5 +39,3 @@ async function run(name) {
36
39
  kleur.green("Project is successfully created in `" + appRoot + "`.")
37
40
  );
38
41
  }
39
-
40
- module.exports = { run };
@@ -1,11 +1,12 @@
1
- const seo = require("./seo-renderer.js");
2
- const cliVersion = require("../../package.json").version;
3
- const path = require("path");
1
+ import * as seo from "./seo-renderer.js";
2
+ import * as path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { packageVersion } from "./compatibility-key.js";
4
5
 
5
6
  /** @typedef { { head: any[]; errors: any[]; html: string; route: string; title: string; } } Arg */
6
7
  /** @typedef { { tag : 'PageProgress'; args : Arg[] } } PageProgress */
7
8
 
8
- function wrapHtml(basePath, fromElm, contentDatPayload) {
9
+ export function wrapHtml(basePath, fromElm, contentDatPayload) {
9
10
  const seoData = seo.gather(fromElm.head);
10
11
  return {
11
12
  kind: "html-template",
@@ -21,7 +22,9 @@ function wrapHtml(basePath, fromElm, contentDatPayload) {
21
22
  * @param {boolean} devMode
22
23
  * @param {(context: {cliVersion: string;}) => string} userHeadTagsTemplate
23
24
  */
24
- function templateHtml(devMode, userHeadTagsTemplate) {
25
+ export function templateHtml(devMode, userHeadTagsTemplate) {
26
+ const __filename = fileURLToPath(import.meta.url);
27
+ const __dirname = path.dirname(__filename);
25
28
  return /* html */ `<!DOCTYPE html>
26
29
  <!-- ROOT --><html lang="en">
27
30
  <head>
@@ -42,7 +45,7 @@ function templateHtml(devMode, userHeadTagsTemplate) {
42
45
  "../static-code/elm-pages.js"
43
46
  )}" type="module"></script>`
44
47
  }
45
- ${indent(userHeadTagsTemplate({ cliVersion }))}
48
+ ${indent(userHeadTagsTemplate({ cliVersion: packageVersion }))}
46
49
  <!-- PLACEHOLDER_HEAD_AND_DATA -->
47
50
  </head>
48
51
  <body>
@@ -65,7 +68,7 @@ function indent(snippet) {
65
68
  /**
66
69
  * @param {string} processedTemplate
67
70
  */
68
- function replaceTemplate(processedTemplate, info) {
71
+ export function replaceTemplate(processedTemplate, info) {
69
72
  return processedTemplate
70
73
  .replace(
71
74
  /<!--\s*PLACEHOLDER_HEAD_AND_DATA\s*-->/,
@@ -76,9 +79,3 @@ function replaceTemplate(processedTemplate, info) {
76
79
  .replace(/<!--\s*PLACEHOLDER_HTML\s* -->/, info.html)
77
80
  .replace(/<!-- ROOT -->\S*<html lang="en">/m, info.rootElement);
78
81
  }
79
-
80
- module.exports = {
81
- wrapHtml,
82
- templateHtml,
83
- replaceTemplate,
84
- };
@@ -0,0 +1,109 @@
1
+ const renderer = require("../../generator/src/render");
2
+ const path = require("path");
3
+ const compiledElmPath = path.join(process.cwd(), "elm-stuff/elm-pages/elm.js");
4
+ const codegen = require("./codegen.js");
5
+ const {
6
+ compileElmForBrowser,
7
+ runElmReview,
8
+ compileCliApp,
9
+ } = require("./compile-elm.js");
10
+ const { restoreColorSafe } = require("./error-formatter");
11
+
12
+ async function run({ pathname, serverRequest }) {
13
+ try {
14
+ const basePath = "/";
15
+ await codegen.generate(basePath);
16
+ console.log("Compiling...");
17
+ await compileCliApp(
18
+ { port: 1234, base: basePath, https: false, debug: true },
19
+ ".elm-pages/Main.elm",
20
+
21
+ path.join(process.cwd(), "elm-stuff/elm-pages/", "elm.js"),
22
+
23
+ // "elm.js",
24
+ "elm-stuff/elm-pages/",
25
+ path.join("elm-stuff/elm-pages/", "elm.js")
26
+ );
27
+ console.log("Compiling DONE");
28
+
29
+ const portsFilePath =
30
+ ".elm-pages/compiled-ports/custom-backend-task-FA2IJND6.js";
31
+ const mode = "dev-server";
32
+
33
+ const renderResult = await renderer.render(
34
+ portsFilePath,
35
+ basePath,
36
+ require(compiledElmPath),
37
+ mode,
38
+ pathname,
39
+ serverRequest,
40
+ function (patterns) {},
41
+ true
42
+ );
43
+ console.log("renderResult", renderResult);
44
+ } catch (error) {
45
+ console.log("ERROR");
46
+ console.log(restoreColorSafe(error));
47
+ }
48
+ }
49
+
50
+ // run({
51
+ // serverRequest: {
52
+ // method: "POST",
53
+ // headers: {
54
+ // host: "localhost:1234",
55
+ // cookie: "darkMode=%7B%7D.X1hjuYBa1OZulUomD5yrPy6VcYeY3sC7SKZVGViT0Q4",
56
+ // accept: "*/*",
57
+ // "accept-language": "en-US,en;q=0.9",
58
+ // connection: "keep-alive",
59
+ // "content-type": "application/x-www-form-urlencoded",
60
+ // origin: "http://localhost:1234",
61
+ // referer: "http://localhost:1234/dark-mode",
62
+ // },
63
+ // rawUrl: "http://localhost:1234/dark-mode/content.dat",
64
+ // body: "name=1",
65
+ // requestTime: 1671391652138,
66
+ // multiPartFormData: null,
67
+ // },
68
+ // pathname: "/dark-mode/content.dat",
69
+ // });
70
+
71
+ // run({
72
+ // pathname: "/fetcher/content.dat",
73
+ // serverRequest: {
74
+ // method: "POST",
75
+ // headers: {
76
+ // host: "localhost:1234",
77
+ // cookie: "darkMode=%7B%7D",
78
+ // accept: "*/*",
79
+ // "content-type": "application/x-www-form-urlencoded",
80
+ // origin: "http://localhost:1234",
81
+ // referer: "http://localhost:1234/fetcher",
82
+ // },
83
+ // rawUrl: "http://localhost:1234/fetcher/content.dat",
84
+ // body: "name=1",
85
+ // requestTime: 1671296755228,
86
+ // multiPartFormData: null,
87
+ // },
88
+ // });
89
+
90
+ run({
91
+ serverRequest: {
92
+ method: "POST",
93
+ headers: {
94
+ host: "localhost:1234",
95
+ "cache-control": "max-age=0",
96
+ accept:
97
+ "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8",
98
+ "content-type": "application/x-www-form-urlencoded",
99
+ referer: "http://localhost:1234/login",
100
+ cookie:
101
+ "darkMode=%7B%22darkMode%22%3A%22%22%7D.vtrl8xZXjtx9E3iidJrgurAz4Vk7rnMQmf6zKiAbwNo; mysession=%7B%7D.YX1rW5PIpRFkjgIjLn4p9iyl5r9kWLYHqQUYxAYKJgQ",
102
+ },
103
+ rawUrl: "http://localhost:1234/login/content.dat",
104
+ body: "name=1",
105
+ requestTime: 1671391652138,
106
+ multiPartFormData: null,
107
+ },
108
+ pathname: "/login/content.dat",
109
+ });
@@ -1,19 +1,19 @@
1
- const renderer = require("../../generator/src/render");
2
- const path = require("path");
3
- const fs = require("./dir-helpers.js");
4
- const compiledElmPath = path.join(process.cwd(), "elm-stuff/elm-pages/elm.js");
5
- const { parentPort, threadId, workerData } = require("worker_threads");
6
- let Elm;
7
-
8
- global.staticHttpCache = {};
1
+ import * as renderer from "../../generator/src/render.js";
2
+ import * as path from "node:path";
3
+ import * as fs from "./dir-helpers.js";
4
+ import { readFileSync, writeFileSync } from "node:fs";
5
+ import { parentPort, threadId, workerData } from "node:worker_threads";
6
+ import * as url from "node:url";
9
7
 
10
8
  async function run({ mode, pathname, serverRequest, portsFilePath }) {
11
9
  console.time(`${threadId} ${pathname}`);
12
10
  try {
13
- const renderResult = await renderer(
14
- portsFilePath,
11
+ const renderResult = await renderer.render(
12
+ typeof portsFilePath === "string"
13
+ ? await import(url.pathToFileURL(path.resolve(portsFilePath)).href)
14
+ : portsFilePath,
15
15
  workerData.basePath,
16
- requireElm(mode),
16
+ await requireElm(mode),
17
17
  mode,
18
18
  pathname,
19
19
  serverRequest,
@@ -42,20 +42,17 @@ async function run({ mode, pathname, serverRequest, portsFilePath }) {
42
42
  console.timeEnd(`${threadId} ${pathname}`);
43
43
  }
44
44
 
45
- function requireElm(mode) {
46
- if (mode === "build") {
47
- if (!Elm) {
48
- const warnOriginal = console.warn;
49
- console.warn = function () {};
50
-
51
- Elm = require(compiledElmPath);
52
- console.warn = warnOriginal;
53
- }
54
- return Elm;
55
- } else {
56
- delete require.cache[require.resolve(compiledElmPath)];
57
- return require(compiledElmPath);
58
- }
45
+ async function requireElm(mode) {
46
+ const compiledElmPath = path.join(
47
+ process.cwd(),
48
+ "elm-stuff/elm-pages/elm.cjs"
49
+ );
50
+ let pathAsUrl = url.pathToFileURL(compiledElmPath);
51
+ const warnOriginal = console.warn;
52
+ console.warn = function () {};
53
+ const Elm = (await import(pathAsUrl.toString())).default;
54
+ console.warn = warnOriginal;
55
+ return Elm;
59
56
  }
60
57
 
61
58
  async function outputString(
@@ -67,13 +64,13 @@ async function outputString(
67
64
  const args = fromElm;
68
65
  const normalizedRoute = args.route.replace(/index$/, "");
69
66
  await fs.tryMkdir(`./dist/${normalizedRoute}`);
70
- const template = await fs.readFileSync("./dist/template.html", "utf8");
71
- fs.writeFileSync(
67
+ const template = readFileSync("./dist/template.html", "utf8");
68
+ writeFileSync(
72
69
  `dist/${normalizedRoute}/index.html`,
73
70
  renderTemplate(template, fromElm)
74
71
  );
75
72
  args.contentDatPayload &&
76
- fs.writeFileSync(
73
+ writeFileSync(
77
74
  `dist/${normalizedRoute}/content.dat`,
78
75
  Buffer.from(args.contentDatPayload.buffer)
79
76
  );