elm-pages 3.0.2 → 3.0.4

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 (71) hide show
  1. package/README.md +6 -66
  2. package/codegen/elm-pages-codegen.cjs +1 -1
  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/js/Reporter.elm.js +2 -2
  9. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/Runner.elm.js +85 -79
  10. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  11. package/generator/dead-code-review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  12. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/d.dat +0 -0
  13. package/generator/review/elm-stuff/tests-0.19.1/elm-stuff/0.19.1/i.dat +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/js/Reporter.elm.js +2 -2
  16. package/generator/review/elm-stuff/tests-0.19.1/js/Runner.elm.js +77 -77
  17. package/generator/review/elm-stuff/tests-0.19.1/js/node_runner.js +1 -1
  18. package/generator/review/elm-stuff/tests-0.19.1/js/node_supervisor.js +4 -4
  19. package/generator/src/cli.js +25 -6
  20. package/generator/src/compatibility-key.js +1 -1
  21. package/generator/src/parse-remote.js +43 -0
  22. package/generator/src/render.js +1 -1
  23. package/generator/src/resolve-elm-module.js +83 -2
  24. package/generator/src/rewrite-elm-json.js +6 -1
  25. package/generator/template/elm.json +1 -1
  26. package/generator/template/package.json +2 -2
  27. package/package.json +1 -1
  28. package/src/Internal/Request.elm +0 -5
  29. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/dependencies.c59ecaf7fa8379e3a2d0f793fe9784e3060cb64a6d1fe22b8f6a054502021dbe.json +0 -1
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. 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
  40. 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
  41. 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
  42. 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
  43. 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
  44. 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
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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
  51. 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
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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
  63. 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
  64. 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
  65. 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
  66. 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
  67. 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
  68. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elm.json +0 -38
  69. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/elmTestOutput.js +0 -30883
  70. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/package.json +0 -1
  71. package/generator/dead-code-review/elm-stuff/generated-code/elm-community/elm-test/0.19.1-revision9/src/Test/Generated/Main.elm +0 -27
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @param {string} input
3
+ */
4
+ export function parse(input) {
5
+ const patterns = [
6
+ /https?:\/\/github\.com\/(?<owner>[^/]+)\/(?<repo>[^/]+)(\/(blob|tree)\/(?<branch>[^/]+)(\/(?<filePath>.*)))?(#?.*)$/,
7
+ /github:(?<owner>[^\/]+)\/(?<repo>[^\/]+):(?<filePath>.*)$/,
8
+ /http(s)?:\/\/raw\.githubusercontent\.com\/(?<owner>[^\/]+)\/(?<repo>[^\/]+)\/(?<branch>[^\/]+)\/(?<filePath>.*)$/,
9
+ ];
10
+ const match = patterns.map((pattern) => input.match(pattern)).find((m) => m);
11
+
12
+ if (match) {
13
+ const g = match.groups;
14
+ return {
15
+ remote: `https://github.com/${g.owner}/${g.repo}.git`,
16
+ filePath: g.filePath || null,
17
+ branch: g.branch || null,
18
+ owner: g.owner,
19
+ repo: g.repo,
20
+ };
21
+ } else {
22
+ const gistPatterns = [
23
+ /https?:\/\/gist\.github.com\/(?<owner>[^\/]+)\/(?<repo>[^\/]+)(\/?#(?<filePath>.*))?$/,
24
+ /https?:\/\/gist\.github.com\/(?<repo>[^\/]+)(\/?#(?<filePath>.*))?$/,
25
+ /https?:\/\/gist\.githubusercontent\.com\/(?<owner>[^\/]+)\/(?<repo>[^\/]+)\/raw\/(?<sha>[^/]+)\/(?<filePath>.*)?$/,
26
+ ];
27
+ const gistMatch = gistPatterns
28
+ .map((pattern) => input.match(pattern))
29
+ .find((m) => m);
30
+ if (gistMatch) {
31
+ const g = gistMatch.groups;
32
+ return {
33
+ remote: `https://gist.github.com/${g.repo}.git`,
34
+ filePath: g.filePath || "Main.elm",
35
+ branch: null,
36
+ owner: g.owner || "gist",
37
+ repo: g.repo,
38
+ };
39
+ } else {
40
+ return null;
41
+ }
42
+ }
43
+ }
@@ -124,7 +124,7 @@ function runGeneratorAppHelp(
124
124
  return new Promise((resolve, reject) => {
125
125
  const isBytes = pagePath.match(/content\.dat\/?$/);
126
126
 
127
- app = elmModule.Elm.Main.init({
127
+ app = elmModule.Elm.ScriptMain.init({
128
128
  flags: {
129
129
  compatibilityKey,
130
130
  argv: ["", `elm-pages run ${scriptModuleName}`, ...cliOptions],
@@ -1,5 +1,7 @@
1
1
  import * as fs from "node:fs";
2
2
  import * as path from "node:path";
3
+ import { spawn } from "cross-spawn";
4
+ import { parse } from "../src/parse-remote.js";
3
5
 
4
6
  function findNearestElmJson(filePath) {
5
7
  function searchForElmJson(directory) {
@@ -48,8 +50,14 @@ function getElmModuleName(inputPath) {
48
50
  return { projectDirectory, moduleName, sourceDirectory: matchingSourceDir };
49
51
  }
50
52
 
51
- export function resolveInputPathOrModuleName(inputPathOrModuleName) {
52
- if (
53
+ export async function resolveInputPathOrModuleName(inputPathOrModuleName) {
54
+ const parsed = parse(inputPathOrModuleName);
55
+ if (parsed) {
56
+ const { filePath } = parsed;
57
+ const repoPath = await downloadRemoteScript(parsed);
58
+ const absolutePathForScript = path.join(repoPath, filePath);
59
+ return getElmModuleName(absolutePathForScript);
60
+ } else if (
53
61
  /^[A-Z][a-zA-Z0-9_]*(\.[A-Z][a-zA-Z0-9_]*)*$/.test(inputPathOrModuleName)
54
62
  ) {
55
63
  const absolutePathForScript = path.resolve("./script/src");
@@ -62,3 +70,76 @@ export function resolveInputPathOrModuleName(inputPathOrModuleName) {
62
70
  return getElmModuleName(inputPathOrModuleName);
63
71
  }
64
72
  }
73
+
74
+ async function downloadRemoteScript({ remote, owner, repo, branch }) {
75
+ try {
76
+ const cloneToPath = path.join(
77
+ "elm-stuff",
78
+ "elm-pages",
79
+ "remote-scripts",
80
+ owner,
81
+ repo
82
+ );
83
+
84
+ const repoExists = fs.existsSync(cloneToPath);
85
+
86
+ if (repoExists) {
87
+ await exec("git", ["pull"], {
88
+ cwd: cloneToPath,
89
+ });
90
+ const defaultBranch = (
91
+ await exec("git", ["remote", "show", "origin"], {
92
+ cwd: cloneToPath,
93
+ })
94
+ ).match(/HEAD branch: (?<defaultBranch>.*)/).groups.defaultBranch;
95
+ await exec("git", ["checkout", branch || defaultBranch], {
96
+ cwd: cloneToPath,
97
+ });
98
+ } else {
99
+ if (branch) {
100
+ await exec("git", [
101
+ "clone",
102
+ "--branch",
103
+ branch,
104
+ "--depth=1",
105
+ remote,
106
+ cloneToPath,
107
+ ]);
108
+ } else {
109
+ await exec("git", ["clone", "--depth=1", remote, cloneToPath]);
110
+ }
111
+ }
112
+ return cloneToPath;
113
+ } catch (error) {
114
+ process.exitCode = 1;
115
+ throw `I encountered an error cloning the repo:\n\n ${error}`;
116
+ }
117
+ }
118
+
119
+ /**
120
+ * @param {string} command
121
+ * @param {readonly string[]} args
122
+ * @param {import("child_process").SpawnOptionsWithoutStdio} [ options ]
123
+ */
124
+ function exec(command, args, options) {
125
+ return new Promise(async (resolve, reject) => {
126
+ let subprocess = spawn(command, args, options);
127
+ let commandOutput = "";
128
+
129
+ subprocess.stderr.on("data", function (data) {
130
+ commandOutput += data;
131
+ });
132
+
133
+ subprocess.stdout.on("data", function (data) {
134
+ commandOutput += data;
135
+ });
136
+
137
+ subprocess.on("close", async (code) => {
138
+ if (code === 0) {
139
+ resolve(commandOutput);
140
+ } else {
141
+ reject(commandOutput);
142
+ }
143
+ });
144
+ });
145
+ }
@@ -28,8 +28,13 @@ function rewriteElmJsonHelp(elmJson, options) {
28
28
  }
29
29
  );
30
30
  // 2. prepend ../../../ to remaining
31
+
31
32
  elmJson["source-directories"] = elmJson["source-directories"].map((item) => {
32
- return "../../" + item;
33
+ if (item === ".") {
34
+ return "parentDirectory";
35
+ } else {
36
+ return "../../" + item;
37
+ }
33
38
  });
34
39
  if (options && options.executableName === "elm") {
35
40
  // elm, don't add lamdera/codecs
@@ -14,7 +14,7 @@
14
14
  "dillonkearns/elm-bcp47-language-tag": "1.0.1",
15
15
  "dillonkearns/elm-form": "3.0.0",
16
16
  "dillonkearns/elm-markdown": "7.0.1",
17
- "dillonkearns/elm-pages": "10.0.0",
17
+ "dillonkearns/elm-pages": "10.0.1",
18
18
  "elm/browser": "1.0.2",
19
19
  "elm/bytes": "1.0.8",
20
20
  "elm/core": "1.0.5",
@@ -9,7 +9,7 @@
9
9
  "devDependencies": {
10
10
  "elm-codegen": "^0.3.0",
11
11
  "elm-optimize-level-2": "^0.3.5",
12
- "elm-pages": "^3.0.0-beta.42",
12
+ "elm-pages": "^3.0.3",
13
13
  "elm-review": "^2.10.2",
14
14
  "elm-tooling": "^1.14.0",
15
15
  "vite": "^4.3.5"
@@ -17,4 +17,4 @@
17
17
  "dependencies": {
18
18
  "@netlify/functions": "^1.4.0"
19
19
  }
20
- }
20
+ }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "elm-pages",
3
3
  "type": "module",
4
- "version": "3.0.2",
4
+ "version": "3.0.4",
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.",
@@ -62,11 +62,6 @@ requestDecoder =
62
62
  )
63
63
 
64
64
 
65
- andMap : Decode.Decoder a -> Decode.Decoder (a -> b) -> Decode.Decoder b
66
- andMap =
67
- Decode.map2 (|>)
68
-
69
-
70
65
  optionalField : String -> Decode.Decoder a -> Decode.Decoder (Maybe a)
71
66
  optionalField fieldName decoder_ =
72
67
  let
@@ -1 +0,0 @@
1
- {"direct":{"elm/core":"1.0.5","elm/json":"1.1.3","elm/random":"1.0.0","elm/time":"1.0.0","elm-community/result-extra":"2.4.0","elm-explorations/test":"2.1.1","jfmengels/elm-review":"2.13.0","stil4m/elm-syntax":"7.2.9"},"indirect":{"elm/bytes":"1.0.8","elm/html":"1.0.0","elm/parser":"1.1.0","elm/project-metadata-utils":"1.0.2","elm/virtual-dom":"1.0.3","elm-community/list-extra":"8.7.0","miniBill/elm-unicode":"1.0.3","rtfeldman/elm-hex":"1.0.0","stil4m/structured-writer":"1.0.3"}}
@@ -1,38 +0,0 @@
1
- {
2
- "type": "application",
3
- "source-directories": [
4
- "src",
5
- "../../../../../../../node_modules/elm-test/elm/src",
6
- "../../../../../src",
7
- "../../../../../../../src",
8
- "../../../../../tests"
9
- ],
10
- "elm-version": "0.19.1",
11
- "dependencies": {
12
- "direct": {
13
- "elm/core": "1.0.5",
14
- "elm/json": "1.1.3",
15
- "elm/random": "1.0.0",
16
- "elm/time": "1.0.0",
17
- "elm-community/result-extra": "2.4.0",
18
- "elm-explorations/test": "2.1.1",
19
- "jfmengels/elm-review": "2.13.0",
20
- "stil4m/elm-syntax": "7.2.9"
21
- },
22
- "indirect": {
23
- "elm/bytes": "1.0.8",
24
- "elm/html": "1.0.0",
25
- "elm/parser": "1.1.0",
26
- "elm/project-metadata-utils": "1.0.2",
27
- "elm/virtual-dom": "1.0.3",
28
- "elm-community/list-extra": "8.7.0",
29
- "miniBill/elm-unicode": "1.0.3",
30
- "rtfeldman/elm-hex": "1.0.0",
31
- "stil4m/structured-writer": "1.0.3"
32
- }
33
- },
34
- "test-dependencies": {
35
- "direct": {},
36
- "indirect": {}
37
- }
38
- }