@sealcode/sealgen 0.11.7 → 0.12.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 (694) hide show
  1. package/.madgerc +7 -0
  2. package/@types/components/components.d.ts +2 -2
  3. package/@types/components/toggle-modal.d.ts +1 -1
  4. package/@types/example.test.d.ts +1 -0
  5. package/@types/forms/controls/array.d.ts +7 -7
  6. package/@types/forms/controls/autocomplete.d.ts +3 -3
  7. package/@types/forms/controls/big-radio-group.d.ts +3 -3
  8. package/@types/forms/controls/checkbox-group.d.ts +4 -4
  9. package/@types/forms/controls/checkbox.d.ts +3 -3
  10. package/@types/forms/controls/checkboxed-list-input.d.ts +4 -4
  11. package/@types/forms/controls/collapsible-checkbox-group.d.ts +3 -3
  12. package/@types/forms/controls/collapsible-field-group.d.ts +2 -2
  13. package/@types/forms/controls/controls.d.ts +29 -29
  14. package/@types/forms/controls/derived-frame.d.ts +6 -6
  15. package/@types/forms/controls/derived.d.ts +3 -3
  16. package/@types/forms/controls/dropdown.d.ts +4 -4
  17. package/@types/forms/controls/editable-collection-subset.d.ts +3 -3
  18. package/@types/forms/controls/field-group.d.ts +2 -2
  19. package/@types/forms/controls/file.d.ts +5 -5
  20. package/@types/forms/controls/form-control.d.ts +2 -2
  21. package/@types/forms/controls/form-field-control.d.ts +3 -3
  22. package/@types/forms/controls/form-header.d.ts +2 -2
  23. package/@types/forms/controls/form-paragraph.d.ts +1 -1
  24. package/@types/forms/controls/frame.d.ts +1 -1
  25. package/@types/forms/controls/hidden-input.d.ts +3 -3
  26. package/@types/forms/controls/html.d.ts +2 -2
  27. package/@types/forms/controls/multiple-files.d.ts +5 -5
  28. package/@types/forms/controls/multiple-photos.d.ts +5 -5
  29. package/@types/forms/controls/number.d.ts +3 -3
  30. package/@types/forms/controls/photo.d.ts +7 -7
  31. package/@types/forms/controls/radio.d.ts +3 -3
  32. package/@types/forms/controls/reverse-single-reference.d.ts +1 -0
  33. package/@types/forms/controls/simple-input.d.ts +4 -4
  34. package/@types/forms/controls/textarea.d.ts +4 -4
  35. package/@types/forms/controls/tickable.d.ts +4 -4
  36. package/@types/forms/fields/boolean.d.ts +2 -2
  37. package/@types/forms/fields/checkboxed-list.d.ts +2 -2
  38. package/@types/forms/fields/collection-field.d.ts +2 -2
  39. package/@types/forms/fields/email.d.ts +1 -1
  40. package/@types/forms/fields/enum-multiple.d.ts +2 -2
  41. package/@types/forms/fields/enum.d.ts +2 -2
  42. package/@types/forms/fields/existing-sealious-value.d.ts +1 -1
  43. package/@types/forms/fields/field.d.ts +16 -16
  44. package/@types/forms/fields/file.d.ts +2 -2
  45. package/@types/forms/fields/multiple-files.d.ts +1 -1
  46. package/@types/forms/fields/number.d.ts +2 -2
  47. package/@types/forms/fields/pick-from-list.d.ts +3 -3
  48. package/@types/forms/fields/proxy-field.d.ts +1 -1
  49. package/@types/forms/fields/regexp.d.ts +2 -2
  50. package/@types/forms/fields/reverse-single-reference.d.ts +1 -1
  51. package/@types/forms/fields/simple-form-field.d.ts +2 -2
  52. package/@types/forms/fields/structured-array.d.ts +2 -2
  53. package/@types/forms/form.d.ts +3 -3
  54. package/@types/forms/form.test.d.ts +1 -1
  55. package/@types/forms/multiform.d.ts +4 -4
  56. package/@types/index.d.ts +17 -17
  57. package/@types/make-hidden-inputs.d.ts +2 -2
  58. package/@types/mount.d.ts +2 -2
  59. package/@types/page/list.d.ts +4 -4
  60. package/@types/page/mountable-with-fields.d.ts +4 -4
  61. package/@types/page/mountable.d.ts +1 -1
  62. package/@types/page/page.d.ts +4 -4
  63. package/@types/page/props-parser.d.ts +2 -2
  64. package/@types/page/sealious-list.d.ts +1 -1
  65. package/@types/page/stateful-page.d.ts +3 -3
  66. package/@types/remove-named-imports.d.ts +4 -0
  67. package/@types/run.d.ts +1 -0
  68. package/@types/src/add-collection.d.ts +1 -0
  69. package/@types/src/add-jdd-component.d.ts +1 -0
  70. package/@types/src/add-route.d.ts +3 -0
  71. package/@types/src/add-route.test.d.ts +1 -0
  72. package/@types/src/build.d.ts +3 -0
  73. package/@types/src/cli.d.ts +2 -0
  74. package/@types/src/components/components.d.ts +2 -0
  75. package/@types/src/components/tabs.d.ts +2 -0
  76. package/@types/src/components/toggle-modal.d.ts +7 -0
  77. package/@types/src/example.test.d.ts +1 -0
  78. package/@types/src/find-css-includes.d.ts +1 -0
  79. package/@types/src/forms/controls/array.d.ts +35 -0
  80. package/@types/src/forms/controls/autocomplete.d.ts +22 -0
  81. package/@types/src/forms/controls/big-radio-group.d.ts +14 -0
  82. package/@types/src/forms/controls/checkbox-group.d.ts +22 -0
  83. package/@types/src/forms/controls/checkbox.d.ts +15 -0
  84. package/@types/src/forms/controls/checkboxed-list-input.d.ts +14 -0
  85. package/@types/src/forms/controls/collapsible-checkbox-group.d.ts +11 -0
  86. package/@types/src/forms/controls/collapsible-field-group.d.ts +21 -0
  87. package/@types/src/forms/controls/controls.d.ts +29 -0
  88. package/@types/src/forms/controls/derived-frame.d.ts +22 -0
  89. package/@types/src/forms/controls/derived.d.ts +13 -0
  90. package/@types/src/forms/controls/dropdown.d.ts +30 -0
  91. package/@types/src/forms/controls/editable-collection-subset.d.ts +20 -0
  92. package/@types/src/forms/controls/field-group.d.ts +23 -0
  93. package/@types/src/forms/controls/file.d.ts +16 -0
  94. package/@types/src/forms/controls/form-control.d.ts +19 -0
  95. package/@types/src/forms/controls/form-field-control.d.ts +13 -0
  96. package/@types/src/forms/controls/form-header.d.ts +8 -0
  97. package/@types/src/forms/controls/form-paragraph.d.ts +7 -0
  98. package/@types/src/forms/controls/frame.d.ts +17 -0
  99. package/@types/src/forms/controls/hidden-input.d.ts +9 -0
  100. package/@types/src/forms/controls/html.d.ts +11 -0
  101. package/@types/src/forms/controls/multiple-files.d.ts +40 -0
  102. package/@types/src/forms/controls/multiple-photos.d.ts +18 -0
  103. package/@types/src/forms/controls/number.d.ts +13 -0
  104. package/@types/src/forms/controls/photo.d.ts +22 -0
  105. package/@types/src/forms/controls/radio.d.ts +16 -0
  106. package/@types/src/forms/controls/reverse-single-reference.d.ts +1 -0
  107. package/@types/src/forms/controls/simple-input.d.ts +32 -0
  108. package/@types/src/forms/controls/textarea.d.ts +25 -0
  109. package/@types/src/forms/controls/tickable.d.ts +24 -0
  110. package/@types/src/forms/fields/boolean.d.ts +17 -0
  111. package/@types/src/forms/fields/boolean.test.d.ts +1 -0
  112. package/@types/src/forms/fields/checkboxed-list.d.ts +20 -0
  113. package/@types/src/forms/fields/collection-field.d.ts +15 -0
  114. package/@types/src/forms/fields/email.d.ts +7 -0
  115. package/@types/src/forms/fields/email.test.d.ts +1 -0
  116. package/@types/src/forms/fields/enum-multiple.d.ts +18 -0
  117. package/@types/src/forms/fields/enum-multiple.test.d.ts +1 -0
  118. package/@types/src/forms/fields/enum.d.ts +18 -0
  119. package/@types/src/forms/fields/enum.test.d.ts +1 -0
  120. package/@types/src/forms/fields/existing-sealious-value.d.ts +6 -0
  121. package/@types/src/forms/fields/field.d.ts +43 -0
  122. package/@types/src/forms/fields/fields.d.ts +15 -0
  123. package/@types/src/forms/fields/file.d.ts +16 -0
  124. package/@types/src/forms/fields/multiple-files.d.ts +14 -0
  125. package/@types/src/forms/fields/number.d.ts +23 -0
  126. package/@types/src/forms/fields/number.test.d.ts +1 -0
  127. package/@types/src/forms/fields/pick-from-list.d.ts +14 -0
  128. package/@types/src/forms/fields/pick-from-list.test.d.ts +1 -0
  129. package/@types/src/forms/fields/proxy-field.d.ts +13 -0
  130. package/@types/src/forms/fields/regexp.d.ts +16 -0
  131. package/@types/src/forms/fields/regexp.test.d.ts +1 -0
  132. package/@types/src/forms/fields/reverse-single-reference.d.ts +13 -0
  133. package/@types/src/forms/fields/simple-form-field.d.ts +9 -0
  134. package/@types/src/forms/fields/structured-array.d.ts +14 -0
  135. package/@types/src/forms/form-types.d.ts +26 -0
  136. package/@types/src/forms/form.d.ts +31 -0
  137. package/@types/src/forms/form.test.d.ts +6 -0
  138. package/@types/src/forms/multiform.d.ts +24 -0
  139. package/@types/src/forms/multiform.test.d.ts +1 -0
  140. package/@types/src/generate-collections.d.ts +2 -0
  141. package/@types/src/generate-components.d.ts +1 -0
  142. package/@types/src/generate-routes.d.ts +1 -0
  143. package/@types/src/hehe.test.d.ts +1 -0
  144. package/@types/src/index.d.ts +27 -0
  145. package/@types/src/make-env.d.ts +1 -0
  146. package/@types/src/make-hidden-inputs.d.ts +5 -0
  147. package/@types/src/mount.d.ts +6 -0
  148. package/@types/src/notifier.d.ts +1 -0
  149. package/@types/src/page/access-control.d.ts +6 -0
  150. package/@types/src/page/default-list-filters.d.ts +6 -0
  151. package/@types/src/page/list.d.ts +47 -0
  152. package/@types/src/page/mountable-with-fields.d.ts +36 -0
  153. package/@types/src/page/mountable.d.ts +11 -0
  154. package/@types/src/page/page.d.ts +19 -0
  155. package/@types/src/page/props-parser.d.ts +16 -0
  156. package/@types/src/page/sealious-list.d.ts +19 -0
  157. package/@types/src/page/stateful-page.d.ts +34 -0
  158. package/@types/src/run.d.ts +1 -0
  159. package/@types/src/sample-index.d.ts +1 -0
  160. package/@types/src/sample-lib.d.ts +3 -0
  161. package/@types/src/sanitize.d.ts +1 -0
  162. package/@types/src/templates/collection.d.ts +1 -0
  163. package/@types/src/templates/form.d.ts +1 -0
  164. package/@types/src/templates/jdd-component.d.ts +1 -0
  165. package/@types/src/templates/list.d.ts +1 -0
  166. package/@types/src/templates/long-running-process.d.ts +1 -0
  167. package/@types/src/templates/multiform.d.ts +1 -0
  168. package/@types/src/templates/page.d.ts +1 -0
  169. package/@types/src/templates/post.d.ts +1 -0
  170. package/@types/src/templates/redirect.d.ts +1 -0
  171. package/@types/src/templates/route-test.d.ts +1 -0
  172. package/@types/src/templates/stateful-page.d.ts +1 -0
  173. package/@types/src/templates/templates.d.ts +19 -0
  174. package/@types/src/test_utils/locator_is_visible.d.ts +2 -0
  175. package/@types/src/utils/assert-throws.d.ts +1 -0
  176. package/@types/src/utils/base64.d.ts +2 -0
  177. package/@types/src/utils/browser-creator.d.ts +1 -0
  178. package/@types/src/utils/escape-url-params.d.ts +2 -0
  179. package/@types/src/utils/exec.d.ts +5 -0
  180. package/@types/src/utils/extract-fields-from-collection.d.ts +4 -0
  181. package/@types/src/utils/format-external-url.d.ts +1 -0
  182. package/@types/src/utils/import-path.d.ts +2 -0
  183. package/@types/src/utils/input-wrapper.d.ts +5 -0
  184. package/@types/src/utils/list-collections.d.ts +1 -0
  185. package/@types/src/utils/make-slug.d.ts +1 -0
  186. package/@types/src/utils/natural-numbers.d.ts +1 -0
  187. package/@types/src/utils/prettier.d.ts +2 -0
  188. package/@types/src/utils/question.d.ts +1 -0
  189. package/@types/src/utils/render-attributes.d.ts +1 -0
  190. package/@types/src/utils/sleep.d.ts +1 -0
  191. package/@types/src/utils/translate.d.ts +3 -0
  192. package/@types/src/utils/url-with-new-params.d.ts +2 -0
  193. package/@types/src/utils/utils.d.ts +16 -0
  194. package/@types/src/utils/walk.d.ts +1 -0
  195. package/@types/src/vitest.config.d.ts +2 -0
  196. package/@types/templates/templates.d.ts +8 -8
  197. package/@types/utils/input-wrapper.d.ts +1 -1
  198. package/@types/utils/utils.d.ts +12 -12
  199. package/@types/vitest.config.d.ts +2 -0
  200. package/build.js +18 -0
  201. package/coverage/.tmp/coverage-15.json +1 -0
  202. package/coverage/.tmp/coverage-16.json +1 -0
  203. package/coverage/.tmp/coverage-17.json +1 -0
  204. package/coverage/.tmp/coverage-18.json +1 -0
  205. package/coverage/.tmp/coverage-19.json +1 -0
  206. package/coverage/.tmp/coverage-20.json +1 -0
  207. package/coverage/.tmp/coverage-21.json +1 -0
  208. package/coverage/.tmp/coverage-22.json +1 -0
  209. package/coverage/.tmp/coverage-23.json +1 -0
  210. package/coverage/.tmp/coverage-24.json +1 -0
  211. package/coverage/.tmp/coverage-25.json +1 -0
  212. package/coverage/.tmp/coverage-26.json +1 -0
  213. package/dist/add-collection.js +31 -0
  214. package/dist/add-jdd-component.js +42 -0
  215. package/dist/add-route.js +67 -0
  216. package/dist/add-route.test.js +90 -0
  217. package/dist/back/routes/sample.page.js +17 -0
  218. package/dist/back/routes/sample.test.js +39 -0
  219. package/dist/build.js +149 -0
  220. package/dist/cli.js +35 -0
  221. package/dist/components/components.js +3 -0
  222. package/dist/components/tabs.js +101 -0
  223. package/dist/components/toggle-modal.js +49 -0
  224. package/dist/example.test.js +5 -0
  225. package/dist/find-css-includes.js +27 -0
  226. package/dist/forms/controls/array.js +171 -0
  227. package/dist/forms/controls/autocomplete.js +34 -0
  228. package/dist/forms/controls/big-radio-group.js +38 -0
  229. package/dist/forms/controls/checkbox-group.js +46 -0
  230. package/dist/forms/controls/checkbox.js +28 -0
  231. package/dist/forms/controls/checkboxed-list-input.js +44 -0
  232. package/dist/forms/controls/collapsible-checkbox-group.js +16 -0
  233. package/dist/forms/controls/collapsible-field-group.js +87 -0
  234. package/dist/forms/controls/controls.js +44 -0
  235. package/dist/forms/controls/derived-frame.js +77 -0
  236. package/dist/forms/controls/derived.js +81 -0
  237. package/dist/forms/controls/dropdown.js +62 -0
  238. package/dist/forms/controls/editable-collection-subset.js +82 -0
  239. package/dist/forms/controls/field-group.js +52 -0
  240. package/dist/forms/controls/file.js +38 -0
  241. package/dist/forms/controls/form-control.js +19 -0
  242. package/dist/forms/controls/form-field-control.js +12 -0
  243. package/dist/forms/controls/form-header.js +17 -0
  244. package/dist/forms/controls/form-paragraph.js +15 -0
  245. package/dist/forms/controls/frame.js +22 -0
  246. package/dist/forms/controls/hidden-input.js +17 -0
  247. package/dist/forms/controls/html.js +23 -0
  248. package/dist/forms/controls/multiple-files.js +190 -0
  249. package/dist/forms/controls/multiple-photos.js +36 -0
  250. package/dist/forms/controls/number.js +24 -0
  251. package/dist/forms/controls/photo.js +56 -0
  252. package/dist/forms/controls/radio.js +28 -0
  253. package/dist/forms/controls/reverse-single-reference.js +1 -0
  254. package/dist/forms/controls/simple-input.js +85 -0
  255. package/dist/forms/controls/textarea.js +40 -0
  256. package/dist/forms/controls/tickable.js +72 -0
  257. package/dist/forms/fields/boolean.js +49 -0
  258. package/dist/forms/fields/boolean.test.js +33 -0
  259. package/dist/forms/fields/checkboxed-list.js +49 -0
  260. package/dist/forms/fields/collection-field.js +47 -0
  261. package/dist/forms/fields/email.js +19 -0
  262. package/dist/forms/fields/email.test.js +20 -0
  263. package/dist/forms/fields/enum-multiple.js +47 -0
  264. package/dist/forms/fields/enum-multiple.test.js +27 -0
  265. package/dist/forms/fields/enum.js +41 -0
  266. package/dist/forms/fields/enum.test.js +21 -0
  267. package/dist/forms/fields/existing-sealious-value.js +21 -0
  268. package/dist/forms/fields/field.js +82 -0
  269. package/dist/forms/fields/fields.js +16 -0
  270. package/dist/forms/fields/file.js +63 -0
  271. package/dist/forms/fields/multiple-files.js +18 -0
  272. package/dist/forms/fields/number.js +42 -0
  273. package/dist/forms/fields/number.test.js +31 -0
  274. package/dist/forms/fields/pick-from-list.js +34 -0
  275. package/dist/forms/fields/pick-from-list.test.js +17 -0
  276. package/dist/forms/fields/proxy-field.js +23 -0
  277. package/dist/forms/fields/regexp.js +42 -0
  278. package/dist/forms/fields/regexp.test.js +21 -0
  279. package/dist/forms/fields/reverse-single-reference.js +17 -0
  280. package/dist/forms/fields/simple-form-field.js +22 -0
  281. package/dist/forms/fields/structured-array.js +21 -0
  282. package/dist/forms/form-types.js +1 -0
  283. package/dist/forms/form.js +203 -0
  284. package/dist/forms/form.test.js +316 -0
  285. package/dist/forms/multiform.js +200 -0
  286. package/dist/forms/multiform.test.js +486 -0
  287. package/dist/generate-collections.js +65 -0
  288. package/dist/generate-components.js +41 -0
  289. package/dist/generate-routes.js +90 -0
  290. package/dist/hehe.test.js +7 -0
  291. package/dist/index.js +26 -0
  292. package/dist/make-env.js +17 -0
  293. package/dist/make-hidden-inputs.js +15 -0
  294. package/dist/mount.js +66 -0
  295. package/dist/notifier.js +21 -0
  296. package/dist/page/access-control.js +19 -0
  297. package/dist/page/default-list-filters.js +46 -0
  298. package/dist/page/list.js +199 -0
  299. package/dist/page/mountable-with-fields.js +106 -0
  300. package/dist/page/mountable.js +9 -0
  301. package/dist/page/page.js +31 -0
  302. package/dist/page/props-parser.js +24 -0
  303. package/dist/page/sealious-list.js +61 -0
  304. package/dist/page/stateful-page.js +123 -0
  305. package/dist/run.js +1 -0
  306. package/dist/sample-index.js +3 -0
  307. package/dist/sample-lib.js +9 -0
  308. package/dist/sanitize.js +10 -0
  309. package/dist/templates/collection.js +15 -0
  310. package/dist/templates/form.js +60 -0
  311. package/dist/templates/jdd-component.js +44 -0
  312. package/dist/templates/list.js +144 -0
  313. package/dist/templates/long-running-process.js +63 -0
  314. package/dist/templates/multiform.js +58 -0
  315. package/dist/templates/page.js +26 -0
  316. package/dist/templates/post.js +25 -0
  317. package/dist/templates/redirect.js +26 -0
  318. package/dist/templates/route-test.js +61 -0
  319. package/dist/templates/stateful-page.js +69 -0
  320. package/dist/templates/templates.js +24 -0
  321. package/dist/test_utils/locator_is_visible.js +14 -0
  322. package/dist/utils/assert-throws.js +18 -0
  323. package/dist/utils/base64.js +11 -0
  324. package/dist/utils/browser-creator.js +11 -0
  325. package/dist/utils/escape-url-params.js +11 -0
  326. package/dist/utils/exec.js +29 -0
  327. package/dist/utils/extract-fields-from-collection.js +33 -0
  328. package/dist/utils/format-external-url.js +11 -0
  329. package/dist/utils/import-path.js +23 -0
  330. package/dist/utils/input-wrapper.js +19 -0
  331. package/dist/utils/list-collections.js +13 -0
  332. package/dist/utils/make-slug.js +7 -0
  333. package/dist/utils/natural-numbers.js +9 -0
  334. package/dist/utils/prettier.js +15 -0
  335. package/dist/utils/question.js +20 -0
  336. package/dist/utils/render-attributes.js +18 -0
  337. package/dist/utils/sleep.js +7 -0
  338. package/dist/utils/translate.js +12 -0
  339. package/dist/utils/url-with-new-params.js +8 -0
  340. package/dist/utils/utils.js +28 -0
  341. package/dist/utils/walk.js +23 -0
  342. package/dist/vitest.config.js +23 -0
  343. package/lib/add-collection.js +14 -21
  344. package/lib/add-jdd-component.js +17 -24
  345. package/lib/add-route.js +18 -25
  346. package/lib/add-route.test.js +15 -21
  347. package/lib/build.js +51 -56
  348. package/lib/cli.js +20 -21
  349. package/lib/components/components.js +2 -18
  350. package/lib/components/tabs.js +4 -8
  351. package/lib/components/toggle-modal.js +5 -9
  352. package/lib/example.test.js +1 -0
  353. package/lib/find-css-includes.js +9 -16
  354. package/lib/forms/controls/array.js +16 -24
  355. package/lib/forms/controls/autocomplete.js +2 -6
  356. package/lib/forms/controls/big-radio-group.js +5 -9
  357. package/lib/forms/controls/checkbox-group.js +6 -10
  358. package/lib/forms/controls/checkbox.js +3 -8
  359. package/lib/forms/controls/checkboxed-list-input.js +8 -12
  360. package/lib/forms/controls/collapsible-checkbox-group.js +4 -8
  361. package/lib/forms/controls/collapsible-field-group.js +4 -8
  362. package/lib/forms/controls/controls.js +29 -58
  363. package/lib/forms/controls/derived-frame.js +13 -17
  364. package/lib/forms/controls/derived.js +6 -10
  365. package/lib/forms/controls/dropdown.js +7 -12
  366. package/lib/forms/controls/editable-collection-subset.js +7 -11
  367. package/lib/forms/controls/field-group.js +4 -8
  368. package/lib/forms/controls/file.js +4 -8
  369. package/lib/forms/controls/form-control.js +2 -7
  370. package/lib/forms/controls/form-field-control.js +2 -6
  371. package/lib/forms/controls/form-header.js +2 -6
  372. package/lib/forms/controls/form-paragraph.js +2 -6
  373. package/lib/forms/controls/frame.js +2 -6
  374. package/lib/forms/controls/hidden-input.js +5 -9
  375. package/lib/forms/controls/html.js +2 -6
  376. package/lib/forms/controls/multiple-files.js +13 -17
  377. package/lib/forms/controls/multiple-photos.js +4 -8
  378. package/lib/forms/controls/number.js +2 -6
  379. package/lib/forms/controls/photo.js +6 -10
  380. package/lib/forms/controls/radio.js +2 -6
  381. package/lib/forms/controls/reverse-single-reference.js +1 -0
  382. package/lib/forms/controls/simple-input.js +7 -11
  383. package/lib/forms/controls/textarea.js +2 -6
  384. package/lib/forms/controls/tickable.js +7 -11
  385. package/lib/forms/fields/boolean.js +7 -11
  386. package/lib/forms/fields/boolean.test.js +19 -24
  387. package/lib/forms/fields/checkboxed-list.js +7 -11
  388. package/lib/forms/fields/collection-field.js +4 -8
  389. package/lib/forms/fields/email.js +4 -8
  390. package/lib/forms/fields/email.test.js +10 -15
  391. package/lib/forms/fields/enum-multiple.js +7 -11
  392. package/lib/forms/fields/enum-multiple.test.js +15 -20
  393. package/lib/forms/fields/enum.js +6 -10
  394. package/lib/forms/fields/enum.test.js +11 -16
  395. package/lib/forms/fields/existing-sealious-value.js +2 -6
  396. package/lib/forms/fields/field.js +21 -40
  397. package/lib/forms/fields/file.js +15 -19
  398. package/lib/forms/fields/multiple-files.js +2 -6
  399. package/lib/forms/fields/number.js +9 -13
  400. package/lib/forms/fields/number.test.js +18 -23
  401. package/lib/forms/fields/pick-from-list.js +5 -9
  402. package/lib/forms/fields/pick-from-list.test.js +6 -11
  403. package/lib/forms/fields/proxy-field.js +2 -6
  404. package/lib/forms/fields/regexp.js +6 -10
  405. package/lib/forms/fields/regexp.test.js +11 -16
  406. package/lib/forms/fields/reverse-single-reference.js +2 -6
  407. package/lib/forms/fields/simple-form-field.js +5 -8
  408. package/lib/forms/fields/structured-array.js +2 -6
  409. package/lib/forms/form.js +16 -23
  410. package/lib/forms/form.test.js +1 -275
  411. package/lib/forms/multiform.js +10 -14
  412. package/lib/forms/multiform.test.js +65 -70
  413. package/lib/generate-collections.js +12 -43
  414. package/lib/generate-components.js +14 -44
  415. package/lib/generate-routes.js +22 -52
  416. package/lib/index.js +16 -45
  417. package/lib/make-env.js +7 -14
  418. package/lib/make-hidden-inputs.js +6 -10
  419. package/lib/mount.js +5 -9
  420. package/lib/notifier.js +3 -10
  421. package/lib/page/access-control.js +1 -5
  422. package/lib/page/default-list-filters.js +6 -11
  423. package/lib/page/list.js +24 -31
  424. package/lib/page/mountable-with-fields.js +7 -11
  425. package/lib/page/mountable.js +1 -5
  426. package/lib/page/page.js +6 -10
  427. package/lib/page/props-parser.js +4 -12
  428. package/lib/page/sealious-list.js +8 -15
  429. package/lib/page/stateful-page.js +18 -25
  430. package/lib/remove-named-imports.js +47 -0
  431. package/lib/run.js +1 -0
  432. package/lib/sanitize.js +1 -5
  433. package/lib/src/add-collection.js +24 -0
  434. package/lib/src/add-jdd-component.js +27 -0
  435. package/lib/src/add-route.js +65 -0
  436. package/lib/src/add-route.test.js +72 -0
  437. package/lib/src/build.js +142 -0
  438. package/lib/src/cli.js +37 -0
  439. package/lib/src/components/components.js +3 -0
  440. package/lib/src/components/tabs.js +88 -0
  441. package/lib/src/components/toggle-modal.js +46 -0
  442. package/lib/src/example.test.js +5 -0
  443. package/lib/src/find-css-includes.js +23 -0
  444. package/lib/src/forms/controls/array.js +141 -0
  445. package/lib/src/forms/controls/autocomplete.js +23 -0
  446. package/lib/src/forms/controls/big-radio-group.js +34 -0
  447. package/lib/src/forms/controls/checkbox-group.js +30 -0
  448. package/lib/src/forms/controls/checkbox.js +24 -0
  449. package/lib/src/forms/controls/checkboxed-list-input.js +35 -0
  450. package/lib/src/forms/controls/collapsible-checkbox-group.js +13 -0
  451. package/lib/src/forms/controls/collapsible-field-group.js +78 -0
  452. package/lib/src/forms/controls/controls.js +31 -0
  453. package/lib/src/forms/controls/derived-frame.js +52 -0
  454. package/lib/src/forms/controls/derived.js +77 -0
  455. package/lib/src/forms/controls/dropdown.js +55 -0
  456. package/lib/src/forms/controls/editable-collection-subset.js +68 -0
  457. package/lib/src/forms/controls/field-group.js +53 -0
  458. package/lib/src/forms/controls/file.js +35 -0
  459. package/lib/src/forms/controls/form-control.js +14 -0
  460. package/lib/src/forms/controls/form-field-control.js +9 -0
  461. package/lib/src/forms/controls/form-header.js +14 -0
  462. package/lib/src/forms/controls/form-paragraph.js +12 -0
  463. package/lib/src/forms/controls/frame.js +25 -0
  464. package/lib/src/forms/controls/hidden-input.js +14 -0
  465. package/lib/src/forms/controls/html.js +23 -0
  466. package/lib/src/forms/controls/multiple-files.js +160 -0
  467. package/lib/src/forms/controls/multiple-photos.js +33 -0
  468. package/lib/src/forms/controls/number.js +25 -0
  469. package/lib/src/forms/controls/photo.js +57 -0
  470. package/lib/src/forms/controls/radio.js +25 -0
  471. package/lib/src/forms/controls/reverse-single-reference.js +47 -0
  472. package/lib/src/forms/controls/simple-input.js +78 -0
  473. package/lib/src/forms/controls/textarea.js +33 -0
  474. package/lib/src/forms/controls/tickable.js +75 -0
  475. package/lib/src/forms/fields/boolean.js +51 -0
  476. package/lib/src/forms/fields/boolean.test.js +33 -0
  477. package/lib/src/forms/fields/checkboxed-list.js +40 -0
  478. package/lib/src/forms/fields/collection-field.js +29 -0
  479. package/lib/src/forms/fields/email.js +11 -0
  480. package/lib/src/forms/fields/email.test.js +20 -0
  481. package/lib/src/forms/fields/enum-multiple.js +47 -0
  482. package/lib/src/forms/fields/enum-multiple.test.js +27 -0
  483. package/lib/src/forms/fields/enum.js +39 -0
  484. package/lib/src/forms/fields/enum.test.js +21 -0
  485. package/lib/src/forms/fields/existing-sealious-value.js +16 -0
  486. package/lib/src/forms/fields/field.js +66 -0
  487. package/lib/src/forms/fields/fields.js +16 -0
  488. package/lib/src/forms/fields/file.js +53 -0
  489. package/lib/src/forms/fields/multiple-files.js +15 -0
  490. package/lib/src/forms/fields/number.js +45 -0
  491. package/lib/src/forms/fields/number.test.js +31 -0
  492. package/lib/src/forms/fields/pick-from-list.js +31 -0
  493. package/lib/src/forms/fields/pick-from-list.test.js +17 -0
  494. package/lib/src/forms/fields/proxy-field.js +20 -0
  495. package/lib/src/forms/fields/regexp.js +40 -0
  496. package/lib/src/forms/fields/regexp.test.js +21 -0
  497. package/lib/src/forms/fields/reverse-single-reference.js +14 -0
  498. package/lib/src/forms/fields/simple-form-field.js +19 -0
  499. package/lib/src/forms/fields/structured-array.js +18 -0
  500. package/lib/src/forms/form-types.js +2 -0
  501. package/lib/src/forms/form.js +176 -0
  502. package/lib/src/forms/form.test.js +271 -0
  503. package/lib/src/forms/multiform.js +174 -0
  504. package/lib/src/forms/multiform.test.js +430 -0
  505. package/lib/src/generate-collections.js +52 -0
  506. package/lib/src/generate-components.js +33 -0
  507. package/lib/src/generate-routes.js +75 -0
  508. package/lib/src/hehe.test.js +7 -0
  509. package/lib/src/index.js +19 -0
  510. package/lib/src/make-env.js +14 -0
  511. package/lib/src/make-hidden-inputs.js +14 -0
  512. package/lib/src/mount.js +70 -0
  513. package/lib/src/notifier.js +19 -0
  514. package/lib/src/page/access-control.js +16 -0
  515. package/lib/src/page/default-list-filters.js +40 -0
  516. package/lib/src/page/list.js +184 -0
  517. package/lib/src/page/mountable-with-fields.js +85 -0
  518. package/lib/src/page/mountable.js +5 -0
  519. package/lib/src/page/page.js +26 -0
  520. package/lib/src/page/props-parser.js +23 -0
  521. package/lib/src/page/sealious-list.js +59 -0
  522. package/lib/src/page/stateful-page.js +97 -0
  523. package/lib/src/run.js +2 -0
  524. package/lib/src/sample-index.js +3 -0
  525. package/lib/src/sample-lib.js +6 -0
  526. package/lib/src/sanitize.js +10 -0
  527. package/lib/src/templates/collection.js +12 -0
  528. package/lib/src/templates/form.js +57 -0
  529. package/lib/src/templates/jdd-component.js +39 -0
  530. package/lib/src/templates/list.js +139 -0
  531. package/lib/src/templates/long-running-process.js +60 -0
  532. package/lib/src/templates/multiform.js +55 -0
  533. package/lib/src/templates/page.js +23 -0
  534. package/lib/src/templates/post.js +22 -0
  535. package/lib/src/templates/redirect.js +23 -0
  536. package/lib/src/templates/route-test.js +54 -0
  537. package/lib/src/templates/stateful-page.js +66 -0
  538. package/lib/src/templates/templates.js +21 -0
  539. package/lib/src/test_utils/locator_is_visible.js +11 -0
  540. package/lib/src/utils/assert-throws.js +17 -0
  541. package/lib/src/utils/base64.js +7 -0
  542. package/lib/src/utils/browser-creator.js +10 -0
  543. package/lib/src/utils/escape-url-params.js +14 -0
  544. package/lib/src/utils/exec.js +22 -0
  545. package/lib/src/utils/extract-fields-from-collection.js +26 -0
  546. package/lib/src/utils/format-external-url.js +11 -0
  547. package/lib/src/utils/import-path.js +16 -0
  548. package/lib/src/utils/input-wrapper.js +15 -0
  549. package/lib/src/utils/list-collections.js +13 -0
  550. package/lib/src/utils/make-slug.js +6 -0
  551. package/lib/src/utils/natural-numbers.js +6 -0
  552. package/lib/src/utils/prettier.js +10 -0
  553. package/lib/src/utils/question.js +19 -0
  554. package/lib/src/utils/render-attributes.js +19 -0
  555. package/lib/src/utils/sleep.js +4 -0
  556. package/lib/src/utils/translate.js +6 -0
  557. package/lib/src/utils/url-with-new-params.js +5 -0
  558. package/lib/src/utils/utils.js +16 -0
  559. package/lib/src/utils/walk.js +23 -0
  560. package/lib/src/vitest.config.js +20 -0
  561. package/lib/templates/collection.js +1 -5
  562. package/lib/templates/form.js +3 -7
  563. package/lib/templates/jdd-component.js +5 -9
  564. package/lib/templates/list.js +14 -21
  565. package/lib/templates/long-running-process.js +3 -7
  566. package/lib/templates/multiform.js +3 -7
  567. package/lib/templates/page.js +3 -7
  568. package/lib/templates/post.js +1 -5
  569. package/lib/templates/redirect.js +1 -5
  570. package/lib/templates/route-test.js +3 -7
  571. package/lib/templates/stateful-page.js +3 -7
  572. package/lib/templates/templates.js +19 -22
  573. package/lib/test_utils/locator_is_visible.js +3 -7
  574. package/lib/utils/assert-throws.js +3 -10
  575. package/lib/utils/base64.js +2 -7
  576. package/lib/utils/browser-creator.js +3 -7
  577. package/lib/utils/escape-url-params.js +2 -7
  578. package/lib/utils/exec.js +3 -7
  579. package/lib/utils/extract-fields-from-collection.js +9 -15
  580. package/lib/utils/format-external-url.js +1 -5
  581. package/lib/utils/import-path.js +6 -14
  582. package/lib/utils/input-wrapper.js +4 -9
  583. package/lib/utils/list-collections.js +5 -12
  584. package/lib/utils/make-slug.js +1 -5
  585. package/lib/utils/natural-numbers.js +1 -5
  586. package/lib/utils/prettier.js +4 -34
  587. package/lib/utils/question.js +3 -7
  588. package/lib/utils/render-attributes.js +3 -7
  589. package/lib/utils/sleep.js +1 -5
  590. package/lib/utils/translate.js +1 -5
  591. package/lib/utils/url-with-new-params.js +3 -10
  592. package/lib/utils/utils.js +13 -40
  593. package/lib/utils/walk.js +6 -10
  594. package/lib/vitest.config.js +22 -0
  595. package/package.json +23 -22
  596. package/remove-named-imports.js +65 -0
  597. package/src/add-collection.ts +3 -3
  598. package/src/add-jdd-component.ts +3 -3
  599. package/src/add-route.test.ts +38 -10
  600. package/src/add-route.ts +5 -5
  601. package/src/build.ts +46 -90
  602. package/src/cli.ts +14 -13
  603. package/src/components/components.ts +2 -2
  604. package/src/components/toggle-modal.ts +1 -1
  605. package/src/find-css-includes.ts +1 -1
  606. package/src/forms/controls/array.ts +9 -8
  607. package/src/forms/controls/autocomplete.ts +4 -4
  608. package/src/forms/controls/big-radio-group.ts +3 -3
  609. package/src/forms/controls/checkbox-group.ts +7 -6
  610. package/src/forms/controls/checkbox.ts +3 -3
  611. package/src/forms/controls/checkboxed-list-input.ts +4 -6
  612. package/src/forms/controls/collapsible-checkbox-group.ts +4 -7
  613. package/src/forms/controls/collapsible-field-group.ts +2 -2
  614. package/src/forms/controls/controls.ts +29 -29
  615. package/src/forms/controls/derived-frame.ts +4 -4
  616. package/src/forms/controls/derived.ts +3 -3
  617. package/src/forms/controls/dropdown.ts +6 -5
  618. package/src/forms/controls/editable-collection-subset.ts +4 -4
  619. package/src/forms/controls/field-group.ts +2 -4
  620. package/src/forms/controls/file.ts +4 -4
  621. package/src/forms/controls/form-control.ts +1 -1
  622. package/src/forms/controls/form-field-control.ts +3 -4
  623. package/src/forms/controls/form-header.ts +1 -3
  624. package/src/forms/controls/form-paragraph.ts +1 -1
  625. package/src/forms/controls/frame.ts +2 -2
  626. package/src/forms/controls/hidden-input.ts +5 -5
  627. package/src/forms/controls/html.ts +1 -4
  628. package/src/forms/controls/multiple-files.ts +24 -26
  629. package/src/forms/controls/multiple-photos.ts +4 -4
  630. package/src/forms/controls/number.ts +3 -6
  631. package/src/forms/controls/photo.ts +9 -8
  632. package/src/forms/controls/radio.ts +3 -3
  633. package/src/forms/controls/simple-input.ts +6 -6
  634. package/src/forms/controls/textarea.ts +4 -4
  635. package/src/forms/controls/tickable.ts +6 -6
  636. package/src/forms/fields/boolean.test.ts +2 -1
  637. package/src/forms/fields/boolean.ts +2 -2
  638. package/src/forms/fields/checkboxed-list.ts +2 -2
  639. package/src/forms/fields/collection-field.ts +2 -2
  640. package/src/forms/fields/email.test.ts +1 -1
  641. package/src/forms/fields/email.ts +1 -1
  642. package/src/forms/fields/enum-multiple.test.ts +1 -1
  643. package/src/forms/fields/enum-multiple.ts +2 -2
  644. package/src/forms/fields/enum.test.ts +1 -1
  645. package/src/forms/fields/enum.ts +2 -2
  646. package/src/forms/fields/existing-sealious-value.ts +1 -1
  647. package/src/forms/fields/field.ts +2 -18
  648. package/src/forms/fields/fields.ts +15 -0
  649. package/src/forms/fields/file.ts +8 -9
  650. package/src/forms/fields/multiple-files.ts +1 -1
  651. package/src/forms/fields/number.test.ts +2 -1
  652. package/src/forms/fields/number.ts +2 -2
  653. package/src/forms/fields/pick-from-list.test.ts +1 -1
  654. package/src/forms/fields/pick-from-list.ts +3 -3
  655. package/src/forms/fields/proxy-field.ts +1 -1
  656. package/src/forms/fields/regexp.test.ts +1 -1
  657. package/src/forms/fields/regexp.ts +2 -2
  658. package/src/forms/fields/reverse-single-reference.ts +1 -1
  659. package/src/forms/fields/simple-form-field.ts +2 -2
  660. package/src/forms/fields/structured-array.ts +2 -2
  661. package/src/forms/form-types.ts +30 -0
  662. package/src/forms/form.test.ts +16 -13
  663. package/src/forms/form.ts +11 -31
  664. package/src/forms/multiform.test.ts +33 -28
  665. package/src/forms/multiform.ts +4 -3
  666. package/src/generate-collections.ts +1 -1
  667. package/src/generate-components.ts +3 -1
  668. package/src/generate-routes.ts +5 -5
  669. package/src/index.ts +19 -17
  670. package/src/make-hidden-inputs.ts +3 -3
  671. package/src/mount.ts +5 -5
  672. package/src/page/list.ts +8 -6
  673. package/src/page/mountable-with-fields.ts +8 -4
  674. package/src/page/page.ts +3 -4
  675. package/src/page/props-parser.ts +2 -2
  676. package/src/page/sealious-list.ts +2 -2
  677. package/src/page/stateful-page.ts +3 -3
  678. package/src/templates/form.ts +1 -1
  679. package/src/templates/list.ts +6 -6
  680. package/src/templates/long-running-process.ts +1 -1
  681. package/src/templates/multiform.ts +1 -1
  682. package/src/templates/page.ts +1 -1
  683. package/src/templates/route-test.ts +1 -1
  684. package/src/templates/stateful-page.ts +1 -1
  685. package/src/templates/templates.ts +9 -9
  686. package/src/test_utils/locator_is_visible.ts +1 -1
  687. package/src/utils/extract-fields-from-collection.ts +1 -1
  688. package/src/utils/list-collections.ts +1 -1
  689. package/src/utils/prettier.ts +2 -2
  690. package/src/utils/render-attributes.ts +1 -1
  691. package/src/utils/utils.ts +12 -12
  692. package/src/vitest.config.ts +21 -0
  693. package/tsconfig.json +12 -5
  694. package/lib/find-scss-includes.js +0 -30
@@ -1,7 +1,7 @@
1
1
  import { Predicate, predicates } from "@sealcode/ts-predicates";
2
2
  import { Context } from "koa";
3
- import { t } from "../../utils/translate";
4
- import { FormDataValue } from "../form";
3
+ import { t } from "../../utils/translate.js";
4
+ import { FormDataValue } from "../form-types.js";
5
5
 
6
6
  export type FormFieldValidationResponse = { valid: boolean; message: string };
7
7
 
@@ -154,19 +154,3 @@ export abstract class FormField<
154
154
  return parsed;
155
155
  }
156
156
  }
157
-
158
- export * from "./simple-form-field";
159
- export * from "./checkboxed-list";
160
- export * from "./collection-field";
161
- export * from "./number";
162
- export * from "./pick-from-list";
163
- export * from "./regexp";
164
- export * from "./email";
165
- export * from "./enum";
166
- export * from "./boolean";
167
- export * from "./enum-multiple";
168
- export * from "./existing-sealious-value";
169
- export * from "./file";
170
- export * from "./multiple-files";
171
- export * from "./reverse-single-reference";
172
- export * from "./structured-array";
@@ -0,0 +1,15 @@
1
+ export * from "./simple-form-field.js";
2
+ export * from "./checkboxed-list.js";
3
+ export * from "./collection-field.js";
4
+ export * from "./number.js";
5
+ export * from "./pick-from-list.js";
6
+ export * from "./regexp.js";
7
+ export * from "./email.js";
8
+ export * from "./enum.js";
9
+ export * from "./boolean.js";
10
+ export * from "./enum-multiple.js";
11
+ export * from "./existing-sealious-value.js";
12
+ export * from "./file.js";
13
+ export * from "./multiple-files.js";
14
+ export * from "./reverse-single-reference.js";
15
+ export * from "./structured-array.js";
@@ -1,18 +1,17 @@
1
1
  import {
2
- hasField,
3
2
  hasFieldOfType,
4
3
  hasShape,
5
4
  is,
6
5
  predicates,
7
6
  } from "@sealcode/ts-predicates";
8
7
  import { Context } from "koa";
9
- import { File as SealiousFile } from "sealious";
10
- import { FormDataValue } from "../form";
11
- import { FieldParseResult, FormField } from "./field";
8
+ import Sealious from "sealious";
9
+ import { FormDataValue } from "../form-types.js";
10
+ import { FieldParseResult, FormField } from "./field.js";
12
11
 
13
12
  export type FileContainer = {
14
- old: SealiousFile | null;
15
- new: SealiousFile | null;
13
+ old: Sealious.File | null;
14
+ new: Sealious.File | null;
16
15
  };
17
16
 
18
17
  export class File<Required extends boolean> extends FormField<
@@ -25,7 +24,7 @@ export class File<Required extends boolean> extends FormField<
25
24
  ): Promise<FieldParseResult<FileContainer>> {
26
25
  let result;
27
26
  if (
28
- raw_value instanceof SealiousFile ||
27
+ raw_value instanceof Sealious.File ||
29
28
  (is(raw_value, predicates.object) &&
30
29
  hasShape(
31
30
  {
@@ -36,7 +35,7 @@ export class File<Required extends boolean> extends FormField<
36
35
  ) &&
37
36
  raw_value.id)
38
37
  ) {
39
- const file = await SealiousFile.fromID(
38
+ const file = await Sealious.File.fromID(
40
39
  ctx.$app,
41
40
  raw_value.id as string
42
41
  );
@@ -59,7 +58,7 @@ export class File<Required extends boolean> extends FormField<
59
58
  raw_value.old
60
59
  ) &&
61
60
  raw_value.old.id
62
- ? await SealiousFile.fromID(ctx.$app, raw_value.old.id)
61
+ ? await Sealious.File.fromID(ctx.$app, raw_value.old.id)
63
62
  : null;
64
63
  const new_file =
65
64
  hasFieldOfType(
@@ -1,6 +1,6 @@
1
1
  import { Context } from "koa";
2
2
  import { FieldTypes as SealiousFieldTypes } from "sealious";
3
- import { FormField } from "./field";
3
+ import { FormField } from "./field.js";
4
4
 
5
5
  export class MultipleFiles extends FormField<false> {
6
6
  constructor(
@@ -1,5 +1,6 @@
1
1
  import assert from "assert";
2
- import { Fields } from "../../index";
2
+ import * as Sealgen from "../../index.js";
3
+ const { Fields } = Sealgen;
3
4
 
4
5
  describe("number field", () => {
5
6
  const ctx = {} as any;
@@ -1,7 +1,7 @@
1
1
  import { is, predicates } from "@sealcode/ts-predicates";
2
2
  import { Context } from "koa";
3
- import { FormDataValue } from "../form";
4
- import { FieldParseResult, FormField } from "./field";
3
+ import { FormDataValue } from "../form-types.js";
4
+ import { FieldParseResult, FormField } from "./field.js";
5
5
 
6
6
  export class NumberField<
7
7
  DefaultValue extends number | null = number,
@@ -1,5 +1,5 @@
1
1
  import assert from "assert";
2
- import { Fields } from "../../index";
2
+ import { Fields } from "../../index.js";
3
3
 
4
4
  describe("pick-from-list field", () => {
5
5
  const ctx = {} as any;
@@ -1,8 +1,8 @@
1
1
  import { is, predicates } from "@sealcode/ts-predicates";
2
2
  import { Context } from "koa";
3
- import { DropdownOption } from "../controls/dropdown";
4
- import { FormFieldValidationResponse } from "./field";
5
- import { SimpleFormField } from "./simple-form-field";
3
+ import type { DropdownOption } from "../controls/dropdown.js";
4
+ import { FormFieldValidationResponse } from "./field.js";
5
+ import { SimpleFormField } from "./simple-form-field.js";
6
6
 
7
7
  export class PickFromListField<
8
8
  Required extends boolean
@@ -1,4 +1,4 @@
1
- import { FormField } from "./field";
1
+ import { FormField } from "./field.js";
2
2
 
3
3
  export class ProxyFormField<T> extends FormField<boolean, T> {
4
4
  constructor(
@@ -1,5 +1,5 @@
1
1
  import assert from "assert";
2
- import { Fields } from "../../index";
2
+ import { Fields } from "../../index.js";
3
3
 
4
4
  describe("regexp field", () => {
5
5
  const ctx = {} as any;
@@ -1,7 +1,7 @@
1
1
  import { is, predicates } from "@sealcode/ts-predicates";
2
2
  import { Context } from "koa";
3
- import { FormDataValue } from "../form";
4
- import { FieldParseResult, FormField } from "./field";
3
+ import { FormDataValue } from "../form-types.js";
4
+ import { FieldParseResult, FormField } from "./field.js";
5
5
 
6
6
  export class RegExpField<Required extends boolean> extends FormField<Required> {
7
7
  constructor(
@@ -1,4 +1,4 @@
1
- import { FormField } from "./field";
1
+ import { FormField } from "./field.js";
2
2
  import { FieldTypes as SealiousFields } from "sealious";
3
3
  import { Context } from "koa";
4
4
 
@@ -1,7 +1,7 @@
1
- import { FieldParseResult, FormField } from "./field";
2
- import { FormDataValue } from "../form";
1
+ import { FormDataValue } from "../form-types.js";
3
2
  import { Context } from "koa";
4
3
  import { predicates } from "@sealcode/ts-predicates";
4
+ import { FieldParseResult, FormField } from "./field.js";
5
5
 
6
6
  export class SimpleFormField<Required extends boolean> extends FormField<
7
7
  Required,
@@ -1,7 +1,7 @@
1
1
  import { Context } from "koa";
2
2
  import { Field, FieldsetInput, FieldsetOutput, FieldTypes } from "sealious";
3
- import { FormDataValue } from "../form";
4
- import { FormField } from "./field";
3
+ import { FormDataValue } from "../form-types.js";
4
+ import { FormField } from "./field.js";
5
5
 
6
6
  export class StructuredArrayField<
7
7
  Fields extends Record<string, Field>
@@ -0,0 +1,30 @@
1
+ import type { File as SealiousFile } from "sealious";
2
+ import type { FlatTemplatable } from "tempstream";
3
+ import type { FormField } from "./fields/field.js";
4
+
5
+ export type FormDataPrimitive = string | string[] | number | undefined;
6
+ export type FormDataValue =
7
+ | FormDataPrimitive
8
+ | Record<string, FormDataPrimitive>
9
+ | SealiousFile;
10
+
11
+ export type FieldValueType<F extends FormField> = F extends FormField<infer R>
12
+ ? R
13
+ : never;
14
+
15
+ export type FormFieldsToValues<
16
+ F extends Record<string, FormField<boolean, keyof F>>
17
+ > = {
18
+ [Property in keyof F]: FieldValueType<F[Property]>;
19
+ };
20
+
21
+ export type FormMessage = { type: "info" | "success" | "error"; text: string };
22
+
23
+ export type FormData<Fieldnames extends string = string> = {
24
+ raw_values: Record<Fieldnames, FormDataValue>;
25
+ messages: FormMessage[];
26
+ };
27
+
28
+ export type FormReaction =
29
+ | { action: "stay"; content: FlatTemplatable; messages?: FormMessage[] }
30
+ | { action: "redirect"; url: string; messages?: FormMessage[] };
@@ -1,12 +1,13 @@
1
1
  import Router from "@koa/router";
2
+ import { describe, it, beforeAll, afterAll, afterEach, beforeEach } from "vitest";
2
3
  import axios from "axios";
3
4
  import Koa, { BaseContext } from "koa";
4
5
  import { Page } from "playwright";
5
- import { Controls, Fields, Form, FormDataValue, Mountable } from "../index";
6
- import { mount } from "../mount";
7
- import { locator_is_visible } from "../test_utils/locator_is_visible";
8
- import { getBrowser } from "../utils/browser-creator";
9
- import { assertThrowsAsync } from "../utils/utils";
6
+ import { Controls, Fields, Form, FormDataValue, Mountable } from "../index.js";
7
+ import { mount } from "../mount.js";
8
+ import { locator_is_visible } from "../test_utils/locator_is_visible.js";
9
+ import { getBrowser } from "../utils/browser-creator.js";
10
+ import { assertThrowsAsync } from "../utils/utils.js";
10
11
 
11
12
  const fields = {
12
13
  text: new Fields.SimpleFormField(true),
@@ -34,7 +35,7 @@ export function form_factory(canAccessFun?: Mountable["canAccess"]): Form<typeof
34
35
  describe("form test", () => {
35
36
  let page: Page;
36
37
 
37
- before(async () => {
38
+ beforeAll(async () => {
38
39
  const browser = await getBrowser();
39
40
  const context = await browser.newContext();
40
41
  page = await context.newPage();
@@ -43,7 +44,7 @@ describe("form test", () => {
43
44
  describe("basic tests", async () => {
44
45
  let server: ReturnType<Koa["listen"]>;
45
46
 
46
- before(async () => {
47
+ beforeAll(async () => {
47
48
  const app = new Koa();
48
49
  const router = new Router();
49
50
 
@@ -53,7 +54,7 @@ describe("form test", () => {
53
54
  await page.goto("http://localhost:8080");
54
55
  });
55
56
 
56
- after(async () => {
57
+ afterAll(async () => {
57
58
  server.close();
58
59
  });
59
60
 
@@ -123,7 +124,7 @@ describe("form test", () => {
123
124
  const app = new Koa();
124
125
  const router = new Router();
125
126
 
126
- before(async () => {
127
+ beforeAll(async () => {
127
128
  mount(
128
129
  router,
129
130
  "/",
@@ -131,6 +132,7 @@ describe("form test", () => {
131
132
  async (
132
133
  ctx: Koa.Context
133
134
  ): Promise<{ canAccess: boolean; message: string }> => {
135
+ console.log("CAN ACCESS? FALSE");
134
136
  return { canAccess: false, message: "" };
135
137
  }
136
138
  ),
@@ -144,6 +146,7 @@ describe("form test", () => {
144
146
  });
145
147
 
146
148
  it("prevents the form from rendering", async () => {
149
+ console.log("CONSOLELOG TEST");
147
150
  const response = await page.goto("http://localhost:8080");
148
151
  if (response?.status() != 403) {
149
152
  throw new Error(
@@ -227,7 +230,7 @@ describe("form test", () => {
227
230
  describe("validation message", async () => {
228
231
  let server: ReturnType<Koa["listen"]>;
229
232
 
230
- before(async () => {
233
+ beforeAll(async () => {
231
234
  const app = new Koa();
232
235
  const router = new Router();
233
236
 
@@ -268,7 +271,7 @@ describe("form test", () => {
268
271
  await page.goto("http://localhost:8080");
269
272
  });
270
273
 
271
- after(async () => {
274
+ afterAll(async () => {
272
275
  server.close();
273
276
  });
274
277
 
@@ -293,7 +296,7 @@ describe("form test", () => {
293
296
  describe("field specific validation message", async () => {
294
297
  let server: ReturnType<Koa["listen"]>;
295
298
 
296
- before(async () => {
299
+ beforeAll(async () => {
297
300
  const app = new Koa();
298
301
  const router = new Router();
299
302
  const fields = {
@@ -325,7 +328,7 @@ describe("form test", () => {
325
328
  await page.goto("http://localhost:8080");
326
329
  });
327
330
 
328
- after(async () => {
331
+ afterAll(async () => {
329
332
  server.close();
330
333
  });
331
334
 
package/src/forms/form.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { Context } from "koa";
2
2
  import { randomUUID } from "crypto";
3
- import { File as SealiousFile } from "sealious";
3
+
4
4
  import Router from "@koa/router";
5
5
  import { FlatTemplatable, tempstream } from "tempstream";
6
6
  import {
@@ -9,39 +9,19 @@ import {
9
9
  is,
10
10
  predicates,
11
11
  } from "@sealcode/ts-predicates";
12
- import { FormField } from "./fields/field";
12
+
13
+ import {
14
+ FormData,
15
+ FormDataValue,
16
+ FormMessage,
17
+ FormReaction,
18
+ } from "./form-types.js";
19
+
13
20
  import {
14
21
  Fields,
15
22
  MountableWithFields,
16
23
  PageErrorMessage,
17
- } from "../page/mountable-with-fields";
18
-
19
- export type FormDataPrimitive = string | string[] | number | undefined;
20
- export type FormDataValue =
21
- | FormDataPrimitive
22
- | Record<string, FormDataPrimitive>
23
- | SealiousFile;
24
-
25
- export type FieldValueType<F extends FormField> = F extends FormField<infer R>
26
- ? R
27
- : never;
28
-
29
- export type FormFieldsToValues<
30
- F extends Record<string, FormField<boolean, keyof F>>
31
- > = {
32
- [Property in keyof F]: FieldValueType<F[Property]>;
33
- };
34
-
35
- export type FormMessage = { type: "info" | "success" | "error"; text: string };
36
-
37
- export type FormData<Fieldnames extends string = string> = {
38
- raw_values: Record<Fieldnames, FormDataValue>;
39
- messages: FormMessage[];
40
- };
41
-
42
- export type FormReaction =
43
- | { action: "stay"; content: FlatTemplatable; messages?: FormMessage[] }
44
- | { action: "redirect"; url: string; messages?: FormMessage[] };
24
+ } from "../page/mountable-with-fields.js";
45
25
 
46
26
  export abstract class Form<
47
27
  F extends Fields,
@@ -51,7 +31,7 @@ export abstract class Form<
51
31
  submitButtonText = "Wyślij";
52
32
  action = "./";
53
33
  useTurbo = true;
54
- form_id = randomUUID();
34
+ form_id = randomUUID() as string;
55
35
 
56
36
  async canAccess(
57
37
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -4,21 +4,26 @@ import axios from "axios";
4
4
  import { Browser, firefox, Page } from "playwright";
5
5
  import { expect } from "@playwright/test";
6
6
  import { FlatTemplatable, tempstream } from "tempstream";
7
- import { Controls, Fields, Form, Mountable } from "..";
8
- import { mount } from "../mount";
9
- import { FormDataValue, FormMessage } from "./form";
10
- import { Multiform } from "./multiform";
11
- import { assertThrowsAsync } from "../utils/utils";
12
- import { form_factory } from "./form.test";
13
- import { getBrowser } from "../utils/browser-creator";
7
+ import { mount } from "../mount.js";
8
+ import { Multiform } from "./multiform.js";
9
+ import { assertThrowsAsync } from "../utils/utils.js";
10
+ import { form_factory } from "./form.test.js";
11
+ import { getBrowser } from "../utils/browser-creator.js";
12
+ import { SimpleFormField } from "./fields/simple-form-field.js";
13
+ import { Form } from "./form.js";
14
+ import { FormHeader } from "./controls/form-header.js";
15
+ import { SimpleInput } from "./controls/simple-input.js";
16
+ import { Mountable } from "../page/mountable.js";
17
+ import { FormDataValue, FormMessage } from "./form-types.js";
18
+ import { EmailField } from "./fields/email.js";
14
19
 
15
20
  const fields1 = {
16
- email: new Fields.SimpleFormField(true),
21
+ email: new SimpleFormField(true),
17
22
  };
18
23
 
19
24
  const form1 = new (class extends Form<typeof fields1, void> {
20
25
  defaultSuccessMessage = "Form1 done!";
21
- controls = [new Controls.FormHeader("form1"), new Controls.SimpleInput(fields1.email)];
26
+ controls = [new FormHeader("form1"), new SimpleInput(fields1.email)];
22
27
  fields = fields1;
23
28
  onSubmit() {
24
29
  return;
@@ -26,12 +31,12 @@ const form1 = new (class extends Form<typeof fields1, void> {
26
31
  })();
27
32
 
28
33
  const fields2 = {
29
- name: new Fields.SimpleFormField(true),
34
+ name: new SimpleFormField(true),
30
35
  };
31
36
 
32
37
  const form2 = new (class extends Form<Record<never, unknown>, void> {
33
38
  defaultSuccessMessage = "Form2 done!";
34
- controls = [new Controls.FormHeader("form2"), new Controls.SimpleInput(fields2.name)];
39
+ controls = [new FormHeader("form2"), new SimpleInput(fields2.name)];
35
40
  fields = fields2;
36
41
  onSubmit() {
37
42
  return;
@@ -68,7 +73,7 @@ function multiform_factory(
68
73
  async function tests(js_enabled: boolean) {
69
74
  let page: Page;
70
75
 
71
- before(async () => {
76
+ beforeAll(async () => {
72
77
  const browser = await getBrowser();
73
78
  const context = await browser.newContext({
74
79
  javaScriptEnabled: js_enabled,
@@ -118,7 +123,7 @@ async function individual_field_validation_e2e_tests(javaScriptEnabled: boolean)
118
123
  let browser: Browser;
119
124
  let page: Page;
120
125
 
121
- before(async () => {
126
+ beforeAll(async () => {
122
127
  browser = await getBrowser();
123
128
  const context = await browser.newContext({
124
129
  javaScriptEnabled,
@@ -148,7 +153,7 @@ describe("multiform test", () => {
148
153
  describe("basic tests", async () => {
149
154
  let server: ReturnType<Koa["listen"]>;
150
155
 
151
- before(async () => {
156
+ beforeAll(async () => {
152
157
  const app = new Koa();
153
158
  const router = new Router();
154
159
 
@@ -189,7 +194,7 @@ describe("multiform test", () => {
189
194
  server = app.listen(8080);
190
195
  });
191
196
 
192
- after(() => {
197
+ afterAll(() => {
193
198
  server.close();
194
199
  });
195
200
 
@@ -202,7 +207,7 @@ describe("multiform test", () => {
202
207
  let server: ReturnType<Koa["listen"]>;
203
208
 
204
209
  describe("allow access to both forms when both canAccess return true", async () => {
205
- before(async () => {
210
+ beforeAll(async () => {
206
211
  const app = new Koa();
207
212
  const router = new Router();
208
213
 
@@ -230,7 +235,7 @@ describe("multiform test", () => {
230
235
  page = await context.newPage();
231
236
  });
232
237
 
233
- after(async () => {
238
+ afterAll(async () => {
234
239
  server.close();
235
240
  });
236
241
 
@@ -263,7 +268,7 @@ describe("multiform test", () => {
263
268
  });
264
269
 
265
270
  describe("deny access to both forms", async () => {
266
- before(async () => {
271
+ beforeAll(async () => {
267
272
  const app = new Koa();
268
273
  const router = new Router();
269
274
 
@@ -291,7 +296,7 @@ describe("multiform test", () => {
291
296
  page = await context.newPage();
292
297
  });
293
298
 
294
- after(async () => {
299
+ afterAll(async () => {
295
300
  server.close();
296
301
  });
297
302
 
@@ -322,7 +327,7 @@ describe("multiform test", () => {
322
327
  });
323
328
 
324
329
  describe("allow access to one form, deny to the other", async () => {
325
- before(async () => {
330
+ beforeAll(async () => {
326
331
  const app = new Koa();
327
332
  const router = new Router();
328
333
 
@@ -350,7 +355,7 @@ describe("multiform test", () => {
350
355
  page = await context.newPage();
351
356
  });
352
357
 
353
- after(async () => {
358
+ afterAll(async () => {
354
359
  server.close();
355
360
  });
356
361
 
@@ -405,7 +410,7 @@ describe("multiform test", () => {
405
410
  describe("basic tests", async () => {
406
411
  let server: ReturnType<Koa["listen"]>;
407
412
 
408
- before(async () => {
413
+ beforeAll(async () => {
409
414
  const app = new Koa();
410
415
  const router = new Router();
411
416
 
@@ -419,7 +424,7 @@ describe("multiform test", () => {
419
424
  fields = fields1;
420
425
  submitButtonText = "Submit";
421
426
  controls = [
422
- new Controls.SimpleInput(fields1.email, {
427
+ new SimpleInput(fields1.email, {
423
428
  label: "This is a test:",
424
429
  type: "text",
425
430
  }),
@@ -466,7 +471,7 @@ describe("multiform test", () => {
466
471
  server = app.listen(8080);
467
472
  });
468
473
 
469
- after(async () => {
474
+ afterAll(async () => {
470
475
  server.close();
471
476
  });
472
477
 
@@ -477,11 +482,11 @@ describe("multiform test", () => {
477
482
  describe("field specific validation", async () => {
478
483
  let server: ReturnType<Koa["listen"]>;
479
484
 
480
- before(async () => {
485
+ beforeAll(async () => {
481
486
  const app = new Koa();
482
487
  const router = new Router();
483
488
  const fields = {
484
- text: new Fields.EmailField(true),
489
+ text: new EmailField(true),
485
490
  };
486
491
 
487
492
  mount(
@@ -494,7 +499,7 @@ describe("multiform test", () => {
494
499
  fields = fields;
495
500
  submitButtonText = "Submit";
496
501
  controls = [
497
- new Controls.SimpleInput(fields.text, {
502
+ new SimpleInput(fields.text, {
498
503
  label: "This is a test:",
499
504
  type: "text",
500
505
  }),
@@ -529,7 +534,7 @@ describe("multiform test", () => {
529
534
  server = app.listen(8080);
530
535
  });
531
536
 
532
- after(async () => {
537
+ afterAll(async () => {
533
538
  server.close();
534
539
  });
535
540
 
@@ -2,9 +2,10 @@ import Router from "@koa/router";
2
2
  import { is, predicates } from "@sealcode/ts-predicates";
3
3
  import { Context } from "koa";
4
4
  import { FlatTemplatable, tempstream } from "tempstream";
5
- import { Form, FormDataValue, FormMessage } from "..";
6
- import { Fields, MountableWithFields } from "../page/mountable-with-fields";
7
- import { attribute } from "../sanitize";
5
+ import { Fields, MountableWithFields } from "../page/mountable-with-fields.js";
6
+ import { attribute } from "../sanitize.js";
7
+ import type { FormDataValue, FormMessage, FormData } from "./form-types.js";
8
+ import { Form } from "./form.js";
8
9
 
9
10
  const FIELD_PREFIX_SEPARATOR = "___";
10
11
 
@@ -2,7 +2,7 @@ import _locreq from "locreq";
2
2
  import * as prettier from "prettier";
3
3
  import { promises as fs } from "fs";
4
4
  import { assertType, predicates } from "@sealcode/ts-predicates";
5
- import { getPrettierConfig } from "./utils/prettier";
5
+ import { getPrettierConfig } from "./utils/prettier.js";
6
6
 
7
7
  const target_locreq = _locreq(process.cwd());
8
8
 
@@ -2,15 +2,17 @@ import _locreq from "locreq";
2
2
  import * as prettier from "prettier";
3
3
  import { promises as fs } from "fs";
4
4
  import { assertType, predicates } from "@sealcode/ts-predicates";
5
- import { getPrettierConfig } from "./utils/prettier";
5
+ import { getPrettierConfig } from "./utils/prettier.js";
6
6
  import recursive from "recursive-readdir";
7
7
  import path from "path";
8
8
  import { toKebabCase, toPascalCase } from "js-convert-case";
9
+ import { mkdir } from "fs/promises";
9
10
 
10
11
  const target_locreq = _locreq(process.cwd());
11
12
 
12
13
  export async function generateComponents(): Promise<void> {
13
14
  const components_dir = target_locreq.resolve("src/back/jdd-components");
15
+ await mkdir(components_dir, { recursive: true });
14
16
  const component_names = (await recursive(components_dir)).filter((c) =>
15
17
  c.endsWith(".jdd.tsx")
16
18
  );
@@ -2,12 +2,12 @@ import { promises as fs } from "fs";
2
2
  import * as prettier from "prettier";
3
3
  import { relative } from "path";
4
4
  import _locreq from "locreq";
5
- import { walkDir } from "./utils/walk";
6
- import { importPath } from "./utils/import-path";
5
+ import { walkDir } from "./utils/walk.js";
6
+ import { importPath } from "./utils/import-path.js";
7
7
  import { assertType, predicates } from "@sealcode/ts-predicates";
8
- import { unescape_url_params } from "./utils/escape-url-params";
9
- import { getPrettierConfig } from "./utils/prettier";
10
- import { Templates } from "./templates/templates";
8
+ import { unescape_url_params } from "./utils/escape-url-params.js";
9
+ import { getPrettierConfig } from "./utils/prettier.js";
10
+ import { Templates } from "./templates/templates.js";
11
11
 
12
12
  const target_locreq = _locreq(process.cwd());
13
13