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.
- package/LICENSE +16 -0
- package/README.md +852 -0
- package/dist/cli/commands/host.d.ts +6 -0
- package/dist/cli/commands/host.d.ts.map +1 -0
- package/dist/cli/commands/host.js +52 -0
- package/dist/cli/commands/host.js.map +1 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +207 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/login.d.ts +18 -0
- package/dist/cli/commands/login.d.ts.map +1 -0
- package/dist/cli/commands/login.js +152 -0
- package/dist/cli/commands/login.js.map +1 -0
- package/dist/cli/commands/logout.d.ts +15 -0
- package/dist/cli/commands/logout.d.ts.map +1 -0
- package/dist/cli/commands/logout.js +62 -0
- package/dist/cli/commands/logout.js.map +1 -0
- package/dist/cli/commands/pull.d.ts +19 -0
- package/dist/cli/commands/pull.d.ts.map +1 -0
- package/dist/cli/commands/pull.js +44 -0
- package/dist/cli/commands/pull.js.map +1 -0
- package/dist/cli/commands/push.d.ts +9 -0
- package/dist/cli/commands/push.d.ts.map +1 -0
- package/dist/cli/commands/push.js +49 -0
- package/dist/cli/commands/push.js.map +1 -0
- package/dist/cli/commands/removeServer.d.ts +9 -0
- package/dist/cli/commands/removeServer.d.ts.map +1 -0
- package/dist/cli/commands/removeServer.js +55 -0
- package/dist/cli/commands/removeServer.js.map +1 -0
- package/dist/cli/commands/render.d.ts +6 -0
- package/dist/cli/commands/render.d.ts.map +1 -0
- package/dist/cli/commands/render.js +11 -0
- package/dist/cli/commands/render.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +7 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +55 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/sessions.d.ts +6 -0
- package/dist/cli/commands/sessions.d.ts.map +1 -0
- package/dist/cli/commands/sessions.js +24 -0
- package/dist/cli/commands/sessions.js.map +1 -0
- package/dist/cli/commands/settings.d.ts +10 -0
- package/dist/cli/commands/settings.d.ts.map +1 -0
- package/dist/cli/commands/settings.js +69 -0
- package/dist/cli/commands/settings.js.map +1 -0
- package/dist/cli/commands/switchServer.d.ts +9 -0
- package/dist/cli/commands/switchServer.d.ts.map +1 -0
- package/dist/cli/commands/switchServer.js +52 -0
- package/dist/cli/commands/switchServer.js.map +1 -0
- package/dist/cli/commands/vscodeInit.d.ts +13 -0
- package/dist/cli/commands/vscodeInit.d.ts.map +1 -0
- package/dist/cli/commands/vscodeInit.js +152 -0
- package/dist/cli/commands/vscodeInit.js.map +1 -0
- package/dist/cli/commands/whoami.d.ts +6 -0
- package/dist/cli/commands/whoami.d.ts.map +1 -0
- package/dist/cli/commands/whoami.js +67 -0
- package/dist/cli/commands/whoami.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +5 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/middleware/checkDuplicatePath.d.ts +19 -0
- package/dist/cli/middleware/checkDuplicatePath.d.ts.map +1 -0
- package/dist/cli/middleware/checkDuplicatePath.js +45 -0
- package/dist/cli/middleware/checkDuplicatePath.js.map +1 -0
- package/dist/cli/middleware/redirectRoot.d.ts +18 -0
- package/dist/cli/middleware/redirectRoot.d.ts.map +1 -0
- package/dist/cli/middleware/redirectRoot.js +44 -0
- package/dist/cli/middleware/redirectRoot.js.map +1 -0
- package/dist/cli/middleware/serveDocument.d.ts +10 -0
- package/dist/cli/middleware/serveDocument.d.ts.map +1 -0
- package/dist/cli/middleware/serveDocument.js +104 -0
- package/dist/cli/middleware/serveDocument.js.map +1 -0
- package/dist/cli/middleware/serveUploads.d.ts +20 -0
- package/dist/cli/middleware/serveUploads.d.ts.map +1 -0
- package/dist/cli/middleware/serveUploads.js +93 -0
- package/dist/cli/middleware/serveUploads.js.map +1 -0
- package/dist/cli/middleware/types.d.ts +43 -0
- package/dist/cli/middleware/types.d.ts.map +1 -0
- package/dist/cli/middleware/types.js +2 -0
- package/dist/cli/middleware/types.js.map +1 -0
- package/dist/cli/pathOperations/deletePathUploads.d.ts +6 -0
- package/dist/cli/pathOperations/deletePathUploads.d.ts.map +1 -0
- package/dist/cli/pathOperations/deletePathUploads.js +68 -0
- package/dist/cli/pathOperations/deletePathUploads.js.map +1 -0
- package/dist/cli/pathOperations/downloadPathUploads.d.ts +6 -0
- package/dist/cli/pathOperations/downloadPathUploads.d.ts.map +1 -0
- package/dist/cli/pathOperations/downloadPathUploads.js +156 -0
- package/dist/cli/pathOperations/downloadPathUploads.js.map +1 -0
- package/dist/cli/pathOperations/pullPathViaGit.d.ts +9 -0
- package/dist/cli/pathOperations/pullPathViaGit.d.ts.map +1 -0
- package/dist/cli/pathOperations/pullPathViaGit.js +86 -0
- package/dist/cli/pathOperations/pullPathViaGit.js.map +1 -0
- package/dist/cli/pathOperations/pullPathViaTar.d.ts +14 -0
- package/dist/cli/pathOperations/pullPathViaTar.d.ts.map +1 -0
- package/dist/cli/pathOperations/pullPathViaTar.js +252 -0
- package/dist/cli/pathOperations/pullPathViaTar.js.map +1 -0
- package/dist/cli/pathOperations/pushPathViaGit.d.ts +9 -0
- package/dist/cli/pathOperations/pushPathViaGit.d.ts.map +1 -0
- package/dist/cli/pathOperations/pushPathViaGit.js +49 -0
- package/dist/cli/pathOperations/pushPathViaGit.js.map +1 -0
- package/dist/cli/pathOperations/pushPathViaTar.d.ts +6 -0
- package/dist/cli/pathOperations/pushPathViaTar.d.ts.map +1 -0
- package/dist/cli/pathOperations/pushPathViaTar.js +63 -0
- package/dist/cli/pathOperations/pushPathViaTar.js.map +1 -0
- package/dist/cli/pathOperations/uploadPathUploads.d.ts +6 -0
- package/dist/cli/pathOperations/uploadPathUploads.d.ts.map +1 -0
- package/dist/cli/pathOperations/uploadPathUploads.js +114 -0
- package/dist/cli/pathOperations/uploadPathUploads.js.map +1 -0
- package/dist/cli/pathOperations/validatePathSettings.d.ts +14 -0
- package/dist/cli/pathOperations/validatePathSettings.d.ts.map +1 -0
- package/dist/cli/pathOperations/validatePathSettings.js +191 -0
- package/dist/cli/pathOperations/validatePathSettings.js.map +1 -0
- package/dist/cli/utils/assemble.d.ts +22 -0
- package/dist/cli/utils/assemble.d.ts.map +1 -0
- package/dist/cli/utils/assemble.js +219 -0
- package/dist/cli/utils/assemble.js.map +1 -0
- package/dist/cli/utils/cliName.d.ts +3 -0
- package/dist/cli/utils/cliName.d.ts.map +1 -0
- package/dist/cli/utils/cliName.js +17 -0
- package/dist/cli/utils/cliName.js.map +1 -0
- package/dist/cli/utils/codeWorkspace.d.ts +13 -0
- package/dist/cli/utils/codeWorkspace.d.ts.map +1 -0
- package/dist/cli/utils/codeWorkspace.js +20 -0
- package/dist/cli/utils/codeWorkspace.js.map +1 -0
- package/dist/cli/utils/colors.d.ts +14 -0
- package/dist/cli/utils/colors.d.ts.map +1 -0
- package/dist/cli/utils/colors.js +22 -0
- package/dist/cli/utils/colors.js.map +1 -0
- package/dist/cli/utils/config.d.ts +35 -0
- package/dist/cli/utils/config.d.ts.map +1 -0
- package/dist/cli/utils/config.js +95 -0
- package/dist/cli/utils/config.js.map +1 -0
- package/dist/cli/utils/copilotInstructions.d.ts +5 -0
- package/dist/cli/utils/copilotInstructions.d.ts.map +1 -0
- package/dist/cli/utils/copilotInstructions.js +101 -0
- package/dist/cli/utils/copilotInstructions.js.map +1 -0
- package/dist/cli/utils/createLoggedFs.d.ts +17 -0
- package/dist/cli/utils/createLoggedFs.d.ts.map +1 -0
- package/dist/cli/utils/createLoggedFs.js +106 -0
- package/dist/cli/utils/createLoggedFs.js.map +1 -0
- package/dist/cli/utils/credentials.d.ts +38 -0
- package/dist/cli/utils/credentials.d.ts.map +1 -0
- package/dist/cli/utils/credentials.js +400 -0
- package/dist/cli/utils/credentials.js.map +1 -0
- package/dist/cli/utils/discover.d.ts +26 -0
- package/dist/cli/utils/discover.d.ts.map +1 -0
- package/dist/cli/utils/discover.js +209 -0
- package/dist/cli/utils/discover.js.map +1 -0
- package/dist/cli/utils/formatPlan.d.ts +40 -0
- package/dist/cli/utils/formatPlan.d.ts.map +1 -0
- package/dist/cli/utils/formatPlan.js +148 -0
- package/dist/cli/utils/formatPlan.js.map +1 -0
- package/dist/cli/utils/git.d.ts +17 -0
- package/dist/cli/utils/git.d.ts.map +1 -0
- package/dist/cli/utils/git.js +57 -0
- package/dist/cli/utils/git.js.map +1 -0
- package/dist/cli/utils/gitUrl.d.ts +7 -0
- package/dist/cli/utils/gitUrl.d.ts.map +1 -0
- package/dist/cli/utils/gitUrl.js +23 -0
- package/dist/cli/utils/gitUrl.js.map +1 -0
- package/dist/cli/utils/log.d.ts +22 -0
- package/dist/cli/utils/log.d.ts.map +1 -0
- package/dist/cli/utils/log.js +31 -0
- package/dist/cli/utils/log.js.map +1 -0
- package/dist/cli/utils/logData.d.ts +5 -0
- package/dist/cli/utils/logData.d.ts.map +1 -0
- package/dist/cli/utils/logData.js +65 -0
- package/dist/cli/utils/logData.js.map +1 -0
- package/dist/cli/utils/loggedFetch.d.ts +4 -0
- package/dist/cli/utils/loggedFetch.d.ts.map +1 -0
- package/dist/cli/utils/loggedFetch.js +15 -0
- package/dist/cli/utils/loggedFetch.js.map +1 -0
- package/dist/cli/utils/pageContext.d.ts +50 -0
- package/dist/cli/utils/pageContext.d.ts.map +1 -0
- package/dist/cli/utils/pageContext.js +86 -0
- package/dist/cli/utils/pageContext.js.map +1 -0
- package/dist/cli/utils/parseDocumentPath.d.ts +13 -0
- package/dist/cli/utils/parseDocumentPath.d.ts.map +1 -0
- package/dist/cli/utils/parseDocumentPath.js +35 -0
- package/dist/cli/utils/parseDocumentPath.js.map +1 -0
- package/dist/cli/utils/populateCache.d.ts +12 -0
- package/dist/cli/utils/populateCache.d.ts.map +1 -0
- package/dist/cli/utils/populateCache.js +21 -0
- package/dist/cli/utils/populateCache.js.map +1 -0
- package/dist/cli/utils/prefixLog.d.ts +21 -0
- package/dist/cli/utils/prefixLog.d.ts.map +1 -0
- package/dist/cli/utils/prefixLog.js +73 -0
- package/dist/cli/utils/prefixLog.js.map +1 -0
- package/dist/cli/utils/program.d.ts +7 -0
- package/dist/cli/utils/program.d.ts.map +1 -0
- package/dist/cli/utils/program.js +266 -0
- package/dist/cli/utils/program.js.map +1 -0
- package/dist/cli/utils/promptExec.d.ts +27 -0
- package/dist/cli/utils/promptExec.d.ts.map +1 -0
- package/dist/cli/utils/promptExec.js +47 -0
- package/dist/cli/utils/promptExec.js.map +1 -0
- package/dist/cli/utils/pullHarness.d.ts +15 -0
- package/dist/cli/utils/pullHarness.d.ts.map +1 -0
- package/dist/cli/utils/pullHarness.js +101 -0
- package/dist/cli/utils/pullHarness.js.map +1 -0
- package/dist/cli/utils/pullViaGit.d.ts +6 -0
- package/dist/cli/utils/pullViaGit.d.ts.map +1 -0
- package/dist/cli/utils/pullViaGit.js +13 -0
- package/dist/cli/utils/pullViaGit.js.map +1 -0
- package/dist/cli/utils/pullViaTar.d.ts +10 -0
- package/dist/cli/utils/pullViaTar.d.ts.map +1 -0
- package/dist/cli/utils/pullViaTar.js +15 -0
- package/dist/cli/utils/pullViaTar.js.map +1 -0
- package/dist/cli/utils/pushHarness.d.ts +24 -0
- package/dist/cli/utils/pushHarness.d.ts.map +1 -0
- package/dist/cli/utils/pushHarness.js +82 -0
- package/dist/cli/utils/pushHarness.js.map +1 -0
- package/dist/cli/utils/pushViaGit.d.ts +6 -0
- package/dist/cli/utils/pushViaGit.d.ts.map +1 -0
- package/dist/cli/utils/pushViaGit.js +16 -0
- package/dist/cli/utils/pushViaGit.js.map +1 -0
- package/dist/cli/utils/pushViaTar.d.ts +6 -0
- package/dist/cli/utils/pushViaTar.d.ts.map +1 -0
- package/dist/cli/utils/pushViaTar.js +9 -0
- package/dist/cli/utils/pushViaTar.js.map +1 -0
- package/dist/cli/utils/resolveTarget.d.ts +23 -0
- package/dist/cli/utils/resolveTarget.d.ts.map +1 -0
- package/dist/cli/utils/resolveTarget.js +43 -0
- package/dist/cli/utils/resolveTarget.js.map +1 -0
- package/dist/cli/utils/settingsValidation.d.ts +23 -0
- package/dist/cli/utils/settingsValidation.d.ts.map +1 -0
- package/dist/cli/utils/settingsValidation.js +176 -0
- package/dist/cli/utils/settingsValidation.js.map +1 -0
- package/dist/cli/utils/types.d.ts +33 -0
- package/dist/cli/utils/types.d.ts.map +1 -0
- package/dist/cli/utils/types.js +2 -0
- package/dist/cli/utils/types.js.map +1 -0
- package/dist/cli/utils/validateAndGetFilesFromDir.d.ts +10 -0
- package/dist/cli/utils/validateAndGetFilesFromDir.d.ts.map +1 -0
- package/dist/cli/utils/validateAndGetFilesFromDir.js +74 -0
- package/dist/cli/utils/validateAndGetFilesFromDir.js.map +1 -0
- package/dist/cli/utils/watchForChanges.d.ts +7 -0
- package/dist/cli/utils/watchForChanges.d.ts.map +1 -0
- package/dist/cli/utils/watchForChanges.js +44 -0
- package/dist/cli/utils/watchForChanges.js.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +23 -0
- package/dist/db/index.js.map +1 -0
- package/dist/editor.bundle.dev.js +30823 -0
- package/dist/editor.bundle.dev.js.map +7 -0
- package/dist/editor.bundle.js +30347 -0
- package/dist/editor.bundle.js.map +7 -0
- package/dist/editor.bundle.prod.js +1373 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/operations/addRedirect.d.ts +20 -0
- package/dist/operations/addRedirect.d.ts.map +1 -0
- package/dist/operations/addRedirect.js +46 -0
- package/dist/operations/addRedirect.js.map +1 -0
- package/dist/operations/addUpload.d.ts +29 -0
- package/dist/operations/addUpload.d.ts.map +1 -0
- package/dist/operations/addUpload.js +96 -0
- package/dist/operations/addUpload.js.map +1 -0
- package/dist/operations/addUploadsFromContent.d.ts +27 -0
- package/dist/operations/addUploadsFromContent.d.ts.map +1 -0
- package/dist/operations/addUploadsFromContent.js +311 -0
- package/dist/operations/addUploadsFromContent.js.map +1 -0
- package/dist/operations/clearDraft.d.ts +17 -0
- package/dist/operations/clearDraft.d.ts.map +1 -0
- package/dist/operations/clearDraft.js +56 -0
- package/dist/operations/clearDraft.js.map +1 -0
- package/dist/operations/createDocumentRecord.d.ts +11 -0
- package/dist/operations/createDocumentRecord.d.ts.map +1 -0
- package/dist/operations/createDocumentRecord.js +100 -0
- package/dist/operations/createDocumentRecord.js.map +1 -0
- package/dist/operations/createRoute.d.ts +6 -0
- package/dist/operations/createRoute.d.ts.map +1 -0
- package/dist/operations/createRoute.js +10 -0
- package/dist/operations/createRoute.js.map +1 -0
- package/dist/operations/createSession.d.ts +21 -0
- package/dist/operations/createSession.d.ts.map +1 -0
- package/dist/operations/createSession.js +27 -0
- package/dist/operations/createSession.js.map +1 -0
- package/dist/operations/deleteSession.d.ts +13 -0
- package/dist/operations/deleteSession.d.ts.map +1 -0
- package/dist/operations/deleteSession.js +15 -0
- package/dist/operations/deleteSession.js.map +1 -0
- package/dist/operations/findDocument.d.ts +18 -0
- package/dist/operations/findDocument.d.ts.map +1 -0
- package/dist/operations/findDocument.js +53 -0
- package/dist/operations/findDocument.js.map +1 -0
- package/dist/operations/getAllUploadsForDocument.d.ts +11 -0
- package/dist/operations/getAllUploadsForDocument.d.ts.map +1 -0
- package/dist/operations/getAllUploadsForDocument.js +15 -0
- package/dist/operations/getAllUploadsForDocument.js.map +1 -0
- package/dist/operations/getDocumentClientState.d.ts +30 -0
- package/dist/operations/getDocumentClientState.d.ts.map +1 -0
- package/dist/operations/getDocumentClientState.js +246 -0
- package/dist/operations/getDocumentClientState.js.map +1 -0
- package/dist/operations/getDocumentInstance.d.ts +7 -0
- package/dist/operations/getDocumentInstance.d.ts.map +1 -0
- package/dist/operations/getDocumentInstance.js +32 -0
- package/dist/operations/getDocumentInstance.js.map +1 -0
- package/dist/operations/getDocumentRecord.d.ts +6 -0
- package/dist/operations/getDocumentRecord.d.ts.map +1 -0
- package/dist/operations/getDocumentRecord.js +8 -0
- package/dist/operations/getDocumentRecord.js.map +1 -0
- package/dist/operations/getDualDocument.d.ts +28 -0
- package/dist/operations/getDualDocument.d.ts.map +1 -0
- package/dist/operations/getDualDocument.js +81 -0
- package/dist/operations/getDualDocument.js.map +1 -0
- package/dist/operations/getDualDocuments.d.ts +26 -0
- package/dist/operations/getDualDocuments.d.ts.map +1 -0
- package/dist/operations/getDualDocuments.js +130 -0
- package/dist/operations/getDualDocuments.js.map +1 -0
- package/dist/operations/getOptimisticDocument.d.ts +6 -0
- package/dist/operations/getOptimisticDocument.d.ts.map +1 -0
- package/dist/operations/getOptimisticDocument.js +30 -0
- package/dist/operations/getOptimisticDocument.js.map +1 -0
- package/dist/operations/getPage.d.ts +18 -0
- package/dist/operations/getPage.d.ts.map +1 -0
- package/dist/operations/getPage.js +31 -0
- package/dist/operations/getPage.js.map +1 -0
- package/dist/operations/getPages.d.ts +18 -0
- package/dist/operations/getPages.d.ts.map +1 -0
- package/dist/operations/getPages.js +30 -0
- package/dist/operations/getPages.js.map +1 -0
- package/dist/operations/getRedirects.d.ts +13 -0
- package/dist/operations/getRedirects.d.ts.map +1 -0
- package/dist/operations/getRedirects.js +30 -0
- package/dist/operations/getRedirects.js.map +1 -0
- package/dist/operations/getRenderDocument.d.ts +18 -0
- package/dist/operations/getRenderDocument.d.ts.map +1 -0
- package/dist/operations/getRenderDocument.js +27 -0
- package/dist/operations/getRenderDocument.js.map +1 -0
- package/dist/operations/getRenderDocumentWithAssociations.d.ts +15 -0
- package/dist/operations/getRenderDocumentWithAssociations.d.ts.map +1 -0
- package/dist/operations/getRenderDocumentWithAssociations.js +64 -0
- package/dist/operations/getRenderDocumentWithAssociations.js.map +1 -0
- package/dist/operations/getRenderDocuments.d.ts +16 -0
- package/dist/operations/getRenderDocuments.d.ts.map +1 -0
- package/dist/operations/getRenderDocuments.js +25 -0
- package/dist/operations/getRenderDocuments.js.map +1 -0
- package/dist/operations/getUpload.d.ts +25 -0
- package/dist/operations/getUpload.d.ts.map +1 -0
- package/dist/operations/getUpload.js +37 -0
- package/dist/operations/getUpload.js.map +1 -0
- package/dist/operations/getUploads.d.ts +25 -0
- package/dist/operations/getUploads.d.ts.map +1 -0
- package/dist/operations/getUploads.js +76 -0
- package/dist/operations/getUploads.js.map +1 -0
- package/dist/operations/getUsersCount.d.ts +12 -0
- package/dist/operations/getUsersCount.d.ts.map +1 -0
- package/dist/operations/getUsersCount.js +12 -0
- package/dist/operations/getUsersCount.js.map +1 -0
- package/dist/operations/login.d.ts +20 -0
- package/dist/operations/login.d.ts.map +1 -0
- package/dist/operations/login.js +38 -0
- package/dist/operations/login.js.map +1 -0
- package/dist/operations/removeDocument.d.ts +19 -0
- package/dist/operations/removeDocument.d.ts.map +1 -0
- package/dist/operations/removeDocument.js +54 -0
- package/dist/operations/removeDocument.js.map +1 -0
- package/dist/operations/removeRedirect.d.ts +15 -0
- package/dist/operations/removeRedirect.d.ts.map +1 -0
- package/dist/operations/removeRedirect.js +71 -0
- package/dist/operations/removeRedirect.js.map +1 -0
- package/dist/operations/removeUpload.d.ts +21 -0
- package/dist/operations/removeUpload.d.ts.map +1 -0
- package/dist/operations/removeUpload.js +49 -0
- package/dist/operations/removeUpload.js.map +1 -0
- package/dist/operations/search.d.ts +19 -0
- package/dist/operations/search.d.ts.map +1 -0
- package/dist/operations/search.js +109 -0
- package/dist/operations/search.js.map +1 -0
- package/dist/operations/seedIfEmpty.d.ts +7 -0
- package/dist/operations/seedIfEmpty.d.ts.map +1 -0
- package/dist/operations/seedIfEmpty.js +100 -0
- package/dist/operations/seedIfEmpty.js.map +1 -0
- package/dist/operations/signup.d.ts +21 -0
- package/dist/operations/signup.d.ts.map +1 -0
- package/dist/operations/signup.js +45 -0
- package/dist/operations/signup.js.map +1 -0
- package/dist/operations/types.d.ts +223 -0
- package/dist/operations/types.d.ts.map +1 -0
- package/dist/operations/types.js +2 -0
- package/dist/operations/types.js.map +1 -0
- package/dist/operations/updateUpload.d.ts +27 -0
- package/dist/operations/updateUpload.d.ts.map +1 -0
- package/dist/operations/updateUpload.js +78 -0
- package/dist/operations/updateUpload.js.map +1 -0
- package/dist/operations/updateViaArchive.d.ts +23 -0
- package/dist/operations/updateViaArchive.d.ts.map +1 -0
- package/dist/operations/updateViaArchive.js +229 -0
- package/dist/operations/updateViaArchive.js.map +1 -0
- package/dist/operations/upsert.d.ts +26 -0
- package/dist/operations/upsert.d.ts.map +1 -0
- package/dist/operations/upsert.js +257 -0
- package/dist/operations/upsert.js.map +1 -0
- package/dist/operations/utils/common.d.ts +2 -0
- package/dist/operations/utils/common.d.ts.map +1 -0
- package/dist/operations/utils/common.js +2 -0
- package/dist/operations/utils/common.js.map +1 -0
- package/dist/operations/utils/contentType.d.ts +2 -0
- package/dist/operations/utils/contentType.d.ts.map +1 -0
- package/dist/operations/utils/contentType.js +66 -0
- package/dist/operations/utils/contentType.js.map +1 -0
- package/dist/operations/utils/dataType.d.ts +7 -0
- package/dist/operations/utils/dataType.d.ts.map +1 -0
- package/dist/operations/utils/dataType.js +35 -0
- package/dist/operations/utils/dataType.js.map +1 -0
- package/dist/operations/utils/generateUniqueFilename.d.ts +7 -0
- package/dist/operations/utils/generateUniqueFilename.d.ts.map +1 -0
- package/dist/operations/utils/generateUniqueFilename.js +38 -0
- package/dist/operations/utils/generateUniqueFilename.js.map +1 -0
- package/dist/operations/utils/hasEtaTemplates.d.ts +2 -0
- package/dist/operations/utils/hasEtaTemplates.d.ts.map +1 -0
- package/dist/operations/utils/hasEtaTemplates.js +10 -0
- package/dist/operations/utils/hasEtaTemplates.js.map +1 -0
- package/dist/operations/utils/normalizeDocumentQuery.d.ts +12 -0
- package/dist/operations/utils/normalizeDocumentQuery.d.ts.map +1 -0
- package/dist/operations/utils/normalizeDocumentQuery.js +45 -0
- package/dist/operations/utils/normalizeDocumentQuery.js.map +1 -0
- package/dist/operations/utils/utils.d.ts +4 -0
- package/dist/operations/utils/utils.d.ts.map +1 -0
- package/dist/operations/utils/utils.js +4 -0
- package/dist/operations/utils/utils.js.map +1 -0
- package/dist/operations/validateSession.d.ts +17 -0
- package/dist/operations/validateSession.d.ts.map +1 -0
- package/dist/operations/validateSession.js +27 -0
- package/dist/operations/validateSession.js.map +1 -0
- package/dist/render/index.d.ts +9 -0
- package/dist/render/index.d.ts.map +1 -0
- package/dist/render/index.js +347 -0
- package/dist/render/index.js.map +1 -0
- package/dist/render/utils/base.d.ts +74 -0
- package/dist/render/utils/base.d.ts.map +1 -0
- package/dist/render/utils/base.js +290 -0
- package/dist/render/utils/base.js.map +1 -0
- package/dist/render/utils/extractRawBlocks.d.ts +10 -0
- package/dist/render/utils/extractRawBlocks.d.ts.map +1 -0
- package/dist/render/utils/extractRawBlocks.js +28 -0
- package/dist/render/utils/extractRawBlocks.js.map +1 -0
- package/dist/render/utils/rawBlocks.d.ts +10 -0
- package/dist/render/utils/rawBlocks.d.ts.map +1 -0
- package/dist/render/utils/rawBlocks.js +28 -0
- package/dist/render/utils/rawBlocks.js.map +1 -0
- package/dist/render/utils/usageTracker.d.ts +10 -0
- package/dist/render/utils/usageTracker.d.ts.map +1 -0
- package/dist/render/utils/usageTracker.js +87 -0
- package/dist/render/utils/usageTracker.js.map +1 -0
- package/dist/responder/index.d.ts +34 -0
- package/dist/responder/index.d.ts.map +1 -0
- package/dist/responder/index.js +546 -0
- package/dist/responder/index.js.map +1 -0
- package/dist/server/index.d.ts +7 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +54 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/middleware/authorize.d.ts +3 -0
- package/dist/server/middleware/authorize.d.ts.map +1 -0
- package/dist/server/middleware/authorize.js +15 -0
- package/dist/server/middleware/authorize.js.map +1 -0
- package/dist/server/middleware/establishAuth.d.ts +3 -0
- package/dist/server/middleware/establishAuth.d.ts.map +1 -0
- package/dist/server/middleware/establishAuth.js +45 -0
- package/dist/server/middleware/establishAuth.js.map +1 -0
- package/dist/server/middleware/log.d.ts +3 -0
- package/dist/server/middleware/log.d.ts.map +1 -0
- package/dist/server/middleware/log.js +12 -0
- package/dist/server/middleware/log.js.map +1 -0
- package/dist/server/middleware/requirePathMatch.d.ts +3 -0
- package/dist/server/middleware/requirePathMatch.d.ts.map +1 -0
- package/dist/server/middleware/requirePathMatch.js +25 -0
- package/dist/server/middleware/requirePathMatch.js.map +1 -0
- package/dist/server/middleware/requireQuery.d.ts +3 -0
- package/dist/server/middleware/requireQuery.d.ts.map +1 -0
- package/dist/server/middleware/requireQuery.js +24 -0
- package/dist/server/middleware/requireQuery.js.map +1 -0
- package/dist/server/middleware/withDb.d.ts +4 -0
- package/dist/server/middleware/withDb.d.ts.map +1 -0
- package/dist/server/middleware/withDb.js +7 -0
- package/dist/server/middleware/withDb.js.map +1 -0
- package/dist/server/routes/assets.d.ts +4 -0
- package/dist/server/routes/assets.d.ts.map +1 -0
- package/dist/server/routes/assets.js +178 -0
- package/dist/server/routes/assets.js.map +1 -0
- package/dist/server/routes/documents.d.ts +4 -0
- package/dist/server/routes/documents.d.ts.map +1 -0
- package/dist/server/routes/documents.js +40 -0
- package/dist/server/routes/documents.js.map +1 -0
- package/dist/server/routes/edit.d.ts +22 -0
- package/dist/server/routes/edit.d.ts.map +1 -0
- package/dist/server/routes/edit.js +494 -0
- package/dist/server/routes/edit.js.map +1 -0
- package/dist/server/routes/git.d.ts +4 -0
- package/dist/server/routes/git.d.ts.map +1 -0
- package/dist/server/routes/git.js +612 -0
- package/dist/server/routes/git.js.map +1 -0
- package/dist/server/routes/readUpload.d.ts +4 -0
- package/dist/server/routes/readUpload.d.ts.map +1 -0
- package/dist/server/routes/readUpload.js +57 -0
- package/dist/server/routes/readUpload.js.map +1 -0
- package/dist/server/utils/NotFoundError.d.ts +9 -0
- package/dist/server/utils/NotFoundError.d.ts.map +1 -0
- package/dist/server/utils/NotFoundError.js +16 -0
- package/dist/server/utils/NotFoundError.js.map +1 -0
- package/dist/server/utils/editor.css +1535 -0
- package/dist/server/utils/htmlEditorPage.d.ts +6 -0
- package/dist/server/utils/htmlEditorPage.d.ts.map +1 -0
- package/dist/server/utils/htmlEditorPage.js +518 -0
- package/dist/server/utils/htmlEditorPage.js.map +1 -0
- package/dist/server/utils/htmlLoginPage.d.ts +6 -0
- package/dist/server/utils/htmlLoginPage.d.ts.map +1 -0
- package/dist/server/utils/htmlLoginPage.js +134 -0
- package/dist/server/utils/htmlLoginPage.js.map +1 -0
- package/dist/server/utils/layout.css +153 -0
- package/dist/server/utils/types.d.ts +18 -0
- package/dist/server/utils/types.d.ts.map +1 -0
- package/dist/server/utils/types.js +2 -0
- package/dist/server/utils/types.js.map +1 -0
- package/dist/server-bin/index.d.ts +2 -0
- package/dist/server-bin/index.d.ts.map +1 -0
- package/dist/server-bin/index.js +26 -0
- package/dist/server-bin/index.js.map +1 -0
- package/dist/utils/functionContext.d.ts +12 -0
- package/dist/utils/functionContext.d.ts.map +1 -0
- package/dist/utils/functionContext.js +19 -0
- package/dist/utils/functionContext.js.map +1 -0
- package/dist/utils/functionContextClient.d.ts +23 -0
- package/dist/utils/functionContextClient.d.ts.map +1 -0
- package/dist/utils/functionContextClient.js +93 -0
- package/dist/utils/functionContextClient.js.map +1 -0
- package/dist/utils/stringifyData.d.ts +2 -0
- package/dist/utils/stringifyData.d.ts.map +1 -0
- package/dist/utils/stringifyData.js +23 -0
- package/dist/utils/stringifyData.js.map +1 -0
- package/dist/utils/stripImageExif.d.ts +14 -0
- package/dist/utils/stripImageExif.d.ts.map +1 -0
- package/dist/utils/stripImageExif.js +112 -0
- package/dist/utils/stripImageExif.js.map +1 -0
- package/dist/utils/types.d.ts +81 -0
- package/dist/utils/types.d.ts.map +1 -0
- package/dist/utils/types.js +2 -0
- package/dist/utils/types.js.map +1 -0
- package/migrations/1770796673000_initial-schema.js +178 -0
- package/package.json +97 -0
- package/pages/skywriter/.github/copilot-instructions.md +94 -0
- package/pages/skywriter/content.md +862 -0
- package/pages/skywriter/data.json +1 -0
- package/pages/skywriter/doc.code-workspace +15 -0
- package/pages/skywriter/script.js +1 -0
- package/pages/skywriter/server.js +1 -0
- package/pages/skywriter/settings.json +11 -0
- package/pages/skywriter/style.css +167 -0
- package/pages/skywriter/template/content.eta +55 -0
- package/pages/skywriter/template/data.json +1 -0
- package/pages/skywriter/template/script.js +512 -0
- package/pages/skywriter/template/server.js +27 -0
- package/pages/skywriter/template/settings.json +11 -0
- 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 @@
|
|
|
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"}
|