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
@@ -12,7 +12,111 @@ all =
12
12
  \() ->
13
13
  """module Route.Index exposing (Data, Model, Msg, route)
14
14
 
15
- import DataSource exposing (DataSource)
15
+ import Server.Request as Request
16
+
17
+ import BackendTask exposing (BackendTask)
18
+ import FatalError
19
+ import RouteBuilder exposing (Page, StaticPayload, single)
20
+ import Pages.PageUrl exposing (PageUrl)
21
+ import Pages.Url
22
+ import Path
23
+ import Route exposing (Route)
24
+ import Shared
25
+ import View exposing (View)
26
+
27
+
28
+ type alias Model =
29
+ {}
30
+
31
+
32
+ type alias Msg =
33
+ ()
34
+
35
+
36
+ type alias RouteParams =
37
+ {}
38
+
39
+
40
+ type alias Data =
41
+ ()
42
+
43
+
44
+ route : StatelessRoute RouteParams Data ActionData
45
+ route =
46
+ single
47
+ { head = head
48
+ , data = data
49
+ }
50
+ |> RouteBuilder.buildNoState { view = view }
51
+
52
+
53
+ data : BackendTask Data
54
+ data =
55
+ BackendTask.succeed ()
56
+ """
57
+ |> Review.Test.run rule
58
+ |> Review.Test.expectErrors
59
+ [ Review.Test.error
60
+ { message = "Codemod"
61
+ , details =
62
+ [ "" ]
63
+ , under =
64
+ """data = data
65
+ }"""
66
+ }
67
+ |> Review.Test.whenFixed
68
+ """module Route.Index exposing (Data, Model, Msg, route)
69
+
70
+ import Server.Request as Request
71
+
72
+ import BackendTask exposing (BackendTask)
73
+ import FatalError
74
+ import RouteBuilder exposing (Page, StaticPayload, single)
75
+ import Pages.PageUrl exposing (PageUrl)
76
+ import Pages.Url
77
+ import Path
78
+ import Route exposing (Route)
79
+ import Shared
80
+ import View exposing (View)
81
+
82
+
83
+ type alias Model =
84
+ {}
85
+
86
+
87
+ type alias Msg =
88
+ ()
89
+
90
+
91
+ type alias RouteParams =
92
+ {}
93
+
94
+
95
+ type alias Data =
96
+ ()
97
+
98
+
99
+ route : StatelessRoute RouteParams Data ActionData
100
+ route =
101
+ single
102
+ { head = head
103
+ , data = BackendTask.fail (FatalError.fromString "")
104
+ }
105
+ |> RouteBuilder.buildNoState { view = view }
106
+
107
+
108
+ data : BackendTask Data
109
+ data =
110
+ BackendTask.succeed ()
111
+ """
112
+ ]
113
+ , test "supports aliased BackendTask module import" <|
114
+ \() ->
115
+ """module Route.Index exposing (Data, Model, Msg, route)
116
+
117
+ import Server.Request as Request
118
+ import FatalError
119
+ import BackendTask as DS
16
120
  import RouteBuilder exposing (Page, StaticPayload, single)
17
121
  import Pages.PageUrl exposing (PageUrl)
18
122
  import Pages.Url
@@ -47,9 +151,9 @@ route =
47
151
  |> RouteBuilder.buildNoState { view = view }
48
152
 
49
153
 
50
- data : DataSource Data
154
+ data : BackendTask Data
51
155
  data =
52
- DataSource.succeed ()
156
+ BackendTask.succeed ()
53
157
  """
54
158
  |> Review.Test.run rule
55
159
  |> Review.Test.expectErrors
@@ -64,7 +168,9 @@ data =
64
168
  |> Review.Test.whenFixed
65
169
  """module Route.Index exposing (Data, Model, Msg, route)
66
170
 
67
- import DataSource exposing (DataSource)
171
+ import Server.Request as Request
172
+ import FatalError
173
+ import BackendTask as DS
68
174
  import RouteBuilder exposing (Page, StaticPayload, single)
69
175
  import Pages.PageUrl exposing (PageUrl)
70
176
  import Pages.Url
@@ -94,21 +200,24 @@ route : StatelessRoute RouteParams Data ActionData
94
200
  route =
95
201
  single
96
202
  { head = head
97
- , data = DataSource.fail ""
203
+ , data = DS.fail (FatalError.fromString "")
98
204
  }
99
205
  |> RouteBuilder.buildNoState { view = view }
100
206
 
101
207
 
102
- data : DataSource Data
208
+ data : BackendTask Data
103
209
  data =
104
- DataSource.succeed ()
210
+ BackendTask.succeed ()
105
211
  """
106
212
  ]
107
213
  , test "replaces data record setter with non-empty RouteParams" <|
108
214
  \() ->
109
215
  """module Route.Blog.Slug_ exposing (Data, Model, Msg, route)
110
216
 
111
- import DataSource exposing (DataSource)
217
+ import Server.Request as Request
218
+
219
+ import BackendTask exposing (BackendTask)
220
+ import FatalError
112
221
  import RouteBuilder exposing (Page, StaticPayload)
113
222
  import Pages.PageUrl exposing (PageUrl)
114
223
  import Pages.Url
@@ -144,9 +253,9 @@ route =
144
253
  |> RouteBuilder.buildNoState { view = view }
145
254
 
146
255
 
147
- data : DataSource Data
256
+ data : BackendTask Data
148
257
  data =
149
- DataSource.succeed ()
258
+ BackendTask.succeed ()
150
259
  """
151
260
  |> Review.Test.run rule
152
261
  |> Review.Test.expectErrors
@@ -160,7 +269,10 @@ data =
160
269
  |> Review.Test.whenFixed
161
270
  """module Route.Blog.Slug_ exposing (Data, Model, Msg, route)
162
271
 
163
- import DataSource exposing (DataSource)
272
+ import Server.Request as Request
273
+
274
+ import BackendTask exposing (BackendTask)
275
+ import FatalError
164
276
  import RouteBuilder exposing (Page, StaticPayload)
165
277
  import Pages.PageUrl exposing (PageUrl)
166
278
  import Pages.Url
@@ -189,22 +301,25 @@ type alias Data =
189
301
  route : StatelessRoute RouteParams Data ActionData
190
302
  route =
191
303
  RouteBuilder.preRender
192
- { data = \\_ -> DataSource.fail ""
304
+ { data = \\_ -> BackendTask.fail (FatalError.fromString "")
193
305
  , head = head
194
306
  , pages = pages
195
307
  }
196
308
  |> RouteBuilder.buildNoState { view = view }
197
309
 
198
310
 
199
- data : DataSource Data
311
+ data : BackendTask Data
200
312
  data =
201
- DataSource.succeed ()
313
+ BackendTask.succeed ()
202
314
  """
203
315
  ]
204
316
  , test "replaces data record setter with RouteBuilder.serverRendered" <|
205
317
  \() ->
206
318
  """module Route.Login exposing (Data, Model, Msg, route)
207
319
 
320
+ import Server.Request as Request
321
+ import FatalError
322
+
208
323
  type alias Model =
209
324
  {}
210
325
 
@@ -239,6 +354,9 @@ route =
239
354
  |> Review.Test.whenFixed
240
355
  """module Route.Login exposing (Data, Model, Msg, route)
241
356
 
357
+ import Server.Request as Request
358
+ import FatalError
359
+
242
360
  type alias Model =
243
361
  {}
244
362
 
@@ -271,6 +389,9 @@ route =
271
389
  |> Review.Test.whenFixed
272
390
  """module Route.Login exposing (Data, Model, Msg, route)
273
391
 
392
+ import Server.Request as Request
393
+ import FatalError
394
+
274
395
  type alias Model =
275
396
  {}
276
397
 
@@ -291,12 +412,116 @@ route =
291
412
  , action = \\_ -> Request.oneOf []
292
413
  }
293
414
  |> RouteBuilder.buildNoState { view = view }
415
+ """
416
+ ]
417
+ , test "uses appropriate import alias for Server.Request module" <|
418
+ \() ->
419
+ """module Route.Login exposing (Data, Model, Msg, route)
420
+
421
+ import Server.Request
422
+ import FatalError
423
+
424
+ type alias Model =
425
+ {}
426
+
427
+
428
+ type alias Msg =
429
+ ()
430
+
431
+
432
+ type alias RouteParams =
433
+ {}
434
+
435
+
436
+ route : StatelessRoute RouteParams Data ActionData
437
+ route =
438
+ RouteBuilder.serverRender
439
+ { head = head
440
+ , data = data
441
+ , action = action
442
+ }
443
+ |> RouteBuilder.buildNoState { view = view }
444
+ """
445
+ |> Review.Test.run rule
446
+ |> Review.Test.expectErrors
447
+ [ Review.Test.error
448
+ { message = "Codemod"
449
+ , details =
450
+ [ "" ]
451
+ , under =
452
+ """data = data
453
+ ,"""
454
+ }
455
+ |> Review.Test.whenFixed
456
+ """module Route.Login exposing (Data, Model, Msg, route)
457
+
458
+ import Server.Request
459
+ import FatalError
460
+
461
+ type alias Model =
462
+ {}
463
+
464
+
465
+ type alias Msg =
466
+ ()
467
+
468
+
469
+ type alias RouteParams =
470
+ {}
471
+
472
+
473
+ route : StatelessRoute RouteParams Data ActionData
474
+ route =
475
+ RouteBuilder.serverRender
476
+ { head = head
477
+ , data = \\_ -> Server.Request.oneOf []
478
+ , action = action
479
+ }
480
+ |> RouteBuilder.buildNoState { view = view }
481
+ """
482
+ , Review.Test.error
483
+ { message = "Codemod"
484
+ , details =
485
+ [ "" ]
486
+ , under =
487
+ """action = action
488
+ }"""
489
+ }
490
+ |> Review.Test.whenFixed
491
+ """module Route.Login exposing (Data, Model, Msg, route)
492
+
493
+ import Server.Request
494
+ import FatalError
495
+
496
+ type alias Model =
497
+ {}
498
+
499
+
500
+ type alias Msg =
501
+ ()
502
+
503
+
504
+ type alias RouteParams =
505
+ {}
506
+
507
+
508
+ route : StatelessRoute RouteParams Data ActionData
509
+ route =
510
+ RouteBuilder.serverRender
511
+ { head = head
512
+ , data = data
513
+ , action = \\_ -> Server.Request.oneOf []
514
+ }
515
+ |> RouteBuilder.buildNoState { view = view }
294
516
  """
295
517
  ]
296
518
  , test "no Request.oneOf fix after replacement is made" <|
297
519
  \() ->
298
520
  """module Route.Login exposing (Data, Model, Msg, route)
299
521
 
522
+ import Server.Request as Request
523
+ import FatalError
524
+
300
525
  type alias Model =
301
526
  {}
302
527
 
@@ -323,7 +548,10 @@ route =
323
548
  \() ->
324
549
  """module Route.Index exposing (Data, Model, Msg, route)
325
550
 
326
- import DataSource exposing (DataSource)
551
+ import Server.Request as Request
552
+ import FatalError
553
+
554
+ import BackendTask exposing (BackendTask)
327
555
  import RouteBuilder exposing (Page, StaticPayload)
328
556
  import Pages.PageUrl exposing (PageUrl)
329
557
  import Pages.Url
@@ -353,14 +581,14 @@ route : StatelessRoute RouteParams Data ActionData
353
581
  route =
354
582
  RouteBuilder.single
355
583
  { head = head
356
- , data = DataSource.fail ""
584
+ , data = BackendTask.fail (FatalError.fromString "")
357
585
  }
358
586
  |> RouteBuilder.buildNoState { view = view }
359
587
 
360
588
 
361
- data : DataSource Data
589
+ data : BackendTask Data
362
590
  data =
363
- DataSource.succeed ()
591
+ BackendTask.succeed ()
364
592
  """
365
593
  |> Review.Test.run rule
366
594
  |> Review.Test.expectNoErrors
@@ -368,8 +596,11 @@ data =
368
596
  \() ->
369
597
  """module Shared exposing (Data, Model, Msg, template)
370
598
 
599
+ import Server.Request as Request
600
+ import FatalError
601
+
371
602
  import Browser.Navigation
372
- import DataSource
603
+ import BackendTask
373
604
  import Html exposing (Html)
374
605
  import Html.Styled
375
606
  import Pages.Flags
@@ -416,8 +647,11 @@ type alias Model =
416
647
  |> Review.Test.whenFixed
417
648
  """module Shared exposing (Data, Model, Msg, template)
418
649
 
650
+ import Server.Request as Request
651
+ import FatalError
652
+
419
653
  import Browser.Navigation
420
- import DataSource
654
+ import BackendTask
421
655
  import Html exposing (Html)
422
656
  import Html.Styled
423
657
  import Pages.Flags
@@ -435,7 +669,7 @@ template =
435
669
  { init = init
436
670
  , update = update
437
671
  , view = view
438
- , data = DataSource.fail ""
672
+ , data = BackendTask.fail (FatalError.fromString "")
439
673
  , subscriptions = subscriptions
440
674
  , onPageChange = Just OnPageChange
441
675
  }
@@ -1 +1 @@
1
- {"type":"application","source-directories":["../../src","../../tests","../../../../src","src"],"elm-version":"0.19.1","dependencies":{"direct":{"elm/core":"1.0.5","elm/html":"1.0.0","elm/json":"1.1.3","elm/regex":"1.0.0","elm-community/result-extra":"2.4.0","elm-explorations/test":"1.2.2","jfmengels/elm-review":"2.4.2","mdgriffith/elm-codegen":"2.0.0","mpizenberg/elm-test-runner":"5.0.0","stil4m/elm-syntax":"7.2.5","the-sett/elm-syntax-dsl":"6.0.2"},"indirect":{"Chadtech/elm-bool-extra":"2.4.2","elm/parser":"1.1.0","elm/project-metadata-utils":"1.0.2","elm/random":"1.0.0","elm/time":"1.0.0","elm/virtual-dom":"1.0.3","elm-community/basics-extra":"4.1.0","elm-community/list-extra":"8.6.0","elm-community/maybe-extra":"5.3.0","miniBill/elm-unicode":"1.0.2","rtfeldman/elm-hex":"1.0.0","stil4m/structured-writer":"1.0.3","the-sett/elm-pretty-printer":"3.0.0"}},"test-dependencies":{"direct":{},"indirect":{}}}
1
+ {"type":"application","source-directories":["../../src","../../tests","../../../../src","src"],"elm-version":"0.19.1","dependencies":{"direct":{"elm/core":"1.0.5","elm/html":"1.0.0","elm/json":"1.1.3","elm/regex":"1.0.0","elm-explorations/test":"2.1.0","jfmengels/elm-review":"2.10.0","mdgriffith/elm-codegen":"2.0.0","mpizenberg/elm-test-runner":"6.0.0","stil4m/elm-syntax":"7.2.9","the-sett/elm-syntax-dsl":"6.0.2"},"indirect":{"Chadtech/elm-bool-extra":"2.4.2","elm/bytes":"1.0.8","elm/parser":"1.1.0","elm/project-metadata-utils":"1.0.2","elm/random":"1.0.0","elm/time":"1.0.0","elm/virtual-dom":"1.0.3","elm-community/basics-extra":"4.1.0","elm-community/list-extra":"8.7.0","elm-community/maybe-extra":"5.3.0","miniBill/elm-unicode":"1.0.3","rtfeldman/elm-hex":"1.0.0","stil4m/structured-writer":"1.0.3","the-sett/elm-pretty-printer":"3.0.0"}},"test-dependencies":{"direct":{},"indirect":{}}}