elm-pages 3.0.0-beta.6 → 3.0.0-beta.7

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 (24) hide show
  1. package/codegen/elm-pages-codegen.js +1 -1
  2. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  3. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1 -1
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +1 -1
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  10. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  11. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  12. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  13. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  14. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  15. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1 -1
  16. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +1 -1
  17. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  18. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  19. package/generator/src/build.js +4 -14
  20. package/generator/src/config.js +39 -0
  21. package/generator/src/dev-server.js +5 -44
  22. package/generator/src/pre-render-html.js +34 -18
  23. package/package.json +1 -1
  24. package/src/DataSource.elm +28 -28
@@ -38904,7 +38904,7 @@ _Platform_export({'Generate':{'init':$author$project$Generate$main(
38904
38904
  $elm$json$Json$Decode$field,
38905
38905
  'templates',
38906
38906
  $elm$json$Json$Decode$list(
38907
- $elm$json$Json$Decode$list($elm$json$Json$Decode$string)))))(0)}});var isBackend = false && typeof isLamdera !== 'undefined';
38907
+ $elm$json$Json$Decode$list($elm$json$Json$Decode$string)))))(0)}});var isBackend = false && typeof isLamdera !== 'undefined'
38908
38908
 
38909
38909
  function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
38910
38910
  {
@@ -6692,7 +6692,7 @@ _Platform_export({'Reporter':{'init':$author$project$Reporter$main(
6692
6692
  'paths',
6693
6693
  $elm$json$Json$Decode$list($elm$json$Json$Decode$string)));
6694
6694
  },
6695
- A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined';
6695
+ A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined'
6696
6696
 
6697
6697
  function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
6698
6698
  {
@@ -25732,7 +25732,7 @@ _Platform_export({'Runner':{'init':$author$project$Runner$main(
25732
25732
  },
25733
25733
  A2($elm$json$Json$Decode$field, 'fuzzRuns', $elm$json$Json$Decode$int));
25734
25734
  },
25735
- A2($elm$json$Json$Decode$field, 'initialSeed', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined';
25735
+ A2($elm$json$Json$Decode$field, 'initialSeed', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined'
25736
25736
 
25737
25737
  function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
25738
25738
  {
@@ -75,7 +75,7 @@ console.elmlog = (str) => logs.push(str + "\n");
75
75
  const { Elm } = require("./Runner.elm.js");
76
76
 
77
77
  // Start the Elm app
78
- const flags = { initialSeed: 1035103192, fuzzRuns: 100, filter: null };
78
+ const flags = { initialSeed: 2254786925, fuzzRuns: 100, filter: null };
79
79
  const app = Elm.Runner.init({ flags: flags });
80
80
 
81
81
  // Record the timing at which we received the last "runTest" message
@@ -75,19 +75,19 @@ let testsCount, todoTests;
75
75
  let reporter;
76
76
  let runners = [];
77
77
  let working = false;
78
- let workersCount = 10;
78
+ let workersCount = 2;
79
79
  let startWorkCallback = function(){};
80
80
  const verbosity = 0;
81
81
 
82
82
  // Create a long lived reporter worker
83
83
  const { Elm } = require("./Reporter.elm.js");
84
84
  const flags = {
85
- initialSeed: 1035103192,
85
+ initialSeed: 2254786925,
86
86
  fuzzRuns: 100,
87
- mode: "consoleColor",
87
+ mode: "consoleNoColor",
88
88
  verbosity: verbosity,
89
89
  globs: [],
90
- paths: ["/Users/dillonkearns/src/github.com/dillonkearns/elm-pages-v3-beta/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm"],
90
+ paths: ["/home/runner/work/elm-pages-v3-beta/elm-pages-v3-beta/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm"],
91
91
  };
92
92
  reporter = Elm.Reporter.init({ flags: flags });
93
93
 
@@ -6692,7 +6692,7 @@ _Platform_export({'Reporter':{'init':$author$project$Reporter$main(
6692
6692
  'paths',
6693
6693
  $elm$json$Json$Decode$list($elm$json$Json$Decode$string)));
6694
6694
  },
6695
- A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined';
6695
+ A2($elm$json$Json$Decode$field, 'verbosity', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined'
6696
6696
 
6697
6697
  function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
6698
6698
  {
@@ -27514,7 +27514,7 @@ _Platform_export({'Runner':{'init':$author$project$Runner$main(
27514
27514
  },
27515
27515
  A2($elm$json$Json$Decode$field, 'fuzzRuns', $elm$json$Json$Decode$int));
27516
27516
  },
27517
- A2($elm$json$Json$Decode$field, 'initialSeed', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined';
27517
+ A2($elm$json$Json$Decode$field, 'initialSeed', $elm$json$Json$Decode$int)))(0)}});var isBackend = false && typeof isLamdera !== 'undefined'
27518
27518
 
27519
27519
  function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
27520
27520
  {
@@ -75,7 +75,7 @@ console.elmlog = (str) => logs.push(str + "\n");
75
75
  const { Elm } = require("./Runner.elm.js");
76
76
 
77
77
  // Start the Elm app
78
- const flags = { initialSeed: 1889275192, fuzzRuns: 100, filter: null };
78
+ const flags = { initialSeed: 3791732356, fuzzRuns: 100, filter: null };
79
79
  const app = Elm.Runner.init({ flags: flags });
80
80
 
81
81
  // Record the timing at which we received the last "runTest" message
@@ -75,19 +75,19 @@ let testsCount, todoTests;
75
75
  let reporter;
76
76
  let runners = [];
77
77
  let working = false;
78
- let workersCount = 10;
78
+ let workersCount = 2;
79
79
  let startWorkCallback = function(){};
80
80
  const verbosity = 0;
81
81
 
82
82
  // Create a long lived reporter worker
83
83
  const { Elm } = require("./Reporter.elm.js");
84
84
  const flags = {
85
- initialSeed: 1889275192,
85
+ initialSeed: 3791732356,
86
86
  fuzzRuns: 100,
87
- mode: "consoleColor",
87
+ mode: "consoleNoColor",
88
88
  verbosity: verbosity,
89
89
  globs: [],
90
- paths: ["/Users/dillonkearns/src/github.com/dillonkearns/elm-pages-v3-beta/generator/review/tests/Pages/Review/NoContractViolationsTest.elm"],
90
+ paths: ["/home/runner/work/elm-pages-v3-beta/elm-pages-v3-beta/generator/review/tests/Pages/Review/NoContractViolationsTest.elm"],
91
91
  };
92
92
  reporter = Elm.Reporter.init({ flags: flags });
93
93
 
@@ -17,6 +17,7 @@ const preRenderHtml = require("./pre-render-html.js");
17
17
  const esbuild = require("esbuild");
18
18
  const { createHash } = require("crypto");
19
19
  const { merge_vite_configs } = require("./vite-utils.js");
20
+ const { resolveConfig } = require("./config.js");
20
21
 
21
22
  let pool = [];
22
23
  let pagesReady;
@@ -76,23 +77,12 @@ async function run(options) {
76
77
  const generateCode = codegen.generate(options.base);
77
78
 
78
79
  await generateCode;
80
+
81
+ const config = await resolveConfig();
79
82
  await fsPromises.writeFile(
80
83
  "elm-stuff/elm-pages/index.html",
81
- preRenderHtml.templateHtml()
84
+ preRenderHtml.templateHtml(false, config.headTagsTemplate)
82
85
  );
83
-
84
- const config = await import(
85
- path.join(process.cwd(), "elm-pages.config.mjs")
86
- )
87
- .then(async (elmPagesConfig) => {
88
- return elmPagesConfig.default || {};
89
- })
90
- .catch((error) => {
91
- console.warn(
92
- "No `elm-pages.config.mjs` file found. Using default config."
93
- );
94
- return {};
95
- });
96
86
  const viteConfig = merge_vite_configs(
97
87
  {
98
88
  configFile: false,
@@ -0,0 +1,39 @@
1
+ const path = require("path");
2
+
3
+ async function resolveConfig() {
4
+ return await import(path.join(process.cwd(), "elm-pages.config.mjs"))
5
+ .then(async (elmPagesConfig) => {
6
+ return (
7
+ elmPagesConfig.default || {
8
+ headTagsTemplate: defaultHeadTagsTemplate,
9
+ }
10
+ );
11
+ })
12
+ .catch((error) => {
13
+ console.warn(
14
+ "No `elm-pages.config.mjs` file found. Using default config."
15
+ );
16
+ return {
17
+ headTagsTemplate: defaultHeadTagsTemplate,
18
+ vite: {},
19
+ };
20
+ });
21
+ }
22
+
23
+ function defaultHeadTagsTemplate(context) {
24
+ return `
25
+ <link rel="stylesheet" href="/style.css" />
26
+ <meta charset="UTF-8" />
27
+ <meta name="viewport" content="width=device-width,initial-scale=1" />
28
+ <meta name="generator" content="elm-pages v${context.cliVersion}" />
29
+ <meta name="mobile-web-app-capable" content="yes" />
30
+ <meta name="theme-color" content="#ffffff" />
31
+ <meta name="apple-mobile-web-app-capable" content="yes" />
32
+ <meta
33
+ name="apple-mobile-web-app-status-bar-style"
34
+ content="black-translucent"
35
+ />
36
+ `;
37
+ }
38
+
39
+ module.exports = { resolveConfig };
@@ -25,6 +25,8 @@ const { createServer: createViteServer } = require("vite");
25
25
  const cliVersion = require("../../package.json").version;
26
26
  const esbuild = require("esbuild");
27
27
  const { merge_vite_configs } = require("./vite-utils.js");
28
+ const { templateHtml } = require("./pre-render-html.js");
29
+ const { resolveConfig } = require("./config.js");
28
30
 
29
31
  /**
30
32
  * @param {{ port: string; base: string; https: boolean; debug: boolean; }} options
@@ -118,20 +120,7 @@ async function start(options) {
118
120
  watcher.add(sourceDirs);
119
121
  }
120
122
 
121
- const viteConfig = await import(
122
- path.join(process.cwd(), "elm-pages.config.mjs")
123
- )
124
- .then(async (elmPagesConfig) => {
125
- return elmPagesConfig.default.vite || {};
126
- })
127
- .catch((error) => {
128
- console.warn(
129
- kleur.yellow(
130
- "No `elm-pages.config.mjs` file found. Using default config."
131
- )
132
- );
133
- return {};
134
- });
123
+ const config = await resolveConfig();
135
124
  const vite = await createViteServer(
136
125
  merge_vite_configs(
137
126
  {
@@ -145,7 +134,7 @@ async function start(options) {
145
134
  base: options.base,
146
135
  },
147
136
 
148
- viteConfig
137
+ config.vite
149
138
  )
150
139
  );
151
140
  esbuild
@@ -469,35 +458,7 @@ async function start(options) {
469
458
  }
470
459
  case "html": {
471
460
  try {
472
- const template =
473
- /*html*/
474
- `<!DOCTYPE html>
475
- <!-- ROOT --><html lang="en">
476
- <head>
477
- <script src="/hmr.js" type="text/javascript"></script>
478
- <script src="/elm.js" type="text/javascript"></script>
479
- <link rel="stylesheet" href="/style.css">
480
- <link rel="stylesheet" href="/dev-style.css">
481
- <script src="/elm-pages.js" type="module"></script>
482
- <meta charset="UTF-8" />
483
- <meta name="viewport" content="width=device-width,initial-scale=1" />
484
- <title><!-- PLACEHOLDER_TITLE --></title>
485
- <meta name="generator" content="elm-pages v${cliVersion}" />
486
- <meta name="mobile-web-app-capable" content="yes" />
487
- <meta name="theme-color" content="#ffffff" />
488
- <meta name="apple-mobile-web-app-capable" content="yes" />
489
- <meta
490
- name="apple-mobile-web-app-status-bar-style"
491
- content="black-translucent"
492
- />
493
- <!-- PLACEHOLDER_HEAD_AND_DATA -->
494
- </head>
495
- <body>
496
- <div data-url="" display="none"></div>
497
- <!-- PLACEHOLDER_HTML -->
498
- </body>
499
- </html>
500
- `;
461
+ const template = templateHtml(true, config.headTagsTemplate);
501
462
  const processedTemplate = await vite.transformIndexHtml(
502
463
  req.originalUrl,
503
464
  template
@@ -17,28 +17,34 @@ function wrapHtml(basePath, fromElm, contentDatPayload) {
17
17
  };
18
18
  }
19
19
 
20
- function templateHtml() {
20
+ /**
21
+ * @param {boolean} devMode
22
+ * @param {(context: {cliVersion: string;}) => string} userHeadTagsTemplate
23
+ */
24
+ function templateHtml(devMode, userHeadTagsTemplate) {
21
25
  return /* html */ `<!DOCTYPE html>
22
26
  <!-- ROOT --><html lang="en">
23
27
  <head>
24
- <!-- PLACEHOLDER_PRELOADS -->
25
- <script defer src="/elm.js" type="text/javascript"></script>
26
- <script defer src="${path.join(
27
- __dirname,
28
- "../static-code/elm-pages.js"
29
- )}" type="module"></script>
30
- <link rel="stylesheet" href="/style.css" />
31
- <meta charset="UTF-8" />
32
- <meta name="viewport" content="width=device-width,initial-scale=1" />
33
28
  <title><!-- PLACEHOLDER_TITLE --></title>
34
- <meta name="generator" content="elm-pages v${cliVersion}" />
35
- <meta name="mobile-web-app-capable" content="yes" />
36
- <meta name="theme-color" content="#ffffff" />
37
- <meta name="apple-mobile-web-app-capable" content="yes" />
38
- <meta
39
- name="apple-mobile-web-app-status-bar-style"
40
- content="black-translucent"
41
- />
29
+ ${
30
+ devMode
31
+ ? `
32
+ <script src="/hmr.js" type="text/javascript"></script>
33
+ <link rel="stylesheet" href="/dev-style.css">`
34
+ : `
35
+ <!-- PLACEHOLDER_PRELOADS -->`
36
+ }
37
+ <script defer src="/elm.js" type="text/javascript"></script>
38
+ ${
39
+ devMode
40
+ ? `<script src="/elm-pages.js" type="module"></script>
41
+ `
42
+ : `<script defer src="${path.join(
43
+ __dirname,
44
+ "../static-code/elm-pages.js"
45
+ )}" type="module"></script>`
46
+ }
47
+ ${indent(userHeadTagsTemplate({ cliVersion }))}
42
48
  <!-- PLACEHOLDER_HEAD_AND_DATA -->
43
49
  </head>
44
50
  <body>
@@ -48,6 +54,16 @@ function templateHtml() {
48
54
  </html>`;
49
55
  }
50
56
 
57
+ /**
58
+ * @param {string} snippet
59
+ */
60
+ function indent(snippet) {
61
+ return snippet
62
+ .split("\n")
63
+ .map((line) => ` ${line}`)
64
+ .join("\n");
65
+ }
66
+
51
67
  /**
52
68
  * @param {string} processedTemplate
53
69
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "elm-pages",
3
- "version": "3.0.0-beta.6",
3
+ "version": "3.0.0-beta.7",
4
4
  "homepage": "https://elm-pages.com",
5
5
  "moduleResolution": "node",
6
6
  "description": "Type-safe static sites, written in pure elm with your own custom elm-markup syntax.",
@@ -123,16 +123,16 @@ A common use for this is to map your data into your elm-pages view:
123
123
  map : (a -> b) -> DataSource a -> DataSource b
124
124
  map fn requestInfo =
125
125
  case requestInfo of
126
- RequestError error ->
127
- RequestError error
126
+ ApiRoute value ->
127
+ ApiRoute (fn value)
128
128
 
129
129
  Request urls lookupFn ->
130
130
  Request
131
131
  urls
132
132
  (mapLookupFn fn lookupFn)
133
133
 
134
- ApiRoute value ->
135
- ApiRoute (fn value)
134
+ RequestError error ->
135
+ RequestError error
136
136
 
137
137
 
138
138
  mapLookupFn : (a -> b) -> (d -> c -> DataSource a) -> d -> c -> DataSource b
@@ -182,8 +182,8 @@ resolve =
182
182
 
183
183
  -}
184
184
  combine : List (DataSource value) -> DataSource (List value)
185
- combine =
186
- List.foldr (map2 (::)) (succeed [])
185
+ combine items =
186
+ List.foldl (map2 (::)) (succeed []) items |> map List.reverse
187
187
 
188
188
 
189
189
  {-| Like map, but it takes in two `Request`s.
@@ -212,11 +212,8 @@ combine =
212
212
  map2 : (a -> b -> c) -> DataSource a -> DataSource b -> DataSource c
213
213
  map2 fn request1 request2 =
214
214
  case ( request1, request2 ) of
215
- ( RequestError error, _ ) ->
216
- RequestError error
217
-
218
- ( _, RequestError error ) ->
219
- RequestError error
215
+ ( ApiRoute value1, ApiRoute value2 ) ->
216
+ ApiRoute (fn value1 value2)
220
217
 
221
218
  ( Request urls1 lookupFn1, Request urls2 lookupFn2 ) ->
222
219
  Request
@@ -233,8 +230,11 @@ map2 fn request1 request2 =
233
230
  urls1
234
231
  (mapReq fn (\_ _ -> ApiRoute value2) lookupFn1)
235
232
 
236
- ( ApiRoute value1, ApiRoute value2 ) ->
237
- ApiRoute (fn value1 value2)
233
+ ( RequestError error, _ ) ->
234
+ RequestError error
235
+
236
+ ( _, RequestError error ) ->
237
+ RequestError error
238
238
 
239
239
 
240
240
  mapReq : (a -> b -> c) -> (e -> d -> DataSource a) -> (e -> d -> DataSource b) -> e -> d -> DataSource c
@@ -247,9 +247,6 @@ mapReq fn lookupFn1 lookupFn2 maybeMock rawResponses =
247
247
  lookup : Maybe Pages.StaticHttpRequest.MockResolver -> DataSource value -> RequestsAndPending -> Result Pages.StaticHttpRequest.Error value
248
248
  lookup maybeMockResolver requestInfo rawResponses =
249
249
  case requestInfo of
250
- RequestError error ->
251
- Err error
252
-
253
250
  Request urls lookupFn ->
254
251
  lookup maybeMockResolver
255
252
  (addUrls urls (lookupFn maybeMockResolver rawResponses))
@@ -258,18 +255,21 @@ lookup maybeMockResolver requestInfo rawResponses =
258
255
  ApiRoute value ->
259
256
  Ok value
260
257
 
258
+ RequestError error ->
259
+ Err error
260
+
261
261
 
262
262
  addUrls : List HashRequest.Request -> DataSource value -> DataSource value
263
263
  addUrls urlsToAdd requestInfo =
264
264
  case requestInfo of
265
- RequestError error ->
266
- RequestError error
265
+ ApiRoute value ->
266
+ ApiRoute value
267
267
 
268
268
  Request initialUrls function ->
269
269
  Request (initialUrls ++ urlsToAdd) function
270
270
 
271
- ApiRoute value ->
272
- ApiRoute value
271
+ RequestError error ->
272
+ RequestError error
273
273
 
274
274
 
275
275
  {-| The full details to perform a StaticHttp request.
@@ -286,14 +286,14 @@ type alias RequestDetails =
286
286
  lookupUrls : DataSource value -> List RequestDetails
287
287
  lookupUrls requestInfo =
288
288
  case requestInfo of
289
- RequestError _ ->
290
- -- TODO should this have URLs passed through?
289
+ ApiRoute _ ->
291
290
  []
292
291
 
293
292
  Request urls _ ->
294
293
  urls
295
294
 
296
- ApiRoute _ ->
295
+ RequestError _ ->
296
+ -- TODO should this have URLs passed through?
297
297
  []
298
298
 
299
299
 
@@ -324,19 +324,19 @@ andThen fn requestInfo =
324
324
  rawResponses
325
325
  |> (\result ->
326
326
  case result of
327
- Err error ->
328
- RequestError error
329
-
330
327
  Ok value ->
331
328
  case fn value of
329
+ ApiRoute finalValue ->
330
+ ApiRoute finalValue
331
+
332
332
  Request values function ->
333
333
  Request values function
334
334
 
335
335
  RequestError error ->
336
336
  RequestError error
337
337
 
338
- ApiRoute finalValue ->
339
- ApiRoute finalValue
338
+ Err error ->
339
+ RequestError error
340
340
  )
341
341
  )
342
342