elm-pages 2.1.11 → 3.0.0-beta.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 (161) hide show
  1. package/codegen/elm-pages-codegen.js +38507 -0
  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/Pages-Review-DeadCodeEliminateData.elmo +0 -0
  4. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmi +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/Reporter.elmi +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmo +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmi +0 -0
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmo +0 -0
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  12. package/generator/{template/public/style.css → dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/lock} +0 -0
  13. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  14. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -0
  15. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +6795 -0
  16. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25651 -0
  17. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +110 -0
  18. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +187 -0
  19. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/package.json +1 -0
  20. package/generator/dead-code-review/elm-stuff/tests-0.19.1/src/Reporter.elm +26 -0
  21. package/generator/dead-code-review/elm-stuff/tests-0.19.1/src/Runner.elm +62 -0
  22. package/generator/dead-code-review/elm.json +35 -0
  23. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +181 -0
  24. package/generator/dead-code-review/src/ReviewConfig.elm +9 -0
  25. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +455 -0
  26. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  27. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
  28. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  29. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
  30. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolationsTest.elmi +0 -0
  31. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolationsTest.elmo +0 -0
  32. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmi +0 -0
  33. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmo +0 -0
  34. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmi +0 -0
  35. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmo +0 -0
  36. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  37. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  38. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/lock +0 -0
  39. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  40. package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -0
  41. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +6795 -0
  42. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +27617 -0
  43. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +110 -0
  44. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +187 -0
  45. package/generator/review/elm-stuff/tests-0.19.1/js/package.json +1 -0
  46. package/generator/review/elm-stuff/tests-0.19.1/src/Reporter.elm +26 -0
  47. package/generator/review/elm-stuff/tests-0.19.1/src/Runner.elm +62 -0
  48. package/generator/review/elm.json +13 -4
  49. package/{src → generator/review/src}/Pages/Review/NoContractViolations.elm +148 -148
  50. package/generator/review/tests/Pages/Review/NoContractViolationsTest.elm +331 -0
  51. package/generator/src/RouteBuilder.elm +420 -0
  52. package/generator/src/SharedTemplate.elm +4 -5
  53. package/generator/src/SiteConfig.elm +3 -9
  54. package/generator/src/build.js +308 -95
  55. package/generator/src/cli.js +103 -8
  56. package/generator/src/codegen.js +192 -35
  57. package/generator/src/compile-elm.js +183 -31
  58. package/generator/src/dev-server.js +353 -96
  59. package/generator/src/elm-application.json +3 -1
  60. package/generator/src/elm-codegen.js +34 -0
  61. package/generator/src/elm-file-constants.js +2 -0
  62. package/generator/src/error-formatter.js +20 -1
  63. package/generator/src/generate-template-module-connector.js +125 -927
  64. package/generator/src/hello.ts +5 -0
  65. package/generator/src/pre-render-html.js +58 -104
  66. package/generator/src/render-worker.js +27 -13
  67. package/generator/src/render.js +252 -197
  68. package/generator/src/request-cache-fs.js +18 -0
  69. package/generator/src/request-cache.js +128 -56
  70. package/generator/src/rewrite-client-elm-json.js +49 -0
  71. package/generator/src/route-codegen-helpers.js +62 -1
  72. package/generator/static-code/dev-style.css +22 -0
  73. package/generator/static-code/elm-pages.js +43 -39
  74. package/generator/static-code/hmr.js +98 -88
  75. package/generator/template/app/Api.elm +25 -0
  76. package/generator/template/app/ErrorPage.elm +38 -0
  77. package/generator/template/app/Route/Index.elm +87 -0
  78. package/generator/template/{src → app}/Shared.elm +34 -13
  79. package/generator/template/app/Site.elm +19 -0
  80. package/generator/template/{src → app}/View.elm +0 -0
  81. package/generator/template/elm-pages.config.mjs +5 -0
  82. package/generator/template/elm.json +1 -0
  83. package/generator/template/{public/index.js → index.ts} +7 -3
  84. package/generator/template/package.json +4 -4
  85. package/generator/template/public/favicon.ico +0 -0
  86. package/generator/template/public/images/icon-png.png +0 -0
  87. package/generator/template/src/.gitkeep +0 -0
  88. package/generator/template/style.css +4 -0
  89. package/package.json +33 -23
  90. package/src/ApiRoute.elm +176 -43
  91. package/src/BuildError.elm +10 -1
  92. package/src/CookieParser.elm +84 -0
  93. package/src/DataSource/Env.elm +38 -0
  94. package/src/DataSource/File.elm +27 -16
  95. package/src/DataSource/Glob.elm +126 -80
  96. package/src/DataSource/Http.elm +283 -304
  97. package/src/DataSource/Internal/Glob.elm +5 -21
  98. package/src/DataSource/Internal/Request.elm +25 -0
  99. package/src/DataSource/Port.elm +17 -14
  100. package/src/DataSource.elm +55 -318
  101. package/src/Form/Field.elm +717 -0
  102. package/src/Form/FieldStatus.elm +36 -0
  103. package/src/Form/FieldView.elm +417 -0
  104. package/src/Form/FormData.elm +22 -0
  105. package/src/Form/Validation.elm +391 -0
  106. package/src/Form/Value.elm +118 -0
  107. package/src/Form.elm +1683 -0
  108. package/src/FormData.elm +58 -0
  109. package/src/FormDecoder.elm +102 -0
  110. package/src/Head/Seo.elm +12 -4
  111. package/src/Head.elm +12 -2
  112. package/src/HtmlPrinter.elm +1 -1
  113. package/src/Internal/ApiRoute.elm +17 -4
  114. package/src/Internal/Request.elm +7 -0
  115. package/src/PageServerResponse.elm +68 -0
  116. package/src/Pages/ContentCache.elm +1 -229
  117. package/src/Pages/Fetcher.elm +58 -0
  118. package/src/Pages/FormState.elm +256 -0
  119. package/src/Pages/Generate.elm +800 -0
  120. package/src/Pages/Internal/Form.elm +17 -0
  121. package/src/Pages/Internal/NotFoundReason.elm +3 -55
  122. package/src/Pages/Internal/Platform/Cli.elm +777 -579
  123. package/src/Pages/Internal/Platform/Effect.elm +5 -5
  124. package/src/Pages/Internal/Platform/StaticResponses.elm +178 -394
  125. package/src/Pages/Internal/Platform/ToJsPayload.elm +24 -23
  126. package/src/Pages/Internal/Platform.elm +1244 -504
  127. package/src/Pages/Internal/ResponseSketch.elm +19 -0
  128. package/src/Pages/Internal/RoutePattern.elm +596 -45
  129. package/src/Pages/Manifest.elm +26 -0
  130. package/src/Pages/Msg.elm +79 -0
  131. package/src/Pages/ProgramConfig.elm +67 -14
  132. package/src/Pages/SiteConfig.elm +3 -6
  133. package/src/Pages/StaticHttp/Request.elm +4 -2
  134. package/src/Pages/StaticHttpRequest.elm +50 -215
  135. package/src/Pages/Transition.elm +70 -0
  136. package/src/Path.elm +1 -0
  137. package/src/Pattern.elm +98 -0
  138. package/src/RenderRequest.elm +2 -2
  139. package/src/RequestsAndPending.elm +111 -9
  140. package/src/Server/Request.elm +1253 -0
  141. package/src/Server/Response.elm +292 -0
  142. package/src/Server/Session.elm +316 -0
  143. package/src/Server/SetCookie.elm +169 -0
  144. package/src/TerminalText.elm +1 -1
  145. package/src/Test/Html/Internal/ElmHtml/Markdown.elm +0 -1
  146. package/src/Test/Html/Internal/ElmHtml/ToString.elm +1 -1
  147. package/generator/src/Page.elm +0 -359
  148. package/generator/src/codegen-template-module.js +0 -183
  149. package/generator/src/elm-pages-js-minified.js +0 -1
  150. package/generator/template/src/Api.elm +0 -14
  151. package/generator/template/src/Page/Index.elm +0 -69
  152. package/generator/template/src/Site.elm +0 -41
  153. package/src/DataSource/ServerRequest.elm +0 -60
  154. package/src/Internal/OptimizedDecoder.elm +0 -18
  155. package/src/KeepOrDiscard.elm +0 -6
  156. package/src/OptimizedDecoder/Pipeline.elm +0 -335
  157. package/src/OptimizedDecoder.elm +0 -818
  158. package/src/Pages/Internal/ApplicationType.elm +0 -6
  159. package/src/Pages/Secrets.elm +0 -83
  160. package/src/Secrets.elm +0 -111
  161. package/src/SecretsDict.elm +0 -45
@@ -0,0 +1,331 @@
1
+ module Pages.Review.NoContractViolationsTest exposing (all)
2
+
3
+ import Pages.Review.NoContractViolations exposing (rule)
4
+ import Review.Test
5
+ import Test exposing (Test, describe, test)
6
+
7
+
8
+ all : Test
9
+ all =
10
+ describe "Pages.Review.NoContractViolations"
11
+ [ test "reports error when missing exposed declaration" <|
12
+ \() ->
13
+ """module Route.Blog.Slug_ exposing (ActionData, Data, Msg, route)
14
+
15
+ a = 1
16
+ """
17
+ |> testRouteModule
18
+ |> Review.Test.expectErrorsForModules
19
+ [ ( "Route.Blog.Slug_"
20
+ , [ Review.Test.error
21
+ { message = "Unexposed Declaration in Route Module"
22
+ , details =
23
+ [ """Route Modules need to expose the following values:
24
+
25
+ - route
26
+ - Data
27
+ - ActionData
28
+ - Model
29
+ - Msg
30
+
31
+ But it is not exposing: Model"""
32
+ ]
33
+ , under = "exposing (ActionData, Data, Msg, route)"
34
+ }
35
+ ]
36
+ )
37
+ ]
38
+ , test "reports RouteParams mismatch" <|
39
+ \() ->
40
+ """module Route.Blog.Slug_ exposing (ActionData, Data, route, Model, Msg)
41
+
42
+ type alias RouteParams = { blogPostName : String }
43
+
44
+ route = {}
45
+ """
46
+ |> testRouteModule
47
+ |> Review.Test.expectErrorsForModules
48
+ [ ( "Route.Blog.Slug_"
49
+ , [ Review.Test.error
50
+ { message = "RouteParams don't match Route Module name"
51
+ , details =
52
+ [ """Expected
53
+
54
+ type alias RouteParams = { slug : String }
55
+ """
56
+ ]
57
+ , under = "{ blogPostName : String }"
58
+ }
59
+ ]
60
+ )
61
+ ]
62
+ , test "reports incorrect types for optional RouteParams" <|
63
+ \() ->
64
+ """module Route.Docs.Section_.SubSection__ exposing (ActionData, Data, route, Model, Msg)
65
+
66
+ type alias RouteParams = { section : String, subSection : String }
67
+
68
+ route = {}
69
+ """
70
+ |> testRouteModule
71
+ |> Review.Test.expectErrorsForModules
72
+ [ ( "Route.Docs.Section_.SubSection__"
73
+ , [ Review.Test.error
74
+ { message = "RouteParams don't match Route Module name"
75
+ , details =
76
+ [ """Expected
77
+
78
+ type alias RouteParams = { section : String, subSection : Maybe String }
79
+ """
80
+ ]
81
+ , under = "{ section : String, subSection : String }"
82
+ }
83
+ ]
84
+ )
85
+ ]
86
+ , test "reports incorrect types for required splat RouteParams" <|
87
+ \() ->
88
+ """module Route.Docs.Section_.SPLAT_ exposing (ActionData, Data, route, Model, Msg)
89
+
90
+ type alias RouteParams = { section : String, splat : List String }
91
+
92
+ route = {}
93
+ """
94
+ |> testRouteModule
95
+ |> Review.Test.expectErrorsForModules
96
+ [ ( "Route.Docs.Section_.SPLAT_"
97
+ , [ Review.Test.error
98
+ { message = "RouteParams don't match Route Module name"
99
+ , details =
100
+ [ """Expected
101
+
102
+ type alias RouteParams = { section : String, splat : ( String, List String ) }
103
+ """
104
+ ]
105
+ , under = "{ section : String, splat : List String }"
106
+ }
107
+ ]
108
+ )
109
+ ]
110
+ , test "no error for valid SPLAT_ RouteParams" <|
111
+ \() ->
112
+ """module Route.Docs.Section_.SPLAT_ exposing (ActionData, Data, route, Model, Msg)
113
+
114
+ type alias RouteParams = { section : String, splat : ( String, List String ) }
115
+
116
+ route = {}
117
+ """
118
+ |> testRouteModule
119
+ |> Review.Test.expectNoErrors
120
+ , test "no error for valid SPLAT__ RouteParams" <|
121
+ \() ->
122
+ """module Route.Docs.Section_.SPLAT__ exposing (ActionData, Data, route, Model, Msg)
123
+
124
+ type alias RouteParams = { section : String, splat : List String }
125
+
126
+ route = {}
127
+ """
128
+ |> testRouteModule
129
+ |> Review.Test.expectNoErrors
130
+ , test "no error for matching RouteParams name" <|
131
+ \() ->
132
+ """module Route.Blog.Slug_ exposing (ActionData, Data, route, Model, Msg)
133
+
134
+ type alias RouteParams = { slug : String }
135
+
136
+ route = {}
137
+ """
138
+ |> testRouteModule
139
+ |> Review.Test.expectNoErrors
140
+ , test "error when RouteParams type is not a record" <|
141
+ \() ->
142
+ """module Route.Blog.Slug_ exposing (ActionData, Data, route, Model, Msg)
143
+
144
+ type alias RouteParams = ()
145
+
146
+ route = {}
147
+ """
148
+ |> testRouteModule
149
+ |> Review.Test.expectErrorsForModules
150
+ [ ( "Route.Blog.Slug_"
151
+ , [ Review.Test.error
152
+ { message = "RouteParams must be a record type alias."
153
+ , details =
154
+ [ """Expected a record type alias."""
155
+ ]
156
+ , under = "()"
157
+ }
158
+ ]
159
+ )
160
+ ]
161
+ , test "no error for modules that don't start with Route prefix" <|
162
+ \() ->
163
+ """module NotRouteModule.Blog.Slug_ exposing (Model, Msg)
164
+
165
+ type alias RouteParams = ()
166
+
167
+ route = {}
168
+ """
169
+ |> testRouteModule
170
+ |> Review.Test.expectNoErrors
171
+ , test "error for missing application module definitions" <|
172
+ \() ->
173
+ [ """module Route.Index exposing (ActionData, Data, route, Model, Msg)
174
+
175
+ type alias RouteParams = {}
176
+
177
+ route = {}
178
+ """
179
+ , """module Site exposing (config)
180
+
181
+ config : SiteConfig
182
+ config =
183
+ { canonicalUrl = canonicalUrl
184
+ , head = head
185
+ }
186
+ """
187
+ ]
188
+ |> Review.Test.runOnModules rule
189
+ |> Review.Test.expectGlobalErrors
190
+ [ { message = "Missing core modules"
191
+ , details =
192
+ [ "Api"
193
+ , "Effect"
194
+ , "ErrorPage"
195
+ , "Shared"
196
+ , "View"
197
+ ]
198
+ }
199
+ ]
200
+ , test "no error when all core modules are defined" <|
201
+ \() ->
202
+ ("""module Route.Index exposing (ActionData, Data, route, Model, Msg)
203
+
204
+ type alias RouteParams = {}
205
+
206
+ route = {}
207
+ """
208
+ :: validCoreModules
209
+ )
210
+ |> Review.Test.runOnModules rule
211
+ |> Review.Test.expectNoErrors
212
+ , test "show missing exposed values from core modules" <|
213
+ \() ->
214
+ [ """module Route.Index exposing (ActionData, Data, route, Model, Msg)
215
+
216
+ type alias RouteParams = {}
217
+
218
+ route = {}
219
+ """
220
+ , """module Api exposing (invalid)
221
+ invalid = Debug.todo ""
222
+ """
223
+ , """module Effect exposing (invalid)
224
+ invalid = Debug.todo ""
225
+ """
226
+ , """module ErrorPage exposing (invalid)
227
+ invalid = Debug.todo ""
228
+ """
229
+ , """module Shared exposing (invalid)
230
+ invalid = Debug.todo ""
231
+ """
232
+ , """module Site exposing (invalid)
233
+ invalid = Debug.todo ""
234
+ """
235
+ , """module View exposing (invalid)
236
+ invalid = Debug.todo ""
237
+ """
238
+ ]
239
+ |> Review.Test.runOnModules rule
240
+ |> Review.Test.expectErrorsForModules
241
+ [ ( "Api"
242
+ , [ Review.Test.error
243
+ { message = "A core elm-pages module needs to expose something"
244
+ , details =
245
+ [ "The Api module must expose `routes`"
246
+ ]
247
+ , under = "exposing (invalid)"
248
+ }
249
+ ]
250
+ )
251
+ , ( "Effect"
252
+ , [ Review.Test.error
253
+ { message = "A core elm-pages module needs to expose something"
254
+ , details =
255
+ [ "The Effect module must expose `Effect`, `batch`, `fromCmd`, `map`, `none`, `perform`"
256
+ ]
257
+ , under = "exposing (invalid)"
258
+ }
259
+ ]
260
+ )
261
+ , ( "ErrorPage"
262
+ , [ Review.Test.error
263
+ { message = "A core elm-pages module needs to expose something"
264
+ , details =
265
+ [ "The ErrorPage module must expose `ErrorPage`, `head`, `internalError`, `notFound`, `statusCode`, `view`"
266
+ ]
267
+ , under = "exposing (invalid)"
268
+ }
269
+ ]
270
+ )
271
+ , ( "Shared"
272
+ , [ Review.Test.error
273
+ { message = "A core elm-pages module needs to expose something"
274
+ , details =
275
+ [ "The Shared module must expose `Data`, `Model`, `Msg`, `template`"
276
+ ]
277
+ , under = "exposing (invalid)"
278
+ }
279
+ ]
280
+ )
281
+ , ( "Site"
282
+ , [ Review.Test.error
283
+ { message = "A core elm-pages module needs to expose something"
284
+ , details =
285
+ [ "The Site module must expose `config`"
286
+ ]
287
+ , under = "exposing (invalid)"
288
+ }
289
+ ]
290
+ )
291
+ , ( "View"
292
+ , [ Review.Test.error
293
+ { message = "A core elm-pages module needs to expose something"
294
+ , details =
295
+ [ "The View module must expose `View`, `map`"
296
+ ]
297
+ , under = "exposing (invalid)"
298
+ }
299
+ ]
300
+ )
301
+ ]
302
+ ]
303
+
304
+
305
+ testRouteModule : String -> Review.Test.ReviewResult
306
+ testRouteModule routeModule =
307
+ Review.Test.runOnModules rule
308
+ (routeModule :: validCoreModules)
309
+
310
+
311
+ validCoreModules : List String
312
+ validCoreModules =
313
+ [ """module Api exposing (routes)
314
+ routes = Debug.todo ""
315
+ """
316
+ , """module Effect exposing (Effect(..), batch, fromCmd, map, none, perform)
317
+ routes = Debug.todo ""
318
+ """
319
+ , """module ErrorPage exposing (ErrorPage(..), Model, Msg, head, internalError, notFound, statusCode, view)
320
+ routes = Debug.todo ""
321
+ """
322
+ , """module Shared exposing (Data, Model, Msg, template)
323
+ routes = Debug.todo ""
324
+ """
325
+ , """module Site exposing (config)
326
+ routes = Debug.todo ""
327
+ """
328
+ , """module View exposing (View, map)
329
+ routes = Debug.todo ""
330
+ """
331
+ ]