@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
@@ -0,0 +1,28 @@
1
+ function keys(object) {
2
+ return Object.keys(object);
3
+ }
4
+ import { sleep } from "./sleep.js";
5
+ import { naturalNumbers } from "./natural-numbers.js";
6
+ import { UrlWithNewParams } from "./url-with-new-params.js";
7
+ import { exec } from "./exec.js";
8
+ import { importPath, curryImportPath } from "./import-path.js";
9
+ import { listCollections } from "./list-collections.js";
10
+ import { walkDir } from "./walk.js";
11
+ import { assertThrowsAsync } from "./assert-throws.js";
12
+ export * from "./make-slug.js";
13
+ export * from "./render-attributes.js";
14
+ export * from "./format-external-url.js";
15
+ export * from "./base64.js";
16
+ export {
17
+ UrlWithNewParams,
18
+ assertThrowsAsync,
19
+ curryImportPath,
20
+ exec,
21
+ importPath,
22
+ keys,
23
+ listCollections,
24
+ naturalNumbers,
25
+ sleep,
26
+ walkDir
27
+ };
28
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,23 @@
1
+ import { promises as fs } from "fs";
2
+ import { resolve } from "path";
3
+ async function walkDir(dir) {
4
+ const entries = await fs.readdir(dir);
5
+ let ret = [];
6
+ for (const entry of entries) {
7
+ if (entry.includes(".#")) {
8
+ continue;
9
+ }
10
+ const fullpath = resolve(dir, entry);
11
+ const info = await fs.stat(fullpath);
12
+ if (info.isDirectory()) {
13
+ ret = [...ret, ...await walkDir(fullpath)];
14
+ } else {
15
+ ret = [...ret, fullpath];
16
+ }
17
+ }
18
+ return ret;
19
+ }
20
+ export {
21
+ walkDir
22
+ };
23
+ //# sourceMappingURL=walk.js.map
@@ -0,0 +1,23 @@
1
+ import { defineConfig } from "vitest/config";
2
+ const exclude = ["node_modules", "lib", "dist"];
3
+ var vitest_config_default = defineConfig({
4
+ test: {
5
+ testTimeout: 1e4,
6
+ exclude,
7
+ globals: true,
8
+ coverage: {
9
+ exclude,
10
+ enabled: true,
11
+ all: true,
12
+ include: ["dist/**", "test?(-*).?(c|m)[jt]s?(x)"]
13
+ },
14
+ sequence: { setupFiles: "list" },
15
+ maxConcurrency: 1,
16
+ pool: "threads",
17
+ poolOptions: { threads: { maxThreads: 1, minThreads: 1 } }
18
+ }
19
+ });
20
+ export {
21
+ vitest_config_default as default
22
+ };
23
+ //# sourceMappingURL=vitest.config.js.map
@@ -1,31 +1,24 @@
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
- exports.addCollection = void 0;
7
- const path_1 = require("path");
8
- const locreq_1 = __importDefault(require("locreq"));
9
- const fs_1 = require("fs");
10
- const question_1 = require("./utils/question");
11
- const collection_1 = require("./templates/collection");
12
- const generate_collections_1 = require("./generate-collections");
13
- const target_locreq = (0, locreq_1.default)(process.cwd());
14
- async function addCollection() {
1
+ import { resolve } from "path";
2
+ import _locreq from "locreq";
3
+ import { promises as fs, existsSync } from "fs";
4
+ import { question } from "./utils/question.js";
5
+ import { collectionTemplate } from "./templates/collection.js";
6
+ import { generateCollections } from "./generate-collections.js";
7
+ const target_locreq = _locreq(process.cwd());
8
+ export async function addCollection() {
15
9
  const regex_pattern = /^([A-Z_$][a-zA-Z0-9_$]*)$/;
16
- const collection_name = await (0, question_1.question)('What\'s the name of the collection class (e.g. "SecretDocuments", must start with a capital letter): ', (s) => s.length > 3 && regex_pattern.test(s));
17
- const url = await (0, question_1.question)("Enter the url-friendly name for the collection (e.g. secret-documents): ", (s) => !s.includes("/") && !s.includes(" "));
10
+ const collection_name = await question('What\'s the name of the collection class (e.g. "SecretDocuments", must start with a capital letter): ', (s) => s.length > 3 && regex_pattern.test(s));
11
+ const url = await question("Enter the url-friendly name for the collection (e.g. secret-documents): ", (s) => !s.includes("/") && !s.includes(" "));
18
12
  const file_path = target_locreq.resolve(`src/back/collections/${url}.ts`);
19
- if ((0, fs_1.existsSync)(file_path)) {
13
+ if (existsSync(file_path)) {
20
14
  // eslint-disable-next-line no-console
21
15
  console.error(`ERROR: File ${file_path} already exists.`);
22
16
  return;
23
17
  }
24
- await fs_1.promises.mkdir((0, path_1.resolve)(file_path, "../"), { recursive: true });
25
- await fs_1.promises.writeFile(file_path, (0, collection_1.collectionTemplate)(collection_name));
18
+ await fs.mkdir(resolve(file_path, "../"), { recursive: true });
19
+ await fs.writeFile(file_path, collectionTemplate(collection_name));
26
20
  // eslint-disable-next-line no-console
27
21
  console.log(`${file_path} created`);
28
- await (0, generate_collections_1.generateCollections)();
22
+ await generateCollections();
29
23
  }
30
- exports.addCollection = addCollection;
31
24
  //# sourceMappingURL=add-collection.js.map
@@ -1,34 +1,27 @@
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
- exports.addJDDComponent = void 0;
7
- const path_1 = require("path");
8
- const locreq_1 = __importDefault(require("locreq"));
9
- const fs_1 = require("fs");
10
- const question_1 = require("./utils/question");
11
- const target_locreq = (0, locreq_1.default)(process.cwd());
12
- const jdd_component_1 = require("./templates/jdd-component");
13
- const generate_components_1 = require("./generate-components");
14
- const js_convert_case_1 = require("js-convert-case");
15
- async function addJDDComponent() {
16
- const component_name = await (0, question_1.question)("What's the name of the component? > ", (s) => s.length > 3);
17
- const file_path = target_locreq.resolve(`src/back/jdd-components/${(0, js_convert_case_1.toKebabCase)(component_name)}/${(0, js_convert_case_1.toKebabCase)(component_name)}.jdd.tsx`);
18
- if ((0, fs_1.existsSync)(file_path)) {
1
+ import { resolve } from "path";
2
+ import _locreq from "locreq";
3
+ import { promises as fs, existsSync } from "fs";
4
+ import { question } from "./utils/question.js";
5
+ const target_locreq = _locreq(process.cwd());
6
+ import { jddComponentTemplate } from "./templates/jdd-component.js";
7
+ import { generateComponents } from "./generate-components.js";
8
+ import { toKebabCase } from "js-convert-case";
9
+ export async function addJDDComponent() {
10
+ const component_name = await question("What's the name of the component? > ", (s) => s.length > 3);
11
+ const file_path = target_locreq.resolve(`src/back/jdd-components/${toKebabCase(component_name)}/${toKebabCase(component_name)}.jdd.tsx`);
12
+ if (existsSync(file_path)) {
19
13
  // eslint-disable-next-line no-console
20
14
  console.error(`ERROR: File ${file_path} already exists.`);
21
15
  return;
22
16
  }
23
- await fs_1.promises.mkdir((0, path_1.resolve)(file_path, "../"), { recursive: true });
24
- await fs_1.promises.writeFile(file_path, (0, jdd_component_1.jddComponentTemplate)(component_name));
25
- const css_file_path = target_locreq.resolve(`src/back/jdd-components/${(0, js_convert_case_1.toKebabCase)(component_name)}/${(0, js_convert_case_1.toKebabCase)(component_name)}.css`);
26
- await fs_1.promises.writeFile(css_file_path, `.${(0, js_convert_case_1.toKebabCase)(component_name)} {
17
+ await fs.mkdir(resolve(file_path, "../"), { recursive: true });
18
+ await fs.writeFile(file_path, jddComponentTemplate(component_name));
19
+ const css_file_path = target_locreq.resolve(`src/back/jdd-components/${toKebabCase(component_name)}/${toKebabCase(component_name)}.css`);
20
+ await fs.writeFile(css_file_path, `.${toKebabCase(component_name)} {
27
21
  }`);
28
22
  // eslint-disable-next-line no-console
29
23
  console.log(`Created ${file_path}`);
30
24
  console.log(`Created ${css_file_path}`);
31
- await (0, generate_components_1.generateComponents)();
25
+ await generateComponents();
32
26
  }
33
- exports.addJDDComponent = addJDDComponent;
34
27
  //# sourceMappingURL=add-jdd-component.js.map
package/lib/add-route.js CHANGED
@@ -1,19 +1,13 @@
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
- exports.addRoute = void 0;
7
- const fs_1 = require("fs");
8
- const locreq_1 = __importDefault(require("locreq"));
9
- const path_1 = require("path");
10
- const generate_routes_1 = require("./generate-routes");
11
- const route_test_1 = require("./templates/route-test");
12
- const escape_url_params_1 = require("./utils/escape-url-params");
13
- const prompts = require("prompts");
14
- const templates_1 = require("./templates/templates");
15
- async function addRoute(params, app_directory = process.cwd()) {
16
- const target_locreq = (0, locreq_1.default)(app_directory);
1
+ import { existsSync, promises as fs } from "fs";
2
+ import _locreq from "locreq";
3
+ import { resolve } from "path";
4
+ import { generateRoutes } from "./generate-routes.js";
5
+ import { testTemplate } from "./templates/route-test.js";
6
+ import { escape_url_params } from "./utils/escape-url-params.js";
7
+ import prompts from "prompts";
8
+ import { Templates } from "./templates/templates.js";
9
+ export async function addRoute(params, app_directory = process.cwd()) {
10
+ const target_locreq = _locreq(app_directory);
17
11
  prompts.override(params);
18
12
  const response = await prompts([
19
13
  {
@@ -48,25 +42,24 @@ async function addRoute(params, app_directory = process.cwd()) {
48
42
  const extension = ["list", "lpr", "page", "sreact"].includes(mode)
49
43
  ? "tsx"
50
44
  : "ts";
51
- const file_path = target_locreq.resolve(`src/back/routes/${(0, escape_url_params_1.escape_url_params)(url)}.${mode}.${extension}`);
52
- const test_file_path = target_locreq.resolve(`src/back/routes/${(0, escape_url_params_1.escape_url_params)(url)}.test.ts`);
53
- const template = templates_1.Templates[mode];
45
+ const file_path = target_locreq.resolve(`src/back/routes/${escape_url_params(url)}.${mode}.${extension}`);
46
+ const test_file_path = target_locreq.resolve(`src/back/routes/${escape_url_params(url)}.test.ts`);
47
+ const template = Templates[mode];
54
48
  if (!template) {
55
49
  throw new Error(`Could not get template ${mode}`);
56
50
  }
57
- if ((0, fs_1.existsSync)(file_path)) {
51
+ if (existsSync(file_path)) {
58
52
  // eslint-disable-next-line no-console
59
53
  console.error(`ERROR: File ${file_path} already exists.`);
60
54
  return;
61
55
  }
62
- await fs_1.promises.mkdir((0, path_1.resolve)(file_path, "../"), { recursive: true });
63
- await fs_1.promises.writeFile(file_path, await template(action, file_path));
64
- await fs_1.promises.writeFile(test_file_path, (0, route_test_1.testTemplate)(action, file_path));
56
+ await fs.mkdir(resolve(file_path, "../"), { recursive: true });
57
+ await fs.writeFile(file_path, await template(action, file_path));
58
+ await fs.writeFile(test_file_path, testTemplate(action, file_path));
65
59
  // eslint-disable-next-line no-console
66
60
  console.log(`${file_path} created`);
67
61
  // eslint-disable-next-line no-console
68
62
  console.log(`${test_file_path} created`);
69
- await (0, generate_routes_1.generateRoutes)();
63
+ await generateRoutes();
70
64
  }
71
- exports.addRoute = addRoute;
72
65
  //# sourceMappingURL=add-route.js.map
@@ -1,17 +1,12 @@
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 fs_1 = require("fs");
7
- const child_process_1 = require("child_process");
8
- const util_1 = require("util");
9
- const axios_1 = __importDefault(require("axios"));
10
- const wait_port_1 = __importDefault(require("wait-port"));
11
- const get_port_1 = __importDefault(require("get-port"));
12
- const locreq_1 = __importDefault(require("locreq"));
13
- const target_locreq = (0, locreq_1.default)(__dirname);
14
- const execAsync = (0, util_1.promisify)(child_process_1.exec);
1
+ import { promises as fs } from "fs";
2
+ import { exec, spawn } from "child_process";
3
+ import { promisify } from "util";
4
+ import axios from "axios";
5
+ import waitPort from "wait-port";
6
+ import getPort from "get-port";
7
+ import _locreq from "locreq";
8
+ const target_locreq = _locreq(__dirname);
9
+ const execAsync = promisify(exec);
15
10
  const callSealgenBin = () => `node ${target_locreq.resolve("lib/cli.js")}`;
16
11
  describe("add route test", () => {
17
12
  let node_pid = 0;
@@ -26,12 +21,11 @@ describe("add route test", () => {
26
21
  throw new Error("node process exited unexpectedly, please inspect the output");
27
22
  }
28
23
  await Promise.all([
29
- fs_1.promises.rm(app_path, { recursive: true, force: true }),
24
+ fs.rm(app_path, { recursive: true, force: true }),
30
25
  execAsync(`docker rm -f ${container_name}`),
31
26
  ]);
32
27
  });
33
28
  it("creates minimal sealious app", async function () {
34
- this.timeout(250000);
35
29
  console.log("\tcloning sealious-minimal...");
36
30
  await execAsync(`git clone https://hub.sealcode.org/source/sealious-minimal.git ${app_path} && cd ${app_path} && git checkout d5abeb9514359dde4`);
37
31
  console.log("\tinstalling dependencies and sealgen...");
@@ -39,11 +33,11 @@ describe("add route test", () => {
39
33
  console.log("\trunning add-route and building app...");
40
34
  await execAsync(`cd ${app_path} && ${callSealgenBin()} add-route --url=/sample --action=Sample --mode=page && ${callSealgenBin()} build`);
41
35
  console.log("\tstarting the database...(if timeouts here, run 'docker pull mongo:4.4-bionic' to solve)");
42
- const port = await (0, get_port_1.default)();
36
+ const port = await getPort();
43
37
  await execAsync(`docker run -p ${port}:27017 --name ${container_name} -d mongo:4.4-bionic`);
44
38
  console.log("\trunning app and making request to the generated url...");
45
39
  const env = { ...process.env, SEALIOUS_MONGO_PORT: port.toString() };
46
- let app_start = (0, child_process_1.spawn)(`node`, [`${app_path}/dist/back/index.js`], {
40
+ let app_start = spawn(`node`, [`${app_path}/dist/back/index.js`], {
47
41
  env,
48
42
  });
49
43
  app_start.stdout.on("data", (data) => console.log(data.toString()));
@@ -51,16 +45,16 @@ describe("add route test", () => {
51
45
  if (app_start.pid == undefined)
52
46
  throw new Error("node failed to start");
53
47
  node_pid = app_start.pid;
54
- await (0, wait_port_1.default)({
48
+ await waitPort({
55
49
  host: "localhost",
56
50
  port: 8080,
57
51
  output: "silent",
58
52
  timeout: 6000,
59
53
  });
60
- const res = await axios_1.default.get("http://localhost:8080/sample");
54
+ const res = await axios.get("http://localhost:8080/sample");
61
55
  if (res.status != 200) {
62
56
  throw new Error("url generated by add-route exists but doesnt return 200");
63
57
  }
64
- });
58
+ }, 250000);
65
59
  });
66
60
  //# sourceMappingURL=add-route.test.js.map
package/lib/build.js CHANGED
@@ -1,43 +1,17 @@
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.buildProject = void 0;
30
- const esbuild_1 = require("esbuild");
31
- const fs_1 = require("fs");
32
- const path_1 = require("path");
33
- const chokidar = __importStar(require("chokidar"));
34
- const tiny_glob_1 = __importDefault(require("tiny-glob"));
35
- const find_css_includes_1 = require("./find-css-includes");
36
- const sleep_1 = require("./utils/sleep");
37
- const generate_collections_1 = require("./generate-collections");
38
- const generate_routes_1 = require("./generate-routes");
39
- const generate_components_1 = require("./generate-components");
40
- const notifier_1 = require("./notifier");
1
+ import { build, context } from "esbuild";
2
+ import { promises as fs } from "fs";
3
+ import { extname } from "path";
4
+ import * as chokidar from "chokidar";
5
+ import { default as glob } from "tiny-glob";
6
+ import { generate_css_includes } from "./find-css-includes.js";
7
+ import { sleep } from "./utils/sleep.js";
8
+ import { generateCollections } from "./generate-collections.js";
9
+ import { generateRoutes } from "./generate-routes.js";
10
+ import { generateComponents } from "./generate-components.js";
11
+ import { make_notifier } from "./notifier.js";
12
+ import getPort from "get-port";
13
+ import _locreq from "locreq";
14
+ const target_locreq = _locreq(process.cwd());
41
15
  const generate_names = (function* generate_names() {
42
16
  const base_name = "____unique_import_";
43
17
  let count = 0;
@@ -46,15 +20,25 @@ const generate_names = (function* generate_names() {
46
20
  count++;
47
21
  }
48
22
  })();
23
+ async function get_notifier_port() {
24
+ return getPort({ port: 4000 });
25
+ }
26
+ async function write_notifier_config(watch, port) {
27
+ const config = { watch };
28
+ if (port) {
29
+ config.port = port;
30
+ }
31
+ await fs.writeFile(target_locreq.resolve("public/dist/notifier.json"), JSON.stringify(config));
32
+ }
49
33
  async function build_ts() {
50
34
  await Promise.all([
51
- (0, generate_collections_1.generateCollections)(),
52
- (0, generate_routes_1.generateRoutes)(),
53
- (0, generate_components_1.generateComponents)(),
35
+ generateCollections(),
36
+ generateRoutes(),
37
+ generateComponents(),
54
38
  ]);
55
- const entryPoints = (await (0, tiny_glob_1.default)("./src/back/**/*.{ts,tsx}")).filter((path) => !path.includes(".#"));
39
+ const entryPoints = (await glob("./src/back/**/*.{ts,tsx}")).filter((path) => !path.includes(".#"));
56
40
  try {
57
- await (0, esbuild_1.build)({
41
+ await build({
58
42
  entryPoints,
59
43
  sourcemap: true,
60
44
  bundle: false,
@@ -70,7 +54,7 @@ async function build_ts() {
70
54
  setup(build) {
71
55
  build.onLoad({ filter: /.*/ }, async ({ path }) => {
72
56
  const named_and_default_regex = /^import\s+((\S+),\s+)?({\s*[^}]+})\s+from\s+("[^"]+");\s*$/gm;
73
- const old_content = await fs_1.promises.readFile(path, "utf-8");
57
+ const old_content = await fs.readFile(path, "utf-8");
74
58
  const contents = old_content.replace(named_and_default_regex, (_, default_import_name, __, all_named, module_path) => {
75
59
  /* eslint-disable */
76
60
  const new_name = generate_names.next().value;
@@ -96,7 +80,7 @@ async function build_ts() {
96
80
  });
97
81
  return {
98
82
  contents,
99
- loader: (0, path_1.extname)(path) === ".tsx" ? "tsx" : "ts",
83
+ loader: extname(path) === ".tsx" ? "tsx" : "ts",
100
84
  };
101
85
  });
102
86
  },
@@ -111,7 +95,7 @@ async function build_ts() {
111
95
  }
112
96
  async function complex_build(watch) {
113
97
  const loader = Object.fromEntries(["png", "svg", "jpg", "gif", "jpeg", "otf", "ttf"].map((ext) => ["." + ext, "file"]));
114
- let css_build = await (0, esbuild_1.context)({
98
+ let css_build = await context({
115
99
  entryPoints: ["./src/main.css"],
116
100
  sourcemap: true,
117
101
  bundle: true,
@@ -122,9 +106,12 @@ async function complex_build(watch) {
122
106
  });
123
107
  let ongoing_ts = false;
124
108
  let ongoing_css = false;
109
+ let ongoing_ts_promise = null;
125
110
  if (watch) {
126
111
  const watcher = chokidar.watch("src", { ignoreInitial: true });
127
- const notifier = (0, notifier_1.make_notifier)(60808);
112
+ const port = await get_notifier_port();
113
+ const notifier = make_notifier(port);
114
+ await write_notifier_config(watch, port);
128
115
  watcher.on("all", async (_, path) => {
129
116
  if (!css_build)
130
117
  return;
@@ -136,7 +123,7 @@ async function complex_build(watch) {
136
123
  }
137
124
  ongoing_css = true;
138
125
  // refresh the list of all css files in includes.css
139
- await (0, find_css_includes_1.generate_css_includes)();
126
+ await generate_css_includes();
140
127
  try {
141
128
  await css_build?.rebuild?.();
142
129
  console.log(`Built main.css [on ${path}]`);
@@ -144,12 +131,15 @@ async function complex_build(watch) {
144
131
  catch (e) {
145
132
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
146
133
  console.error(e.message);
147
- await (0, sleep_1.sleep)(200);
134
+ await sleep(200);
148
135
  css_build
149
136
  ?.rebuild?.()
150
137
  // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
151
138
  .catch((e) => console.error(e?.message));
152
139
  }
140
+ if (ongoing_ts_promise) {
141
+ await ongoing_ts_promise;
142
+ }
153
143
  notifier("css");
154
144
  ongoing_css = false;
155
145
  }
@@ -161,19 +151,25 @@ async function complex_build(watch) {
161
151
  return;
162
152
  }
163
153
  ongoing_ts = true;
164
- await build_ts();
154
+ ongoing_ts_promise = build_ts();
155
+ await ongoing_ts_promise;
156
+ notifier("ts");
157
+ ongoing_ts_promise = null;
165
158
  console.log(`Finished TS build [on ${path}]`);
166
159
  ongoing_ts = false;
167
160
  }
168
161
  });
169
162
  }
170
- await (0, find_css_includes_1.generate_css_includes)();
163
+ else {
164
+ await write_notifier_config(watch);
165
+ }
166
+ await generate_css_includes();
171
167
  await Promise.all([css_build.rebuild(), build_ts()]);
172
168
  watch && css_build?.rebuild?.();
173
169
  }
174
- async function buildProject({ watch, }) {
170
+ export async function buildProject({ watch, }) {
175
171
  try {
176
- await (0, esbuild_1.build)({
172
+ await build({
177
173
  entryPoints: ["./src/front/index.ts"],
178
174
  sourcemap: true,
179
175
  outfile: "./public/dist/bundle.js",
@@ -188,5 +184,4 @@ async function buildProject({ watch, }) {
188
184
  console.error(e.message);
189
185
  }
190
186
  }
191
- exports.buildProject = buildProject;
192
187
  //# sourceMappingURL=build.js.map
package/lib/cli.js CHANGED
@@ -1,36 +1,35 @@
1
1
  #!/usr/bin/env node
2
- "use strict";
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const add_collection_1 = require("./add-collection");
5
- const add_jdd_component_1 = require("./add-jdd-component");
6
- const add_route_1 = require("./add-route");
7
- const build_1 = require("./build");
8
- const find_css_includes_1 = require("./find-css-includes");
9
- const generate_collections_1 = require("./generate-collections");
10
- const generate_components_1 = require("./generate-components");
11
- const generate_routes_1 = require("./generate-routes");
12
- const make_env_1 = require("./make-env");
2
+ import { addCollection } from "./add-collection.js";
3
+ import { addJDDComponent } from "./add-jdd-component.js";
4
+ import { addRoute } from "./add-route.js";
5
+ import { buildProject } from "./build.js";
6
+ import { generate_css_includes } from "./find-css-includes.js";
7
+ import { generateCollections } from "./generate-collections.js";
8
+ import { generateComponents } from "./generate-components.js";
9
+ import { generateRoutes } from "./generate-routes.js";
10
+ import { makeEnv } from "./make-env.js";
11
+ import yargs from "yargs/yargs";
13
12
  const actions = {
14
- "add-collection": add_collection_1.addCollection,
15
- "add-route": add_route_1.addRoute,
16
- "generate-collections": generate_collections_1.generateCollections,
17
- "generate-components": generate_components_1.generateComponents,
18
- "generate-routes": generate_routes_1.generateRoutes,
19
- "generate-css-includes": find_css_includes_1.generate_css_includes,
20
- build: build_1.buildProject,
13
+ "add-collection": addCollection,
14
+ "add-route": addRoute,
15
+ "generate-collections": generateCollections,
16
+ "generate-components": generateComponents,
17
+ "generate-routes": generateRoutes,
18
+ "generate-css-includes": generate_css_includes,
19
+ build: buildProject,
21
20
  default: async function () {
22
21
  console.log("Usage: `sealscript <action>`");
23
22
  console.log(`Available actions: ${Object.keys(actions)
24
23
  .filter((e) => e != "default")
25
24
  .join(", ")}`);
26
25
  },
27
- "make-env": make_env_1.makeEnv,
28
- "add-component": add_jdd_component_1.addJDDComponent
26
+ "make-env": makeEnv,
27
+ "add-component": addJDDComponent,
29
28
  };
30
29
  void (async function () {
31
30
  const action = process.argv.at(2);
32
31
  actions;
33
32
  const fn = actions[action || "default"] || actions.default;
34
- await fn(require("yargs").argv);
33
+ await fn(yargs().argv);
35
34
  })();
36
35
  //# sourceMappingURL=cli.js.map
@@ -1,19 +1,3 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./tabs"), exports);
18
- __exportStar(require("./toggle-modal"), exports);
1
+ export * from "./tabs.js";
2
+ export * from "./toggle-modal.js";
19
3
  //# sourceMappingURL=components.js.map
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tabs = void 0;
4
- const tempstream_1 = require("tempstream");
1
+ import { tempstream } from "tempstream";
5
2
  function name_to_id(str) {
6
3
  return str.replace(/\W/g, "-");
7
4
  }
@@ -51,8 +48,8 @@ const style = (hide_tabs_width) => /* HTML */ `<style>
51
48
  }
52
49
  }
53
50
  </style>`;
54
- function tabs(tabs, selected_tab_style = "font-weight: bold;", selected_index = 0, hide_tabs_width = 0) {
55
- return /* HTML */ (0, tempstream_1.tempstream) `${style(hide_tabs_width)}
51
+ export function tabs(tabs, selected_tab_style = "font-weight: bold;", selected_index = 0, hide_tabs_width = 0) {
52
+ return /* HTML */ tempstream `${style(hide_tabs_width)}
56
53
  ${Object.keys(tabs)
57
54
  .map((tab_title, index) => {
58
55
  const id = name_to_id(tab_title);
@@ -71,7 +68,7 @@ function tabs(tabs, selected_tab_style = "font-weight: bold;", selected_index =
71
68
  .join("\n")}
72
69
  ${Object.entries(tabs).map(([title, content]) => {
73
70
  const id = name_to_id(title);
74
- return /* HTML */ (0, tempstream_1.tempstream) `<div class="tab-label tab-label--mobile">
71
+ return /* HTML */ tempstream `<div class="tab-label tab-label--mobile">
75
72
  ${title}
76
73
  </div>
77
74
  <div class="tab-content tab-content--${id}">${content}</div>
@@ -88,5 +85,4 @@ function tabs(tabs, selected_tab_style = "font-weight: bold;", selected_index =
88
85
  </style>`;
89
86
  })}`;
90
87
  }
91
- exports.tabs = tabs;
92
88
  //# sourceMappingURL=tabs.js.map