@sealcode/sealgen 0.8.22 → 0.8.23
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/@types/mount.d.ts +3 -1
- package/@types/sealgen-url.d.ts +0 -0
- package/lib/generate-routes.js +11 -5
- package/lib/generate-routes.js.map +1 -1
- package/lib/mount.js +5 -4
- package/lib/mount.js.map +1 -1
- package/lib/sealgen-url.js +1 -0
- package/lib/sealgen-url.js.map +1 -0
- package/package.json +1 -1
- package/src/generate-routes.ts +11 -8
- package/src/mount.ts +10 -5
package/@types/mount.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/// <reference types="koa__router" />
|
|
2
2
|
import Router from "@koa/router";
|
|
3
3
|
import { Mountable } from "./page/mountable";
|
|
4
|
-
export declare function mount(router: Router, url: string
|
|
4
|
+
export declare function mount(router: Router, url: string | {
|
|
5
|
+
rawURL: string;
|
|
6
|
+
}, mountable: Mountable): void;
|
|
File without changes
|
package/lib/generate-routes.js
CHANGED
|
@@ -41,17 +41,23 @@ async function extractActionName(full_file_path) {
|
|
|
41
41
|
}
|
|
42
42
|
return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
|
|
43
43
|
}
|
|
44
|
-
function generateURL(url) {
|
|
44
|
+
function generateURL(actionName, url) {
|
|
45
45
|
const parts = url.split("/");
|
|
46
46
|
const params = parts
|
|
47
47
|
.filter((part) => part.startsWith(":"))
|
|
48
48
|
.map((part) => part.slice(1));
|
|
49
49
|
if (params.length === 0) {
|
|
50
|
-
return `"${url}"
|
|
50
|
+
return `export const ${actionName}URL = "${url}";`;
|
|
51
51
|
}
|
|
52
|
-
return `
|
|
52
|
+
return `export const ${actionName}URL = (${params
|
|
53
|
+
.map((s) => s + ": string")
|
|
54
|
+
.join(", ")})=>\`${parts
|
|
53
55
|
.map((part) => part.startsWith(":") ? "${" + part.slice(1) + "}" : part)
|
|
54
|
-
.join("/")}
|
|
56
|
+
.join("/")}\`;
|
|
57
|
+
${actionName}URL.params = [${params
|
|
58
|
+
.map((param) => `"${param}"`)
|
|
59
|
+
.join(",")}];
|
|
60
|
+
${actionName}URL.rawURL = "${url}";`;
|
|
55
61
|
}
|
|
56
62
|
async function generateRoutes() {
|
|
57
63
|
const files = await Promise.all((await walk_1.walkDir(target_locreq.resolve("src/back/routes")))
|
|
@@ -85,7 +91,7 @@ ${files
|
|
|
85
91
|
.join("\n")}
|
|
86
92
|
}`;
|
|
87
93
|
const urls_content = `${files
|
|
88
|
-
.map(({ actionName, url }) =>
|
|
94
|
+
.map(({ actionName, url }) => generateURL(actionName, url))
|
|
89
95
|
.join("\n")}
|
|
90
96
|
`;
|
|
91
97
|
const prettier_config = await prettier_1.getPrettierConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2BAAoC;AACpC,mDAAqC;AACrC,+BAAgC;AAChC,oDAA6B;AAC7B,uCAAuC;AACvC,qDAAiD;AACjD,2DAAiE;AACjE,iEAAgE;AAChE,+CAAqD;AAErD,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7C,KAAK,UAAU,iBAAiB,CAAC,cAAsB;IACtD,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,mCAAmC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACtE,IAAI,MAAM,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KAChE;IACD,OAAO,0BAAU,CAChB,MAAM,CAAC,CAAC,CAAC,EACT,0BAAU,CAAC,MAAM,EACjB,+BAA+B,CAC/B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;
|
|
1
|
+
{"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":"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"}
|
package/lib/mount.js
CHANGED
|
@@ -11,10 +11,11 @@ async function handleHtmlPromise(ctx, next) {
|
|
|
11
11
|
ctx.set("content-type", "text/html;charset=utf-8");
|
|
12
12
|
}
|
|
13
13
|
function mount(router, url, mountable) {
|
|
14
|
-
|
|
14
|
+
const raw_url = typeof url === "string" ? url : url.rawURL;
|
|
15
|
+
router.use(raw_url, sealious_1.Middlewares.extractContext(), sealious_1.Middlewares.parseBody(), handleHtmlPromise);
|
|
15
16
|
mountable.init();
|
|
16
17
|
// to automatically add trailing slashes:
|
|
17
|
-
router.get(
|
|
18
|
+
router.get(raw_url.slice(0, -1), async (ctx, next) => {
|
|
18
19
|
const url2 = ctx.URL;
|
|
19
20
|
if (!url2.pathname.endsWith("/")) {
|
|
20
21
|
url2.pathname += "/";
|
|
@@ -22,7 +23,7 @@ function mount(router, url, mountable) {
|
|
|
22
23
|
}
|
|
23
24
|
await next();
|
|
24
25
|
});
|
|
25
|
-
router.use(
|
|
26
|
+
router.use(raw_url, async (ctx, next) => {
|
|
26
27
|
ctx.set("content-type", "text/html;charset=utf-8");
|
|
27
28
|
const access_result = await mountable.canAccess(ctx);
|
|
28
29
|
if (!access_result.canAccess) {
|
|
@@ -32,7 +33,7 @@ function mount(router, url, mountable) {
|
|
|
32
33
|
}
|
|
33
34
|
await next();
|
|
34
35
|
});
|
|
35
|
-
mountable.mount(router,
|
|
36
|
+
mountable.mount(router, raw_url);
|
|
36
37
|
}
|
|
37
38
|
exports.mount = mount;
|
|
38
39
|
//# sourceMappingURL=mount.js.map
|
package/lib/mount.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":";;;AAEA,uCAAuC;AAGvC,KAAK,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAc;IAC5D,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE;QAChC,mEAAmE;QACnE,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;KAC1B;IACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,KAAK,
|
|
1
|
+
{"version":3,"file":"mount.js","sourceRoot":"","sources":["../src/mount.ts"],"names":[],"mappings":";;;AAEA,uCAAuC;AAGvC,KAAK,UAAU,iBAAiB,CAAC,GAAY,EAAE,IAAc;IAC5D,MAAM,IAAI,EAAE,CAAC;IACb,IAAI,GAAG,CAAC,IAAI,YAAY,OAAO,EAAE;QAChC,mEAAmE;QACnE,GAAG,CAAC,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC;KAC1B;IACD,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;AACpD,CAAC;AAED,SAAgB,KAAK,CACpB,MAAc,EACd,GAAgC,EAChC,SAAoB;IAEpB,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;IAC3D,MAAM,CAAC,GAAG,CACT,OAAO,EACP,sBAAW,CAAC,cAAc,EAAE,EAC5B,sBAAW,CAAC,SAAS,EAAE,EACvB,iBAAiB,CACjB,CAAC;IACF,SAAS,CAAC,IAAI,EAAE,CAAC;IAEjB,yCAAyC;IACzC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACpD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACjC,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC;YACrB,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SAC9B;QACD,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;QACvC,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACrD,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC7B,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,GAAG,CAAC,IAAI,GAAG,aAAa,CAAC,OAAO,IAAI,WAAW,CAAC;YAChD,OAAO;SACP;QACD,MAAM,IAAI,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AApCD,sBAoCC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=sealgen-url.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sealgen-url.js","sourceRoot":"","sources":["../src/sealgen-url.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
package/src/generate-routes.ts
CHANGED
|
@@ -23,19 +23,25 @@ async function extractActionName(full_file_path: string): Promise<string> {
|
|
|
23
23
|
);
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
function generateURL(url: string) {
|
|
26
|
+
function generateURL(actionName: string, url: string) {
|
|
27
27
|
const parts = url.split("/");
|
|
28
28
|
const params = parts
|
|
29
29
|
.filter((part) => part.startsWith(":"))
|
|
30
30
|
.map((part) => part.slice(1));
|
|
31
31
|
if (params.length === 0) {
|
|
32
|
-
return `"${url}"
|
|
32
|
+
return `export const ${actionName}URL = "${url}";`;
|
|
33
33
|
}
|
|
34
|
-
return `
|
|
34
|
+
return `export const ${actionName}URL = (${params
|
|
35
|
+
.map((s) => s + ": string")
|
|
36
|
+
.join(", ")})=>\`${parts
|
|
35
37
|
.map((part) =>
|
|
36
38
|
part.startsWith(":") ? "${" + part.slice(1) + "}" : part
|
|
37
39
|
)
|
|
38
|
-
.join("/")}
|
|
40
|
+
.join("/")}\`;
|
|
41
|
+
${actionName}URL.params = [${params
|
|
42
|
+
.map((param) => `"${param}"`)
|
|
43
|
+
.join(",")}];
|
|
44
|
+
${actionName}URL.rawURL = "${url}";`;
|
|
39
45
|
}
|
|
40
46
|
|
|
41
47
|
export async function generateRoutes(): Promise<void> {
|
|
@@ -92,10 +98,7 @@ ${files
|
|
|
92
98
|
}`;
|
|
93
99
|
|
|
94
100
|
const urls_content = `${files
|
|
95
|
-
.map(
|
|
96
|
-
({ actionName, url }) =>
|
|
97
|
-
`export const ${actionName}URL = ${generateURL(url)};`
|
|
98
|
-
)
|
|
101
|
+
.map(({ actionName, url }) => generateURL(actionName, url))
|
|
99
102
|
.join("\n")}
|
|
100
103
|
`;
|
|
101
104
|
|
package/src/mount.ts
CHANGED
|
@@ -12,9 +12,14 @@ async function handleHtmlPromise(ctx: Context, next: Koa.Next) {
|
|
|
12
12
|
ctx.set("content-type", "text/html;charset=utf-8");
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
export function mount(
|
|
15
|
+
export function mount(
|
|
16
|
+
router: Router,
|
|
17
|
+
url: string | { rawURL: string },
|
|
18
|
+
mountable: Mountable
|
|
19
|
+
): void {
|
|
20
|
+
const raw_url = typeof url === "string" ? url : url.rawURL;
|
|
16
21
|
router.use(
|
|
17
|
-
|
|
22
|
+
raw_url,
|
|
18
23
|
Middlewares.extractContext(),
|
|
19
24
|
Middlewares.parseBody(),
|
|
20
25
|
handleHtmlPromise
|
|
@@ -22,7 +27,7 @@ export function mount(router: Router, url: string, mountable: Mountable): void {
|
|
|
22
27
|
mountable.init();
|
|
23
28
|
|
|
24
29
|
// to automatically add trailing slashes:
|
|
25
|
-
router.get(
|
|
30
|
+
router.get(raw_url.slice(0, -1), async (ctx, next) => {
|
|
26
31
|
const url2 = ctx.URL;
|
|
27
32
|
if (!url2.pathname.endsWith("/")) {
|
|
28
33
|
url2.pathname += "/";
|
|
@@ -31,7 +36,7 @@ export function mount(router: Router, url: string, mountable: Mountable): void {
|
|
|
31
36
|
await next();
|
|
32
37
|
});
|
|
33
38
|
|
|
34
|
-
router.use(
|
|
39
|
+
router.use(raw_url, async (ctx, next) => {
|
|
35
40
|
ctx.set("content-type", "text/html;charset=utf-8");
|
|
36
41
|
const access_result = await mountable.canAccess(ctx);
|
|
37
42
|
if (!access_result.canAccess) {
|
|
@@ -42,5 +47,5 @@ export function mount(router: Router, url: string, mountable: Mountable): void {
|
|
|
42
47
|
await next();
|
|
43
48
|
});
|
|
44
49
|
|
|
45
|
-
mountable.mount(router,
|
|
50
|
+
mountable.mount(router, raw_url);
|
|
46
51
|
}
|