@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
File without changes
@@ -1,119 +0,0 @@
1
- import { is, predicates } from "@sealcode/ts-predicates";
2
- import { BaseContext } from "koa";
3
-
4
- export type FormFieldValidationResponse = { valid: boolean; message: string };
5
-
6
- export type FormFieldValidationFn = (
7
- ctx: BaseContext,
8
- value: unknown,
9
- field: FormField
10
- ) => Promise<FormFieldValidationResponse>;
11
-
12
- export class FormField<Fieldnames extends string = string> {
13
- constructor(
14
- public name: Fieldnames,
15
- public required: boolean = false,
16
- public validator: FormFieldValidationFn = async () => ({
17
- valid: true,
18
- message: "",
19
- })
20
- ) {}
21
-
22
- public async _validate(
23
- ctx: BaseContext,
24
- value: unknown
25
- ): Promise<FormFieldValidationResponse> {
26
- if (this.required && (value == "" || value == null || value == undefined)) {
27
- return { valid: false, message: "This field is required" };
28
- }
29
- return this.validator(ctx, value, this);
30
- }
31
-
32
- public getEmptyValue() {
33
- return "";
34
- }
35
- }
36
-
37
- export class PickFromListField<
38
- Fieldnames extends string = string
39
- > extends FormField<Fieldnames> {
40
- constructor(
41
- public name: Fieldnames,
42
- public required: boolean = false,
43
- public generateOptions: (
44
- ctx: BaseContext
45
- ) => Promise<Record<string, string> | { [i: string]: string }>,
46
- public customValidation: (
47
- ctx: BaseContext,
48
- value: unknown,
49
- instance: PickFromListField
50
- ) => Promise<FormFieldValidationResponse> = (ctx, value, instance) =>
51
- instance.valueInList(ctx, value)
52
- ) {
53
- super(name, required, (ctx, value) => this.customValidation(ctx, value, this));
54
- }
55
-
56
- async valueInList(
57
- ctx: BaseContext,
58
- value: unknown
59
- ): Promise<FormFieldValidationResponse> {
60
- const options = await this.generateOptions(ctx);
61
- if (!is(value, predicates.string)) {
62
- return { valid: false, message: "not a string" };
63
- }
64
- if (!Object.keys(options).includes(value)) {
65
- return { valid: false, message: `"${value}" is not one of the options` };
66
- }
67
- return { valid: true, message: "" };
68
- }
69
- }
70
-
71
- export class ChekboxedListField<
72
- Fieldnames extends string = string
73
- > extends FormField<Fieldnames> {
74
- constructor(
75
- public name: Fieldnames,
76
- public required: boolean = false,
77
- public generateOptions: (
78
- ctx: BaseContext
79
- ) => Promise<Record<string, string> | { [i: string]: string }>,
80
- public isVisible: (ctx: BaseContext) => Promise<boolean> = () =>
81
- Promise.resolve(true)
82
- ) {
83
- super(name, required, (ctx, value) => this.isValueValid(ctx, value));
84
- }
85
-
86
- private async isValueValid(
87
- _: BaseContext,
88
- value: unknown
89
- ): Promise<FormFieldValidationResponse> {
90
- if (is(value, predicates.string)) {
91
- return { valid: false, message: "you need an array" };
92
- }
93
- if (is(value, predicates.null)) {
94
- return { valid: false, message: "you need an array" };
95
- }
96
- return { valid: true, message: "" };
97
- }
98
- }
99
-
100
- export class NumberField<
101
- Fieldnames extends string = string
102
- > extends FormField<Fieldnames> {
103
- constructor(field_name: Fieldnames, required: boolean) {
104
- super(field_name, required, (_, value) => this.isValueValid(_, value));
105
- }
106
-
107
- private async isValueValid(_: BaseContext, value: unknown) {
108
- if (
109
- (is(value, predicates.string) &&
110
- !isNaN(parseFloat(value)) &&
111
- parseFloat(value).toString() == value.trim()) ||
112
- is(value, predicates.number) ||
113
- ((is(value, predicates.undefined) || value == "") && !this.required)
114
- ) {
115
- return { valid: true, message: "" };
116
- }
117
- return { valid: false, message: "Proszę wprowadzić liczbę" };
118
- }
119
- }
@@ -1,7 +0,0 @@
1
- import { FormField } from "./field";
2
-
3
- export class FormFieldsList {
4
- static getField(fields: FormField[], name: string) {
5
- return fields.find((f) => f.name == name);
6
- }
7
- }
@@ -1,10 +0,0 @@
1
- import { BaseContext } from "koa";
2
- import { Field } from "sealious";
3
- import { FormFieldValidationFn } from "./field";
4
-
5
- export function collectionFieldValidator(field: Field): FormFieldValidationFn {
6
- return async (ctx: BaseContext, value) => {
7
- const { valid, reason } = await field.checkValue(ctx.$context, value, undefined);
8
- return { valid, message: reason || (valid ? "Wrong value" : "") };
9
- };
10
- }