@sealcode/sealgen 0.3.1 → 0.3.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/index.d.ts CHANGED
@@ -12,3 +12,4 @@ export * from "./page/page";
12
12
  export * from "./page/props-parser";
13
13
  export * from "./utils/utils";
14
14
  export * from "./forms/validator";
15
+ export * from "./page/list";
@@ -1 +1 @@
1
- export declare function pageTemplate(action_name: string, fullpath: string): Promise<string>;
1
+ export declare function pageTemplate(action_name: string, newfilefullpath: string): Promise<string>;
package/lib/build.js CHANGED
@@ -29,8 +29,14 @@ const chokidar = __importStar(require("chokidar"));
29
29
  const tiny_glob_1 = __importDefault(require("tiny-glob"));
30
30
  const find_scss_includes_1 = require("./find-scss-includes");
31
31
  const sleep_1 = require("./utils/sleep");
32
+ const generate_collections_1 = require("./generate-collections");
33
+ const generate_routes_1 = require("./generate-routes");
32
34
  async function build_ts() {
33
- const entryPoints = await tiny_glob_1.default("./src/back/**/*.ts");
35
+ const [entryPoints] = await Promise.all([
36
+ tiny_glob_1.default("./src/back/**/*.ts"),
37
+ generate_collections_1.generateCollections(),
38
+ generate_routes_1.generateRoutes(),
39
+ ]);
34
40
  await esbuild_1.build({
35
41
  entryPoints,
36
42
  sourcemap: true,
@@ -64,9 +70,11 @@ async function complex_build(watch) {
64
70
  .catch((e) => console.error(e?.message));
65
71
  }
66
72
  }
67
- if (path.endsWith(".ts")) {
73
+ if (path.endsWith(".ts") &&
74
+ !path.endsWith("src/back/collections.ts") &&
75
+ !path.endsWith("src/back/routes/routes.ts")) {
68
76
  await build_ts();
69
- console.log(`Finished TS biuld [on ${path}]`);
77
+ console.log(`Finished TS build [on ${path}]`);
70
78
  }
71
79
  });
72
80
  }
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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"}
@@ -37,6 +37,7 @@ async function generateRoutes() {
37
37
 
38
38
  import Router from "@koa/router";
39
39
  import { Middlewares } from "sealious";
40
+ import { Mountable } from "@sealcode/sealgen";
40
41
 
41
42
  ${files
42
43
  .map(({ actionName, fullpath }) => `import { default as ${actionName} } from "${import_path_1.importPath(target_locreq.resolve("src/back/routes/routes.ts"), fullpath)}";`)
@@ -46,11 +47,17 @@ ${files
46
47
  .map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
47
48
  .join("\n")}
48
49
 
50
+ function mount(router: Router, URL: string, mountable: Mountable){
51
+ router.use(URL, Middlewares.extractContext(), Middlewares.parseBody());
52
+ mountable.mount(router, URL);
53
+ // to automatically add trailing slashes:
54
+ router.get(URL.slice(0, -1), (ctx) => ctx.redirect(URL));
55
+ }
56
+
49
57
  export default function mountAutoRoutes(router: Router) {
50
58
  ${files
51
- .map(({ actionName, }) => ` router.use(${actionName}URL, Middlewares.extractContext(), Middlewares.parseBody());
52
- ${actionName}.mount(router, ${actionName}URL);`)
53
- .join("\n\n")}
59
+ .map(({ actionName }) => ` mount(router, ${actionName}URL, ${actionName});`)
60
+ .join("\n")}
54
61
  }
55
62
  `);
56
63
  // eslint-disable-next-line no-console
@@ -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;;;;;EAKA,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;;;EAGV,KAAK;SACL,GAAG,CACH,CAAC,EACA,UAAU,GACV,EAAE,EAAE,CAAC,eAAe,UAAU;GAC9B,UAAU,kBAAkB,UAAU,OAAO,CAC9C;SACA,IAAI,CAAC,MAAM,CAAC;;CAEb,CACC,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;AACzE,CAAC;AA5DD,wCA4DC"}
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;;;;;;;;;;EAUV,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;AA/DD,wCA+DC"}
package/lib/index.js CHANGED
@@ -17,4 +17,5 @@ __exportStar(require("./page/page"), exports);
17
17
  __exportStar(require("./page/props-parser"), exports);
18
18
  __exportStar(require("./utils/utils"), exports);
19
19
  __exportStar(require("./forms/validator"), exports);
20
+ __exportStar(require("./page/list"), exports);
20
21
  //# 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":";;;;;;;;;;;;AASA,+CAA6B;AAC7B,4DAA0C;AAC1C,gDAA8B;AAC9B,8CAA4B;AAC5B,sDAAoC;AACpC,gDAA8B;AAC9B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AASA,+CAA6B;AAC7B,4DAA0C;AAC1C,gDAA8B;AAC9B,8CAA4B;AAC5B,sDAAoC;AACpC,gDAA8B;AAC9B,oDAAkC;AAClC,8CAA4B"}
@@ -5,11 +5,16 @@ const import_path_1 = require("../utils/import-path");
5
5
  async function formTemplate(action_name, newfilefullpath) {
6
6
  const rel = import_path_1.curryImportPath(newfilefullpath);
7
7
  return `import { BaseContext } from "koa";
8
- import {Users} from "${rel("src/back/collections/collections")}";
9
- import { FormHeader, SimpleInput } from "${rel("src/back/forms/controls")}";
10
- import { FormField } from "${rel("src/back/forms/field")}";
11
- import Form, { FormData } from "${rel("src/back/forms/form")}";
12
- import { collectionFieldValidator } from "${rel("src/back/forms/validator")}";
8
+ import {
9
+ Form,
10
+ FormData,
11
+ FormHeader,
12
+ SimpleInput,
13
+ FormField,
14
+ collectionFieldValidator,
15
+ } from "@sealcode/sealgen";
16
+
17
+ import { Users } from "${rel("src/back/collections/collections")}";
13
18
  import html from "${rel("src/back/html")}";
14
19
 
15
20
  export const actionName = "${action_name}";
@@ -1 +1 @@
1
- {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/templates/form.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEhD,KAAK,UAAU,YAAY,CACjC,WAAmB,EACnB,eAAuB;IAEvB,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;uBACe,GAAG,CAAC,kCAAkC,CAAC;2CACnB,GAAG,CAAC,yBAAyB,CAAC;6BAC5C,GAAG,CAAC,sBAAsB,CAAC;kCACtB,GAAG,CAAC,qBAAqB,CAAC;4CAChB,GAAG,CAAC,0BAA0B,CAAC;oBACvD,GAAG,CAAC,eAAe,CAAC;;6BAEX,WAAW;;2BAEb,WAAW;;;;;;;;;;;;;;;;;;;;;;;sBAuBhB,WAAW;;;CAGhC,CAAC;AACF,CAAC;AA1CD,oCA0CC"}
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/templates/form.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAEhD,KAAK,UAAU,YAAY,CACjC,WAAmB,EACnB,eAAuB;IAEvB,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;;;;;;;;;;yBAUiB,GAAG,CAAC,kCAAkC,CAAC;oBAC5C,GAAG,CAAC,eAAe,CAAC;;6BAEX,WAAW;;2BAEb,WAAW;;;;;;;;;;;;;;;;;;;;;;;sBAuBhB,WAAW;;;CAGhC,CAAC;AACF,CAAC;AA/CD,oCA+CC"}
@@ -27,8 +27,8 @@ import {
27
27
  BaseListPageProps,
28
28
  BaseListPagePropsShape,
29
29
  SealiousItemListPage,
30
- } from "${rel("src/back/page/list.ts")}";
31
- import { AllQueryParams } from "${rel("src/back/page/props-parser.ts")}";
30
+ AllQueryParams,
31
+ } from "@sealcode/sealgen";
32
32
 
33
33
  export const actionName = "${action_name}";
34
34
 
@@ -1 +1 @@
1
- {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/templates/list.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AACvD,mCAAoC;AACpC,gEAA4D;AAErD,MAAM,YAAY,GAAG,KAAK,EAChC,WAAmB,EACnB,eAAuB,EACL,EAAE;IACpB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,gDAAgD;QACzD,OAAO,EAAE,CACR,MAAM,kCAAe,EAAE,CACvB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtB,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;SACjB,CAAC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAoB,CAAC;IACjD,MAAM,oBAAoB,GACzB,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;;;WAGG,oBAAoB,YAAY,GAAG,CAC5C,kCAAkC,CAClC;oBACkB,GAAG,CAAC,kBAAkB,CAAC;;;;;;UAMjC,GAAG,CAAC,uBAAuB,CAAC;kCACJ,GAAG,CAAC,+BAA+B,CAAC;;6BAEzC,WAAW;;4BAEZ,WAAW,4CAA4C,oBAAoB;;;;;;;;;eASxF,oBAAoB;;sBAEb,oBAAoB;;;;;;;;mEAQyB,oBAAoB;;;KAGlF,oBAAoB;CACxB,CAAC;AACF,CAAC,CAAC;AA5DW,QAAA,YAAY,gBA4DvB"}
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/templates/list.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AACvD,mCAAoC;AACpC,gEAA4D;AAErD,MAAM,YAAY,GAAG,KAAK,EAChC,WAAmB,EACnB,eAAuB,EACL,EAAE;IACpB,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;QAC9B,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,YAAY;QAClB,OAAO,EAAE,gDAAgD;QACzD,OAAO,EAAE,CACR,MAAM,kCAAe,EAAE,CACvB,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;YACtB,KAAK,EAAE,UAAU;YACjB,KAAK,EAAE,UAAU;SACjB,CAAC,CAAC;KACH,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAoB,CAAC;IACjD,MAAM,oBAAoB,GACzB,UAAU,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;;;WAGG,oBAAoB,YAAY,GAAG,CAC5C,kCAAkC,CAClC;oBACkB,GAAG,CAAC,kBAAkB,CAAC;;;;;;;;;6BASd,WAAW;;4BAEZ,WAAW,4CAA4C,oBAAoB;;;;;;;;;eASxF,oBAAoB;;sBAEb,oBAAoB;;;;;;;;mEAQyB,oBAAoB;;;KAGlF,oBAAoB;CACxB,CAAC;AACF,CAAC,CAAC;AA5DW,QAAA,YAAY,gBA4DvB"}
@@ -2,22 +2,23 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.pageTemplate = void 0;
4
4
  const import_path_1 = require("../utils/import-path");
5
- async function pageTemplate(action_name, fullpath) {
5
+ async function pageTemplate(action_name, newfilefullpath) {
6
+ const rel = import_path_1.curryImportPath(newfilefullpath);
6
7
  return `import { BaseContext } from "koa";
7
8
  import { tempstream } from "tempstream";
8
- import { Page } from "${import_path_1.importPath(fullpath, "src/back/page/page")}";
9
+ import { Page } from "@sealcode/sealgen";
10
+ import html from "${rel("src/back/html")}";
9
11
 
10
12
  export const actionName = "${action_name}";
11
13
 
12
14
  export default new (class ${action_name}Page extends Page {
13
-
14
15
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
15
16
  async canAccess(_: BaseContext) {
16
17
  return { canAccess: true, message: "" };
17
18
  }
18
19
 
19
20
  async render(ctx: BaseContext) {
20
- return tempstream/* HTML */ \`<div></div>\`;
21
+ return html(ctx, "${action_name}", tempstream/* HTML */ \`<div></div>\`);
21
22
  }
22
23
  })();
23
24
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/templates/page.ts"],"names":[],"mappings":";;;AAAA,sDAAkD;AAE3C,KAAK,UAAU,YAAY,CACjC,WAAmB,EACnB,QAAgB;IAEhB,OAAO;;wBAEgB,wBAAU,CAAC,QAAQ,EAAE,oBAAoB,CAAC;;6BAErC,WAAW;;4BAEZ,WAAW;;;;;;;;;;;CAWtC,CAAC;AACF,CAAC;AAtBD,oCAsBC"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/templates/page.ts"],"names":[],"mappings":";;;AAAA,sDAAuD;AAChD,KAAK,UAAU,YAAY,CACjC,WAAmB,EACnB,eAAuB;IAEvB,MAAM,GAAG,GAAG,6BAAe,CAAC,eAAe,CAAC,CAAC;IAC7C,OAAO;;;oBAGY,GAAG,CAAC,eAAe,CAAC;;6BAEX,WAAW;;4BAEZ,WAAW;;;;;;;sBAOjB,WAAW;;;CAGhC,CAAC;AACF,CAAC;AAvBD,oCAuBC"}
@@ -5,6 +5,7 @@ function escape_url_params(url) {
5
5
  return url
6
6
  .split("/")
7
7
  .map((e) => (e.startsWith(":") ? `[${e.slice(1)}]` : e))
8
+ .filter((e) => e != "")
8
9
  .join("/");
9
10
  }
10
11
  exports.escape_url_params = escape_url_params;
@@ -1 +1 @@
1
- {"version":3,"file":"escape-url-params.js","sourceRoot":"","sources":["../../src/utils/escape-url-params.ts"],"names":[],"mappings":";;;AAAA,SAAgB,iBAAiB,CAAC,GAAW;IAC5C,OAAO,GAAG;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AALD,8CAKC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC9C,OAAO,GAAG;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AALD,kDAKC"}
1
+ {"version":3,"file":"escape-url-params.js","sourceRoot":"","sources":["../../src/utils/escape-url-params.ts"],"names":[],"mappings":";;;AAAA,SAAgB,iBAAiB,CAAC,GAAW;IAC5C,OAAO,GAAG;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACvD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;SACtB,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AAND,8CAMC;AAED,SAAgB,mBAAmB,CAAC,GAAW;IAC9C,OAAO,GAAG;SACR,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACpE,IAAI,CAAC,GAAG,CAAC,CAAC;AACb,CAAC;AALD,kDAKC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealcode/sealgen",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Module to automate adding routes and collections to a sealious application",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
package/src/build.ts CHANGED
@@ -4,9 +4,15 @@ import * as chokidar from "chokidar";
4
4
  import { default as glob } from "tiny-glob";
5
5
  import { generateScssIncludes } from "./find-scss-includes";
6
6
  import { sleep } from "./utils/sleep";
7
+ import { generateCollections } from "./generate-collections";
8
+ import { generateRoutes } from "./generate-routes";
7
9
 
8
10
  async function build_ts() {
9
- const entryPoints = await glob("./src/back/**/*.ts");
11
+ const [entryPoints] = await Promise.all([
12
+ glob("./src/back/**/*.ts"),
13
+ generateCollections(),
14
+ generateRoutes(),
15
+ ]);
10
16
  await build({
11
17
  entryPoints,
12
18
  sourcemap: true,
@@ -39,9 +45,13 @@ async function complex_build(watch: boolean): Promise<void> {
39
45
  .catch((e) => console.error(e?.message));
40
46
  }
41
47
  }
42
- if (path.endsWith(".ts")) {
48
+ if (
49
+ path.endsWith(".ts") &&
50
+ !path.endsWith("src/back/collections.ts") &&
51
+ !path.endsWith("src/back/routes/routes.ts")
52
+ ) {
43
53
  await build_ts();
44
- console.log(`Finished TS biuld [on ${path}]`);
54
+ console.log(`Finished TS build [on ${path}]`);
45
55
  }
46
56
  });
47
57
  }
@@ -52,6 +52,7 @@ export async function generateRoutes(): Promise<void> {
52
52
 
53
53
  import Router from "@koa/router";
54
54
  import { Middlewares } from "sealious";
55
+ import { Mountable } from "@sealcode/sealgen";
55
56
 
56
57
  ${files
57
58
  .map(
@@ -67,15 +68,17 @@ ${files
67
68
  .map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
68
69
  .join("\n")}
69
70
 
71
+ function mount(router: Router, URL: string, mountable: Mountable){
72
+ router.use(URL, Middlewares.extractContext(), Middlewares.parseBody());
73
+ mountable.mount(router, URL);
74
+ // to automatically add trailing slashes:
75
+ router.get(URL.slice(0, -1), (ctx) => ctx.redirect(URL));
76
+ }
77
+
70
78
  export default function mountAutoRoutes(router: Router) {
71
79
  ${files
72
- .map(
73
- ({
74
- actionName,
75
- }) => ` router.use(${actionName}URL, Middlewares.extractContext(), Middlewares.parseBody());
76
- ${actionName}.mount(router, ${actionName}URL);`
77
- )
78
- .join("\n\n")}
80
+ .map(({ actionName }) => ` mount(router, ${actionName}URL, ${actionName});`)
81
+ .join("\n")}
79
82
  }
80
83
  `
81
84
  );
package/src/index.ts CHANGED
@@ -14,3 +14,4 @@ export * from "./page/page";
14
14
  export * from "./page/props-parser";
15
15
  export * from "./utils/utils";
16
16
  export * from "./forms/validator";
17
+ export * from "./page/list";
@@ -6,11 +6,16 @@ export async function formTemplate(
6
6
  ): Promise<string> {
7
7
  const rel = curryImportPath(newfilefullpath);
8
8
  return `import { BaseContext } from "koa";
9
- import {Users} from "${rel("src/back/collections/collections")}";
10
- import { FormHeader, SimpleInput } from "${rel("src/back/forms/controls")}";
11
- import { FormField } from "${rel("src/back/forms/field")}";
12
- import Form, { FormData } from "${rel("src/back/forms/form")}";
13
- import { collectionFieldValidator } from "${rel("src/back/forms/validator")}";
9
+ import {
10
+ Form,
11
+ FormData,
12
+ FormHeader,
13
+ SimpleInput,
14
+ FormField,
15
+ collectionFieldValidator,
16
+ } from "@sealcode/sealgen";
17
+
18
+ import { Users } from "${rel("src/back/collections/collections")}";
14
19
  import html from "${rel("src/back/html")}";
15
20
 
16
21
  export const actionName = "${action_name}";
@@ -33,8 +33,8 @@ import {
33
33
  BaseListPageProps,
34
34
  BaseListPagePropsShape,
35
35
  SealiousItemListPage,
36
- } from "${rel("src/back/page/list.ts")}";
37
- import { AllQueryParams } from "${rel("src/back/page/props-parser.ts")}";
36
+ AllQueryParams,
37
+ } from "@sealcode/sealgen";
38
38
 
39
39
  export const actionName = "${action_name}";
40
40
 
@@ -1,24 +1,24 @@
1
- import { importPath } from "../utils/import-path";
2
-
1
+ import { curryImportPath } from "../utils/import-path";
3
2
  export async function pageTemplate(
4
3
  action_name: string,
5
- fullpath: string
4
+ newfilefullpath: string
6
5
  ): Promise<string> {
6
+ const rel = curryImportPath(newfilefullpath);
7
7
  return `import { BaseContext } from "koa";
8
8
  import { tempstream } from "tempstream";
9
- import { Page } from "${importPath(fullpath, "src/back/page/page")}";
9
+ import { Page } from "@sealcode/sealgen";
10
+ import html from "${rel("src/back/html")}";
10
11
 
11
12
  export const actionName = "${action_name}";
12
13
 
13
14
  export default new (class ${action_name}Page extends Page {
14
-
15
15
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
16
16
  async canAccess(_: BaseContext) {
17
17
  return { canAccess: true, message: "" };
18
18
  }
19
19
 
20
20
  async render(ctx: BaseContext) {
21
- return tempstream/* HTML */ \`<div></div>\`;
21
+ return html(ctx, "${action_name}", tempstream/* HTML */ \`<div></div>\`);
22
22
  }
23
23
  })();
24
24
  `;
@@ -2,6 +2,7 @@ export function escape_url_params(url: string): string {
2
2
  return url
3
3
  .split("/")
4
4
  .map((e) => (e.startsWith(":") ? `[${e.slice(1)}]` : e))
5
+ .filter((e) => e != "")
5
6
  .join("/");
6
7
  }
7
8