elm-pages 3.0.0-beta.9 → 3.0.0
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.
- package/README.md +2 -2
- package/adapter/netlify.js +207 -0
- package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2731 -2939
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +16840 -13653
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
- package/generator/dead-code-review/elm.json +9 -7
- package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +59 -10
- package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +52 -36
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
- package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
- package/generator/review/elm.json +10 -10
- package/generator/src/RouteBuilder.elm +93 -128
- package/generator/src/SharedTemplate.elm +8 -7
- package/generator/src/SiteConfig.elm +3 -2
- package/generator/src/basepath-middleware.js +3 -3
- package/generator/src/build.js +143 -59
- package/generator/src/cli.js +292 -88
- package/generator/src/codegen.js +29 -27
- package/generator/src/compatibility-key.js +3 -0
- package/generator/src/compile-elm.js +43 -26
- package/generator/src/config.js +2 -4
- package/generator/src/copy-dir.js +2 -2
- package/generator/src/dev-server.js +160 -102
- package/generator/src/dir-helpers.js +9 -26
- package/generator/src/elm-codegen.js +5 -4
- package/generator/src/elm-file-constants.js +2 -3
- package/generator/src/error-formatter.js +12 -11
- package/generator/src/file-helpers.js +3 -4
- package/generator/src/generate-template-module-connector.js +23 -23
- package/generator/src/init.js +9 -8
- package/generator/src/pre-render-html.js +10 -13
- package/generator/src/render-test.js +109 -0
- package/generator/src/render-worker.js +25 -28
- package/generator/src/render.js +320 -143
- package/generator/src/request-cache.js +265 -162
- package/generator/src/resolve-elm-module.js +64 -0
- package/generator/src/rewrite-client-elm-json.js +6 -5
- package/generator/src/rewrite-elm-json-help.js +56 -0
- package/generator/src/rewrite-elm-json.js +17 -7
- package/generator/src/route-codegen-helpers.js +16 -31
- package/generator/src/seo-renderer.js +1 -3
- package/generator/src/vite-utils.js +1 -2
- package/generator/static-code/elm-pages.js +10 -0
- package/generator/static-code/hmr.js +79 -13
- package/generator/template/app/Api.elm +3 -2
- package/generator/template/app/Effect.elm +155 -0
- package/generator/template/app/ErrorPage.elm +49 -6
- package/generator/template/app/Route/Blog/Slug_.elm +86 -0
- package/generator/template/app/Route/Greet.elm +107 -0
- package/generator/template/app/Route/Hello.elm +119 -0
- package/generator/template/app/Route/Index.elm +26 -25
- package/generator/template/app/Shared.elm +38 -39
- package/generator/template/app/Site.elm +4 -7
- package/generator/template/app/View.elm +9 -8
- package/generator/template/codegen/elm.codegen.json +18 -0
- package/generator/template/custom-backend-task.ts +3 -0
- package/generator/template/elm-pages.config.mjs +13 -0
- package/generator/template/elm-tooling.json +0 -3
- package/generator/template/elm.json +25 -20
- package/generator/template/index.ts +1 -2
- package/generator/template/netlify.toml +4 -1
- package/generator/template/package.json +10 -4
- package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
- package/generator/template/script/custom-backend-task.ts +3 -0
- package/generator/template/script/elm.json +61 -0
- package/generator/template/script/src/AddRoute.elm +312 -0
- package/generator/template/script/src/Stars.elm +42 -0
- package/package.json +30 -27
- package/src/ApiRoute.elm +249 -82
- package/src/BackendTask/Custom.elm +325 -0
- package/src/BackendTask/Env.elm +90 -0
- package/src/{DataSource → BackendTask}/File.elm +171 -56
- package/src/{DataSource → BackendTask}/Glob.elm +136 -125
- package/src/BackendTask/Http.elm +679 -0
- package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
- package/src/BackendTask/Internal/Request.elm +69 -0
- package/src/BackendTask/Random.elm +79 -0
- package/src/BackendTask/Time.elm +47 -0
- package/src/BackendTask.elm +531 -0
- package/src/FatalError.elm +90 -0
- package/src/FormData.elm +21 -18
- package/src/Head/Seo.elm +4 -4
- package/src/Head.elm +112 -8
- package/src/Internal/ApiRoute.elm +7 -5
- package/src/Internal/Request.elm +84 -4
- package/src/PageServerResponse.elm +6 -1
- package/src/Pages/ConcurrentSubmission.elm +127 -0
- package/src/Pages/Form.elm +340 -0
- package/src/Pages/FormData.elm +19 -0
- package/src/Pages/GeneratorProgramConfig.elm +15 -0
- package/src/Pages/Internal/FatalError.elm +5 -0
- package/src/Pages/Internal/Msg.elm +93 -0
- package/src/Pages/Internal/NotFoundReason.elm +4 -4
- package/src/Pages/Internal/Platform/Cli.elm +586 -768
- package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
- package/src/Pages/Internal/Platform/Effect.elm +1 -2
- package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
- package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
- package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
- package/src/Pages/Internal/Platform.elm +330 -203
- package/src/Pages/Internal/ResponseSketch.elm +2 -2
- package/src/Pages/Internal/Script.elm +17 -0
- package/src/Pages/Internal/StaticHttpBody.elm +35 -1
- package/src/Pages/Manifest.elm +52 -11
- package/src/Pages/Navigation.elm +85 -0
- package/src/Pages/PageUrl.elm +26 -12
- package/src/Pages/ProgramConfig.elm +32 -22
- package/src/Pages/Script.elm +166 -0
- package/src/Pages/SiteConfig.elm +3 -2
- package/src/Pages/StaticHttp/Request.elm +2 -2
- package/src/Pages/StaticHttpRequest.elm +23 -99
- package/src/Pages/Url.elm +3 -3
- package/src/PagesMsg.elm +88 -0
- package/src/QueryParams.elm +21 -172
- package/src/RenderRequest.elm +7 -7
- package/src/RequestsAndPending.elm +37 -20
- package/src/Result/Extra.elm +26 -0
- package/src/Scaffold/Form.elm +569 -0
- package/src/Scaffold/Route.elm +1431 -0
- package/src/Server/Request.elm +476 -1001
- package/src/Server/Response.elm +130 -36
- package/src/Server/Session.elm +181 -111
- package/src/Server/SetCookie.elm +80 -32
- package/src/Stub.elm +53 -0
- package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
- package/src/{Path.elm → UrlPath.elm} +33 -36
- package/generator/template/public/images/icon-png.png +0 -0
- package/src/DataSource/Env.elm +0 -38
- package/src/DataSource/Http.elm +0 -446
- package/src/DataSource/Internal/Request.elm +0 -20
- package/src/DataSource/Port.elm +0 -90
- package/src/DataSource.elm +0 -546
- package/src/Form/Field.elm +0 -717
- package/src/Form/FieldStatus.elm +0 -36
- package/src/Form/FieldView.elm +0 -417
- package/src/Form/FormData.elm +0 -22
- package/src/Form/Validation.elm +0 -391
- package/src/Form/Value.elm +0 -118
- package/src/Form.elm +0 -1683
- package/src/FormDecoder.elm +0 -102
- package/src/Pages/FormState.elm +0 -256
- package/src/Pages/Generate.elm +0 -1242
- package/src/Pages/Internal/Form.elm +0 -17
- package/src/Pages/Internal/Platform/Cli.elm.bak +0 -1276
- package/src/Pages/Msg.elm +0 -79
- package/src/Pages/Transition.elm +0 -70
package/generator/src/init.js
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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
|
+
fsExtra.copySync(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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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 =
|
|
71
|
-
|
|
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
|
-
|
|
73
|
+
writeFileSync(
|
|
77
74
|
`dist/${normalizedRoute}/content.dat`,
|
|
78
75
|
Buffer.from(args.contentDatPayload.buffer)
|
|
79
76
|
);
|