@leanspec/ui 0.2.5-dev.20251120072524 → 0.2.5-dev.20251121093721

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 (338) hide show
  1. package/.next/standalone/packages/ui/.next/BUILD_ID +1 -1
  2. package/.next/standalone/packages/ui/.next/app-path-routes-manifest.json +9 -0
  3. package/.next/standalone/packages/ui/.next/build-manifest.json +7 -6
  4. package/.next/standalone/packages/ui/.next/prerender-manifest.json +28 -3
  5. package/.next/standalone/packages/ui/.next/routes-manifest.json +71 -0
  6. package/.next/standalone/packages/ui/.next/server/app/_global-error/page/build-manifest.json +5 -4
  7. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js +1 -1
  8. package/.next/standalone/packages/ui/.next/server/app/_global-error/page.js.nft.json +1 -1
  9. package/.next/standalone/packages/ui/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/packages/ui/.next/server/app/_global-error.html +2 -2
  11. package/.next/standalone/packages/ui/.next/server/app/_global-error.rsc +1 -1
  12. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  13. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  14. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  15. package/.next/standalone/packages/ui/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  16. package/.next/standalone/packages/ui/.next/server/app/_not-found/page/build-manifest.json +5 -4
  17. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js +2 -2
  18. package/.next/standalone/packages/ui/.next/server/app/_not-found/page.js.nft.json +1 -1
  19. package/.next/standalone/packages/ui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  20. package/.next/standalone/packages/ui/.next/server/app/_not-found.html +2 -2
  21. package/.next/standalone/packages/ui/.next/server/app/_not-found.rsc +20 -19
  22. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_full.segment.rsc +20 -19
  23. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_index.segment.rsc +26 -25
  24. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  25. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  26. package/.next/standalone/packages/ui/.next/server/app/_not-found.segments/_tree.segment.rsc +5 -5
  27. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js +2 -3
  28. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/[id]/route.js.nft.json +1 -1
  29. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js +2 -3
  30. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/discover/route.js.nft.json +1 -1
  31. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route/app-paths-manifest.json +3 -0
  32. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route/build-manifest.json +11 -0
  33. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route/server-reference-manifest.json +4 -0
  34. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js +6 -0
  35. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.map +5 -0
  36. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route.js.nft.json +1 -0
  37. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/list-directory/route_client-reference-manifest.js +2 -0
  38. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js +2 -3
  39. package/.next/standalone/packages/ui/.next/server/app/api/local-projects/route.js.nft.json +1 -1
  40. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route/app-paths-manifest.json +3 -0
  41. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route/build-manifest.json +11 -0
  42. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route/server-reference-manifest.json +4 -0
  43. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js +8 -0
  44. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.map +5 -0
  45. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route.js.nft.json +1 -0
  46. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/route_client-reference-manifest.js +2 -0
  47. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route/app-paths-manifest.json +3 -0
  48. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route/build-manifest.json +11 -0
  49. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route/server-reference-manifest.json +4 -0
  50. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js +9 -0
  51. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.map +5 -0
  52. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route.js.nft.json +1 -0
  53. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/route_client-reference-manifest.js +2 -0
  54. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route/app-paths-manifest.json +3 -0
  55. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route/build-manifest.json +11 -0
  56. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route/server-reference-manifest.json +4 -0
  57. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js +8 -0
  58. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.map +5 -0
  59. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route.js.nft.json +1 -0
  60. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/[spec]/status/route_client-reference-manifest.js +2 -0
  61. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js +4 -3
  62. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/specs/route.js.nft.json +1 -1
  63. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route/app-paths-manifest.json +3 -0
  64. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route/build-manifest.json +11 -0
  65. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route/server-reference-manifest.json +4 -0
  66. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js +8 -0
  67. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.map +5 -0
  68. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route.js.nft.json +1 -0
  69. package/.next/standalone/packages/ui/.next/server/app/api/projects/[id]/stats/route_client-reference-manifest.js +2 -0
  70. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js +2 -2
  71. package/.next/standalone/packages/ui/.next/server/app/api/projects/route.js.nft.json +1 -1
  72. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js +3 -4
  73. package/.next/standalone/packages/ui/.next/server/app/api/revalidate/route.js.nft.json +1 -1
  74. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js +3 -4
  75. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/dependency-graph/route.js.nft.json +1 -1
  76. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js +3 -4
  77. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/route.js.nft.json +1 -1
  78. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js +3 -4
  79. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/status/route.js.nft.json +1 -1
  80. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js +3 -4
  81. package/.next/standalone/packages/ui/.next/server/app/api/specs/[id]/subspecs/[file]/route.js.nft.json +1 -1
  82. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js +3 -4
  83. package/.next/standalone/packages/ui/.next/server/app/api/stats/route.js.nft.json +1 -1
  84. package/.next/standalone/packages/ui/.next/server/app/page/build-manifest.json +5 -4
  85. package/.next/standalone/packages/ui/.next/server/app/page.js +2 -2
  86. package/.next/standalone/packages/ui/.next/server/app/page.js.nft.json +1 -1
  87. package/.next/standalone/packages/ui/.next/server/app/page_client-reference-manifest.js +1 -1
  88. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/app-paths-manifest.json +3 -0
  89. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/build-manifest.json +18 -0
  90. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/next-font-manifest.json +6 -0
  91. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/react-loadable-manifest.json +1 -0
  92. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page/server-reference-manifest.json +4 -0
  93. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js +21 -0
  94. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.map +5 -0
  95. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page.js.nft.json +1 -0
  96. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/page_client-reference-manifest.js +2 -0
  97. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/app-paths-manifest.json +3 -0
  98. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/build-manifest.json +18 -0
  99. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/next-font-manifest.json +6 -0
  100. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/react-loadable-manifest.json +1 -0
  101. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page/server-reference-manifest.json +4 -0
  102. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js +21 -0
  103. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.map +5 -0
  104. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page.js.nft.json +1 -0
  105. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/[specId]/page_client-reference-manifest.js +2 -0
  106. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/app-paths-manifest.json +3 -0
  107. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/build-manifest.json +18 -0
  108. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/next-font-manifest.json +6 -0
  109. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/react-loadable-manifest.json +1 -0
  110. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page/server-reference-manifest.json +4 -0
  111. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js +20 -0
  112. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.map +5 -0
  113. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page.js.nft.json +1 -0
  114. package/.next/standalone/packages/ui/.next/server/app/projects/[projectId]/specs/page_client-reference-manifest.js +2 -0
  115. package/.next/standalone/packages/ui/.next/server/app/projects/page/app-paths-manifest.json +3 -0
  116. package/.next/standalone/packages/ui/.next/server/app/projects/page/build-manifest.json +18 -0
  117. package/.next/standalone/packages/ui/.next/server/app/projects/page/next-font-manifest.json +6 -0
  118. package/.next/standalone/packages/ui/.next/server/app/projects/page/react-loadable-manifest.json +1 -0
  119. package/.next/standalone/packages/ui/.next/server/app/projects/page/server-reference-manifest.json +4 -0
  120. package/.next/standalone/packages/ui/.next/server/app/projects/page.js +19 -0
  121. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.map +5 -0
  122. package/.next/standalone/packages/ui/.next/server/app/projects/page.js.nft.json +1 -0
  123. package/.next/standalone/packages/ui/.next/server/app/projects/page_client-reference-manifest.js +2 -0
  124. package/.next/standalone/packages/ui/.next/server/app/projects.html +2 -0
  125. package/.next/standalone/packages/ui/.next/server/app/projects.meta +14 -0
  126. package/.next/standalone/packages/ui/.next/server/app/projects.rsc +34 -0
  127. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_full.segment.rsc +34 -0
  128. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_index.segment.rsc +27 -0
  129. package/.next/standalone/packages/ui/.next/server/app/projects.segments/_tree.segment.rsc +9 -0
  130. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects/__PAGE__.segment.rsc +9 -0
  131. package/.next/standalone/packages/ui/.next/server/app/projects.segments/projects.segment.rsc +4 -0
  132. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page/build-manifest.json +5 -4
  133. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js +4 -4
  134. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page.js.nft.json +1 -1
  135. package/.next/standalone/packages/ui/.next/server/app/specs/[id]/page_client-reference-manifest.js +1 -1
  136. package/.next/standalone/packages/ui/.next/server/app/specs/page/build-manifest.json +5 -4
  137. package/.next/standalone/packages/ui/.next/server/app/specs/page.js +2 -2
  138. package/.next/standalone/packages/ui/.next/server/app/specs/page.js.nft.json +1 -1
  139. package/.next/standalone/packages/ui/.next/server/app/specs/page_client-reference-manifest.js +1 -1
  140. package/.next/standalone/packages/ui/.next/server/app/stats/page/build-manifest.json +5 -4
  141. package/.next/standalone/packages/ui/.next/server/app/stats/page.js +2 -2
  142. package/.next/standalone/packages/ui/.next/server/app/stats/page.js.nft.json +1 -1
  143. package/.next/standalone/packages/ui/.next/server/app/stats/page_client-reference-manifest.js +1 -1
  144. package/.next/standalone/packages/ui/.next/server/app-paths-manifest.json +9 -0
  145. package/.next/standalone/packages/ui/.next/server/chunks/6681a__next-internal_server_app_api_projects_[id]_specs_[spec]_route_actions_d018d9e0.js +3 -0
  146. package/.next/standalone/packages/ui/.next/server/chunks/730ea_ui__next-internal_server_app_api_projects_[id]_stats_route_actions_a0bb04a8.js +3 -0
  147. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__0fbfea15._.js +3 -0
  148. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__126dea7b._.js +3 -0
  149. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__1f037512._.js +3 -0
  150. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__3559376c._.js +21 -0
  151. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__548e27d4._.js +3 -0
  152. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__d293d769._.js → [root-of-the-server]__65667b70._.js} +2 -2
  153. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__675a763e._.js +3 -0
  154. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__c83721f3._.js → [root-of-the-server]__803d07f0._.js} +2 -2
  155. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8075fe29._.js +3 -0
  156. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__8233e09b._.js +3 -0
  157. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__84cdc14a._.js +3 -0
  158. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__9ce722b4._.js +3 -0
  159. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a2d7cbed._.js +3 -0
  160. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__aa677b0d._.js +3 -0
  161. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__ac744182._.js +3 -0
  162. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__bb9fca84._.js +4 -0
  163. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__fad83967._.js → [root-of-the-server]__bdc3963a._.js} +2 -2
  164. package/.next/standalone/packages/ui/.next/server/chunks/{[root-of-the-server]__57791a48._.js → [root-of-the-server]__f5c6d6b8._.js} +2 -2
  165. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__fb91986f._.js +3 -0
  166. package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_local-projects_list-directory_route_actions_d620ec1a.js +3 -0
  167. package/.next/standalone/packages/ui/.next/server/chunks/f825c_server_app_api_projects_[id]_specs_[spec]_status_route_actions_e9f1bdc5.js +3 -0
  168. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui__next-internal_server_app_api_projects_[id]_route_actions_bff49675.js +3 -0
  169. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_db_index_ts_556307fa._.js +64 -5
  170. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_0bd881ee._.js +3 -0
  171. package/.next/standalone/packages/ui/.next/server/chunks/packages_ui_src_lib_specs_sources_database-source_ts_baa0160d._.js +3 -0
  172. package/.next/standalone/packages/ui/.next/server/chunks/ssr/38a22_sonner_dist_index_mjs_207730fe._.js +3 -0
  173. package/.next/standalone/packages/ui/.next/server/chunks/ssr/6e9bd_next_dist_7af75658._.js +3 -0
  174. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{_a5b58449._.js → 6e9bd_next_dist_df5dcbe9._.js} +2 -2
  175. package/.next/standalone/packages/ui/.next/server/chunks/ssr/730ea_ui__next-internal_server_app_projects_[projectId]_specs_page_actions_82e32fe4.js +3 -0
  176. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__01bfc8ff._.js +3 -0
  177. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__1d0c2012._.js +1 -1
  178. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__4ec37765._.js +3 -0
  179. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__1af33d49._.js → [root-of-the-server]__50122e7e._.js} +2 -2
  180. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__34ab4950._.js → [root-of-the-server]__5382b397._.js} +2 -2
  181. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__73f60f12._.js +7 -0
  182. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__88a691ee._.js +3 -0
  183. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a7ae8552._.js +7 -0
  184. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__bdbbba01._.js +3 -0
  185. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__c592f5d1._.js +3 -0
  186. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__cc589a54._.js +3 -0
  187. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ec5b96a5._.js +3 -0
  188. package/.next/standalone/packages/ui/.next/server/chunks/ssr/{[root-of-the-server]__cbbbfb5d._.js → [root-of-the-server]__fd80e4dd._.js} +2 -2
  189. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_000dd317._.js +1 -1
  190. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_196b5a83._.js +3 -0
  191. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_39562b2a._.js +4 -0
  192. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_3b617676._.js +1 -1
  193. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_4129cc0f._.js +3 -0
  194. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_6174313a._.js +3 -0
  195. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_6e4dd8b6._.js +3 -0
  196. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_85effc18._.js +4 -0
  197. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_ad8c1e99._.js +1 -1
  198. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_bae6d2b8._.js +4 -0
  199. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_c2f54661._.js +5 -0
  200. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_fdd7780b._.js +4 -0
  201. package/.next/standalone/packages/ui/.next/server/chunks/ssr/f825c_server_app_projects_[projectId]_specs_[specId]_page_actions_22d9c35e.js +3 -0
  202. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_af9d3830._.js +3 -0
  203. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_projects_[projectId]_page_actions_f2986585.js +3 -0
  204. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui__next-internal_server_app_projects_page_actions_715940ea.js +3 -0
  205. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_[projectId]_be242d6c._.js +3 -0
  206. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_[projectId]_project-context-syncer_tsx_7954ea3b._.js +3 -0
  207. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_projects_page_tsx_6e166c8e._.js +3 -0
  208. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_app_specs_specs-client_tsx_0bb8f8f8._.js +1 -1
  209. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_components_ui_select_tsx_7e21d40f._.js +3 -0
  210. package/.next/standalone/packages/ui/.next/server/chunks/ssr/packages_ui_src_lib_specs_sources_database-source_ts_f7186c2a._.js +60 -1
  211. package/.next/standalone/packages/ui/.next/server/middleware-build-manifest.js +5 -4
  212. package/.next/standalone/packages/ui/.next/server/pages/404.html +2 -2
  213. package/.next/standalone/packages/ui/.next/server/pages/500.html +2 -2
  214. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.js +1 -1
  215. package/.next/standalone/packages/ui/.next/server/server-reference-manifest.json +1 -1
  216. package/.next/standalone/packages/ui/.next/static/chunks/07f48b316e895080.js +1 -0
  217. package/.next/standalone/packages/ui/.next/static/chunks/0a7be410b438418a.js +1 -0
  218. package/.next/standalone/packages/ui/.next/static/chunks/1089ca88f6bef846.js +1 -0
  219. package/.next/standalone/packages/ui/.next/static/chunks/17471c87082c392c.js +5 -0
  220. package/.next/standalone/packages/ui/.next/static/chunks/220ba5cb8fe4dd69.js +1 -0
  221. package/.next/standalone/packages/ui/.next/static/chunks/35ccd3286e538bd2.js +1 -0
  222. package/.next/standalone/packages/ui/.next/static/chunks/571033caca823138.js +1 -0
  223. package/.next/standalone/packages/ui/.next/static/chunks/5a6fc30cd64085b4.css +1 -0
  224. package/.next/standalone/packages/ui/.next/static/chunks/5c2072ad938de8ed.js +1 -0
  225. package/.next/standalone/packages/ui/.next/static/chunks/843e1dfdc28e1385.js +1 -0
  226. package/.next/standalone/packages/ui/.next/static/chunks/9dad7fd31627df80.js +1 -0
  227. package/.next/standalone/packages/ui/.next/static/chunks/{c3d4d07de959ecf1.js → a055d4b2866ff8d4.js} +1 -1
  228. package/.next/standalone/packages/ui/.next/static/chunks/afb7c5a4255f4081.js +3 -0
  229. package/.next/standalone/packages/ui/.next/static/chunks/{c557ac675be79771.js → b760a3a9c2c8be28.js} +1 -1
  230. package/.next/standalone/packages/ui/.next/static/chunks/dcdd95180149fa10.js +1 -0
  231. package/.next/standalone/packages/ui/.next/static/chunks/ebd89051637b9a47.js +4 -0
  232. package/.next/standalone/packages/ui/.next/static/chunks/f9db24028d8c058e.js +1 -0
  233. package/.next/standalone/packages/ui/.next/static/chunks/fb640f50455ba34f.js +1 -0
  234. package/.next/standalone/packages/ui/.next/static/chunks/turbopack-b9690cacbf9fe48c.js +3 -0
  235. package/.next/standalone/packages/ui/bin/ui.js +17 -7
  236. package/.next/standalone/packages/ui/package.json +2 -1
  237. package/.next/standalone/packages/ui/src/app/api/local-projects/list-directory/route.ts +38 -0
  238. package/.next/standalone/packages/ui/src/app/api/projects/[id]/route.ts +97 -0
  239. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/route.ts +38 -0
  240. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/[spec]/status/route.ts +97 -0
  241. package/.next/standalone/packages/ui/src/app/api/projects/[id]/specs/route.ts +7 -0
  242. package/.next/standalone/packages/ui/src/app/api/projects/[id]/stats/route.ts +19 -0
  243. package/.next/standalone/packages/ui/src/app/api/projects/route.ts +48 -1
  244. package/.next/standalone/packages/ui/src/app/dashboard-client.tsx +67 -6
  245. package/.next/standalone/packages/ui/src/app/layout.tsx +11 -8
  246. package/.next/standalone/packages/ui/src/app/not-found.tsx +1 -1
  247. package/.next/standalone/packages/ui/src/app/projects/[projectId]/layout.tsx +18 -0
  248. package/.next/standalone/packages/ui/src/app/projects/[projectId]/page.tsx +10 -0
  249. package/.next/standalone/packages/ui/src/app/projects/[projectId]/project-context-syncer.tsx +16 -0
  250. package/.next/standalone/packages/ui/src/app/projects/[projectId]/specs/[specId]/page.tsx +34 -0
  251. package/.next/standalone/packages/ui/src/app/projects/[projectId]/specs/page.tsx +20 -0
  252. package/.next/standalone/packages/ui/src/app/projects/page.tsx +156 -0
  253. package/.next/standalone/packages/ui/src/app/specs/specs-client.tsx +7 -2
  254. package/.next/standalone/packages/ui/src/components/create-project-dialog.tsx +139 -0
  255. package/.next/standalone/packages/ui/src/components/directory-picker.tsx +191 -0
  256. package/.next/standalone/packages/ui/src/components/main-sidebar.tsx +4 -0
  257. package/.next/standalone/packages/ui/src/components/project-switcher.tsx +105 -196
  258. package/.next/standalone/packages/ui/src/components/ui/dropdown-menu.tsx +200 -0
  259. package/.next/standalone/packages/ui/src/components/ui/popover.tsx +31 -0
  260. package/.next/standalone/packages/ui/src/contexts/project-context.tsx +10 -6
  261. package/.next/standalone/packages/ui/src/lib/db/index.ts +100 -0
  262. package/.next/standalone/packages/ui/src/lib/projects/registry.ts +77 -3
  263. package/.next/standalone/packages/ui/src/lib/specs/sources/multi-project-source.ts +4 -4
  264. package/.next/standalone/packages/ui/tsconfig.tsbuildinfo +1 -1
  265. package/.next/static/chunks/07f48b316e895080.js +1 -0
  266. package/.next/static/chunks/0a7be410b438418a.js +1 -0
  267. package/.next/static/chunks/1089ca88f6bef846.js +1 -0
  268. package/.next/static/chunks/17471c87082c392c.js +5 -0
  269. package/.next/static/chunks/220ba5cb8fe4dd69.js +1 -0
  270. package/.next/static/chunks/35ccd3286e538bd2.js +1 -0
  271. package/.next/static/chunks/571033caca823138.js +1 -0
  272. package/.next/static/chunks/5a6fc30cd64085b4.css +1 -0
  273. package/.next/static/chunks/5c2072ad938de8ed.js +1 -0
  274. package/.next/static/chunks/843e1dfdc28e1385.js +1 -0
  275. package/.next/static/chunks/9dad7fd31627df80.js +1 -0
  276. package/.next/static/chunks/{c3d4d07de959ecf1.js → a055d4b2866ff8d4.js} +1 -1
  277. package/.next/static/chunks/afb7c5a4255f4081.js +3 -0
  278. package/.next/static/chunks/{c557ac675be79771.js → b760a3a9c2c8be28.js} +1 -1
  279. package/.next/static/chunks/dcdd95180149fa10.js +1 -0
  280. package/.next/static/chunks/ebd89051637b9a47.js +4 -0
  281. package/.next/static/chunks/f9db24028d8c058e.js +1 -0
  282. package/.next/static/chunks/fb640f50455ba34f.js +1 -0
  283. package/.next/static/chunks/turbopack-b9690cacbf9fe48c.js +3 -0
  284. package/bin/ui.js +17 -7
  285. package/package.json +2 -1
  286. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__175bef84._.js +0 -3
  287. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__4b3c3001._.js +0 -21
  288. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__4b77d48f._.js +0 -3
  289. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__60b6d106._.js +0 -3
  290. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__a627840f._.js +0 -3
  291. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__beb134c0._.js +0 -3
  292. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c6689757._.js +0 -3
  293. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__c8a20942._.js +0 -3
  294. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__cd1fb0a2._.js +0 -4
  295. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__dfa71dcd._.js +0 -3
  296. package/.next/standalone/packages/ui/.next/server/chunks/[root-of-the-server]__e9ba3fa9._.js +0 -3
  297. package/.next/standalone/packages/ui/.next/server/chunks/ecee3_js-yaml_dist_js-yaml_mjs_0775f118._.js +0 -3
  298. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__a9d7fd42._.js +0 -3
  299. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b2fe773d._.js +0 -3
  300. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__b3633d6e._.js +0 -3
  301. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__e79a982a._.js +0 -7
  302. package/.next/standalone/packages/ui/.next/server/chunks/ssr/[root-of-the-server]__ff03fc1e._.js +0 -7
  303. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_66209e84._.js +0 -3
  304. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_6cd9a5e0._.js +0 -3
  305. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b483c9fe._.js +0 -3
  306. package/.next/standalone/packages/ui/.next/server/chunks/ssr/_b5040d31._.js +0 -5
  307. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_9710705b._.js +0 -3
  308. package/.next/standalone/packages/ui/.next/server/chunks/ssr/node_modules__pnpm_b8ff10b9._.js +0 -3
  309. package/.next/standalone/packages/ui/.next/static/chunks/093ea4b175adb770.js +0 -1
  310. package/.next/standalone/packages/ui/.next/static/chunks/5f97d665a4d9dc62.js +0 -3
  311. package/.next/standalone/packages/ui/.next/static/chunks/9b7b7024c39c5f99.js +0 -1
  312. package/.next/standalone/packages/ui/.next/static/chunks/aa47b212786d8695.js +0 -1
  313. package/.next/standalone/packages/ui/.next/static/chunks/ae04dcd433be6dab.js +0 -1
  314. package/.next/standalone/packages/ui/.next/static/chunks/c0576ccd1437ac5e.css +0 -1
  315. package/.next/standalone/packages/ui/.next/static/chunks/c0fe4c94c7282ac0.js +0 -4
  316. package/.next/standalone/packages/ui/.next/static/chunks/c61cbb6a0ba3b6ab.js +0 -1
  317. package/.next/standalone/packages/ui/.next/static/chunks/d79bf953f0dfb650.js +0 -1
  318. package/.next/standalone/packages/ui/.next/static/chunks/e50fb8d0b728cd35.js +0 -5
  319. package/.next/standalone/packages/ui/.next/static/chunks/e6e238dbf1d3e740.js +0 -1
  320. package/.next/standalone/packages/ui/.next/static/chunks/turbopack-9cc79aa1b34ffcbe.js +0 -3
  321. package/.next/static/chunks/093ea4b175adb770.js +0 -1
  322. package/.next/static/chunks/5f97d665a4d9dc62.js +0 -3
  323. package/.next/static/chunks/9b7b7024c39c5f99.js +0 -1
  324. package/.next/static/chunks/aa47b212786d8695.js +0 -1
  325. package/.next/static/chunks/ae04dcd433be6dab.js +0 -1
  326. package/.next/static/chunks/c0576ccd1437ac5e.css +0 -1
  327. package/.next/static/chunks/c0fe4c94c7282ac0.js +0 -4
  328. package/.next/static/chunks/c61cbb6a0ba3b6ab.js +0 -1
  329. package/.next/static/chunks/d79bf953f0dfb650.js +0 -1
  330. package/.next/static/chunks/e50fb8d0b728cd35.js +0 -5
  331. package/.next/static/chunks/e6e238dbf1d3e740.js +0 -1
  332. package/.next/static/chunks/turbopack-9cc79aa1b34ffcbe.js +0 -3
  333. /package/.next/standalone/packages/ui/.next/static/{fMRsihZys1Dhy9qQRwNrc → QbLmZXx5nz9BfL65s8oIP}/_buildManifest.js +0 -0
  334. /package/.next/standalone/packages/ui/.next/static/{fMRsihZys1Dhy9qQRwNrc → QbLmZXx5nz9BfL65s8oIP}/_clientMiddlewareManifest.json +0 -0
  335. /package/.next/standalone/packages/ui/.next/static/{fMRsihZys1Dhy9qQRwNrc → QbLmZXx5nz9BfL65s8oIP}/_ssgManifest.js +0 -0
  336. /package/.next/static/{fMRsihZys1Dhy9qQRwNrc → QbLmZXx5nz9BfL65s8oIP}/_buildManifest.js +0 -0
  337. /package/.next/static/{fMRsihZys1Dhy9qQRwNrc → QbLmZXx5nz9BfL65s8oIP}/_clientMiddlewareManifest.json +0 -0
  338. /package/.next/static/{fMRsihZys1Dhy9qQRwNrc → QbLmZXx5nz9BfL65s8oIP}/_ssgManifest.js +0 -0
@@ -10,6 +10,65 @@ module.exports=[87803,a=>{"use strict";let b,c;var d,e=a.i(25372);let f=Symbol.f
10
10
  hash text NOT NULL,
11
11
  created_at numeric
12
12
  )
13
- `;await b.run(e);let f=(await b.values($`SELECT id, hash, created_at FROM ${$.identifier(d)} ORDER BY created_at DESC LIMIT 1`))[0]??void 0;await b.transaction(async b=>{for(let c of a)if(!f||Number(f[2])<c.folderMillis){for(let a of c.sql)await b.run($.raw(a));await b.run($`INSERT INTO ${$.identifier(d)} ("hash", "created_at") VALUES(${c.hash}, ${c.folderMillis})`)}})}}class c5{static [f]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}}class c6{static [f]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(a){return this.then(void 0,a)}finally(a){return this.then(b=>(a?.(),b),b=>{throw a?.(),b})}then(a,b){return this.execute().then(a,b)}}class c7{static [f]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(a){this.fields=a.fields,this.session=a.session,this.dialect=a.dialect,this.withList=a.withList,this.distinct=a.distinct}from(a){let b,c=!!this.fields;return b=this.fields?this.fields:g(a,O)?Object.fromEntries(Object.keys(a._.selectedFields).map(b=>[b,a[b]])):g(a,c1)?a[R].selectedFields:g(a,V)?{}:a[t.Symbol.Columns],new c9({table:a,fields:b,isPartialSelect:c,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}}class c8 extends c5{static [f]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;constructor({table:a,fields:b,isPartialSelect:c,session:d,dialect:e,withList:f,distinct:g}){super(),this.config={withList:f,table:a,fields:{...b},distinct:g,setOperators:[]},this.isPartialSelect=c,this.session=d,this.dialect=e,this._={selectedFields:b},this.tableName=aj(a),this.joinsNotNullableMap="string"==typeof this.tableName?{[this.tableName]:!0}:{}}createJoin(a){return(b,c)=>{let d=this.tableName,e=aj(b);if("string"==typeof e&&this.config.joins?.some(a=>a.alias===e))throw Error(`Alias "${e}" is already used in this query`);if(!this.isPartialSelect&&(1===Object.keys(this.joinsNotNullableMap).length&&"string"==typeof d&&(this.config.fields={[d]:this.config.fields}),"string"==typeof e&&!g(b,V))){let a=g(b,O)?b._.selectedFields:g(b,ae)?b[R].selectedFields:b[t.Symbol.Columns];this.config.fields[e]=a}if("function"==typeof c&&(c=c(new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:c,table:b,joinType:a,alias:e}),"string"==typeof e)switch(a){case"left":this.joinsNotNullableMap[e]=!1;break;case"right":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([a])=>[a,!1])),this.joinsNotNullableMap[e]=!0;break;case"inner":this.joinsNotNullableMap[e]=!0;break;case"full":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([a])=>[a,!1])),this.joinsNotNullableMap[e]=!1}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");createSetOperator(a,b){return c=>{let d="function"==typeof c?c(db()):c;if(!ah(this.getSelectedFields(),d.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:a,isAll:b,rightSelect:d}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(a){return this.config.setOperators.push(...a),this}where(a){return"function"==typeof a&&(a=a(new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=a,this}having(a){return"function"==typeof a&&(a=a(new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=a,this}groupBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(b)?b:[b]}else this.config.groupBy=a;return this}orderBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),c=Array.isArray(b)?b:[b];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=c:this.config.orderBy=c}else this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=a:this.config.orderBy=a;return this}limit(a){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=a:this.config.limit=a,this}offset(a){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=a:this.config.offset=a,this}getSQL(){return this.dialect.buildSelectQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}as(a){return new Proxy(new O(this.getSQL(),this.config.fields,a),new ch({alias:a,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new ch({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}$dynamic(){return this}}class c9 extends c8{static [f]="SQLiteSelect";_prepare(a=!0){if(!this.session)throw Error("Cannot execute a query on a query builder. Please use a database instance instead.");let b=ag(this.config.fields),c=this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),b,"all",!0);return c.joinsNotNullableMap=this.joinsNotNullableMap,c}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(){return this.all()}}for(let a of[c6])for(let b of Object.getOwnPropertyNames(a.prototype))"constructor"!==b&&Object.defineProperty(c9.prototype,b,Object.getOwnPropertyDescriptor(a.prototype,b)||Object.create(null));function da(a,b){return(c,d,...e)=>{let f=[d,...e].map(c=>({type:a,isAll:b,rightSelect:c}));for(let a of f)if(!ah(c.getSelectedFields(),a.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return c.addSetOperators(f)}}let db=()=>({union:dc,unionAll:dd,intersect:de,except:df}),dc=da("union",!1),dd=da("union",!0),de=da("intersect",!1),df=da("except",!1);class dg{static [f]="SQLiteQueryBuilder";dialect;dialectConfig;constructor(a){this.dialect=g(a,c2)?a:void 0,this.dialectConfig=g(a,c2)?void 0:a}$with(a){let b=this;return{as:c=>("function"==typeof c&&(c=c(b)),new Proxy(new P(c.getSQL(),c.getSelectedFields(),a,!0),new ch({alias:a,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}}with(...a){let b=this;return{select:function(c){return new c7({fields:c??void 0,session:void 0,dialect:b.getDialect(),withList:a})},selectDistinct:function(c){return new c7({fields:c??void 0,session:void 0,dialect:b.getDialect(),withList:a,distinct:!0})}}}select(a){return new c7({fields:a??void 0,session:void 0,dialect:this.getDialect()})}selectDistinct(a){return new c7({fields:a??void 0,session:void 0,dialect:this.getDialect(),distinct:!0})}getDialect(){return this.dialect||(this.dialect=new c3(this.dialectConfig)),this.dialect}}class dh extends c6{constructor(a,b,c,d){super(),this.table=a,this.session=b,this.dialect=c,this.config={table:a,withList:d}}static [f]="SQLiteDelete";config;where(a){return this.config.where=a,this}orderBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.table[t.Symbol.Columns],new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),c=Array.isArray(b)?b:[b];this.config.orderBy=c}else this.config.orderBy=a;return this}limit(a){return this.config.limit=a,this}returning(a=this.table[c_.Symbol.Columns]){return this.config.returning=ag(a),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}_prepare(a=!0){return this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0)}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(a){return this._prepare().execute(a)}$dynamic(){return this}}class di{constructor(a,b,c,d){this.table=a,this.session=b,this.dialect=c,this.withList=d}static [f]="SQLiteInsertBuilder";values(a){if(0===(a=Array.isArray(a)?a:[a]).length)throw Error("values() must be called with at least one value");let b=a.map(a=>{let b={},c=this.table[t.Symbol.Columns];for(let d of Object.keys(a)){let e=a[d];b[d]=g(e,V)?e:new Z(e,c[d])}return b});return new dj(this.table,b,this.session,this.dialect,this.withList)}select(a){let b="function"==typeof a?a(new dg):a;if(!g(b,V)&&!ah(this.table[m],b._.selectedFields))throw Error("Insert select error: selected fields are not the same or are in a different order compared to the table definition");return new dj(this.table,b,this.session,this.dialect,this.withList,!0)}}class dj extends c6{constructor(a,b,c,d,e,f){super(),this.session=c,this.dialect=d,this.config={table:a,values:b,withList:e,select:f}}static [f]="SQLiteInsert";config;returning(a=this.config.table[c_.Symbol.Columns]){return this.config.returning=ag(a),this}onConflictDoNothing(a={}){if(void 0===a.target)this.config.onConflict=$`do nothing`;else{let b=Array.isArray(a.target)?$`${a.target}`:$`${[a.target]}`,c=a.where?$` where ${a.where}`:$``;this.config.onConflict=$`${b} do nothing${c}`}return this}onConflictDoUpdate(a){if(a.where&&(a.targetWhere||a.setWhere))throw Error('You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.');let b=a.where?$` where ${a.where}`:void 0,c=a.targetWhere?$` where ${a.targetWhere}`:void 0,d=a.setWhere?$` where ${a.setWhere}`:void 0,e=Array.isArray(a.target)?$`${a.target}`:$`${[a.target]}`,f=this.dialect.buildUpdateSet(this.config.table,ai(this.config.table,a.set));return this.config.onConflict=$`${e}${c} do update set ${f}${b}${d}`,this}getSQL(){return this.dialect.buildInsertQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}_prepare(a=!0){return this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0)}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}class dk{constructor(a,b,c,d){this.table=a,this.session=b,this.dialect=c,this.withList=d}static [f]="SQLiteUpdateBuilder";set(a){return new dl(this.table,ai(this.table,a),this.session,this.dialect,this.withList)}}class dl extends c6{constructor(a,b,c,d,e){super(),this.session=c,this.dialect=d,this.config={set:b,table:a,withList:e,joins:[]}}static [f]="SQLiteUpdate";config;from(a){return this.config.from=a,this}createJoin(a){return(b,c)=>{let d=aj(b);if("string"==typeof d&&this.config.joins.some(a=>a.alias===d))throw Error(`Alias "${d}" is already used in this query`);if("function"==typeof c){let a=this.config.from?g(b,c_)?b[t.Symbol.Columns]:g(b,O)?b._.selectedFields:g(b,c1)?b[R].selectedFields:void 0:void 0;c=c(new Proxy(this.config.table[t.Symbol.Columns],new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})),a&&new Proxy(a,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))}return this.config.joins.push({on:c,table:b,joinType:a,alias:d}),this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");where(a){return this.config.where=a,this}orderBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.table[t.Symbol.Columns],new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),c=Array.isArray(b)?b:[b];this.config.orderBy=c}else this.config.orderBy=a;return this}limit(a){return this.config.limit=a,this}returning(a=this.config.table[c_.Symbol.Columns]){return this.config.returning=ag(a),this}getSQL(){return this.dialect.buildUpdateQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}_prepare(a=!0){return this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0)}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}class dm extends V{constructor(a){super(dm.buildEmbeddedCount(a.source,a.filters).queryChunks),this.params=a,this.session=a.session,this.sql=dm.buildCount(a.source,a.filters)}sql;static [f]="SQLiteCountBuilderAsync";[Symbol.toStringTag]="SQLiteCountBuilderAsync";session;static buildEmbeddedCount(a,b){return $`(select count(*) from ${a}${$.raw(" where ").if(b)}${b})`}static buildCount(a,b){return $`select count(*) from ${a}${$.raw(" where ").if(b)}${b}`}then(a,b){return Promise.resolve(this.session.count(this.sql)).then(a,b)}catch(a){return this.then(void 0,a)}finally(a){return this.then(b=>(a?.(),b),b=>{throw a?.(),b})}}class dn{constructor(a,b,c,d,e,f,g,h){this.mode=a,this.fullSchema=b,this.schema=c,this.tableNamesMap=d,this.table=e,this.tableConfig=f,this.dialect=g,this.session=h}static [f]="SQLiteAsyncRelationalQueryBuilder";findMany(a){return"sync"===this.mode?new dq(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a||{},"many"):new dp(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a||{},"many")}findFirst(a){return"sync"===this.mode?new dq(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a?{...a,limit:1}:{limit:1},"first"):new dp(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a?{...a,limit:1}:{limit:1},"first")}}class dp extends c6{constructor(a,b,c,d,e,f,g,h,i){super(),this.fullSchema=a,this.schema=b,this.tableNamesMap=c,this.table=d,this.tableConfig=e,this.dialect=f,this.session=g,this.config=h,this.mode=i}static [f]="SQLiteAsyncRelationalQuery";mode;getSQL(){return this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}).sql}_prepare(a=!1){let{query:b,builtQuery:c}=this._toSQL();return this.session[a?"prepareOneTimeQuery":"prepareQuery"](c,void 0,"first"===this.mode?"get":"all",!0,(a,c)=>{let d=a.map(a=>(function a(b,c,d,e,f=a=>a){let h={};for(let[i,j]of e.entries())if(j.isJson){let e=c.relations[j.tsKey],k=d[i],l="string"==typeof k?JSON.parse(k):k;h[j.tsKey]=g(e,b6)?l&&a(b,b[j.relationTableTsKey],l,j.selection,f):l.map(c=>a(b,b[j.relationTableTsKey],c,j.selection,f))}else{let a,b=f(d[i]),c=j.field;a=g(c,v)?c:g(c,V)?c.decoder:c.sql.decoder,h[j.tsKey]=null===b?null:a.mapFromDriverValue(b)}return h})(this.schema,this.tableConfig,a,b.selection,c));return"first"===this.mode?d[0]:d})}prepare(){return this._prepare(!1)}_toSQL(){let a=this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}),b=this.dialect.sqlToQuery(a.sql);return{query:a,builtQuery:b}}toSQL(){return this._toSQL().builtQuery}executeRaw(){return"first"===this.mode?this._prepare(!1).get():this._prepare(!1).all()}async execute(){return this.executeRaw()}}class dq extends dp{static [f]="SQLiteSyncRelationalQuery";sync(){return this.executeRaw()}}class dr extends c6{constructor(a,b,c,d,e){super(),this.execute=a,this.getSQL=b,this.dialect=d,this.mapBatchResult=e,this.config={action:c}}static [f]="SQLiteRaw";config;getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.config.action}}mapResult(a,b){return b?this.mapBatchResult(a):a}_prepare(){return this}isResponseInArrayMode(){return!1}}class ds{constructor(a,b,c,d){this.resultKind=a,this.dialect=b,this.session=c,this._=d?{schema:d.schema,fullSchema:d.fullSchema,tableNamesMap:d.tableNamesMap}:{schema:void 0,fullSchema:{},tableNamesMap:{}},this.query={};const e=this.query;if(this._.schema)for(const[f,g]of Object.entries(this._.schema))e[f]=new dn(a,d.fullSchema,this._.schema,this._.tableNamesMap,d.fullSchema[f],g,b,c)}static [f]="BaseSQLiteDatabase";query;$with(a){let b=this;return{as:c=>("function"==typeof c&&(c=c(new dg(b.dialect))),new Proxy(new P(c.getSQL(),c.getSelectedFields(),a,!0),new ch({alias:a,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}}$count(a,b){return new dm({source:a,filters:b,session:this.session})}with(...a){let b=this;return{select:function(c){return new c7({fields:c??void 0,session:b.session,dialect:b.dialect,withList:a})},selectDistinct:function(c){return new c7({fields:c??void 0,session:b.session,dialect:b.dialect,withList:a,distinct:!0})},update:function(c){return new dk(c,b.session,b.dialect,a)},insert:function(c){return new di(c,b.session,b.dialect,a)},delete:function(c){return new dh(c,b.session,b.dialect,a)}}}select(a){return new c7({fields:a??void 0,session:this.session,dialect:this.dialect})}selectDistinct(a){return new c7({fields:a??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(a){return new dk(a,this.session,this.dialect)}insert(a){return new di(a,this.session,this.dialect)}delete(a){return new dh(a,this.session,this.dialect)}run(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.run(b),()=>b,"run",this.dialect,this.session.extractRawRunValueFromBatchResult.bind(this.session)):this.session.run(b)}all(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.all(b),()=>b,"all",this.dialect,this.session.extractRawAllValueFromBatchResult.bind(this.session)):this.session.all(b)}get(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.get(b),()=>b,"get",this.dialect,this.session.extractRawGetValueFromBatchResult.bind(this.session)):this.session.get(b)}values(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.values(b),()=>b,"values",this.dialect,this.session.extractRawValuesValueFromBatchResult.bind(this.session)):this.session.values(b)}transaction(a,b){return this.session.transaction(a,b)}}class dt extends c6{constructor(a){super(),this.resultCb=a}static [f]="ExecuteResultSync";async execute(){return this.resultCb()}sync(){return this.resultCb()}}class du{constructor(a,b,c){this.mode=a,this.executeMethod=b,this.query=c}static [f]="PreparedQuery";joinsNotNullableMap;getQuery(){return this.query}mapRunResult(a,b){return a}mapAllResult(a,b){throw Error("Not implemented")}mapGetResult(a,b){throw Error("Not implemented")}execute(a){return"async"===this.mode?this[this.executeMethod](a):new dt(()=>this[this.executeMethod](a))}mapResult(a,b){switch(this.executeMethod){case"run":return this.mapRunResult(a,b);case"all":return this.mapAllResult(a,b);case"get":return this.mapGetResult(a,b)}}}class dv{constructor(a){this.dialect=a}static [f]="SQLiteSession";prepareOneTimeQuery(a,b,c,d){return this.prepareQuery(a,b,c,d)}run(a){let b=this.dialect.sqlToQuery(a);try{return this.prepareOneTimeQuery(b,void 0,"run",!1).run()}catch(a){throw new cm({cause:a,message:`Failed to run the query '${b.sql}'`})}}extractRawRunValueFromBatchResult(a){return a}all(a){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(a),void 0,"run",!1).all()}extractRawAllValueFromBatchResult(a){throw Error("Not implemented")}get(a){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(a),void 0,"run",!1).get()}extractRawGetValueFromBatchResult(a){throw Error("Not implemented")}values(a){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(a),void 0,"run",!1).values()}async count(a){return(await this.values(a))[0][0]}extractRawValuesValueFromBatchResult(a){throw Error("Not implemented")}}class dw extends ds{constructor(a,b,c,d,e=0){super(a,b,c,d),this.schema=d,this.nestedIndex=e}static [f]="SQLiteTransaction";rollback(){throw new cn}}class dx extends dv{constructor(a,b,c,d={}){super(b),this.client=a,this.schema=c,this.logger=d.logger??new j}static [f]="BetterSQLiteSession";logger;prepareQuery(a,b,c,d,e){return new dz(this.client.prepare(a.sql),a,this.logger,b,c,d,e)}transaction(a,b={}){let c=new dy("sync",this.dialect,this,this.schema);return this.client.transaction(a)[b.behavior??"deferred"](c)}}class dy extends dw{static [f]="BetterSQLiteTransaction";transaction(a){let b=`sp${this.nestedIndex}`,c=new dy("sync",this.dialect,this.session,this.schema,this.nestedIndex+1);this.session.run($.raw(`savepoint ${b}`));try{let d=a(c);return this.session.run($.raw(`release savepoint ${b}`)),d}catch(a){throw this.session.run($.raw(`rollback to savepoint ${b}`)),a}}}class dz extends du{constructor(a,b,c,d,e,f,g){super("sync",e,b),this.stmt=a,this.logger=c,this.fields=d,this._isResponseInArrayMode=f,this.customResultMapper=g}static [f]="BetterSQLitePreparedQuery";run(a){let b=ac(this.query.params,a??{});return this.logger.logQuery(this.query.sql,b),this.stmt.run(...b)}all(a){let{fields:b,joinsNotNullableMap:c,query:d,logger:e,stmt:f,customResultMapper:g}=this;if(!b&&!g){let b=ac(d.params,a??{});return e.logQuery(d.sql,b),f.all(...b)}let h=this.values(a);return g?g(h):h.map(a=>af(b,a,c))}get(a){let b=ac(this.query.params,a??{});this.logger.logQuery(this.query.sql,b);let{fields:c,stmt:d,joinsNotNullableMap:e,customResultMapper:f}=this;if(!c&&!f)return d.get(...b);let g=d.raw().get(...b);if(g)return f?f([g]):af(c,g,e)}values(a){let b=ac(this.query.params,a??{});return this.logger.logQuery(this.query.sql,b),this.stmt.raw().all(...b)}isResponseInArrayMode(){return this._isResponseInArrayMode}}class dA extends ds{static [f]="BetterSQLite3Database"}function dB(a,b={}){let c,d,e=new c3({casing:b.casing});if(!0===b.logger?c=new i:!1!==b.logger&&(c=b.logger),b.schema){let a=function(a,b){1===Object.keys(a).length&&"default"in a&&!g(a.default,t)&&(a=a.default);let c={},d={},e={};for(let[f,h]of Object.entries(a))if(g(h,t)){let a=u(h),b=d[a];for(let d of(c[a]=f,e[f]={tsName:f,dbName:h[t.Symbol.Name],schema:h[t.Symbol.Schema],columns:h[t.Symbol.Columns],relations:b?.relations??{},primaryKey:b?.primaryKey??[]},Object.values(h[t.Symbol.Columns])))d.primary&&e[f].primaryKey.push(d);let i=h[t.Symbol.ExtraConfigBuilder]?.(h[t.Symbol.ExtraConfigColumns]);if(i)for(let a of Object.values(i))g(a,bG)&&e[f].primaryKey.push(...a.columns)}else if(g(h,b5)){let a,f=u(h.table),g=c[f];for(let[c,i]of Object.entries(h.config(b(h.table))))if(g){let b=e[g];b.relations[c]=i,a&&b.primaryKey.push(...a)}else f in d||(d[f]={relations:{},primaryKey:a}),d[f].relations[c]=i}return{tables:e,tableNamesMap:c}}(b.schema,b9);d={fullSchema:b.schema,schema:a.tables,tableNamesMap:a.tableNamesMap}}let f=new dx(a,e,d,{logger:c}),h=new dA("sync",e,f,d);return h.$client=a,h}function dC(...a){if(void 0===a[0]||"string"==typeof a[0])return dB(void 0===a[0]?new e.default:new e.default(a[0]),a[1]);if(function(a){if("object"!=typeof a||null===a||"Object"!==a.constructor.name)return!1;if("logger"in a){let b=typeof a.logger;return"boolean"===b||"object"===b&&"function"==typeof a.logger.logQuery||"undefined"===b}if("schema"in a){let b=typeof a.logger;return"object"===b||"undefined"===b}if("casing"in a){let b=typeof a.logger;return"string"===b||"undefined"===b}if("mode"in a)return"default"===a.mode&&"planetscale"===a.mode&&void 0===a.mode;if("connection"in a){let b=typeof a.connection;return"string"===b||"object"===b||"undefined"===b}if("client"in a){let b=typeof a.client;return"object"===b||"function"===b||"undefined"===b}return 0===Object.keys(a).length}(a[0])){let{connection:b,client:c,...d}=a[0];if(c)return dB(c,d);if("object"==typeof b){let{source:a,...c}=b;return dB(new e.default(a,c),d)}return dB(new e.default(b),d)}return dB(a[0],a[1])}(dC||(dC={})).mock=function(a){return dB({},a)};class dD{constructor(a,b){this.name=a,this.unique=b}static [f]="SQLiteIndexBuilderOn";on(...a){return new dE(this.name,a,this.unique)}}class dE{static [f]="SQLiteIndexBuilder";config;constructor(a,b,c){this.config={name:a,columns:b,unique:c,where:void 0}}where(a){return this.config.where=a,this}build(a){return new dF(this.config,a)}}class dF{static [f]="SQLiteIndex";config;constructor(a,b){this.config={...a,table:b}}}let dG=c0("projects",{id:cZ("id").primaryKey(),githubOwner:cZ("github_owner").notNull(),githubRepo:cZ("github_repo").notNull(),displayName:cZ("display_name"),description:cZ("description"),homepageUrl:cZ("homepage_url"),stars:cO("stars").default(0),isPublic:cO("is_public",{mode:"boolean"}).default(!0),isFeatured:cO("is_featured",{mode:"boolean"}).default(!1),lastSyncedAt:cO("last_synced_at",{mode:"timestamp"}),createdAt:cO("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),updatedAt:cO("updated_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),dH=c0("specs",{id:cZ("id").primaryKey(),projectId:cZ("project_id").notNull().references(()=>dG.id,{onDelete:"cascade"}),specNumber:cO("spec_number"),specName:cZ("spec_name").notNull(),title:cZ("title"),status:cZ("status",{enum:["planned","in-progress","complete","archived"]}),priority:cZ("priority",{enum:["low","medium","high","critical"]}),tags:cZ("tags"),assignee:cZ("assignee"),contentMd:cZ("content_md").notNull(),contentHtml:cZ("content_html"),createdAt:cO("created_at",{mode:"timestamp"}),updatedAt:cO("updated_at",{mode:"timestamp"}),completedAt:cO("completed_at",{mode:"timestamp"}),filePath:cZ("file_path").notNull(),githubUrl:cZ("github_url"),syncedAt:cO("synced_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},a=>({uniqueSpecNumber:new dD("unique_spec_number",!0).on(a.projectId,a.specNumber)})),dI=c0("spec_relationships",{id:cZ("id").primaryKey(),specId:cZ("spec_id").notNull().references(()=>dH.id,{onDelete:"cascade"}),relatedSpecId:cZ("related_spec_id").notNull().references(()=>dH.id,{onDelete:"cascade"}),relationshipType:cZ("relationship_type",{enum:["depends_on","related"]}).notNull(),createdAt:cO("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),dJ=c0("sync_logs",{id:cZ("id").primaryKey(),projectId:cZ("project_id").notNull().references(()=>dG.id,{onDelete:"cascade"}),status:cZ("status",{enum:["pending","running","success","failed"]}).notNull(),specsAdded:cO("specs_added").default(0),specsUpdated:cO("specs_updated").default(0),specsDeleted:cO("specs_deleted").default(0),errorMessage:cZ("error_message"),startedAt:cO("started_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),completedAt:cO("completed_at",{mode:"timestamp"}),durationMs:cO("duration_ms")}),dK=b8(dG,({many:a})=>({specs:a(dH),syncLogs:a(dJ)})),dL=b8(dH,({one:a,many:b})=>({project:a(dG,{fields:[dH.projectId],references:[dG.id]}),dependencies:b(dI,{relationName:"spec"}),dependents:b(dI,{relationName:"relatedSpec"})})),dM=b8(dI,({one:a})=>({spec:a(dH,{fields:[dI.specId],references:[dH.id],relationName:"spec"}),relatedSpec:a(dH,{fields:[dI.relatedSpecId],references:[dH.id],relationName:"relatedSpec"})})),dN=b8(dJ,({one:a})=>({project:a(dG,{fields:[dJ.projectId],references:[dG.id]})}));a.s(["projects",0,dG,"projectsRelations",0,dK,"specRelationships",0,dI,"specRelationshipsRelations",0,dM,"specs",0,dH,"specsRelations",0,dL,"syncLogs",0,dJ,"syncLogsRelations",0,dN],21644);var dO=a.i(21644),dP=a.i(14747);let dQ=null,dR=null,dS=new Proxy({},{get:(a,b,c)=>Reflect.get(function(){if(!dQ){let a=process.env.DATABASE_PATH||(0,dP.join)(process.cwd(),"leanspec.db");dR=new e.default(a),dQ=dC(dR,{schema:dO})}return dQ}(),b,c)});class dT{async getAllSpecs(a){let b=a?dS.select().from(dO.specs).where(bJ(dO.specs.projectId,a)):dS.select().from(dO.specs);return await b.orderBy(dO.specs.specNumber)}async getSpec(a,b){if(!b)return null;let c=parseInt(a.split("-")[0],10);if(isNaN(c))return null;let d=await dS.select().from(dO.specs).where(bL(bJ(dO.specs.projectId,b),bJ(dO.specs.specNumber,c))).limit(1);return d.length>0?d[0]:null}async getSpecsByStatus(a,b){let c=[bJ(dO.specs.status,a)];return b&&c.push(bJ(dO.specs.projectId,b)),await dS.select().from(dO.specs).where(bL(...c)).orderBy(dO.specs.specNumber)}async searchSpecs(a,b){let c=await this.getAllSpecs(b),d=a.toLowerCase();return c.filter(a=>a.specName.toLowerCase().includes(d)||a.title?.toLowerCase().includes(d)||a.contentMd.toLowerCase().includes(d))}invalidateCache(){}}a.s(["DatabaseSource",()=>dT],87803)}];
13
+ `;await b.run(e);let f=(await b.values($`SELECT id, hash, created_at FROM ${$.identifier(d)} ORDER BY created_at DESC LIMIT 1`))[0]??void 0;await b.transaction(async b=>{for(let c of a)if(!f||Number(f[2])<c.folderMillis){for(let a of c.sql)await b.run($.raw(a));await b.run($`INSERT INTO ${$.identifier(d)} ("hash", "created_at") VALUES(${c.hash}, ${c.folderMillis})`)}})}}class c5{static [f]="TypedQueryBuilder";getSelectedFields(){return this._.selectedFields}}class c6{static [f]="QueryPromise";[Symbol.toStringTag]="QueryPromise";catch(a){return this.then(void 0,a)}finally(a){return this.then(b=>(a?.(),b),b=>{throw a?.(),b})}then(a,b){return this.execute().then(a,b)}}class c7{static [f]="SQLiteSelectBuilder";fields;session;dialect;withList;distinct;constructor(a){this.fields=a.fields,this.session=a.session,this.dialect=a.dialect,this.withList=a.withList,this.distinct=a.distinct}from(a){let b,c=!!this.fields;return b=this.fields?this.fields:g(a,O)?Object.fromEntries(Object.keys(a._.selectedFields).map(b=>[b,a[b]])):g(a,c1)?a[R].selectedFields:g(a,V)?{}:a[t.Symbol.Columns],new c9({table:a,fields:b,isPartialSelect:c,session:this.session,dialect:this.dialect,withList:this.withList,distinct:this.distinct})}}class c8 extends c5{static [f]="SQLiteSelectQueryBuilder";_;config;joinsNotNullableMap;tableName;isPartialSelect;session;dialect;constructor({table:a,fields:b,isPartialSelect:c,session:d,dialect:e,withList:f,distinct:g}){super(),this.config={withList:f,table:a,fields:{...b},distinct:g,setOperators:[]},this.isPartialSelect=c,this.session=d,this.dialect=e,this._={selectedFields:b},this.tableName=aj(a),this.joinsNotNullableMap="string"==typeof this.tableName?{[this.tableName]:!0}:{}}createJoin(a){return(b,c)=>{let d=this.tableName,e=aj(b);if("string"==typeof e&&this.config.joins?.some(a=>a.alias===e))throw Error(`Alias "${e}" is already used in this query`);if(!this.isPartialSelect&&(1===Object.keys(this.joinsNotNullableMap).length&&"string"==typeof d&&(this.config.fields={[d]:this.config.fields}),"string"==typeof e&&!g(b,V))){let a=g(b,O)?b._.selectedFields:g(b,ae)?b[R].selectedFields:b[t.Symbol.Columns];this.config.fields[e]=a}if("function"==typeof c&&(c=c(new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.joins||(this.config.joins=[]),this.config.joins.push({on:c,table:b,joinType:a,alias:e}),"string"==typeof e)switch(a){case"left":this.joinsNotNullableMap[e]=!1;break;case"right":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([a])=>[a,!1])),this.joinsNotNullableMap[e]=!0;break;case"inner":this.joinsNotNullableMap[e]=!0;break;case"full":this.joinsNotNullableMap=Object.fromEntries(Object.entries(this.joinsNotNullableMap).map(([a])=>[a,!1])),this.joinsNotNullableMap[e]=!1}return this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");createSetOperator(a,b){return c=>{let d="function"==typeof c?c(db()):c;if(!ah(this.getSelectedFields(),d.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return this.config.setOperators.push({type:a,isAll:b,rightSelect:d}),this}}union=this.createSetOperator("union",!1);unionAll=this.createSetOperator("union",!0);intersect=this.createSetOperator("intersect",!1);except=this.createSetOperator("except",!1);addSetOperators(a){return this.config.setOperators.push(...a),this}where(a){return"function"==typeof a&&(a=a(new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.where=a,this}having(a){return"function"==typeof a&&(a=a(new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))),this.config.having=a,this}groupBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"})));this.config.groupBy=Array.isArray(b)?b:[b]}else this.config.groupBy=a;return this}orderBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.fields,new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),c=Array.isArray(b)?b:[b];this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=c:this.config.orderBy=c}else this.config.setOperators.length>0?this.config.setOperators.at(-1).orderBy=a:this.config.orderBy=a;return this}limit(a){return this.config.setOperators.length>0?this.config.setOperators.at(-1).limit=a:this.config.limit=a,this}offset(a){return this.config.setOperators.length>0?this.config.setOperators.at(-1).offset=a:this.config.offset=a,this}getSQL(){return this.dialect.buildSelectQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}as(a){return new Proxy(new O(this.getSQL(),this.config.fields,a),new ch({alias:a,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}getSelectedFields(){return new Proxy(this.config.fields,new ch({alias:this.tableName,sqlAliasedBehavior:"alias",sqlBehavior:"error"}))}$dynamic(){return this}}class c9 extends c8{static [f]="SQLiteSelect";_prepare(a=!0){if(!this.session)throw Error("Cannot execute a query on a query builder. Please use a database instance instead.");let b=ag(this.config.fields),c=this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),b,"all",!0);return c.joinsNotNullableMap=this.joinsNotNullableMap,c}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(){return this.all()}}for(let a of[c6])for(let b of Object.getOwnPropertyNames(a.prototype))"constructor"!==b&&Object.defineProperty(c9.prototype,b,Object.getOwnPropertyDescriptor(a.prototype,b)||Object.create(null));function da(a,b){return(c,d,...e)=>{let f=[d,...e].map(c=>({type:a,isAll:b,rightSelect:c}));for(let a of f)if(!ah(c.getSelectedFields(),a.rightSelect.getSelectedFields()))throw Error("Set operator error (union / intersect / except): selected fields are not the same or are in a different order");return c.addSetOperators(f)}}let db=()=>({union:dc,unionAll:dd,intersect:de,except:df}),dc=da("union",!1),dd=da("union",!0),de=da("intersect",!1),df=da("except",!1);class dg{static [f]="SQLiteQueryBuilder";dialect;dialectConfig;constructor(a){this.dialect=g(a,c2)?a:void 0,this.dialectConfig=g(a,c2)?void 0:a}$with(a){let b=this;return{as:c=>("function"==typeof c&&(c=c(b)),new Proxy(new P(c.getSQL(),c.getSelectedFields(),a,!0),new ch({alias:a,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}}with(...a){let b=this;return{select:function(c){return new c7({fields:c??void 0,session:void 0,dialect:b.getDialect(),withList:a})},selectDistinct:function(c){return new c7({fields:c??void 0,session:void 0,dialect:b.getDialect(),withList:a,distinct:!0})}}}select(a){return new c7({fields:a??void 0,session:void 0,dialect:this.getDialect()})}selectDistinct(a){return new c7({fields:a??void 0,session:void 0,dialect:this.getDialect(),distinct:!0})}getDialect(){return this.dialect||(this.dialect=new c3(this.dialectConfig)),this.dialect}}class dh extends c6{constructor(a,b,c,d){super(),this.table=a,this.session=b,this.dialect=c,this.config={table:a,withList:d}}static [f]="SQLiteDelete";config;where(a){return this.config.where=a,this}orderBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.table[t.Symbol.Columns],new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),c=Array.isArray(b)?b:[b];this.config.orderBy=c}else this.config.orderBy=a;return this}limit(a){return this.config.limit=a,this}returning(a=this.table[c_.Symbol.Columns]){return this.config.returning=ag(a),this}getSQL(){return this.dialect.buildDeleteQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}_prepare(a=!0){return this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0)}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(a){return this._prepare().execute(a)}$dynamic(){return this}}class di{constructor(a,b,c,d){this.table=a,this.session=b,this.dialect=c,this.withList=d}static [f]="SQLiteInsertBuilder";values(a){if(0===(a=Array.isArray(a)?a:[a]).length)throw Error("values() must be called with at least one value");let b=a.map(a=>{let b={},c=this.table[t.Symbol.Columns];for(let d of Object.keys(a)){let e=a[d];b[d]=g(e,V)?e:new Z(e,c[d])}return b});return new dj(this.table,b,this.session,this.dialect,this.withList)}select(a){let b="function"==typeof a?a(new dg):a;if(!g(b,V)&&!ah(this.table[m],b._.selectedFields))throw Error("Insert select error: selected fields are not the same or are in a different order compared to the table definition");return new dj(this.table,b,this.session,this.dialect,this.withList,!0)}}class dj extends c6{constructor(a,b,c,d,e,f){super(),this.session=c,this.dialect=d,this.config={table:a,values:b,withList:e,select:f}}static [f]="SQLiteInsert";config;returning(a=this.config.table[c_.Symbol.Columns]){return this.config.returning=ag(a),this}onConflictDoNothing(a={}){if(void 0===a.target)this.config.onConflict=$`do nothing`;else{let b=Array.isArray(a.target)?$`${a.target}`:$`${[a.target]}`,c=a.where?$` where ${a.where}`:$``;this.config.onConflict=$`${b} do nothing${c}`}return this}onConflictDoUpdate(a){if(a.where&&(a.targetWhere||a.setWhere))throw Error('You cannot use both "where" and "targetWhere"/"setWhere" at the same time - "where" is deprecated, use "targetWhere" or "setWhere" instead.');let b=a.where?$` where ${a.where}`:void 0,c=a.targetWhere?$` where ${a.targetWhere}`:void 0,d=a.setWhere?$` where ${a.setWhere}`:void 0,e=Array.isArray(a.target)?$`${a.target}`:$`${[a.target]}`,f=this.dialect.buildUpdateSet(this.config.table,ai(this.config.table,a.set));return this.config.onConflict=$`${e}${c} do update set ${f}${b}${d}`,this}getSQL(){return this.dialect.buildInsertQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}_prepare(a=!0){return this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0)}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}class dk{constructor(a,b,c,d){this.table=a,this.session=b,this.dialect=c,this.withList=d}static [f]="SQLiteUpdateBuilder";set(a){return new dl(this.table,ai(this.table,a),this.session,this.dialect,this.withList)}}class dl extends c6{constructor(a,b,c,d,e){super(),this.session=c,this.dialect=d,this.config={set:b,table:a,withList:e,joins:[]}}static [f]="SQLiteUpdate";config;from(a){return this.config.from=a,this}createJoin(a){return(b,c)=>{let d=aj(b);if("string"==typeof d&&this.config.joins.some(a=>a.alias===d))throw Error(`Alias "${d}" is already used in this query`);if("function"==typeof c){let a=this.config.from?g(b,c_)?b[t.Symbol.Columns]:g(b,O)?b._.selectedFields:g(b,c1)?b[R].selectedFields:void 0:void 0;c=c(new Proxy(this.config.table[t.Symbol.Columns],new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})),a&&new Proxy(a,new ch({sqlAliasedBehavior:"sql",sqlBehavior:"sql"})))}return this.config.joins.push({on:c,table:b,joinType:a,alias:d}),this}}leftJoin=this.createJoin("left");rightJoin=this.createJoin("right");innerJoin=this.createJoin("inner");fullJoin=this.createJoin("full");where(a){return this.config.where=a,this}orderBy(...a){if("function"==typeof a[0]){let b=a[0](new Proxy(this.config.table[t.Symbol.Columns],new ch({sqlAliasedBehavior:"alias",sqlBehavior:"sql"}))),c=Array.isArray(b)?b:[b];this.config.orderBy=c}else this.config.orderBy=a;return this}limit(a){return this.config.limit=a,this}returning(a=this.config.table[c_.Symbol.Columns]){return this.config.returning=ag(a),this}getSQL(){return this.dialect.buildUpdateQuery(this.config)}toSQL(){let{typings:a,...b}=this.dialect.sqlToQuery(this.getSQL());return b}_prepare(a=!0){return this.session[a?"prepareOneTimeQuery":"prepareQuery"](this.dialect.sqlToQuery(this.getSQL()),this.config.returning,this.config.returning?"all":"run",!0)}prepare(){return this._prepare(!1)}run=a=>this._prepare().run(a);all=a=>this._prepare().all(a);get=a=>this._prepare().get(a);values=a=>this._prepare().values(a);async execute(){return this.config.returning?this.all():this.run()}$dynamic(){return this}}class dm extends V{constructor(a){super(dm.buildEmbeddedCount(a.source,a.filters).queryChunks),this.params=a,this.session=a.session,this.sql=dm.buildCount(a.source,a.filters)}sql;static [f]="SQLiteCountBuilderAsync";[Symbol.toStringTag]="SQLiteCountBuilderAsync";session;static buildEmbeddedCount(a,b){return $`(select count(*) from ${a}${$.raw(" where ").if(b)}${b})`}static buildCount(a,b){return $`select count(*) from ${a}${$.raw(" where ").if(b)}${b}`}then(a,b){return Promise.resolve(this.session.count(this.sql)).then(a,b)}catch(a){return this.then(void 0,a)}finally(a){return this.then(b=>(a?.(),b),b=>{throw a?.(),b})}}class dn{constructor(a,b,c,d,e,f,g,h){this.mode=a,this.fullSchema=b,this.schema=c,this.tableNamesMap=d,this.table=e,this.tableConfig=f,this.dialect=g,this.session=h}static [f]="SQLiteAsyncRelationalQueryBuilder";findMany(a){return"sync"===this.mode?new dq(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a||{},"many"):new dp(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a||{},"many")}findFirst(a){return"sync"===this.mode?new dq(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a?{...a,limit:1}:{limit:1},"first"):new dp(this.fullSchema,this.schema,this.tableNamesMap,this.table,this.tableConfig,this.dialect,this.session,a?{...a,limit:1}:{limit:1},"first")}}class dp extends c6{constructor(a,b,c,d,e,f,g,h,i){super(),this.fullSchema=a,this.schema=b,this.tableNamesMap=c,this.table=d,this.tableConfig=e,this.dialect=f,this.session=g,this.config=h,this.mode=i}static [f]="SQLiteAsyncRelationalQuery";mode;getSQL(){return this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}).sql}_prepare(a=!1){let{query:b,builtQuery:c}=this._toSQL();return this.session[a?"prepareOneTimeQuery":"prepareQuery"](c,void 0,"first"===this.mode?"get":"all",!0,(a,c)=>{let d=a.map(a=>(function a(b,c,d,e,f=a=>a){let h={};for(let[i,j]of e.entries())if(j.isJson){let e=c.relations[j.tsKey],k=d[i],l="string"==typeof k?JSON.parse(k):k;h[j.tsKey]=g(e,b6)?l&&a(b,b[j.relationTableTsKey],l,j.selection,f):l.map(c=>a(b,b[j.relationTableTsKey],c,j.selection,f))}else{let a,b=f(d[i]),c=j.field;a=g(c,v)?c:g(c,V)?c.decoder:c.sql.decoder,h[j.tsKey]=null===b?null:a.mapFromDriverValue(b)}return h})(this.schema,this.tableConfig,a,b.selection,c));return"first"===this.mode?d[0]:d})}prepare(){return this._prepare(!1)}_toSQL(){let a=this.dialect.buildRelationalQuery({fullSchema:this.fullSchema,schema:this.schema,tableNamesMap:this.tableNamesMap,table:this.table,tableConfig:this.tableConfig,queryConfig:this.config,tableAlias:this.tableConfig.tsName}),b=this.dialect.sqlToQuery(a.sql);return{query:a,builtQuery:b}}toSQL(){return this._toSQL().builtQuery}executeRaw(){return"first"===this.mode?this._prepare(!1).get():this._prepare(!1).all()}async execute(){return this.executeRaw()}}class dq extends dp{static [f]="SQLiteSyncRelationalQuery";sync(){return this.executeRaw()}}class dr extends c6{constructor(a,b,c,d,e){super(),this.execute=a,this.getSQL=b,this.dialect=d,this.mapBatchResult=e,this.config={action:c}}static [f]="SQLiteRaw";config;getQuery(){return{...this.dialect.sqlToQuery(this.getSQL()),method:this.config.action}}mapResult(a,b){return b?this.mapBatchResult(a):a}_prepare(){return this}isResponseInArrayMode(){return!1}}class ds{constructor(a,b,c,d){this.resultKind=a,this.dialect=b,this.session=c,this._=d?{schema:d.schema,fullSchema:d.fullSchema,tableNamesMap:d.tableNamesMap}:{schema:void 0,fullSchema:{},tableNamesMap:{}},this.query={};const e=this.query;if(this._.schema)for(const[f,g]of Object.entries(this._.schema))e[f]=new dn(a,d.fullSchema,this._.schema,this._.tableNamesMap,d.fullSchema[f],g,b,c)}static [f]="BaseSQLiteDatabase";query;$with(a){let b=this;return{as:c=>("function"==typeof c&&(c=c(new dg(b.dialect))),new Proxy(new P(c.getSQL(),c.getSelectedFields(),a,!0),new ch({alias:a,sqlAliasedBehavior:"alias",sqlBehavior:"error"})))}}$count(a,b){return new dm({source:a,filters:b,session:this.session})}with(...a){let b=this;return{select:function(c){return new c7({fields:c??void 0,session:b.session,dialect:b.dialect,withList:a})},selectDistinct:function(c){return new c7({fields:c??void 0,session:b.session,dialect:b.dialect,withList:a,distinct:!0})},update:function(c){return new dk(c,b.session,b.dialect,a)},insert:function(c){return new di(c,b.session,b.dialect,a)},delete:function(c){return new dh(c,b.session,b.dialect,a)}}}select(a){return new c7({fields:a??void 0,session:this.session,dialect:this.dialect})}selectDistinct(a){return new c7({fields:a??void 0,session:this.session,dialect:this.dialect,distinct:!0})}update(a){return new dk(a,this.session,this.dialect)}insert(a){return new di(a,this.session,this.dialect)}delete(a){return new dh(a,this.session,this.dialect)}run(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.run(b),()=>b,"run",this.dialect,this.session.extractRawRunValueFromBatchResult.bind(this.session)):this.session.run(b)}all(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.all(b),()=>b,"all",this.dialect,this.session.extractRawAllValueFromBatchResult.bind(this.session)):this.session.all(b)}get(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.get(b),()=>b,"get",this.dialect,this.session.extractRawGetValueFromBatchResult.bind(this.session)):this.session.get(b)}values(a){let b="string"==typeof a?$.raw(a):a.getSQL();return"async"===this.resultKind?new dr(async()=>this.session.values(b),()=>b,"values",this.dialect,this.session.extractRawValuesValueFromBatchResult.bind(this.session)):this.session.values(b)}transaction(a,b){return this.session.transaction(a,b)}}class dt extends c6{constructor(a){super(),this.resultCb=a}static [f]="ExecuteResultSync";async execute(){return this.resultCb()}sync(){return this.resultCb()}}class du{constructor(a,b,c){this.mode=a,this.executeMethod=b,this.query=c}static [f]="PreparedQuery";joinsNotNullableMap;getQuery(){return this.query}mapRunResult(a,b){return a}mapAllResult(a,b){throw Error("Not implemented")}mapGetResult(a,b){throw Error("Not implemented")}execute(a){return"async"===this.mode?this[this.executeMethod](a):new dt(()=>this[this.executeMethod](a))}mapResult(a,b){switch(this.executeMethod){case"run":return this.mapRunResult(a,b);case"all":return this.mapAllResult(a,b);case"get":return this.mapGetResult(a,b)}}}class dv{constructor(a){this.dialect=a}static [f]="SQLiteSession";prepareOneTimeQuery(a,b,c,d){return this.prepareQuery(a,b,c,d)}run(a){let b=this.dialect.sqlToQuery(a);try{return this.prepareOneTimeQuery(b,void 0,"run",!1).run()}catch(a){throw new cm({cause:a,message:`Failed to run the query '${b.sql}'`})}}extractRawRunValueFromBatchResult(a){return a}all(a){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(a),void 0,"run",!1).all()}extractRawAllValueFromBatchResult(a){throw Error("Not implemented")}get(a){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(a),void 0,"run",!1).get()}extractRawGetValueFromBatchResult(a){throw Error("Not implemented")}values(a){return this.prepareOneTimeQuery(this.dialect.sqlToQuery(a),void 0,"run",!1).values()}async count(a){return(await this.values(a))[0][0]}extractRawValuesValueFromBatchResult(a){throw Error("Not implemented")}}class dw extends ds{constructor(a,b,c,d,e=0){super(a,b,c,d),this.schema=d,this.nestedIndex=e}static [f]="SQLiteTransaction";rollback(){throw new cn}}class dx extends dv{constructor(a,b,c,d={}){super(b),this.client=a,this.schema=c,this.logger=d.logger??new j}static [f]="BetterSQLiteSession";logger;prepareQuery(a,b,c,d,e){return new dz(this.client.prepare(a.sql),a,this.logger,b,c,d,e)}transaction(a,b={}){let c=new dy("sync",this.dialect,this,this.schema);return this.client.transaction(a)[b.behavior??"deferred"](c)}}class dy extends dw{static [f]="BetterSQLiteTransaction";transaction(a){let b=`sp${this.nestedIndex}`,c=new dy("sync",this.dialect,this.session,this.schema,this.nestedIndex+1);this.session.run($.raw(`savepoint ${b}`));try{let d=a(c);return this.session.run($.raw(`release savepoint ${b}`)),d}catch(a){throw this.session.run($.raw(`rollback to savepoint ${b}`)),a}}}class dz extends du{constructor(a,b,c,d,e,f,g){super("sync",e,b),this.stmt=a,this.logger=c,this.fields=d,this._isResponseInArrayMode=f,this.customResultMapper=g}static [f]="BetterSQLitePreparedQuery";run(a){let b=ac(this.query.params,a??{});return this.logger.logQuery(this.query.sql,b),this.stmt.run(...b)}all(a){let{fields:b,joinsNotNullableMap:c,query:d,logger:e,stmt:f,customResultMapper:g}=this;if(!b&&!g){let b=ac(d.params,a??{});return e.logQuery(d.sql,b),f.all(...b)}let h=this.values(a);return g?g(h):h.map(a=>af(b,a,c))}get(a){let b=ac(this.query.params,a??{});this.logger.logQuery(this.query.sql,b);let{fields:c,stmt:d,joinsNotNullableMap:e,customResultMapper:f}=this;if(!c&&!f)return d.get(...b);let g=d.raw().get(...b);if(g)return f?f([g]):af(c,g,e)}values(a){let b=ac(this.query.params,a??{});return this.logger.logQuery(this.query.sql,b),this.stmt.raw().all(...b)}isResponseInArrayMode(){return this._isResponseInArrayMode}}class dA extends ds{static [f]="BetterSQLite3Database"}function dB(a,b={}){let c,d,e=new c3({casing:b.casing});if(!0===b.logger?c=new i:!1!==b.logger&&(c=b.logger),b.schema){let a=function(a,b){1===Object.keys(a).length&&"default"in a&&!g(a.default,t)&&(a=a.default);let c={},d={},e={};for(let[f,h]of Object.entries(a))if(g(h,t)){let a=u(h),b=d[a];for(let d of(c[a]=f,e[f]={tsName:f,dbName:h[t.Symbol.Name],schema:h[t.Symbol.Schema],columns:h[t.Symbol.Columns],relations:b?.relations??{},primaryKey:b?.primaryKey??[]},Object.values(h[t.Symbol.Columns])))d.primary&&e[f].primaryKey.push(d);let i=h[t.Symbol.ExtraConfigBuilder]?.(h[t.Symbol.ExtraConfigColumns]);if(i)for(let a of Object.values(i))g(a,bG)&&e[f].primaryKey.push(...a.columns)}else if(g(h,b5)){let a,f=u(h.table),g=c[f];for(let[c,i]of Object.entries(h.config(b(h.table))))if(g){let b=e[g];b.relations[c]=i,a&&b.primaryKey.push(...a)}else f in d||(d[f]={relations:{},primaryKey:a}),d[f].relations[c]=i}return{tables:e,tableNamesMap:c}}(b.schema,b9);d={fullSchema:b.schema,schema:a.tables,tableNamesMap:a.tableNamesMap}}let f=new dx(a,e,d,{logger:c}),h=new dA("sync",e,f,d);return h.$client=a,h}function dC(...a){if(void 0===a[0]||"string"==typeof a[0])return dB(void 0===a[0]?new e.default:new e.default(a[0]),a[1]);if(function(a){if("object"!=typeof a||null===a||"Object"!==a.constructor.name)return!1;if("logger"in a){let b=typeof a.logger;return"boolean"===b||"object"===b&&"function"==typeof a.logger.logQuery||"undefined"===b}if("schema"in a){let b=typeof a.logger;return"object"===b||"undefined"===b}if("casing"in a){let b=typeof a.logger;return"string"===b||"undefined"===b}if("mode"in a)return"default"===a.mode&&"planetscale"===a.mode&&void 0===a.mode;if("connection"in a){let b=typeof a.connection;return"string"===b||"object"===b||"undefined"===b}if("client"in a){let b=typeof a.client;return"object"===b||"function"===b||"undefined"===b}return 0===Object.keys(a).length}(a[0])){let{connection:b,client:c,...d}=a[0];if(c)return dB(c,d);if("object"==typeof b){let{source:a,...c}=b;return dB(new e.default(a,c),d)}return dB(new e.default(b),d)}return dB(a[0],a[1])}(dC||(dC={})).mock=function(a){return dB({},a)};class dD{constructor(a,b){this.name=a,this.unique=b}static [f]="SQLiteIndexBuilderOn";on(...a){return new dE(this.name,a,this.unique)}}class dE{static [f]="SQLiteIndexBuilder";config;constructor(a,b,c){this.config={name:a,columns:b,unique:c,where:void 0}}where(a){return this.config.where=a,this}build(a){return new dF(this.config,a)}}class dF{static [f]="SQLiteIndex";config;constructor(a,b){this.config={...a,table:b}}}let dG=c0("projects",{id:cZ("id").primaryKey(),githubOwner:cZ("github_owner").notNull(),githubRepo:cZ("github_repo").notNull(),displayName:cZ("display_name"),description:cZ("description"),homepageUrl:cZ("homepage_url"),stars:cO("stars").default(0),isPublic:cO("is_public",{mode:"boolean"}).default(!0),isFeatured:cO("is_featured",{mode:"boolean"}).default(!1),lastSyncedAt:cO("last_synced_at",{mode:"timestamp"}),createdAt:cO("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),updatedAt:cO("updated_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),dH=c0("specs",{id:cZ("id").primaryKey(),projectId:cZ("project_id").notNull().references(()=>dG.id,{onDelete:"cascade"}),specNumber:cO("spec_number"),specName:cZ("spec_name").notNull(),title:cZ("title"),status:cZ("status",{enum:["planned","in-progress","complete","archived"]}),priority:cZ("priority",{enum:["low","medium","high","critical"]}),tags:cZ("tags"),assignee:cZ("assignee"),contentMd:cZ("content_md").notNull(),contentHtml:cZ("content_html"),createdAt:cO("created_at",{mode:"timestamp"}),updatedAt:cO("updated_at",{mode:"timestamp"}),completedAt:cO("completed_at",{mode:"timestamp"}),filePath:cZ("file_path").notNull(),githubUrl:cZ("github_url"),syncedAt:cO("synced_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)},a=>({uniqueSpecNumber:new dD("unique_spec_number",!0).on(a.projectId,a.specNumber)})),dI=c0("spec_relationships",{id:cZ("id").primaryKey(),specId:cZ("spec_id").notNull().references(()=>dH.id,{onDelete:"cascade"}),relatedSpecId:cZ("related_spec_id").notNull().references(()=>dH.id,{onDelete:"cascade"}),relationshipType:cZ("relationship_type",{enum:["depends_on","related"]}).notNull(),createdAt:cO("created_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date)}),dJ=c0("sync_logs",{id:cZ("id").primaryKey(),projectId:cZ("project_id").notNull().references(()=>dG.id,{onDelete:"cascade"}),status:cZ("status",{enum:["pending","running","success","failed"]}).notNull(),specsAdded:cO("specs_added").default(0),specsUpdated:cO("specs_updated").default(0),specsDeleted:cO("specs_deleted").default(0),errorMessage:cZ("error_message"),startedAt:cO("started_at",{mode:"timestamp"}).notNull().$defaultFn(()=>new Date),completedAt:cO("completed_at",{mode:"timestamp"}),durationMs:cO("duration_ms")}),dK=b8(dG,({many:a})=>({specs:a(dH),syncLogs:a(dJ)})),dL=b8(dH,({one:a,many:b})=>({project:a(dG,{fields:[dH.projectId],references:[dG.id]}),dependencies:b(dI,{relationName:"spec"}),dependents:b(dI,{relationName:"relatedSpec"})})),dM=b8(dI,({one:a})=>({spec:a(dH,{fields:[dI.specId],references:[dH.id],relationName:"spec"}),relatedSpec:a(dH,{fields:[dI.relatedSpecId],references:[dH.id],relationName:"relatedSpec"})})),dN=b8(dJ,({one:a})=>({project:a(dG,{fields:[dJ.projectId],references:[dG.id]})}));a.s(["projects",0,dG,"projectsRelations",0,dK,"specRelationships",0,dI,"specRelationshipsRelations",0,dM,"specs",0,dH,"specsRelations",0,dL,"syncLogs",0,dJ,"syncLogsRelations",0,dN],21644);var dO=a.i(21644),dP=a.i(14747);let dQ=null,dR=null,dS=new Proxy({},{get:(a,b,c)=>Reflect.get(function(){if(!dQ){let a=process.env.DATABASE_PATH||(0,dP.join)(process.cwd(),"leanspec.db");(function(a){a.pragma("foreign_keys = ON");let b=b=>!!a.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name = ?").get(b);b("projects")||a.exec(`
14
+ CREATE TABLE IF NOT EXISTS "projects" (
15
+ "id" TEXT PRIMARY KEY NOT NULL,
16
+ "github_owner" TEXT NOT NULL,
17
+ "github_repo" TEXT NOT NULL,
18
+ "display_name" TEXT,
19
+ "description" TEXT,
20
+ "homepage_url" TEXT,
21
+ "stars" INTEGER DEFAULT 0,
22
+ "is_public" INTEGER DEFAULT 1,
23
+ "is_featured" INTEGER DEFAULT 0,
24
+ "last_synced_at" INTEGER,
25
+ "created_at" INTEGER NOT NULL,
26
+ "updated_at" INTEGER NOT NULL
27
+ );
28
+ `),b("specs")||a.exec(`
29
+ CREATE TABLE IF NOT EXISTS "specs" (
30
+ "id" TEXT PRIMARY KEY NOT NULL,
31
+ "project_id" TEXT NOT NULL REFERENCES "projects"("id") ON DELETE CASCADE,
32
+ "spec_number" INTEGER,
33
+ "spec_name" TEXT NOT NULL,
34
+ "title" TEXT,
35
+ "status" TEXT,
36
+ "priority" TEXT,
37
+ "tags" TEXT,
38
+ "assignee" TEXT,
39
+ "content_md" TEXT NOT NULL,
40
+ "content_html" TEXT,
41
+ "created_at" INTEGER,
42
+ "updated_at" INTEGER,
43
+ "completed_at" INTEGER,
44
+ "file_path" TEXT NOT NULL,
45
+ "github_url" TEXT,
46
+ "synced_at" INTEGER NOT NULL
47
+ );
48
+ `),b("spec_relationships")||a.exec(`
49
+ CREATE TABLE IF NOT EXISTS "spec_relationships" (
50
+ "id" TEXT PRIMARY KEY NOT NULL,
51
+ "spec_id" TEXT NOT NULL REFERENCES "specs"("id") ON DELETE CASCADE,
52
+ "related_spec_id" TEXT NOT NULL REFERENCES "specs"("id") ON DELETE CASCADE,
53
+ "relationship_type" TEXT NOT NULL,
54
+ "created_at" INTEGER NOT NULL
55
+ );
56
+ `),b("sync_logs")||a.exec(`
57
+ CREATE TABLE IF NOT EXISTS "sync_logs" (
58
+ "id" TEXT PRIMARY KEY NOT NULL,
59
+ "project_id" TEXT NOT NULL REFERENCES "projects"("id") ON DELETE CASCADE,
60
+ "status" TEXT NOT NULL,
61
+ "specs_added" INTEGER DEFAULT 0,
62
+ "specs_updated" INTEGER DEFAULT 0,
63
+ "specs_deleted" INTEGER DEFAULT 0,
64
+ "error_message" TEXT,
65
+ "started_at" INTEGER NOT NULL,
66
+ "completed_at" INTEGER,
67
+ "duration_ms" INTEGER
68
+ );
69
+ `),a.prepare("SELECT name FROM sqlite_master WHERE type='index' AND name = ?").get("unique_spec_number")||a.exec(`
70
+ CREATE UNIQUE INDEX IF NOT EXISTS "unique_spec_number"
71
+ ON "specs" ("project_id", "spec_number");
72
+ `)})(dR=new e.default(a)),dQ=dC(dR,{schema:dO})}return dQ}(),b,c)});class dT{async getAllSpecs(a){let b=a?dS.select().from(dO.specs).where(bJ(dO.specs.projectId,a)):dS.select().from(dO.specs);return await b.orderBy(dO.specs.specNumber)}async getSpec(a,b){if(!b)return null;let c=parseInt(a.split("-")[0],10);if(isNaN(c))return null;let d=await dS.select().from(dO.specs).where(bL(bJ(dO.specs.projectId,b),bJ(dO.specs.specNumber,c))).limit(1);return d.length>0?d[0]:null}async getSpecsByStatus(a,b){let c=[bJ(dO.specs.status,a)];return b&&c.push(bJ(dO.specs.projectId,b)),await dS.select().from(dO.specs).where(bL(...c)).orderBy(dO.specs.specNumber)}async searchSpecs(a,b){let c=await this.getAllSpecs(b),d=a.toLowerCase();return c.filter(a=>a.specName.toLowerCase().includes(d)||a.title?.toLowerCase().includes(d)||a.contentMd.toLowerCase().includes(d))}invalidateCache(){}}a.s(["DatabaseSource",()=>dT],87803)}];
14
73
 
15
74
  //# sourceMappingURL=packages_ui_src_lib_specs_sources_database-source_ts_f7186c2a._.js.map
@@ -8,11 +8,12 @@ globalThis.__BUILD_MANIFEST = {
8
8
  ],
9
9
  "lowPriorityFiles": [],
10
10
  "rootMainFiles": [
11
- "static/chunks/c557ac675be79771.js",
12
- "static/chunks/c0fe4c94c7282ac0.js",
13
- "static/chunks/f3ec9fd77a8618b1.js",
11
+ "static/chunks/b760a3a9c2c8be28.js",
12
+ "static/chunks/ebd89051637b9a47.js",
14
13
  "static/chunks/7f732ea69e643219.js",
15
- "static/chunks/turbopack-9cc79aa1b34ffcbe.js"
14
+ "static/chunks/f3ec9fd77a8618b1.js",
15
+ "static/chunks/5c2072ad938de8ed.js",
16
+ "static/chunks/turbopack-b9690cacbf9fe48c.js"
16
17
  ]
17
18
  };
18
19
  globalThis.__BUILD_MANIFEST.lowPriorityFiles = [