@sealcode/sealgen 0.1.7 → 0.2.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.
Files changed (165) hide show
  1. package/.eslintrc.js +1 -0
  2. package/.log/ti-101379.log +524 -0
  3. package/.log/ti-131883.log +505 -0
  4. package/.log/ti-138140.log +505 -0
  5. package/.log/ti-138288.log +526 -0
  6. package/.log/ti-292609.log +508 -0
  7. package/.log/ti-304933.log +524 -0
  8. package/.log/ti-312312.log +508 -0
  9. package/.log/ti-314240.log +1617 -0
  10. package/.log/ti-62627.log +508 -0
  11. package/.log/ti-64785.log +508 -0
  12. package/.log/ti-65911.log +533 -0
  13. package/.log/ti-69885.log +548 -0
  14. package/.log/ti-72106.log +551 -0
  15. package/.log/ti-74858.log +508 -0
  16. package/.log/tsserver.log +1610 -902
  17. package/@types/build.d.ts +1 -0
  18. package/@types/cli.d.ts +2 -0
  19. package/@types/forms/controls/checkboxed-list-input.d.ts +16 -0
  20. package/@types/forms/controls/controls.d.ts +9 -0
  21. package/@types/forms/controls/dropdown.d.ts +20 -0
  22. package/@types/forms/controls/editable-collection-subset.d.ts +21 -0
  23. package/@types/forms/controls/form-control.d.ts +8 -0
  24. package/@types/forms/controls/form-field-control.d.ts +13 -0
  25. package/@types/forms/controls/form-header.d.ts +9 -0
  26. package/@types/forms/controls/form-paragraph.d.ts +7 -0
  27. package/@types/forms/controls/frame.d.ts +17 -0
  28. package/@types/forms/controls/simple-input.d.ts +28 -0
  29. package/@types/forms/controls.d.ts +0 -0
  30. package/@types/forms/field.d.ts +42 -0
  31. package/@types/forms/form-fields-list.d.ts +4 -0
  32. package/@types/forms/form.d.ts +42 -0
  33. package/@types/forms/validator.d.ts +3 -0
  34. package/@types/index.d.ts +14 -2
  35. package/@types/page/access-control.d.ts +6 -0
  36. package/@types/page/list.d.ts +59 -0
  37. package/@types/page/page.d.ts +26 -0
  38. package/@types/page/props-parser.d.ts +20 -0
  39. package/@types/run.d.ts +0 -0
  40. package/@types/templates/form.d.ts +1 -1
  41. package/@types/templates/list.d.ts +1 -0
  42. package/@types/templates/page.d.ts +1 -1
  43. package/@types/utils/list-collections.d.ts +1 -0
  44. package/@types/utils/natural-numbers.d.ts +1 -0
  45. package/@types/utils/sleep.d.ts +1 -0
  46. package/@types/utils/url-with-new-params.d.ts +2 -0
  47. package/@types/utils/utils.d.ts +9 -0
  48. package/@types/utils/walk.d.ts +1 -1
  49. package/lib/add-collection.js +13 -24
  50. package/lib/add-collection.js.map +1 -1
  51. package/lib/add-route.js +25 -32
  52. package/lib/add-route.js.map +1 -1
  53. package/lib/build.js +108 -0
  54. package/lib/build.js.map +1 -0
  55. package/lib/cli.js +30 -0
  56. package/lib/cli.js.map +1 -0
  57. package/lib/find-scss-includes.js +10 -20
  58. package/lib/find-scss-includes.js.map +1 -1
  59. package/lib/forms/controls/checkboxed-list-input.js +43 -0
  60. package/lib/forms/controls/checkboxed-list-input.js.map +1 -0
  61. package/lib/forms/controls/controls.js +22 -0
  62. package/lib/forms/controls/controls.js.map +1 -0
  63. package/lib/forms/controls/dropdown.js +40 -0
  64. package/lib/forms/controls/dropdown.js.map +1 -0
  65. package/lib/forms/controls/editable-collection-subset.js +73 -0
  66. package/lib/forms/controls/editable-collection-subset.js.map +1 -0
  67. package/lib/forms/controls/form-control.js +7 -0
  68. package/lib/forms/controls/form-control.js.map +1 -0
  69. package/lib/forms/controls/form-field-control.js +22 -0
  70. package/lib/forms/controls/form-field-control.js.map +1 -0
  71. package/lib/forms/controls/form-header.js +18 -0
  72. package/lib/forms/controls/form-header.js.map +1 -0
  73. package/lib/forms/controls/form-paragraph.js +16 -0
  74. package/lib/forms/controls/form-paragraph.js.map +1 -0
  75. package/lib/forms/controls/frame.js +29 -0
  76. package/lib/forms/controls/frame.js.map +1 -0
  77. package/lib/forms/controls/simple-input.js +50 -0
  78. package/lib/forms/controls/simple-input.js.map +1 -0
  79. package/lib/forms/controls.js +1 -0
  80. package/lib/forms/controls.js.map +1 -0
  81. package/lib/forms/field.js +80 -0
  82. package/lib/forms/field.js.map +1 -0
  83. package/lib/forms/form-fields-list.js +10 -0
  84. package/lib/forms/form-fields-list.js.map +1 -0
  85. package/lib/forms/form.js +162 -0
  86. package/lib/forms/form.js.map +1 -0
  87. package/lib/forms/validator.js +11 -0
  88. package/lib/forms/validator.js.map +1 -0
  89. package/lib/generate-collections.js +30 -43
  90. package/lib/generate-collections.js.map +1 -1
  91. package/lib/generate-routes.js +29 -42
  92. package/lib/generate-routes.js.map +1 -1
  93. package/lib/index.js +16 -37
  94. package/lib/index.js.map +1 -1
  95. package/lib/page/access-control.js +20 -0
  96. package/lib/page/access-control.js.map +1 -0
  97. package/lib/page/list.js +148 -0
  98. package/lib/page/list.js.map +1 -0
  99. package/lib/page/page.js +20 -0
  100. package/lib/page/page.js.map +1 -0
  101. package/lib/page/props-parser.js +74 -0
  102. package/lib/page/props-parser.js.map +1 -0
  103. package/lib/run.js +1 -0
  104. package/lib/run.js.map +1 -0
  105. package/lib/templates/form.js +2 -2
  106. package/lib/templates/form.js.map +1 -1
  107. package/lib/templates/list.js +61 -0
  108. package/lib/templates/list.js.map +1 -0
  109. package/lib/templates/page.js +3 -1
  110. package/lib/templates/page.js.map +1 -1
  111. package/lib/utils/exec.js +16 -27
  112. package/lib/utils/exec.js.map +1 -1
  113. package/lib/utils/list-collections.js +20 -0
  114. package/lib/utils/list-collections.js.map +1 -0
  115. package/lib/utils/natural-numbers.js +10 -0
  116. package/lib/utils/natural-numbers.js.map +1 -0
  117. package/lib/utils/question.js +15 -26
  118. package/lib/utils/question.js.map +1 -1
  119. package/lib/utils/sleep.js +8 -0
  120. package/lib/utils/sleep.js.map +1 -0
  121. package/lib/utils/url-with-new-params.js +12 -0
  122. package/lib/utils/url-with-new-params.js.map +1 -0
  123. package/lib/utils/utils.js +19 -0
  124. package/lib/utils/utils.js.map +1 -0
  125. package/lib/utils/walk.js +16 -27
  126. package/lib/utils/walk.js.map +1 -1
  127. package/package.json +19 -4
  128. package/src/add-route.ts +14 -9
  129. package/src/build.ts +82 -0
  130. package/src/cli.ts +34 -0
  131. package/src/find-scss-includes.ts +3 -2
  132. package/src/forms/controls/checkboxed-list-input.ts +50 -0
  133. package/src/forms/controls/controls.ts +9 -0
  134. package/src/forms/controls/dropdown.ts +57 -0
  135. package/src/forms/controls/editable-collection-subset.ts +91 -0
  136. package/src/forms/controls/form-control.ts +13 -0
  137. package/src/forms/controls/form-field-control.ts +39 -0
  138. package/src/forms/controls/form-header.ts +16 -0
  139. package/src/forms/controls/form-paragraph.ts +11 -0
  140. package/src/forms/controls/frame.ts +26 -0
  141. package/src/forms/controls/simple-input.ts +73 -0
  142. package/src/forms/controls.ts +0 -0
  143. package/src/forms/field.ts +119 -0
  144. package/src/forms/form-fields-list.ts +7 -0
  145. package/src/forms/form.ts +242 -0
  146. package/src/forms/forms.scss +18 -0
  147. package/src/forms/validator.ts +10 -0
  148. package/src/generate-routes.ts +8 -3
  149. package/src/index.ts +14 -28
  150. package/src/page/access-control.ts +18 -0
  151. package/src/page/list.ts +214 -0
  152. package/src/page/page.ts +31 -0
  153. package/src/page/props-parser.ts +99 -0
  154. package/src/run.ts +0 -0
  155. package/src/templates/form.ts +5 -2
  156. package/src/templates/list.ts +65 -0
  157. package/src/templates/page.ts +4 -2
  158. package/src/utils/list-collections.ts +16 -0
  159. package/src/utils/natural-numbers.ts +5 -0
  160. package/src/utils/sleep.ts +3 -0
  161. package/src/utils/url-with-new-params.ts +9 -0
  162. package/src/utils/utils.ts +10 -0
  163. package/src/utils/walk.ts +2 -2
  164. package/tsconfig.json +23 -25
  165. package/src/tsconfig.json +0 -18
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberField = exports.ChekboxedListField = exports.PickFromListField = exports.FormField = void 0;
4
+ const ts_predicates_1 = require("@sealcode/ts-predicates");
5
+ class FormField {
6
+ constructor(name, required = false, validator = async () => ({
7
+ valid: true,
8
+ message: "",
9
+ })) {
10
+ this.name = name;
11
+ this.required = required;
12
+ this.validator = validator;
13
+ }
14
+ async _validate(ctx, value) {
15
+ if (this.required && (value == "" || value == null || value == undefined)) {
16
+ return { valid: false, message: "This field is required" };
17
+ }
18
+ return this.validator(ctx, value, this);
19
+ }
20
+ getEmptyValue() {
21
+ return "";
22
+ }
23
+ }
24
+ exports.FormField = FormField;
25
+ class PickFromListField extends FormField {
26
+ constructor(name, required = false, generateOptions, customValidation = (ctx, value, instance) => instance.valueInList(ctx, value)) {
27
+ super(name, required, (ctx, value) => this.customValidation(ctx, value, this));
28
+ this.name = name;
29
+ this.required = required;
30
+ this.generateOptions = generateOptions;
31
+ this.customValidation = customValidation;
32
+ }
33
+ async valueInList(ctx, value) {
34
+ const options = await this.generateOptions(ctx);
35
+ if (!ts_predicates_1.is(value, ts_predicates_1.predicates.string)) {
36
+ return { valid: false, message: "not a string" };
37
+ }
38
+ if (!Object.keys(options).includes(value)) {
39
+ return { valid: false, message: `"${value}" is not one of the options` };
40
+ }
41
+ return { valid: true, message: "" };
42
+ }
43
+ }
44
+ exports.PickFromListField = PickFromListField;
45
+ class ChekboxedListField extends FormField {
46
+ constructor(name, required = false, generateOptions, isVisible = () => Promise.resolve(true)) {
47
+ super(name, required, (ctx, value) => this.isValueValid(ctx, value));
48
+ this.name = name;
49
+ this.required = required;
50
+ this.generateOptions = generateOptions;
51
+ this.isVisible = isVisible;
52
+ }
53
+ async isValueValid(_, value) {
54
+ if (ts_predicates_1.is(value, ts_predicates_1.predicates.string)) {
55
+ return { valid: false, message: "you need an array" };
56
+ }
57
+ if (ts_predicates_1.is(value, ts_predicates_1.predicates.null)) {
58
+ return { valid: false, message: "you need an array" };
59
+ }
60
+ return { valid: true, message: "" };
61
+ }
62
+ }
63
+ exports.ChekboxedListField = ChekboxedListField;
64
+ class NumberField extends FormField {
65
+ constructor(field_name, required) {
66
+ super(field_name, required, (_, value) => this.isValueValid(_, value));
67
+ }
68
+ async isValueValid(_, value) {
69
+ if ((ts_predicates_1.is(value, ts_predicates_1.predicates.string) &&
70
+ !isNaN(parseFloat(value)) &&
71
+ parseFloat(value).toString() == value.trim()) ||
72
+ ts_predicates_1.is(value, ts_predicates_1.predicates.number) ||
73
+ ((ts_predicates_1.is(value, ts_predicates_1.predicates.undefined) || value == "") && !this.required)) {
74
+ return { valid: true, message: "" };
75
+ }
76
+ return { valid: false, message: "Proszę wprowadzić liczbę" };
77
+ }
78
+ }
79
+ exports.NumberField = NumberField;
80
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../src/forms/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FormFieldsList = void 0;
4
+ class FormFieldsList {
5
+ static getField(fields, name) {
6
+ return fields.find((f) => f.name == name);
7
+ }
8
+ }
9
+ exports.FormFieldsList = FormFieldsList;
10
+ //# sourceMappingURL=form-fields-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-fields-list.js","sourceRoot":"","sources":["../../src/forms/form-fields-list.ts"],"names":[],"mappings":";;;AAEA,MAAa,cAAc;IAC1B,MAAM,CAAC,QAAQ,CAAC,MAAmB,EAAE,IAAY;QAChD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAC3C,CAAC;CACD;AAJD,wCAIC"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Form = void 0;
4
+ const tempstream_1 = require("tempstream");
5
+ const ts_predicates_1 = require("@sealcode/ts-predicates");
6
+ class Form {
7
+ constructor() {
8
+ this.defaultSuccessMessage = "Done";
9
+ this.submitButtonText = "Wyslij";
10
+ }
11
+ async canAccess(
12
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+ _) {
14
+ return { canAccess: true, message: "" };
15
+ }
16
+ async renderError(_, error) {
17
+ return tempstream_1.tempstream /* HTML */ `<div>${error.message}</div>`;
18
+ }
19
+ async validate(
20
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
21
+ _,
22
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
23
+ __) {
24
+ return {
25
+ valid: true,
26
+ error: "",
27
+ };
28
+ }
29
+ async _validate(ctx, values) {
30
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
31
+ const errors = {};
32
+ let valid = true;
33
+ await Promise.all(this.fields.map(async (field) => {
34
+ const { valid: fieldvalid, message: fieldmessage } = await field._validate(ctx, values[field.name]);
35
+ if (!fieldvalid) {
36
+ valid = false;
37
+ errors[field.name] = fieldmessage;
38
+ }
39
+ }));
40
+ const formValidationResult = await this.validate(ctx, values);
41
+ if (!formValidationResult.valid) {
42
+ valid = false;
43
+ errors.form = formValidationResult.error;
44
+ }
45
+ return { valid, errors };
46
+ }
47
+ async render(ctx, data,
48
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
49
+ _) {
50
+ return tempstream_1.tempstream /* HTML */ `${this.makeFormTag(`${ctx.URL.pathname}/`)} ${!this.controls.some((control) => control.role == "messages")
51
+ ? this.renderMessages(ctx, data)
52
+ : ""} ${data.errors.form !== undefined
53
+ ? `<div class="form__error">${data.errors.form}</div>`
54
+ : ""} ${this.renderControls(ctx, data)}<input type="submit" value="${this.submitButtonText}"/></form>`;
55
+ }
56
+ renderMessages(_, data) {
57
+ return tempstream_1.tempstream /* HTML */ `<div class="form-messages">
58
+ ${data.messages.map((message) => `<div class="form-message form-message--${message.type}">${message.text}</div>`)}
59
+ </div>`;
60
+ }
61
+ renderControls(ctx, data) {
62
+ return tempstream_1.tempstream /* HTML */ `${this.controls.map((control) => control.render(ctx, this.fields, data))}`;
63
+ }
64
+ makeFormTag(path) {
65
+ return `<form method="POST" action="${path}">`;
66
+ }
67
+ generateData(rawData = {}) {
68
+ // generates a FormData object that has the correct shape to be passed to
69
+ // render(), so for example it makes sure that all fields either have values or
70
+ // are empty string (the aren't undefined, for example). If no argument is passed,
71
+ // creates an object that represents an empty state of the form. If some data
72
+ // object is passed in the first argument, then the values in that data object are
73
+ // incorporated into the generated object
74
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
75
+ const values = Object.fromEntries(this.fields.map((f) => [
76
+ f.name,
77
+ rawData[f.name] || f.getEmptyValue(),
78
+ ]));
79
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
80
+ const errors = Object.fromEntries(this.fields.map((f) => [f.name, ""]));
81
+ return {
82
+ values,
83
+ errors,
84
+ messages: [],
85
+ // eslint-disable-next-line @typescript-eslint/consistent-type-assertions
86
+ raw_values: rawData,
87
+ };
88
+ }
89
+ async onValuesInvalid(ctx, errors, form_path) {
90
+ ctx.status = 422;
91
+ const { values, raw_values } = this.generateData(ctx.$body);
92
+ ctx.body = await this.render(ctx, {
93
+ values,
94
+ raw_values,
95
+ errors,
96
+ messages: [{ type: "error", text: "Some fields are invalid" }],
97
+ }, form_path);
98
+ }
99
+ async onError(ctx, error, form_path) {
100
+ ctx.status = 422;
101
+ let error_message = "Unknown error has occured";
102
+ if (ts_predicates_1.is(error, ts_predicates_1.predicates.object) &&
103
+ ts_predicates_1.hasShape({ message: ts_predicates_1.predicates.string }, error)) {
104
+ error_message = error.message;
105
+ }
106
+ const { values, raw_values } = this.generateData(ctx.$body);
107
+ ctx.body = await this.render(ctx, {
108
+ values,
109
+ raw_values,
110
+ errors: {},
111
+ messages: [{ type: "error", text: error_message }],
112
+ }, form_path);
113
+ }
114
+ async onSuccess(ctx, form_path) {
115
+ const { values, raw_values } = this.generateData(ctx.$body);
116
+ ctx.body = await this.render(ctx, {
117
+ values,
118
+ raw_values,
119
+ errors: {},
120
+ messages: [
121
+ { type: "success", text: this.defaultSuccessMessage },
122
+ ],
123
+ }, form_path);
124
+ ctx.status = 422;
125
+ }
126
+ mount(router, path) {
127
+ router.use(path, async (ctx, next) => {
128
+ const result = await this.canAccess(ctx);
129
+ if (!result.canAccess) {
130
+ ctx.body = this.renderError(ctx, {
131
+ type: "access",
132
+ message: result.message,
133
+ });
134
+ ctx.status = 403;
135
+ return;
136
+ }
137
+ await next();
138
+ });
139
+ router.get(path, async (ctx) => {
140
+ ctx.type = "html";
141
+ ctx.body = await this.render(ctx, this.generateData(), path);
142
+ });
143
+ router.post(path, async (ctx) => {
144
+ const { valid, errors } = await this._validate(ctx, ctx.$body);
145
+ if (!valid) {
146
+ await this.onValuesInvalid(ctx, errors, path);
147
+ return;
148
+ }
149
+ try {
150
+ await this.onSubmit(ctx, this.generateData(ctx.$body).values);
151
+ await this.onSuccess(ctx, path);
152
+ }
153
+ catch (e) {
154
+ // eslint-disable-next-line no-console
155
+ console.dir(e, { depth: 5 });
156
+ await this.onError(ctx, e, path);
157
+ }
158
+ });
159
+ }
160
+ }
161
+ exports.Form = Form;
162
+ //# sourceMappingURL=form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form.js","sourceRoot":"","sources":["../../src/forms/form.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.collectionFieldValidator = void 0;
4
+ function collectionFieldValidator(field) {
5
+ return async (ctx, value) => {
6
+ const { valid, reason } = await field.checkValue(ctx.$context, value, undefined);
7
+ return { valid, message: reason || (valid ? "Wrong value" : "") };
8
+ };
9
+ }
10
+ exports.collectionFieldValidator = collectionFieldValidator;
11
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/forms/validator.ts"],"names":[],"mappings":";;;AAIA,SAAgB,wBAAwB,CAAC,KAAY;IACpD,OAAO,KAAK,EAAE,GAAgB,EAAE,KAAK,EAAE,EAAE;QACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QACjF,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IACnE,CAAC,CAAC;AACH,CAAC;AALD,4DAKC"}
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -17,51 +8,47 @@ const locreq_1 = __importDefault(require("locreq"));
17
8
  const fs_1 = require("fs");
18
9
  const ts_predicates_1 = require("@sealcode/ts-predicates");
19
10
  const target_locreq = locreq_1.default(process.cwd());
20
- function extractCollectionClassname(full_file_path) {
21
- return __awaiter(this, void 0, void 0, function* () {
22
- const file_content = yield fs_1.promises.readFile(full_file_path, "utf-8");
23
- const result = file_content.match(/export default class (\w+)/);
24
- if (result === null) {
25
- throw new Error("Missing 'export default class' statement?");
26
- }
27
- return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
28
- });
11
+ async function extractCollectionClassname(full_file_path) {
12
+ const file_content = await fs_1.promises.readFile(full_file_path, "utf-8");
13
+ const result = file_content.match(/export default class (\w+)/);
14
+ if (result === null) {
15
+ throw new Error("Missing 'export default class' statement?");
16
+ }
17
+ return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
29
18
  }
30
- function generateCollections() {
31
- return __awaiter(this, void 0, void 0, function* () {
32
- const collections_dir = target_locreq.resolve("src/back/collections");
33
- const files = (yield fs_1.promises.readdir(collections_dir)).filter((f) => !f.match(/\.(sub)?test\./) && f != "collections.ts");
34
- const file_data = yield Promise.all(files.map((file) => __awaiter(this, void 0, void 0, function* () {
35
- const full_path = target_locreq.resolve("src/back/collections/" + file);
36
- const class_name = yield extractCollectionClassname(full_path);
37
- return {
38
- class_name,
39
- file,
40
- full_path,
41
- urlname: file.replace(".ts", ""),
42
- };
43
- })));
44
- const content = `// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-collections'
19
+ async function generateCollections() {
20
+ const collections_dir = target_locreq.resolve("src/back/collections");
21
+ const files = (await fs_1.promises.readdir(collections_dir)).filter((f) => !f.match(/\.(sub)?test\./) && f != "collections.ts");
22
+ const file_data = await Promise.all(files.map(async (file) => {
23
+ const full_path = target_locreq.resolve("src/back/collections/" + file);
24
+ const class_name = await extractCollectionClassname(full_path);
25
+ return {
26
+ class_name,
27
+ file,
28
+ full_path,
29
+ urlname: file.replace(".ts", ""),
30
+ };
31
+ }));
32
+ const content = `// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-collections'
45
33
  import { App } from "sealious";
46
34
 
47
35
  ${file_data
48
- .map(({ class_name, urlname }) => `import _${class_name} from "./${urlname}";`)
49
- .join("\n")}
36
+ .map(({ class_name, urlname }) => `import _${class_name} from "./${urlname}";`)
37
+ .join("\n")}
50
38
 
51
39
  ${file_data
52
- .map(({ class_name }) => `export const ${class_name} = new _${class_name}();`)
53
- .join("\n")}
40
+ .map(({ class_name }) => `export const ${class_name} = new _${class_name}();`)
41
+ .join("\n")}
54
42
 
55
43
  export const collections = {
56
44
  ...App.BaseCollections,
57
45
  ${file_data
58
- .map(({ class_name, urlname }) => ` "${urlname}": ${class_name},`)
59
- .join("\n")}
46
+ .map(({ class_name, urlname }) => ` "${urlname}": ${class_name},`)
47
+ .join("\n")}
60
48
  };`;
61
- yield fs_1.promises.writeFile(target_locreq.resolve("src/back/collections/collections.ts"), content);
62
- // eslint-disable-next-line no-console
63
- console.log("Successfuly generated new src/back/collections/collections.ts file");
64
- });
49
+ await fs_1.promises.writeFile(target_locreq.resolve("src/back/collections/collections.ts"), content);
50
+ // eslint-disable-next-line no-console
51
+ console.log("Successfuly generated new src/back/collections/collections.ts file");
65
52
  }
66
53
  exports.generateCollections = generateCollections;
67
54
  //# sourceMappingURL=generate-collections.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-collections.js","sourceRoot":"","sources":["../src/generate-collections.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,oDAA6B;AAC7B,2BAAoC;AACpC,2DAAiE;AAEjE,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7C,SAAe,0BAA0B,CACxC,cAAsB;;QAEtB,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,IAAI,MAAM,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;SAC7D;QACD,OAAO,0BAAU,CAChB,MAAM,CAAC,CAAC,CAAC,EACT,0BAAU,CAAC,MAAM,EACjB,+BAA+B,CAC/B,CAAC;IACH,CAAC;CAAA;AAED,SAAsB,mBAAmB;;QACxC,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACtE,MAAM,KAAK,GAAG,CAAC,MAAM,aAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAC1D,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,GAAG,CAAC,CAAO,IAAI,EAAE,EAAE;YACxB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CACtC,uBAAuB,GAAG,IAAI,CAC9B,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;YAC/D,OAAO;gBACN,UAAU;gBACV,IAAI;gBACJ,SAAS;gBACT,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;aAChC,CAAC;QACH,CAAC,CAAA,CAAC,CACF,CAAC;QAEF,MAAM,OAAO,GAAG;;;EAGf,SAAS;aACT,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAC3B,WAAW,UAAU,YAAY,OAAO,IAAI,CAC7C;aACA,IAAI,CAAC,IAAI,CAAC;;EAEV,SAAS;aACT,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,gBAAgB,UAAU,WAAW,UAAU,KAAK,CACxE;aACA,IAAI,CAAC,IAAI,CAAC;;;;EAIV,SAAS;aACT,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,MAAM,UAAU,GAAG,CAAC;aACjE,IAAI,CAAC,IAAI,CAAC;GACT,CAAC;QACH,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,qCAAqC,CAAC,EAC5D,OAAO,CACP,CAAC;QACF,sCAAsC;QACtC,OAAO,CAAC,GAAG,CACV,oEAAoE,CACpE,CAAC;IACH,CAAC;CAAA;AAlDD,kDAkDC"}
1
+ {"version":3,"file":"generate-collections.js","sourceRoot":"","sources":["../src/generate-collections.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA6B;AAC7B,2BAAoC;AACpC,2DAAiE;AAEjE,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7C,KAAK,UAAU,0BAA0B,CACxC,cAAsB;IAEtB,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,IAAI,EAAE;QACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;KAC7D;IACD,OAAO,0BAAU,CAChB,MAAM,CAAC,CAAC,CAAC,EACT,0BAAU,CAAC,MAAM,EACjB,+BAA+B,CAC/B,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,mBAAmB;IACxC,MAAM,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,CAAC,MAAM,aAAE,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CACvD,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAC1D,CAAC;IACF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QACxB,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CACtC,uBAAuB,GAAG,IAAI,CAC9B,CAAC;QACF,MAAM,UAAU,GAAG,MAAM,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAC/D,OAAO;YACN,UAAU;YACV,IAAI;YACJ,SAAS;YACT,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAChC,CAAC;IACH,CAAC,CAAC,CACF,CAAC;IAEF,MAAM,OAAO,GAAG;;;EAGf,SAAS;SACT,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAC3B,WAAW,UAAU,YAAY,OAAO,IAAI,CAC7C;SACA,IAAI,CAAC,IAAI,CAAC;;EAEV,SAAS;SACT,GAAG,CACH,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,gBAAgB,UAAU,WAAW,UAAU,KAAK,CACxE;SACA,IAAI,CAAC,IAAI,CAAC;;;;EAIV,SAAS;SACT,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,KAAK,OAAO,MAAM,UAAU,GAAG,CAAC;SACjE,IAAI,CAAC,IAAI,CAAC;GACT,CAAC;IACH,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,qCAAqC,CAAC,EAC5D,OAAO,CACP,CAAC;IACF,sCAAsC;IACtC,OAAO,CAAC,GAAG,CACV,oEAAoE,CACpE,CAAC;AACH,CAAC;AAlDD,kDAkDC"}
@@ -1,13 +1,4 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
12
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
13
4
  };
@@ -21,53 +12,49 @@ const import_path_1 = require("./utils/import-path");
21
12
  const ts_predicates_1 = require("@sealcode/ts-predicates");
22
13
  const escape_url_params_1 = require("./utils/escape-url-params");
23
14
  const target_locreq = locreq_1.default(process.cwd());
24
- function extractActionName(full_file_path) {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- const file_content = yield fs_1.promises.readFile(full_file_path, "utf-8");
27
- const result = file_content.match(/export const actionName = "(\w+)"/);
28
- if (result === null) {
29
- throw new Error("Missing 'export const actionName' statement?");
30
- }
31
- return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
32
- });
15
+ async function extractActionName(full_file_path) {
16
+ const file_content = await fs_1.promises.readFile(full_file_path, "utf-8");
17
+ const result = file_content.match(/export const actionName = "(\w+)"/);
18
+ if (result === null) {
19
+ throw new Error("Missing 'export const actionName' statement?");
20
+ }
21
+ return ts_predicates_1.assertType(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
33
22
  }
34
- function generateRoutes() {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- const files = yield Promise.all((yield walk_1.walk(target_locreq.resolve("src/back/routes")))
37
- .filter((f) => f.endsWith(".page.ts") || f.endsWith(".form.ts"))
38
- .map((fullpath) => __awaiter(this, void 0, void 0, function* () {
39
- return ({
40
- fullpath,
41
- actionName: yield extractActionName(fullpath),
42
- url: escape_url_params_1.unescape_url_params("/" +
43
- path_1.relative(target_locreq.resolve("src/back/routes"), fullpath).replace(/\..+/, "") +
44
- "/" // trailing slash is important here, as it enables to use the entire path while building relative URLs. For example, while visiting /users/123, the path ./add-photo leads to /users/add-photo. While visiting /users/123/ (note the trailing slash), the path ./add-photo leads to /users/123/add-photo
45
- ),
46
- });
47
- })));
48
- yield 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
23
+ async function generateRoutes() {
24
+ const files = await Promise.all((await walk_1.walkDir(target_locreq.resolve("src/back/routes")))
25
+ .filter((f) => f.endsWith(".page.ts") ||
26
+ f.endsWith(".form.ts") ||
27
+ f.endsWith(".list.ts"))
28
+ .map(async (fullpath) => ({
29
+ fullpath,
30
+ actionName: await extractActionName(fullpath),
31
+ url: escape_url_params_1.unescape_url_params("/" +
32
+ path_1.relative(target_locreq.resolve("src/back/routes"), fullpath).replace(/\..+/, "") +
33
+ "/" // trailing slash is important here, as it enables to use the entire path while building relative URLs. For example, while visiting /users/123, the path ./add-photo leads to /users/add-photo. While visiting /users/123/ (note the trailing slash), the path ./add-photo leads to /users/123/add-photo
34
+ ),
35
+ })));
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
49
37
 
50
38
  import Router from "@koa/router";
51
39
  import { Middlewares } from "sealious";
52
40
 
53
41
  ${files
54
- .map(({ actionName, fullpath }) => `import { default as ${actionName} } from "${import_path_1.importPath(target_locreq.resolve("src/back/routes/routes.ts"), fullpath)}";`)
55
- .join("\n")}
42
+ .map(({ actionName, fullpath }) => `import { default as ${actionName} } from "${import_path_1.importPath(target_locreq.resolve("src/back/routes/routes.ts"), fullpath)}";`)
43
+ .join("\n")}
56
44
 
57
45
  ${files
58
- .map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
59
- .join("\n")}
46
+ .map(({ actionName, url }) => `export const ${actionName}URL = "${url}";`)
47
+ .join("\n")}
60
48
 
61
49
  export default function mountAutoRoutes(router: Router) {
62
50
  ${files
63
- .map(({ actionName, }) => ` router.use(${actionName}URL, Middlewares.extractContext(), Middlewares.parseBody());
51
+ .map(({ actionName, }) => ` router.use(${actionName}URL, Middlewares.extractContext(), Middlewares.parseBody());
64
52
  ${actionName}.mount(router, ${actionName}URL);`)
65
- .join("\n\n")}
53
+ .join("\n\n")}
66
54
  }
67
55
  `);
68
- // eslint-disable-next-line no-console
69
- console.log("Successfuly generated new src/back/routes/routes.ts file");
70
- });
56
+ // eslint-disable-next-line no-console
57
+ console.log("Successfuly generated new src/back/routes/routes.ts file");
71
58
  }
72
59
  exports.generateRoutes = generateRoutes;
73
60
  //# sourceMappingURL=generate-routes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate-routes.js","sourceRoot":"","sources":["../src/generate-routes.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2BAAoC;AACpC,+BAAgC;AAChC,oDAA6B;AAC7B,uCAAoC;AACpC,qDAAiD;AACjD,2DAAiE;AACjE,iEAAgE;AAEhE,MAAM,aAAa,GAAG,gBAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;AAE7C,SAAe,iBAAiB,CAAC,cAAsB;;QACtD,MAAM,YAAY,GAAG,MAAM,aAAE,CAAC,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAChE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvE,IAAI,MAAM,KAAK,IAAI,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SAChE;QACD,OAAO,0BAAU,CAChB,MAAM,CAAC,CAAC,CAAC,EACT,0BAAU,CAAC,MAAM,EACjB,+BAA+B,CAC/B,CAAC;IACH,CAAC;CAAA;AAED,SAAsB,cAAc;;QACnC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,CACC,MAAM,WAAI,CAAC,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CACpD;aACC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;aAC/D,GAAG,CAAC,CAAO,QAAQ,EAAE,EAAE;YAAC,OAAA,CAAC;gBACzB,QAAQ;gBACR,UAAU,EAAE,MAAM,iBAAiB,CAAC,QAAQ,CAAC;gBAC7C,GAAG,EAAE,uCAAmB,CACvB,GAAG;oBACF,eAAQ,CACP,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,EACxC,QAAQ,CACR,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;oBACrB,GAAG,CAAC,wSAAwS;iBAC7S;aACD,CAAC,CAAA;UAAA,CAAC,CACJ,CAAC;QAEF,MAAM,aAAE,CAAC,SAAS,CACjB,aAAa,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAClD;;;;;EAKA,KAAK;aACL,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;aACA,IAAI,CAAC,IAAI,CAAC;;EAEV,KAAK;aACL,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,gBAAgB,UAAU,UAAU,GAAG,IAAI,CAAC;aACzE,IAAI,CAAC,IAAI,CAAC;;;EAGV,KAAK;aACL,GAAG,CACH,CAAC,EACA,UAAU,GACV,EAAE,EAAE,CAAC,eAAe,UAAU;GAC9B,UAAU,kBAAkB,UAAU,OAAO,CAC9C;aACA,IAAI,CAAC,MAAM,CAAC;;CAEb,CACC,CAAC;QACF,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;IACzE,CAAC;CAAA;AAvDD,wCAuDC"}
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"}
package/lib/index.js CHANGED
@@ -1,41 +1,20 @@
1
- #!/usr/bin/env node
2
1
  "use strict";
3
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
4
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
5
- return new (P || (P = Promise))(function (resolve, reject) {
6
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
7
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
8
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
9
- step((generator = generator.apply(thisArg, _arguments || [])).next());
10
- });
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
10
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
11
11
  };
12
12
  Object.defineProperty(exports, "__esModule", { value: true });
13
- const add_collection_1 = require("./add-collection");
14
- const add_route_1 = require("./add-route");
15
- const find_scss_includes_1 = require("./find-scss-includes");
16
- const generate_collections_1 = require("./generate-collections");
17
- const generate_routes_1 = require("./generate-routes");
18
- const actions = {
19
- "add-collection": add_collection_1.addCollection,
20
- "add-route": add_route_1.addRoute,
21
- "generate-collections": generate_collections_1.generateCollections,
22
- "generate-routes": generate_routes_1.generateRoutes,
23
- "generate-scss-includes": find_scss_includes_1.generateScssIncludes,
24
- default: function () {
25
- return __awaiter(this, void 0, void 0, function* () {
26
- console.log("Usage: `sealscript <action>`");
27
- console.log(`Available actions: ${Object.keys(actions)
28
- .filter((e) => e != "default")
29
- .join(", ")}`);
30
- });
31
- },
32
- };
33
- void (function () {
34
- return __awaiter(this, void 0, void 0, function* () {
35
- const action = process.argv.at(-1);
36
- actions;
37
- const fn = actions[action || "default"] || actions.default;
38
- yield fn();
39
- });
40
- })();
13
+ __exportStar(require("./forms/form"), exports);
14
+ __exportStar(require("./forms/controls/controls"), exports);
15
+ __exportStar(require("./forms/field"), exports);
16
+ __exportStar(require("./page/page"), exports);
17
+ __exportStar(require("./page/props-parser"), exports);
18
+ __exportStar(require("./utils/utils"), exports);
19
+ __exportStar(require("./forms/validator"), exports);
41
20
  //# 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":";;;;;;;;;;;;AAEA,qDAAiD;AACjD,2CAAuC;AACvC,6DAA4D;AAC5D,iEAA6D;AAC7D,uDAAmD;AAEnD,MAAM,OAAO,GAAoD;IAChE,gBAAgB,EAAE,8BAAa;IAC/B,WAAW,EAAE,oBAAQ;IACrB,sBAAsB,EAAE,0CAAmB;IAC3C,iBAAiB,EAAE,gCAAc;IACjC,wBAAwB,EAAE,yCAAoB;IAC9C,OAAO,EAAE;;YACR,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CACV,sBAAsB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;iBACxC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC;iBAC7B,IAAI,CAAC,IAAI,CAAC,EAAE,CACd,CAAC;QACH,CAAC;KAAA;CACD,CAAC;AAEF,KAAK,CAAC;;QACL,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,CAAC;QACR,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC;QAC3D,MAAM,EAAE,EAAE,CAAC;IACZ,CAAC;CAAA,CAAC,EAAE,CAAC"}
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"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.peopleWhoCan = void 0;
4
+ function peopleWhoCan(action, collection) {
5
+ return async function (ctx) {
6
+ const policy = collection.getPolicy(action);
7
+ const result = await policy.check(ctx.$context);
8
+ if (!result) {
9
+ ctx.status = 403;
10
+ return { canAccess: false, message: "Not allowed" };
11
+ }
12
+ if (!result.allowed) {
13
+ ctx.status = 403;
14
+ return { canAccess: false, message: result.reason };
15
+ }
16
+ return { canAccess: true, message: "" };
17
+ };
18
+ }
19
+ exports.peopleWhoCan = peopleWhoCan;
20
+ //# sourceMappingURL=access-control.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"access-control.js","sourceRoot":"","sources":["../../src/page/access-control.ts"],"names":[],"mappings":";;;AAGA,SAAgB,YAAY,CAAC,MAAkB,EAAE,UAAsB;IACtE,OAAO,KAAK,WAAW,GAAgB;QACtC,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,EAAE;YACZ,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;SACpD;QACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;YACpB,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC;YACjB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;SACpD;QACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzC,CAAC,CAAC;AACH,CAAC;AAdD,oCAcC"}