elm-pages 3.0.0-beta.9 → 3.0.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.
- package/README.md +2 -2
- package/adapter/netlify.js +207 -0
- package/codegen/{elm-pages-codegen.js → elm-pages-codegen.cjs} +2730 -2938
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.c59ecaf7fa8379e3a2d0f793fe9784e3060cb64a6d1fe22b8f6a054502021dbe.json +1 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Console-Text.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Generated-Main.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Color.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format-Monochrome.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console-Format.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Console.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Highlightable.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-JUnit.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Json.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-Reporter.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Reporter-TestResults.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-JsMessage.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Console.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node-Vendor-Diff.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/Test-Runner-Node.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/lock +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +38 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +30883 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +1 -0
- package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +27 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmi +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateData.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-DeadCodeEliminateDataTest.elmo +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +17042 -13855
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
- package/generator/dead-code-review/elm.json +9 -7
- package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +64 -13
- package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +66 -50
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Internal-RoutePattern.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmi +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/Pages-Review-NoContractViolations.elmo +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
- package/generator/review/elm-stuff/tests-0.19.1/elm.json +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +1527 -422
- package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +25118 -21832
- package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
- package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
- package/generator/review/elm.json +10 -10
- package/generator/src/RouteBuilder.elm +93 -128
- package/generator/src/SharedTemplate.elm +8 -7
- package/generator/src/SiteConfig.elm +3 -2
- package/generator/src/basepath-middleware.js +3 -3
- package/generator/src/build.js +143 -59
- package/generator/src/cli.js +292 -88
- package/generator/src/codegen.js +29 -27
- package/generator/src/compatibility-key.js +3 -0
- package/generator/src/compile-elm.js +43 -26
- package/generator/src/config.js +2 -4
- package/generator/src/copy-dir.js +2 -2
- package/generator/src/dev-server.js +160 -102
- package/generator/src/dir-helpers.js +9 -26
- package/generator/src/elm-codegen.js +5 -4
- package/generator/src/elm-file-constants.js +2 -3
- package/generator/src/error-formatter.js +12 -11
- package/generator/src/file-helpers.js +3 -4
- package/generator/src/generate-template-module-connector.js +23 -23
- package/generator/src/init.js +9 -8
- package/generator/src/pre-render-html.js +10 -13
- package/generator/src/render-test.js +109 -0
- package/generator/src/render-worker.js +25 -28
- package/generator/src/render.js +320 -143
- package/generator/src/request-cache.js +265 -162
- package/generator/src/resolve-elm-module.js +64 -0
- package/generator/src/rewrite-client-elm-json.js +6 -5
- package/generator/src/rewrite-elm-json-help.js +56 -0
- package/generator/src/rewrite-elm-json.js +17 -7
- package/generator/src/route-codegen-helpers.js +16 -31
- package/generator/src/seo-renderer.js +1 -3
- package/generator/src/vite-utils.js +1 -2
- package/generator/static-code/elm-pages.js +10 -0
- package/generator/static-code/hmr.js +79 -13
- package/generator/template/app/Api.elm +3 -2
- package/generator/template/app/Effect.elm +155 -0
- package/generator/template/app/ErrorPage.elm +49 -6
- package/generator/template/app/Route/Blog/Slug_.elm +86 -0
- package/generator/template/app/Route/Greet.elm +107 -0
- package/generator/template/app/Route/Hello.elm +119 -0
- package/generator/template/app/Route/Index.elm +26 -25
- package/generator/template/app/Shared.elm +38 -39
- package/generator/template/app/Site.elm +4 -7
- package/generator/template/app/View.elm +9 -8
- package/generator/template/codegen/elm.codegen.json +18 -0
- package/generator/template/custom-backend-task.ts +3 -0
- package/generator/template/elm-pages.config.mjs +13 -0
- package/generator/template/elm-tooling.json +0 -3
- package/generator/template/elm.json +34 -25
- package/generator/template/index.ts +1 -2
- package/generator/template/netlify.toml +4 -1
- package/generator/template/package.json +10 -4
- package/generator/template/script/.elm-pages/compiled-ports/custom-backend-task.mjs +7 -0
- package/generator/template/script/custom-backend-task.ts +3 -0
- package/generator/template/script/elm.json +61 -0
- package/generator/template/script/src/AddRoute.elm +312 -0
- package/generator/template/script/src/Stars.elm +42 -0
- package/package.json +30 -27
- package/src/ApiRoute.elm +249 -82
- package/src/BackendTask/Custom.elm +325 -0
- package/src/BackendTask/Env.elm +90 -0
- package/src/{DataSource → BackendTask}/File.elm +171 -56
- package/src/{DataSource → BackendTask}/Glob.elm +136 -125
- package/src/BackendTask/Http.elm +679 -0
- package/src/{DataSource → BackendTask}/Internal/Glob.elm +1 -1
- package/src/BackendTask/Internal/Request.elm +69 -0
- package/src/BackendTask/Random.elm +79 -0
- package/src/BackendTask/Time.elm +47 -0
- package/src/BackendTask.elm +531 -0
- package/src/FatalError.elm +90 -0
- package/src/FormData.elm +21 -18
- package/src/Head/Seo.elm +4 -4
- package/src/Head.elm +112 -8
- package/src/Internal/ApiRoute.elm +7 -5
- package/src/Internal/Request.elm +84 -4
- package/src/PageServerResponse.elm +6 -1
- package/src/Pages/ConcurrentSubmission.elm +127 -0
- package/src/Pages/Form.elm +340 -0
- package/src/Pages/FormData.elm +19 -0
- package/src/Pages/GeneratorProgramConfig.elm +15 -0
- package/src/Pages/Internal/FatalError.elm +5 -0
- package/src/Pages/Internal/Msg.elm +93 -0
- package/src/Pages/Internal/NotFoundReason.elm +4 -4
- package/src/Pages/Internal/Platform/Cli.elm +586 -768
- package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
- package/src/Pages/Internal/Platform/Effect.elm +1 -2
- package/src/Pages/Internal/Platform/GeneratorApplication.elm +379 -0
- package/src/Pages/Internal/Platform/StaticResponses.elm +65 -276
- package/src/Pages/Internal/Platform/ToJsPayload.elm +6 -9
- package/src/Pages/Internal/Platform.elm +330 -203
- package/src/Pages/Internal/ResponseSketch.elm +2 -2
- package/src/Pages/Internal/Script.elm +17 -0
- package/src/Pages/Internal/StaticHttpBody.elm +35 -1
- package/src/Pages/Manifest.elm +52 -11
- package/src/Pages/Navigation.elm +85 -0
- package/src/Pages/PageUrl.elm +26 -12
- package/src/Pages/ProgramConfig.elm +32 -22
- package/src/Pages/Script.elm +166 -0
- package/src/Pages/SiteConfig.elm +3 -2
- package/src/Pages/StaticHttp/Request.elm +2 -2
- package/src/Pages/StaticHttpRequest.elm +23 -99
- package/src/Pages/Url.elm +3 -3
- package/src/PagesMsg.elm +88 -0
- package/src/QueryParams.elm +21 -172
- package/src/RenderRequest.elm +7 -7
- package/src/RequestsAndPending.elm +37 -20
- package/src/Result/Extra.elm +26 -0
- package/src/Scaffold/Form.elm +569 -0
- package/src/Scaffold/Route.elm +1431 -0
- package/src/Server/Request.elm +476 -1001
- package/src/Server/Response.elm +130 -36
- package/src/Server/Session.elm +181 -111
- package/src/Server/SetCookie.elm +80 -32
- package/src/Stub.elm +53 -0
- package/src/Test/Html/Internal/ElmHtml/ToString.elm +8 -9
- package/src/{Path.elm → UrlPath.elm} +33 -36
- package/generator/template/public/images/icon-png.png +0 -0
- package/src/DataSource/Env.elm +0 -38
- package/src/DataSource/Http.elm +0 -446
- package/src/DataSource/Internal/Request.elm +0 -20
- package/src/DataSource/Port.elm +0 -90
- package/src/DataSource.elm +0 -546
- package/src/Form/Field.elm +0 -717
- package/src/Form/FieldStatus.elm +0 -36
- package/src/Form/FieldView.elm +0 -417
- package/src/Form/FormData.elm +0 -22
- package/src/Form/Validation.elm +0 -391
- package/src/Form/Value.elm +0 -118
- package/src/Form.elm +0 -1683
- package/src/FormDecoder.elm +0 -102
- package/src/Pages/FormState.elm +0 -256
- package/src/Pages/Generate.elm +0 -1242
- package/src/Pages/Internal/Form.elm +0 -17
- package/src/Pages/Internal/Platform/Cli.elm.bak +0 -1276
- package/src/Pages/Msg.elm +0 -79
- package/src/Pages/Transition.elm +0 -70
|
@@ -1,14 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elm-pages-app",
|
|
3
|
+
"type": "module",
|
|
3
4
|
"scripts": {
|
|
4
5
|
"postinstall": "elm-tooling install",
|
|
5
6
|
"start": "elm-pages dev",
|
|
6
7
|
"build": "elm-pages build"
|
|
7
8
|
},
|
|
8
9
|
"devDependencies": {
|
|
9
|
-
"elm-
|
|
10
|
-
"elm-
|
|
11
|
-
"elm-
|
|
12
|
-
"elm-
|
|
10
|
+
"elm-codegen": "^0.3.0",
|
|
11
|
+
"elm-optimize-level-2": "^0.3.5",
|
|
12
|
+
"elm-pages": "^3.0.0-beta.42",
|
|
13
|
+
"elm-review": "^2.10.2",
|
|
14
|
+
"elm-tooling": "^1.14.0",
|
|
15
|
+
"vite": "^4.3.5"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@netlify/functions": "^1.4.0"
|
|
13
19
|
}
|
|
14
20
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
{
|
|
2
|
+
"type": "application",
|
|
3
|
+
"source-directories": [
|
|
4
|
+
"src",
|
|
5
|
+
"../codegen"
|
|
6
|
+
],
|
|
7
|
+
"elm-version": "0.19.1",
|
|
8
|
+
"dependencies": {
|
|
9
|
+
"direct": {
|
|
10
|
+
"dillonkearns/elm-cli-options-parser": "3.2.0",
|
|
11
|
+
"dillonkearns/elm-pages": "10.0.0",
|
|
12
|
+
"elm/bytes": "1.0.8",
|
|
13
|
+
"elm/core": "1.0.5",
|
|
14
|
+
"elm/html": "1.0.0",
|
|
15
|
+
"elm/json": "1.1.3",
|
|
16
|
+
"mdgriffith/elm-codegen": "3.0.0"
|
|
17
|
+
},
|
|
18
|
+
"indirect": {
|
|
19
|
+
"Chadtech/elm-bool-extra": "2.4.2",
|
|
20
|
+
"avh4/elm-color": "1.0.0",
|
|
21
|
+
"danfishgold/base64-bytes": "1.1.0",
|
|
22
|
+
"danyx23/elm-mimetype": "4.0.1",
|
|
23
|
+
"dillonkearns/elm-bcp47-language-tag": "1.0.1",
|
|
24
|
+
"dillonkearns/elm-date-or-date-time": "2.0.0",
|
|
25
|
+
"dillonkearns/elm-form": "3.0.0",
|
|
26
|
+
"elm/browser": "1.0.2",
|
|
27
|
+
"elm/file": "1.0.5",
|
|
28
|
+
"elm/http": "2.0.0",
|
|
29
|
+
"elm/parser": "1.1.0",
|
|
30
|
+
"elm/random": "1.0.0",
|
|
31
|
+
"elm/regex": "1.0.0",
|
|
32
|
+
"elm/time": "1.0.0",
|
|
33
|
+
"elm/url": "1.0.0",
|
|
34
|
+
"elm/virtual-dom": "1.0.3",
|
|
35
|
+
"elm-community/basics-extra": "4.1.0",
|
|
36
|
+
"elm-community/list-extra": "8.7.0",
|
|
37
|
+
"elm-community/maybe-extra": "5.3.0",
|
|
38
|
+
"fredcy/elm-parseint": "2.0.1",
|
|
39
|
+
"jluckyiv/elm-utc-date-strings": "1.0.0",
|
|
40
|
+
"justinmimbs/date": "4.0.1",
|
|
41
|
+
"miniBill/elm-codec": "2.0.0",
|
|
42
|
+
"miniBill/elm-unicode": "1.0.3",
|
|
43
|
+
"noahzgordon/elm-color-extra": "1.0.2",
|
|
44
|
+
"robinheghan/fnv1a": "1.0.0",
|
|
45
|
+
"robinheghan/murmur3": "1.0.0",
|
|
46
|
+
"rtfeldman/elm-css": "18.0.0",
|
|
47
|
+
"rtfeldman/elm-hex": "1.0.0",
|
|
48
|
+
"rtfeldman/elm-iso8601-date-strings": "1.1.4",
|
|
49
|
+
"stil4m/elm-syntax": "7.2.9",
|
|
50
|
+
"stil4m/structured-writer": "1.0.3",
|
|
51
|
+
"the-sett/elm-pretty-printer": "3.0.0",
|
|
52
|
+
"the-sett/elm-syntax-dsl": "6.0.2",
|
|
53
|
+
"turboMaCk/non-empty-list-alias": "1.3.1",
|
|
54
|
+
"vito/elm-ansi": "10.0.1"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"test-dependencies": {
|
|
58
|
+
"direct": {},
|
|
59
|
+
"indirect": {}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
module AddRoute exposing (run)
|
|
2
|
+
|
|
3
|
+
import BackendTask
|
|
4
|
+
import Cli.Option as Option
|
|
5
|
+
import Cli.OptionsParser as OptionsParser
|
|
6
|
+
import Cli.Program as Program
|
|
7
|
+
import Elm
|
|
8
|
+
import Elm.Annotation as Type
|
|
9
|
+
import Elm.Case
|
|
10
|
+
import Elm.Declare
|
|
11
|
+
import Elm.Let
|
|
12
|
+
import Elm.Op
|
|
13
|
+
import Gen.BackendTask
|
|
14
|
+
import Gen.Effect as Effect
|
|
15
|
+
import Gen.FatalError
|
|
16
|
+
import Gen.Form as Form
|
|
17
|
+
import Gen.Form.FieldView as FieldView
|
|
18
|
+
import Gen.Html as Html
|
|
19
|
+
import Gen.Html.Attributes as Attr
|
|
20
|
+
import Gen.Json.Encode
|
|
21
|
+
import Gen.List
|
|
22
|
+
import Gen.Maybe
|
|
23
|
+
import Gen.Pages.Form as PagesForm
|
|
24
|
+
import Gen.Pages.Script
|
|
25
|
+
import Gen.Server.Request as Request
|
|
26
|
+
import Gen.Server.Response as Response
|
|
27
|
+
import Gen.View
|
|
28
|
+
import Pages.Script as Script exposing (Script)
|
|
29
|
+
import Scaffold.Form
|
|
30
|
+
import Scaffold.Route exposing (Type(..))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
type alias CliOptions =
|
|
34
|
+
{ moduleName : List String
|
|
35
|
+
, fields : List ( String, Scaffold.Form.Kind )
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
run : Script
|
|
40
|
+
run =
|
|
41
|
+
Script.withCliOptions program
|
|
42
|
+
(\cliOptions ->
|
|
43
|
+
cliOptions
|
|
44
|
+
|> createFile
|
|
45
|
+
|> Script.writeFile
|
|
46
|
+
|> BackendTask.allowFatal
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
program : Program.Config CliOptions
|
|
51
|
+
program =
|
|
52
|
+
Program.config
|
|
53
|
+
|> Program.add
|
|
54
|
+
(OptionsParser.build CliOptions
|
|
55
|
+
|> OptionsParser.with (Option.requiredPositionalArg "module" |> Scaffold.Route.moduleNameCliArg)
|
|
56
|
+
|> OptionsParser.withRestArgs Scaffold.Form.restArgsParser
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
createFile : CliOptions -> { path : String, body : String }
|
|
61
|
+
createFile { moduleName, fields } =
|
|
62
|
+
let
|
|
63
|
+
formHelpers :
|
|
64
|
+
Maybe
|
|
65
|
+
{ formHandlers : Elm.Expression
|
|
66
|
+
, form : Elm.Expression
|
|
67
|
+
, declarations : List Elm.Declaration
|
|
68
|
+
}
|
|
69
|
+
formHelpers =
|
|
70
|
+
Scaffold.Form.provide
|
|
71
|
+
{ fields = fields
|
|
72
|
+
, elmCssView = False
|
|
73
|
+
, view =
|
|
74
|
+
\{ formState, params } ->
|
|
75
|
+
Elm.Let.letIn
|
|
76
|
+
(\fieldView ->
|
|
77
|
+
Elm.list
|
|
78
|
+
((params
|
|
79
|
+
|> List.map
|
|
80
|
+
(\{ name, kind, param } ->
|
|
81
|
+
fieldView (Elm.string name) param
|
|
82
|
+
)
|
|
83
|
+
)
|
|
84
|
+
++ [ Elm.ifThen formState.submitting
|
|
85
|
+
(Html.button
|
|
86
|
+
[ Attr.disabled True
|
|
87
|
+
]
|
|
88
|
+
[ Html.text "Submitting..."
|
|
89
|
+
]
|
|
90
|
+
)
|
|
91
|
+
(Html.button []
|
|
92
|
+
[ Html.text "Submit"
|
|
93
|
+
]
|
|
94
|
+
)
|
|
95
|
+
]
|
|
96
|
+
)
|
|
97
|
+
)
|
|
98
|
+
|> Elm.Let.fn2 "fieldView"
|
|
99
|
+
( "label", Type.string |> Just )
|
|
100
|
+
( "field", Nothing )
|
|
101
|
+
(\label field ->
|
|
102
|
+
Html.div []
|
|
103
|
+
[ Html.label []
|
|
104
|
+
[ Html.call_.text (Elm.Op.append label (Elm.string " "))
|
|
105
|
+
, field |> FieldView.input []
|
|
106
|
+
, errorsView.call formState.errors field
|
|
107
|
+
]
|
|
108
|
+
]
|
|
109
|
+
)
|
|
110
|
+
|> Elm.Let.toExpression
|
|
111
|
+
}
|
|
112
|
+
in
|
|
113
|
+
Scaffold.Route.serverRender
|
|
114
|
+
{ moduleName = moduleName
|
|
115
|
+
, action =
|
|
116
|
+
( Alias
|
|
117
|
+
(Type.record
|
|
118
|
+
(case formHelpers of
|
|
119
|
+
Just _ ->
|
|
120
|
+
[ ( "errors", Type.namedWith [ "Form" ] "ServerResponse" [ Type.string ] )
|
|
121
|
+
]
|
|
122
|
+
|
|
123
|
+
Nothing ->
|
|
124
|
+
[]
|
|
125
|
+
)
|
|
126
|
+
)
|
|
127
|
+
, \routeParams request ->
|
|
128
|
+
formHelpers
|
|
129
|
+
|> Maybe.map
|
|
130
|
+
(\justFormHelp ->
|
|
131
|
+
Request.formData justFormHelp.formHandlers request
|
|
132
|
+
|> Gen.Maybe.call_.map
|
|
133
|
+
(Elm.fn ( "formData", Nothing )
|
|
134
|
+
(\formData ->
|
|
135
|
+
Elm.Case.tuple formData
|
|
136
|
+
"response"
|
|
137
|
+
"parsedForm"
|
|
138
|
+
(\response parsedForm ->
|
|
139
|
+
Elm.Case.custom parsedForm
|
|
140
|
+
Type.int
|
|
141
|
+
[ Elm.Case.branch1 "Form.Valid"
|
|
142
|
+
( "validatedForm", Type.int )
|
|
143
|
+
(\validatedForm ->
|
|
144
|
+
Elm.Case.custom validatedForm
|
|
145
|
+
Type.int
|
|
146
|
+
[ Elm.Case.branch1 "Action"
|
|
147
|
+
( "parsed", Type.int )
|
|
148
|
+
(\parsed ->
|
|
149
|
+
Scaffold.Form.recordEncoder parsed fields
|
|
150
|
+
|> Gen.Json.Encode.encode 2
|
|
151
|
+
|> Gen.Pages.Script.call_.log
|
|
152
|
+
|> Gen.BackendTask.call_.map
|
|
153
|
+
(Elm.fn ( "_", Nothing )
|
|
154
|
+
(\_ ->
|
|
155
|
+
Response.render
|
|
156
|
+
(Elm.record
|
|
157
|
+
[ ( "errors", response )
|
|
158
|
+
]
|
|
159
|
+
)
|
|
160
|
+
)
|
|
161
|
+
)
|
|
162
|
+
)
|
|
163
|
+
]
|
|
164
|
+
)
|
|
165
|
+
, Elm.Case.branch2 "Form.Invalid"
|
|
166
|
+
( "parsed", Type.int )
|
|
167
|
+
( "error", Type.int )
|
|
168
|
+
(\_ _ ->
|
|
169
|
+
"Form validations did not succeed!"
|
|
170
|
+
|> Gen.Pages.Script.log
|
|
171
|
+
|> Gen.BackendTask.call_.map
|
|
172
|
+
(Elm.fn ( "_", Nothing )
|
|
173
|
+
(\_ ->
|
|
174
|
+
Response.render
|
|
175
|
+
(Elm.record
|
|
176
|
+
[ ( "errors", response )
|
|
177
|
+
]
|
|
178
|
+
)
|
|
179
|
+
)
|
|
180
|
+
)
|
|
181
|
+
)
|
|
182
|
+
]
|
|
183
|
+
)
|
|
184
|
+
)
|
|
185
|
+
)
|
|
186
|
+
|> Gen.Maybe.withDefault
|
|
187
|
+
(Gen.BackendTask.fail
|
|
188
|
+
(Gen.FatalError.fromString "Expected form post")
|
|
189
|
+
)
|
|
190
|
+
)
|
|
191
|
+
|> Maybe.withDefault
|
|
192
|
+
(Gen.BackendTask.succeed
|
|
193
|
+
(Response.render
|
|
194
|
+
(Elm.record [])
|
|
195
|
+
)
|
|
196
|
+
)
|
|
197
|
+
)
|
|
198
|
+
, data =
|
|
199
|
+
( Alias (Type.record [])
|
|
200
|
+
, \routeParams request ->
|
|
201
|
+
Gen.BackendTask.succeed
|
|
202
|
+
(Response.render
|
|
203
|
+
(Elm.record [])
|
|
204
|
+
)
|
|
205
|
+
)
|
|
206
|
+
, head = \app -> Elm.list []
|
|
207
|
+
}
|
|
208
|
+
|> Scaffold.Route.addDeclarations
|
|
209
|
+
(formHelpers
|
|
210
|
+
|> Maybe.map .declarations
|
|
211
|
+
|> Maybe.map ((::) errorsView.declaration)
|
|
212
|
+
|> Maybe.withDefault []
|
|
213
|
+
)
|
|
214
|
+
|> Scaffold.Route.buildWithLocalState
|
|
215
|
+
{ view =
|
|
216
|
+
\{ shared, model, app } ->
|
|
217
|
+
Gen.View.make_.view
|
|
218
|
+
{ title = moduleName |> String.join "." |> Elm.string
|
|
219
|
+
, body =
|
|
220
|
+
Elm.list
|
|
221
|
+
(case formHelpers of
|
|
222
|
+
Just justFormHelp ->
|
|
223
|
+
[ Html.h2 [] [ Html.text "Form" ]
|
|
224
|
+
, justFormHelp.form
|
|
225
|
+
|> PagesForm.call_.renderHtml
|
|
226
|
+
(Elm.list [])
|
|
227
|
+
(Form.options "form"
|
|
228
|
+
|> Form.withServerResponse
|
|
229
|
+
(app
|
|
230
|
+
|> Elm.get "action"
|
|
231
|
+
|> Gen.Maybe.map (Elm.get "errors")
|
|
232
|
+
)
|
|
233
|
+
)
|
|
234
|
+
app
|
|
235
|
+
]
|
|
236
|
+
|
|
237
|
+
Nothing ->
|
|
238
|
+
[ Html.h2 [] [ Html.text "New Page" ]
|
|
239
|
+
]
|
|
240
|
+
)
|
|
241
|
+
}
|
|
242
|
+
, update =
|
|
243
|
+
\{ shared, app, msg, model } ->
|
|
244
|
+
Elm.Case.custom msg
|
|
245
|
+
(Type.named [] "Msg")
|
|
246
|
+
[ Elm.Case.branch0 "NoOp"
|
|
247
|
+
(Elm.tuple model
|
|
248
|
+
Effect.none
|
|
249
|
+
)
|
|
250
|
+
]
|
|
251
|
+
, init =
|
|
252
|
+
\{ shared, app } ->
|
|
253
|
+
Elm.tuple (Elm.record []) Effect.none
|
|
254
|
+
, subscriptions =
|
|
255
|
+
\{ routeParams, path, shared, model } ->
|
|
256
|
+
Elm.val "Sub.none"
|
|
257
|
+
, model =
|
|
258
|
+
Alias (Type.record [])
|
|
259
|
+
, msg =
|
|
260
|
+
Custom [ Elm.variant "NoOp" ]
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
errorsView :
|
|
265
|
+
{ declaration : Elm.Declaration
|
|
266
|
+
, call : Elm.Expression -> Elm.Expression -> Elm.Expression
|
|
267
|
+
, callFrom : List String -> Elm.Expression -> Elm.Expression -> Elm.Expression
|
|
268
|
+
, value : List String -> Elm.Expression
|
|
269
|
+
}
|
|
270
|
+
errorsView =
|
|
271
|
+
Elm.Declare.fn2 "errorsView"
|
|
272
|
+
( "errors", Type.namedWith [ "Form" ] "Errors" [ Type.string ] |> Just )
|
|
273
|
+
( "field"
|
|
274
|
+
, Type.namedWith [ "Form", "Validation" ]
|
|
275
|
+
"Field"
|
|
276
|
+
[ Type.string
|
|
277
|
+
, Type.var "parsed"
|
|
278
|
+
, Type.var "kind"
|
|
279
|
+
]
|
|
280
|
+
|> Just
|
|
281
|
+
)
|
|
282
|
+
(\errors field ->
|
|
283
|
+
Elm.ifThen
|
|
284
|
+
(Gen.List.call_.isEmpty (Form.errorsForField field errors))
|
|
285
|
+
(Html.div [] [])
|
|
286
|
+
(Html.div
|
|
287
|
+
[]
|
|
288
|
+
[ Html.call_.ul (Elm.list [])
|
|
289
|
+
(Gen.List.call_.map
|
|
290
|
+
(Elm.fn ( "error", Nothing )
|
|
291
|
+
(\error ->
|
|
292
|
+
Html.li
|
|
293
|
+
[ Attr.style "color" "red"
|
|
294
|
+
]
|
|
295
|
+
[ Html.call_.text error
|
|
296
|
+
]
|
|
297
|
+
)
|
|
298
|
+
)
|
|
299
|
+
(Form.errorsForField field errors)
|
|
300
|
+
)
|
|
301
|
+
]
|
|
302
|
+
)
|
|
303
|
+
|> Elm.withType
|
|
304
|
+
(Type.namedWith [ "Html" ]
|
|
305
|
+
"Html"
|
|
306
|
+
[ Type.namedWith
|
|
307
|
+
[ "PagesMsg" ]
|
|
308
|
+
"PagesMsg"
|
|
309
|
+
[ Type.named [] "Msg" ]
|
|
310
|
+
]
|
|
311
|
+
)
|
|
312
|
+
)
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
module Stars exposing (run)
|
|
2
|
+
|
|
3
|
+
import BackendTask exposing (BackendTask)
|
|
4
|
+
import BackendTask.Http
|
|
5
|
+
import Cli.Option as Option
|
|
6
|
+
import Cli.OptionsParser as OptionsParser
|
|
7
|
+
import Cli.Program as Program
|
|
8
|
+
import Json.Decode as Decode
|
|
9
|
+
import Pages.Script as Script exposing (Script)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
run : Script
|
|
13
|
+
run =
|
|
14
|
+
Script.withCliOptions program
|
|
15
|
+
(\{ username, repo } ->
|
|
16
|
+
BackendTask.Http.getJson
|
|
17
|
+
("https://api.github.com/repos/dillonkearns/" ++ repo)
|
|
18
|
+
(Decode.field "stargazers_count" Decode.int)
|
|
19
|
+
|> BackendTask.allowFatal
|
|
20
|
+
|> BackendTask.andThen
|
|
21
|
+
(\stars ->
|
|
22
|
+
Script.log (String.fromInt stars)
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
type alias CliOptions =
|
|
28
|
+
{ username : String
|
|
29
|
+
, repo : String
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
program : Program.Config CliOptions
|
|
34
|
+
program =
|
|
35
|
+
Program.config
|
|
36
|
+
|> Program.add
|
|
37
|
+
(OptionsParser.build CliOptions
|
|
38
|
+
|> OptionsParser.with
|
|
39
|
+
(Option.optionalKeywordArg "username" |> Option.withDefault "dillonkearns")
|
|
40
|
+
|> OptionsParser.with
|
|
41
|
+
(Option.optionalKeywordArg "repo" |> Option.withDefault "elm-pages")
|
|
42
|
+
)
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elm-pages",
|
|
3
|
-
"
|
|
3
|
+
"type": "module",
|
|
4
|
+
"version": "3.0.1",
|
|
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,7 +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
|
-
"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)",
|
|
14
15
|
"review": "elm-review"
|
|
15
16
|
},
|
|
16
17
|
"repository": "https://github.com/dillonkearns/elm-pages",
|
|
@@ -24,53 +25,55 @@
|
|
|
24
25
|
"author": "Dillon Kearns",
|
|
25
26
|
"license": "BSD-3-Clause",
|
|
26
27
|
"dependencies": {
|
|
27
|
-
"busboy": "^1.
|
|
28
|
+
"busboy": "^1.6.0",
|
|
28
29
|
"chokidar": "^3.5.3",
|
|
29
|
-
"commander": "^
|
|
30
|
+
"commander": "^10.0.1",
|
|
30
31
|
"connect": "^3.7.0",
|
|
31
|
-
"cookie-signature": "^1.1
|
|
32
|
+
"cookie-signature": "^1.2.1",
|
|
32
33
|
"cross-spawn": "7.0.3",
|
|
33
34
|
"devcert": "^1.2.2",
|
|
34
35
|
"elm-doc-preview": "^5.0.5",
|
|
35
36
|
"elm-hot": "^1.1.6",
|
|
36
|
-
"esbuild": "^0.
|
|
37
|
-
"fs-extra": "^
|
|
38
|
-
"globby": "
|
|
37
|
+
"esbuild": "^0.17.18",
|
|
38
|
+
"fs-extra": "^11.1.1",
|
|
39
|
+
"globby": "13.1.4",
|
|
39
40
|
"gray-matter": "^4.0.3",
|
|
40
41
|
"jsesc": "^3.0.2",
|
|
41
42
|
"kleur": "^4.1.5",
|
|
42
|
-
"
|
|
43
|
+
"make-fetch-happen": "^11.1.1",
|
|
44
|
+
"memfs": "^3.5.1",
|
|
43
45
|
"micromatch": "^4.0.5",
|
|
44
|
-
"node-fetch": "^2.6.7",
|
|
45
|
-
"object-hash": "^2.2.0",
|
|
46
46
|
"serve-static": "^1.15.0",
|
|
47
|
-
"terser": "^5.
|
|
48
|
-
"vite": "^3.
|
|
49
|
-
"which": "^
|
|
47
|
+
"terser": "^5.17.1",
|
|
48
|
+
"vite": "^4.3.5",
|
|
49
|
+
"which": "^3.0.1"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@types/cross-spawn": "^6.0.2",
|
|
53
|
-
"@types/fs-extra": "^
|
|
53
|
+
"@types/fs-extra": "^11.0.1",
|
|
54
|
+
"@types/make-fetch-happen": "^10.0.1",
|
|
54
55
|
"@types/micromatch": "^4.0.2",
|
|
55
|
-
"@types/node": "
|
|
56
|
-
"@types/serve-static": "^1.15.
|
|
57
|
-
"cypress": "^
|
|
58
|
-
"elm-codegen": "^0.
|
|
59
|
-
"elm-optimize-level-2": "^0.
|
|
60
|
-
"elm-review": "^2.
|
|
61
|
-
"elm-test": "^0.19.1-
|
|
62
|
-
"elm-tooling": "^1.
|
|
56
|
+
"@types/node": "^20.1.0",
|
|
57
|
+
"@types/serve-static": "^1.15.1",
|
|
58
|
+
"cypress": "^12.13.0",
|
|
59
|
+
"elm-codegen": "^0.3.0",
|
|
60
|
+
"elm-optimize-level-2": "^0.3.5",
|
|
61
|
+
"elm-review": "^2.10.2",
|
|
62
|
+
"elm-test": "^0.19.1-revision12",
|
|
63
|
+
"elm-tooling": "^1.14.0",
|
|
63
64
|
"elm-verify-examples": "^5.2.0",
|
|
64
|
-
"elmi-to-json": "^1.
|
|
65
|
-
"
|
|
66
|
-
"
|
|
65
|
+
"elmi-to-json": "^1.4.3",
|
|
66
|
+
"typescript": "^5.0.4",
|
|
67
|
+
"vite": "^4.3.5",
|
|
68
|
+
"vitest": "^0.31.0"
|
|
67
69
|
},
|
|
68
70
|
"files": [
|
|
71
|
+
"adapter/",
|
|
69
72
|
"generator/src/",
|
|
70
73
|
"generator/review/",
|
|
71
74
|
"generator/dead-code-review/",
|
|
72
75
|
"src/",
|
|
73
|
-
"codegen/elm-pages-codegen.
|
|
76
|
+
"codegen/elm-pages-codegen.cjs",
|
|
74
77
|
"generator/template/",
|
|
75
78
|
"generator/static-code/"
|
|
76
79
|
],
|