@sealcode/sealgen 0.4.1 → 0.4.2
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/forms/form.d.ts +3 -3
- package/@types/index.d.ts +3 -1
- package/@types/make-hidden-inputs.d.ts +2 -2
- package/@types/page/mountable.d.ts +3 -3
- package/@types/page/page.d.ts +2 -2
- package/@types/utils/translate.d.ts +3 -0
- package/lib/build.js +1 -1
- package/lib/build.js.map +1 -1
- package/lib/forms/controls/simple-input.js +1 -1
- package/lib/forms/fields/field.js +5 -1
- package/lib/forms/fields/field.js.map +1 -1
- package/lib/generate-routes.js +17 -8
- package/lib/generate-routes.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/make-hidden-inputs.js.map +1 -1
- package/lib/page/list.js +2 -1
- package/lib/page/list.js.map +1 -1
- package/lib/utils/translate.js +10 -0
- package/lib/utils/translate.js.map +1 -0
- package/package.json +2 -2
- package/src/build.ts +1 -1
- package/src/forms/controls/simple-input.ts +1 -1
- package/src/forms/fields/field.ts +11 -1
- package/src/forms/form.ts +2 -2
- package/src/generate-routes.ts +17 -8
- package/src/index.ts +3 -1
- package/src/make-hidden-inputs.ts +2 -2
- package/src/page/list.ts +3 -1
- package/src/page/mountable.ts +2 -2
- package/src/page/page.ts +1 -1
- package/src/utils/translate.ts +13 -0
package/@types/forms/form.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="koa__router" />
|
|
2
2
|
import { BaseContext } from "koa";
|
|
3
3
|
import Router from "@koa/router";
|
|
4
|
-
import { FlatTemplatable
|
|
4
|
+
import { FlatTemplatable } from "tempstream";
|
|
5
5
|
import { FormField } from "./fields/field";
|
|
6
6
|
import { Fields, Mountable, PageErrorMessage } from "../page/mountable";
|
|
7
7
|
export declare type FormDataPrimitive = string | string[] | undefined;
|
|
@@ -25,8 +25,8 @@ export declare abstract class Form<F extends Fields> extends Mountable<F> {
|
|
|
25
25
|
canAccess: boolean;
|
|
26
26
|
message: string;
|
|
27
27
|
}>;
|
|
28
|
-
renderError(_: BaseContext, error: PageErrorMessage): Promise<
|
|
29
|
-
render(ctx: BaseContext, data: FormData): Promise<
|
|
28
|
+
renderError(_: BaseContext, error: PageErrorMessage): Promise<FlatTemplatable>;
|
|
29
|
+
render(ctx: BaseContext, data: FormData): Promise<FlatTemplatable>;
|
|
30
30
|
makeFormTag(): FlatTemplatable;
|
|
31
31
|
onValuesInvalid(ctx: BaseContext, form_messages: FormMessage[]): Promise<void>;
|
|
32
32
|
onError(ctx: BaseContext, data: FormData, error: unknown): Promise<void>;
|
package/@types/index.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import Sealious from "sealious";
|
|
1
|
+
import Sealious, { App } from "sealious";
|
|
2
2
|
import { FormDataValue } from "./forms/form";
|
|
3
3
|
declare module "koa" {
|
|
4
4
|
interface BaseContext {
|
|
5
5
|
$context: Sealious.Context;
|
|
6
|
+
$app: App;
|
|
6
7
|
$body: Record<string, FormDataValue>;
|
|
7
8
|
}
|
|
8
9
|
}
|
|
@@ -14,3 +15,4 @@ export * from "./forms/form";
|
|
|
14
15
|
export * from "./page/props-parser";
|
|
15
16
|
export * from "./utils/utils";
|
|
16
17
|
export * from "./page/list";
|
|
18
|
+
export * from "./utils/translate";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { BaseContext } from "koa";
|
|
2
|
-
import {
|
|
2
|
+
import { FlatTemplatable } from "tempstream";
|
|
3
3
|
import { FormDataValue, FormField } from ".";
|
|
4
|
-
export declare function makeHiddenInputs(ctx: BaseContext, fields: Record<string, FormField>, values: Record<string, FormDataValue>, fields_to_skip: string[]):
|
|
4
|
+
export declare function makeHiddenInputs(ctx: BaseContext, fields: Record<string, FormField>, values: Record<string, FormDataValue>, fields_to_skip: string[]): FlatTemplatable;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import Router from "@koa/router";
|
|
3
3
|
import { FormControl } from "../forms/controls/form-control";
|
|
4
4
|
import { BaseContext } from "koa";
|
|
5
|
-
import { FlatTemplatable
|
|
5
|
+
import { FlatTemplatable } from "tempstream";
|
|
6
6
|
import { FormField } from "../forms/fields/field";
|
|
7
7
|
import { FormData, FormDataValue, FormMessage } from "../forms/form";
|
|
8
8
|
export declare type PageErrorMessage = {
|
|
@@ -19,7 +19,7 @@ export declare abstract class Mountable<F extends Fields = Fields> {
|
|
|
19
19
|
canAccess: boolean;
|
|
20
20
|
message: string;
|
|
21
21
|
}>;
|
|
22
|
-
abstract renderError(ctx: BaseContext, error: PageErrorMessage): Promise<
|
|
22
|
+
abstract renderError(ctx: BaseContext, error: PageErrorMessage): Promise<FlatTemplatable>;
|
|
23
23
|
abstract extractRawValues(ctx: BaseContext): Record<string, FormDataValue>;
|
|
24
24
|
validateValues(ctx: BaseContext, data: Record<string, FormDataValue>): Promise<{
|
|
25
25
|
valid: boolean;
|
|
@@ -32,5 +32,5 @@ export declare abstract class Mountable<F extends Fields = Fields> {
|
|
|
32
32
|
}>;
|
|
33
33
|
init(): void;
|
|
34
34
|
renderControls(ctx: BaseContext, data: FormData<keyof Fields>): FlatTemplatable;
|
|
35
|
-
renderMessages(_: BaseContext, data: FormData<keyof Fields>):
|
|
35
|
+
renderMessages(_: BaseContext, data: FormData<keyof Fields>): FlatTemplatable;
|
|
36
36
|
}
|
package/@types/page/page.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/// <reference types="koa__router" />
|
|
2
2
|
import Router from "@koa/router";
|
|
3
3
|
import { BaseContext } from "koa";
|
|
4
|
-
import { FlatTemplatable
|
|
4
|
+
import { FlatTemplatable } from "tempstream";
|
|
5
5
|
import { FormDataValue } from "../forms/form";
|
|
6
6
|
import { Fields, Mountable, PageErrorMessage } from "./mountable";
|
|
7
7
|
import { PagePropsParser } from "./props-parser";
|
|
@@ -14,6 +14,6 @@ export declare abstract class Page<F extends Fields = Record<string, never>> ext
|
|
|
14
14
|
message: string;
|
|
15
15
|
}>;
|
|
16
16
|
renderError(_: BaseContext, error: PageErrorMessage): Promise<FlatTemplatable>;
|
|
17
|
-
abstract render(ctx: BaseContext): Promise<
|
|
17
|
+
abstract render(ctx: BaseContext): Promise<FlatTemplatable>;
|
|
18
18
|
extractRawValues(ctx: BaseContext): Record<string, FormDataValue>;
|
|
19
19
|
}
|
package/lib/build.js
CHANGED
package/lib/build.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qCAA6C;AAC7C,6DAAiD;AACjD,mDAAqC;AACrC,0DAA4C;AAC5C,6DAA4D;AAC5D,yCAAsC;AACtC,iEAA6D;AAC7D,uDAAmD;AAEnD,KAAK,UAAU,QAAQ;IACtB,MAAM,CAAC,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACvC,mBAAI,CAAC,oBAAoB,CAAC;QAC1B,0CAAmB,EAAE;QACrB,gCAAc,EAAE;KAChB,CAAC,CAAC;IACH,MAAM,eAAK,CAAC;QACX,WAAW;QACX,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,QAAQ;QAChB,MAAM,EAAE,KAAK;KACb,CAAC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,UAAU,GAAuB,IAAI,CAAC;IAC1C,IAAI,KAAK,EAAE;QACV,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACpE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;YACxC,IAAI,CAAC,UAAU;gBAAE,OAAO;YACxB,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBAC/D,sDAAsD;gBACtD,MAAM,yCAAoB,EAAE,CAAC;gBAC7B,IAAI;oBACH,MAAM,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,IAAI,GAAG,CAAC,CAAC;iBAC5C;gBAAC,OAAO,CAAC,EAAE;oBACX,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ class SimpleInput extends controls_1.FormFieldControl {
|
|
|
18
18
|
const placeholder = this.options.placeholder || type;
|
|
19
19
|
const readonly = this.options.readonly || false;
|
|
20
20
|
const required = this.field.required;
|
|
21
|
-
return /* HTML */ `<div class="input">
|
|
21
|
+
return /* HTML */ `<div class="form-input form-input__wrapper">
|
|
22
22
|
<label for="${id}">${label}</label>
|
|
23
23
|
<input
|
|
24
24
|
id="${id}"
|
|
@@ -11,6 +11,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.FormField = void 0;
|
|
14
|
+
const translate_1 = require("../../utils/translate");
|
|
14
15
|
class FormField {
|
|
15
16
|
constructor(required = false) {
|
|
16
17
|
this.required = required;
|
|
@@ -21,7 +22,10 @@ class FormField {
|
|
|
21
22
|
async _validate(ctx, value) {
|
|
22
23
|
if (this.required &&
|
|
23
24
|
(value === "" || value === null || value === undefined)) {
|
|
24
|
-
return {
|
|
25
|
+
return {
|
|
26
|
+
valid: false,
|
|
27
|
+
message: translate_1.t(ctx, "field_is_required", [], "This field is required"),
|
|
28
|
+
};
|
|
25
29
|
}
|
|
26
30
|
return this.isValueValid(ctx, value);
|
|
27
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/forms/fields/field.ts"],"names":[],"mappings":";;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/forms/fields/field.ts"],"names":[],"mappings":";;;;;;;;;;;;;AACA,qDAA0C;AAqB1C,MAAsB,SAAS;IAE9B,YAAmB,WAAoB,KAAK;QAAzB,aAAQ,GAAR,QAAQ,CAAiB;IAAG,CAAC;IAEhD,IAAI,CAAC,SAAiB;QACrB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;IACvB,CAAC;IAEM,KAAK,CAAC,SAAS,CACrB,GAAgB,EAChB,KAAkB;QAElB,IACC,IAAI,CAAC,QAAQ;YACb,CAAC,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC,EACtD;YACD,OAAO;gBACN,KAAK,EAAE,KAAK;gBAEZ,OAAO,EAAE,aAAC,CACT,GAAG,EACH,mBAAmB,EACnB,EAAE,EACF,wBAAwB,CACxB;aACD,CAAC;SACF;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IAIM,KAAK,CAAC,YAAY,CACxB,GAAgB,EAChB,KAAkB;QAElB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAOD,KAAK,CAAC,QAAQ,CACb,GAAgB,EAChB,eAA8C;QAO9C,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAC9C,gCAAgC;YAChC,OAAO;gBACN,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,EAAE;gBACX,GAAG,EAAE,EAAE;aACP,CAAC;SACF;QACD,MAAM,GAAG,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,EACL,QAAQ,EACR,YAAY,EACZ,KAAK,EAAE,WAAW,GAClB,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE;YACd,OAAO;gBACN,KAAK,EAAE,KAAK;gBACZ,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE;gBAC5B,GAAG;gBACH,OAAO,EAAE,WAAW,IAAI,OAAO;aAC/B,CAAC;SACF;QACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,SAAS,CAC9C,GAAG,EACH,YAA2B,CAC3B,CAAC;QACF,OAAO;YACN,MAAM,EAAE,YAA2B;YACnC,KAAK;YACL,OAAO;YACP,GAAG,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;SAC/B,CAAC;IACH,CAAC;CACD;AAvFD,8BAuFC;AAED,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,2CAAyB;AACzB,mDAAiC"}
|
package/lib/generate-routes.js
CHANGED
|
@@ -35,6 +35,7 @@ async function generateRoutes() {
|
|
|
35
35
|
})));
|
|
36
36
|
await fs_1.promises.writeFile(target_locreq.resolve("src/back/routes/routes.ts"), `// DO NOT EDIT! This file is generated automaticaly with npm run generate-routes
|
|
37
37
|
|
|
38
|
+
import Koa, { BaseContext } from "koa";
|
|
38
39
|
import Router from "@koa/router";
|
|
39
40
|
import { Middlewares } from "sealious";
|
|
40
41
|
import { Mountable } from "@sealcode/sealgen";
|
|
@@ -47,22 +48,30 @@ ${files
|
|
|
47
48
|
.map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
|
|
48
49
|
.join("\n")}
|
|
49
50
|
|
|
51
|
+
async function handleHtmlPromise(ctx: BaseContext, next: Koa.Next) {
|
|
52
|
+
await next();
|
|
53
|
+
if (ctx.body instanceof Promise) {
|
|
54
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
55
|
+
ctx.body = await ctx.body;
|
|
56
|
+
}
|
|
57
|
+
ctx.set("content-type", "text/html;charset=utf-8");
|
|
58
|
+
}
|
|
59
|
+
|
|
50
60
|
function mount(router: Router, URL: string, mountable: Mountable) {
|
|
51
|
-
router.use(
|
|
61
|
+
router.use(
|
|
62
|
+
URL,
|
|
63
|
+
Middlewares.extractContext(),
|
|
64
|
+
Middlewares.parseBody(),
|
|
65
|
+
handleHtmlPromise
|
|
66
|
+
);
|
|
52
67
|
mountable.init();
|
|
53
68
|
mountable.mount(router, URL);
|
|
54
69
|
// to automatically add trailing slashes:
|
|
55
70
|
router.get(URL.slice(0, -1), (ctx) => ctx.redirect(URL));
|
|
71
|
+
router.use(URL, (ctx) => ctx.set("content-type", "text/html;charset=utf-8"));
|
|
56
72
|
}
|
|
57
73
|
|
|
58
74
|
export default function mountAutoRoutes(router: Router) {
|
|
59
|
-
router.use(async (ctx, next) => {
|
|
60
|
-
await next();
|
|
61
|
-
if (ctx.body instanceof Promise) {
|
|
62
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
63
|
-
ctx.body = await ctx.body;
|
|
64
|
-
}
|
|
65
|
-
});
|
|
66
75
|
${files
|
|
67
76
|
.map(({ actionName }) => ` mount(router, ${actionName}URL, ${actionName});`)
|
|
68
77
|
.join("\n")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAoC;AACpC,+BAAgC;AAChC,oDAA6B;AAC7B,uCAAuC;AACvC,qDAAiD;AACjD,2DAAiE;AACjE,iEAAgE;AAEhE,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,YAAY,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvE,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;AAEM,KAAK,UAAU,cAAc;IACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,CACC,MAAM,cAAO,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CACvD;SACC,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvB;SACA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzB,QAAQ;QACR,UAAU,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC;QAC7C,GAAG,EAAE,uCAAmB,CACvB,GAAG;YACF,eAAQ,CACP,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,EACxC,QAAQ,CACR,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,GAAG,CAAC,wSAAwS;SAC7S;KACD,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAClD
|
|
1
|
+
{"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":";;;;;;AAAA,2BAAoC;AACpC,+BAAgC;AAChC,oDAA6B;AAC7B,uCAAuC;AACvC,qDAAiD;AACjD,2DAAiE;AACjE,iEAAgE;AAEhE,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,YAAY,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACvE,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;AAEM,KAAK,UAAU,cAAc;IACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,CACC,MAAM,cAAO,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CACvD;SACC,MAAM,CACN,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CACvB;SACA,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzB,QAAQ;QACR,UAAU,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC;QAC7C,GAAG,EAAE,uCAAmB,CACvB,GAAG;YACF,eAAQ,CACP,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,EACxC,QAAQ,CACR,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;YACrB,GAAG,CAAC,wSAAwS;SAC7S;KACD,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAClD;;;;;;;EAOA,KAAK;SACL,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAC5B,uBAAuB,UAAU,YAAY,wBAAU,CACtD,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAClD,QAAQ,CACR,IAAI,CACN;SACA,IAAI,CAAC,IAAI,CAAC;;EAEV,KAAK;SACL,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,gBAAgB,UAAU,UAAU,GAAG,IAAI,CAAC;SACzE,IAAI,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;EA0BV,KAAK;SACL,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,kBAAkB,UAAU,QAAQ,UAAU,IAAI,CAAC;SAC3E,IAAI,CAAC,IAAI,CAAC;;CAEX,CACC,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;AACzE,CAAC;AAhFD,wCAgFC"}
|
package/lib/index.js
CHANGED
|
@@ -18,4 +18,5 @@ __exportStar(require("./forms/form"), exports);
|
|
|
18
18
|
__exportStar(require("./page/props-parser"), exports);
|
|
19
19
|
__exportStar(require("./utils/utils"), exports);
|
|
20
20
|
__exportStar(require("./page/list"), exports);
|
|
21
|
+
__exportStar(require("./utils/translate"), exports);
|
|
21
22
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAWA,4DAA0C;AAC1C,uDAAqC;AACrC,mDAAiC;AACjC,8CAA4B;AAC5B,+CAA6B;AAC7B,sDAAoC;AACpC,gDAA8B;AAC9B,8CAA4B;AAC5B,oDAAkC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"make-hidden-inputs.js","sourceRoot":"","sources":["../src/make-hidden-inputs.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"make-hidden-inputs.js","sourceRoot":"","sources":["../src/make-hidden-inputs.ts"],"names":[],"mappings":";;;AACA,2CAAyD;AAGzD,SAAgB,gBAAgB,CAC/B,GAAgB,EAChB,MAAiC,EACjC,MAAqC,EACrC,cAAwB;IAExB,OAAO,uBAAU,CAAA,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;SACxC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAChD,GAAG,CACH,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,uBAAU,CAAA,UAAU,CAAC;;YAE9B,GAAG;aACF,KAAK;SACZ,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;SACrB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;MAClC,CACH,EAAE,CAAC;AACN,CAAC;AAjBD,4CAiBC"}
|
package/lib/page/list.js
CHANGED
|
@@ -31,9 +31,10 @@ class ListPage extends page_1.Page {
|
|
|
31
31
|
const values = this.extractRawValues(ctx);
|
|
32
32
|
const { parsed: page } = await this.fields.page.getValue(ctx, values);
|
|
33
33
|
const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
|
|
34
|
+
const items_promise = this.getItems(ctx, page, itemsPerPage, values);
|
|
34
35
|
return tempstream_1.tempstream `${this.renderPagination(ctx, values)}
|
|
35
36
|
${this.renderFilters(ctx)}
|
|
36
|
-
${
|
|
37
|
+
${items_promise.then((items) => this.renderListContainer(ctx, items.map((item) => this.renderItem(ctx, item))))}`;
|
|
37
38
|
}
|
|
38
39
|
async renderPagination(ctx, values) {
|
|
39
40
|
const { parsed: page } = await this.fields.page.getValue(ctx, values);
|
package/lib/page/list.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/page/list.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/page/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.t = void 0;
|
|
4
|
+
function t(ctx, key, props, default_translation) {
|
|
5
|
+
return /* HTML */ `<span translation-key="${key.replace('"', '\\"')}"
|
|
6
|
+
>${ctx.$app.getString(key, props, default_translation)}</span
|
|
7
|
+
>`;
|
|
8
|
+
}
|
|
9
|
+
exports.t = t;
|
|
10
|
+
//# sourceMappingURL=translate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"translate.js","sourceRoot":"","sources":["../../src/utils/translate.ts"],"names":[],"mappings":";;;AAGA,SAAgB,CAAC,CAChB,GAAgB,EAChB,GAAW,EACX,KAAY,EACZ,mBAAgC;IAEhC,OAAO,UAAU,CAAC,0BAA0B,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;KAC/D,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE,mBAAmB,CAAC;GACrD,CAAC;AACJ,CAAC;AATD,cASC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sealcode/sealgen",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Module to automate adding routes and collections to a sealious application",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -49,6 +49,6 @@
|
|
|
49
49
|
"peerDependencies": {
|
|
50
50
|
"@koa/router": "^10.1.1",
|
|
51
51
|
"koa": "^2.13.0",
|
|
52
|
-
"sealious": "0.15.
|
|
52
|
+
"sealious": "^0.15.8"
|
|
53
53
|
}
|
|
54
54
|
}
|
package/src/build.ts
CHANGED
|
@@ -37,7 +37,7 @@ async function complex_build(watch: boolean): Promise<void> {
|
|
|
37
37
|
await scss_build?.rebuild?.();
|
|
38
38
|
console.log(`Built main.scss [on ${path}]`);
|
|
39
39
|
} catch (e) {
|
|
40
|
-
console.error(e);
|
|
40
|
+
console.error(e.message);
|
|
41
41
|
await sleep(200);
|
|
42
42
|
scss_build
|
|
43
43
|
?.rebuild?.()
|
|
@@ -52,7 +52,7 @@ export class SimpleInput extends FormFieldControl {
|
|
|
52
52
|
const readonly = this.options.readonly || false;
|
|
53
53
|
const required = this.field.required;
|
|
54
54
|
|
|
55
|
-
return /* HTML */ `<div class="input">
|
|
55
|
+
return /* HTML */ `<div class="form-input form-input__wrapper">
|
|
56
56
|
<label for="${id}">${label}</label>
|
|
57
57
|
<input
|
|
58
58
|
id="${id}"
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { BaseContext } from "koa";
|
|
2
|
+
import { t } from "../../utils/translate";
|
|
2
3
|
import { FormDataValue } from "../form";
|
|
3
4
|
|
|
4
5
|
export type FormFieldValidationResponse = { valid: boolean; message: string };
|
|
@@ -35,7 +36,16 @@ export abstract class FormField<ParsedValue extends unknown = unknown> {
|
|
|
35
36
|
this.required &&
|
|
36
37
|
(value === "" || value === null || value === undefined)
|
|
37
38
|
) {
|
|
38
|
-
return {
|
|
39
|
+
return {
|
|
40
|
+
valid: false,
|
|
41
|
+
|
|
42
|
+
message: t(
|
|
43
|
+
ctx,
|
|
44
|
+
"field_is_required",
|
|
45
|
+
[],
|
|
46
|
+
"This field is required"
|
|
47
|
+
),
|
|
48
|
+
};
|
|
39
49
|
}
|
|
40
50
|
return this.isValueValid(ctx, value);
|
|
41
51
|
}
|
package/src/forms/form.ts
CHANGED
|
@@ -44,11 +44,11 @@ export abstract class Form<F extends Fields> extends Mountable<F> {
|
|
|
44
44
|
async renderError(
|
|
45
45
|
_: BaseContext,
|
|
46
46
|
error: PageErrorMessage
|
|
47
|
-
): Promise<
|
|
47
|
+
): Promise<FlatTemplatable> {
|
|
48
48
|
return tempstream/* HTML */ `<div>${error.message}</div>`;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
async render(ctx: BaseContext, data: FormData): Promise<
|
|
51
|
+
async render(ctx: BaseContext, data: FormData): Promise<FlatTemplatable> {
|
|
52
52
|
return tempstream/* HTML */ `${this.makeFormTag()} ${
|
|
53
53
|
!this.controls.some((control) => control.role == "messages")
|
|
54
54
|
? this.renderMessages(ctx, data)
|
package/src/generate-routes.ts
CHANGED
|
@@ -50,6 +50,7 @@ export async function generateRoutes(): Promise<void> {
|
|
|
50
50
|
target_locreq.resolve("src/back/routes/routes.ts"),
|
|
51
51
|
`// DO NOT EDIT! This file is generated automaticaly with npm run generate-routes
|
|
52
52
|
|
|
53
|
+
import Koa, { BaseContext } from "koa";
|
|
53
54
|
import Router from "@koa/router";
|
|
54
55
|
import { Middlewares } from "sealious";
|
|
55
56
|
import { Mountable } from "@sealcode/sealgen";
|
|
@@ -68,22 +69,30 @@ ${files
|
|
|
68
69
|
.map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
|
|
69
70
|
.join("\n")}
|
|
70
71
|
|
|
72
|
+
async function handleHtmlPromise(ctx: BaseContext, next: Koa.Next) {
|
|
73
|
+
await next();
|
|
74
|
+
if (ctx.body instanceof Promise) {
|
|
75
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
76
|
+
ctx.body = await ctx.body;
|
|
77
|
+
}
|
|
78
|
+
ctx.set("content-type", "text/html;charset=utf-8");
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
function mount(router: Router, URL: string, mountable: Mountable) {
|
|
72
|
-
router.use(
|
|
82
|
+
router.use(
|
|
83
|
+
URL,
|
|
84
|
+
Middlewares.extractContext(),
|
|
85
|
+
Middlewares.parseBody(),
|
|
86
|
+
handleHtmlPromise
|
|
87
|
+
);
|
|
73
88
|
mountable.init();
|
|
74
89
|
mountable.mount(router, URL);
|
|
75
90
|
// to automatically add trailing slashes:
|
|
76
91
|
router.get(URL.slice(0, -1), (ctx) => ctx.redirect(URL));
|
|
92
|
+
router.use(URL, (ctx) => ctx.set("content-type", "text/html;charset=utf-8"));
|
|
77
93
|
}
|
|
78
94
|
|
|
79
95
|
export default function mountAutoRoutes(router: Router) {
|
|
80
|
-
router.use(async (ctx, next) => {
|
|
81
|
-
await next();
|
|
82
|
-
if (ctx.body instanceof Promise) {
|
|
83
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
84
|
-
ctx.body = await ctx.body;
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
96
|
${files
|
|
88
97
|
.map(({ actionName }) => ` mount(router, ${actionName}URL, ${actionName});`)
|
|
89
98
|
.join("\n")}
|
package/src/index.ts
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import Sealious from "sealious";
|
|
1
|
+
import Sealious, { App } from "sealious";
|
|
2
2
|
import { FormDataValue } from "./forms/form";
|
|
3
3
|
|
|
4
4
|
declare module "koa" {
|
|
5
5
|
interface BaseContext {
|
|
6
6
|
$context: Sealious.Context;
|
|
7
|
+
$app: App;
|
|
7
8
|
$body: Record<string, FormDataValue>;
|
|
8
9
|
}
|
|
9
10
|
}
|
|
@@ -16,3 +17,4 @@ export * from "./forms/form";
|
|
|
16
17
|
export * from "./page/props-parser";
|
|
17
18
|
export * from "./utils/utils";
|
|
18
19
|
export * from "./page/list";
|
|
20
|
+
export * from "./utils/translate";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseContext } from "koa";
|
|
2
|
-
import {
|
|
2
|
+
import { FlatTemplatable, tempstream } from "tempstream";
|
|
3
3
|
import { FormDataValue, FormField } from ".";
|
|
4
4
|
|
|
5
5
|
export function makeHiddenInputs(
|
|
@@ -7,7 +7,7 @@ export function makeHiddenInputs(
|
|
|
7
7
|
fields: Record<string, FormField>,
|
|
8
8
|
values: Record<string, FormDataValue>,
|
|
9
9
|
fields_to_skip: string[]
|
|
10
|
-
):
|
|
10
|
+
): FlatTemplatable {
|
|
11
11
|
return tempstream`${Object.entries(fields)
|
|
12
12
|
.filter(([key]) => !fields_to_skip.includes(key))
|
|
13
13
|
.map(
|
package/src/page/list.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { BaseContext } from "koa";
|
|
2
2
|
import { Collection, CollectionItem, ItemFields, ItemList } from "sealious";
|
|
3
|
+
|
|
3
4
|
import { Templatable, tempstream, FlatTemplatable } from "tempstream";
|
|
4
5
|
import { peopleWhoCan } from "./access-control";
|
|
5
6
|
import { Page } from "./page";
|
|
@@ -60,9 +61,10 @@ export abstract class ListPage<
|
|
|
60
61
|
const { parsed: itemsPerPage } =
|
|
61
62
|
await this.fields.itemsPerPage.getValue(ctx, values);
|
|
62
63
|
|
|
64
|
+
const items_promise = this.getItems(ctx, page, itemsPerPage, values);
|
|
63
65
|
return tempstream`${this.renderPagination(ctx, values)}
|
|
64
66
|
${this.renderFilters(ctx)}
|
|
65
|
-
${
|
|
67
|
+
${items_promise.then((items) =>
|
|
66
68
|
this.renderListContainer(
|
|
67
69
|
ctx,
|
|
68
70
|
items.map((item) => this.renderItem(ctx, item))
|
package/src/page/mountable.ts
CHANGED
|
@@ -26,7 +26,7 @@ export abstract class Mountable<F extends Fields = Fields> {
|
|
|
26
26
|
abstract renderError(
|
|
27
27
|
ctx: BaseContext,
|
|
28
28
|
error: PageErrorMessage
|
|
29
|
-
): Promise<
|
|
29
|
+
): Promise<FlatTemplatable>;
|
|
30
30
|
|
|
31
31
|
abstract extractRawValues(ctx: BaseContext): Record<string, FormDataValue>;
|
|
32
32
|
|
|
@@ -94,7 +94,7 @@ export abstract class Mountable<F extends Fields = Fields> {
|
|
|
94
94
|
public renderMessages(
|
|
95
95
|
_: BaseContext,
|
|
96
96
|
data: FormData<keyof Fields>
|
|
97
|
-
):
|
|
97
|
+
): FlatTemplatable {
|
|
98
98
|
return tempstream/* HTML */ `<div class="form-messages">
|
|
99
99
|
${data.messages.map(
|
|
100
100
|
(message) =>
|
package/src/page/page.ts
CHANGED
|
@@ -32,7 +32,7 @@ export abstract class Page<
|
|
|
32
32
|
return tempstream/* HTML */ `<div>${error.message}</div>`;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
public abstract render(ctx: BaseContext): Promise<
|
|
35
|
+
public abstract render(ctx: BaseContext): Promise<FlatTemplatable>;
|
|
36
36
|
|
|
37
37
|
extractRawValues(ctx: BaseContext): Record<string, FormDataValue> {
|
|
38
38
|
return this.propsParser.decode(ctx);
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { BaseContext } from "koa";
|
|
2
|
+
import { Translation } from "sealious";
|
|
3
|
+
|
|
4
|
+
export function t(
|
|
5
|
+
ctx: BaseContext,
|
|
6
|
+
key: string,
|
|
7
|
+
props: any[],
|
|
8
|
+
default_translation: Translation
|
|
9
|
+
) {
|
|
10
|
+
return /* HTML */ `<span translation-key="${key.replace('"', '\\"')}"
|
|
11
|
+
>${ctx.$app.getString(key, props, default_translation)}</span
|
|
12
|
+
>`;
|
|
13
|
+
}
|