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,56 @@
|
|
|
1
|
+
import { normalizeDocumentQuery } from "./utils/common.js";
|
|
2
|
+
import { findDocument } from "./findDocument.js";
|
|
3
|
+
import { getOptimisticDocument } from "./getOptimisticDocument.js";
|
|
4
|
+
/**
|
|
5
|
+
* Clears the draft version of a document, reverting to the published version
|
|
6
|
+
*
|
|
7
|
+
* This function:
|
|
8
|
+
* - Finds the document by id or path
|
|
9
|
+
* - Deletes the draft record if it exists
|
|
10
|
+
* - Sets draft_record_id to NULL
|
|
11
|
+
* - Returns the document with only the current version
|
|
12
|
+
*
|
|
13
|
+
* @param client Database client
|
|
14
|
+
* @param query Query to find the document (by id or path)
|
|
15
|
+
* @returns DualDocument with only the current version
|
|
16
|
+
* @throws Error if document not found
|
|
17
|
+
*/
|
|
18
|
+
export const clearDraft = async (client, query) => {
|
|
19
|
+
try {
|
|
20
|
+
await client.query('BEGIN');
|
|
21
|
+
// 1. Find the document
|
|
22
|
+
const normalizedQuery = normalizeDocumentQuery(query);
|
|
23
|
+
const existingDoc = await findDocument(client, normalizedQuery);
|
|
24
|
+
if (!existingDoc) {
|
|
25
|
+
throw new Error('Document not found');
|
|
26
|
+
}
|
|
27
|
+
const document = existingDoc;
|
|
28
|
+
// 2. If there's no draft, just return the document as-is
|
|
29
|
+
if (!document.draft_record_id) {
|
|
30
|
+
await client.query('COMMIT');
|
|
31
|
+
return await getOptimisticDocument(client, document);
|
|
32
|
+
}
|
|
33
|
+
// 3. If there's no current version, we can't clear the draft (would leave document empty)
|
|
34
|
+
if (!document.current_record_id) {
|
|
35
|
+
await client.query('COMMIT');
|
|
36
|
+
// Return the document as-is - can't revert to nothing
|
|
37
|
+
return await getOptimisticDocument(client, document);
|
|
38
|
+
}
|
|
39
|
+
const draftRecordId = document.draft_record_id;
|
|
40
|
+
// 4. Clear the draft reference in the document
|
|
41
|
+
await client.query(`UPDATE documents SET draft_record_id = NULL, updated_at = CURRENT_TIMESTAMP WHERE id = $1`, [
|
|
42
|
+
document.id,
|
|
43
|
+
]);
|
|
44
|
+
// 5. Delete the draft record
|
|
45
|
+
await client.query(`DELETE FROM document_records WHERE id = $1`, [draftRecordId]);
|
|
46
|
+
document.draft_record_id = null;
|
|
47
|
+
await client.query('COMMIT');
|
|
48
|
+
// 6. Fetch and return the complete document (now without draft)
|
|
49
|
+
return await getOptimisticDocument(client, document);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
await client.query('ROLLBACK');
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=clearDraft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clearDraft.js","sourceRoot":"","sources":["../../src/operations/clearDraft.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAC9C,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAA;AAEhE;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAA+C,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE;IAC5F,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAE3B,uBAAuB;QACvB,MAAM,eAAe,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAA;QACrD,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;QAE/D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACvC,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAA;QAE5B,yDAAyD;QACzD,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;YAC9B,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC5B,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtD,CAAC;QAED,0FAA0F;QAC1F,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC;YAChC,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC5B,sDAAsD;YACtD,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;QACtD,CAAC;QAED,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAA;QAE9C,+CAA+C;QAC/C,MAAM,MAAM,CAAC,KAAK,CAAC,2FAA2F,EAAE;YAC9G,QAAQ,CAAC,EAAE;SACZ,CAAC,CAAA;QAEF,6BAA6B;QAC7B,MAAM,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,CAAC,aAAa,CAAC,CAAC,CAAA;QAEjF,QAAQ,CAAC,eAAe,GAAG,IAAI,CAAA;QAE/B,MAAM,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QAE5B,gEAAgE;QAChE,OAAO,MAAM,qBAAqB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QAC9B,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { DocumentRecord, DbOperation } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Helper: Create a new document record
|
|
4
|
+
*/
|
|
5
|
+
export declare const createDocumentRecord: DbOperation<[
|
|
6
|
+
Partial<{
|
|
7
|
+
[K in keyof DocumentRecord]: DocumentRecord[K] | null;
|
|
8
|
+
}>,
|
|
9
|
+
(DocumentRecord | null)?
|
|
10
|
+
], DocumentRecord>;
|
|
11
|
+
//# sourceMappingURL=createDocumentRecord.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDocumentRecord.d.ts","sourceRoot":"","sources":["../../src/operations/createDocumentRecord.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAE,WAAW,EAAC,MAAM,YAAY,CAAA;AAG3D;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAC5C;IAAC,OAAO,CAAC;SAAE,CAAC,IAAI,MAAM,cAAc,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;KAAC,CAAC;IAAE,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAAC,EAC5F,cAAc,CAmGf,CAAA"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { contentType, hasEtaTemplates, dataType } from "./utils/utils.js";
|
|
2
|
+
/**
|
|
3
|
+
* Helper: Create a new document record
|
|
4
|
+
*/
|
|
5
|
+
export const createDocumentRecord = async (client, input, baseRecord) => {
|
|
6
|
+
// Merge input with base record (if provided), preferring input values
|
|
7
|
+
const content = input.content !== undefined ? (input.content ?? '') : (baseRecord?.content ?? '');
|
|
8
|
+
// Auto-detect content_type if not provided
|
|
9
|
+
let finalContentType;
|
|
10
|
+
if (input.content_type !== undefined && input.content_type !== null) {
|
|
11
|
+
finalContentType = input.content_type;
|
|
12
|
+
}
|
|
13
|
+
else if (baseRecord?.content_type) {
|
|
14
|
+
finalContentType = baseRecord.content_type;
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
// Use utility function to detect content type
|
|
18
|
+
finalContentType = contentType(content);
|
|
19
|
+
}
|
|
20
|
+
// Auto-detect has_eta if not provided
|
|
21
|
+
// Always auto-detect from content unless explicitly provided in input
|
|
22
|
+
// This ensures has_eta stays in sync with content changes
|
|
23
|
+
let finalHasEta;
|
|
24
|
+
if (input.has_eta !== undefined && input.has_eta !== null) {
|
|
25
|
+
finalHasEta = input.has_eta;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
// Always auto-detect from content (don't inherit from baseRecord)
|
|
29
|
+
finalHasEta = hasEtaTemplates(content);
|
|
30
|
+
}
|
|
31
|
+
// Merge data field
|
|
32
|
+
const dataContent = input.data !== undefined ? (input.data ?? '') : (baseRecord?.data ?? '');
|
|
33
|
+
// Auto-detect data_type and normalize data to JSON
|
|
34
|
+
// Always auto-detect from data unless explicitly provided in input
|
|
35
|
+
// This ensures data_type stays in sync with data changes
|
|
36
|
+
let finalDataType;
|
|
37
|
+
let finalData;
|
|
38
|
+
if (input.data_type !== undefined) {
|
|
39
|
+
// Explicit data_type provided - use data as-is
|
|
40
|
+
finalDataType = input.data_type;
|
|
41
|
+
finalData = dataContent;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// Auto-detect and normalize to JSON
|
|
45
|
+
if (dataContent) {
|
|
46
|
+
try {
|
|
47
|
+
const parsed = dataType(dataContent);
|
|
48
|
+
finalDataType = parsed.type;
|
|
49
|
+
// Always store as JSON
|
|
50
|
+
finalData = JSON.stringify(parsed.value);
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
// If parsing fails, store as-is with null type
|
|
54
|
+
finalDataType = null;
|
|
55
|
+
finalData = dataContent;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
finalDataType = null;
|
|
60
|
+
finalData = dataContent;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const data = {
|
|
64
|
+
title: input.title ?? baseRecord?.title ?? '',
|
|
65
|
+
content: content,
|
|
66
|
+
data: finalData,
|
|
67
|
+
style: input.style !== undefined ? (input.style ?? '') : (baseRecord?.style ?? ''),
|
|
68
|
+
script: input.script !== undefined ? (input.script ?? '') : (baseRecord?.script ?? ''),
|
|
69
|
+
server: input.server !== undefined ? (input.server ?? '') : (baseRecord?.server ?? ''),
|
|
70
|
+
template_id: input.template_id !== undefined ? input.template_id : (baseRecord?.template_id ?? null),
|
|
71
|
+
slot_id: input.slot_id !== undefined ? input.slot_id : (baseRecord?.slot_id ?? null),
|
|
72
|
+
content_type: finalContentType,
|
|
73
|
+
data_type: finalDataType,
|
|
74
|
+
has_eta: finalHasEta,
|
|
75
|
+
mime_type: input.mime_type ?? baseRecord?.mime_type ?? 'text/html; charset=UTF-8',
|
|
76
|
+
extension: input.extension ?? baseRecord?.extension ?? '.html',
|
|
77
|
+
};
|
|
78
|
+
const result = await client.query(`INSERT INTO document_records (
|
|
79
|
+
title, content, data, style, script, server,
|
|
80
|
+
template_id, slot_id, content_type, data_type, has_eta,
|
|
81
|
+
mime_type, extension
|
|
82
|
+
) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13)
|
|
83
|
+
RETURNING *`, [
|
|
84
|
+
data.title,
|
|
85
|
+
data.content,
|
|
86
|
+
data.data,
|
|
87
|
+
data.style,
|
|
88
|
+
data.script,
|
|
89
|
+
data.server,
|
|
90
|
+
data.template_id,
|
|
91
|
+
data.slot_id,
|
|
92
|
+
data.content_type,
|
|
93
|
+
data.data_type,
|
|
94
|
+
data.has_eta,
|
|
95
|
+
data.mime_type,
|
|
96
|
+
data.extension,
|
|
97
|
+
]);
|
|
98
|
+
return result.rows[0];
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=createDocumentRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createDocumentRecord.js","sourceRoot":"","sources":["../../src/operations/createDocumentRecord.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRoute.d.ts","sourceRoot":"","sources":["../../src/operations/createRoute.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,KAAK,EAAE,WAAW,EAAC,MAAM,YAAY,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,CAQ5D,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper: Create a new route
|
|
3
|
+
*/
|
|
4
|
+
export const createRoute = async (client, path, documentId) => {
|
|
5
|
+
const result = await client.query(`INSERT INTO routes (path, document_id)
|
|
6
|
+
VALUES ($1, $2)
|
|
7
|
+
RETURNING *`, [path, documentId]);
|
|
8
|
+
return result.rows[0];
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=createRoute.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createRoute.js","sourceRoot":"","sources":["../../src/operations/createRoute.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAyC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE;IAClG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;iBAEa,EACb,CAAC,IAAI,EAAE,UAAU,CAAC,CACnB,CAAA;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { DbOperation } from './types.ts';
|
|
2
|
+
interface CreateSessionParams {
|
|
3
|
+
user_id: number;
|
|
4
|
+
expires_in_days?: number;
|
|
5
|
+
}
|
|
6
|
+
interface Session {
|
|
7
|
+
session_id: string;
|
|
8
|
+
user_id: number;
|
|
9
|
+
expires_at: Date;
|
|
10
|
+
created_at: Date;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Create a new session for a user
|
|
14
|
+
* @param client Database client
|
|
15
|
+
* @param params Session parameters
|
|
16
|
+
* @returns The created session
|
|
17
|
+
* @throws Error if user doesn't exist
|
|
18
|
+
*/
|
|
19
|
+
export declare const createSession: DbOperation<[CreateSessionParams], Session>;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=createSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSession.d.ts","sourceRoot":"","sources":["../../src/operations/createSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AAG3C,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,UAAU,OAAO;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,IAAI,CAAA;IAChB,UAAU,EAAE,IAAI,CAAA;CACjB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,CA0BrE,CAAA"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { randomBytes } from 'crypto';
|
|
2
|
+
/**
|
|
3
|
+
* Create a new session for a user
|
|
4
|
+
* @param client Database client
|
|
5
|
+
* @param params Session parameters
|
|
6
|
+
* @returns The created session
|
|
7
|
+
* @throws Error if user doesn't exist
|
|
8
|
+
*/
|
|
9
|
+
export const createSession = async (client, params) => {
|
|
10
|
+
const { user_id, expires_in_days = 30 } = params;
|
|
11
|
+
// Verify user exists
|
|
12
|
+
const userCheck = await client.query('SELECT id FROM users WHERE id = $1', [user_id]);
|
|
13
|
+
if (userCheck.rows.length === 0) {
|
|
14
|
+
throw new Error('User not found');
|
|
15
|
+
}
|
|
16
|
+
// Generate secure random session ID
|
|
17
|
+
const session_id = randomBytes(32).toString('hex');
|
|
18
|
+
// Calculate expiration date
|
|
19
|
+
const expires_at = new Date();
|
|
20
|
+
expires_at.setDate(expires_at.getDate() + expires_in_days);
|
|
21
|
+
// Insert session
|
|
22
|
+
const result = await client.query(`INSERT INTO sessions (session_id, user_id, expires_at)
|
|
23
|
+
VALUES ($1, $2, $3)
|
|
24
|
+
RETURNING session_id, user_id, expires_at, created_at`, [session_id, user_id, expires_at]);
|
|
25
|
+
return result.rows[0];
|
|
26
|
+
};
|
|
27
|
+
//# sourceMappingURL=createSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createSession.js","sourceRoot":"","sources":["../../src/operations/createSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,WAAW,EAAC,MAAM,QAAQ,CAAA;AAclC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgD,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IACjG,MAAM,EAAC,OAAO,EAAE,eAAe,GAAG,EAAE,EAAC,GAAG,MAAM,CAAA;IAE9C,qBAAqB;IACrB,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,oCAAoC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAA;IAErF,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAA;IACnC,CAAC;IAED,oCAAoC;IACpC,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAElD,4BAA4B;IAC5B,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE,CAAA;IAC7B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,eAAe,CAAC,CAAA;IAE1D,iBAAiB;IACjB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;2DAEuD,EACvD,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,CAClC,CAAA;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACvB,CAAC,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { DbOperation } from './types.ts';
|
|
2
|
+
interface DeleteSessionParams {
|
|
3
|
+
session_id: string;
|
|
4
|
+
}
|
|
5
|
+
/**
|
|
6
|
+
* Delete a session (logout)
|
|
7
|
+
* @param client Database client
|
|
8
|
+
* @param params Parameters containing session_id
|
|
9
|
+
* @returns True if session was deleted
|
|
10
|
+
*/
|
|
11
|
+
export declare const deleteSession: DbOperation<[DeleteSessionParams], boolean>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=deleteSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteSession.d.ts","sourceRoot":"","sources":["../../src/operations/deleteSession.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,YAAY,CAAA;AAE3C,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAUrE,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Delete a session (logout)
|
|
3
|
+
* @param client Database client
|
|
4
|
+
* @param params Parameters containing session_id
|
|
5
|
+
* @returns True if session was deleted
|
|
6
|
+
*/
|
|
7
|
+
export const deleteSession = async (client, params) => {
|
|
8
|
+
const { session_id } = params;
|
|
9
|
+
if (!session_id || session_id.trim().length === 0) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
const result = await client.query('DELETE FROM sessions WHERE session_id = $1', [session_id]);
|
|
13
|
+
return result.rowCount !== null && result.rowCount > 0;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=deleteSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deleteSession.js","sourceRoot":"","sources":["../../src/operations/deleteSession.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAgD,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IACjG,MAAM,EAAC,UAAU,EAAC,GAAG,MAAM,CAAA;IAE3B,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,4CAA4C,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IAE7F,OAAO,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAA;AACxD,CAAC,CAAA"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Document, Route, DocumentId, DbOperation } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Helper: Find document by id or path, following redirects
|
|
4
|
+
* Returns document with redirect flag when accessed via non-canonical path
|
|
5
|
+
*/
|
|
6
|
+
export declare const findDocument: DbOperation<[
|
|
7
|
+
{
|
|
8
|
+
id?: DocumentId;
|
|
9
|
+
path?: string;
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
published?: boolean;
|
|
13
|
+
}?
|
|
14
|
+
], (Document & {
|
|
15
|
+
route: Route;
|
|
16
|
+
redirect: boolean;
|
|
17
|
+
}) | null>;
|
|
18
|
+
//# sourceMappingURL=findDocument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findDocument.d.ts","sourceRoot":"","sources":["../../src/operations/findDocument.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,YAAY,CAAA;AAyCxE;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,WAAW,CACpC;IAAC;QAAC,EAAE,CAAC,EAAE,UAAU,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC;IAAE;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAC,CAAC;CAAC,EAC1D,CAAC,QAAQ,GAAG;IAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAC,CAAC,GAAG,IAAI,CAyBtD,CAAA"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper: Find document by path (including unpublished), following redirects
|
|
3
|
+
* Returns the document along with whether the access was via redirect
|
|
4
|
+
*/
|
|
5
|
+
async function findDocumentByPath(client, path, options) {
|
|
6
|
+
// First find the route
|
|
7
|
+
const routeResult = await client.query(`SELECT id, path, document_id FROM routes WHERE path = $1`, [path]);
|
|
8
|
+
if (routeResult.rows.length === 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
const route = routeResult.rows[0];
|
|
12
|
+
// Build WHERE clause with optional published filter
|
|
13
|
+
const whereConditions = ['d.id = r1.document_id'];
|
|
14
|
+
if (options?.published !== undefined) {
|
|
15
|
+
whereConditions.push(`d.published = ${options.published}`);
|
|
16
|
+
}
|
|
17
|
+
// Then find the document via the route's document_id
|
|
18
|
+
const result = await client.query(`SELECT d.*,
|
|
19
|
+
row_to_json(r2.*) as route,
|
|
20
|
+
(r1.id != d.path_id) as redirect
|
|
21
|
+
FROM documents d
|
|
22
|
+
JOIN routes r1 ON r1.id = $1
|
|
23
|
+
JOIN routes r2 ON d.path_id = r2.id
|
|
24
|
+
WHERE ${whereConditions.join(' AND ')}`, [route.id]);
|
|
25
|
+
return result.rows[0] || null;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Helper: Find document by id or path, following redirects
|
|
29
|
+
* Returns document with redirect flag when accessed via non-canonical path
|
|
30
|
+
*/
|
|
31
|
+
export const findDocument = async (client, query, options) => {
|
|
32
|
+
if (query.id !== undefined) {
|
|
33
|
+
// Build WHERE clause with optional published filter
|
|
34
|
+
const whereConditions = ['d.id = $1'];
|
|
35
|
+
if (options?.published !== undefined) {
|
|
36
|
+
whereConditions.push(`d.published = ${options.published}`);
|
|
37
|
+
}
|
|
38
|
+
// Find by ID
|
|
39
|
+
const result = await client.query(`SELECT d.*,
|
|
40
|
+
row_to_json(r.*) as route,
|
|
41
|
+
false as redirect
|
|
42
|
+
FROM documents d
|
|
43
|
+
JOIN routes r ON d.path_id = r.id
|
|
44
|
+
WHERE ${whereConditions.join(' AND ')}`, [query.id]);
|
|
45
|
+
return result.rows[0] || null;
|
|
46
|
+
}
|
|
47
|
+
else if (query.path !== undefined) {
|
|
48
|
+
// Find by path (follows redirects)
|
|
49
|
+
return await findDocumentByPath(client, query.path, options);
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
};
|
|
53
|
+
//# sourceMappingURL=findDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"findDocument.js","sourceRoot":"","sources":["../../src/operations/findDocument.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,KAAK,UAAU,kBAAkB,CAAC,MAAkB,EAAE,IAAY,EAAE,OAA+B;IACjG,uBAAuB;IACvB,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,KAAK,CAInC,0DAA0D,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEtE,IAAI,WAAW,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAEjC,oDAAoD;IACpD,MAAM,eAAe,GAAG,CAAC,uBAAuB,CAAC,CAAA;IACjD,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;QACrC,eAAe,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;IAC5D,CAAC;IAED,qDAAqD;IACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;;;;;aAMS,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EACxC,CAAC,KAAK,CAAC,EAAE,CAAC,CACX,CAAA;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,YAAY,GAGrB,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACnC,IAAI,KAAK,CAAC,EAAE,KAAK,SAAS,EAAE,CAAC;QAC3B,oDAAoD;QACpD,MAAM,eAAe,GAAG,CAAC,WAAW,CAAC,CAAA;QACrC,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,EAAE,CAAC;YACrC,eAAe,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAA;QAC5D,CAAC;QAED,aAAa;QACb,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;;;;eAKS,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EACxC,CAAC,KAAK,CAAC,EAAE,CAAC,CACX,CAAA;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAC/B,CAAC;SAAM,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,mCAAmC;QACnC,OAAO,MAAM,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC9D,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Upload, DbOperation, DocumentId } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Internal helper to get ALL uploads for a document by document ID (including hidden).
|
|
4
|
+
* Used internally for collision checking when adding/updating uploads.
|
|
5
|
+
*
|
|
6
|
+
* @param client Database client
|
|
7
|
+
* @param documentId The document ID
|
|
8
|
+
* @returns Array of all Upload objects (including hidden), or empty array if none found
|
|
9
|
+
*/
|
|
10
|
+
export declare const getAllUploadsForDocument: DbOperation<[DocumentId], Upload[]>;
|
|
11
|
+
//# sourceMappingURL=getAllUploadsForDocument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllUploadsForDocument.d.ts","sourceRoot":"","sources":["../../src/operations/getAllUploadsForDocument.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAC,MAAM,YAAY,CAAA;AAE/D;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,CAQxE,CAAA"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal helper to get ALL uploads for a document by document ID (including hidden).
|
|
3
|
+
* Used internally for collision checking when adding/updating uploads.
|
|
4
|
+
*
|
|
5
|
+
* @param client Database client
|
|
6
|
+
* @param documentId The document ID
|
|
7
|
+
* @returns Array of all Upload objects (including hidden), or empty array if none found
|
|
8
|
+
*/
|
|
9
|
+
export const getAllUploadsForDocument = async (client, documentId) => {
|
|
10
|
+
const result = await client.query(`SELECT id, filename, document_id, created_at, original_filename, hidden, hash
|
|
11
|
+
FROM uploads
|
|
12
|
+
WHERE document_id = $1`, [documentId]);
|
|
13
|
+
return result.rows;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=getAllUploadsForDocument.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAllUploadsForDocument.js","sourceRoot":"","sources":["../../src/operations/getAllUploadsForDocument.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAwC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE;IACxG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B;;4BAEwB,EACxB,CAAC,UAAU,CAAC,CACb,CAAA;IACD,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { DbOperation } from './types.ts';
|
|
2
|
+
import type { DocumentQuery } from './types.ts';
|
|
3
|
+
import type { DocumentClientState } from '../utils/types.ts';
|
|
4
|
+
/**
|
|
5
|
+
* Options for getDocumentClientState
|
|
6
|
+
*/
|
|
7
|
+
interface GetDocumentClientStateOptions {
|
|
8
|
+
/** Path to uploads directory. If provided, foreign images will be downloaded and saved. */
|
|
9
|
+
uploadsPath?: string;
|
|
10
|
+
/** Whether to add uploads from content (download foreign images). Default: true when uploadsPath is provided */
|
|
11
|
+
addUploadsFromContent?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Preview raw content with optional slot and template
|
|
15
|
+
* Used by the editor to preview changes before saving
|
|
16
|
+
*
|
|
17
|
+
* When options.uploadsPath is provided and document.content contains foreign images,
|
|
18
|
+
* those images will be downloaded, saved as uploads, and the content will be updated
|
|
19
|
+
* with local upload URLs. This provides:
|
|
20
|
+
* 1. Security - prevents malicious image URL swapping after save
|
|
21
|
+
* 2. Link rot prevention - images are preserved even if source goes offline
|
|
22
|
+
*/
|
|
23
|
+
export declare const getDocumentClientState: DbOperation<[
|
|
24
|
+
DocumentQuery,
|
|
25
|
+
unknown?,
|
|
26
|
+
Record<string, string>?,
|
|
27
|
+
GetDocumentClientStateOptions?
|
|
28
|
+
], DocumentClientState | null>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=getDocumentClientState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getDocumentClientState.d.ts","sourceRoot":"","sources":["../../src/operations/getDocumentClientState.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAa,WAAW,EAAC,MAAM,YAAY,CAAA;AACvD,OAAO,KAAK,EAAoB,aAAa,EAAe,MAAM,YAAY,CAAA;AAC9E,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,mBAAmB,CAAA;AAY1D;;GAEG;AACH,UAAU,6BAA6B;IACrC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,gHAAgH;IAChH,qBAAqB,CAAC,EAAE,OAAO,CAAA;CAChC;AA+GD;;;;;;;;;GASG;AACH,eAAO,MAAM,sBAAsB,EAAE,WAAW,CAC9C;IAAC,aAAa;IAAE,OAAO,CAAC;IAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAE,6BAA6B,CAAC;CAAC,EAClF,mBAAmB,GAAG,IAAI,CAoJ3B,CAAA"}
|