@sealcode/sealgen 0.11.8 → 0.12.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (539) hide show
  1. package/@types/components/components.d.ts +2 -2
  2. package/@types/components/toggle-modal.d.ts +1 -1
  3. package/@types/example.test.d.ts +1 -0
  4. package/@types/forms/controls/array.d.ts +7 -7
  5. package/@types/forms/controls/autocomplete.d.ts +3 -3
  6. package/@types/forms/controls/big-radio-group.d.ts +3 -3
  7. package/@types/forms/controls/checkbox-group.d.ts +4 -4
  8. package/@types/forms/controls/checkbox.d.ts +3 -3
  9. package/@types/forms/controls/checkboxed-list-input.d.ts +4 -4
  10. package/@types/forms/controls/collapsible-checkbox-group.d.ts +3 -3
  11. package/@types/forms/controls/collapsible-field-group.d.ts +2 -2
  12. package/@types/forms/controls/controls.d.ts +29 -29
  13. package/@types/forms/controls/derived-frame.d.ts +6 -6
  14. package/@types/forms/controls/derived.d.ts +3 -3
  15. package/@types/forms/controls/dropdown.d.ts +4 -4
  16. package/@types/forms/controls/editable-collection-subset.d.ts +3 -3
  17. package/@types/forms/controls/field-group.d.ts +2 -2
  18. package/@types/forms/controls/file.d.ts +5 -5
  19. package/@types/forms/controls/form-control.d.ts +2 -2
  20. package/@types/forms/controls/form-field-control.d.ts +3 -3
  21. package/@types/forms/controls/form-header.d.ts +2 -2
  22. package/@types/forms/controls/form-paragraph.d.ts +1 -1
  23. package/@types/forms/controls/frame.d.ts +1 -1
  24. package/@types/forms/controls/hidden-input.d.ts +3 -3
  25. package/@types/forms/controls/html.d.ts +2 -2
  26. package/@types/forms/controls/multiple-files.d.ts +5 -5
  27. package/@types/forms/controls/multiple-photos.d.ts +5 -5
  28. package/@types/forms/controls/number.d.ts +3 -3
  29. package/@types/forms/controls/photo.d.ts +7 -7
  30. package/@types/forms/controls/radio.d.ts +3 -3
  31. package/@types/forms/controls/reverse-single-reference.d.ts +1 -0
  32. package/@types/forms/controls/simple-input.d.ts +4 -4
  33. package/@types/forms/controls/textarea.d.ts +4 -4
  34. package/@types/forms/controls/tickable.d.ts +4 -4
  35. package/@types/forms/fields/boolean.d.ts +2 -2
  36. package/@types/forms/fields/checkboxed-list.d.ts +2 -2
  37. package/@types/forms/fields/collection-field.d.ts +2 -2
  38. package/@types/forms/fields/email.d.ts +1 -1
  39. package/@types/forms/fields/enum-multiple.d.ts +2 -2
  40. package/@types/forms/fields/enum.d.ts +2 -2
  41. package/@types/forms/fields/existing-sealious-value.d.ts +1 -1
  42. package/@types/forms/fields/field.d.ts +16 -16
  43. package/@types/forms/fields/file.d.ts +2 -2
  44. package/@types/forms/fields/multiple-files.d.ts +1 -1
  45. package/@types/forms/fields/number.d.ts +2 -2
  46. package/@types/forms/fields/pick-from-list.d.ts +3 -3
  47. package/@types/forms/fields/proxy-field.d.ts +1 -1
  48. package/@types/forms/fields/regexp.d.ts +2 -2
  49. package/@types/forms/fields/reverse-single-reference.d.ts +1 -1
  50. package/@types/forms/fields/simple-form-field.d.ts +2 -2
  51. package/@types/forms/fields/structured-array.d.ts +2 -2
  52. package/@types/forms/form.d.ts +3 -3
  53. package/@types/forms/form.test.d.ts +1 -1
  54. package/@types/forms/multiform.d.ts +4 -4
  55. package/@types/index.d.ts +17 -17
  56. package/@types/make-hidden-inputs.d.ts +2 -2
  57. package/@types/mount.d.ts +2 -2
  58. package/@types/page/list.d.ts +4 -4
  59. package/@types/page/mountable-with-fields.d.ts +4 -4
  60. package/@types/page/mountable.d.ts +1 -1
  61. package/@types/page/page.d.ts +4 -4
  62. package/@types/page/props-parser.d.ts +2 -2
  63. package/@types/page/sealious-list.d.ts +1 -1
  64. package/@types/page/stateful-page.d.ts +3 -3
  65. package/@types/remove-named-imports.d.ts +4 -0
  66. package/@types/run.d.ts +1 -0
  67. package/@types/src/add-collection.d.ts +1 -0
  68. package/@types/src/add-jdd-component.d.ts +1 -0
  69. package/@types/src/add-route.d.ts +3 -0
  70. package/@types/src/add-route.test.d.ts +1 -0
  71. package/@types/src/build.d.ts +3 -0
  72. package/@types/src/cli.d.ts +2 -0
  73. package/@types/src/components/components.d.ts +2 -0
  74. package/@types/src/components/tabs.d.ts +2 -0
  75. package/@types/src/components/toggle-modal.d.ts +7 -0
  76. package/@types/src/example.test.d.ts +1 -0
  77. package/@types/src/find-css-includes.d.ts +1 -0
  78. package/@types/src/forms/controls/array.d.ts +35 -0
  79. package/@types/src/forms/controls/autocomplete.d.ts +22 -0
  80. package/@types/src/forms/controls/big-radio-group.d.ts +14 -0
  81. package/@types/src/forms/controls/checkbox-group.d.ts +22 -0
  82. package/@types/src/forms/controls/checkbox.d.ts +15 -0
  83. package/@types/src/forms/controls/checkboxed-list-input.d.ts +14 -0
  84. package/@types/src/forms/controls/collapsible-checkbox-group.d.ts +11 -0
  85. package/@types/src/forms/controls/collapsible-field-group.d.ts +21 -0
  86. package/@types/src/forms/controls/controls.d.ts +29 -0
  87. package/@types/src/forms/controls/derived-frame.d.ts +22 -0
  88. package/@types/src/forms/controls/derived.d.ts +13 -0
  89. package/@types/src/forms/controls/dropdown.d.ts +30 -0
  90. package/@types/src/forms/controls/editable-collection-subset.d.ts +20 -0
  91. package/@types/src/forms/controls/field-group.d.ts +23 -0
  92. package/@types/src/forms/controls/file.d.ts +16 -0
  93. package/@types/src/forms/controls/form-control.d.ts +19 -0
  94. package/@types/src/forms/controls/form-field-control.d.ts +13 -0
  95. package/@types/src/forms/controls/form-header.d.ts +8 -0
  96. package/@types/src/forms/controls/form-paragraph.d.ts +7 -0
  97. package/@types/src/forms/controls/frame.d.ts +17 -0
  98. package/@types/src/forms/controls/hidden-input.d.ts +9 -0
  99. package/@types/src/forms/controls/html.d.ts +11 -0
  100. package/@types/src/forms/controls/multiple-files.d.ts +40 -0
  101. package/@types/src/forms/controls/multiple-photos.d.ts +18 -0
  102. package/@types/src/forms/controls/number.d.ts +13 -0
  103. package/@types/src/forms/controls/photo.d.ts +22 -0
  104. package/@types/src/forms/controls/radio.d.ts +16 -0
  105. package/@types/src/forms/controls/reverse-single-reference.d.ts +1 -0
  106. package/@types/src/forms/controls/simple-input.d.ts +32 -0
  107. package/@types/src/forms/controls/textarea.d.ts +25 -0
  108. package/@types/src/forms/controls/tickable.d.ts +24 -0
  109. package/@types/src/forms/fields/boolean.d.ts +17 -0
  110. package/@types/src/forms/fields/boolean.test.d.ts +1 -0
  111. package/@types/src/forms/fields/checkboxed-list.d.ts +20 -0
  112. package/@types/src/forms/fields/collection-field.d.ts +15 -0
  113. package/@types/src/forms/fields/email.d.ts +7 -0
  114. package/@types/src/forms/fields/email.test.d.ts +1 -0
  115. package/@types/src/forms/fields/enum-multiple.d.ts +18 -0
  116. package/@types/src/forms/fields/enum-multiple.test.d.ts +1 -0
  117. package/@types/src/forms/fields/enum.d.ts +18 -0
  118. package/@types/src/forms/fields/enum.test.d.ts +1 -0
  119. package/@types/src/forms/fields/existing-sealious-value.d.ts +6 -0
  120. package/@types/src/forms/fields/field.d.ts +43 -0
  121. package/@types/src/forms/fields/fields.d.ts +15 -0
  122. package/@types/src/forms/fields/file.d.ts +16 -0
  123. package/@types/src/forms/fields/multiple-files.d.ts +14 -0
  124. package/@types/src/forms/fields/number.d.ts +23 -0
  125. package/@types/src/forms/fields/number.test.d.ts +1 -0
  126. package/@types/src/forms/fields/pick-from-list.d.ts +14 -0
  127. package/@types/src/forms/fields/pick-from-list.test.d.ts +1 -0
  128. package/@types/src/forms/fields/proxy-field.d.ts +13 -0
  129. package/@types/src/forms/fields/regexp.d.ts +16 -0
  130. package/@types/src/forms/fields/regexp.test.d.ts +1 -0
  131. package/@types/src/forms/fields/reverse-single-reference.d.ts +13 -0
  132. package/@types/src/forms/fields/simple-form-field.d.ts +9 -0
  133. package/@types/src/forms/fields/structured-array.d.ts +14 -0
  134. package/@types/src/forms/form-types.d.ts +26 -0
  135. package/@types/src/forms/form.d.ts +31 -0
  136. package/@types/src/forms/form.test.d.ts +6 -0
  137. package/@types/src/forms/multiform.d.ts +24 -0
  138. package/@types/src/forms/multiform.test.d.ts +1 -0
  139. package/@types/src/generate-collections.d.ts +2 -0
  140. package/@types/src/generate-components.d.ts +1 -0
  141. package/@types/src/generate-routes.d.ts +1 -0
  142. package/@types/src/hehe.test.d.ts +1 -0
  143. package/@types/src/index.d.ts +27 -0
  144. package/@types/src/make-env.d.ts +1 -0
  145. package/@types/src/make-hidden-inputs.d.ts +5 -0
  146. package/@types/src/mount.d.ts +6 -0
  147. package/@types/src/notifier.d.ts +1 -0
  148. package/@types/src/page/access-control.d.ts +6 -0
  149. package/@types/src/page/default-list-filters.d.ts +6 -0
  150. package/@types/src/page/list.d.ts +47 -0
  151. package/@types/src/page/mountable-with-fields.d.ts +36 -0
  152. package/@types/src/page/mountable.d.ts +11 -0
  153. package/@types/src/page/page.d.ts +19 -0
  154. package/@types/src/page/props-parser.d.ts +16 -0
  155. package/@types/src/page/sealious-list.d.ts +19 -0
  156. package/@types/src/page/stateful-page.d.ts +34 -0
  157. package/@types/src/run.d.ts +1 -0
  158. package/@types/src/sample-index.d.ts +1 -0
  159. package/@types/src/sample-lib.d.ts +3 -0
  160. package/@types/src/sanitize.d.ts +1 -0
  161. package/@types/src/templates/collection.d.ts +1 -0
  162. package/@types/src/templates/form.d.ts +1 -0
  163. package/@types/src/templates/jdd-component.d.ts +1 -0
  164. package/@types/src/templates/list.d.ts +1 -0
  165. package/@types/src/templates/long-running-process.d.ts +1 -0
  166. package/@types/src/templates/multiform.d.ts +1 -0
  167. package/@types/src/templates/page.d.ts +1 -0
  168. package/@types/src/templates/post.d.ts +1 -0
  169. package/@types/src/templates/redirect.d.ts +1 -0
  170. package/@types/src/templates/route-test.d.ts +1 -0
  171. package/@types/src/templates/stateful-page.d.ts +1 -0
  172. package/@types/src/templates/templates.d.ts +19 -0
  173. package/@types/src/test_utils/locator_is_visible.d.ts +2 -0
  174. package/@types/src/utils/assert-throws.d.ts +1 -0
  175. package/@types/src/utils/base64.d.ts +2 -0
  176. package/@types/src/utils/browser-creator.d.ts +1 -0
  177. package/@types/src/utils/escape-url-params.d.ts +2 -0
  178. package/@types/src/utils/exec.d.ts +5 -0
  179. package/@types/src/utils/extract-fields-from-collection.d.ts +4 -0
  180. package/@types/src/utils/format-external-url.d.ts +1 -0
  181. package/@types/src/utils/import-path.d.ts +2 -0
  182. package/@types/src/utils/input-wrapper.d.ts +5 -0
  183. package/@types/src/utils/list-collections.d.ts +1 -0
  184. package/@types/src/utils/make-slug.d.ts +1 -0
  185. package/@types/src/utils/natural-numbers.d.ts +1 -0
  186. package/@types/src/utils/prettier.d.ts +2 -0
  187. package/@types/src/utils/question.d.ts +1 -0
  188. package/@types/src/utils/render-attributes.d.ts +1 -0
  189. package/@types/src/utils/sleep.d.ts +1 -0
  190. package/@types/src/utils/translate.d.ts +3 -0
  191. package/@types/src/utils/url-with-new-params.d.ts +2 -0
  192. package/@types/src/utils/utils.d.ts +16 -0
  193. package/@types/src/utils/walk.d.ts +1 -0
  194. package/@types/src/vitest.config.d.ts +2 -0
  195. package/@types/templates/templates.d.ts +8 -8
  196. package/@types/utils/input-wrapper.d.ts +1 -1
  197. package/@types/utils/utils.d.ts +12 -12
  198. package/@types/vitest.config.d.ts +2 -0
  199. package/build.js +18 -0
  200. package/dist/add-collection.js +31 -0
  201. package/dist/add-jdd-component.js +42 -0
  202. package/dist/add-route.js +67 -0
  203. package/dist/add-route.test.js +90 -0
  204. package/dist/back/routes/sample.page.js +17 -0
  205. package/dist/back/routes/sample.test.js +39 -0
  206. package/dist/build.js +149 -0
  207. package/dist/cli.js +35 -0
  208. package/dist/components/components.js +3 -0
  209. package/{lib → dist}/components/tabs.js +32 -23
  210. package/{lib → dist}/components/toggle-modal.js +9 -10
  211. package/dist/example.test.js +5 -0
  212. package/dist/find-css-includes.js +27 -0
  213. package/dist/forms/controls/array.js +171 -0
  214. package/dist/forms/controls/autocomplete.js +34 -0
  215. package/dist/forms/controls/big-radio-group.js +38 -0
  216. package/dist/forms/controls/checkbox-group.js +46 -0
  217. package/dist/forms/controls/checkbox.js +28 -0
  218. package/dist/forms/controls/checkboxed-list-input.js +44 -0
  219. package/dist/forms/controls/collapsible-checkbox-group.js +16 -0
  220. package/{lib → dist}/forms/controls/collapsible-field-group.js +32 -27
  221. package/dist/forms/controls/controls.js +44 -0
  222. package/dist/forms/controls/derived-frame.js +77 -0
  223. package/dist/forms/controls/derived.js +81 -0
  224. package/dist/forms/controls/dropdown.js +62 -0
  225. package/dist/forms/controls/editable-collection-subset.js +82 -0
  226. package/dist/forms/controls/field-group.js +52 -0
  227. package/dist/forms/controls/file.js +38 -0
  228. package/dist/forms/controls/form-control.js +19 -0
  229. package/dist/forms/controls/form-field-control.js +12 -0
  230. package/dist/forms/controls/form-header.js +17 -0
  231. package/dist/forms/controls/form-paragraph.js +15 -0
  232. package/dist/forms/controls/frame.js +22 -0
  233. package/dist/forms/controls/hidden-input.js +17 -0
  234. package/dist/forms/controls/html.js +23 -0
  235. package/dist/forms/controls/multiple-files.js +190 -0
  236. package/dist/forms/controls/multiple-photos.js +36 -0
  237. package/dist/forms/controls/number.js +24 -0
  238. package/dist/forms/controls/photo.js +56 -0
  239. package/dist/forms/controls/radio.js +28 -0
  240. package/dist/forms/controls/reverse-single-reference.js +1 -0
  241. package/dist/forms/controls/simple-input.js +85 -0
  242. package/dist/forms/controls/textarea.js +40 -0
  243. package/dist/forms/controls/tickable.js +72 -0
  244. package/dist/forms/fields/boolean.js +49 -0
  245. package/dist/forms/fields/boolean.test.js +33 -0
  246. package/dist/forms/fields/checkboxed-list.js +49 -0
  247. package/dist/forms/fields/collection-field.js +47 -0
  248. package/dist/forms/fields/email.js +19 -0
  249. package/dist/forms/fields/email.test.js +20 -0
  250. package/dist/forms/fields/enum-multiple.js +47 -0
  251. package/dist/forms/fields/enum-multiple.test.js +27 -0
  252. package/dist/forms/fields/enum.js +41 -0
  253. package/dist/forms/fields/enum.test.js +21 -0
  254. package/dist/forms/fields/existing-sealious-value.js +21 -0
  255. package/dist/forms/fields/field.js +82 -0
  256. package/dist/forms/fields/fields.js +16 -0
  257. package/dist/forms/fields/file.js +63 -0
  258. package/dist/forms/fields/multiple-files.js +18 -0
  259. package/dist/forms/fields/number.js +42 -0
  260. package/dist/forms/fields/number.test.js +31 -0
  261. package/dist/forms/fields/pick-from-list.js +34 -0
  262. package/dist/forms/fields/pick-from-list.test.js +17 -0
  263. package/dist/forms/fields/proxy-field.js +23 -0
  264. package/dist/forms/fields/regexp.js +42 -0
  265. package/dist/forms/fields/regexp.test.js +21 -0
  266. package/dist/forms/fields/reverse-single-reference.js +17 -0
  267. package/dist/forms/fields/simple-form-field.js +22 -0
  268. package/dist/forms/fields/structured-array.js +21 -0
  269. package/dist/forms/form-types.js +1 -0
  270. package/dist/forms/form.js +203 -0
  271. package/dist/forms/form.test.js +316 -0
  272. package/dist/forms/multiform.js +200 -0
  273. package/dist/forms/multiform.test.js +486 -0
  274. package/dist/generate-collections.js +65 -0
  275. package/dist/generate-components.js +41 -0
  276. package/dist/generate-routes.js +90 -0
  277. package/dist/hehe.test.js +7 -0
  278. package/dist/index.js +26 -0
  279. package/dist/make-env.js +17 -0
  280. package/dist/make-hidden-inputs.js +15 -0
  281. package/dist/mount.js +66 -0
  282. package/dist/notifier.js +21 -0
  283. package/dist/page/access-control.js +19 -0
  284. package/dist/page/default-list-filters.js +46 -0
  285. package/dist/page/list.js +199 -0
  286. package/dist/page/mountable-with-fields.js +106 -0
  287. package/dist/page/mountable.js +9 -0
  288. package/dist/page/page.js +31 -0
  289. package/dist/page/props-parser.js +24 -0
  290. package/dist/page/sealious-list.js +61 -0
  291. package/dist/page/stateful-page.js +123 -0
  292. package/dist/run.js +1 -0
  293. package/dist/sample-index.js +3 -0
  294. package/dist/sample-lib.js +9 -0
  295. package/dist/sanitize.js +10 -0
  296. package/dist/templates/collection.js +15 -0
  297. package/{lib → dist}/templates/form.js +8 -9
  298. package/dist/templates/jdd-component.js +44 -0
  299. package/{lib → dist}/templates/list.js +47 -49
  300. package/{lib → dist}/templates/long-running-process.js +7 -8
  301. package/{lib → dist}/templates/multiform.js +7 -8
  302. package/{lib → dist}/templates/page.js +7 -8
  303. package/{lib → dist}/templates/post.js +5 -6
  304. package/{lib → dist}/templates/redirect.js +5 -6
  305. package/{lib → dist}/templates/route-test.js +12 -9
  306. package/{lib → dist}/templates/stateful-page.js +7 -8
  307. package/dist/templates/templates.js +24 -0
  308. package/dist/test_utils/locator_is_visible.js +14 -0
  309. package/dist/utils/assert-throws.js +18 -0
  310. package/dist/utils/base64.js +11 -0
  311. package/dist/utils/browser-creator.js +11 -0
  312. package/dist/utils/escape-url-params.js +11 -0
  313. package/dist/utils/exec.js +29 -0
  314. package/dist/utils/extract-fields-from-collection.js +33 -0
  315. package/dist/utils/format-external-url.js +11 -0
  316. package/dist/utils/import-path.js +23 -0
  317. package/dist/utils/input-wrapper.js +19 -0
  318. package/dist/utils/list-collections.js +13 -0
  319. package/dist/utils/make-slug.js +7 -0
  320. package/dist/utils/natural-numbers.js +9 -0
  321. package/dist/utils/prettier.js +15 -0
  322. package/dist/utils/question.js +20 -0
  323. package/dist/utils/render-attributes.js +18 -0
  324. package/dist/utils/sleep.js +7 -0
  325. package/dist/utils/translate.js +12 -0
  326. package/dist/utils/url-with-new-params.js +8 -0
  327. package/dist/utils/utils.js +28 -0
  328. package/dist/utils/walk.js +23 -0
  329. package/dist/vitest.config.js +23 -0
  330. package/package.json +22 -21
  331. package/remove-named-imports.js +65 -0
  332. package/src/add-collection.ts +3 -3
  333. package/src/add-jdd-component.ts +3 -3
  334. package/src/add-route.test.ts +38 -10
  335. package/src/add-route.ts +5 -5
  336. package/src/build.ts +16 -90
  337. package/src/cli.ts +14 -13
  338. package/src/components/components.ts +2 -2
  339. package/src/components/toggle-modal.ts +1 -1
  340. package/src/find-css-includes.ts +1 -1
  341. package/src/forms/controls/array.ts +9 -8
  342. package/src/forms/controls/autocomplete.ts +4 -4
  343. package/src/forms/controls/big-radio-group.ts +3 -3
  344. package/src/forms/controls/checkbox-group.ts +7 -6
  345. package/src/forms/controls/checkbox.ts +3 -3
  346. package/src/forms/controls/checkboxed-list-input.ts +4 -6
  347. package/src/forms/controls/collapsible-checkbox-group.ts +4 -7
  348. package/src/forms/controls/collapsible-field-group.ts +2 -2
  349. package/src/forms/controls/controls.ts +29 -29
  350. package/src/forms/controls/derived-frame.ts +4 -4
  351. package/src/forms/controls/derived.ts +3 -3
  352. package/src/forms/controls/dropdown.ts +6 -5
  353. package/src/forms/controls/editable-collection-subset.ts +4 -4
  354. package/src/forms/controls/field-group.ts +2 -4
  355. package/src/forms/controls/file.ts +4 -4
  356. package/src/forms/controls/form-control.ts +1 -1
  357. package/src/forms/controls/form-field-control.ts +3 -4
  358. package/src/forms/controls/form-header.ts +1 -3
  359. package/src/forms/controls/form-paragraph.ts +1 -1
  360. package/src/forms/controls/frame.ts +2 -2
  361. package/src/forms/controls/hidden-input.ts +5 -5
  362. package/src/forms/controls/html.ts +1 -4
  363. package/src/forms/controls/multiple-files.ts +24 -26
  364. package/src/forms/controls/multiple-photos.ts +4 -4
  365. package/src/forms/controls/number.ts +3 -6
  366. package/src/forms/controls/photo.ts +9 -8
  367. package/src/forms/controls/radio.ts +3 -3
  368. package/src/forms/controls/simple-input.ts +6 -6
  369. package/src/forms/controls/textarea.ts +4 -4
  370. package/src/forms/controls/tickable.ts +6 -6
  371. package/src/forms/fields/boolean.test.ts +2 -1
  372. package/src/forms/fields/boolean.ts +2 -2
  373. package/src/forms/fields/checkboxed-list.ts +2 -2
  374. package/src/forms/fields/collection-field.ts +2 -2
  375. package/src/forms/fields/email.test.ts +1 -1
  376. package/src/forms/fields/email.ts +1 -1
  377. package/src/forms/fields/enum-multiple.test.ts +1 -1
  378. package/src/forms/fields/enum-multiple.ts +2 -2
  379. package/src/forms/fields/enum.test.ts +1 -1
  380. package/src/forms/fields/enum.ts +2 -2
  381. package/src/forms/fields/existing-sealious-value.ts +1 -1
  382. package/src/forms/fields/field.ts +2 -18
  383. package/src/forms/fields/fields.ts +15 -0
  384. package/src/forms/fields/file.ts +8 -9
  385. package/src/forms/fields/multiple-files.ts +1 -1
  386. package/src/forms/fields/number.test.ts +2 -1
  387. package/src/forms/fields/number.ts +2 -2
  388. package/src/forms/fields/pick-from-list.test.ts +1 -1
  389. package/src/forms/fields/pick-from-list.ts +3 -3
  390. package/src/forms/fields/proxy-field.ts +1 -1
  391. package/src/forms/fields/regexp.test.ts +1 -1
  392. package/src/forms/fields/regexp.ts +2 -2
  393. package/src/forms/fields/reverse-single-reference.ts +1 -1
  394. package/src/forms/fields/simple-form-field.ts +2 -2
  395. package/src/forms/fields/structured-array.ts +2 -2
  396. package/src/forms/form-types.ts +30 -0
  397. package/src/forms/form.test.ts +16 -13
  398. package/src/forms/form.ts +11 -31
  399. package/src/forms/multiform.test.ts +33 -28
  400. package/src/forms/multiform.ts +4 -3
  401. package/src/generate-collections.ts +1 -1
  402. package/src/generate-components.ts +3 -1
  403. package/src/generate-routes.ts +5 -5
  404. package/src/index.ts +19 -17
  405. package/src/make-hidden-inputs.ts +3 -3
  406. package/src/mount.ts +5 -5
  407. package/src/page/list.ts +8 -6
  408. package/src/page/mountable-with-fields.ts +8 -4
  409. package/src/page/page.ts +3 -4
  410. package/src/page/props-parser.ts +2 -2
  411. package/src/page/sealious-list.ts +2 -2
  412. package/src/page/stateful-page.ts +3 -3
  413. package/src/templates/form.ts +1 -1
  414. package/src/templates/list.ts +6 -6
  415. package/src/templates/long-running-process.ts +1 -1
  416. package/src/templates/multiform.ts +1 -1
  417. package/src/templates/page.ts +1 -1
  418. package/src/templates/route-test.ts +1 -1
  419. package/src/templates/stateful-page.ts +1 -1
  420. package/src/templates/templates.ts +9 -9
  421. package/src/test_utils/locator_is_visible.ts +1 -1
  422. package/src/utils/extract-fields-from-collection.ts +1 -1
  423. package/src/utils/list-collections.ts +1 -1
  424. package/src/utils/prettier.ts +2 -2
  425. package/src/utils/render-attributes.ts +1 -1
  426. package/src/utils/utils.ts +12 -12
  427. package/src/vitest.config.ts +21 -0
  428. package/tsconfig.json +12 -5
  429. package/lib/add-collection.js +0 -31
  430. package/lib/add-jdd-component.js +0 -34
  431. package/lib/add-route.js +0 -72
  432. package/lib/add-route.test.js +0 -66
  433. package/lib/build.js +0 -217
  434. package/lib/cli.js +0 -36
  435. package/lib/components/components.js +0 -19
  436. package/lib/example.test.js +0 -4
  437. package/lib/find-css-includes.js +0 -30
  438. package/lib/find-scss-includes.js +0 -30
  439. package/lib/forms/controls/array.js +0 -148
  440. package/lib/forms/controls/autocomplete.js +0 -27
  441. package/lib/forms/controls/big-radio-group.js +0 -38
  442. package/lib/forms/controls/checkbox-group.js +0 -33
  443. package/lib/forms/controls/checkbox.js +0 -29
  444. package/lib/forms/controls/checkboxed-list-input.js +0 -39
  445. package/lib/forms/controls/collapsible-checkbox-group.js +0 -17
  446. package/lib/forms/controls/controls.js +0 -60
  447. package/lib/forms/controls/derived-frame.js +0 -56
  448. package/lib/forms/controls/derived.js +0 -81
  449. package/lib/forms/controls/dropdown.js +0 -60
  450. package/lib/forms/controls/editable-collection-subset.js +0 -72
  451. package/lib/forms/controls/field-group.js +0 -57
  452. package/lib/forms/controls/file.js +0 -39
  453. package/lib/forms/controls/form-control.js +0 -19
  454. package/lib/forms/controls/form-field-control.js +0 -13
  455. package/lib/forms/controls/form-header.js +0 -18
  456. package/lib/forms/controls/form-paragraph.js +0 -16
  457. package/lib/forms/controls/frame.js +0 -29
  458. package/lib/forms/controls/hidden-input.js +0 -18
  459. package/lib/forms/controls/html.js +0 -27
  460. package/lib/forms/controls/multiple-files.js +0 -164
  461. package/lib/forms/controls/multiple-photos.js +0 -37
  462. package/lib/forms/controls/number.js +0 -29
  463. package/lib/forms/controls/photo.js +0 -61
  464. package/lib/forms/controls/radio.js +0 -29
  465. package/lib/forms/controls/reverse-single-reference.js +0 -46
  466. package/lib/forms/controls/simple-input.js +0 -82
  467. package/lib/forms/controls/textarea.js +0 -37
  468. package/lib/forms/controls/tickable.js +0 -79
  469. package/lib/forms/fields/boolean.js +0 -55
  470. package/lib/forms/fields/boolean.test.js +0 -37
  471. package/lib/forms/fields/checkboxed-list.js +0 -44
  472. package/lib/forms/fields/collection-field.js +0 -33
  473. package/lib/forms/fields/email.js +0 -15
  474. package/lib/forms/fields/email.test.js +0 -25
  475. package/lib/forms/fields/enum-multiple.js +0 -51
  476. package/lib/forms/fields/enum-multiple.test.js +0 -32
  477. package/lib/forms/fields/enum.js +0 -43
  478. package/lib/forms/fields/enum.test.js +0 -26
  479. package/lib/forms/fields/existing-sealious-value.js +0 -20
  480. package/lib/forms/fields/field.js +0 -100
  481. package/lib/forms/fields/file.js +0 -57
  482. package/lib/forms/fields/multiple-files.js +0 -19
  483. package/lib/forms/fields/number.js +0 -49
  484. package/lib/forms/fields/number.test.js +0 -35
  485. package/lib/forms/fields/pick-from-list.js +0 -35
  486. package/lib/forms/fields/pick-from-list.test.js +0 -22
  487. package/lib/forms/fields/proxy-field.js +0 -24
  488. package/lib/forms/fields/regexp.js +0 -44
  489. package/lib/forms/fields/regexp.test.js +0 -26
  490. package/lib/forms/fields/reverse-single-reference.js +0 -18
  491. package/lib/forms/fields/simple-form-field.js +0 -23
  492. package/lib/forms/fields/structured-array.js +0 -22
  493. package/lib/forms/form.js +0 -183
  494. package/lib/forms/form.test.js +0 -275
  495. package/lib/forms/multiform.js +0 -178
  496. package/lib/forms/multiform.test.js +0 -431
  497. package/lib/generate-collections.js +0 -83
  498. package/lib/generate-components.js +0 -63
  499. package/lib/generate-routes.js +0 -105
  500. package/lib/index.js +0 -46
  501. package/lib/make-env.js +0 -21
  502. package/lib/make-hidden-inputs.js +0 -18
  503. package/lib/mount.js +0 -74
  504. package/lib/notifier.js +0 -26
  505. package/lib/page/access-control.js +0 -20
  506. package/lib/page/default-list-filters.js +0 -45
  507. package/lib/page/list.js +0 -190
  508. package/lib/page/mountable-with-fields.js +0 -89
  509. package/lib/page/mountable.js +0 -9
  510. package/lib/page/page.js +0 -30
  511. package/lib/page/props-parser.js +0 -31
  512. package/lib/page/sealious-list.js +0 -66
  513. package/lib/page/stateful-page.js +0 -104
  514. package/lib/run.js +0 -1
  515. package/lib/sanitize.js +0 -14
  516. package/lib/templates/collection.js +0 -16
  517. package/lib/templates/jdd-component.js +0 -43
  518. package/lib/templates/templates.js +0 -24
  519. package/lib/test_utils/locator_is_visible.js +0 -15
  520. package/lib/utils/assert-throws.js +0 -24
  521. package/lib/utils/base64.js +0 -12
  522. package/lib/utils/browser-creator.js +0 -14
  523. package/lib/utils/escape-url-params.js +0 -19
  524. package/lib/utils/exec.js +0 -26
  525. package/lib/utils/extract-fields-from-collection.js +0 -32
  526. package/lib/utils/format-external-url.js +0 -15
  527. package/lib/utils/import-path.js +0 -24
  528. package/lib/utils/input-wrapper.js +0 -20
  529. package/lib/utils/list-collections.js +0 -20
  530. package/lib/utils/make-slug.js +0 -10
  531. package/lib/utils/natural-numbers.js +0 -10
  532. package/lib/utils/prettier.js +0 -40
  533. package/lib/utils/question.js +0 -23
  534. package/lib/utils/render-attributes.js +0 -23
  535. package/lib/utils/sleep.js +0 -8
  536. package/lib/utils/translate.js +0 -10
  537. package/lib/utils/url-with-new-params.js +0 -12
  538. package/lib/utils/utils.js +0 -43
  539. package/lib/utils/walk.js +0 -27
@@ -1,431 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const router_1 = __importDefault(require("@koa/router"));
7
- const koa_1 = __importDefault(require("koa"));
8
- const axios_1 = __importDefault(require("axios"));
9
- const test_1 = require("@playwright/test");
10
- const tempstream_1 = require("tempstream");
11
- const __1 = require("..");
12
- const mount_1 = require("../mount");
13
- const multiform_1 = require("./multiform");
14
- const utils_1 = require("../utils/utils");
15
- const form_test_1 = require("./form.test");
16
- const browser_creator_1 = require("../utils/browser-creator");
17
- const fields1 = {
18
- email: new __1.Fields.SimpleFormField(true),
19
- };
20
- const form1 = new (class extends __1.Form {
21
- constructor() {
22
- super(...arguments);
23
- this.defaultSuccessMessage = "Form1 done!";
24
- this.controls = [new __1.Controls.FormHeader("form1"), new __1.Controls.SimpleInput(fields1.email)];
25
- this.fields = fields1;
26
- }
27
- onSubmit() {
28
- return;
29
- }
30
- })();
31
- const fields2 = {
32
- name: new __1.Fields.SimpleFormField(true),
33
- };
34
- const form2 = new (class extends __1.Form {
35
- constructor() {
36
- super(...arguments);
37
- this.defaultSuccessMessage = "Form2 done!";
38
- this.controls = [new __1.Controls.FormHeader("form2"), new __1.Controls.SimpleInput(fields2.name)];
39
- this.fields = fields2;
40
- }
41
- onSubmit() {
42
- return;
43
- }
44
- })();
45
- function multiform_factory(canAccessFun1, canAccessFun2) {
46
- return new (class extends multiform_1.Multiform {
47
- constructor() {
48
- super(...arguments);
49
- this.name = "multiform_test";
50
- this.forms = {
51
- form1: (0, form_test_1.form_factory)(canAccessFun1),
52
- form2: (0, form_test_1.form_factory)(canAccessFun2),
53
- };
54
- }
55
- async render(...args) {
56
- return (0, tempstream_1.tempstream /* HTML */) `<!DOCTYPE html>
57
- <html>
58
- <head>
59
- <title>Multiform Test - Sealgen</title>
60
- <script type="module">
61
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
62
- </script>
63
- </head>
64
- <body>
65
- ${super.render(...args)}
66
- </body>
67
- </html>`;
68
- }
69
- })();
70
- }
71
- async function tests(js_enabled) {
72
- let page;
73
- before(async () => {
74
- const browser = await (0, browser_creator_1.getBrowser)();
75
- const context = await browser.newContext({
76
- javaScriptEnabled: js_enabled,
77
- });
78
- page = await context.newPage();
79
- await page.goto("http://localhost:8080");
80
- await page.getByLabel("email").click();
81
- await page.getByLabel("email").fill("sample1");
82
- await page.getByLabel("name").click();
83
- await page.getByLabel("name").fill("sample2");
84
- await page.locator("#multiform_test_form1_submit").click();
85
- });
86
- it("checking whether only one submit handler is run", async () => {
87
- await page.getByText("Form1 done!").click();
88
- await (0, utils_1.assertThrowsAsync)(async () => {
89
- return page.getByText("Form2 done!").click({ timeout: 500 });
90
- });
91
- });
92
- it("checking whether the input in the not submitted form prevails", async () => {
93
- await (0, test_1.expect)(page.getByLabel("name")).toHaveValue("sample2");
94
- });
95
- }
96
- async function general_form_validation_e2e_tests(js_enabled) {
97
- let browser;
98
- let page;
99
- browser = await (0, browser_creator_1.getBrowser)();
100
- const context = await browser.newContext({
101
- javaScriptEnabled: js_enabled,
102
- });
103
- page = await context.newPage();
104
- await page.goto("http://localhost:8080");
105
- await page.getByPlaceholder("text").click();
106
- await page.getByPlaceholder("text").fill("incorrect");
107
- await page.getByPlaceholder("password").click();
108
- await page.getByPlaceholder("password").fill("test");
109
- await page.locator("#multiform_test_form2_submit").click();
110
- await (0, utils_1.assertThrowsAsync)(async () => {
111
- await page.getByText("Incorrect input").click({ timeout: 500 });
112
- });
113
- }
114
- async function individual_field_validation_e2e_tests(javaScriptEnabled) {
115
- let browser;
116
- let page;
117
- before(async () => {
118
- browser = await (0, browser_creator_1.getBrowser)();
119
- const context = await browser.newContext({
120
- javaScriptEnabled,
121
- });
122
- page = await context.newPage();
123
- await page.goto("http://localhost:8080");
124
- });
125
- it("validation message shows when incorrect input is given", async () => {
126
- await page.getByPlaceholder("text").click();
127
- await page.getByPlaceholder("text").fill("notanemail");
128
- await page.locator("#multiform_test_form1_submit").click();
129
- await page.getByText("Please enter a proper email address").click();
130
- });
131
- it("validation message doesn't show when correct input is given", async () => {
132
- await page.getByPlaceholder("text").click();
133
- await page.getByPlaceholder("text").fill("yes@an.email");
134
- await page.locator("#multiform_test_form1_submit").click();
135
- (0, utils_1.assertThrowsAsync)(async () => {
136
- return page.getByText("Please enter a proper email address").click({ timeout: 500 });
137
- });
138
- });
139
- }
140
- describe("multiform test", () => {
141
- describe("basic tests", async () => {
142
- let server;
143
- before(async () => {
144
- const app = new koa_1.default();
145
- const router = new router_1.default();
146
- (0, mount_1.mount)(router, "/", new (class extends multiform_1.Multiform {
147
- constructor() {
148
- super(...arguments);
149
- this.name = "multiform_test";
150
- this.forms = { form1, form2 };
151
- }
152
- async render(ctx, messages, prerenderedForms, show_field_errors = true) {
153
- return (0, tempstream_1.tempstream /* HTML */) `<!DOCTYPE html>
154
- <html>
155
- <head>
156
- <title>Multiform Test - Sealgen</title>
157
- <script type="module">
158
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
159
- </script>
160
- </head>
161
- <body>
162
- ${super.render(ctx, messages, prerenderedForms, show_field_errors)}
163
- </body>
164
- </html>`;
165
- }
166
- })(), true);
167
- app.use(router.routes()).use(router.allowedMethods());
168
- server = app.listen(8080);
169
- });
170
- after(() => {
171
- server.close();
172
- });
173
- describe("turbolinks + js enabled", async () => tests(true));
174
- describe("turbolinks + js disabled", async () => tests(false));
175
- });
176
- describe("canAccess", async () => {
177
- let page;
178
- let server;
179
- describe("allow access to both forms when both canAccess return true", async () => {
180
- before(async () => {
181
- const app = new koa_1.default();
182
- const router = new router_1.default();
183
- (0, mount_1.mount)(router, "/", multiform_factory(async (ctx) => {
184
- return { canAccess: true, message: "" };
185
- }, async (ctx) => {
186
- return { canAccess: true, message: "" };
187
- }), true);
188
- app.use(router.routes()).use(router.allowedMethods());
189
- server = app.listen(8080);
190
- const browser = await (0, browser_creator_1.getBrowser)();
191
- const context = await browser.newContext();
192
- page = await context.newPage();
193
- });
194
- after(async () => {
195
- server.close();
196
- });
197
- it("check wether it renders", async () => {
198
- const response = await page.goto("http://localhost:8080");
199
- if (response?.status() != 200) {
200
- throw new Error(`Should return 200 status and it returns ${response?.status()}`);
201
- }
202
- await page.locator("#form1").getByText("This is a test:").click();
203
- await page.locator("#form2").getByText("This is a test:").click();
204
- });
205
- it("check wether you can submit through http (axios)", async () => {
206
- await axios_1.default.post("http://localhost:8080/form2", {
207
- form2__text: "pass",
208
- }, {
209
- validateStatus: (status) => {
210
- if (status == 422)
211
- return true;
212
- return false;
213
- },
214
- });
215
- });
216
- });
217
- describe("deny access to both forms", async () => {
218
- before(async () => {
219
- const app = new koa_1.default();
220
- const router = new router_1.default();
221
- (0, mount_1.mount)(router, "/", multiform_factory(async (ctx) => {
222
- return { canAccess: false, message: "" };
223
- }, async (ctx) => {
224
- return { canAccess: false, message: "" };
225
- }), true);
226
- app.use(router.routes()).use(router.allowedMethods());
227
- server = app.listen(8080);
228
- const browser = await (0, browser_creator_1.getBrowser)();
229
- const context = await browser.newContext();
230
- page = await context.newPage();
231
- });
232
- after(async () => {
233
- server.close();
234
- });
235
- it("check wether forms didnt render", async () => {
236
- await page.goto("http://localhost:8080");
237
- await (0, utils_1.assertThrowsAsync)(async () => {
238
- return page
239
- .locator("#form1")
240
- .getByText("This is a test:")
241
- .click({ timeout: 300 });
242
- });
243
- });
244
- it("check wether it's possible to submit through http", async () => {
245
- await axios_1.default.post("http://localhost:8080/form2", {
246
- form2__text: "pass",
247
- }, {
248
- validateStatus: (status) => {
249
- if (status == 403)
250
- return true;
251
- return false;
252
- },
253
- });
254
- });
255
- });
256
- describe("allow access to one form, deny to the other", async () => {
257
- before(async () => {
258
- const app = new koa_1.default();
259
- const router = new router_1.default();
260
- (0, mount_1.mount)(router, "/", multiform_factory(async (ctx) => {
261
- return { canAccess: true, message: "" };
262
- }, async (ctx) => {
263
- return { canAccess: false, message: "" };
264
- }), true);
265
- app.use(router.routes()).use(router.allowedMethods());
266
- server = app.listen(8080);
267
- const browser = await (0, browser_creator_1.getBrowser)();
268
- const context = await browser.newContext({});
269
- page = await context.newPage();
270
- });
271
- after(async () => {
272
- server.close();
273
- });
274
- it("check wether form1 renders", async () => {
275
- await page.goto("http://localhost:8080");
276
- await page.locator("#form1").getByText("This is a test:").click({ timeout: 300 });
277
- });
278
- it("check wether it's possible to submit to form1 through http", async () => {
279
- await axios_1.default.post("http://localhost:8080/form1", {
280
- form1__text: "pass",
281
- }, {
282
- validateStatus: (status) => {
283
- if (status == 422)
284
- return true;
285
- return false;
286
- },
287
- });
288
- });
289
- it("check wether form2 does not render", async () => {
290
- await page.goto("http://localhost:8080");
291
- await (0, utils_1.assertThrowsAsync)(async () => {
292
- return page
293
- .locator("#form2")
294
- .getByText("This is a test:")
295
- .click({ timeout: 300 });
296
- });
297
- });
298
- it("check wether it's possible to submit to form2 through http", async () => {
299
- await axios_1.default.post("http://localhost:8080/form2", {
300
- form2__text: "pass",
301
- }, {
302
- validateStatus: (status) => {
303
- if (status == 403)
304
- return true;
305
- return false;
306
- },
307
- });
308
- });
309
- });
310
- });
311
- describe("validation e2e", async () => {
312
- describe("basic tests", async () => {
313
- let server;
314
- before(async () => {
315
- const app = new koa_1.default();
316
- const router = new router_1.default();
317
- (0, mount_1.mount)(router, "/", new (class extends multiform_1.Multiform {
318
- constructor() {
319
- super(...arguments);
320
- this.name = "multiform_test";
321
- this.forms = {
322
- form1: new (class extends __1.Form {
323
- constructor() {
324
- super(...arguments);
325
- this.fields = fields1;
326
- this.submitButtonText = "Submit";
327
- this.controls = [
328
- new __1.Controls.SimpleInput(fields1.email, {
329
- label: "This is a test:",
330
- type: "text",
331
- }),
332
- ];
333
- }
334
- async onSubmit() {
335
- return;
336
- }
337
- async validateValues(ctx, data) {
338
- if (data.email === "incorrect")
339
- return {
340
- valid: false,
341
- error: "Incorrect input",
342
- };
343
- return { valid: true, error: "" };
344
- }
345
- })(),
346
- form2: (0, form_test_1.form_factory)(),
347
- };
348
- }
349
- async render(...args) {
350
- return (0, tempstream_1.tempstream /* HTML */) `<!DOCTYPE html>
351
- <html>
352
- <head>
353
- <title>Multiform Test - Sealgen</title>
354
- <script type="module">
355
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
356
- </script>
357
- </head>
358
- <body>
359
- ${super.render(...args)}
360
- </body>
361
- </html>`;
362
- }
363
- })(), true);
364
- app.use(router.routes()).use(router.allowedMethods());
365
- server = app.listen(8080);
366
- });
367
- after(async () => {
368
- server.close();
369
- });
370
- it("js enabled", async () => general_form_validation_e2e_tests(true));
371
- it("js disabled", async () => general_form_validation_e2e_tests(false));
372
- });
373
- describe("field specific validation", async () => {
374
- let server;
375
- before(async () => {
376
- const app = new koa_1.default();
377
- const router = new router_1.default();
378
- const fields = {
379
- text: new __1.Fields.EmailField(true),
380
- };
381
- (0, mount_1.mount)(router, "/", new (class extends multiform_1.Multiform {
382
- constructor() {
383
- super(...arguments);
384
- this.name = "multiform_test";
385
- this.forms = {
386
- form1: new (class extends __1.Form {
387
- constructor() {
388
- super(...arguments);
389
- this.fields = fields;
390
- this.submitButtonText = "Submit";
391
- this.controls = [
392
- new __1.Controls.SimpleInput(fields.text, {
393
- label: "This is a test:",
394
- type: "text",
395
- }),
396
- ];
397
- }
398
- async onSubmit() {
399
- return;
400
- }
401
- })(),
402
- form2: (0, form_test_1.form_factory)(),
403
- };
404
- }
405
- async render(...args) {
406
- return (0, tempstream_1.tempstream /* HTML */) `<!DOCTYPE html>
407
- <html>
408
- <head>
409
- <title>Multiform Test - Sealgen</title>
410
- <script type="module">
411
- import hotwiredTurbo from "https://cdn.skypack.dev/pin/@hotwired/turbo@v7.0.0-9XNv1By6uiqRlBzQLO2d/mode=imports,min/optimized/@hotwired/turbo.js";
412
- </script>
413
- </head>
414
- <body>
415
- ${super.render(...args)}
416
- </body>
417
- </html>`;
418
- }
419
- })(), true);
420
- app.use(router.routes()).use(router.allowedMethods());
421
- server = app.listen(8080);
422
- });
423
- after(async () => {
424
- server.close();
425
- });
426
- describe("js enabled", async () => individual_field_validation_e2e_tests(true));
427
- describe("js disabled", async () => individual_field_validation_e2e_tests(false));
428
- });
429
- });
430
- });
431
- //# sourceMappingURL=multiform.test.js.map
@@ -1,83 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.generateCollections = exports.extractCollectionClassname = void 0;
30
- const locreq_1 = __importDefault(require("locreq"));
31
- const prettier = __importStar(require("prettier"));
32
- const fs_1 = require("fs");
33
- const ts_predicates_1 = require("@sealcode/ts-predicates");
34
- const prettier_1 = require("./utils/prettier");
35
- const target_locreq = (0, locreq_1.default)(process.cwd());
36
- async function extractCollectionClassname(full_file_path) {
37
- const file_content = await fs_1.promises.readFile(full_file_path, "utf-8");
38
- const result = /export default class (\w+)/.exec(file_content);
39
- if (result === null) {
40
- throw new Error("Missing 'export default class' statement?");
41
- }
42
- return (0, ts_predicates_1.assertType)(result[1], ts_predicates_1.predicates.string, `Missing export default class in '${full_file_path}'?`);
43
- }
44
- exports.extractCollectionClassname = extractCollectionClassname;
45
- async function generateCollections() {
46
- const collections_dir = target_locreq.resolve("src/back/collections");
47
- const files = (await fs_1.promises.readdir(collections_dir)).filter((f) => !/\.(sub)?test\./.exec(f) &&
48
- f != "collections.ts" &&
49
- !f.includes(".#") &&
50
- f.endsWith(".ts"));
51
- const file_data = await Promise.all(files.map(async (file) => {
52
- const full_path = target_locreq.resolve("src/back/collections/" + file);
53
- const class_name = await extractCollectionClassname(full_path);
54
- return {
55
- class_name,
56
- file,
57
- full_path,
58
- urlname: file.replace(".ts", ""),
59
- };
60
- }));
61
- const content = `// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-collections'
62
- import { App } from "sealious";
63
-
64
- ${file_data
65
- .map(({ class_name, urlname }) => `import _${class_name} from "./${urlname}.js";`)
66
- .join("\n")}
67
-
68
- ${file_data
69
- .map(({ class_name }) => `export const ${class_name} = new _${class_name}();`)
70
- .join("\n")}
71
-
72
- export const collections = {
73
- ...App.BaseCollections,
74
- ${file_data
75
- .map(({ class_name, urlname }) => ` "${urlname}": ${class_name},`)
76
- .join("\n")}
77
- };`;
78
- await fs_1.promises.writeFile(target_locreq.resolve("src/back/collections/collections.ts"), prettier.format(content, await (0, prettier_1.getPrettierConfig)()));
79
- // eslint-disable-next-line no-console
80
- console.log("Successfuly generated new src/back/collections/collections.ts file");
81
- }
82
- exports.generateCollections = generateCollections;
83
- //# sourceMappingURL=generate-collections.js.map
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.generateComponents = void 0;
30
- const locreq_1 = __importDefault(require("locreq"));
31
- const prettier = __importStar(require("prettier"));
32
- const fs_1 = require("fs");
33
- const prettier_1 = require("./utils/prettier");
34
- const recursive_readdir_1 = __importDefault(require("recursive-readdir"));
35
- const path_1 = __importDefault(require("path"));
36
- const js_convert_case_1 = require("js-convert-case");
37
- const target_locreq = (0, locreq_1.default)(process.cwd());
38
- async function generateComponents() {
39
- const components_dir = target_locreq.resolve("src/back/jdd-components");
40
- const component_names = (await (0, recursive_readdir_1.default)(components_dir)).filter((c) => c.endsWith(".jdd.tsx"));
41
- const component_data = component_names
42
- .map((p) => "./" +
43
- path_1.default.relative(components_dir, p).replace(/\.[tj]sx?$/, ".js"))
44
- .map((relative_path) => {
45
- const name = relative_path.match(/\/([^\/]+).jdd/)?.[1];
46
- return { name, relative_path };
47
- });
48
- const content = `// DO NOT EDIT! This file is generated automaticaly with 'npm run generate-components'
49
- import { Registry } from "@sealcode/jdd";
50
-
51
- export const registry = new Registry();
52
- ${component_data
53
- .map((c) => `
54
- import { ${(0, js_convert_case_1.toPascalCase)(c.name)} } from "${c.relative_path}";
55
- registry.add("${(0, js_convert_case_1.toKebabCase)(c.name)}", ${(0, js_convert_case_1.toPascalCase)(c.name)});`)
56
- .join("\n")}`;
57
- const target = "src/back/jdd-components/components.ts";
58
- await fs_1.promises.writeFile(target_locreq.resolve(target), prettier.format(content, await (0, prettier_1.getPrettierConfig)()));
59
- // eslint-disable-next-line no-console
60
- console.log(`Successfuly generated new ${target} file`);
61
- }
62
- exports.generateComponents = generateComponents;
63
- //# sourceMappingURL=generate-components.js.map
@@ -1,105 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.generateRoutes = void 0;
30
- const fs_1 = require("fs");
31
- const prettier = __importStar(require("prettier"));
32
- const path_1 = require("path");
33
- const locreq_1 = __importDefault(require("locreq"));
34
- const walk_1 = require("./utils/walk");
35
- const import_path_1 = require("./utils/import-path");
36
- const ts_predicates_1 = require("@sealcode/ts-predicates");
37
- const escape_url_params_1 = require("./utils/escape-url-params");
38
- const prettier_1 = require("./utils/prettier");
39
- const templates_1 = require("./templates/templates");
40
- const target_locreq = (0, locreq_1.default)(process.cwd());
41
- async function extractActionName(full_file_path) {
42
- const file_content = await fs_1.promises.readFile(full_file_path, "utf-8");
43
- const result = /export const actionName = "(\w+)"/.exec(file_content);
44
- if (result === null) {
45
- throw new Error("Missing 'export const actionName' statement?");
46
- }
47
- return (0, ts_predicates_1.assertType)(result[1], ts_predicates_1.predicates.string, "Missing export default class?");
48
- }
49
- function generateURL(actionName, url) {
50
- const parts = url.split("/");
51
- const params = parts
52
- .filter((part) => part.startsWith(":"))
53
- .map((part) => part.slice(1));
54
- if (params.length === 0) {
55
- return `export const ${actionName}URL = "${url}";`;
56
- }
57
- return `export const ${actionName}URL = (${params
58
- .map((s) => s + ": string")
59
- .join(", ")})=>\`${parts
60
- .map((part) => part.startsWith(":") ? "${" + part.slice(1) + "}" : part)
61
- .join("/")}\`;
62
- ${actionName}URL.params = [${params
63
- .map((param) => `"${param}"`)
64
- .join(",")}];
65
- ${actionName}URL.rawURL = "${url}";`;
66
- }
67
- async function generateRoutes() {
68
- const files = await Promise.all((await (0, walk_1.walkDir)(target_locreq.resolve("src/back/routes")))
69
- .filter((f) => Object.keys(templates_1.Templates).some((key) => f.endsWith(`.${key}.ts`) || f.endsWith(`.${key}.tsx`)))
70
- .map(async (fullpath) => ({
71
- fullpath,
72
- actionName: await extractActionName(fullpath),
73
- url: (0, escape_url_params_1.unescape_url_params)("/" +
74
- (0, path_1.relative)(target_locreq.resolve("src/back/routes"), fullpath).replace(/\..+/, "") +
75
- "/" // trailing slash is important here, as it enables to use the entire path while building relative URLs. For example, while visiting /users/123, the path ./add-photo leads to /users/add-photo. While visiting /users/123/ (note the trailing slash), the path ./add-photo leads to /users/123/add-photo
76
- ),
77
- })));
78
- const routes_content = `// DO NOT EDIT! This file is generated automaticaly with npm run generate-routes
79
-
80
- import Router from "@koa/router";
81
- import { mount } from "@sealcode/sealgen";
82
- import * as URLs from "./urls.js"
83
-
84
- ${files
85
- .map(({ actionName, fullpath }) => `import { default as ${actionName} } from "${(0, import_path_1.importPath)(target_locreq.resolve("src/back/routes/routes.ts"), fullpath)}";`)
86
- .join("\n")}
87
-
88
- export default function mountAutoRoutes(router: Router) {
89
- ${files
90
- .map(({ actionName }) => ` mount(router, URLs.${actionName}URL, ${actionName});`)
91
- .join("\n")}
92
- }`;
93
- const urls_content = `${files
94
- .sort(({ url: url1 }, { url: url2 }) => (url1 < url2 ? -1 : 1))
95
- .map(({ actionName, url }) => generateURL(actionName, url))
96
- .join("\n")}
97
- `;
98
- const prettier_config = await (0, prettier_1.getPrettierConfig)();
99
- await fs_1.promises.writeFile(target_locreq.resolve("src/back/routes/routes.ts"), prettier.format(routes_content, prettier_config));
100
- await fs_1.promises.writeFile(target_locreq.resolve("src/back/routes/urls.ts"), prettier.format(urls_content, prettier_config));
101
- // eslint-disable-next-line no-console
102
- console.log("Successfuly generated new src/back/routes/routes.ts and src/back/routes/urls.ts");
103
- }
104
- exports.generateRoutes = generateRoutes;
105
- //# sourceMappingURL=generate-routes.js.map