@sealcode/sealgen 0.17.30 → 0.17.32

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.
@@ -1,2 +1,5 @@
1
1
  export declare function generateURL(actionName: string, url: string): string;
2
+ export declare function sortRoutes<T extends {
3
+ url: string;
4
+ }>(urls: T[]): T[];
2
5
  export declare function generateRoutes(): Promise<void>;
@@ -33,6 +33,11 @@ function generateURL(actionName, url) {
33
33
  ${actionName}URL.params = [${params.map((param) => `"${param}"`).join(",")}];
34
34
  ${actionName}URL.rawURL = "${encodeURI(url)}";`;
35
35
  }
36
+ function sortRoutes(urls) {
37
+ return urls.sort(
38
+ ({ url: url1 }, { url: url2 }) => url1.includes(":") ? 1 : url2.includes(":") ? -1 : url1 < url2 ? -1 : 1
39
+ );
40
+ }
36
41
  async function generateRoutes() {
37
42
  const files = await Promise.all(
38
43
  (await walkDir(target_locreq.resolve("src/back/routes"))).filter(
@@ -60,7 +65,7 @@ import type Router from "@koa/router";
60
65
  import { mount } from "@sealcode/sealgen";
61
66
  import * as URLs from "./urls.js"
62
67
 
63
- ${files.map(
68
+ ${sortRoutes(files).map(
64
69
  ({ actionName, fullpath }) => `import { default as ${actionName} } from "${importPath(
65
70
  target_locreq.resolve("src/back/routes/routes.ts"),
66
71
  fullpath
@@ -68,13 +73,11 @@ ${files.map(
68
73
  ).join("\n")}
69
74
 
70
75
  export default function mountAutoRoutes(router: Router) {
71
- ${files.sort(
72
- ({ url: url1 }, { url: url2 }) => url1.includes(":") ? 1 : url2.includes(":") ? -1 : url1 < url2 ? -1 : 1
73
- ).map(
76
+ ${sortRoutes(files).map(
74
77
  ({ actionName }) => ` mount(router, URLs.${actionName}URL, ${actionName});`
75
78
  ).join("\n")}
76
79
  }`;
77
- const urls_content = `${files.sort(({ url: url1 }, { url: url2 }) => url1 < url2 ? -1 : 1).map(({ actionName, url }) => generateURL(actionName, url)).join("\n")}
80
+ const urls_content = `${sortRoutes(files).sort(({ url: url1 }, { url: url2 }) => url1 < url2 ? -1 : 1).map(({ actionName, url }) => generateURL(actionName, url)).join("\n")}
78
81
  `;
79
82
  const prettier_config = await getPrettierConfig();
80
83
  await fs.writeFile(
@@ -91,6 +94,7 @@ ${files.sort(
91
94
  }
92
95
  export {
93
96
  generateRoutes,
94
- generateURL
97
+ generateURL,
98
+ sortRoutes
95
99
  };
96
100
  //# sourceMappingURL=generate-routes.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealcode/sealgen",
3
- "version": "0.17.30",
3
+ "version": "0.17.32",
4
4
  "description": "Module to automate adding routes and collections to a sealious application",
5
5
  "main": "lib/index.js",
6
6
  "type": "module",
@@ -88,6 +88,6 @@
88
88
  "peerDependencies": {
89
89
  "koa": "^2.13.0",
90
90
  "koa-responsive-image-router": "^0.2.24",
91
- "sealious": "^0.19.8"
91
+ "sealious": "^0.20"
92
92
  }
93
93
  }
@@ -47,6 +47,18 @@ export function generateURL(actionName: string, url: string) {
47
47
  ${actionName}URL.rawURL = "${encodeURI(url)}";`;
48
48
  }
49
49
 
50
+ export function sortRoutes<T extends { url: string }>(urls: T[]): T[] {
51
+ return urls.sort(({ url: url1 }, { url: url2 }) =>
52
+ url1.includes(":") // make sure the parametrized ones come later, so the more concrete ones show up first. This is not a full solution, but works for single-parameter urls
53
+ ? 1
54
+ : url2.includes(":")
55
+ ? -1
56
+ : url1 < url2
57
+ ? -1
58
+ : 1
59
+ );
60
+ }
61
+
50
62
  export async function generateRoutes(): Promise<void> {
51
63
  const files = await Promise.all(
52
64
  (
@@ -84,7 +96,7 @@ import type Router from "@koa/router";
84
96
  import { mount } from "@sealcode/sealgen";
85
97
  import * as URLs from "./urls.js"
86
98
 
87
- ${files
99
+ ${sortRoutes(files)
88
100
  .map(
89
101
  ({ actionName, fullpath }) =>
90
102
  `import { default as ${actionName} } from "${importPath(
@@ -95,17 +107,7 @@ ${files
95
107
  .join("\n")}
96
108
 
97
109
  export default function mountAutoRoutes(router: Router) {
98
- ${files
99
-
100
- .sort(({ url: url1 }, { url: url2 }) =>
101
- url1.includes(":") // make sure the parametrized ones come later, so the more concrete ones show up first. This is not a full solution, but works for single-parameter urls
102
- ? 1
103
- : url2.includes(":")
104
- ? -1
105
- : url1 < url2
106
- ? -1
107
- : 1
108
- )
110
+ ${sortRoutes(files)
109
111
  .map(
110
112
  ({ actionName }) =>
111
113
  ` mount(router, URLs.${actionName}URL, ${actionName});`
@@ -113,7 +115,7 @@ ${files
113
115
  .join("\n")}
114
116
  }`;
115
117
 
116
- const urls_content = `${files
118
+ const urls_content = `${sortRoutes(files)
117
119
  .sort(({ url: url1 }, { url: url2 }) => (url1 < url2 ? -1 : 1))
118
120
  .map(({ actionName, url }) => generateURL(actionName, url))
119
121
  .join("\n")}