skywriter 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (561) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +852 -0
  3. package/dist/cli/commands/host.d.ts +6 -0
  4. package/dist/cli/commands/host.d.ts.map +1 -0
  5. package/dist/cli/commands/host.js +52 -0
  6. package/dist/cli/commands/host.js.map +1 -0
  7. package/dist/cli/commands/init.d.ts +15 -0
  8. package/dist/cli/commands/init.d.ts.map +1 -0
  9. package/dist/cli/commands/init.js +207 -0
  10. package/dist/cli/commands/init.js.map +1 -0
  11. package/dist/cli/commands/login.d.ts +18 -0
  12. package/dist/cli/commands/login.d.ts.map +1 -0
  13. package/dist/cli/commands/login.js +152 -0
  14. package/dist/cli/commands/login.js.map +1 -0
  15. package/dist/cli/commands/logout.d.ts +15 -0
  16. package/dist/cli/commands/logout.d.ts.map +1 -0
  17. package/dist/cli/commands/logout.js +62 -0
  18. package/dist/cli/commands/logout.js.map +1 -0
  19. package/dist/cli/commands/pull.d.ts +19 -0
  20. package/dist/cli/commands/pull.d.ts.map +1 -0
  21. package/dist/cli/commands/pull.js +44 -0
  22. package/dist/cli/commands/pull.js.map +1 -0
  23. package/dist/cli/commands/push.d.ts +9 -0
  24. package/dist/cli/commands/push.d.ts.map +1 -0
  25. package/dist/cli/commands/push.js +49 -0
  26. package/dist/cli/commands/push.js.map +1 -0
  27. package/dist/cli/commands/removeServer.d.ts +9 -0
  28. package/dist/cli/commands/removeServer.d.ts.map +1 -0
  29. package/dist/cli/commands/removeServer.js +55 -0
  30. package/dist/cli/commands/removeServer.js.map +1 -0
  31. package/dist/cli/commands/render.d.ts +6 -0
  32. package/dist/cli/commands/render.d.ts.map +1 -0
  33. package/dist/cli/commands/render.js +11 -0
  34. package/dist/cli/commands/render.js.map +1 -0
  35. package/dist/cli/commands/serve.d.ts +7 -0
  36. package/dist/cli/commands/serve.d.ts.map +1 -0
  37. package/dist/cli/commands/serve.js +55 -0
  38. package/dist/cli/commands/serve.js.map +1 -0
  39. package/dist/cli/commands/sessions.d.ts +6 -0
  40. package/dist/cli/commands/sessions.d.ts.map +1 -0
  41. package/dist/cli/commands/sessions.js +24 -0
  42. package/dist/cli/commands/sessions.js.map +1 -0
  43. package/dist/cli/commands/settings.d.ts +10 -0
  44. package/dist/cli/commands/settings.d.ts.map +1 -0
  45. package/dist/cli/commands/settings.js +69 -0
  46. package/dist/cli/commands/settings.js.map +1 -0
  47. package/dist/cli/commands/switchServer.d.ts +9 -0
  48. package/dist/cli/commands/switchServer.d.ts.map +1 -0
  49. package/dist/cli/commands/switchServer.js +52 -0
  50. package/dist/cli/commands/switchServer.js.map +1 -0
  51. package/dist/cli/commands/vscodeInit.d.ts +13 -0
  52. package/dist/cli/commands/vscodeInit.d.ts.map +1 -0
  53. package/dist/cli/commands/vscodeInit.js +152 -0
  54. package/dist/cli/commands/vscodeInit.js.map +1 -0
  55. package/dist/cli/commands/whoami.d.ts +6 -0
  56. package/dist/cli/commands/whoami.d.ts.map +1 -0
  57. package/dist/cli/commands/whoami.js +67 -0
  58. package/dist/cli/commands/whoami.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/index.js +5 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/cli/middleware/checkDuplicatePath.d.ts +19 -0
  64. package/dist/cli/middleware/checkDuplicatePath.d.ts.map +1 -0
  65. package/dist/cli/middleware/checkDuplicatePath.js +45 -0
  66. package/dist/cli/middleware/checkDuplicatePath.js.map +1 -0
  67. package/dist/cli/middleware/redirectRoot.d.ts +18 -0
  68. package/dist/cli/middleware/redirectRoot.d.ts.map +1 -0
  69. package/dist/cli/middleware/redirectRoot.js +44 -0
  70. package/dist/cli/middleware/redirectRoot.js.map +1 -0
  71. package/dist/cli/middleware/serveDocument.d.ts +10 -0
  72. package/dist/cli/middleware/serveDocument.d.ts.map +1 -0
  73. package/dist/cli/middleware/serveDocument.js +104 -0
  74. package/dist/cli/middleware/serveDocument.js.map +1 -0
  75. package/dist/cli/middleware/serveUploads.d.ts +20 -0
  76. package/dist/cli/middleware/serveUploads.d.ts.map +1 -0
  77. package/dist/cli/middleware/serveUploads.js +93 -0
  78. package/dist/cli/middleware/serveUploads.js.map +1 -0
  79. package/dist/cli/middleware/types.d.ts +43 -0
  80. package/dist/cli/middleware/types.d.ts.map +1 -0
  81. package/dist/cli/middleware/types.js +2 -0
  82. package/dist/cli/middleware/types.js.map +1 -0
  83. package/dist/cli/pathOperations/deletePathUploads.d.ts +6 -0
  84. package/dist/cli/pathOperations/deletePathUploads.d.ts.map +1 -0
  85. package/dist/cli/pathOperations/deletePathUploads.js +68 -0
  86. package/dist/cli/pathOperations/deletePathUploads.js.map +1 -0
  87. package/dist/cli/pathOperations/downloadPathUploads.d.ts +6 -0
  88. package/dist/cli/pathOperations/downloadPathUploads.d.ts.map +1 -0
  89. package/dist/cli/pathOperations/downloadPathUploads.js +156 -0
  90. package/dist/cli/pathOperations/downloadPathUploads.js.map +1 -0
  91. package/dist/cli/pathOperations/pullPathViaGit.d.ts +9 -0
  92. package/dist/cli/pathOperations/pullPathViaGit.d.ts.map +1 -0
  93. package/dist/cli/pathOperations/pullPathViaGit.js +86 -0
  94. package/dist/cli/pathOperations/pullPathViaGit.js.map +1 -0
  95. package/dist/cli/pathOperations/pullPathViaTar.d.ts +14 -0
  96. package/dist/cli/pathOperations/pullPathViaTar.d.ts.map +1 -0
  97. package/dist/cli/pathOperations/pullPathViaTar.js +252 -0
  98. package/dist/cli/pathOperations/pullPathViaTar.js.map +1 -0
  99. package/dist/cli/pathOperations/pushPathViaGit.d.ts +9 -0
  100. package/dist/cli/pathOperations/pushPathViaGit.d.ts.map +1 -0
  101. package/dist/cli/pathOperations/pushPathViaGit.js +49 -0
  102. package/dist/cli/pathOperations/pushPathViaGit.js.map +1 -0
  103. package/dist/cli/pathOperations/pushPathViaTar.d.ts +6 -0
  104. package/dist/cli/pathOperations/pushPathViaTar.d.ts.map +1 -0
  105. package/dist/cli/pathOperations/pushPathViaTar.js +63 -0
  106. package/dist/cli/pathOperations/pushPathViaTar.js.map +1 -0
  107. package/dist/cli/pathOperations/uploadPathUploads.d.ts +6 -0
  108. package/dist/cli/pathOperations/uploadPathUploads.d.ts.map +1 -0
  109. package/dist/cli/pathOperations/uploadPathUploads.js +114 -0
  110. package/dist/cli/pathOperations/uploadPathUploads.js.map +1 -0
  111. package/dist/cli/pathOperations/validatePathSettings.d.ts +14 -0
  112. package/dist/cli/pathOperations/validatePathSettings.d.ts.map +1 -0
  113. package/dist/cli/pathOperations/validatePathSettings.js +191 -0
  114. package/dist/cli/pathOperations/validatePathSettings.js.map +1 -0
  115. package/dist/cli/utils/assemble.d.ts +22 -0
  116. package/dist/cli/utils/assemble.d.ts.map +1 -0
  117. package/dist/cli/utils/assemble.js +219 -0
  118. package/dist/cli/utils/assemble.js.map +1 -0
  119. package/dist/cli/utils/cliName.d.ts +3 -0
  120. package/dist/cli/utils/cliName.d.ts.map +1 -0
  121. package/dist/cli/utils/cliName.js +17 -0
  122. package/dist/cli/utils/cliName.js.map +1 -0
  123. package/dist/cli/utils/codeWorkspace.d.ts +13 -0
  124. package/dist/cli/utils/codeWorkspace.d.ts.map +1 -0
  125. package/dist/cli/utils/codeWorkspace.js +20 -0
  126. package/dist/cli/utils/codeWorkspace.js.map +1 -0
  127. package/dist/cli/utils/colors.d.ts +14 -0
  128. package/dist/cli/utils/colors.d.ts.map +1 -0
  129. package/dist/cli/utils/colors.js +22 -0
  130. package/dist/cli/utils/colors.js.map +1 -0
  131. package/dist/cli/utils/config.d.ts +35 -0
  132. package/dist/cli/utils/config.d.ts.map +1 -0
  133. package/dist/cli/utils/config.js +95 -0
  134. package/dist/cli/utils/config.js.map +1 -0
  135. package/dist/cli/utils/copilotInstructions.d.ts +5 -0
  136. package/dist/cli/utils/copilotInstructions.d.ts.map +1 -0
  137. package/dist/cli/utils/copilotInstructions.js +101 -0
  138. package/dist/cli/utils/copilotInstructions.js.map +1 -0
  139. package/dist/cli/utils/createLoggedFs.d.ts +17 -0
  140. package/dist/cli/utils/createLoggedFs.d.ts.map +1 -0
  141. package/dist/cli/utils/createLoggedFs.js +106 -0
  142. package/dist/cli/utils/createLoggedFs.js.map +1 -0
  143. package/dist/cli/utils/credentials.d.ts +38 -0
  144. package/dist/cli/utils/credentials.d.ts.map +1 -0
  145. package/dist/cli/utils/credentials.js +400 -0
  146. package/dist/cli/utils/credentials.js.map +1 -0
  147. package/dist/cli/utils/discover.d.ts +26 -0
  148. package/dist/cli/utils/discover.d.ts.map +1 -0
  149. package/dist/cli/utils/discover.js +209 -0
  150. package/dist/cli/utils/discover.js.map +1 -0
  151. package/dist/cli/utils/formatPlan.d.ts +40 -0
  152. package/dist/cli/utils/formatPlan.d.ts.map +1 -0
  153. package/dist/cli/utils/formatPlan.js +148 -0
  154. package/dist/cli/utils/formatPlan.js.map +1 -0
  155. package/dist/cli/utils/git.d.ts +17 -0
  156. package/dist/cli/utils/git.d.ts.map +1 -0
  157. package/dist/cli/utils/git.js +57 -0
  158. package/dist/cli/utils/git.js.map +1 -0
  159. package/dist/cli/utils/gitUrl.d.ts +7 -0
  160. package/dist/cli/utils/gitUrl.d.ts.map +1 -0
  161. package/dist/cli/utils/gitUrl.js +23 -0
  162. package/dist/cli/utils/gitUrl.js.map +1 -0
  163. package/dist/cli/utils/log.d.ts +22 -0
  164. package/dist/cli/utils/log.d.ts.map +1 -0
  165. package/dist/cli/utils/log.js +31 -0
  166. package/dist/cli/utils/log.js.map +1 -0
  167. package/dist/cli/utils/logData.d.ts +5 -0
  168. package/dist/cli/utils/logData.d.ts.map +1 -0
  169. package/dist/cli/utils/logData.js +65 -0
  170. package/dist/cli/utils/logData.js.map +1 -0
  171. package/dist/cli/utils/loggedFetch.d.ts +4 -0
  172. package/dist/cli/utils/loggedFetch.d.ts.map +1 -0
  173. package/dist/cli/utils/loggedFetch.js +15 -0
  174. package/dist/cli/utils/loggedFetch.js.map +1 -0
  175. package/dist/cli/utils/pageContext.d.ts +50 -0
  176. package/dist/cli/utils/pageContext.d.ts.map +1 -0
  177. package/dist/cli/utils/pageContext.js +86 -0
  178. package/dist/cli/utils/pageContext.js.map +1 -0
  179. package/dist/cli/utils/parseDocumentPath.d.ts +13 -0
  180. package/dist/cli/utils/parseDocumentPath.d.ts.map +1 -0
  181. package/dist/cli/utils/parseDocumentPath.js +35 -0
  182. package/dist/cli/utils/parseDocumentPath.js.map +1 -0
  183. package/dist/cli/utils/populateCache.d.ts +12 -0
  184. package/dist/cli/utils/populateCache.d.ts.map +1 -0
  185. package/dist/cli/utils/populateCache.js +21 -0
  186. package/dist/cli/utils/populateCache.js.map +1 -0
  187. package/dist/cli/utils/prefixLog.d.ts +21 -0
  188. package/dist/cli/utils/prefixLog.d.ts.map +1 -0
  189. package/dist/cli/utils/prefixLog.js +73 -0
  190. package/dist/cli/utils/prefixLog.js.map +1 -0
  191. package/dist/cli/utils/program.d.ts +7 -0
  192. package/dist/cli/utils/program.d.ts.map +1 -0
  193. package/dist/cli/utils/program.js +266 -0
  194. package/dist/cli/utils/program.js.map +1 -0
  195. package/dist/cli/utils/promptExec.d.ts +27 -0
  196. package/dist/cli/utils/promptExec.d.ts.map +1 -0
  197. package/dist/cli/utils/promptExec.js +47 -0
  198. package/dist/cli/utils/promptExec.js.map +1 -0
  199. package/dist/cli/utils/pullHarness.d.ts +15 -0
  200. package/dist/cli/utils/pullHarness.d.ts.map +1 -0
  201. package/dist/cli/utils/pullHarness.js +101 -0
  202. package/dist/cli/utils/pullHarness.js.map +1 -0
  203. package/dist/cli/utils/pullViaGit.d.ts +6 -0
  204. package/dist/cli/utils/pullViaGit.d.ts.map +1 -0
  205. package/dist/cli/utils/pullViaGit.js +13 -0
  206. package/dist/cli/utils/pullViaGit.js.map +1 -0
  207. package/dist/cli/utils/pullViaTar.d.ts +10 -0
  208. package/dist/cli/utils/pullViaTar.d.ts.map +1 -0
  209. package/dist/cli/utils/pullViaTar.js +15 -0
  210. package/dist/cli/utils/pullViaTar.js.map +1 -0
  211. package/dist/cli/utils/pushHarness.d.ts +24 -0
  212. package/dist/cli/utils/pushHarness.d.ts.map +1 -0
  213. package/dist/cli/utils/pushHarness.js +82 -0
  214. package/dist/cli/utils/pushHarness.js.map +1 -0
  215. package/dist/cli/utils/pushViaGit.d.ts +6 -0
  216. package/dist/cli/utils/pushViaGit.d.ts.map +1 -0
  217. package/dist/cli/utils/pushViaGit.js +16 -0
  218. package/dist/cli/utils/pushViaGit.js.map +1 -0
  219. package/dist/cli/utils/pushViaTar.d.ts +6 -0
  220. package/dist/cli/utils/pushViaTar.d.ts.map +1 -0
  221. package/dist/cli/utils/pushViaTar.js +9 -0
  222. package/dist/cli/utils/pushViaTar.js.map +1 -0
  223. package/dist/cli/utils/resolveTarget.d.ts +23 -0
  224. package/dist/cli/utils/resolveTarget.d.ts.map +1 -0
  225. package/dist/cli/utils/resolveTarget.js +43 -0
  226. package/dist/cli/utils/resolveTarget.js.map +1 -0
  227. package/dist/cli/utils/settingsValidation.d.ts +23 -0
  228. package/dist/cli/utils/settingsValidation.d.ts.map +1 -0
  229. package/dist/cli/utils/settingsValidation.js +176 -0
  230. package/dist/cli/utils/settingsValidation.js.map +1 -0
  231. package/dist/cli/utils/types.d.ts +33 -0
  232. package/dist/cli/utils/types.d.ts.map +1 -0
  233. package/dist/cli/utils/types.js +2 -0
  234. package/dist/cli/utils/types.js.map +1 -0
  235. package/dist/cli/utils/validateAndGetFilesFromDir.d.ts +10 -0
  236. package/dist/cli/utils/validateAndGetFilesFromDir.d.ts.map +1 -0
  237. package/dist/cli/utils/validateAndGetFilesFromDir.js +74 -0
  238. package/dist/cli/utils/validateAndGetFilesFromDir.js.map +1 -0
  239. package/dist/cli/utils/watchForChanges.d.ts +7 -0
  240. package/dist/cli/utils/watchForChanges.d.ts.map +1 -0
  241. package/dist/cli/utils/watchForChanges.js +44 -0
  242. package/dist/cli/utils/watchForChanges.js.map +1 -0
  243. package/dist/db/index.d.ts +5 -0
  244. package/dist/db/index.d.ts.map +1 -0
  245. package/dist/db/index.js +23 -0
  246. package/dist/db/index.js.map +1 -0
  247. package/dist/editor.bundle.dev.js +30823 -0
  248. package/dist/editor.bundle.dev.js.map +7 -0
  249. package/dist/editor.bundle.js +30347 -0
  250. package/dist/editor.bundle.js.map +7 -0
  251. package/dist/editor.bundle.prod.js +1373 -0
  252. package/dist/index.d.ts +5 -0
  253. package/dist/index.d.ts.map +1 -0
  254. package/dist/index.js +4 -0
  255. package/dist/index.js.map +1 -0
  256. package/dist/operations/addRedirect.d.ts +20 -0
  257. package/dist/operations/addRedirect.d.ts.map +1 -0
  258. package/dist/operations/addRedirect.js +46 -0
  259. package/dist/operations/addRedirect.js.map +1 -0
  260. package/dist/operations/addUpload.d.ts +29 -0
  261. package/dist/operations/addUpload.d.ts.map +1 -0
  262. package/dist/operations/addUpload.js +96 -0
  263. package/dist/operations/addUpload.js.map +1 -0
  264. package/dist/operations/addUploadsFromContent.d.ts +27 -0
  265. package/dist/operations/addUploadsFromContent.d.ts.map +1 -0
  266. package/dist/operations/addUploadsFromContent.js +311 -0
  267. package/dist/operations/addUploadsFromContent.js.map +1 -0
  268. package/dist/operations/clearDraft.d.ts +17 -0
  269. package/dist/operations/clearDraft.d.ts.map +1 -0
  270. package/dist/operations/clearDraft.js +56 -0
  271. package/dist/operations/clearDraft.js.map +1 -0
  272. package/dist/operations/createDocumentRecord.d.ts +11 -0
  273. package/dist/operations/createDocumentRecord.d.ts.map +1 -0
  274. package/dist/operations/createDocumentRecord.js +100 -0
  275. package/dist/operations/createDocumentRecord.js.map +1 -0
  276. package/dist/operations/createRoute.d.ts +6 -0
  277. package/dist/operations/createRoute.d.ts.map +1 -0
  278. package/dist/operations/createRoute.js +10 -0
  279. package/dist/operations/createRoute.js.map +1 -0
  280. package/dist/operations/createSession.d.ts +21 -0
  281. package/dist/operations/createSession.d.ts.map +1 -0
  282. package/dist/operations/createSession.js +27 -0
  283. package/dist/operations/createSession.js.map +1 -0
  284. package/dist/operations/deleteSession.d.ts +13 -0
  285. package/dist/operations/deleteSession.d.ts.map +1 -0
  286. package/dist/operations/deleteSession.js +15 -0
  287. package/dist/operations/deleteSession.js.map +1 -0
  288. package/dist/operations/findDocument.d.ts +18 -0
  289. package/dist/operations/findDocument.d.ts.map +1 -0
  290. package/dist/operations/findDocument.js +53 -0
  291. package/dist/operations/findDocument.js.map +1 -0
  292. package/dist/operations/getAllUploadsForDocument.d.ts +11 -0
  293. package/dist/operations/getAllUploadsForDocument.d.ts.map +1 -0
  294. package/dist/operations/getAllUploadsForDocument.js +15 -0
  295. package/dist/operations/getAllUploadsForDocument.js.map +1 -0
  296. package/dist/operations/getDocumentClientState.d.ts +30 -0
  297. package/dist/operations/getDocumentClientState.d.ts.map +1 -0
  298. package/dist/operations/getDocumentClientState.js +246 -0
  299. package/dist/operations/getDocumentClientState.js.map +1 -0
  300. package/dist/operations/getDocumentInstance.d.ts +7 -0
  301. package/dist/operations/getDocumentInstance.d.ts.map +1 -0
  302. package/dist/operations/getDocumentInstance.js +32 -0
  303. package/dist/operations/getDocumentInstance.js.map +1 -0
  304. package/dist/operations/getDocumentRecord.d.ts +6 -0
  305. package/dist/operations/getDocumentRecord.d.ts.map +1 -0
  306. package/dist/operations/getDocumentRecord.js +8 -0
  307. package/dist/operations/getDocumentRecord.js.map +1 -0
  308. package/dist/operations/getDualDocument.d.ts +28 -0
  309. package/dist/operations/getDualDocument.d.ts.map +1 -0
  310. package/dist/operations/getDualDocument.js +81 -0
  311. package/dist/operations/getDualDocument.js.map +1 -0
  312. package/dist/operations/getDualDocuments.d.ts +26 -0
  313. package/dist/operations/getDualDocuments.d.ts.map +1 -0
  314. package/dist/operations/getDualDocuments.js +130 -0
  315. package/dist/operations/getDualDocuments.js.map +1 -0
  316. package/dist/operations/getOptimisticDocument.d.ts +6 -0
  317. package/dist/operations/getOptimisticDocument.d.ts.map +1 -0
  318. package/dist/operations/getOptimisticDocument.js +30 -0
  319. package/dist/operations/getOptimisticDocument.js.map +1 -0
  320. package/dist/operations/getPage.d.ts +18 -0
  321. package/dist/operations/getPage.d.ts.map +1 -0
  322. package/dist/operations/getPage.js +31 -0
  323. package/dist/operations/getPage.js.map +1 -0
  324. package/dist/operations/getPages.d.ts +18 -0
  325. package/dist/operations/getPages.d.ts.map +1 -0
  326. package/dist/operations/getPages.js +30 -0
  327. package/dist/operations/getPages.js.map +1 -0
  328. package/dist/operations/getRedirects.d.ts +13 -0
  329. package/dist/operations/getRedirects.d.ts.map +1 -0
  330. package/dist/operations/getRedirects.js +30 -0
  331. package/dist/operations/getRedirects.js.map +1 -0
  332. package/dist/operations/getRenderDocument.d.ts +18 -0
  333. package/dist/operations/getRenderDocument.d.ts.map +1 -0
  334. package/dist/operations/getRenderDocument.js +27 -0
  335. package/dist/operations/getRenderDocument.js.map +1 -0
  336. package/dist/operations/getRenderDocumentWithAssociations.d.ts +15 -0
  337. package/dist/operations/getRenderDocumentWithAssociations.d.ts.map +1 -0
  338. package/dist/operations/getRenderDocumentWithAssociations.js +64 -0
  339. package/dist/operations/getRenderDocumentWithAssociations.js.map +1 -0
  340. package/dist/operations/getRenderDocuments.d.ts +16 -0
  341. package/dist/operations/getRenderDocuments.d.ts.map +1 -0
  342. package/dist/operations/getRenderDocuments.js +25 -0
  343. package/dist/operations/getRenderDocuments.js.map +1 -0
  344. package/dist/operations/getUpload.d.ts +25 -0
  345. package/dist/operations/getUpload.d.ts.map +1 -0
  346. package/dist/operations/getUpload.js +37 -0
  347. package/dist/operations/getUpload.js.map +1 -0
  348. package/dist/operations/getUploads.d.ts +25 -0
  349. package/dist/operations/getUploads.d.ts.map +1 -0
  350. package/dist/operations/getUploads.js +76 -0
  351. package/dist/operations/getUploads.js.map +1 -0
  352. package/dist/operations/getUsersCount.d.ts +12 -0
  353. package/dist/operations/getUsersCount.d.ts.map +1 -0
  354. package/dist/operations/getUsersCount.js +12 -0
  355. package/dist/operations/getUsersCount.js.map +1 -0
  356. package/dist/operations/login.d.ts +20 -0
  357. package/dist/operations/login.d.ts.map +1 -0
  358. package/dist/operations/login.js +38 -0
  359. package/dist/operations/login.js.map +1 -0
  360. package/dist/operations/removeDocument.d.ts +19 -0
  361. package/dist/operations/removeDocument.d.ts.map +1 -0
  362. package/dist/operations/removeDocument.js +54 -0
  363. package/dist/operations/removeDocument.js.map +1 -0
  364. package/dist/operations/removeRedirect.d.ts +15 -0
  365. package/dist/operations/removeRedirect.d.ts.map +1 -0
  366. package/dist/operations/removeRedirect.js +71 -0
  367. package/dist/operations/removeRedirect.js.map +1 -0
  368. package/dist/operations/removeUpload.d.ts +21 -0
  369. package/dist/operations/removeUpload.d.ts.map +1 -0
  370. package/dist/operations/removeUpload.js +49 -0
  371. package/dist/operations/removeUpload.js.map +1 -0
  372. package/dist/operations/search.d.ts +19 -0
  373. package/dist/operations/search.d.ts.map +1 -0
  374. package/dist/operations/search.js +109 -0
  375. package/dist/operations/search.js.map +1 -0
  376. package/dist/operations/seedIfEmpty.d.ts +7 -0
  377. package/dist/operations/seedIfEmpty.d.ts.map +1 -0
  378. package/dist/operations/seedIfEmpty.js +100 -0
  379. package/dist/operations/seedIfEmpty.js.map +1 -0
  380. package/dist/operations/signup.d.ts +21 -0
  381. package/dist/operations/signup.d.ts.map +1 -0
  382. package/dist/operations/signup.js +45 -0
  383. package/dist/operations/signup.js.map +1 -0
  384. package/dist/operations/types.d.ts +223 -0
  385. package/dist/operations/types.d.ts.map +1 -0
  386. package/dist/operations/types.js +2 -0
  387. package/dist/operations/types.js.map +1 -0
  388. package/dist/operations/updateUpload.d.ts +27 -0
  389. package/dist/operations/updateUpload.d.ts.map +1 -0
  390. package/dist/operations/updateUpload.js +78 -0
  391. package/dist/operations/updateUpload.js.map +1 -0
  392. package/dist/operations/updateViaArchive.d.ts +23 -0
  393. package/dist/operations/updateViaArchive.d.ts.map +1 -0
  394. package/dist/operations/updateViaArchive.js +229 -0
  395. package/dist/operations/updateViaArchive.js.map +1 -0
  396. package/dist/operations/upsert.d.ts +26 -0
  397. package/dist/operations/upsert.d.ts.map +1 -0
  398. package/dist/operations/upsert.js +257 -0
  399. package/dist/operations/upsert.js.map +1 -0
  400. package/dist/operations/utils/common.d.ts +2 -0
  401. package/dist/operations/utils/common.d.ts.map +1 -0
  402. package/dist/operations/utils/common.js +2 -0
  403. package/dist/operations/utils/common.js.map +1 -0
  404. package/dist/operations/utils/contentType.d.ts +2 -0
  405. package/dist/operations/utils/contentType.d.ts.map +1 -0
  406. package/dist/operations/utils/contentType.js +66 -0
  407. package/dist/operations/utils/contentType.js.map +1 -0
  408. package/dist/operations/utils/dataType.d.ts +7 -0
  409. package/dist/operations/utils/dataType.d.ts.map +1 -0
  410. package/dist/operations/utils/dataType.js +35 -0
  411. package/dist/operations/utils/dataType.js.map +1 -0
  412. package/dist/operations/utils/generateUniqueFilename.d.ts +7 -0
  413. package/dist/operations/utils/generateUniqueFilename.d.ts.map +1 -0
  414. package/dist/operations/utils/generateUniqueFilename.js +38 -0
  415. package/dist/operations/utils/generateUniqueFilename.js.map +1 -0
  416. package/dist/operations/utils/hasEtaTemplates.d.ts +2 -0
  417. package/dist/operations/utils/hasEtaTemplates.d.ts.map +1 -0
  418. package/dist/operations/utils/hasEtaTemplates.js +10 -0
  419. package/dist/operations/utils/hasEtaTemplates.js.map +1 -0
  420. package/dist/operations/utils/normalizeDocumentQuery.d.ts +12 -0
  421. package/dist/operations/utils/normalizeDocumentQuery.d.ts.map +1 -0
  422. package/dist/operations/utils/normalizeDocumentQuery.js +45 -0
  423. package/dist/operations/utils/normalizeDocumentQuery.js.map +1 -0
  424. package/dist/operations/utils/utils.d.ts +4 -0
  425. package/dist/operations/utils/utils.d.ts.map +1 -0
  426. package/dist/operations/utils/utils.js +4 -0
  427. package/dist/operations/utils/utils.js.map +1 -0
  428. package/dist/operations/validateSession.d.ts +17 -0
  429. package/dist/operations/validateSession.d.ts.map +1 -0
  430. package/dist/operations/validateSession.js +27 -0
  431. package/dist/operations/validateSession.js.map +1 -0
  432. package/dist/render/index.d.ts +9 -0
  433. package/dist/render/index.d.ts.map +1 -0
  434. package/dist/render/index.js +347 -0
  435. package/dist/render/index.js.map +1 -0
  436. package/dist/render/utils/base.d.ts +74 -0
  437. package/dist/render/utils/base.d.ts.map +1 -0
  438. package/dist/render/utils/base.js +290 -0
  439. package/dist/render/utils/base.js.map +1 -0
  440. package/dist/render/utils/extractRawBlocks.d.ts +10 -0
  441. package/dist/render/utils/extractRawBlocks.d.ts.map +1 -0
  442. package/dist/render/utils/extractRawBlocks.js +28 -0
  443. package/dist/render/utils/extractRawBlocks.js.map +1 -0
  444. package/dist/render/utils/rawBlocks.d.ts +10 -0
  445. package/dist/render/utils/rawBlocks.d.ts.map +1 -0
  446. package/dist/render/utils/rawBlocks.js +28 -0
  447. package/dist/render/utils/rawBlocks.js.map +1 -0
  448. package/dist/render/utils/usageTracker.d.ts +10 -0
  449. package/dist/render/utils/usageTracker.d.ts.map +1 -0
  450. package/dist/render/utils/usageTracker.js +87 -0
  451. package/dist/render/utils/usageTracker.js.map +1 -0
  452. package/dist/responder/index.d.ts +34 -0
  453. package/dist/responder/index.d.ts.map +1 -0
  454. package/dist/responder/index.js +546 -0
  455. package/dist/responder/index.js.map +1 -0
  456. package/dist/server/index.d.ts +7 -0
  457. package/dist/server/index.d.ts.map +1 -0
  458. package/dist/server/index.js +54 -0
  459. package/dist/server/index.js.map +1 -0
  460. package/dist/server/middleware/authorize.d.ts +3 -0
  461. package/dist/server/middleware/authorize.d.ts.map +1 -0
  462. package/dist/server/middleware/authorize.js +15 -0
  463. package/dist/server/middleware/authorize.js.map +1 -0
  464. package/dist/server/middleware/establishAuth.d.ts +3 -0
  465. package/dist/server/middleware/establishAuth.d.ts.map +1 -0
  466. package/dist/server/middleware/establishAuth.js +45 -0
  467. package/dist/server/middleware/establishAuth.js.map +1 -0
  468. package/dist/server/middleware/log.d.ts +3 -0
  469. package/dist/server/middleware/log.d.ts.map +1 -0
  470. package/dist/server/middleware/log.js +12 -0
  471. package/dist/server/middleware/log.js.map +1 -0
  472. package/dist/server/middleware/requirePathMatch.d.ts +3 -0
  473. package/dist/server/middleware/requirePathMatch.d.ts.map +1 -0
  474. package/dist/server/middleware/requirePathMatch.js +25 -0
  475. package/dist/server/middleware/requirePathMatch.js.map +1 -0
  476. package/dist/server/middleware/requireQuery.d.ts +3 -0
  477. package/dist/server/middleware/requireQuery.d.ts.map +1 -0
  478. package/dist/server/middleware/requireQuery.js +24 -0
  479. package/dist/server/middleware/requireQuery.js.map +1 -0
  480. package/dist/server/middleware/withDb.d.ts +4 -0
  481. package/dist/server/middleware/withDb.d.ts.map +1 -0
  482. package/dist/server/middleware/withDb.js +7 -0
  483. package/dist/server/middleware/withDb.js.map +1 -0
  484. package/dist/server/routes/assets.d.ts +4 -0
  485. package/dist/server/routes/assets.d.ts.map +1 -0
  486. package/dist/server/routes/assets.js +178 -0
  487. package/dist/server/routes/assets.js.map +1 -0
  488. package/dist/server/routes/documents.d.ts +4 -0
  489. package/dist/server/routes/documents.d.ts.map +1 -0
  490. package/dist/server/routes/documents.js +40 -0
  491. package/dist/server/routes/documents.js.map +1 -0
  492. package/dist/server/routes/edit.d.ts +22 -0
  493. package/dist/server/routes/edit.d.ts.map +1 -0
  494. package/dist/server/routes/edit.js +494 -0
  495. package/dist/server/routes/edit.js.map +1 -0
  496. package/dist/server/routes/git.d.ts +4 -0
  497. package/dist/server/routes/git.d.ts.map +1 -0
  498. package/dist/server/routes/git.js +612 -0
  499. package/dist/server/routes/git.js.map +1 -0
  500. package/dist/server/routes/readUpload.d.ts +4 -0
  501. package/dist/server/routes/readUpload.d.ts.map +1 -0
  502. package/dist/server/routes/readUpload.js +57 -0
  503. package/dist/server/routes/readUpload.js.map +1 -0
  504. package/dist/server/utils/NotFoundError.d.ts +9 -0
  505. package/dist/server/utils/NotFoundError.d.ts.map +1 -0
  506. package/dist/server/utils/NotFoundError.js +16 -0
  507. package/dist/server/utils/NotFoundError.js.map +1 -0
  508. package/dist/server/utils/editor.css +1535 -0
  509. package/dist/server/utils/htmlEditorPage.d.ts +6 -0
  510. package/dist/server/utils/htmlEditorPage.d.ts.map +1 -0
  511. package/dist/server/utils/htmlEditorPage.js +518 -0
  512. package/dist/server/utils/htmlEditorPage.js.map +1 -0
  513. package/dist/server/utils/htmlLoginPage.d.ts +6 -0
  514. package/dist/server/utils/htmlLoginPage.d.ts.map +1 -0
  515. package/dist/server/utils/htmlLoginPage.js +134 -0
  516. package/dist/server/utils/htmlLoginPage.js.map +1 -0
  517. package/dist/server/utils/layout.css +153 -0
  518. package/dist/server/utils/types.d.ts +18 -0
  519. package/dist/server/utils/types.d.ts.map +1 -0
  520. package/dist/server/utils/types.js +2 -0
  521. package/dist/server/utils/types.js.map +1 -0
  522. package/dist/server-bin/index.d.ts +2 -0
  523. package/dist/server-bin/index.d.ts.map +1 -0
  524. package/dist/server-bin/index.js +26 -0
  525. package/dist/server-bin/index.js.map +1 -0
  526. package/dist/utils/functionContext.d.ts +12 -0
  527. package/dist/utils/functionContext.d.ts.map +1 -0
  528. package/dist/utils/functionContext.js +19 -0
  529. package/dist/utils/functionContext.js.map +1 -0
  530. package/dist/utils/functionContextClient.d.ts +23 -0
  531. package/dist/utils/functionContextClient.d.ts.map +1 -0
  532. package/dist/utils/functionContextClient.js +93 -0
  533. package/dist/utils/functionContextClient.js.map +1 -0
  534. package/dist/utils/stringifyData.d.ts +2 -0
  535. package/dist/utils/stringifyData.d.ts.map +1 -0
  536. package/dist/utils/stringifyData.js +23 -0
  537. package/dist/utils/stringifyData.js.map +1 -0
  538. package/dist/utils/stripImageExif.d.ts +14 -0
  539. package/dist/utils/stripImageExif.d.ts.map +1 -0
  540. package/dist/utils/stripImageExif.js +112 -0
  541. package/dist/utils/stripImageExif.js.map +1 -0
  542. package/dist/utils/types.d.ts +81 -0
  543. package/dist/utils/types.d.ts.map +1 -0
  544. package/dist/utils/types.js +2 -0
  545. package/dist/utils/types.js.map +1 -0
  546. package/migrations/1770796673000_initial-schema.js +178 -0
  547. package/package.json +97 -0
  548. package/pages/skywriter/.github/copilot-instructions.md +94 -0
  549. package/pages/skywriter/content.md +862 -0
  550. package/pages/skywriter/data.json +1 -0
  551. package/pages/skywriter/doc.code-workspace +15 -0
  552. package/pages/skywriter/script.js +1 -0
  553. package/pages/skywriter/server.js +1 -0
  554. package/pages/skywriter/settings.json +11 -0
  555. package/pages/skywriter/style.css +167 -0
  556. package/pages/skywriter/template/content.eta +55 -0
  557. package/pages/skywriter/template/data.json +1 -0
  558. package/pages/skywriter/template/script.js +512 -0
  559. package/pages/skywriter/template/server.js +27 -0
  560. package/pages/skywriter/template/settings.json +11 -0
  561. package/pages/skywriter/template/style.css +447 -0
@@ -0,0 +1,612 @@
1
+ import { spawn, execSync } from 'child_process';
2
+ import { createArchive } from "../../responder/index.js";
3
+ import { join } from 'path';
4
+ import { render } from "../../render/index.js";
5
+ import { functionContext } from "../../utils/functionContext.js";
6
+ import { getRenderDocument } from "../../operations/getRenderDocument.js";
7
+ import { upsert } from "../../operations/upsert.js";
8
+ import { promises as fs } from 'fs';
9
+ /**
10
+ * Execute a git command in a repository
11
+ */
12
+ async function execGit(repoPath, args) {
13
+ return new Promise((resolve, reject) => {
14
+ const git = spawn('git', args, {
15
+ cwd: repoPath,
16
+ env: {
17
+ ...process.env,
18
+ GIT_AUTHOR_NAME: 'Server',
19
+ GIT_AUTHOR_EMAIL: 'server@local',
20
+ GIT_COMMITTER_NAME: 'Server',
21
+ GIT_COMMITTER_EMAIL: 'server@local',
22
+ },
23
+ });
24
+ let stdout = '';
25
+ let stderr = '';
26
+ git.stdout.on('data', data => {
27
+ stdout += data.toString();
28
+ });
29
+ git.stderr.on('data', data => {
30
+ stderr += data.toString();
31
+ });
32
+ git.on('close', code => {
33
+ if (code === 0) {
34
+ resolve({ stdout, stderr });
35
+ }
36
+ else {
37
+ reject(new Error(`Git command failed: ${args.join(' ')}\n${stderr}`));
38
+ }
39
+ });
40
+ git.on('error', err => {
41
+ reject(err);
42
+ });
43
+ });
44
+ }
45
+ /**
46
+ * Get the repository path for a document
47
+ */
48
+ function getRepoPath(gitReposPath, documentId) {
49
+ // Use document ID as directory name for stability and simplicity
50
+ return join(gitReposPath, documentId.toString());
51
+ }
52
+ /**
53
+ * Ensure the working directory is clean by resetting any unstaged changes
54
+ */
55
+ async function ensureCleanWorkingDirectory(gitReposPath, documentId) {
56
+ const repoPath = getRepoPath(gitReposPath, documentId);
57
+ if (!(await repoExists(gitReposPath, documentId))) {
58
+ return;
59
+ }
60
+ try {
61
+ // Reset any unstaged changes
62
+ await execGit(repoPath, ['reset', '--hard', 'HEAD']);
63
+ // Clean untracked files
64
+ await execGit(repoPath, ['clean', '-fd']);
65
+ }
66
+ catch (error) {
67
+ // Ignore errors if there's nothing to clean
68
+ console.warn('Failed to clean working directory:', error);
69
+ }
70
+ }
71
+ /**
72
+ * Check if a repository exists and is initialized
73
+ */
74
+ async function repoExists(gitReposPath, documentId) {
75
+ const repoPath = getRepoPath(gitReposPath, documentId);
76
+ try {
77
+ const gitDir = join(repoPath, '.git');
78
+ const stat = await fs.stat(gitDir);
79
+ return stat.isDirectory();
80
+ }
81
+ catch {
82
+ return false;
83
+ }
84
+ }
85
+ /**
86
+ * Check if a specific branch exists in the repository
87
+ */
88
+ async function branchExists(gitReposPath, documentId, branch) {
89
+ const repoPath = getRepoPath(gitReposPath, documentId);
90
+ if (!(await repoExists(gitReposPath, documentId))) {
91
+ return false;
92
+ }
93
+ try {
94
+ const { stdout } = await execGit(repoPath, ['branch', '--list', branch]);
95
+ return stdout.trim().length > 0;
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ }
101
+ /**
102
+ * Get the current branch name
103
+ */
104
+ async function getCurrentBranch(gitReposPath, documentId) {
105
+ const repoPath = getRepoPath(gitReposPath, documentId);
106
+ if (!(await repoExists(gitReposPath, documentId))) {
107
+ return null;
108
+ }
109
+ try {
110
+ const { stdout } = await execGit(repoPath, ['branch', '--show-current']);
111
+ return stdout.trim() || null;
112
+ }
113
+ catch {
114
+ return null;
115
+ }
116
+ }
117
+ /**
118
+ * Check if there are uncommitted changes in the working directory
119
+ */
120
+ async function hasChanges(gitReposPath, documentId) {
121
+ const repoPath = getRepoPath(gitReposPath, documentId);
122
+ if (!(await repoExists(gitReposPath, documentId))) {
123
+ return false;
124
+ }
125
+ try {
126
+ const { stdout } = await execGit(repoPath, ['status', '--porcelain']);
127
+ return stdout.trim().length > 0;
128
+ }
129
+ catch {
130
+ return false;
131
+ }
132
+ }
133
+ /**
134
+ * Check if staged content matches the last commit with the same message type
135
+ * Searches through history to find last commit with matching message, not just HEAD
136
+ * @param documentId - The document ID
137
+ * @param commitMessage - The commit message to check against
138
+ * @returns true if last matching commit has same content, false otherwise
139
+ */
140
+ async function matchesLastCommitOfType(gitReposPath, documentId, commitMessage) {
141
+ const repoPath = getRepoPath(gitReposPath, documentId);
142
+ if (!(await repoExists(gitReposPath, documentId))) {
143
+ return false;
144
+ }
145
+ try {
146
+ // Get the tree hash of current working directory (staged files)
147
+ const { stdout: currentTreeHash } = await execGit(repoPath, ['write-tree']);
148
+ // Search for the last commit with matching message
149
+ const { stdout: logOutput } = await execGit(repoPath, ['log', '--format=%H %s', '--all']);
150
+ const commits = logOutput.trim().split('\n');
151
+ for (const line of commits) {
152
+ if (!line)
153
+ continue;
154
+ const [hash, ...messageParts] = line.split(' ');
155
+ const message = messageParts.join(' ');
156
+ // Found the most recent commit with matching message
157
+ if (message === commitMessage) {
158
+ // Get the tree hash of this commit
159
+ const { stdout: commitTreeHash } = await execGit(repoPath, ['rev-parse', `${hash}^{tree}`]);
160
+ // Compare tree hashes
161
+ return commitTreeHash.trim() === currentTreeHash.trim();
162
+ }
163
+ }
164
+ // No previous commit with matching message found
165
+ return false;
166
+ }
167
+ catch {
168
+ return false;
169
+ }
170
+ }
171
+ // /**
172
+ // * Sync current archive.tar.gz contents into the repository
173
+ // * Replaces all files with archive contents and commits if there are changes
174
+ // */
175
+ // export async function syncArchiveToRepo(documentId: number, archivePath: string): Promise<boolean> {
176
+ // const repoPath = getRepoPath(documentId)
177
+ // // Ensure repo exists
178
+ // if (!(await repoExists(documentId))) {
179
+ // await initRepo(documentId, archivePath)
180
+ // return true
181
+ // }
182
+ // // Create temp directory for extraction
183
+ // const tmpDir = join(tmpdir(), `git-sync-${randomBytes(8).toString('hex')}`)
184
+ // await fs.mkdir(tmpDir, {recursive: true})
185
+ // try {
186
+ // // Extract archive to temp directory
187
+ // await extract({
188
+ // file: archivePath,
189
+ // cwd: tmpDir,
190
+ // })
191
+ // // Remove all tracked files in repo (but keep .git)
192
+ // const files = await fs.readdir(repoPath)
193
+ // for (const file of files) {
194
+ // if (file === '.git') continue
195
+ // await fs.rm(join(repoPath, file), {recursive: true, force: true})
196
+ // }
197
+ // // Copy extracted files to repo
198
+ // const extractedFiles = await fs.readdir(tmpDir)
199
+ // for (const file of extractedFiles) {
200
+ // const src = join(tmpDir, file)
201
+ // const dest = join(repoPath, file)
202
+ // const stat = await fs.stat(src)
203
+ // if (stat.isDirectory()) {
204
+ // await fs.cp(src, dest, {recursive: true})
205
+ // } else {
206
+ // await fs.copyFile(src, dest)
207
+ // }
208
+ // }
209
+ // // Check if there are changes
210
+ // if (!(await hasChanges(documentId))) {
211
+ // return false
212
+ // }
213
+ // // Add all changes and commit
214
+ // await execGit(repoPath, ['add', '.'])
215
+ // await execGit(repoPath, ['commit', '-m', 'editor changes2'])
216
+ // return true
217
+ // } finally {
218
+ // await fs.rm(tmpDir, {recursive: true, force: true})
219
+ // }
220
+ // }
221
+ /**
222
+ * Read files directly from a specific branch in the repository
223
+ * Returns files in the same format as createArchive
224
+ */
225
+ async function readRepoFiles(gitReposPath, documentId, branch = 'main') {
226
+ const repoPath = getRepoPath(gitReposPath, documentId);
227
+ if (!(await repoExists(gitReposPath, documentId))) {
228
+ throw new Error('Repository does not exist');
229
+ }
230
+ // Check if branch exists
231
+ if (!(await branchExists(gitReposPath, documentId, branch))) {
232
+ throw new Error(`Branch ${branch} does not exist`);
233
+ }
234
+ // Save current branch
235
+ const currentBranch = await getCurrentBranch(gitReposPath, documentId);
236
+ // Switch to target branch if needed
237
+ if (currentBranch !== branch) {
238
+ await execGit(repoPath, ['checkout', branch]);
239
+ }
240
+ try {
241
+ // Get list of all files (excluding .git and .gitignore)
242
+ const allFiles = await fs.readdir(repoPath);
243
+ const files = allFiles.filter(f => f !== '.git' && f !== '.gitignore');
244
+ console.log('readRepoFiles - allFiles:', allFiles);
245
+ console.log('readRepoFiles - filtered files:', files);
246
+ // Read all files into memory (skip directories)
247
+ const result = {};
248
+ for (const filename of files) {
249
+ const filePath = join(repoPath, filename);
250
+ const stat = await fs.stat(filePath);
251
+ if (!stat.isFile())
252
+ continue;
253
+ const content = await fs.readFile(filePath, 'utf-8');
254
+ console.log('readRepoFiles - adding file:', filename);
255
+ result[filename] = content;
256
+ }
257
+ console.log('readRepoFiles - result keys:', Object.keys(result));
258
+ return result;
259
+ }
260
+ finally {
261
+ // Switch back to original branch
262
+ if (currentBranch && currentBranch !== branch) {
263
+ await execGit(repoPath, ['checkout', currentBranch]);
264
+ }
265
+ }
266
+ }
267
+ /**
268
+ * Sync document files directly to a specific branch in the repository
269
+ * More efficient than creating archive first
270
+ * Only updates the specified branch, leaving other branches untouched
271
+ */
272
+ async function syncDocumentToRepo(gitReposPath, documentId, files, branch = 'main', isDraft = false, hasDraft = false) {
273
+ const repoPath = getRepoPath(gitReposPath, documentId);
274
+ // Initialize repo if needed (only for main branch)
275
+ if (!(await repoExists(gitReposPath, documentId))) {
276
+ if (branch === 'draft') {
277
+ throw new Error('Cannot sync to draft branch before repository is initialized');
278
+ }
279
+ await fs.mkdir(repoPath, { recursive: true });
280
+ await execGit(repoPath, ['init', '--initial-branch=main']);
281
+ // Configure repo to allow HTTP push (required for non-bare repos)
282
+ await execGit(repoPath, ['config', 'http.receivepack', 'true']);
283
+ await execGit(repoPath, ['config', 'receive.denyCurrentBranch', 'updateInstead']);
284
+ // Create .gitignore file - ignore everything except main document files
285
+ const gitignoreContent = '*\n!.gitignore\n!settings.json\n!content.*\n!data.*\n!server.js\n!style.css\n!script.js\n';
286
+ await fs.writeFile(join(repoPath, '.gitignore'), gitignoreContent);
287
+ // Write all files
288
+ for (const [filename, content] of Object.entries(files)) {
289
+ await fs.writeFile(join(repoPath, filename), content);
290
+ }
291
+ // Initial commit
292
+ await execGit(repoPath, ['add', '.']);
293
+ await execGit(repoPath, ['commit', '-m', 'init']);
294
+ return true;
295
+ }
296
+ // Save current branch
297
+ const currentBranch = await getCurrentBranch(gitReposPath, documentId);
298
+ // Check if target branch exists, create if needed (for draft branch)
299
+ const targetBranchExists = await branchExists(gitReposPath, documentId, branch);
300
+ if (!targetBranchExists) {
301
+ if (branch === 'draft') {
302
+ // Create draft branch from main
303
+ await execGit(repoPath, ['checkout', '-b', 'draft', 'main']);
304
+ }
305
+ else {
306
+ throw new Error(`Branch ${branch} does not exist`);
307
+ }
308
+ }
309
+ else if (currentBranch !== branch) {
310
+ // Switch to target branch
311
+ await execGit(repoPath, ['checkout', branch]);
312
+ }
313
+ // Remove all tracked files in repo (but keep .git and .gitignore)
314
+ const existingFiles = await fs.readdir(repoPath);
315
+ for (const file of existingFiles) {
316
+ if (file === '.git' || file === '.gitignore')
317
+ continue;
318
+ await fs.rm(join(repoPath, file), { recursive: true, force: true });
319
+ }
320
+ // Write new files
321
+ for (const [filename, content] of Object.entries(files)) {
322
+ await fs.writeFile(join(repoPath, filename), content);
323
+ }
324
+ // Check if there are changes
325
+ if (!(await hasChanges(gitReposPath, documentId))) {
326
+ // Switch back to original branch if no changes
327
+ if (currentBranch && currentBranch !== branch) {
328
+ await execGit(repoPath, ['checkout', currentBranch]);
329
+ }
330
+ return false;
331
+ }
332
+ // Stage the changes
333
+ await execGit(repoPath, ['add', '.']);
334
+ // Determine commit message
335
+ const commitMessage = isDraft ? 'draft editor changes' : 'editor changes';
336
+ // Check if we should skip committing
337
+ // Special cases to maintain current/draft alternation:
338
+ // 1. Syncing current with no draft: allow if HEAD is draft (restore current on top)
339
+ // 2. Syncing draft when HEAD is current: always allow (maintain alternation)
340
+ let shouldSkip = false;
341
+ try {
342
+ const { stdout: headMessage } = await execGit(repoPath, ['log', '-1', '--format=%s']);
343
+ const headIsDraft = headMessage.trim() === 'draft editor changes';
344
+ if (!isDraft && !hasDraft) {
345
+ // Syncing current with no draft - only skip if HEAD is also current AND content matches
346
+ if (!headIsDraft) {
347
+ shouldSkip = await matchesLastCommitOfType(gitReposPath, documentId, commitMessage);
348
+ }
349
+ // If HEAD is draft, always allow current commit (to restore current on top)
350
+ }
351
+ else if (isDraft && !headIsDraft) {
352
+ // Syncing draft when HEAD is current - always allow to maintain alternation
353
+ // Don't check if it matches previous draft
354
+ shouldSkip = false;
355
+ }
356
+ else {
357
+ // Normal case: check if last commit of this type has same content
358
+ shouldSkip = await matchesLastCommitOfType(gitReposPath, documentId, commitMessage);
359
+ }
360
+ }
361
+ catch {
362
+ shouldSkip = await matchesLastCommitOfType(gitReposPath, documentId, commitMessage);
363
+ }
364
+ if (shouldSkip) {
365
+ // Reset staged changes - don't commit
366
+ await execGit(repoPath, ['reset', 'HEAD']);
367
+ // Switch back to original branch
368
+ if (currentBranch && currentBranch !== branch) {
369
+ await execGit(repoPath, ['checkout', currentBranch]);
370
+ }
371
+ return false;
372
+ }
373
+ // Commit changes
374
+ await execGit(repoPath, ['commit', '-m', commitMessage]);
375
+ // Switch back to original branch
376
+ if (currentBranch && currentBranch !== branch) {
377
+ await execGit(repoPath, ['checkout', currentBranch]);
378
+ }
379
+ return true;
380
+ }
381
+ // Get git-http-backend path once at module load
382
+ const GIT_HTTP_BACKEND = (() => {
383
+ try {
384
+ const gitExecPath = execSync('git --exec-path', { encoding: 'utf-8' }).trim();
385
+ return join(gitExecPath, 'git-http-backend');
386
+ }
387
+ catch {
388
+ // Fallback to common paths
389
+ return 'git-http-backend';
390
+ }
391
+ })();
392
+ /**
393
+ * Sync a document to the main git branch as a new commit
394
+ * Only commits if there are actual changes
395
+ * Returns true if a commit was created, false if no changes
396
+ */
397
+ async function syncDocumentToBranch(gitReposPath, client, documentId, document, isDraft = false, hasDraft = false, requestQuery) {
398
+ // Get archive files directly without creating tar.gz
399
+ const archiveFiles = await createArchive(document, '/archive.tar.gz', doc => {
400
+ return render(doc, {
401
+ fn: functionContext(client, doc, requestQuery),
402
+ query: requestQuery,
403
+ });
404
+ });
405
+ const files = {};
406
+ // Convert archive files to files object
407
+ for (const { filename, content } of archiveFiles) {
408
+ // Remove leading slash from filename
409
+ const key = filename.startsWith('/') ? filename.slice(1) : filename;
410
+ // Ensure value is a string
411
+ let value;
412
+ if (typeof content === 'string') {
413
+ value = content;
414
+ }
415
+ else if (Buffer.isBuffer(content)) {
416
+ value = content.toString('utf-8');
417
+ }
418
+ else if (typeof content === 'object' && content !== null) {
419
+ value = JSON.stringify(content, null, 2);
420
+ }
421
+ else {
422
+ value = String(content);
423
+ }
424
+ files[key] = value;
425
+ }
426
+ console.log('syncDocumentToBranch - files being synced:', Object.keys(files));
427
+ console.log('syncDocumentToBranch - settings.json content length:', files['settings.json']?.length || 0);
428
+ console.log('syncDocumentToBranch - settings.json content:', files['settings.json']);
429
+ // Sync document directly to repository (always to main branch)
430
+ // Returns false if no changes detected
431
+ return await syncDocumentToRepo(gitReposPath, documentId, files, 'main', isDraft, hasDraft);
432
+ }
433
+ export const git = async (c) => {
434
+ const client = c.get('client');
435
+ const gitReposPath = c.get('gitReposPath');
436
+ const gitMatch = c.get('pathMatch');
437
+ if (!gitMatch) {
438
+ throw new Error('gitHandler requires pathMatch to be set');
439
+ }
440
+ const documentPath = gitMatch[1] || '/';
441
+ const gitPath = gitMatch[2] || '/';
442
+ // Determine the git service from the request
443
+ const service = c.req.query('service') || '';
444
+ const isReceivePack = service === 'git-receive-pack' || gitPath.includes('/git-receive-pack');
445
+ const isUploadPack = service === 'git-upload-pack' || gitPath.includes('/git-upload-pack');
446
+ try {
447
+ // Get the current document (main branch)
448
+ const document = await getRenderDocument(client, { path: documentPath }, { includeSlot: true, includeTemplate: true });
449
+ if (!document) {
450
+ return c.json({ error: 'Document not found' }, 404);
451
+ }
452
+ // Sync documents to repo before upload-pack (fetch/pull) operations
453
+ // This ensures clients get the latest database content
454
+ // Skip sync on receive-pack (push) since we're receiving changes
455
+ if (isUploadPack || !(await repoExists(gitReposPath, document.id))) {
456
+ // Check if draft exists
457
+ const draftDocument = await getRenderDocument(client, { path: documentPath }, { draft: true, includeSlot: true, includeTemplate: true });
458
+ const hasDraft = !!(draftDocument && draftDocument.draft === true);
459
+ const requestQuery = c.req.query();
460
+ // Sync current content to main branch
461
+ await syncDocumentToBranch(gitReposPath, client, document.id, document, false, hasDraft, requestQuery);
462
+ // If draft exists, sync draft content as second commit on main
463
+ if (hasDraft) {
464
+ await syncDocumentToBranch(gitReposPath, client, document.id, draftDocument, true, true, requestQuery);
465
+ }
466
+ }
467
+ // Before receive-pack (push), ensure working directory is clean
468
+ // This is required for receive.denyCurrentBranch = updateInstead to work
469
+ if (isReceivePack) {
470
+ console.log('Cleaning working directory before push...');
471
+ await ensureCleanWorkingDirectory(gitReposPath, document.id);
472
+ console.log('Working directory cleaned');
473
+ }
474
+ const repoPath = getRepoPath(gitReposPath, document.id);
475
+ // Set up CGI environment for git-http-backend
476
+ // GIT_PROJECT_ROOT should be the parent directory containing repos
477
+ // PATH_INFO should be /{repo-name}{git-path}
478
+ const env = {
479
+ ...process.env,
480
+ GIT_PROJECT_ROOT: gitReposPath,
481
+ GIT_HTTP_EXPORT_ALL: '1',
482
+ PATH_INFO: `/${document.id}${gitPath}`,
483
+ REQUEST_METHOD: c.req.method,
484
+ QUERY_STRING: new URL(c.req.url).search.substring(1),
485
+ CONTENT_TYPE: c.req.header('content-type') || '',
486
+ };
487
+ // Spawn git-http-backend (cwd set to repo for safety)
488
+ const backend = spawn(GIT_HTTP_BACKEND, [], {
489
+ env,
490
+ cwd: repoPath,
491
+ });
492
+ // Collect response data
493
+ let statusCode = 200;
494
+ const headers = {};
495
+ let body = Buffer.alloc(0);
496
+ let headersParsed = false;
497
+ let stderrOutput = '';
498
+ backend.stderr.on('data', (data) => {
499
+ stderrOutput += data.toString();
500
+ });
501
+ backend.stdout.on('data', (data) => {
502
+ if (!headersParsed) {
503
+ // Parse CGI headers
504
+ const dataStr = data.toString();
505
+ const headerEndIndex = dataStr.indexOf('\r\n\r\n');
506
+ if (headerEndIndex !== -1) {
507
+ const headerSection = dataStr.substring(0, headerEndIndex);
508
+ const bodySection = dataStr.substring(headerEndIndex + 4);
509
+ // Parse headers
510
+ const headerLines = headerSection.split('\r\n');
511
+ for (const line of headerLines) {
512
+ const colonIndex = line.indexOf(':');
513
+ if (colonIndex !== -1) {
514
+ const key = line.substring(0, colonIndex).trim();
515
+ const value = line.substring(colonIndex + 1).trim();
516
+ if (key.toLowerCase() === 'status') {
517
+ const statusMatch = value.match(/^(\d+)/);
518
+ if (statusMatch) {
519
+ statusCode = parseInt(statusMatch[1], 10);
520
+ }
521
+ }
522
+ else {
523
+ headers[key] = value;
524
+ }
525
+ }
526
+ }
527
+ headersParsed = true;
528
+ if (bodySection) {
529
+ body = Buffer.concat([body, Buffer.from(bodySection)]);
530
+ }
531
+ }
532
+ else {
533
+ body = Buffer.concat([body, data]);
534
+ }
535
+ }
536
+ else {
537
+ body = Buffer.concat([body, data]);
538
+ }
539
+ });
540
+ // Pipe request body to git-http-backend
541
+ if (c.req.method === 'POST') {
542
+ const requestBody = await c.req.arrayBuffer();
543
+ backend.stdin.write(Buffer.from(requestBody));
544
+ }
545
+ backend.stdin.end();
546
+ // Wait for git-http-backend to complete
547
+ await new Promise((resolve, reject) => {
548
+ backend.on('close', code => {
549
+ if (code === 0) {
550
+ resolve();
551
+ }
552
+ else {
553
+ console.error('git-http-backend stderr:', stderrOutput);
554
+ reject(new Error(`git-http-backend exited with code ${code}: ${stderrOutput}`));
555
+ }
556
+ });
557
+ backend.on('error', err => {
558
+ console.error('git-http-backend spawn error:', err);
559
+ reject(err);
560
+ });
561
+ });
562
+ // After receive-pack (push), sync repo back to database
563
+ if (isReceivePack) {
564
+ try {
565
+ console.log('Starting sync from repo to database...');
566
+ // Read files directly from repo (always from main branch)
567
+ const files = await readRepoFiles(gitReposPath, document.id, 'main');
568
+ // Debug: log available files
569
+ console.log('Files in repo after push:', Object.keys(files));
570
+ console.log('settings.json exists?', 'settings.json' in files);
571
+ console.log('settings.json value:', files['settings.json']);
572
+ console.log('settings.json type:', typeof files['settings.json']);
573
+ // Validate settings.json exists (but allow empty string)
574
+ if (files['settings.json'] === undefined) {
575
+ console.error('Full files object:', JSON.stringify(files, null, 2));
576
+ throw new Error('settings.json not found in repository');
577
+ }
578
+ // Parse settings.json to get document metadata (treat empty as {})
579
+ const settingsContent = files['settings.json'].trim();
580
+ const settings = settingsContent ? JSON.parse(settingsContent) : {};
581
+ console.log('Parsed settings:', settings);
582
+ // Find optional content files
583
+ const contentFile = Object.keys(files).find(f => f.startsWith('content.'));
584
+ const dataFile = Object.keys(files).find(f => f.startsWith('data.'));
585
+ console.log('Content file:', contentFile, 'Data file:', dataFile);
586
+ // Upsert document with data from repo files
587
+ console.log('Upserting to path:', documentPath);
588
+ await upsert(client, { path: documentPath }, {
589
+ ...settings,
590
+ content: contentFile ? files[contentFile] : settings.content,
591
+ data: dataFile ? files[dataFile] : settings.data,
592
+ server: files['server.js'] ?? settings.server,
593
+ style: files['style.css'] ?? settings.style,
594
+ script: files['script.js'] ?? settings.script,
595
+ });
596
+ console.log('Upsert completed successfully');
597
+ }
598
+ catch (syncError) {
599
+ console.error('Failed to sync repo to database:', syncError);
600
+ // Don't fail the git push if database sync fails
601
+ // The push succeeded, we just couldn't update the database
602
+ }
603
+ }
604
+ // Return the response from git-http-backend
605
+ return new Response(new Uint8Array(body), { status: statusCode, headers });
606
+ }
607
+ catch (error) {
608
+ console.error('git operation error:', error);
609
+ return c.json({ error: error instanceof Error ? error.message : 'Git operation failed' }, 500);
610
+ }
611
+ };
612
+ //# sourceMappingURL=git.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git.js","sourceRoot":"","sources":["../../../src/server/routes/git.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { MiddlewareHandler } from 'hono';
2
+ import type { AppContext } from '../utils/types.ts';
3
+ export declare const readUpload: MiddlewareHandler<AppContext>;
4
+ //# sourceMappingURL=readUpload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"readUpload.d.ts","sourceRoot":"","sources":["../../../src/server/routes/readUpload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,iBAAiB,EAAC,MAAM,MAAM,CAAA;AAI3C,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,mBAAmB,CAAA;AAGjD,eAAO,MAAM,UAAU,EAAE,iBAAiB,CAAC,UAAU,CA4DpD,CAAA"}