@sealcode/sealgen 0.19.24 → 0.19.25-hotfix1

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 (224) hide show
  1. package/@types/forms/controls/array.d.ts +3 -1
  2. package/@types/forms/controls/controls.d.ts +0 -1
  3. package/@types/forms/controls/dropdown.d.ts +6 -6
  4. package/@types/forms/controls/single-reference.d.ts +8 -6
  5. package/@types/forms/fields/CollectionField.d.ts +1 -0
  6. package/@types/forms/fields/boolean.d.ts +1 -2
  7. package/@types/forms/fields/collection-field.d.ts +12 -5
  8. package/@types/forms/fields/coordinates.d.ts +2 -2
  9. package/@types/forms/fields/date.d.ts +1 -2
  10. package/@types/forms/fields/datetime.d.ts +1 -2
  11. package/@types/forms/fields/deep-reverse-single-reference-list.d.ts +1 -1
  12. package/@types/forms/fields/deep-reverse-single-reference-table.d.ts +1 -2
  13. package/@types/forms/fields/enum-multiple-sealious.d.ts +1 -2
  14. package/@types/forms/fields/field.d.ts +8 -4
  15. package/@types/forms/fields/fields.d.ts +1 -0
  16. package/@types/forms/fields/file.d.ts +4 -3
  17. package/@types/forms/fields/int.d.ts +1 -2
  18. package/@types/forms/fields/json.d.ts +1 -2
  19. package/@types/forms/fields/phone-number-with-country-code.d.ts +1 -2
  20. package/@types/forms/fields/pick-from-list.d.ts +2 -2
  21. package/@types/forms/fields/regexp.d.ts +1 -2
  22. package/@types/forms/fields/simple-form-field.d.ts +3 -4
  23. package/@types/forms/fields/single-reference.d.ts +2 -3
  24. package/@types/forms/fields/structured-array.d.ts +1 -2
  25. package/@types/forms/fields/structured.d.ts +19 -0
  26. package/@types/forms/fields/text.d.ts +1 -2
  27. package/@types/forms/fields/url.d.ts +1 -2
  28. package/@types/forms/multiform.d.ts +4 -3
  29. package/@types/index.d.ts +29 -18
  30. package/@types/page/stateful-page.d.ts +1 -1
  31. package/@types/src/add-collection.d.ts +1 -0
  32. package/@types/src/add-crud.d.ts +3 -0
  33. package/@types/src/add-crud.test.d.ts +1 -0
  34. package/@types/src/add-jdd-component.d.ts +1 -0
  35. package/@types/src/add-list-route.test.d.ts +1 -0
  36. package/@types/src/add-route.d.ts +3 -0
  37. package/@types/src/add-route.test.d.ts +1 -0
  38. package/@types/src/build.d.ts +3 -0
  39. package/@types/src/builders/backend-ts-builder.d.ts +7 -0
  40. package/@types/src/builders/builder.d.ts +11 -0
  41. package/@types/src/builders/colors-builder.d.ts +10 -0
  42. package/@types/src/builders/css-builder.d.ts +19 -0
  43. package/@types/src/builders/fonts-builder.d.ts +7 -0
  44. package/@types/src/builders/frontend-ts-builder.d.ts +11 -0
  45. package/@types/src/cli.d.ts +2 -0
  46. package/@types/src/components/components.d.ts +2 -0
  47. package/@types/src/components/tabs.d.ts +2 -0
  48. package/@types/src/components/toggle-modal.d.ts +6 -0
  49. package/@types/src/controllers/password-generate-button.stimulus.d.ts +5 -0
  50. package/@types/src/controllers/sealgen-table.stimulus.d.ts +13 -0
  51. package/@types/src/embeddable-file-extensions.d.ts +1 -0
  52. package/@types/src/esbuild-plugins/load-assets.d.ts +5 -0
  53. package/@types/src/esbuild-plugins/rewrite-asset-imports.d.ts +5 -0
  54. package/@types/src/example.test.d.ts +1 -0
  55. package/@types/src/forms/controls/array.d.ts +33 -0
  56. package/@types/src/forms/controls/autocomplete.d.ts +22 -0
  57. package/@types/src/forms/controls/big-radio-group.d.ts +14 -0
  58. package/@types/src/forms/controls/checkbox-group.d.ts +21 -0
  59. package/@types/src/forms/controls/checkbox.d.ts +17 -0
  60. package/@types/src/forms/controls/checkboxed-list-input.d.ts +21 -0
  61. package/@types/src/forms/controls/checkboxed-list-input.test.d.ts +1 -0
  62. package/@types/src/forms/controls/collapsible-checkbox-group.d.ts +11 -0
  63. package/@types/src/forms/controls/collapsible-field-group.d.ts +21 -0
  64. package/@types/src/forms/controls/controls.d.ts +32 -0
  65. package/@types/src/forms/controls/derived-frame.d.ts +19 -0
  66. package/@types/src/forms/controls/derived.d.ts +13 -0
  67. package/@types/src/forms/controls/dropdown.d.ts +30 -0
  68. package/@types/src/forms/controls/editable-collection-subset.d.ts +20 -0
  69. package/@types/src/forms/controls/field-group.d.ts +23 -0
  70. package/@types/src/forms/controls/file.d.ts +12 -0
  71. package/@types/src/forms/controls/file.test.d.ts +1 -0
  72. package/@types/src/forms/controls/form-control.d.ts +23 -0
  73. package/@types/src/forms/controls/form-field-control.d.ts +13 -0
  74. package/@types/src/forms/controls/form-header.d.ts +8 -0
  75. package/@types/src/forms/controls/form-paragraph.d.ts +7 -0
  76. package/@types/src/forms/controls/frame.d.ts +17 -0
  77. package/@types/src/forms/controls/hidden-input.d.ts +9 -0
  78. package/@types/src/forms/controls/html.d.ts +11 -0
  79. package/@types/src/forms/controls/hybrid.d.ts +10 -0
  80. package/@types/src/forms/controls/image.d.ts +19 -0
  81. package/@types/src/forms/controls/image.test.d.ts +1 -0
  82. package/@types/src/forms/controls/multiple-files.d.ts +42 -0
  83. package/@types/src/forms/controls/multiple-images.d.ts +19 -0
  84. package/@types/src/forms/controls/number.d.ts +13 -0
  85. package/@types/src/forms/controls/password-with-generator.d.ts +6 -0
  86. package/@types/src/forms/controls/radio.d.ts +16 -0
  87. package/@types/src/forms/controls/simple-input.d.ts +35 -0
  88. package/@types/src/forms/controls/single-reference.d.ts +14 -0
  89. package/@types/src/forms/controls/single-reference.test.d.ts +1 -0
  90. package/@types/{forms/controls/table.d.sync-conflict-20260502-145940-GP5D735.ts → src/forms/controls/table.d.ts} +2 -0
  91. package/@types/src/forms/controls/textarea.d.ts +25 -0
  92. package/@types/src/forms/controls/tickable.d.ts +25 -0
  93. package/@types/src/forms/fields/boolean.d.ts +22 -0
  94. package/@types/src/forms/fields/boolean.test.d.ts +1 -0
  95. package/@types/src/forms/fields/checkboxed-list.d.ts +23 -0
  96. package/@types/src/forms/fields/collection-field.d.ts +22 -0
  97. package/@types/src/forms/fields/color.d.ts +4 -0
  98. package/@types/src/forms/fields/coordinates.d.ts +14 -0
  99. package/@types/src/forms/fields/date.d.ts +13 -0
  100. package/@types/src/forms/fields/datetime.d.ts +14 -0
  101. package/@types/src/forms/fields/deep-reverse-single-reference-list.d.ts +20 -0
  102. package/@types/src/forms/fields/deep-reverse-single-reference-table.d.ts +16 -0
  103. package/@types/src/forms/fields/email.d.ts +10 -0
  104. package/@types/src/forms/fields/email.test.d.ts +1 -0
  105. package/@types/src/forms/fields/enum-multiple-sealious.d.ts +16 -0
  106. package/@types/src/forms/fields/existing-sealious-value.d.ts +6 -0
  107. package/@types/src/forms/fields/field.d.ts +85 -0
  108. package/@types/src/forms/fields/field.test.d.ts +1 -0
  109. package/@types/src/forms/fields/fields.d.ts +34 -0
  110. package/@types/src/forms/fields/file.d.ts +25 -0
  111. package/@types/src/forms/fields/file.test.d.ts +1 -0
  112. package/@types/src/forms/fields/float.d.ts +4 -0
  113. package/@types/src/forms/fields/get-field-for-sealious.d.ts +33 -0
  114. package/@types/src/forms/fields/html.d.ts +6 -0
  115. package/@types/src/forms/fields/hybrid.d.ts +11 -0
  116. package/@types/src/forms/fields/image.d.ts +5 -0
  117. package/@types/src/forms/fields/int.d.ts +6 -0
  118. package/@types/src/forms/fields/item-draft.d.ts +20 -0
  119. package/@types/src/forms/fields/json.d.ts +13 -0
  120. package/@types/src/forms/fields/markdown.d.ts +6 -0
  121. package/@types/src/forms/fields/multiple-files.d.ts +16 -0
  122. package/@types/src/forms/fields/number.d.ts +25 -0
  123. package/@types/src/forms/fields/number.test.d.ts +1 -0
  124. package/@types/src/forms/fields/password.d.ts +10 -0
  125. package/@types/src/forms/fields/phone-number-with-country-code.d.ts +13 -0
  126. package/@types/src/forms/fields/phone-number.d.ts +17 -0
  127. package/@types/src/forms/fields/pick-from-list-sealious.d.ts +11 -0
  128. package/@types/src/forms/fields/pick-from-list.d.ts +15 -0
  129. package/@types/src/forms/fields/pick-from-list.test.d.ts +1 -0
  130. package/@types/src/forms/fields/proxy-field.d.ts +15 -0
  131. package/@types/src/forms/fields/regexp.d.ts +21 -0
  132. package/@types/src/forms/fields/regexp.test.d.ts +1 -0
  133. package/@types/src/forms/fields/simple-form-field.d.ts +31 -0
  134. package/@types/src/forms/fields/single-reference.d.ts +19 -0
  135. package/@types/src/forms/fields/structured-array.d.ts +23 -0
  136. package/@types/src/forms/fields/table.d.ts +16 -0
  137. package/@types/src/forms/fields/text.d.ts +6 -0
  138. package/@types/src/forms/fields/url.d.ts +6 -0
  139. package/@types/src/forms/form-types.d.ts +28 -0
  140. package/@types/src/forms/form.d.ts +34 -0
  141. package/@types/src/forms/form.test.d.ts +6 -0
  142. package/@types/src/forms/multiform.d.ts +23 -0
  143. package/@types/src/forms/multiform.test.d.ts +1 -0
  144. package/@types/src/generate-collections.d.ts +2 -0
  145. package/@types/src/generate-components.d.ts +1 -0
  146. package/@types/src/generate-routes.d.ts +5 -0
  147. package/@types/src/generate-routes.test.d.ts +1 -0
  148. package/@types/src/generate-stimulus.d.ts +1 -0
  149. package/@types/src/get-fonts.d.ts +2 -0
  150. package/@types/{index.d.sync-conflict-20260502-145557-GP5D735.ts → src/index.d.ts} +1 -0
  151. package/@types/src/make-env.d.ts +1 -0
  152. package/@types/src/make-hidden-inputs.d.ts +5 -0
  153. package/@types/src/mount.d.ts +6 -0
  154. package/@types/src/notifier.d.ts +2 -0
  155. package/@types/src/page/access-control.d.ts +6 -0
  156. package/@types/src/page/default-list-filters.d.ts +18 -0
  157. package/@types/src/page/list.d.ts +49 -0
  158. package/@types/src/page/mountable-with-fields.d.ts +49 -0
  159. package/@types/src/page/mountable-with-fields.test.d.ts +1 -0
  160. package/@types/src/page/mountable.d.ts +10 -0
  161. package/@types/src/page/page.d.ts +18 -0
  162. package/@types/src/page/props-parser.d.ts +15 -0
  163. package/@types/src/page/sealious-list.d.ts +20 -0
  164. package/@types/src/page/sealious-list.test.d.ts +1 -0
  165. package/@types/src/page/stateful-page.d.ts +63 -0
  166. package/@types/src/page/stateful-page.test.d.ts +1 -0
  167. package/@types/src/register-external.d.ts +2 -0
  168. package/@types/src/register-external.test.d.ts +1 -0
  169. package/@types/src/run.d.ts +1 -0
  170. package/@types/src/sanitize.d.ts +1 -0
  171. package/@types/src/target-locreq.d.ts +4 -0
  172. package/@types/src/templates/collection.d.ts +1 -0
  173. package/@types/src/templates/form.d.ts +14 -0
  174. package/@types/src/templates/form.test.d.ts +1 -0
  175. package/@types/src/templates/jdd-component.d.ts +1 -0
  176. package/@types/src/templates/jdd-editor.d.ts +1 -0
  177. package/@types/src/templates/list.d.ts +1 -0
  178. package/@types/src/templates/long-running-process.d.ts +1 -0
  179. package/@types/src/templates/multiform.d.ts +1 -0
  180. package/@types/src/templates/page.d.ts +1 -0
  181. package/@types/src/templates/post.d.ts +1 -0
  182. package/@types/src/templates/redirect.d.ts +1 -0
  183. package/@types/src/templates/route-test.d.ts +1 -0
  184. package/@types/src/templates/shared/collection-create-form.d.ts +1 -0
  185. package/@types/src/templates/shared/collection-edit-form.d.ts +1 -0
  186. package/@types/src/templates/shared/collection-list.d.ts +16 -0
  187. package/@types/src/templates/shared/item-delete.d.ts +1 -0
  188. package/@types/src/templates/shared/shared-crud-form-fields.d.ts +1 -0
  189. package/@types/src/templates/stateful-page.d.ts +1 -0
  190. package/@types/src/templates/stimulus-controller.d.ts +1 -0
  191. package/@types/src/templates/templates.d.ts +1 -0
  192. package/@types/src/test_utils/exec_async.d.ts +1 -0
  193. package/@types/src/test_utils/locator_is_visible.d.ts +2 -0
  194. package/@types/src/test_utils/test-on-real-app.d.ts +26 -0
  195. package/@types/src/utils/assert-throws.d.ts +1 -0
  196. package/@types/src/utils/base64.d.ts +2 -0
  197. package/@types/src/utils/browser-creator.d.ts +1 -0
  198. package/@types/src/utils/escape-url-params.d.ts +2 -0
  199. package/@types/src/utils/exec.d.ts +5 -0
  200. package/@types/src/utils/extract-fields-from-collection.d.ts +14 -0
  201. package/@types/src/utils/format-external-url.d.ts +1 -0
  202. package/@types/src/utils/import-path.d.ts +2 -0
  203. package/@types/src/utils/input-wrapper.d.ts +5 -0
  204. package/@types/src/utils/list-collections.d.ts +1 -0
  205. package/@types/src/utils/make-slug.d.ts +1 -0
  206. package/@types/src/utils/module-dirname.d.ts +1 -0
  207. package/@types/src/utils/natural-numbers.d.ts +1 -0
  208. package/@types/src/utils/prettier.d.ts +3 -0
  209. package/@types/src/utils/question.d.ts +1 -0
  210. package/@types/src/utils/render-attributes.d.ts +1 -0
  211. package/@types/src/utils/sleep.d.ts +1 -0
  212. package/@types/src/utils/translate.d.ts +4 -0
  213. package/@types/src/utils/url-with-new-params.d.ts +2 -0
  214. package/@types/src/utils/utils.d.ts +17 -0
  215. package/@types/src/utils/walk.d.ts +1 -0
  216. package/@types/src/utils/with-fallback.d.ts +2 -0
  217. package/@types/src/utils/wrap-attributes.d.ts +3 -0
  218. package/@types/src/utils/write-file.d.ts +1 -0
  219. package/lib/add-crud.test.js +1 -1
  220. package/lib/builders/backend-ts-builder.js +1 -1
  221. package/lib/forms/controls/textarea.js +2 -1
  222. package/package.json +1 -1
  223. package/src/builders/backend-ts-builder.ts +1 -0
  224. package/src/forms/controls/textarea.ts +5 -4
@@ -23,7 +23,9 @@ export declare class StructuredArray<Subfields extends Record<string, Field<any>
23
23
  getActionURL(form_id?: string, action?: Record<string, unknown>): string;
24
24
  getDefaultItemBody(): Promise<{}>;
25
25
  makeSubfield(_field_name: string): FormField;
26
- renderItemControl(ctx: Context, form_id: string, control: FormControl | UnboundControlStorage, item: FieldsetOutput<Subfields>, index: number): Promise<(string | number | import("stream").Readable | null) | (string | number | import("stream").Readable | null)[] | Promise<string | number | import("stream").Readable | null>[]>;
26
+ renderItemControl(ctx: Context, form_id: string, control: FormControl | UnboundControlStorage, item: FieldsetOutput<Subfields>, index: number): Promise<string | number | {
27
+ toString(): string;
28
+ } | null>;
27
29
  renderItem(ctx: Context, form_id: string, item: FieldsetOutput<Subfields>, index: number): Promise<string>;
28
30
  getItems(ctx: Context, raw_values: Record<string, FormDataValue>): Promise<FieldsetOutput<Subfields>[]>;
29
31
  _render(ctx: Context, form_id: string, raw_values: Record<string, FormDataValue>): Promise<string>;
@@ -1,5 +1,4 @@
1
1
  export * from "./autocomplete.js";
2
- export * from "./big-radio-group.js";
3
2
  export * from "./checkbox-group.js";
4
3
  export * from "./checkbox.js";
5
4
  export { CheckboxedListInput } from "./checkboxed-list-input.js";
@@ -14,17 +14,17 @@ export type DropdownOption = {
14
14
  value: string;
15
15
  label: string;
16
16
  };
17
- export declare class FreeformDropdown extends SimpleInput {
18
- field: FormField<boolean, string | null>;
17
+ export declare class FreeformDropdown<ParsedValue> extends SimpleInput {
18
+ field: FormField<boolean, ParsedValue>;
19
19
  _generateOptions: (ctx: Context) => Promise<DropdownOption[]>;
20
20
  options: DropdownOptions;
21
- constructor(field: FormField<boolean, string | null>, _generateOptions: (ctx: Context) => Promise<DropdownOption[]>, options?: DropdownOptions);
21
+ constructor(field: FormField<boolean, ParsedValue>, _generateOptions: (ctx: Context) => Promise<DropdownOption[]>, options?: DropdownOptions);
22
22
  generateOptions(ctx: Context): Promise<DropdownOption[]>;
23
23
  getInputAttributes(fctx: FormControlContext): Promise<Record<string, string | boolean>>;
24
24
  renderInput(ctx: Context, attributes_str: string, data: Record<string, FormDataValue>): Promise<FlatTemplatable>;
25
25
  }
26
- export declare class Dropdown extends FreeformDropdown {
27
- field: PickFromListField<boolean>;
26
+ export declare class Dropdown<Required extends boolean> extends FreeformDropdown<string> {
27
+ field: PickFromListField<Required>;
28
28
  options: DropdownOptions;
29
- constructor(field: PickFromListField<boolean>, options?: DropdownOptions);
29
+ constructor(field: PickFromListField<Required>, options?: DropdownOptions);
30
30
  }
@@ -1,14 +1,16 @@
1
- import { FieldTypes as SealiousFieldTypes } from "sealious";
1
+ import { Context } from "koa";
2
+ import { ExtractFieldDecoded, FieldTypes as SealiousFieldTypes } from "sealious";
2
3
  import { CollectionField } from "../fields/collection-field.js";
3
4
  import { DropdownOptions, FreeformDropdown } from "./dropdown.js";
4
5
  import { Collection, CollectionItem } from "sealious";
5
- export declare class SingleReferenceDropdown<TargetCollection extends Collection, F extends SealiousFieldTypes.SingleReference, Required extends boolean> extends FreeformDropdown {
6
- field: CollectionField<F, Required>;
6
+ export declare class SingleReferenceDropdown<TargetCollection extends Collection, SealiousField extends SealiousFieldTypes.SingleReference, Required extends boolean> extends FreeformDropdown<ExtractFieldDecoded<SealiousField>> {
7
+ field: CollectionField<SealiousField, Required>;
7
8
  options: DropdownOptions & {
8
- getLabel?: (item: CollectionItem<Collection>) => string;
9
+ getLabel?: (item: CollectionItem<TargetCollection>) => string;
9
10
  };
10
- constructor(field: CollectionField<F, Required>, options?: DropdownOptions & {
11
- getLabel?: (item: CollectionItem<Collection>) => string;
11
+ constructor(field: CollectionField<SealiousField, Required>, options?: DropdownOptions & {
12
+ getLabel?: (item: CollectionItem<TargetCollection>) => string;
12
13
  });
14
+ getCollection(ctx: Context): TargetCollection;
13
15
  setOptionLabelGetter(getter: (item: CollectionItem<TargetCollection>) => string): this;
14
16
  }
@@ -0,0 +1 @@
1
+ export {};
@@ -2,7 +2,6 @@ import { Context } from "koa";
2
2
  import { Checkbox } from "../controls/checkbox.js";
3
3
  import { FormDataValue } from "../form-types.js";
4
4
  import { FieldParseResult, FormField } from "./field.js";
5
- import { FormControlContext } from "../controls/form-control.js";
6
5
  export declare class Boolean<Required extends boolean> extends FormField<Required, boolean, Checkbox> {
7
6
  error_message: string;
8
7
  predicate: (v: unknown, w: unknown) => {
@@ -17,6 +16,6 @@ export declare class Boolean<Required extends boolean> extends FormField<Require
17
16
  parse(_: Context, value: FormDataValue): Promise<FieldParseResult<boolean>>;
18
17
  getEmptyValue(): boolean;
19
18
  getControl(): Checkbox;
20
- getSealiousCreateValue(fctx: FormControlContext): Promise<boolean>;
19
+ parsedToSealious(value: boolean): Promise<boolean>;
21
20
  sealiousValueToForm(_: Context, value: boolean | null): Promise<FormDataValue>;
22
21
  }
@@ -1,22 +1,29 @@
1
1
  import { Context } from "koa";
2
- import { ExtractFieldDecoded, Field } from "sealious";
3
- import { SimpleInput } from "../controls/controls.js";
2
+ import { CollectionItem, ExtractFieldDecoded, ExtractFieldInput, Field as SealiousField } from "sealious";
3
+ import { FormControl } from "../controls/controls.js";
4
4
  import { FormDataValue } from "../form-types.js";
5
5
  import { FieldParseResult, FormField, FormFieldValidationResponse } from "./field.js";
6
6
  import { ExtractedFieldInfo } from "../../utils/extract-fields-from-collection.js";
7
- export declare class CollectionField<F extends Field<any>, Required extends boolean> extends FormField<Required, ExtractFieldDecoded<F> | null, SimpleInput> {
7
+ export declare function sealiousFieldToFormField(sealiousField: SealiousField<any>, field_name: string, prefix: string): FormField;
8
+ export declare class CollectionField<F extends SealiousField<any>, Required extends boolean> extends FormField<Required, ExtractFieldDecoded<F>, FormControl, ExtractFieldInput<F>> {
8
9
  sealiousField: F;
9
10
  constructor(required: Required, sealiousField: F);
10
11
  predicate: (v: unknown, w: unknown) => {
11
12
  readonly match: true;
12
13
  readonly wildcard: unknown;
13
14
  };
14
- parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<ExtractFieldDecoded<F> | null>>;
15
+ parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<ExtractFieldDecoded<F>>>;
15
16
  isValueValid(ctx: Context, value: ExtractFieldDecoded<F>): Promise<FormFieldValidationResponse>;
17
+ parsedToSealious(parsed: unknown): Promise<ExtractFieldInput<F>>;
16
18
  getEmptyValue(): ExtractFieldDecoded<F>;
17
- getControl(): SimpleInput;
19
+ sealiousValueToForm(ctx: Context, value: any, item: CollectionItem<any>): Promise<FormDataValue>;
20
+ getControl(): FormControl;
18
21
  generateFieldDeclaration(field_info: ExtractedFieldInfo, vars: {
19
22
  form_field_types: string;
20
23
  sealious_field: string;
21
24
  }): string;
25
+ generateInitialValue(field_info: ExtractedFieldInfo, vars: {
26
+ form_field_types: string;
27
+ form_fields: string;
28
+ }): string;
22
29
  }
@@ -1,12 +1,12 @@
1
1
  import { Context } from "koa";
2
- import { FormControl, FormControlContext } from "../controls/form-control.js";
2
+ import { FormControl } from "../controls/form-control.js";
3
3
  import { SimpleInput } from "../controls/simple-input.js";
4
4
  import { FormDataValue } from "../form-types.js";
5
5
  import { FieldParseResult } from "./field.js";
6
6
  import { SimpleFormField } from "./simple-form-field.js";
7
7
  export declare class Coordinates<Required extends boolean, DefaultControl extends FormControl = SimpleInput> extends SimpleFormField<Required, DefaultControl, [number, number]> {
8
8
  parse(_: Context, raw_value: FormDataValue): Promise<FieldParseResult<[number, number]>>;
9
- getSealiousCreateValue(fctx: FormControlContext): Promise<[number, number] | undefined>;
9
+ parsedToSealious(parsed: [number, number]): Promise<[number, number] | undefined>;
10
10
  postSealiousCreate(): Promise<void>;
11
11
  postSealiousEdit(): Promise<void>;
12
12
  getControl(): DefaultControl;
@@ -1,5 +1,4 @@
1
1
  import { Context } from "koa";
2
- import { FormControlContext } from "../controls/form-control.js";
3
2
  import { SimpleInput, SimpleInputOptions } from "../controls/simple-input.js";
4
3
  import { FormDataValue } from "../form-types.js";
5
4
  import { FieldParseResult } from "./field.js";
@@ -9,5 +8,5 @@ export declare class DateField<Required extends boolean> extends SimpleFormField
9
8
  getEmptyValue(): Date;
10
9
  parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<Date>>;
11
10
  getControl(): SimpleInput<SimpleInputOptions>;
12
- getSealiousCreateValue(fctx: FormControlContext): Promise<string | null>;
11
+ parsedToSealious(parsed: Date): Promise<string | null>;
13
12
  }
@@ -1,6 +1,5 @@
1
1
  import { Context } from "koa";
2
2
  import { SimpleInput } from "../controls/controls.js";
3
- import { FormControlContext } from "../controls/form-control.js";
4
3
  import { FormDataValue } from "../form-types.js";
5
4
  import { FieldParseResult } from "./field.js";
6
5
  import { SimpleFormField } from "./simple-form-field.js";
@@ -8,7 +7,7 @@ export declare class DateTime<Required extends boolean> extends SimpleFormField<
8
7
  constructor(required: Required);
9
8
  getEmptyValue(): Date | null;
10
9
  parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<Date | null>>;
11
- getSealiousCreateValue(fctx: FormControlContext): Promise<number | null>;
10
+ parsedToSealious(parsed: Date): Promise<number | null>;
12
11
  getControl(): SimpleInput;
13
12
  sealiousValueToForm(ctx: Context, value: number | null): Promise<FormDataValue>;
14
13
  }
@@ -8,7 +8,7 @@ export declare class DeepReverseSingleReferenceList extends CheckboxedListField<
8
8
  item_label_getter: (item: CollectionItem<any>) => string;
9
9
  constructor(sealious_field: SealiousFieldTypes.DeepReverseSingleReference);
10
10
  setItemLabelGetter(getter: (item: CollectionItem<any>) => string): void;
11
- getSealiousCreateValue(): never;
11
+ parsedToSealious(): never;
12
12
  postSealiousCreate(ctx: Context, created_item: CollectionItem<any>, form_data: FormData): Promise<void>;
13
13
  postSealiousEdit(ctx: Context, edited_item: CollectionItem<any>, value: FormData): Promise<void>;
14
14
  sealiousValueToForm(_ctx: Context, value: string[] | null): Promise<FormDataValue>;
@@ -3,13 +3,12 @@ import { Table } from "./table.js";
3
3
  import { Table as TableControl } from "../controls/table.js";
4
4
  import { Context } from "koa";
5
5
  import { FormDataValue, FormData } from "../form-types.js";
6
- import { FormControlContext } from "../controls/form-control.js";
7
6
  import { FormField } from "./field.js";
8
7
  export declare class DeepReverseSingleReferenceTable extends Table<Record<string, FormField>> {
9
8
  sealious_field: SealiousFieldTypes.DeepReverseSingleReference;
10
9
  constructor(sealious_field: SealiousFieldTypes.DeepReverseSingleReference);
11
10
  getControl(): TableControl<any>;
12
- getSealiousCreateValue(_fctx: FormControlContext): Promise<unknown>;
11
+ parsedToSealious(_value: any): Promise<unknown>;
13
12
  postSealiousCreate(ctx: Context, created_item: CollectionItem<any>, form_data: FormData): Promise<void>;
14
13
  postSealiousEdit(ctx: Context, edited_item: CollectionItem<any>, form_data: FormData): Promise<void>;
15
14
  sealiousValueToForm(ctx: Context, _value: string[], item: CollectionItem<any>): Promise<FormDataValue>;
@@ -2,7 +2,6 @@ import { FieldTypes as SealiousFieldTypes } from "sealious";
2
2
  import { Context } from "koa";
3
3
  import { ExtractedFieldInfo } from "../../utils/extract-fields-from-collection.js";
4
4
  import { CheckboxedListField } from "./checkboxed-list.js";
5
- import { FormControlContext } from "../controls/form-control.js";
6
5
  import { FormDataValue } from "../form-types.js";
7
6
  export declare class EnumMultipleSealious<Values extends string> extends CheckboxedListField<boolean, Values> {
8
7
  sealious_field: SealiousFieldTypes.EnumMultiple<Values>;
@@ -11,6 +10,6 @@ export declare class EnumMultipleSealious<Values extends string> extends Checkbo
11
10
  form_field_types: string;
12
11
  sealious_field: string;
13
12
  }): string;
14
- getSealiousCreateValue(fctx: FormControlContext): Promise<Values[]>;
13
+ parsedToSealious(parsed: Record<string, unknown>): Promise<Values[]>;
15
14
  sealiousValueToForm(ctx: Context, sealious_value: Values[] | null): Promise<FormDataValue>;
16
15
  }
@@ -29,18 +29,21 @@ export type FieldParseResult<T> = {
29
29
  error: string;
30
30
  parsed_value: null;
31
31
  };
32
- export declare abstract class FormField<Required extends boolean = boolean, ParsedValue = unknown, DefaultFormControl extends FormControl = FormControl, SealiousValue = any> {
32
+ export declare abstract class FormField<Required extends boolean = boolean, ParsedValue = any, DefaultFormControl extends FormControl = FormControl, SealiousValue = any> {
33
33
  readonly required: Required;
34
34
  name: string;
35
+ value_path: string | undefined;
35
36
  label: string;
36
37
  constructor(required: Required);
37
38
  predicate: Predicate;
38
- mapToFilter: (parsed: ParsedValue) => unknown;
39
+ mapToFilter: (parsed: ParsedValue) => any;
39
40
  disabled: boolean;
40
41
  init(): Promise<void>;
41
42
  setName(name: string): this;
42
43
  setDisabled(status: boolean): this;
43
44
  setLabel(label: string): this;
45
+ getValuePath(): string;
46
+ setValuePath(path: string): this;
44
47
  _validate(ctx: Context, value: ParsedValue): Promise<FormFieldValidationResponse>;
45
48
  abstract getEmptyValue(): ParsedValue;
46
49
  isValueValid(_ctx: Context, _value: ParsedValue): Promise<FormFieldValidationResponse>;
@@ -56,10 +59,11 @@ export declare abstract class FormField<Required extends boolean = boolean, Pars
56
59
  parsed: ParsedValue | null;
57
60
  raw: FormDataValue;
58
61
  }>;
59
- setMapToFilter(fn: (parsed: ParsedValue) => unknown): this;
62
+ setMapToFilter(fn: (parsed: ParsedValue | null) => unknown): this;
60
63
  getDatabaseValue(ctx: Context, data: Record<string, FormDataValue>): Promise<unknown>;
61
64
  abstract getControl(): DefaultFormControl;
62
- getSealiousCreateValue(fctx: FormControlContext): Promise<SealiousValue>;
65
+ getSealiousCreateValue(fctx: FormControlContext): never;
66
+ parsedToSealious(parsed: ParsedValue): any;
63
67
  sealiousValueToForm(ctx: Context, sealiousValue: SealiousValue | null, item: CollectionItem<any>): Promise<FormDataValue>;
64
68
  postSealiousCreate(ctx: Context, created_item: CollectionItem<any>, form_data: FormData): Promise<void>;
65
69
  postSealiousEdit(ctx: Context, edited_item: CollectionItem<any>, form_data: FormData): Promise<void>;
@@ -32,3 +32,4 @@ export * from "./structured-array.js";
32
32
  export * from "./table.js";
33
33
  export * from "./text.js";
34
34
  export * from "./url.js";
35
+ export * from "./structured.js";
@@ -3,7 +3,8 @@ import { FilePointer } from "@sealcode/file-manager";
3
3
  import { FormDataValue } from "../form-types.js";
4
4
  import { FieldParseResult, FormField } from "./field.js";
5
5
  import { File as FileControl } from "../controls/file.js";
6
- import { FormControl, FormControlContext } from "../controls/form-control.js";
6
+ import { FormControl } from "../controls/form-control.js";
7
+ import { ImageValue } from "sealious";
7
8
  export type FileContainer = {
8
9
  old: FilePointer | null;
9
10
  new: FilePointer | null;
@@ -18,8 +19,8 @@ export declare class File<Required extends boolean> extends FormField<Required,
18
19
  new: null;
19
20
  };
20
21
  getControl(): FileControl;
21
- getSealiousCreateValue(fctx: FormControlContext): Promise<FilePointer | undefined>;
22
- sealiousValueToForm(ctx: Context, sealiousValue: FilePointer | string | null): Promise<{
22
+ parsedToSealious(value: FileContainer): Promise<FilePointer | undefined>;
23
+ sealiousValueToForm(ctx: Context, sealiousValue: FilePointer | ImageValue | string | null): Promise<{
23
24
  old: FilePointer | undefined;
24
25
  } | Record<string, never>>;
25
26
  }
@@ -1,6 +1,5 @@
1
- import { FormControlContext } from "../controls/form-control.js";
2
1
  import { NumberBasedSimpleField } from "./simple-form-field.js";
3
2
  export declare class Int<Required extends boolean> extends NumberBasedSimpleField<Required> {
4
3
  constructor(required: Required);
5
- getSealiousCreateValue(fctx: FormControlContext): Promise<number | undefined>;
4
+ parsedToSealious(parsed: number): Promise<number | undefined>;
6
5
  }
@@ -1,5 +1,4 @@
1
1
  import { Context } from "koa";
2
- import { FormControlContext } from "../controls/form-control.js";
3
2
  import { Textarea } from "../controls/textarea.js";
4
3
  import { FormDataValue } from "../form-types.js";
5
4
  import { FieldParseResult } from "./field.js";
@@ -9,5 +8,5 @@ export declare class JSONField<Required extends boolean> extends SimpleFormField
9
8
  getControl(): Textarea;
10
9
  getEmptyValue(): Record<string, unknown>;
11
10
  parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<Record<string, unknown>>>;
12
- getSealiousCreateValue(fctx: FormControlContext): Promise<Record<string, unknown> | null>;
11
+ parsedToSealious(parsed: Record<string, unknown>): Promise<Record<string, unknown> | null>;
13
12
  }
@@ -3,11 +3,10 @@ import { FieldTypes as SealiousFieldTypes } from "sealious";
3
3
  import { FormControl } from "../controls/controls.js";
4
4
  import { FormDataValue } from "../form-types.js";
5
5
  import { FieldParseResult, FormField } from "./field.js";
6
- import { FormControlContext } from "../../index.js";
7
6
  export declare class PhoneNumberWithCountryCode<Required extends boolean> extends FormField<Required, SealiousFieldTypes.PhoneNumberValue> {
8
7
  getEmptyValue(): SealiousFieldTypes.PhoneNumberValue;
9
8
  parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<SealiousFieldTypes.PhoneNumberValue>>;
10
9
  getControl(): FormControl;
11
- getSealiousCreateValue(fctx: FormControlContext): Promise<string>;
10
+ parsedToSealious(parsed: SealiousFieldTypes.PhoneNumberValue): Promise<string>;
12
11
  sealiousValueToForm(ctx: Context, sealiousValue: SealiousFieldTypes.PhoneNumberValue | null): Promise<FormDataValue>;
13
12
  }
@@ -2,7 +2,7 @@ import { Context } from "koa";
2
2
  import { Dropdown, DropdownOption } from "../controls/dropdown.js";
3
3
  import { FormFieldValidationResponse } from "./field.js";
4
4
  import { TextBasedSimpleField } from "./simple-form-field.js";
5
- export declare class PickFromListField<Required extends boolean> extends TextBasedSimpleField<Required, Dropdown> {
5
+ export declare class PickFromListField<Required extends boolean> extends TextBasedSimpleField<Required, Dropdown<Required>> {
6
6
  required: Required;
7
7
  generateOptions: (ctx: Context) => Promise<DropdownOption[]>;
8
8
  customValidation: (ctx: Context, value: unknown, instance: PickFromListField<Required>) => Promise<FormFieldValidationResponse>;
@@ -11,5 +11,5 @@ export declare class PickFromListField<Required extends boolean> extends TextBas
11
11
  isValueValid(ctx: Context, value: string): Promise<FormFieldValidationResponse>;
12
12
  valueInList(ctx: Context, value: unknown): Promise<FormFieldValidationResponse>;
13
13
  getEmptyValue(): string;
14
- getControl(): Dropdown;
14
+ getControl(): Dropdown<Required>;
15
15
  }
@@ -2,7 +2,6 @@ import { Context } from "koa";
2
2
  import { SimpleInput } from "../controls/simple-input.js";
3
3
  import { FormDataValue } from "../form-types.js";
4
4
  import { FieldParseResult, FormField } from "./field.js";
5
- import { FormControlContext } from "../controls/form-control.js";
6
5
  export declare class RegExpField<Required extends boolean> extends FormField<Required, string, SimpleInput, string> {
7
6
  regexp: RegExp;
8
7
  error_message: string;
@@ -16,6 +15,6 @@ export declare class RegExpField<Required extends boolean> extends FormField<Req
16
15
  parse(_: Context, value: FormDataValue): Promise<FieldParseResult<string>>;
17
16
  getEmptyValue(): string;
18
17
  getControl(): SimpleInput;
19
- getSealiousCreateValue(fctx: FormControlContext): Promise<string>;
18
+ parsedToSealious(parsed: string): Promise<string>;
20
19
  sealiousValueToForm(ctx: Context, sealious_value: string | null): Promise<FormDataValue>;
21
20
  }
@@ -4,7 +4,6 @@ import { FieldParseResult, FormField } from "./field.js";
4
4
  import { SimpleInput } from "../controls/simple-input.js";
5
5
  import { FormControl } from "../controls/controls.js";
6
6
  import { CollectionItem } from "sealious";
7
- import { FormControlContext } from "../controls/form-control.js";
8
7
  export declare abstract class SimpleFormField<Required extends boolean, DefaultControl extends FormControl = SimpleInput, Parsed = string> extends FormField<Required, Parsed, DefaultControl> {
9
8
  type: string;
10
9
  predicate: import("@sealcode/ts-predicates").Predicate<string>;
@@ -15,15 +14,15 @@ export declare abstract class SimpleFormField<Required extends boolean, DefaultC
15
14
  }
16
15
  export declare class TextBasedSimpleField<Required extends boolean, DefaultControl extends FormControl = SimpleInput> extends SimpleFormField<Required, DefaultControl, string | null> {
17
16
  parse(_: Context, raw_value: FormDataValue): Promise<FieldParseResult<string>>;
18
- getSealiousCreateValue(fctx: FormControlContext): Promise<string | null>;
17
+ parsedToSealious(value: string): Promise<string>;
19
18
  postSealiousCreate(_ctx: Context, _created_item: CollectionItem<any>, _formData: FormData): Promise<void>;
20
- postSealiousEdit(ctx: Context, _edited_item: CollectionItem<any>, _formData: FormData): Promise<void>;
19
+ postSealiousEdit(_ctx: Context, _edited_item: CollectionItem<any>, _formData: FormData): Promise<void>;
21
20
  getControl(): DefaultControl;
22
21
  getEmptyValue(): string;
23
22
  }
24
23
  export declare class NumberBasedSimpleField<Required extends boolean, DefaultControl extends FormControl = SimpleInput> extends SimpleFormField<Required, DefaultControl, number> {
25
24
  parse(_: Context, raw_value: FormDataValue): Promise<FieldParseResult<number>>;
26
- getSealiousCreateValue(fctx: FormControlContext): Promise<number | undefined>;
25
+ parsedToSealious(value: number): Promise<number | undefined>;
27
26
  postSealiousCreate(): Promise<void>;
28
27
  postSealiousEdit(): Promise<void>;
29
28
  getControl(): DefaultControl;
@@ -1,12 +1,11 @@
1
- import { Collection, FieldTypes as SealiousFieldTypes } from "sealious";
1
+ import { Collection, ExtractFieldInput, FieldTypes as SealiousFieldTypes } from "sealious";
2
2
  import { CollectionField } from "./collection-field.js";
3
3
  import { SingleReferenceDropdown } from "../controls/single-reference.js";
4
- import { FormControlContext } from "../controls/form-control.js";
5
4
  import { Context } from "koa";
6
5
  import { ExtractedFieldInfo } from "../../utils/extract-fields-from-collection.js";
7
6
  export declare class SingleReference<TargetCollection extends Collection, Required extends boolean, F extends SealiousFieldTypes.SingleReference> extends CollectionField<F, Required> {
8
7
  getControl(): SingleReferenceDropdown<TargetCollection, F, Required>;
9
- getSealiousCreateValue(fctx: FormControlContext): Promise<string | undefined>;
8
+ parsedToSealious(parsed: string): Promise<ExtractFieldInput<F>>;
10
9
  sealiousValueToForm(_ctx: Context, value: string | null): Promise<string | undefined>;
11
10
  generateImportsForFieldList(field_info: ExtractedFieldInfo): {
12
11
  what: string;
@@ -3,7 +3,6 @@ import { Field as SealiousField, FieldTypes as SealiousFieldTypes } from "sealio
3
3
  import { FormDataValue } from "../form-types.js";
4
4
  import { Table as TableControl } from "../controls/table.js";
5
5
  import { SealiousToFormField } from "./get-field-for-sealious.js";
6
- import { FormControlContext } from "../controls/form-control.js";
7
6
  import { ExtractedFieldInfo } from "../../utils/extract-fields-from-collection.js";
8
7
  import { Table } from "./table.js";
9
8
  export declare class StructuredArray<SealiousFields extends Record<string, SealiousField<unknown>>> extends Table<{
@@ -18,6 +17,6 @@ export declare class StructuredArray<SealiousFields extends Record<string, Seali
18
17
  form_field_types: string;
19
18
  sealious_field: string;
20
19
  }): string;
21
- getSealiousCreateValue(fctx: FormControlContext): Promise<import("./table.js").TableFieldParsed<{ [name in keyof SealiousFields]: SealiousToFormField<SealiousFields[name]>; }>>;
20
+ parsedToSealious(parsed: any): Promise<any>;
22
21
  sealiousValueToForm(ctx: Context, sealiousValue: Record<string, FormDataValue | null>[] | null): Promise<FormDataValue>;
23
22
  }
@@ -0,0 +1,19 @@
1
+ import { CollectionItem, ExtractFieldDecoded, ExtractFieldInput, Field as SealiousField, FieldTypes as SealiousFieldTypes } from "sealious";
2
+ import { FieldParseResult, FormField } from "./field.js";
3
+ import { FieldGroup, FormControl } from "../controls/controls.js";
4
+ import { Context } from "koa";
5
+ import { FormDataValue } from "../form-types.js";
6
+ import { ExtractedFieldInfo } from "../../utils/extract-fields-from-collection.js";
7
+ export declare class StructuredSealiousField<Structure extends Record<string, SealiousField<any>>, F extends SealiousFieldTypes.Structured<Structure>> extends FormField<false, ExtractFieldDecoded<F>, FormControl, ExtractFieldInput<F>> {
8
+ sealiousField: F;
9
+ constructor(sealiousField: F);
10
+ getEmptyValue(): ExtractFieldDecoded<F>;
11
+ parse(ctx: Context, raw_value: FormDataValue): Promise<FieldParseResult<ExtractFieldDecoded<F>>>;
12
+ parsedToSealious(parsed: Record<string, unknown> | null): Promise<any>;
13
+ sealiousValueToForm(ctx: Context, sealiousValue: ExtractFieldDecoded<F> | ExtractFieldInput<F> | null, item: CollectionItem<any>): Promise<FormDataValue>;
14
+ getControl(): FieldGroup;
15
+ generateFieldDeclaration(_field_info: ExtractedFieldInfo, vars: {
16
+ form_field_types: string;
17
+ sealious_field: string;
18
+ }): string;
19
+ }
@@ -1,6 +1,5 @@
1
- import { FormControlContext } from "../controls/form-control.js";
2
1
  import { TextBasedSimpleField } from "./simple-form-field.js";
3
2
  export declare class Text<Required extends boolean> extends TextBasedSimpleField<Required> {
4
3
  constructor(required: Required);
5
- getSealiousCreateValue(fctx: FormControlContext): Promise<string>;
4
+ parsedToSealious(parsed: string): Promise<string>;
6
5
  }
@@ -1,6 +1,5 @@
1
- import { FormControlContext } from "../controls/form-control.js";
2
1
  import { TextBasedSimpleField } from "./simple-form-field.js";
3
2
  export declare class URLField<Required extends boolean> extends TextBasedSimpleField<Required> {
4
3
  constructor(required: Required);
5
- getSealiousCreateValue(fctx: FormControlContext): Promise<string | null>;
4
+ parsedToSealious(parsed: string | null): Promise<string>;
6
5
  }
@@ -1,13 +1,14 @@
1
1
  import Router from "@koa/router";
2
2
  import { Context } from "koa";
3
3
  import { FlatTemplatable } from "tempstream";
4
- import { Fields, MountableWithFields } from "../page/mountable-with-fields.js";
4
+ import { MountableWithFields } from "../page/mountable-with-fields.js";
5
5
  import type { FormDataValue, FormMessage } from "./form-types.js";
6
6
  import { Form } from "./form.js";
7
- export declare class Multiform extends MountableWithFields {
7
+ import { FormField } from "./fields/field.js";
8
+ export declare class Multiform<Forms extends Record<string, Form<Record<string, FormField>, any>> = any> extends MountableWithFields {
8
9
  getControls: () => never[];
9
10
  name: string;
10
- forms: Record<string, Form<Fields, unknown>>;
11
+ forms: Forms;
11
12
  init(path: string, router: Router): void;
12
13
  extractRawValues(ctx: Context): Promise<Record<string, FormDataValue>>;
13
14
  canAccess(): Promise<{
package/@types/index.d.ts CHANGED
@@ -21,28 +21,39 @@ export * from "./forms/controls/form-control.js";
21
21
  import { Context } from "koa";
22
22
  import { Readable } from "node:stream";
23
23
  export interface HTMLOptions {
24
- morphing?: boolean;
24
+ morphing?: boolean;
25
25
  }
26
26
  export interface HTMLHeadOptions {
27
- ctx: Context;
28
- title: string | Promise<string | Readable>;
29
- htmlOptions: Partial<HTMLOptions>;
30
- metaImage?: string;
31
- canonicalPath?: string;
32
- css_clumps: string[];
33
- description: string;
27
+ ctx: Context;
28
+ title: string | Promise<string | Readable> | { toString(): string };
29
+ htmlOptions: Partial<HTMLOptions>;
30
+ metaImage?: string;
31
+ canonicalPath?: string;
32
+ css_clumps: string[];
33
+ description: string | { toString(): string };
34
34
  }
35
35
  export interface HTMLArgs {
36
- ctx: Context;
37
- title: string | Promise<string>;
38
- body: string | Promise<string> | Readable;
39
- htmlOptions?: Partial<HTMLOptions>;
40
- makeHead?: (args: HTMLHeadOptions) => string | Promise<string> | Readable | Promise<Readable>;
41
- metaImage?: string;
42
- canonicalPath?: string;
43
- css_clumps?: string[];
44
- description: string;
45
- hideNavigation?: boolean;
36
+ ctx: Context;
37
+ title:
38
+ | string
39
+ | Promise<string>
40
+ | {
41
+ toString(): string;
42
+ };
43
+ body: string | Promise<string> | Readable;
44
+ htmlOptions?: Partial<HTMLOptions>;
45
+ makeHead?: (
46
+ args: HTMLHeadOptions
47
+ ) => string | Promise<string> | Readable | Promise<Readable>;
48
+ metaImage?: string;
49
+ canonicalPath?: string;
50
+ css_clumps?: string[];
51
+ description:
52
+ | string
53
+ | {
54
+ toString(): string;
55
+ };
56
+ hideNavigation?: boolean;
46
57
  }
47
58
  export type HTMLFunc = (args: HTMLArgs) => Readable | Promise<Readable>;
48
59
  export type BreadcrumbLabel = string | ((ctx: Context) => Promise<string>);
@@ -29,7 +29,7 @@ export type StatefulPageActionArgument<State extends Record<string, unknown>, Ar
29
29
  };
30
30
  export type StatefulPageAction<State extends Record<string, unknown>, Args extends unknown[] = unknown[]> = (obj: StatefulPageActionArgument<State, Args>) => State | Promise<State>;
31
31
  export type ExtractStatefulPageActionArgs<X> = X extends StatefulPageAction<any, infer Args> ? Args : never;
32
- export declare abstract class StatefulPage<State extends Record<string, unknown>, Actions extends Record<string, StatefulPageAction<State>>> extends Mountable {
32
+ export declare abstract class StatefulPage<State extends Record<string, unknown>, Actions extends Record<string, StatefulPageAction<State, any>>> extends Mountable {
33
33
  form_id?: string | undefined;
34
34
  abstract actions: Actions;
35
35
  abstract getInitialState(ctx: Context): State | Promise<State>;
@@ -0,0 +1 @@
1
+ export declare function addCollection(params?: Record<string, string | boolean>): Promise<void>;
@@ -0,0 +1,3 @@
1
+ export declare function addCRUD(params: Partial<{
2
+ [key in "collection" | "url"]: string;
3
+ }>, app_directory?: string): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare function addJDDComponent(): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function addRoute(params: Partial<{
2
+ [key in "action" | "url" | "mode"]: string;
3
+ }>, app_directory?: string): Promise<void>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ export declare function buildProject({ watch, }: {
2
+ watch: boolean;
3
+ }): Promise<void>;
@@ -0,0 +1,7 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare class BackendTSBuilder extends Builder {
3
+ getName(): string;
4
+ ownsFile(file_path: string): boolean;
5
+ dispose(): Promise<void>;
6
+ _build(): Promise<void>;
7
+ }
@@ -0,0 +1,11 @@
1
+ export declare abstract class Builder {
2
+ project_dir: string;
3
+ style_dirs: string[];
4
+ abstract ownsFile(file_path: string): boolean;
5
+ abstract getName(): string;
6
+ abstract _build(): Promise<void>;
7
+ abstract dispose(): Promise<void>;
8
+ constructor(project_dir: string, style_dirs: string[]);
9
+ ongoing_build: Promise<void> | null;
10
+ build(notifier?: (message: string) => void): Promise<void>;
11
+ }
@@ -0,0 +1,10 @@
1
+ import { Builder } from "./builder.js";
2
+ export declare const COLORS_TS_PATH = "src/back/colors.ts";
3
+ export declare const COLORS_CSS_PATH = "src/colors.css";
4
+ export declare const COLORS_HTML_PATH = "public/dist/colors.html";
5
+ export declare class ColorsBuilder extends Builder {
6
+ getName(): string;
7
+ ownsFile(file_path: string): file_path is "src/back/colors.ts";
8
+ dispose(): Promise<void>;
9
+ _build(): Promise<void>;
10
+ }