elm-pages 2.1.11 → 3.0.0-beta.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.
Files changed (136) hide show
  1. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
  2. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
  3. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
  4. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
  5. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolationsTest.elmi +0 -0
  6. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolationsTest.elmo +0 -0
  7. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmi +0 -0
  8. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Reporter.elmo +0 -0
  9. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmi +0 -0
  10. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Runner.elmo +0 -0
  11. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  12. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  13. package/generator/{template/public/style.css → review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/lock} +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/elm.json +1 -0
  16. package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +6795 -0
  17. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +27617 -0
  18. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +110 -0
  19. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +187 -0
  20. package/generator/review/elm-stuff/tests-0.19.1/js/package.json +1 -0
  21. package/generator/review/elm-stuff/tests-0.19.1/src/Reporter.elm +26 -0
  22. package/generator/review/elm-stuff/tests-0.19.1/src/Runner.elm +62 -0
  23. package/generator/review/elm.json +13 -4
  24. package/{src → generator/review/src}/Pages/Review/NoContractViolations.elm +148 -148
  25. package/generator/review/tests/Pages/Review/NoContractViolationsTest.elm +331 -0
  26. package/generator/src/RouteBuilder.elm +420 -0
  27. package/generator/src/SharedTemplate.elm +4 -5
  28. package/generator/src/SiteConfig.elm +3 -9
  29. package/generator/src/build.js +308 -95
  30. package/generator/src/cli.js +103 -8
  31. package/generator/src/codegen.js +192 -35
  32. package/generator/src/compile-elm.js +183 -31
  33. package/generator/src/dev-server.js +353 -96
  34. package/generator/src/elm-application.json +3 -1
  35. package/generator/src/elm-codegen.js +34 -0
  36. package/generator/src/elm-file-constants.js +2 -0
  37. package/generator/src/error-formatter.js +20 -1
  38. package/generator/src/generate-template-module-connector.js +120 -924
  39. package/generator/src/hello.ts +5 -0
  40. package/generator/src/pre-render-html.js +58 -104
  41. package/generator/src/render-worker.js +27 -13
  42. package/generator/src/render.js +252 -197
  43. package/generator/src/request-cache-fs.js +18 -0
  44. package/generator/src/request-cache.js +128 -56
  45. package/generator/src/rewrite-client-elm-json.js +49 -0
  46. package/generator/src/route-codegen-helpers.js +62 -1
  47. package/generator/static-code/dev-style.css +22 -0
  48. package/generator/static-code/elm-pages.js +43 -39
  49. package/generator/static-code/hmr.js +98 -88
  50. package/generator/template/app/Api.elm +25 -0
  51. package/generator/template/app/ErrorPage.elm +38 -0
  52. package/generator/template/app/Route/Index.elm +87 -0
  53. package/generator/template/{src → app}/Shared.elm +34 -13
  54. package/generator/template/app/Site.elm +19 -0
  55. package/generator/template/{src → app}/View.elm +0 -0
  56. package/generator/template/elm-pages.config.mjs +5 -0
  57. package/generator/template/elm.json +1 -0
  58. package/generator/template/{public/index.js → index.ts} +7 -3
  59. package/generator/template/package.json +4 -4
  60. package/generator/template/public/favicon.ico +0 -0
  61. package/generator/template/public/images/icon-png.png +0 -0
  62. package/generator/template/src/.gitkeep +0 -0
  63. package/generator/template/style.css +4 -0
  64. package/package.json +30 -23
  65. package/src/ApiRoute.elm +176 -43
  66. package/src/BuildError.elm +10 -1
  67. package/src/CookieParser.elm +84 -0
  68. package/src/DataSource/Env.elm +38 -0
  69. package/src/DataSource/File.elm +27 -16
  70. package/src/DataSource/Glob.elm +126 -80
  71. package/src/DataSource/Http.elm +283 -304
  72. package/src/DataSource/Internal/Glob.elm +5 -21
  73. package/src/DataSource/Internal/Request.elm +25 -0
  74. package/src/DataSource/Port.elm +17 -14
  75. package/src/DataSource.elm +55 -318
  76. package/src/Form/Field.elm +717 -0
  77. package/src/Form/FieldStatus.elm +36 -0
  78. package/src/Form/FieldView.elm +417 -0
  79. package/src/Form/FormData.elm +22 -0
  80. package/src/Form/Validation.elm +391 -0
  81. package/src/Form/Value.elm +118 -0
  82. package/src/Form.elm +1683 -0
  83. package/src/FormData.elm +58 -0
  84. package/src/FormDecoder.elm +102 -0
  85. package/src/Head/Seo.elm +12 -4
  86. package/src/Head.elm +12 -2
  87. package/src/HtmlPrinter.elm +1 -1
  88. package/src/Internal/ApiRoute.elm +17 -4
  89. package/src/Internal/Request.elm +7 -0
  90. package/src/PageServerResponse.elm +68 -0
  91. package/src/Pages/ContentCache.elm +1 -229
  92. package/src/Pages/Fetcher.elm +58 -0
  93. package/src/Pages/FormState.elm +256 -0
  94. package/src/Pages/Generate.elm +800 -0
  95. package/src/Pages/Internal/Form.elm +17 -0
  96. package/src/Pages/Internal/NotFoundReason.elm +3 -55
  97. package/src/Pages/Internal/Platform/Cli.elm +777 -579
  98. package/src/Pages/Internal/Platform/Effect.elm +5 -5
  99. package/src/Pages/Internal/Platform/StaticResponses.elm +178 -394
  100. package/src/Pages/Internal/Platform/ToJsPayload.elm +24 -23
  101. package/src/Pages/Internal/Platform.elm +1244 -504
  102. package/src/Pages/Internal/ResponseSketch.elm +19 -0
  103. package/src/Pages/Internal/RoutePattern.elm +596 -45
  104. package/src/Pages/Manifest.elm +26 -0
  105. package/src/Pages/Msg.elm +79 -0
  106. package/src/Pages/ProgramConfig.elm +67 -14
  107. package/src/Pages/SiteConfig.elm +3 -6
  108. package/src/Pages/StaticHttp/Request.elm +4 -2
  109. package/src/Pages/StaticHttpRequest.elm +50 -215
  110. package/src/Pages/Transition.elm +70 -0
  111. package/src/Path.elm +1 -0
  112. package/src/Pattern.elm +98 -0
  113. package/src/RenderRequest.elm +2 -2
  114. package/src/RequestsAndPending.elm +111 -9
  115. package/src/Server/Request.elm +1253 -0
  116. package/src/Server/Response.elm +292 -0
  117. package/src/Server/Session.elm +316 -0
  118. package/src/Server/SetCookie.elm +169 -0
  119. package/src/TerminalText.elm +1 -1
  120. package/src/Test/Html/Internal/ElmHtml/Markdown.elm +0 -1
  121. package/src/Test/Html/Internal/ElmHtml/ToString.elm +1 -1
  122. package/generator/src/Page.elm +0 -359
  123. package/generator/src/codegen-template-module.js +0 -183
  124. package/generator/src/elm-pages-js-minified.js +0 -1
  125. package/generator/template/src/Api.elm +0 -14
  126. package/generator/template/src/Page/Index.elm +0 -69
  127. package/generator/template/src/Site.elm +0 -41
  128. package/src/DataSource/ServerRequest.elm +0 -60
  129. package/src/Internal/OptimizedDecoder.elm +0 -18
  130. package/src/KeepOrDiscard.elm +0 -6
  131. package/src/OptimizedDecoder/Pipeline.elm +0 -335
  132. package/src/OptimizedDecoder.elm +0 -818
  133. package/src/Pages/Internal/ApplicationType.elm +0 -6
  134. package/src/Pages/Secrets.elm +0 -83
  135. package/src/Secrets.elm +0 -111
  136. 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
+ ]