elm-pages 3.0.9 → 3.0.11

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 (48) hide show
  1. package/README.md +2 -2
  2. package/codegen/elm-pages-codegen.cjs +732 -350
  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.elmo +0 -0
  5. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  6. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +0 -0
  7. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/o.dat +0 -0
  8. package/generator/dead-code-review/elm-stuff/tests-0.19.1/elm.json +1 -1
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Reporter.elm.js +2 -2
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +7328 -7699
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  12. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +2 -2
  13. package/generator/dead-code-review/elm.json +2 -2
  14. package/generator/dead-code-review/src/Pages/Review/DeadCodeEliminateData.elm +1 -1
  15. package/generator/dead-code-review/src/ReviewConfig.elm +3 -1
  16. package/generator/dead-code-review/tests/Pages/Review/DeadCodeEliminateDataTest.elm +63 -0
  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 +2 -2
  22. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +2768 -3160
  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 +2 -2
  25. package/generator/review/elm.json +7 -8
  26. package/generator/src/build.js +3 -3
  27. package/generator/src/cli.js +1 -1
  28. package/generator/src/codegen.js +1 -1
  29. package/generator/src/compatibility-key.js +2 -2
  30. package/generator/src/render.js +1 -6
  31. package/generator/template/app/ErrorPage.elm +15 -12
  32. package/generator/template/codegen/elm.codegen.json +2 -2
  33. package/generator/template/elm-tooling.json +1 -1
  34. package/generator/template/elm.json +9 -9
  35. package/generator/template/gitignore +2 -1
  36. package/generator/template/netlify.toml +1 -1
  37. package/generator/template/package.json +6 -5
  38. package/generator/template/script/elm.json +3 -3
  39. package/generator/template/script/src/AddStaticRoute.elm +87 -0
  40. package/package.json +25 -24
  41. package/src/ApiRoute.elm +45 -34
  42. package/src/BackendTask/File.elm +2 -1
  43. package/src/BackendTask.elm +28 -40
  44. package/src/FatalError.elm +2 -2
  45. package/src/Head/Seo.elm +3 -3
  46. package/src/Pages/Internal/Platform/CompatibilityKey.elm +1 -1
  47. package/src/Pages/Manifest.elm +2 -2
  48. package/src/Scaffold/Route.elm +95 -49
@@ -75,7 +75,7 @@ console.elmlog = (str) => logs.push(str + "\n");
75
75
  const { Elm } = require("./Runner.elm.js");
76
76
 
77
77
  // Start the Elm app
78
- const flags = { initialSeed: 3733738384, fuzzRuns: 100, filter: null };
78
+ const flags = { initialSeed: 47297520, fuzzRuns: 100, filter: null };
79
79
  const app = Elm.Runner.init({ flags: flags });
80
80
 
81
81
  // Record the timing at which we received the last "runTest" message
@@ -75,14 +75,14 @@ let testsCount, todoTests;
75
75
  let reporter;
76
76
  let runners = [];
77
77
  let working = false;
78
- let workersCount = 2;
78
+ let workersCount = 4;
79
79
  let startWorkCallback = function(){};
80
80
  const verbosity = 0;
81
81
 
82
82
  // Create a long lived reporter worker
83
83
  const { Elm } = require("./Reporter.elm.js");
84
84
  const flags = {
85
- initialSeed: 3733738384,
85
+ initialSeed: 47297520,
86
86
  fuzzRuns: 100,
87
87
  mode: "consoleNoColor",
88
88
  verbosity: verbosity,
@@ -11,9 +11,9 @@
11
11
  "elm/html": "1.0.0",
12
12
  "elm/json": "1.1.3",
13
13
  "elm/regex": "1.0.0",
14
- "jfmengels/elm-review": "2.13.0",
15
- "mdgriffith/elm-codegen": "3.0.0",
16
- "stil4m/elm-syntax": "7.2.9",
14
+ "jfmengels/elm-review": "2.13.1",
15
+ "mdgriffith/elm-codegen": "4.1.1",
16
+ "stil4m/elm-syntax": "7.3.2",
17
17
  "the-sett/elm-syntax-dsl": "6.0.2"
18
18
  },
19
19
  "indirect": {
@@ -25,18 +25,17 @@
25
25
  "elm/time": "1.0.0",
26
26
  "elm/virtual-dom": "1.0.3",
27
27
  "elm-community/basics-extra": "4.1.0",
28
- "elm-community/list-extra": "8.7.0",
29
28
  "elm-community/maybe-extra": "5.3.0",
30
- "elm-explorations/test": "2.1.1",
31
- "miniBill/elm-unicode": "1.0.3",
29
+ "elm-explorations/test": "2.1.2",
30
+ "miniBill/elm-unicode": "1.1.0",
32
31
  "rtfeldman/elm-hex": "1.0.0",
33
32
  "stil4m/structured-writer": "1.0.3",
34
- "the-sett/elm-pretty-printer": "3.0.0"
33
+ "the-sett/elm-pretty-printer": "3.1.0"
35
34
  }
36
35
  },
37
36
  "test-dependencies": {
38
37
  "direct": {
39
- "elm-explorations/test": "2.1.1"
38
+ "elm-explorations/test": "2.1.2"
40
39
  },
41
40
  "indirect": {}
42
41
  }
@@ -100,7 +100,7 @@ export async function run(options) {
100
100
  ssr: false,
101
101
 
102
102
  build: {
103
- manifest: true,
103
+ manifest: '___vite-manifest___.json',
104
104
  outDir: "dist",
105
105
  rollupOptions: {
106
106
  input: "elm-stuff/elm-pages/index.html",
@@ -123,7 +123,7 @@ export async function run(options) {
123
123
  fullOutputPath,
124
124
  withoutExtension
125
125
  );
126
- const assetManifestPath = path.join(process.cwd(), "dist/manifest.json");
126
+ const assetManifestPath = path.join(process.cwd(), "dist/___vite-manifest___.json");
127
127
  const manifest = JSON.parse(
128
128
  await fsPromises.readFile(assetManifestPath, { encoding: "utf-8" })
129
129
  );
@@ -155,7 +155,7 @@ export async function run(options) {
155
155
  `<script defer src="/elm.${browserElmHash}.js" type="text/javascript"></script>`
156
156
  );
157
157
  await fsPromises.writeFile("dist/template.html", processedIndexTemplate);
158
- await fsPromises.unlink(assetManifestPath);
158
+ // await fsPromises.unlink(assetManifestPath);
159
159
  const portBackendTaskCompiled = esbuild
160
160
  .build({
161
161
  entryPoints: ["./custom-backend-task"],
@@ -346,7 +346,7 @@ async function requireElm(compiledElmPath) {
346
346
  const warnOriginal = console.warn;
347
347
  console.warn = function () {};
348
348
 
349
- let Elm = (await import(path.resolve(compiledElmPath))).default;
349
+ let Elm = (await import(url.pathToFileURL(path.resolve(compiledElmPath)).href)).default;
350
350
  console.warn = warnOriginal;
351
351
  return Elm;
352
352
  }
@@ -72,7 +72,7 @@ export async function generate(basePath) {
72
72
  }
73
73
 
74
74
  function writeFetcherModules(basePath, fetcherData) {
75
- Promise.all(
75
+ return Promise.all(
76
76
  fetcherData.map(([name, fileContent]) => {
77
77
  let filePath = path.join(basePath, `/Fetcher/${name.join("/")}.elm`);
78
78
  ensureDirSync(path.dirname(filePath));
@@ -1,3 +1,3 @@
1
- export const compatibilityKey = 20;
1
+ export const compatibilityKey = 21;
2
2
 
3
- export const packageVersion = "3.0.8";
3
+ export const packageVersion = "3.0.11";
@@ -512,12 +512,7 @@ async function readFileJobNew(req, patternsToWatch) {
512
512
  try {
513
513
  patternsToWatch.add(filePath);
514
514
 
515
- const fileContents = // TODO can I remove this hack?
516
- (
517
- await fsPromises.readFile(
518
- path.join(process.env.LAMBDA_TASK_ROOT || process.cwd(), filePath)
519
- )
520
- ).toString();
515
+ const fileContents = (await fsPromises.readFile(filePath)).toString();
521
516
  // TODO does this throw an error if there is invalid frontmatter?
522
517
  const parsedFile = matter(fileContents);
523
518
 
@@ -3,7 +3,6 @@ module ErrorPage exposing (ErrorPage(..), Model, Msg, head, init, internalError,
3
3
  import Effect exposing (Effect)
4
4
  import Head
5
5
  import Html exposing (Html)
6
- import Html.Events exposing (onClick)
7
6
  import View exposing (View)
8
7
 
9
8
 
@@ -54,20 +53,24 @@ view : ErrorPage -> Model -> View Msg
54
53
  view error model =
55
54
  { body =
56
55
  [ Html.div []
57
- [ Html.p [] [ Html.text "Page not found. Maybe try another URL?" ]
58
- , Html.div []
59
- [ Html.button
60
- [ onClick Increment
61
- ]
62
- [ Html.text
63
- (model.count
64
- |> String.fromInt
65
- )
66
- ]
56
+ [ Html.p []
57
+ [ Html.text <|
58
+ case error of
59
+ NotFound ->
60
+ "Page not found. Maybe try another URL?"
61
+
62
+ InternalError string ->
63
+ "Something went wrong.\n" ++ string
67
64
  ]
68
65
  ]
69
66
  ]
70
- , title = "This is a NotFound Error"
67
+ , title =
68
+ case error of
69
+ NotFound ->
70
+ "Page Not Found"
71
+
72
+ InternalError string ->
73
+ "Unexpected Error"
71
74
  }
72
75
 
73
76
 
@@ -1,12 +1,12 @@
1
1
  {
2
- "elm-codegen-version": "0.2.0",
2
+ "elm-codegen-version": "0.5.1",
3
3
  "codegen-helpers": {
4
4
  "packages": {
5
5
  "elm/core": "1.0.5",
6
6
  "dillonkearns/elm-form": "3.0.0",
7
7
  "elm/html": "1.0.0",
8
8
  "rtfeldman/elm-css": "18.0.0",
9
- "dillonkearns/elm-pages": "10.0.0",
9
+ "dillonkearns/elm-pages": "10.0.3",
10
10
  "elm/json": "1.1.3"
11
11
  },
12
12
  "local": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "tools": {
3
3
  "elm": "0.19.1",
4
- "elm-format": "0.8.5"
4
+ "elm-format": "0.8.7"
5
5
  }
6
6
  }
@@ -11,10 +11,10 @@
11
11
  "avh4/elm-color": "1.0.0",
12
12
  "danfishgold/base64-bytes": "1.1.0",
13
13
  "danyx23/elm-mimetype": "4.0.1",
14
- "dillonkearns/elm-bcp47-language-tag": "1.0.1",
14
+ "dillonkearns/elm-bcp47-language-tag": "2.0.0",
15
15
  "dillonkearns/elm-form": "3.0.0",
16
16
  "dillonkearns/elm-markdown": "7.0.1",
17
- "dillonkearns/elm-pages": "10.0.1",
17
+ "dillonkearns/elm-pages": "10.0.3",
18
18
  "elm/browser": "1.0.2",
19
19
  "elm/bytes": "1.0.8",
20
20
  "elm/core": "1.0.5",
@@ -31,13 +31,13 @@
31
31
  "elm-community/result-extra": "2.4.0",
32
32
  "jluckyiv/elm-utc-date-strings": "1.0.0",
33
33
  "justinmimbs/date": "4.0.1",
34
- "mdgriffith/elm-codegen": "3.0.0",
35
- "miniBill/elm-codec": "2.0.0",
34
+ "mdgriffith/elm-codegen": "4.1.1",
35
+ "miniBill/elm-codec": "2.1.0",
36
36
  "noahzgordon/elm-color-extra": "1.0.2",
37
37
  "robinheghan/fnv1a": "1.0.0",
38
38
  "rtfeldman/elm-css": "18.0.0",
39
39
  "the-sett/elm-syntax-dsl": "6.0.2",
40
- "turboMaCk/non-empty-list-alias": "1.3.1",
40
+ "turboMaCk/non-empty-list-alias": "1.4.0",
41
41
  "vito/elm-ansi": "10.0.1"
42
42
  },
43
43
  "indirect": {
@@ -49,17 +49,17 @@
49
49
  "elm-community/basics-extra": "4.1.0",
50
50
  "elm-community/maybe-extra": "5.3.0",
51
51
  "fredcy/elm-parseint": "2.0.1",
52
- "miniBill/elm-unicode": "1.0.3",
52
+ "miniBill/elm-unicode": "1.1.0",
53
53
  "robinheghan/murmur3": "1.0.0",
54
54
  "rtfeldman/elm-hex": "1.0.0",
55
55
  "rtfeldman/elm-iso8601-date-strings": "1.1.4",
56
- "stil4m/elm-syntax": "7.2.9",
56
+ "stil4m/elm-syntax": "7.3.2",
57
57
  "stil4m/structured-writer": "1.0.3",
58
- "the-sett/elm-pretty-printer": "3.0.0"
58
+ "the-sett/elm-pretty-printer": "3.1.0"
59
59
  }
60
60
  },
61
61
  "test-dependencies": {
62
62
  "direct": {},
63
63
  "indirect": {}
64
64
  }
65
- }
65
+ }
@@ -2,4 +2,5 @@ node_modules/
2
2
  elm-stuff/
3
3
  dist/
4
4
  .elm-pages/
5
- functions/render/elm-pages-cli.js
5
+ functions/render/elm-pages-cli.mjs
6
+ functions/server-render/elm-pages-cli.mjs
@@ -1,7 +1,7 @@
1
1
  [build]
2
2
  functions = "functions/"
3
3
  publish = "dist/"
4
- command = "mkdir bin && export PATH=\"/opt/build/repo/bin:$PATH\" && echo $PATH && curl https://static.lamdera.com/bin/linux/lamdera -o bin/lamdera && chmod a+x bin/lamdera && export ELM_HOME=\"$NETLIFY_BUILD_BASE/cache/elm\" && npm install && npm run build"
4
+ command = "export ELM_HOME=\"$NETLIFY_BUILD_BASE/cache/elm\" && npm install && npm run build"
5
5
 
6
6
  [dev]
7
7
  command = "npm start"
@@ -7,12 +7,13 @@
7
7
  "build": "elm-pages build"
8
8
  },
9
9
  "devDependencies": {
10
- "elm-codegen": "^0.3.0",
10
+ "elm-codegen": "^0.5.1",
11
11
  "elm-optimize-level-2": "^0.3.5",
12
- "elm-pages": "^3.0.3",
13
- "elm-review": "^2.10.2",
14
- "elm-tooling": "^1.14.0",
15
- "vite": "^4.3.5"
12
+ "elm-pages": "^3.0.10",
13
+ "elm-review": "^2.10.3",
14
+ "elm-tooling": "^1.15.0",
15
+ "lamdera": "^0.19.1-1.2.1-1",
16
+ "vite": "^5.0.11"
16
17
  },
17
18
  "dependencies": {
18
19
  "@netlify/functions": "^1.4.0"
@@ -8,19 +8,19 @@
8
8
  "dependencies": {
9
9
  "direct": {
10
10
  "dillonkearns/elm-cli-options-parser": "3.2.0",
11
- "dillonkearns/elm-pages": "10.0.0",
11
+ "dillonkearns/elm-pages": "10.0.3",
12
12
  "elm/bytes": "1.0.8",
13
13
  "elm/core": "1.0.5",
14
14
  "elm/html": "1.0.0",
15
15
  "elm/json": "1.1.3",
16
- "mdgriffith/elm-codegen": "3.0.0"
16
+ "mdgriffith/elm-codegen": "4.1.1"
17
17
  },
18
18
  "indirect": {
19
19
  "Chadtech/elm-bool-extra": "2.4.2",
20
20
  "avh4/elm-color": "1.0.0",
21
21
  "danfishgold/base64-bytes": "1.1.0",
22
22
  "danyx23/elm-mimetype": "4.0.1",
23
- "dillonkearns/elm-bcp47-language-tag": "1.0.1",
23
+ "dillonkearns/elm-bcp47-language-tag": "2.0.0",
24
24
  "dillonkearns/elm-date-or-date-time": "2.0.0",
25
25
  "dillonkearns/elm-form": "3.0.0",
26
26
  "elm/browser": "1.0.2",
@@ -0,0 +1,87 @@
1
+ module AddStaticRoute 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 Gen.BackendTask
11
+ import Gen.Effect as Effect
12
+ import Gen.Html as Html
13
+ import Gen.Platform.Sub
14
+ import Gen.View
15
+ import Pages.Script as Script exposing (Script)
16
+ import Scaffold.Route exposing (Type(..))
17
+
18
+
19
+ type alias CliOptions =
20
+ { moduleName : List String
21
+ }
22
+
23
+
24
+ run : Script
25
+ run =
26
+ Script.withCliOptions program
27
+ (\cliOptions ->
28
+ cliOptions
29
+ |> createFile
30
+ |> Script.writeFile
31
+ |> BackendTask.allowFatal
32
+ )
33
+
34
+
35
+ program : Program.Config CliOptions
36
+ program =
37
+ Program.config
38
+ |> Program.add
39
+ (OptionsParser.build CliOptions
40
+ |> OptionsParser.with (Option.requiredPositionalArg "module" |> Scaffold.Route.moduleNameCliArg)
41
+ )
42
+
43
+
44
+ createFile : CliOptions -> { path : String, body : String }
45
+ createFile { moduleName } =
46
+ Scaffold.Route.preRender
47
+ { moduleName = moduleName
48
+ , pages =
49
+ Gen.BackendTask.succeed
50
+ (Elm.list [])
51
+ , data =
52
+ ( Alias (Type.record [])
53
+ , \routeParams ->
54
+ Gen.BackendTask.succeed (Elm.record [])
55
+ )
56
+ , head = \app -> Elm.list []
57
+ }
58
+ |> Scaffold.Route.buildWithLocalState
59
+ { view =
60
+ \{ shared, model, app } ->
61
+ Gen.View.make_.view
62
+ { title = moduleName |> String.join "." |> Elm.string
63
+ , body =
64
+ Elm.list
65
+ [ Html.h2 [] [ Html.text "New Page" ]
66
+ ]
67
+ }
68
+ , update =
69
+ \{ shared, app, msg, model } ->
70
+ Elm.Case.custom msg
71
+ (Type.named [] "Msg")
72
+ [ Elm.Case.branch0 "NoOp"
73
+ (Elm.tuple model
74
+ Effect.none
75
+ )
76
+ ]
77
+ , init =
78
+ \{ shared, app } ->
79
+ Elm.tuple (Elm.record []) Effect.none
80
+ , subscriptions =
81
+ \{ routeParams, path, shared, model } ->
82
+ Gen.Platform.Sub.none
83
+ , model =
84
+ Alias (Type.record [])
85
+ , msg =
86
+ Custom [ Elm.variant "NoOp" ]
87
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "elm-pages",
3
3
  "type": "module",
4
- "version": "3.0.9",
4
+ "version": "3.0.11",
5
5
  "homepage": "https://elm-pages.com",
6
6
  "moduleResolution": "node",
7
7
  "description": "Type-safe static sites, written in pure elm with your own custom elm-markup syntax.",
@@ -27,45 +27,46 @@
27
27
  "dependencies": {
28
28
  "busboy": "^1.6.0",
29
29
  "chokidar": "^3.5.3",
30
- "commander": "^10.0.1",
30
+ "commander": "^11.1.0",
31
31
  "connect": "^3.7.0",
32
32
  "cookie-signature": "^1.2.1",
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.17.18",
38
- "fs-extra": "^11.1.1",
39
- "globby": "13.1.4",
37
+ "esbuild": "^0.19.11",
38
+ "fs-extra": "^11.2.0",
39
+ "globby": "14.0.0",
40
40
  "gray-matter": "^4.0.3",
41
41
  "jsesc": "^3.0.2",
42
42
  "kleur": "^4.1.5",
43
- "make-fetch-happen": "^11.1.1",
44
- "memfs": "^3.5.1",
43
+ "make-fetch-happen": "^13.0.0",
44
+ "memfs": "^4.6.0",
45
45
  "micromatch": "^4.0.5",
46
46
  "serve-static": "^1.15.0",
47
- "terser": "^5.17.1",
48
- "vite": "^4.3.5",
49
- "which": "^3.0.1"
47
+ "terser": "^5.26.0",
48
+ "vite": "^5.0.11",
49
+ "which": "^4.0.0"
50
50
  },
51
51
  "devDependencies": {
52
- "@types/cross-spawn": "^6.0.2",
53
- "@types/fs-extra": "^11.0.1",
54
- "@types/make-fetch-happen": "^10.0.1",
55
- "@types/micromatch": "^4.0.2",
56
- "@types/node": "^20.1.0",
57
- "@types/serve-static": "^1.15.1",
58
- "cypress": "^13.3.0",
59
- "elm-codegen": "^0.3.0",
52
+ "@types/cross-spawn": "^6.0.6",
53
+ "@types/fs-extra": "^11.0.4",
54
+ "@types/make-fetch-happen": "^10.0.4",
55
+ "@types/micromatch": "^4.0.6",
56
+ "@types/node": "^20.10.7",
57
+ "@types/serve-static": "^1.15.5",
58
+ "cypress": "^13.6.2",
59
+ "elm-codegen": "^0.5.1",
60
60
  "elm-optimize-level-2": "^0.3.5",
61
- "elm-review": "^2.10.2",
61
+ "elm-review": "^2.10.3",
62
62
  "elm-test": "^0.19.1-revision12",
63
- "elm-tooling": "^1.14.0",
64
- "elm-verify-examples": "^5.2.0",
63
+ "elm-tooling": "^1.15.0",
64
+ "elm-verify-examples": "^5.3.0",
65
65
  "elmi-to-json": "^1.4.3",
66
- "typescript": "^5.0.4",
67
- "vite": "^4.3.5",
68
- "vitest": "^0.31.0"
66
+ "lamdera": "^0.19.1-1.2.1-1",
67
+ "typescript": "^5.3.3",
68
+ "vite": "^5.0.11",
69
+ "vitest": "^1.1.3"
69
70
  },
70
71
  "files": [
71
72
  "adapter/",
package/src/ApiRoute.elm CHANGED
@@ -120,41 +120,52 @@ You define your ApiRoute's in `app/Api.elm`. Here's a simple example:
120
120
  requestPrinterExample : ApiRoute ApiRoute.Response
121
121
  requestPrinterExample =
122
122
  ApiRoute.succeed
123
- (Server.Request.map4
124
- (\rawBody method cookies queryParams ->
125
- Encode.object
126
- [ ( "rawBody"
127
- , rawBody
128
- |> Maybe.map Encode.string
129
- |> Maybe.withDefault Encode.null
130
- )
131
- , ( "method"
132
- , method
133
- |> Server.Request.methodToString
134
- |> Encode.string
135
- )
136
- , ( "cookies"
137
- , cookies
138
- |> Encode.dict
139
- identity
140
- Encode.string
141
- )
142
- , ( "queryParams"
143
- , queryParams
144
- |> Encode.dict
145
- identity
146
- (Encode.list Encode.string)
147
- )
148
- ]
149
- |> Response.json
150
- |> BackendTask.succeed
151
- )
152
- Server.Request.rawBody
153
- Server.Request.method
154
- Server.Request.allCookies
155
- Server.Request.queryParams
123
+ (\pageId revisionId request ->
124
+ Encode.object
125
+ [ ( "pageId"
126
+ , Encode.string pageId
127
+ )
128
+ , ( "revisionId"
129
+ , Encode.string revisionId
130
+ )
131
+ , ( "body"
132
+ , request
133
+ |> Server.Request.body
134
+ |> Maybe.map Encode.string
135
+ |> Maybe.withDefault Encode.null
136
+ )
137
+ , ( "method"
138
+ , request
139
+ |> Server.Request.method
140
+ |> Server.Request.methodToString
141
+ |> Encode.string
142
+ )
143
+ , ( "cookies"
144
+ , request
145
+ |> Server.Request.cookies
146
+ |> Encode.dict
147
+ identity
148
+ Encode.string
149
+ )
150
+ , ( "queryParams"
151
+ , request
152
+ |> Server.Request.queryParams
153
+ |> Encode.dict
154
+ identity
155
+ (Encode.list Encode.string)
156
+ )
157
+ ]
158
+ |> Response.json
159
+ |> BackendTask.succeed
156
160
  )
157
- |> ApiRoute.literal "api"
161
+ -- Path: /pages/:pageId/revisions/:revisionId/request-test
162
+ |> ApiRoute.literal "pages"
163
+ |> ApiRoute.slash
164
+ |> ApiRoute.capture
165
+ |> ApiRoute.slash
166
+ |> ApiRoute.literal "revisions"
167
+ |> ApiRoute.slash
168
+ |> ApiRoute.capture
158
169
  |> ApiRoute.slash
159
170
  |> ApiRoute.literal "request-test"
160
171
  |> ApiRoute.serverRender
@@ -5,7 +5,8 @@ module BackendTask.File exposing
5
5
  )
6
6
 
7
7
  {-| This module lets you read files from the local filesystem as a [`BackendTask`](BackendTask#BackendTask).
8
- File paths are relative to the root of your `elm-pages` project (next to the `elm.json` file and `src/` directory).
8
+ File paths are relative to the root of your `elm-pages` project (next to the `elm.json` file and `src/` directory), or
9
+ you can pass in absolute paths beginning with a `/`.
9
10
 
10
11
 
11
12
  ## Files With Frontmatter