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

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 (109) hide show
  1. package/README.md +10 -1
  2. package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2420 -1592
  3. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1326 -121
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +15215 -13007
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  13. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +1 -1
  14. package/generator/dead-code-review/elm.json +8 -6
  15. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +189 -17
  16. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +255 -21
  17. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  18. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  19. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  20. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
  21. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1326 -121
  22. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +14620 -12636
  23. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  24. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +1 -1
  25. package/generator/review/elm.json +8 -8
  26. package/generator/src/RouteBuilder.elm +66 -52
  27. package/generator/src/SharedTemplate.elm +3 -2
  28. package/generator/src/SiteConfig.elm +3 -2
  29. package/generator/src/basepath-middleware.js +3 -3
  30. package/generator/src/build.js +122 -86
  31. package/generator/src/cli.js +247 -51
  32. package/generator/src/codegen.js +29 -27
  33. package/generator/src/compatibility-key.js +1 -0
  34. package/generator/src/compile-elm.js +20 -22
  35. package/generator/src/config.js +39 -0
  36. package/generator/src/copy-dir.js +2 -2
  37. package/generator/src/dev-server.js +119 -110
  38. package/generator/src/dir-helpers.js +9 -26
  39. package/generator/src/elm-codegen.js +5 -4
  40. package/generator/src/elm-file-constants.js +2 -3
  41. package/generator/src/error-formatter.js +12 -11
  42. package/generator/src/file-helpers.js +3 -4
  43. package/generator/src/generate-template-module-connector.js +14 -21
  44. package/generator/src/init.js +8 -7
  45. package/generator/src/pre-render-html.js +41 -28
  46. package/generator/src/render-test.js +109 -0
  47. package/generator/src/render-worker.js +26 -28
  48. package/generator/src/render.js +322 -142
  49. package/generator/src/request-cache.js +200 -162
  50. package/generator/src/rewrite-client-elm-json.js +5 -5
  51. package/generator/src/rewrite-elm-json.js +7 -7
  52. package/generator/src/route-codegen-helpers.js +16 -31
  53. package/generator/src/seo-renderer.js +12 -7
  54. package/generator/src/vite-utils.js +77 -0
  55. package/generator/static-code/hmr.js +16 -2
  56. package/generator/template/app/Api.elm +3 -3
  57. package/generator/template/app/Route/Index.elm +3 -3
  58. package/generator/template/app/Shared.elm +3 -3
  59. package/generator/template/app/Site.elm +9 -4
  60. package/package.json +21 -21
  61. package/src/ApiRoute.elm +199 -61
  62. package/src/BackendTask/Custom.elm +214 -0
  63. package/src/BackendTask/Env.elm +90 -0
  64. package/src/{DataSource → BackendTask}/File.elm +128 -43
  65. package/src/{DataSource → BackendTask}/Glob.elm +136 -125
  66. package/src/BackendTask/Http.elm +673 -0
  67. package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
  68. package/src/BackendTask/Internal/Request.elm +28 -0
  69. package/src/BackendTask/Random.elm +79 -0
  70. package/src/BackendTask/Time.elm +47 -0
  71. package/src/BackendTask.elm +537 -0
  72. package/src/FatalError.elm +89 -0
  73. package/src/Form/Field.elm +1 -1
  74. package/src/Form.elm +72 -92
  75. package/src/Head/Seo.elm +4 -4
  76. package/src/Head.elm +237 -7
  77. package/src/HtmlPrinter.elm +7 -3
  78. package/src/Internal/ApiRoute.elm +7 -5
  79. package/src/PageServerResponse.elm +6 -1
  80. package/src/Pages/Generate.elm +775 -132
  81. package/src/Pages/GeneratorProgramConfig.elm +15 -0
  82. package/src/Pages/Internal/FatalError.elm +5 -0
  83. package/src/Pages/Internal/Form.elm +21 -1
  84. package/src/Pages/Internal/Platform/Cli.elm +479 -747
  85. package/src/Pages/Internal/Platform/Cli.elm.bak +1276 -0
  86. package/src/Pages/Internal/Platform/CompatibilityKey.elm +6 -0
  87. package/src/Pages/Internal/Platform/Effect.elm +1 -2
  88. package/src/Pages/Internal/Platform/GeneratorApplication.elm +373 -0
  89. package/src/Pages/Internal/Platform/StaticResponses.elm +73 -270
  90. package/src/Pages/Internal/Platform/ToJsPayload.elm +4 -7
  91. package/src/Pages/Internal/Platform.elm +54 -53
  92. package/src/Pages/Internal/Script.elm +17 -0
  93. package/src/Pages/Internal/StaticHttpBody.elm +35 -1
  94. package/src/Pages/Manifest.elm +29 -4
  95. package/src/Pages/ProgramConfig.elm +12 -8
  96. package/src/Pages/Script.elm +109 -0
  97. package/src/Pages/SiteConfig.elm +3 -2
  98. package/src/Pages/StaticHttp/Request.elm +2 -2
  99. package/src/Pages/StaticHttpRequest.elm +23 -98
  100. package/src/RequestsAndPending.elm +8 -19
  101. package/src/Result/Extra.elm +21 -0
  102. package/src/Server/Request.elm +43 -34
  103. package/src/Server/Session.elm +166 -100
  104. package/src/Server/SetCookie.elm +89 -31
  105. package/src/DataSource/Env.elm +0 -38
  106. package/src/DataSource/Http.elm +0 -446
  107. package/src/DataSource/Internal/Request.elm +0 -20
  108. package/src/DataSource/Port.elm +0 -90
  109. package/src/DataSource.elm +0 -538
@@ -0,0 +1,77 @@
1
+ /** This code is from https://github.com/sveltejs/kit/blob/3b457f67d4d7c59fc63bb3f600a490e4dacc2e62/packages/kit/src/exports/vite/utils.js */
2
+
3
+ /**
4
+ * @param {...import('vite').UserConfig} configs
5
+ * @returns {import('vite').UserConfig}
6
+ */
7
+ export function merge_vite_configs(...configs) {
8
+ return deep_merge(
9
+ ...configs.map((config) => ({
10
+ ...config,
11
+ resolve: {
12
+ ...config.resolve,
13
+ alias: normalize_alias(config.resolve?.alias || {}),
14
+ },
15
+ }))
16
+ );
17
+ }
18
+
19
+ /**
20
+ * Takes zero or more objects and returns a new object that has all the values
21
+ * deeply merged together. None of the original objects will be mutated at any
22
+ * level, and the returned object will have no references to the original
23
+ * objects at any depth. If there's a conflict the last one wins, except for
24
+ * arrays which will be combined.
25
+ * @param {...Object} objects
26
+ * @returns {Record<string, any>} the merged object
27
+ */
28
+ function deep_merge(...objects) {
29
+ const result = {};
30
+ /** @type {string[]} */
31
+ objects.forEach((o) => merge_into(result, o));
32
+ return result;
33
+ }
34
+
35
+ /**
36
+ * normalize kit.vite.resolve.alias as an array
37
+ * @param {import('vite').AliasOptions} o
38
+ * @returns {import('vite').Alias[]}
39
+ */
40
+ function normalize_alias(o) {
41
+ if (Array.isArray(o)) return o;
42
+ return Object.entries(o).map(([find, replacement]) => ({
43
+ find,
44
+ replacement,
45
+ }));
46
+ }
47
+
48
+ /**
49
+ * Merges b into a, recursively, mutating a.
50
+ * @param {Record<string, any>} a
51
+ * @param {Record<string, any>} b
52
+ */
53
+ function merge_into(a, b) {
54
+ /**
55
+ * Checks for "plain old Javascript object", typically made as an object
56
+ * literal. Excludes Arrays and built-in types like Buffer.
57
+ * @param {any} x
58
+ */
59
+ const is_plain_object = (x) =>
60
+ typeof x === "object" && x.constructor === Object;
61
+
62
+ for (const prop in b) {
63
+ if (is_plain_object(b[prop])) {
64
+ if (!is_plain_object(a[prop])) {
65
+ a[prop] = {};
66
+ }
67
+ merge_into(a[prop], b[prop]);
68
+ } else if (Array.isArray(b[prop])) {
69
+ if (!Array.isArray(a[prop])) {
70
+ a[prop] = [];
71
+ }
72
+ a[prop].push(...b[prop]);
73
+ } else {
74
+ a[prop] = b[prop];
75
+ }
76
+ }
77
+ }
@@ -224,8 +224,11 @@ function htmlSanitize(str, type) {
224
224
  );
225
225
  }
226
226
 
227
- const parseHeader = (title, path) =>
228
- `-- ${title.replace("-", " ")} --------------- ${path}`;
227
+ function parseHeader(title, path) {
228
+ return `-- ${(title || "ERROR").replace("-", " ")} --------------- ${
229
+ path || ""
230
+ }`;
231
+ }
229
232
 
230
233
  /*
231
234
  |-------------------------------------------------------------------------------
@@ -253,6 +256,14 @@ const parseConsoleErrors =
253
256
  * */
254
257
  (info) => {
255
258
  if (info.rule) {
259
+ if (info.details) {
260
+ return joinMessage(
261
+ info.details.reduce(consoleMsg, {
262
+ error: [consoleHeader(info.rule, path)],
263
+ style: [styleColor("blue")],
264
+ })
265
+ );
266
+ }
256
267
  return joinMessage(
257
268
  info.formatted.reduce(consoleMsg, {
258
269
  error: [consoleHeader(info.rule, path)],
@@ -313,6 +324,9 @@ const parseHtmlErrors = (path) => (info) => {
313
324
  if (info.rule) {
314
325
  return info.formatted.reduce(htmlMsg, htmlHeader(info.rule, path));
315
326
  } else {
327
+ if (info.details) {
328
+ return info.details.reduce(htmlMsg, htmlHeader(info.title, path));
329
+ }
316
330
  return info.message.reduce(htmlMsg, htmlHeader(info.title, path));
317
331
  }
318
332
  };
@@ -1,15 +1,15 @@
1
1
  module Api exposing (routes)
2
2
 
3
3
  import ApiRoute exposing (ApiRoute)
4
- import DataSource exposing (DataSource)
4
+ import BackendTask exposing (BackendTask)
5
5
  import Html exposing (Html)
6
6
  import Pages.Manifest as Manifest
7
7
  import Route exposing (Route)
8
8
 
9
9
 
10
10
  routes :
11
- DataSource (List Route)
12
- -> (Html Never -> String)
11
+ BackendTask (List Route)
12
+ -> (Maybe { indent : Int, newLines : Bool } -> Html Never -> String)
13
13
  -> List (ApiRoute ApiRoute.Response)
14
14
  routes getStaticRoutes htmlToString =
15
15
  []
@@ -1,6 +1,6 @@
1
1
  module Route.Index exposing (Data, Model, Msg, route)
2
2
 
3
- import DataSource exposing (DataSource)
3
+ import BackendTask exposing (BackendTask)
4
4
  import Head
5
5
  import Head.Seo as Seo
6
6
  import Html
@@ -38,9 +38,9 @@ route =
38
38
  |> RouteBuilder.buildNoState { view = view }
39
39
 
40
40
 
41
- data : DataSource Data
41
+ data : BackendTask Data
42
42
  data =
43
- DataSource.succeed Data
43
+ BackendTask.succeed Data
44
44
 
45
45
 
46
46
  head :
@@ -1,7 +1,7 @@
1
1
  module Shared exposing (Data, Model, Msg(..), SharedMsg(..), template)
2
2
 
3
3
  import Browser.Navigation
4
- import DataSource
4
+ import BackendTask
5
5
  import Html exposing (Html)
6
6
  import Html.Events
7
7
  import Pages.Flags
@@ -76,9 +76,9 @@ subscriptions _ _ =
76
76
  Sub.none
77
77
 
78
78
 
79
- data : DataSource.DataSource Data
79
+ data : BackendTask.BackendTask Data
80
80
  data =
81
- DataSource.succeed ()
81
+ BackendTask.succeed ()
82
82
 
83
83
 
84
84
  view :
@@ -1,6 +1,6 @@
1
1
  module Site exposing (config)
2
2
 
3
- import DataSource exposing (DataSource)
3
+ import BackendTask exposing (BackendTask)
4
4
  import Head
5
5
  import SiteConfig exposing (SiteConfig)
6
6
 
@@ -12,8 +12,13 @@ config =
12
12
  }
13
13
 
14
14
 
15
- head : DataSource (List Head.Tag)
15
+ head : BackendTask (List Head.Tag)
16
16
  head =
17
- [ Head.sitemapLink "/sitemap.xml"
17
+ [ Head.metaName "viewport" (Head.raw "width=device-width,initial-scale=1")
18
+ , Head.metaName "mobile-web-app-capable" (Head.raw "yes")
19
+ , Head.metaName "theme-color" (Head.raw "#ffffff")
20
+ , Head.metaName "apple-mobile-web-app-capable" (Head.raw "yes")
21
+ , Head.metaName "apple-mobile-web-app-status-bar-style" (Head.raw "black-translucent")
22
+ , Head.sitemapLink "/sitemap.xml"
18
23
  ]
19
- |> DataSource.succeed
24
+ |> BackendTask.succeed
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "elm-pages",
3
- "version": "3.0.0-beta.2",
3
+ "type": "module",
4
+ "version": "3.0.0-beta.20",
4
5
  "homepage": "https://elm-pages.com",
5
6
  "moduleResolution": "node",
6
7
  "description": "Type-safe static sites, written in pure elm with your own custom elm-markup syntax.",
@@ -10,8 +11,7 @@
10
11
  "test": "./test.sh",
11
12
  "test:snapshot": "(cd examples/escaping && npm install && npm test) && (cd examples/base-path && npm install && npm test)",
12
13
  "cypress": "npm start & cypress run",
13
- "prepare": "npm run build:generator",
14
- "build:generator": "elm-codegen install && (cd codegen && lamdera make Generate.elm --output elm-pages-codegen.js)",
14
+ "build:generator": "elm-codegen install && (cd codegen && lamdera make Generate.elm --output elm-pages-codegen.js && mv elm-pages-codegen.js elm-pages-codegen.cjs)",
15
15
  "review": "elm-review"
16
16
  },
17
17
  "repository": "https://github.com/dillonkearns/elm-pages",
@@ -27,51 +27,51 @@
27
27
  "dependencies": {
28
28
  "busboy": "^1.0.0",
29
29
  "chokidar": "^3.5.3",
30
- "commander": "^9.4.0",
30
+ "commander": "^10.0.0",
31
31
  "connect": "^3.7.0",
32
32
  "cookie-signature": "^1.1.0",
33
33
  "cross-spawn": "7.0.3",
34
34
  "devcert": "^1.2.2",
35
35
  "elm-doc-preview": "^5.0.5",
36
36
  "elm-hot": "^1.1.6",
37
- "esbuild": "^0.15.5",
38
- "fs-extra": "^10.1.0",
39
- "globby": "11.0.4",
37
+ "esbuild": "^0.17.5",
38
+ "fs-extra": "^11.1.0",
39
+ "globby": "^13.1.3",
40
40
  "gray-matter": "^4.0.3",
41
41
  "jsesc": "^3.0.2",
42
42
  "kleur": "^4.1.5",
43
+ "make-fetch-happen": "^11.0.2",
43
44
  "memfs": "^3.4.7",
44
45
  "micromatch": "^4.0.5",
45
- "node-fetch": "^2.6.7",
46
- "object-hash": "^2.2.0",
47
46
  "serve-static": "^1.15.0",
48
- "terser": "^5.14.2",
49
- "vite": "^3.0.9",
50
- "which": "^2.0.2"
47
+ "terser": "^5.16.1",
48
+ "vite": "^4.0.4",
49
+ "which": "^3.0.0"
51
50
  },
52
51
  "devDependencies": {
53
52
  "@types/cross-spawn": "^6.0.2",
54
53
  "@types/fs-extra": "^9.0.13",
54
+ "@types/make-fetch-happen": "^10.0.1",
55
55
  "@types/micromatch": "^4.0.2",
56
- "@types/node": "12.20.12",
56
+ "@types/node": "^18.11.9",
57
57
  "@types/serve-static": "^1.15.0",
58
- "cypress": "^10.6.0",
58
+ "cypress": "^12.4.0",
59
59
  "elm-codegen": "^0.2.0",
60
- "elm-optimize-level-2": "^0.1.5",
61
- "elm-review": "^2.7.4",
62
- "elm-test": "^0.19.1-revision9",
63
- "elm-tooling": "^1.8.0",
60
+ "elm-optimize-level-2": "^0.3.5",
61
+ "elm-review": "^2.8.2",
62
+ "elm-test": "^0.19.1-revision11",
63
+ "elm-tooling": "^1.11.0",
64
64
  "elm-verify-examples": "^5.2.0",
65
65
  "elmi-to-json": "^1.2.0",
66
- "mocha": "^10.0.0",
67
- "typescript": "^4.7.4"
66
+ "mocha": "^10.2.0",
67
+ "typescript": "^4.9.3"
68
68
  },
69
69
  "files": [
70
70
  "generator/src/",
71
71
  "generator/review/",
72
72
  "generator/dead-code-review/",
73
73
  "src/",
74
- "codegen/elm-pages-codegen.js",
74
+ "codegen/elm-pages-codegen.cjs",
75
75
  "generator/template/",
76
76
  "generator/static-code/"
77
77
  ],