@sealcode/sealgen 0.2.2 → 0.4.0

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.
Files changed (128) hide show
  1. package/@types/forms/controls/checkboxed-list-input.d.ts +5 -6
  2. package/@types/forms/controls/dropdown.d.ts +5 -6
  3. package/@types/forms/controls/editable-collection-subset.d.ts +6 -6
  4. package/@types/forms/controls/form-control.d.ts +3 -4
  5. package/@types/forms/controls/form-field-control.d.ts +9 -8
  6. package/@types/forms/controls/frame.d.ts +2 -2
  7. package/@types/forms/controls/simple-input.d.ts +5 -5
  8. package/@types/forms/field.d.ts +47 -16
  9. package/@types/forms/fields/checkboxed-list.d.ts +16 -0
  10. package/@types/forms/fields/collection-field.d.ts +11 -0
  11. package/@types/forms/fields/field.d.ts +38 -0
  12. package/@types/forms/fields/number.d.ts +13 -0
  13. package/@types/forms/fields/pick-from-list.d.ts +16 -0
  14. package/@types/forms/fields/simple-form-field.d.ts +7 -0
  15. package/@types/forms/form-fields-list.d.ts +1 -1
  16. package/@types/forms/form.d.ts +23 -28
  17. package/@types/forms/simple-form-field.d.ts +6 -0
  18. package/@types/forms/validator.d.ts +0 -3
  19. package/@types/index.d.ts +6 -4
  20. package/@types/make-hidden-inputs.d.ts +4 -0
  21. package/@types/page/list.d.ts +23 -42
  22. package/@types/page/mountable.d.ts +36 -0
  23. package/@types/page/page.d.ts +9 -16
  24. package/@types/page/props-parser.d.ts +5 -10
  25. package/@types/templates/page.d.ts +1 -1
  26. package/lib/build.js +11 -3
  27. package/lib/build.js.map +1 -1
  28. package/lib/forms/controls/checkboxed-list-input.js +10 -17
  29. package/lib/forms/controls/checkboxed-list-input.js.map +1 -1
  30. package/lib/forms/controls/dropdown.js +16 -20
  31. package/lib/forms/controls/dropdown.js.map +1 -1
  32. package/lib/forms/controls/editable-collection-subset.js +33 -35
  33. package/lib/forms/controls/editable-collection-subset.js.map +1 -1
  34. package/lib/forms/controls/form-control.js.map +1 -1
  35. package/lib/forms/controls/form-field-control.js +2 -11
  36. package/lib/forms/controls/form-field-control.js.map +1 -1
  37. package/lib/forms/controls/simple-input.js +16 -22
  38. package/lib/forms/controls/simple-input.js.map +1 -1
  39. package/lib/forms/field.js +96 -20
  40. package/lib/forms/field.js.map +1 -1
  41. package/lib/forms/fields/checkboxed-list.js +43 -0
  42. package/lib/forms/fields/checkboxed-list.js.map +1 -0
  43. package/lib/forms/fields/collection-field.js +28 -0
  44. package/lib/forms/fields/collection-field.js.map +1 -0
  45. package/lib/forms/fields/field.js +66 -0
  46. package/lib/forms/fields/field.js.map +1 -0
  47. package/lib/forms/fields/number.js +45 -0
  48. package/lib/forms/fields/number.js.map +1 -0
  49. package/lib/forms/fields/pick-from-list.js +34 -0
  50. package/lib/forms/fields/pick-from-list.js.map +1 -0
  51. package/lib/forms/fields/simple-form-field.js +18 -0
  52. package/lib/forms/fields/simple-form-field.js.map +1 -0
  53. package/lib/forms/form.js +47 -96
  54. package/lib/forms/form.js.map +1 -1
  55. package/lib/forms/simple-form-field.js +18 -0
  56. package/lib/forms/simple-form-field.js.map +1 -0
  57. package/lib/forms/validator.js +0 -10
  58. package/lib/forms/validator.js.map +1 -1
  59. package/lib/generate-routes.js +11 -3
  60. package/lib/generate-routes.js.map +1 -1
  61. package/lib/index.js +4 -3
  62. package/lib/index.js.map +1 -1
  63. package/lib/make-hidden-inputs.js +17 -0
  64. package/lib/make-hidden-inputs.js.map +1 -0
  65. package/lib/page/list.js +64 -79
  66. package/lib/page/list.js.map +1 -1
  67. package/lib/page/mountable.js +56 -0
  68. package/lib/page/mountable.js.map +1 -0
  69. package/lib/page/page.js +11 -1
  70. package/lib/page/page.js.map +1 -1
  71. package/lib/page/props-parser.js +4 -47
  72. package/lib/page/props-parser.js.map +1 -1
  73. package/lib/templates/form.js +38 -18
  74. package/lib/templates/form.js.map +1 -1
  75. package/lib/templates/list.js +30 -20
  76. package/lib/templates/list.js.map +1 -1
  77. package/lib/templates/page.js +5 -4
  78. package/lib/templates/page.js.map +1 -1
  79. package/lib/utils/escape-url-params.js +1 -0
  80. package/lib/utils/escape-url-params.js.map +1 -1
  81. package/package.json +3 -3
  82. package/src/build.ts +13 -3
  83. package/src/forms/controls/checkboxed-list-input.ts +12 -23
  84. package/src/forms/controls/dropdown.ts +27 -32
  85. package/src/forms/controls/editable-collection-subset.ts +57 -54
  86. package/src/forms/controls/form-control.ts +5 -6
  87. package/src/forms/controls/form-field-control.ts +13 -29
  88. package/src/forms/controls/frame.ts +2 -2
  89. package/src/forms/controls/simple-input.ts +26 -23
  90. package/src/forms/fields/checkboxed-list.ts +61 -0
  91. package/src/forms/fields/collection-field.ts +54 -0
  92. package/src/forms/fields/field.ts +106 -0
  93. package/src/forms/fields/number.ts +53 -0
  94. package/src/forms/fields/pick-from-list.ts +49 -0
  95. package/src/forms/fields/simple-form-field.ts +20 -0
  96. package/src/forms/form.ts +94 -162
  97. package/src/generate-routes.ts +11 -7
  98. package/src/index.ts +6 -4
  99. package/src/make-hidden-inputs.ts +22 -0
  100. package/src/page/list.ts +113 -126
  101. package/src/page/mountable.ts +105 -0
  102. package/src/page/page.ts +20 -11
  103. package/src/page/props-parser.ts +9 -67
  104. package/src/templates/form.ts +38 -18
  105. package/src/templates/list.ts +30 -20
  106. package/src/templates/page.ts +6 -6
  107. package/src/utils/escape-url-params.ts +1 -0
  108. package/.log/ti-101379.log +0 -524
  109. package/.log/ti-131883.log +0 -505
  110. package/.log/ti-13490.log +0 -652
  111. package/.log/ti-138140.log +0 -505
  112. package/.log/ti-138288.log +0 -526
  113. package/.log/ti-292609.log +0 -508
  114. package/.log/ti-304933.log +0 -524
  115. package/.log/ti-312312.log +0 -508
  116. package/.log/ti-314240.log +0 -1617
  117. package/.log/ti-46589.log +0 -675
  118. package/.log/ti-62627.log +0 -508
  119. package/.log/ti-64785.log +0 -508
  120. package/.log/ti-65911.log +0 -533
  121. package/.log/ti-69885.log +0 -548
  122. package/.log/ti-72106.log +0 -551
  123. package/.log/ti-74858.log +0 -508
  124. package/.log/tsserver.log +0 -1651
  125. package/src/forms/controls.ts +0 -0
  126. package/src/forms/field.ts +0 -119
  127. package/src/forms/form-fields-list.ts +0 -7
  128. package/src/forms/validator.ts +0 -10
package/lib/page/list.js CHANGED
@@ -1,94 +1,66 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SealiousItemListPage = exports.ListPage = exports.BaseListPageDefaultProps = exports.BaseListPagePropsShape = exports.BasePagePropsShape = void 0;
3
+ exports.SealiousItemListPage = exports.ListPage = exports.BaseListPageFields = exports.BasePagePropsShape = void 0;
4
4
  const tempstream_1 = require("tempstream");
5
5
  const access_control_1 = require("./access-control");
6
6
  const page_1 = require("./page");
7
- const ts_predicates_1 = require("@sealcode/ts-predicates");
8
- const form_fields_list_1 = require("../forms/form-fields-list");
7
+ const field_1 = require("../forms/fields/field");
9
8
  const utils_1 = require("../utils/utils");
9
+ const make_hidden_inputs_1 = require("../make-hidden-inputs");
10
10
  exports.BasePagePropsShape = {};
11
- exports.BaseListPagePropsShape = {
12
- page: ts_predicates_1.predicates.number,
13
- itemsPerPage: ts_predicates_1.predicates.number,
11
+ exports.BaseListPageFields = {
12
+ page: new field_1.NumberField(false, 1),
13
+ itemsPerPage: new field_1.NumberField(false, 12),
14
14
  };
15
- exports.BaseListPageDefaultProps = { page: 1, itemsPerPage: 25 };
16
15
  class ListPage extends page_1.Page {
17
16
  constructor() {
18
17
  super(...arguments);
19
- this.filterFields = [];
18
+ this.filterFields = {};
20
19
  this.filterControls = [];
21
20
  }
22
- renderListContainer(_, content) {
23
- return tempstream_1.tempstream `<div>${content}</div>`;
24
- }
25
- async validateProps(ctx, props) {
26
- const errors = {};
27
- let has_errors = false;
28
- const promises = [];
29
- for (const [key, value] of Object.entries(props)) {
30
- const field = form_fields_list_1.FormFieldsList.getField(this.filterFields, key);
31
- if (field) {
32
- promises.push(field._validate(ctx, value).then(({ valid, message }) => {
33
- if (!valid) {
34
- has_errors = true;
35
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
36
- errors[key] = message;
37
- }
38
- }));
39
- }
21
+ init() {
22
+ super.init();
23
+ for (const [fieldname, field] of Object.entries(this.filterFields)) {
24
+ field.init(fieldname);
40
25
  }
41
- await Promise.all(promises);
42
- return { valid: has_errors, errors };
43
26
  }
44
- async getProps(ctx) {
45
- const raw_props = this.propsParser.decode(ctx);
46
- const parsed_props = { ...raw_props };
47
- const { errors } = await this.validateProps(ctx, parsed_props);
48
- for (const prop_name in errors) {
49
- const default_value = this.propsParser.getDefaultValue(prop_name);
50
- if (default_value !== undefined) {
51
- parsed_props[prop_name] = default_value;
52
- }
53
- else {
54
- delete parsed_props[prop_name];
55
- }
56
- }
57
- return { parsed_props, errors, raw_props };
27
+ renderListContainer(_, content) {
28
+ return tempstream_1.tempstream `<div>${content}</div>`;
58
29
  }
59
30
  async render(ctx) {
60
- const { parsed_props, errors, raw_props } = await this.getProps(ctx);
61
- return tempstream_1.tempstream `${this.renderPagination(ctx, parsed_props)}
62
- ${this.renderFilters(ctx, parsed_props, raw_props, errors)}
63
- ${this.getItems(ctx, parsed_props).then(({ items }) => this.renderListContainer(ctx, items.map((item) => this.renderItem(ctx, item))))}`;
31
+ const values = this.extractRawValues(ctx);
32
+ const { parsed: page } = await this.fields.page.getValue(ctx, values);
33
+ const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
34
+ return tempstream_1.tempstream `${this.renderPagination(ctx, values)}
35
+ ${this.renderFilters(ctx)}
36
+ ${this.getItems(ctx, page, itemsPerPage, values).then((items) => this.renderListContainer(ctx, items.map((item) => this.renderItem(ctx, item))))}`;
64
37
  }
65
- async renderPagination(ctx, props) {
66
- const totalIems = await this.getTotalPages(ctx, props);
67
- const currentPage = props.page;
38
+ async renderPagination(ctx, values) {
39
+ const { parsed: page } = await this.fields.page.getValue(ctx, values);
40
+ const { parsed: itemsPerPage } = await this.fields.itemsPerPage.getValue(ctx, values);
41
+ const totalIems = await this.getTotalPages(ctx, itemsPerPage, values);
68
42
  return tempstream_1.tempstream /* HTML */ `<center>
69
- ${currentPage > 1
70
- ? this.renderPageButton(ctx, 1, "Pierwsza strona")
71
- : ""}
72
- ${currentPage > 1
73
- ? this.renderPageButton(ctx, currentPage - 1, "Poprzednia strona")
43
+ ${page > 1 ? this.renderPageButton(ctx, 1, "Pierwsza strona") : ""}
44
+ ${page > 1
45
+ ? this.renderPageButton(ctx, page - 1, "Poprzednia strona")
74
46
  : ""}
75
47
 
76
48
  <select onchange="if (this.value) Turbo.visit(this.value)">
77
- ${Array.from(utils_1.naturalNumbers(1, await this.getTotalPages(ctx, props))).map((n) => /* HTML */ `<option
49
+ ${Array.from(utils_1.naturalNumbers(1, totalIems)).map((n) => /* HTML */ `<option
78
50
  value="${utils_1.UrlWithNewParams(ctx,
79
51
  //eslint-disable-next-line @typescript-eslint/consistent-type-assertions
80
52
  this.propsParser.overwriteProp(ctx, {
81
53
  page: n,
82
54
  }))}"
83
- ${currentPage === n ? "selected" : ""}
55
+ ${page === n ? "selected" : ""}
84
56
  >
85
57
  ${n}
86
58
  </option>`)}
87
59
  </select>
88
- ${currentPage < totalIems
89
- ? this.renderPageButton(ctx, currentPage + 1, "Następna strona")
60
+ ${page < totalIems
61
+ ? this.renderPageButton(ctx, page + 1, "Następna strona")
90
62
  : ""}
91
- ${currentPage < totalIems
63
+ ${page < totalIems
92
64
  ? this.renderPageButton(ctx, totalIems, "Ostatnia strona")
93
65
  : ""}
94
66
  </center>`;
@@ -103,21 +75,26 @@ ${this.getItems(ctx, parsed_props).then(({ items }) => this.renderListContainer(
103
75
  >${text}</a
104
76
  >`;
105
77
  }
106
- renderFilters(ctx, parsed_props, // parsed props don't include wrong values
107
- raw_props, errors) {
78
+ async getFilterValues(ctx) {
79
+ const filter = {};
80
+ const raw_values = this.extractRawValues(ctx);
81
+ for (const [fieldname, field] of Object.entries(this.filterFields)) {
82
+ // eslint-disable-next-line no-await-in-loop
83
+ const { parsed } = await field.getValue(ctx, raw_values);
84
+ filter[fieldname] = parsed;
85
+ }
86
+ return filter;
87
+ }
88
+ renderFilters(ctx) {
89
+ const values = this.extractRawValues(ctx);
108
90
  return tempstream_1.tempstream /* HTML */ `<form method="GET">
109
- ${this.propsParser.makeHiddenInputs(parsed_props, [
91
+ ${make_hidden_inputs_1.makeHiddenInputs(ctx, this.fields, values, [
110
92
  "page",
111
- ...this.filterFields.map((f) => f.name),
93
+ ...Object.values(this.filterFields).map((f) => f.name),
112
94
  ])}
113
95
  ${this.filterControls.map((control) =>
114
96
  // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
115
- control.render(ctx, this.filterFields, {
116
- values: parsed_props,
117
- raw_values: raw_props,
118
- errors,
119
- messages: [],
120
- }))}
97
+ control.render(ctx, values))}
121
98
  </form>`;
122
99
  }
123
100
  }
@@ -128,17 +105,25 @@ class SealiousItemListPage extends ListPage {
128
105
  this.collection = collection;
129
106
  this.canAccess = access_control_1.peopleWhoCan("list", this.collection);
130
107
  }
131
- async getTotalPages(ctx, props) {
132
- const { items } = await this.collection.list(ctx.$context).fetch();
133
- return Math.ceil(items.length / props.itemsPerPage);
108
+ async getTotalPages(ctx, itemsPerPage) {
109
+ const query = this.collection.list(ctx.$context);
110
+ await this.addFilter(ctx, query);
111
+ const { items } = await query.fetch();
112
+ return Math.ceil(items.length / itemsPerPage);
113
+ }
114
+ async addFilter(ctx, list) {
115
+ const filters = await this.getFilterValues(ctx);
116
+ if (Object.keys(filters).length) {
117
+ list.filter(filters);
118
+ }
134
119
  }
135
- async getItems(ctx, props) {
136
- return {
137
- items: (await this.collection
138
- .list(ctx.$context)
139
- .paginate({ items: props.itemsPerPage, page: props.page })
140
- .fetch()).items,
141
- };
120
+ async getItems(ctx, page, itemsPerPage) {
121
+ const query = this.collection.list(ctx.$context);
122
+ await this.addFilter(ctx, query);
123
+ const { items } = await query
124
+ .paginate({ items: itemsPerPage, page })
125
+ .fetch();
126
+ return items;
142
127
  }
143
128
  async renderItem(_, item) {
144
129
  return `<div>${item.id}</div>`;
@@ -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,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Mountable = void 0;
4
+ const tempstream_1 = require("tempstream");
5
+ class Mountable {
6
+ constructor() {
7
+ if (!this.fields)
8
+ this.fields = {};
9
+ }
10
+ // this one is meant to be overwritten
11
+ async validateValues(ctx, data) {
12
+ return {
13
+ valid: true,
14
+ error: "",
15
+ };
16
+ }
17
+ async validate(ctx, values) {
18
+ const field_errors = {};
19
+ let valid = true;
20
+ const form_messages = [];
21
+ await Promise.all(Object.entries(values)
22
+ .filter(([fieldname]) => fieldname in this.fields)
23
+ .map(async ([key]) => {
24
+ const field = this.fields[key];
25
+ const { valid: fieldvalid, message: fieldmessage } = await field.getValue(ctx, values);
26
+ if (!fieldvalid) {
27
+ valid = false;
28
+ field_errors[field.name] = fieldmessage;
29
+ }
30
+ }));
31
+ const formValidationResult = await this.validateValues(ctx, values);
32
+ if (!formValidationResult.valid) {
33
+ form_messages.push({
34
+ type: "error",
35
+ text: formValidationResult.error,
36
+ });
37
+ valid = false;
38
+ }
39
+ return { valid, field_errors, form_messages };
40
+ }
41
+ init() {
42
+ for (const [name, field] of Object.entries(this.fields)) {
43
+ field.init(name);
44
+ }
45
+ }
46
+ renderControls(ctx, data) {
47
+ return tempstream_1.tempstream /* HTML */ `${this.controls.map((control) => control.render(ctx, data.raw_values, data.messages))}`;
48
+ }
49
+ renderMessages(_, data) {
50
+ return tempstream_1.tempstream /* HTML */ `<div class="form-messages">
51
+ ${data.messages.map((message) => `<div class="form-message form-message--${message.type}">${message.text}</div>`)}
52
+ </div>`;
53
+ }
54
+ }
55
+ exports.Mountable = Mountable;
56
+ //# sourceMappingURL=mountable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mountable.js","sourceRoot":"","sources":["../../src/page/mountable.ts"],"names":[],"mappings":";;;AAGA,2CAAsE;AAQtE,MAAsB,SAAS;IAG9B;QACC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,MAAM,GAAG,EAAO,CAAC;IACzC,CAAC;IAgBD,sCAAsC;IACtC,KAAK,CAAC,cAAc,CACnB,GAAgB,EAChB,IAAmC;QAEnC,OAAO;YACN,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,EAAE;SACT,CAAC;IACH,CAAC;IAES,KAAK,CAAC,QAAQ,CACvB,GAAgB,EAChB,MAAqC;QAMrC,MAAM,YAAY,GAAG,EAAkC,CAAC;QACxD,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,MAAM,aAAa,GAAG,EAAmB,CAAC;QAC1C,MAAM,OAAO,CAAC,GAAG,CAChB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aACpB,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC;aACjD,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAA2B,EAAE,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,GACjD,MAAM,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACnC,IAAI,CAAC,UAAU,EAAE;gBAChB,KAAK,GAAG,KAAK,CAAC;gBACd,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;aACxC;QACF,CAAC,CAAC,CACH,CAAC;QACF,MAAM,oBAAoB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACpE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE;YAChC,aAAa,CAAC,IAAI,CAAC;gBAClB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,oBAAoB,CAAC,KAAK;aAChC,CAAC,CAAC;YACH,KAAK,GAAG,KAAK,CAAC;SACd;QACD,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI;QACH,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACxD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACjB;IACF,CAAC;IAEM,cAAc,CACpB,GAAgB,EAChB,IAA4B;QAE5B,OAAO,uBAAU,CAAA,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC5D,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CACnD,EAAE,CAAC;IACL,CAAC;IAEM,cAAc,CACpB,CAAc,EACd,IAA4B;QAE5B,OAAO,uBAAU,CAAA,UAAU,CAAC;KACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAClB,CAAC,OAAO,EAAE,EAAE,CACX,0CAA0C,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,QAAQ,CAChF;SACK,CAAC;IACT,CAAC;CACD;AA7FD,8BA6FC"}
package/lib/page/page.js CHANGED
@@ -2,7 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Page = void 0;
4
4
  const tempstream_1 = require("tempstream");
5
- class Page {
5
+ const __1 = require("..");
6
+ const mountable_1 = require("./mountable");
7
+ class Page extends mountable_1.Mountable {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.propsParser = new __1.AllQueryParams();
11
+ this.controls = [];
12
+ }
6
13
  mount(router, path) {
7
14
  router.get(path, async (ctx) => {
8
15
  ctx.body = await this.render(ctx);
@@ -15,6 +22,9 @@ class Page {
15
22
  async renderError(_, error) {
16
23
  return tempstream_1.tempstream /* HTML */ `<div>${error.message}</div>`;
17
24
  }
25
+ extractRawValues(ctx) {
26
+ return this.propsParser.decode(ctx);
27
+ }
18
28
  }
19
29
  exports.Page = Page;
20
30
  //# sourceMappingURL=page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/page/page.ts"],"names":[],"mappings":";;;AAGA,2CAAqD;AAUrD,MAAsB,IAAI;IACzB,KAAK,CAAC,MAAc,EAAE,IAAY;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,CAAc;QAC7B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,CAAc,EAAE,KAAuB;QACxD,OAAO,uBAAU,CAAA,UAAU,CAAC,QAAQ,KAAK,CAAC,OAAO,QAAQ,CAAC;IAC3D,CAAC;CAGD;AAjBD,oBAiBC"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../../src/page/page.ts"],"names":[],"mappings":";;;AAGA,2CAAsE;AACtE,0BAAoC;AAEpC,2CAAkE;AAGlE,MAAsB,IAEpB,SAAQ,qBAAY;IAFtB;;QAGC,gBAAW,GACV,IAAI,kBAAc,EAAE,CAAC;QACtB,aAAQ,GAAG,EAAE,CAAC;IAyBf,CAAC;IAvBA,KAAK,CAAC,MAAc,EAAE,IAAY;QACjC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAC9B,GAAG,CAAC,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,6DAA6D;IAC7D,KAAK,CAAC,SAAS,CAAC,CAAc;QAC7B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,WAAW,CAChB,CAAc,EACd,KAAuB;QAEvB,OAAO,uBAAU,CAAA,UAAU,CAAC,QAAQ,KAAK,CAAC,OAAO,QAAQ,CAAC;IAC3D,CAAC;IAID,gBAAgB,CAAC,GAAgB;QAChC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;CACD;AA9BD,oBA8BC"}
@@ -4,64 +4,21 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.AllQueryParams = exports.PagePropsParser = void 0;
7
- const ts_predicates_1 = require("@sealcode/ts-predicates");
8
7
  const merge_1 = __importDefault(require("merge"));
9
- // the intention here is to sometime in the future be able to store multiple frames on one document, so props for each frame will be in a different namespace, and parsers are going to help with that
10
- function parseStringValues(shape, values) {
11
- const result = {};
12
- for (const [key, value] of Object.entries(values)) {
13
- if (!(key in shape)) {
14
- continue;
15
- }
16
- const predicate = shape[key];
17
- if (predicate == ts_predicates_1.predicates.number) {
18
- result[key] = parseFloat(value);
19
- }
20
- else {
21
- result[key] = value;
22
- }
23
- }
24
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
25
- return result;
26
- }
8
+ // page props parser is only tasked with getting the raw props from *somewhere*
9
+ // and being able to put new values back to that somewhere. Parsing to numbers
10
+ // or any other exotic types is done by fields logic.
27
11
  class PagePropsParser {
28
- constructor(propsShape, defaultValues) {
29
- this.propsShape = propsShape;
30
- this.defaultValues = defaultValues;
31
- }
32
12
  overwriteProp(ctx, new_props) {
33
13
  const result = {};
34
14
  merge_1.default.recursive(result, this.decode(ctx), new_props);
35
15
  return result;
36
16
  }
37
- makeHiddenInputs(values, fields_to_skip) {
38
- return Object.entries(values)
39
- .filter(([key]) => !fields_to_skip.includes(key))
40
- .map(([key, value]) =>
41
- /* HTML */ `<input
42
- type="hidden"
43
- name="${key}"
44
- value="${value}"
45
- />`)
46
- .join(" ");
47
- }
48
- getDefaultValue(key) {
49
- return this.defaultValues[key];
50
- }
51
17
  }
52
18
  exports.PagePropsParser = PagePropsParser;
53
19
  class AllQueryParams extends PagePropsParser {
54
20
  decode(ctx) {
55
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
56
- const query = parseStringValues(this.propsShape, {
57
- ...this.defaultValues,
58
- ...ctx.query,
59
- });
60
- if (!ts_predicates_1.hasShape(this.propsShape, query)) {
61
- throw new Error("Wrong props shape");
62
- }
63
- // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
64
- return query;
21
+ return ctx.query;
65
22
  }
66
23
  encode(props) {
67
24
  return props;
@@ -1 +1 @@
1
- {"version":3,"file":"props-parser.js","sourceRoot":"","sources":["../../src/page/props-parser.ts"],"names":[],"mappings":";;;;;;AAAA,2DAKiC;AAGjC,kDAA0B;AAK1B,sMAAsM;AAEtM,SAAS,iBAAiB,CACzB,KAAe,EACf,MAA8B;IAE9B,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;QAClD,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE;YACpB,SAAS;SACT;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,SAAS,IAAI,0BAAU,CAAC,MAAM,EAAE;YACnC,MAAM,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;SAChC;aAAM;YACN,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;SACpB;KACD;IACD,yEAAyE;IACzE,OAAO,MAA+B,CAAC;AACxC,CAAC;AAED,MAAsB,eAAe;IAKpC,YACQ,UAAiB,EACjB,aAAiC;QADjC,eAAU,GAAV,UAAU,CAAO;QACjB,kBAAa,GAAb,aAAa,CAAoB;IACtC,CAAC;IAEJ,aAAa,CACZ,GAAgB,EAChB,SAA6B;QAE7B,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,eAAK,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IACf,CAAC;IAED,gBAAgB,CAAC,MAAiB,EAAE,cAAwB;QAC3D,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;aAC3B,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAChD,GAAG,CACH,CAAC,CAAC,GAAG,EAAE,KAAK,CAA4B,EAAE,EAAE;QAC3C,UAAU,CAAC;;cAEF,GAAG;eACF,KAAK;QACZ,CACJ;aACA,IAAI,CAAC,GAAG,CAAC,CAAC;IACb,CAAC;IAED,eAAe,CACd,GAAQ;QAER,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;CACD;AAtCD,0CAsCC;AAED,MAAa,cAEX,SAAQ,eAA0B;IACnC,MAAM,CAAC,GAAgB;QACtB,yEAAyE;QACzE,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE;YAChD,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,GAAG,CAAC,KAAK;SACyB,CAAC,CAAC;QACxC,IAAI,CAAC,wBAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE;YACtC,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACrC;QACD,yEAAyE;QACzE,OAAO,KAAkB,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAgB;QACtB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,SAAiB;QACjC,OAAO,SAAS,CAAC;IAClB,CAAC;CACD;AAvBD,wCAuBC"}
1
+ {"version":3,"file":"props-parser.js","sourceRoot":"","sources":["../../src/page/props-parser.ts"],"names":[],"mappings":";;;;;;AACA,kDAA0B;AAM1B,+EAA+E;AAC/E,8EAA8E;AAC9E,qDAAqD;AAErD,MAAsB,eAAe;IAKpC,aAAa,CACZ,GAAgB,EAChB,SAA6B;QAE7B,MAAM,MAAM,GAAG,EAAE,CAAC;QAClB,eAAK,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;QACrD,OAAO,MAAM,CAAC;IACf,CAAC;CACD;AAbD,0CAaC;AAED,MAAa,cAEX,SAAQ,eAA0B;IACnC,MAAM,CAAC,GAAgB;QACtB,OAAO,GAAG,CAAC,KAAK,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,KAAgB;QACtB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,gBAAgB,CAAC,SAAiB;QACjC,OAAO,SAAS,CAAC;IAClB,CAAC;CACD;AAdD,wCAcC"}
@@ -5,39 +5,59 @@ 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")}";
13
- import html from "${rel("src/back/html")}";
8
+ import {
9
+ CollectionField,
10
+ Form,
11
+ FormData,
12
+ FormDataValue,
13
+ SimpleFormField,
14
+ SimpleInput,
15
+ } from "@sealcode/sealgen";
16
+ import html from "../html";
17
+ import { Users } from "${rel("src/back/collections/collections")}";
14
18
 
15
19
  export const actionName = "${action_name}";
16
20
 
17
- export default new(class ${action_name}Form extends Form {
18
- defaultSuccessMessage = "Pomyślnie utworzono użytkownika";
21
+ const fields = {
22
+ email: new CollectionField(true, Users.fields.email),
23
+ password: new SimpleFormField(true),
24
+ };
19
25
 
20
- fields = [new FormField("email", true, collectionFieldValidator(Users.fields.email))];
26
+ export default new (class ${action_name}Form extends Form<typeof fields> {
27
+ defaultSuccessMessage = "Formularz wypełniony poprawnie";
28
+ fields = fields;
21
29
 
22
30
  controls = [
23
- new FormHeader("Enter your email address"),
24
- new SimpleInput("email", { label: "Your email", type: "email" }),
31
+ new SimpleInput(fields.email, { label: "Email:", type: "email" }),
32
+ new SimpleInput(fields.password, { label: "Password:", type: "password" }),
25
33
  ];
26
34
 
35
+ async validateValues(
36
+ ctx: BaseContext,
37
+ data: Record<string, FormDataValue>
38
+ ): Promise<{ valid: boolean; error: string }> {
39
+ // just an example
40
+ const { parsed: email } = await this.fields.email.getValue(ctx, data);
41
+ const { parsed: password } = await this.fields.password.getValue(ctx, data);
42
+ if ((password || "").length > (email || "").length) {
43
+ return { valid: false, error: "Password cannot be longer than email" };
44
+ } else {
45
+ return { valid: true, error: "" };
46
+ }
47
+ }
48
+
27
49
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
28
50
  async canAccess(_: BaseContext) {
29
51
  return { canAccess: true, message: "" };
30
52
  }
31
53
 
32
- async onSubmit(ctx: BaseContext, values: Record<"email", string>) {
33
- await ctx.$app.collections.users.create(ctx.$context, {
34
- username: values.email,
35
- ...values,
36
- });
54
+ async onSubmit() {
55
+ //noop
56
+ return;
37
57
  }
38
58
 
39
- async render(ctx: BaseContext, data: FormData, path: string) {
40
- return html(ctx, "${action_name}", await super.render(ctx, data, path));
59
+ async render(ctx: BaseContext, data: FormData) {
60
+ return html(ctx, "${action_name}", await super.render(ctx, data));
41
61
  }
42
62
  })();
43
63
  `;
@@ -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;;6BAEnC,WAAW;;;;;;;4BAOZ,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAkCjB,WAAW;;;CAGhC,CAAC;AACF,CAAC;AA9DD,oCA8DC"}
@@ -21,38 +21,48 @@ const listTemplate = async (action_name, newfilefullpath) => {
21
21
  import { CollectionItem } from "sealious";
22
22
  import { tempstream } from "tempstream";
23
23
  import { ${uppercase_collection} } from "${rel("src/back/collections/collections")}";
24
- import html from "${rel("src/back/html.ts")}";
25
- import {
26
- BaseListPageDefaultProps,
27
- BaseListPageProps,
28
- BaseListPagePropsShape,
29
- SealiousItemListPage,
30
- } from "${rel("src/back/page/list.ts")}";
31
- import { AllQueryParams } from "${rel("src/back/page/props-parser.ts")}";
24
+ import html from "../../html";
25
+ import { SealiousItemListPage, BaseListPageFields } from "@sealcode/sealgen";
32
26
 
33
27
  export const actionName = "${action_name}";
34
28
 
35
- export default new (class ${action_name}Page extends SealiousItemListPage<typeof ${uppercase_collection}> {
36
- propsParser = new AllQueryParams<BaseListPageProps>(
37
- BaseListPagePropsShape,
38
- BaseListPageDefaultProps
39
- );
29
+ const filterFields = {};
30
+
31
+ export default new (class ${action_name}Page extends SealiousItemListPage<
32
+ typeof ${uppercase_collection},
33
+ typeof BaseListPageFields
34
+ > {
35
+ fields = BaseListPageFields;
36
+
37
+ filterFields = filterFields;
38
+ filterControls = [];
40
39
 
41
40
  async render(ctx: BaseContext) {
42
41
  return html(
43
42
  ctx,
44
- "${uppercase_collection}",
43
+ "${uppercase_collection}",
45
44
  tempstream/* HTML */ \`<div>
46
- <h2>${uppercase_collection} List</h2>
47
- <ul>
48
- \${super.render(ctx)}
49
- </ul>
45
+ <h2>${uppercase_collection} List</h2>
46
+ <table>
47
+ <thead>
48
+ <th>id</th>
49
+ \${Object.keys(${uppercase_collection}.fields).map(
50
+ (fieldname) => \`<th>\${fieldname}</th>\`
51
+ )}
52
+ </thead>
53
+ <tbody>
54
+ \${super.render(ctx)}
55
+ </tbody>
56
+ </table>
50
57
  </div>\`
51
58
  );
52
59
  }
53
60
 
54
- async renderItem(_: BaseContext, item: CollectionItem<typeof ${uppercase_collection}>) {
55
- return tempstream\`<li>\${item.id}</li>\`;
61
+ async renderItem(_: BaseContext, item: CollectionItem<typeof ${uppercase_collection}>) {
62
+ return tempstream\`<tr><td>\${item.id}</td>\${Object.keys(${uppercase_collection}.fields).map(
63
+ (fieldname: keyof typeof ${uppercase_collection}["fields"]) =>
64
+ tempstream\`<td>\${item.get(fieldname)}</td>\`
65
+ )}</tr>\`;
56
66
  }
57
67
  })(${uppercase_collection});
58
68
  `;
@@ -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;;;;6BAI2B,WAAW;;;;4BAIZ,WAAW;UAC7B,oBAAoB;;;;;;;;;;;MAWxB,oBAAoB;;UAEhB,oBAAoB;;;;uBAIP,oBAAoB;;;;;;;;;;;;gEAYqB,oBAAoB;8DACtB,oBAAoB;8BACpD,oBAAoB;;;;KAI7C,oBAAoB;CACxB,CAAC;AACF,CAAC,CAAC;AAtEW,QAAA,YAAY,gBAsEvB"}
@@ -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"}