@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.
@@ -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, Templatable } from "tempstream";
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<Templatable>;
29
- render(ctx: BaseContext, data: FormData): Promise<Templatable>;
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 { Templatable } from "tempstream";
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[]): Templatable;
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, Templatable } from "tempstream";
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<Templatable>;
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>): Templatable;
35
+ renderMessages(_: BaseContext, data: FormData<keyof Fields>): FlatTemplatable;
36
36
  }
@@ -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, Templatable } from "tempstream";
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<Templatable>;
17
+ abstract render(ctx: BaseContext): Promise<FlatTemplatable>;
18
18
  extractRawValues(ctx: BaseContext): Record<string, FormDataValue>;
19
19
  }
@@ -0,0 +1,3 @@
1
+ import { BaseContext } from "koa";
2
+ import { Translation } from "sealious";
3
+ export declare function t(ctx: BaseContext, key: string, props: any[], default_translation: Translation): string;
package/lib/build.js CHANGED
@@ -62,7 +62,7 @@ async function complex_build(watch) {
62
62
  console.log(`Built main.scss [on ${path}]`);
63
63
  }
64
64
  catch (e) {
65
- console.error(e);
65
+ console.error(e.message);
66
66
  await sleep_1.sleep(200);
67
67
  scss_build
68
68
  ?.rebuild?.()
package/lib/build.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../src/build.ts"],"names":[],"mappings":"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"}
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 { valid: false, message: "This field is required" };
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":";;;;;;;;;;;;;AAqBA,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,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC;SAC3D;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;AA9ED,8BA8EC;AAED,sDAAoC;AACpC,oDAAkC;AAClC,qDAAmC;AACnC,2CAAyB;AACzB,mDAAiC"}
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"}
@@ -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(URL, Middlewares.extractContext(), Middlewares.parseBody());
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;;;;;;EAMA,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;;;;;;;;;;;;;;;;;;EAkBV,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;AAvED,wCAuEC"}
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":";;;;;;;;;;;;AAUA,4DAA0C;AAC1C,uDAAqC;AACrC,mDAAiC;AACjC,8CAA4B;AAC5B,+CAA6B;AAC7B,sDAAoC;AACpC,gDAA8B;AAC9B,8CAA4B"}
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,2CAAqD;AAGrD,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"}
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
- ${this.getItems(ctx, page, itemsPerPage, values).then((items) => this.renderListContainer(ctx, items.map((item) => this.renderItem(ctx, item))))}`;
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);
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/page/list.ts"],"names":[],"mappings":"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"}
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.1",
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.x"
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 { valid: false, message: "This field is required" };
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<Templatable> {
47
+ ): Promise<FlatTemplatable> {
48
48
  return tempstream/* HTML */ `<div>${error.message}</div>`;
49
49
  }
50
50
 
51
- async render(ctx: BaseContext, data: FormData): Promise<Templatable> {
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)
@@ -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(URL, Middlewares.extractContext(), Middlewares.parseBody());
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 { Templatable, tempstream } from "tempstream";
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
- ): Templatable {
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
- ${this.getItems(ctx, page, itemsPerPage, values).then((items) =>
67
+ ${items_promise.then((items) =>
66
68
  this.renderListContainer(
67
69
  ctx,
68
70
  items.map((item) => this.renderItem(ctx, item))
@@ -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<Templatable>;
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
- ): Templatable {
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<Templatable>;
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
+ }