@intentic/machine 1.316.0 → 1.318.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/README.md +198 -10
- package/dist/agent-trial.d.ts +25 -0
- package/dist/agent-trial.d.ts.map +1 -0
- package/dist/agent-trial.js +132 -0
- package/dist/agent-trial.js.map +1 -0
- package/dist/autostart/autostart.d.ts.map +1 -0
- package/dist/{autostart.js → autostart/autostart.js} +1 -1
- package/dist/autostart/autostart.js.map +1 -0
- package/dist/autostart/legacy-autostart.d.ts +4 -0
- package/dist/autostart/legacy-autostart.d.ts.map +1 -0
- package/dist/autostart/legacy-autostart.js +33 -0
- package/dist/autostart/legacy-autostart.js.map +1 -0
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +3 -1
- package/dist/commands.js.map +1 -1
- package/dist/device/grant.d.ts +322 -0
- package/dist/device/grant.d.ts.map +1 -0
- package/dist/device/grant.js +15 -0
- package/dist/device/grant.js.map +1 -0
- package/dist/device/loopback-catch.d.ts +3 -0
- package/dist/device/loopback-catch.d.ts.map +1 -0
- package/dist/device/loopback-catch.js +103 -0
- package/dist/device/loopback-catch.js.map +1 -0
- package/dist/device/mcp.d.ts.map +1 -1
- package/dist/device/mcp.js +5 -2
- package/dist/device/mcp.js.map +1 -1
- package/dist/device/router.d.ts +41 -2
- package/dist/device/router.d.ts.map +1 -1
- package/dist/device/router.js +23 -7
- package/dist/device/router.js.map +1 -1
- package/dist/device/sandbox-cli.d.ts +6 -0
- package/dist/device/sandbox-cli.d.ts.map +1 -0
- package/dist/device/sandbox-cli.js +76 -0
- package/dist/device/sandbox-cli.js.map +1 -0
- package/dist/device/sandbox-rounds/auto-backup.d.ts +13 -0
- package/dist/device/sandbox-rounds/auto-backup.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/auto-backup.js +97 -0
- package/dist/device/sandbox-rounds/auto-backup.js.map +1 -0
- package/dist/device/sandbox-rounds/auto-prepare.d.ts +11 -0
- package/dist/device/sandbox-rounds/auto-prepare.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/auto-prepare.js +20 -0
- package/dist/device/sandbox-rounds/auto-prepare.js.map +1 -0
- package/dist/device/sandbox-rounds/ic-rounds.d.ts +23 -0
- package/dist/device/sandbox-rounds/ic-rounds.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/ic-rounds.js +78 -0
- package/dist/device/sandbox-rounds/ic-rounds.js.map +1 -0
- package/dist/device/sandbox-rounds/probation-watch.d.ts +32 -0
- package/dist/device/sandbox-rounds/probation-watch.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/probation-watch.js +60 -0
- package/dist/device/sandbox-rounds/probation-watch.js.map +1 -0
- package/dist/device/sandbox-rounds/swap-records.d.ts +14 -0
- package/dist/device/sandbox-rounds/swap-records.d.ts.map +1 -0
- package/dist/device/sandbox-rounds/swap-records.js +45 -0
- package/dist/device/sandbox-rounds/swap-records.js.map +1 -0
- package/dist/device/tools/agent.d.ts +2 -2
- package/dist/device/tools/agent.d.ts.map +1 -1
- package/dist/device/tools/agent.js +14 -3
- package/dist/device/tools/agent.js.map +1 -1
- package/dist/device/tools/command-ledger.d.ts +14 -0
- package/dist/device/tools/command-ledger.d.ts.map +1 -0
- package/dist/device/tools/command-ledger.js +85 -0
- package/dist/device/tools/command-ledger.js.map +1 -0
- package/dist/device/tools/describe.d.ts +1 -1
- package/dist/device/tools/describe.d.ts.map +1 -1
- package/dist/device/tools/describe.js +2 -1
- package/dist/device/tools/describe.js.map +1 -1
- package/dist/device/tools/ic-binary.d.ts +1 -1
- package/dist/device/tools/ic-binary.d.ts.map +1 -1
- package/dist/device/tools/ic-binary.js +8 -3
- package/dist/device/tools/ic-binary.js.map +1 -1
- package/dist/device/tools/in-flight.d.ts +6 -0
- package/dist/device/tools/in-flight.d.ts.map +1 -0
- package/dist/device/tools/in-flight.js +26 -0
- package/dist/device/tools/in-flight.js.map +1 -0
- package/dist/device/tools/sandboxes.d.ts +14 -4
- package/dist/device/tools/sandboxes.d.ts.map +1 -1
- package/dist/device/tools/sandboxes.js +87 -27
- package/dist/device/tools/sandboxes.js.map +1 -1
- package/dist/device/tools/shell.d.ts +1 -0
- package/dist/device/tools/shell.d.ts.map +1 -1
- package/dist/device/tools/shell.js +15 -1
- package/dist/device/tools/shell.js.map +1 -1
- package/dist/environments/auto-upgrade.d.ts +2 -0
- package/dist/environments/auto-upgrade.d.ts.map +1 -1
- package/dist/environments/auto-upgrade.js +15 -0
- package/dist/environments/auto-upgrade.js.map +1 -1
- package/dist/environments/children.js +1 -1
- package/dist/environments/children.js.map +1 -1
- package/dist/environments/commands.d.ts +2 -0
- package/dist/environments/commands.d.ts.map +1 -1
- package/dist/environments/commands.js +46 -10
- package/dist/environments/commands.js.map +1 -1
- package/dist/environments/machine-upgrade.d.ts +2 -0
- package/dist/environments/machine-upgrade.d.ts.map +1 -1
- package/dist/environments/machine-upgrade.js +17 -2
- package/dist/environments/machine-upgrade.js.map +1 -1
- package/dist/environments/machine.d.ts +6 -0
- package/dist/environments/machine.d.ts.map +1 -1
- package/dist/environments/machine.js.map +1 -1
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +1 -6
- package/dist/release.js.map +1 -1
- package/dist/resident.d.ts +1 -0
- package/dist/resident.d.ts.map +1 -1
- package/dist/resident.js +30 -6
- package/dist/resident.js.map +1 -1
- package/dist/status.d.ts.map +1 -1
- package/dist/status.js +9 -4
- package/dist/status.js.map +1 -1
- package/dist/supervision.d.ts +1 -0
- package/dist/supervision.d.ts.map +1 -1
- package/dist/supervision.js +17 -1
- package/dist/supervision.js.map +1 -1
- package/dist/sync/commands.d.ts +19 -0
- package/dist/sync/commands.d.ts.map +1 -1
- package/dist/sync/commands.js +117 -23
- package/dist/sync/commands.js.map +1 -1
- package/dist/sync/config.d.ts +12 -1
- package/dist/sync/config.d.ts.map +1 -1
- package/dist/sync/config.js +45 -1
- package/dist/sync/config.js.map +1 -1
- package/dist/sync/folders.d.ts +8 -0
- package/dist/sync/folders.d.ts.map +1 -0
- package/dist/sync/folders.js +34 -0
- package/dist/sync/folders.js.map +1 -0
- package/dist/sync/git-bridge.d.ts +1 -1
- package/dist/sync/git-bridge.d.ts.map +1 -1
- package/dist/sync/git-bridge.js +2 -1
- package/dist/sync/git-bridge.js.map +1 -1
- package/dist/sync/mirror.d.ts +3 -1
- package/dist/sync/mirror.d.ts.map +1 -1
- package/dist/sync/mirror.js +72 -20
- package/dist/sync/mirror.js.map +1 -1
- package/dist/sync/mutagen.d.ts +29 -5
- package/dist/sync/mutagen.d.ts.map +1 -1
- package/dist/sync/mutagen.js +86 -31
- package/dist/sync/mutagen.js.map +1 -1
- package/dist/sync/project-commands.d.ts +23 -0
- package/dist/sync/project-commands.d.ts.map +1 -0
- package/dist/sync/project-commands.js +212 -0
- package/dist/sync/project-commands.js.map +1 -0
- package/dist/sync/project-files.d.ts +42 -0
- package/dist/sync/project-files.d.ts.map +1 -0
- package/dist/sync/project-files.js +110 -0
- package/dist/sync/project-files.js.map +1 -0
- package/dist/sync/project-local.d.ts +46 -0
- package/dist/sync/project-local.d.ts.map +1 -0
- package/dist/sync/project-local.js +217 -0
- package/dist/sync/project-local.js.map +1 -0
- package/dist/sync/project-remote.d.ts +55 -0
- package/dist/sync/project-remote.d.ts.map +1 -0
- package/dist/sync/project-remote.js +261 -0
- package/dist/sync/project-remote.js.map +1 -0
- package/dist/sync/project-transfer.d.ts +52 -0
- package/dist/sync/project-transfer.d.ts.map +1 -0
- package/dist/sync/project-transfer.js +278 -0
- package/dist/sync/project-transfer.js.map +1 -0
- package/dist/sync/report.d.ts.map +1 -1
- package/dist/sync/report.js +6 -4
- package/dist/sync/report.js.map +1 -1
- package/dist/sync/residue.d.ts.map +1 -1
- package/dist/sync/residue.js +2 -1
- package/dist/sync/residue.js.map +1 -1
- package/dist/sync/restore-points.d.ts +72 -0
- package/dist/sync/restore-points.d.ts.map +1 -0
- package/dist/sync/restore-points.js +154 -0
- package/dist/sync/restore-points.js.map +1 -0
- package/dist/sync/ssh.d.ts +6 -0
- package/dist/sync/ssh.d.ts.map +1 -1
- package/dist/sync/ssh.js +41 -3
- package/dist/sync/ssh.js.map +1 -1
- package/dist/sync/swap-pause.d.ts +10 -0
- package/dist/sync/swap-pause.d.ts.map +1 -0
- package/dist/sync/swap-pause.js +29 -0
- package/dist/sync/swap-pause.js.map +1 -0
- package/dist/sync/symlinks.d.ts +8 -0
- package/dist/sync/symlinks.d.ts.map +1 -0
- package/dist/sync/symlinks.js +30 -0
- package/dist/sync/symlinks.js.map +1 -0
- package/dist/upgrade.d.ts.map +1 -1
- package/dist/upgrade.js +18 -7
- package/dist/upgrade.js.map +1 -1
- package/package.json +8 -8
- package/dist/autostart.d.ts.map +0 -1
- package/dist/autostart.js.map +0 -1
- package/dist/device/auto-prepare.d.ts +0 -18
- package/dist/device/auto-prepare.d.ts.map +0 -1
- package/dist/device/auto-prepare.js +0 -85
- package/dist/device/auto-prepare.js.map +0 -1
- /package/dist/{autostart.d.ts → autostart/autostart.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-commands.js","sourceRoot":"","sources":["../../src/sync/project-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAuB,MAAM,eAAe,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAgB,gBAAgB,EAAyB,SAAS,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACtI,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAEH,SAAS,EAGT,cAAc,EAKd,YAAY,EACZ,aAAa,GAChB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AASpD,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,QAA4B,EAAE,GAAW,EAAE,QAAQ,GAAoB,OAAO,CAAC,QAAQ,EAA2B,EAAE;IACxJ,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1B,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAC7M,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,OAAO,CAAC;IAC3B,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,eAAe,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,sFAAsF,CAAC,CAAC;IAC1J,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IACzH,MAAM,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,oCAAoC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,iCAAiC,MAAM,CAAC,OAAO,CAAC,QAAQ,oBAAoB,CAAC,CAAC;AAC3K,CAAC,CAAC;AAGF,MAAM,QAAQ,GAAG,CAAC,OAAe,EAAU,EAAE;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAC5B,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AAC9F,CAAC,CAAC;AAKF,MAAM,MAAM,GAAG,KAAK,EAAoB,GAAmB,EAAE,IAAa,EAAE,IAAsB,EAAE,KAA4B,EAAiB,EAAE;IAC/I,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;QAC5B,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,KAAK,EAAE,GAAuB,EAA2B,EAAE;IACzE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,MAAM,iBAAiB,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AACtE,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,KAAK,EAAE,OAAuB,EAA2B,EAAE,CAAC,CAAC;IAC5E,OAAO;IACP,QAAQ,EAAE,OAAO;IACjB,OAAO,EAAE,WAAW,CAAC,iBAAiB,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClK,OAAO,EAAE,cAAc,CAAC,iBAAiB,EAAE,MAAM,aAAa,EAAE,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;CACpG,CAAC,CAAC;AAGH,MAAM,KAAK,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAE3G,MAAM,YAAY,GAAG,CAAC,OAA2B,EAAY,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,uBAAuB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AAErJ,MAAM,UAAU,GAAG,CAAC,MAAoB,EAAU,EAAE,CAChD,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,2DAA2D,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAOpN,MAAM,YAAY,GAAG;IACjB,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,sCAAsC,EAAE;IACrG,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,gEAAgE,EAAE;CAC5F,CAAC;AAEX,MAAM,OAAO,GAAG,YAAY,CAAe;IACvC,IAAI,EAAE,EAAE,KAAK,EAAE,kGAAkG,EAAE;IACnH,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;IACnC,KAAK,CAAC,IAAI,CAAuB,KAAmB;QAChD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,CACR,IAAI,EACJ,KAAK,CAAC,IAAI,EACV,KAAK,IAAI,EAAE;YACP,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;YACvB,OAAO,MAAM,cAAc,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3D,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,CAAC,yBAAyB,GAAG,6BAA6B;YAC3D,CAAC,CAAC;gBACI,yBAAyB,GAAG,UAAU,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oCAAoC,MAAM,CAAC,SAAS,IAAI;gBAC1J,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;gBACjC,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,gCAAgC,MAAM,CAAC,OAAO,CAAC,MAAM,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3G,iEAAiE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,wCAAwC;aAC/H,CAAC,IAAI,CAAC,IAAI,CAAC,CACzB,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAOH,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAKnD,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,IAAY,EAAqB,EAAE;IACnE,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACD,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,uBAAuB,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,MAAmD,CAAC;IACxD,IAAI,CAAC;QAED,MAAM,GAAG,eAAe,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QAEL,MAAM,GAAG,SAAS,CAAC;IACvB,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,wCAAwC,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,0DAA0D,CAAC,CAAC;IACtG,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,KAAiD,EAAqB,EAAE;IACzG,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3F,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,YAAY,CAAiB;IAClD,IAAI,EAAE,EAAE,KAAK,EAAE,2GAA2G,EAAE;IAC5H,UAAU,EAAE;QACR,KAAK,EAAE;YACH,GAAG,YAAY;YACf,IAAI,EAAE;gBACF,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,oGAAoG;aAC9G;YACD,SAAS,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,KAAK,EAAE,MAAM;gBACb,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,iFAAiF;aAC3F;SACJ;KACJ;IACD,KAAK,CAAC,IAAI,CAAuB,KAAqB;QAClD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,CACR,IAAI,EACJ,KAAK,CAAC,IAAI,EACV,KAAK,IAAI,EAAE;YACP,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;YACvB,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,MAAM,SAAS,CAAC,MAAM,UAAU,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7D,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CACP;YACI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBACvB,CAAC,CAAC,iCAAiC,GAAG,GAAG;gBACzC,CAAC,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,MAAM,wBAAwB,GAAG,mBAAmB,MAAM,CAAC,KAAK,oEAAoE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,KAAK,kBAAkB;YACjO,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;SAClC,CAAC,IAAI,CAAC,IAAI,CAAC,CACnB,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,YAAY,CAAe;IACpD,IAAI,EAAE,EAAE,KAAK,EAAE,0DAA0D,EAAE;IAC3E,UAAU,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;IACnC,KAAK,CAAC,IAAI,CAAuB,KAAmB;QAChD,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,MAAM,CACR,IAAI,EACJ,KAAK,CAAC,IAAI,EACV,KAAK,IAAI,EAAE;YACP,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;YACvB,OAAO,MAAM,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CACP,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACtB,CAAC,CAAC,yBAAyB,GAAG,mCAAmC;YACjE,CAAC,CAAC,CAAC,sBAAsB,GAAG,iBAAiB,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpK,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAMH,MAAM,cAAc,GAAG,YAAY,CAAe;IAC9C,IAAI,EAAE,EAAE,KAAK,EAAE,oGAAoG,EAAE;IACrH,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,YAAY,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,2DAA2D,EAAE,EAAE,EAAE;IACxK,KAAK,CAAC,IAAI,CAAuB,KAAmB;QAChD,MAAM,MAAM,CACR,IAAI,EACJ,KAAK,CAAC,IAAI,EACV,KAAK,IAAI,EAAE;YACP,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;gBACzD,MAAM,IAAI,KAAK,CAAC,4FAA4F,CAAC,CAAC;YAClH,CAAC;YACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACjC,OAAO,MAAM,YAAY,CAAC,MAAM,UAAU,CAAC,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnF,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CACP,CAAC,YAAY,MAAM,CAAC,QAAQ,WAAW,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACtJ,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAOH,MAAM,UAAU,GAAgC,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAEvE,MAAM,gBAAgB,GAAG,YAAY,CAA0B;IAC3D,IAAI,EAAE,EAAE,KAAK,EAAE,iFAAiF,EAAE;IAClG,UAAU,EAAE;QACR,KAAK,EAAE,YAAY;QACnB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC,EAAE;KACxI;IACD,KAAK,CAAC,IAAI,CAAuB,KAAmB,EAAE,KAAc;QAChE,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,MAAM,MAAM,CACR,IAAI,EACJ,KAAK,CAAC,IAAI,EACV,KAAK,IAAI,EAAE;YACP,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;YAC9D,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC1B,MAAM,IAAI,KAAK,CAAC,yDAAyD,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5I,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3C,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;YACvB,MAAM,mBAAmB,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACxD,OAAO,GAAG,CAAC,MAAM,eAAe,EAAE,CAAC,KAAK,SAAS,CAAC;YAClD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACnC,CAAC,EACD,CAAC,MAAM,EAAE,EAAE,CACP;YACI,MAAM,CAAC,SAAS,KAAK,MAAM;gBACvB,CAAC,CAAC,GAAG,GAAG,mLAAmL;gBAC3L,CAAC,CAAC,GAAG,GAAG,oHAAoH;YAChI,OAAO;gBACH,CAAC,CAAC,wEAAwE;gBAC1E,CAAC,CAAC,0GAA0G;SACnH,CAAC,IAAI,CAAC,IAAI,CAAC,CACnB,CAAC;IACN,CAAC;CACJ,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG;IAC3B,OAAO;IACP,YAAY,EAAE,gBAAgB;IAC9B,gBAAgB,EAAE,oBAAoB;IACtC,OAAO,EAAE,cAAc;IACvB,SAAS,EAAE,gBAAgB;CAC9B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export interface FileStamp {
|
|
2
|
+
readonly size: number;
|
|
3
|
+
readonly hash?: string | undefined;
|
|
4
|
+
}
|
|
5
|
+
export type Listed = FileStamp | "other";
|
|
6
|
+
export type Listing = ReadonlyMap<string, Listed>;
|
|
7
|
+
export type ChangeKind = "added" | "modified" | "deleted";
|
|
8
|
+
export interface ProjectChange {
|
|
9
|
+
readonly path: string;
|
|
10
|
+
readonly kind: ChangeKind;
|
|
11
|
+
readonly size?: number;
|
|
12
|
+
readonly held?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const CHANGES_MAX = 5000;
|
|
15
|
+
export declare const ignoreExpression: (pattern: string) => string;
|
|
16
|
+
export declare const ignoreExpressions: (patterns: readonly string[]) => string[];
|
|
17
|
+
export declare const ignoreMatcher: (patterns: readonly string[]) => ((path: string) => boolean);
|
|
18
|
+
export declare const isPortablePath: (path: string) => boolean;
|
|
19
|
+
export declare const parseListing: (raw: string) => Map<string, Listed>;
|
|
20
|
+
export interface Evidence {
|
|
21
|
+
readonly current: boolean;
|
|
22
|
+
readonly unchangedHere: ReadonlyMap<string, boolean>;
|
|
23
|
+
}
|
|
24
|
+
export declare const HELD_NOT_RUNNING = "the sync was not running, so whether this folder's copy changed too cannot be told; it is left as it is";
|
|
25
|
+
export declare const HELD_CHANGED_HERE = "it changed here too since the two copies last agreed; this folder's copy is left as it is";
|
|
26
|
+
export declare const HELD_UNKNOWN = "no listing has seen the two copies agree on it, so whether it changed here too is not known; this folder's copy is left as it is";
|
|
27
|
+
export interface Classified {
|
|
28
|
+
readonly changes: readonly ProjectChange[];
|
|
29
|
+
readonly agreed: ReadonlyMap<string, string>;
|
|
30
|
+
}
|
|
31
|
+
export declare const classify: (local: Listing, remote: Listing, agreed: ReadonlyMap<string, string>, evidence: Evidence) => Classified;
|
|
32
|
+
export interface CappedChanges {
|
|
33
|
+
readonly changes: readonly ProjectChange[];
|
|
34
|
+
readonly truncated: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare const capped: (changes: readonly ProjectChange[]) => CappedChanges;
|
|
37
|
+
export interface Selection {
|
|
38
|
+
readonly selected: readonly ProjectChange[];
|
|
39
|
+
readonly unmatched: readonly string[];
|
|
40
|
+
}
|
|
41
|
+
export declare const selectChanges: (changes: readonly ProjectChange[], paths: readonly string[]) => Selection;
|
|
42
|
+
//# sourceMappingURL=project-files.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-files.d.ts","sourceRoot":"","sources":["../../src/sync/project-files.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC;AAID,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AACzC,MAAM,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAElD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAI1D,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CAC1B;AAGD,eAAO,MAAM,WAAW,OAAQ,CAAC;AAgBjC,eAAO,MAAM,gBAAgB,YAAa,MAAM,KAAG,MAOlD,CAAC;AAGF,eAAO,MAAM,iBAAiB,aAAc,SAAS,MAAM,EAAE,KAAG,MAAM,EAA4D,CAAC;AAEnI,eAAO,MAAM,aAAa,aAAc,SAAS,MAAM,EAAE,KAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAGrF,CAAC;AAIF,eAAO,MAAM,cAAc,SAAU,MAAM,KAAG,OAA6D,CAAC;AAO5G,eAAO,MAAM,YAAY,QAAS,MAAM,KAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAmB5D,CAAC;AAKF,MAAM,WAAW,QAAQ;IAGrB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxD;AAGD,eAAO,MAAM,gBAAgB,4GAA4G,CAAC;AAC1I,eAAO,MAAM,iBAAiB,8FAA8F,CAAC;AAC7H,eAAO,MAAM,YAAY,qIAAqI,CAAC;AAsC/J,MAAM,WAAW,UAAU;IAEvB,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAE3C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,QAAQ,UAAW,OAAO,UAAU,OAAO,UAAU,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,YAAY,QAAQ,KAAG,UAuBnH,CAAC;AAEF,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC/B;AAGD,eAAO,MAAM,MAAM,YAAa,SAAS,aAAa,EAAE,KAAG,aAGzD,CAAC;AAEH,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,EAAE,CAAC;IAE5C,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC;AAID,eAAO,MAAM,aAAa,YAAa,SAAS,aAAa,EAAE,SAAS,SAAS,MAAM,EAAE,KAAG,SAU3F,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { isSafeRelativePath } from "./residue.js";
|
|
2
|
+
export const CHANGES_MAX = 5_000;
|
|
3
|
+
const MUTAGEN_TEMPORARY = ".mutagen-temporary-*";
|
|
4
|
+
const PATTERN = /^\/?[^/*?[\]!\\{}]*(?:\*[^/*?[\]!\\{}]*)*$/;
|
|
5
|
+
const escaped = (text) => text.replace(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
|
|
6
|
+
export const ignoreExpression = (pattern) => {
|
|
7
|
+
const bare = pattern.replace(/^\//, "");
|
|
8
|
+
if (!PATTERN.test(pattern) || bare === "" || bare.includes("**")) {
|
|
9
|
+
throw new Error(`the ignore pattern ${JSON.stringify(pattern)} is not one this agent can match exactly, so it will not compare the folder with the sandbox's copy`);
|
|
10
|
+
}
|
|
11
|
+
const name = bare.split("*").map(escaped).join("[^/]*");
|
|
12
|
+
return `${pattern.startsWith("/") ? "^" : "(?:^|/)"}${name}(?:/|$)`;
|
|
13
|
+
};
|
|
14
|
+
export const ignoreExpressions = (patterns) => [...patterns, MUTAGEN_TEMPORARY].map(ignoreExpression);
|
|
15
|
+
export const ignoreMatcher = (patterns) => {
|
|
16
|
+
const rules = ignoreExpressions(patterns).map((source) => new RegExp(source));
|
|
17
|
+
return (path) => rules.some((rule) => rule.test(path));
|
|
18
|
+
};
|
|
19
|
+
export const isPortablePath = (path) => isSafeRelativePath(path) && !/^[a-z]:/i.test(path);
|
|
20
|
+
const HASH = /^[0-9a-f]{64}$/;
|
|
21
|
+
export const parseListing = (raw) => {
|
|
22
|
+
const fields = raw.split("\0");
|
|
23
|
+
if (fields.pop() !== "" || fields.length % 3 !== 0) {
|
|
24
|
+
throw new Error("the sandbox's file listing ended early");
|
|
25
|
+
}
|
|
26
|
+
const listing = new Map();
|
|
27
|
+
for (let at = 0; at < fields.length; at += 3) {
|
|
28
|
+
const [path = "", size = "", hash = ""] = fields.slice(at, at + 3);
|
|
29
|
+
if (!isPortablePath(path)) {
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
const bytes = Number(size);
|
|
33
|
+
const entry = size === "-" && hash === "-" ? "other" : Number.isSafeInteger(bytes) && bytes >= 0 && HASH.test(hash) ? { size: bytes, hash } : undefined;
|
|
34
|
+
if (entry === undefined || listing.has(path)) {
|
|
35
|
+
throw new Error(`the sandbox's file listing is not one this agent wrote (at ${JSON.stringify(path)})`);
|
|
36
|
+
}
|
|
37
|
+
listing.set(path, entry);
|
|
38
|
+
}
|
|
39
|
+
return listing;
|
|
40
|
+
};
|
|
41
|
+
const sameFile = (here, there) => here.size === there.size && here.hash !== undefined && here.hash === there.hash;
|
|
42
|
+
export const HELD_NOT_RUNNING = "the sync was not running, so whether this folder's copy changed too cannot be told; it is left as it is";
|
|
43
|
+
export const HELD_CHANGED_HERE = "it changed here too since the two copies last agreed; this folder's copy is left as it is";
|
|
44
|
+
export const HELD_UNKNOWN = "no listing has seen the two copies agree on it, so whether it changed here too is not known; this folder's copy is left as it is";
|
|
45
|
+
const heldBecause = (path, here, agreed, evidence) => {
|
|
46
|
+
if (!evidence.current) {
|
|
47
|
+
return HELD_NOT_RUNNING;
|
|
48
|
+
}
|
|
49
|
+
const reported = evidence.unchangedHere.get(path);
|
|
50
|
+
if (reported !== undefined) {
|
|
51
|
+
return reported ? undefined : HELD_CHANGED_HERE;
|
|
52
|
+
}
|
|
53
|
+
if (agreed === undefined) {
|
|
54
|
+
return HELD_UNKNOWN;
|
|
55
|
+
}
|
|
56
|
+
return here.hash === agreed ? undefined : HELD_CHANGED_HERE;
|
|
57
|
+
};
|
|
58
|
+
const changeOf = (path, here, there, agreed, evidence) => {
|
|
59
|
+
if (there === undefined) {
|
|
60
|
+
return agreed !== undefined && here?.hash === agreed ? { path, kind: "deleted" } : undefined;
|
|
61
|
+
}
|
|
62
|
+
if (agreed !== undefined && there.hash === agreed) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
if (here === undefined) {
|
|
66
|
+
return { path, kind: "added", size: there.size };
|
|
67
|
+
}
|
|
68
|
+
const held = heldBecause(path, here, agreed, evidence);
|
|
69
|
+
return held === undefined ? { path, kind: "modified", size: there.size } : { path, kind: "modified", size: there.size, held };
|
|
70
|
+
};
|
|
71
|
+
export const classify = (local, remote, agreed, evidence) => {
|
|
72
|
+
const changes = [];
|
|
73
|
+
const next = new Map();
|
|
74
|
+
for (const path of [...new Set([...local.keys(), ...remote.keys()])].toSorted()) {
|
|
75
|
+
const here = local.get(path);
|
|
76
|
+
const there = remote.get(path);
|
|
77
|
+
if (here === "other" || there === "other") {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
if (here !== undefined && there !== undefined && sameFile(here, there) && there.hash !== undefined) {
|
|
81
|
+
next.set(path, there.hash);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
const before = agreed.get(path);
|
|
85
|
+
if (before !== undefined) {
|
|
86
|
+
next.set(path, before);
|
|
87
|
+
}
|
|
88
|
+
const change = changeOf(path, here, there, before, evidence);
|
|
89
|
+
if (change !== undefined) {
|
|
90
|
+
changes.push(change);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return { changes, agreed: next };
|
|
94
|
+
};
|
|
95
|
+
export const capped = (changes) => ({
|
|
96
|
+
changes: changes.slice(0, CHANGES_MAX),
|
|
97
|
+
truncated: changes.length > CHANGES_MAX,
|
|
98
|
+
});
|
|
99
|
+
export const selectChanges = (changes, paths) => {
|
|
100
|
+
if (paths.length === 0) {
|
|
101
|
+
return { selected: changes, unmatched: [] };
|
|
102
|
+
}
|
|
103
|
+
const wanted = paths.map((path) => path.replace(/\/+$/, ""));
|
|
104
|
+
const names = (path, change) => change.path === path || change.path.startsWith(`${path}/`);
|
|
105
|
+
return {
|
|
106
|
+
selected: changes.filter((change) => wanted.some((path) => names(path, change))),
|
|
107
|
+
unmatched: wanted.filter((path) => !changes.some((change) => names(path, change))),
|
|
108
|
+
};
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=project-files.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-files.js","sourceRoot":"","sources":["../../src/sync/project-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AA8BlD,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC;AAIjC,MAAM,iBAAiB,GAAG,sBAAsB,CAAC;AAOjD,MAAM,OAAO,GAAG,4CAA4C,CAAC;AAE7D,MAAM,OAAO,GAAG,CAAC,IAAY,EAAU,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,GAAG,CAAA,KAAK,CAAC,CAAC;AAG/F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,OAAe,EAAU,EAAE;IACxD,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qGAAqG,CAAC,CAAC;IACxK,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC;AACxE,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAA2B,EAAY,EAAE,CAAC,CAAC,GAAG,QAAQ,EAAE,iBAAiB,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEnI,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAA2B,EAA+B,EAAE;IACtF,MAAM,KAAK,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC3D,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAE5G,MAAM,IAAI,GAAG,gBAAgB,CAAC;AAK9B,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAW,EAAuB,EAAE;IAC7D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACnE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,SAAS;QACb,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,MAAM,KAAK,GAAuB,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5K,IAAI,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,8DAA8D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC;AACnB,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,IAAe,EAAE,KAAgB,EAAW,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC;AAajJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,yGAAyG,CAAC;AAC1I,MAAM,CAAC,MAAM,iBAAiB,GAAG,2FAA2F,CAAC;AAC7H,MAAM,CAAC,MAAM,YAAY,GAAG,kIAAkI,CAAC;AAM/J,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,IAAe,EAAE,MAA0B,EAAE,QAAkB,EAAsB,EAAE;IACtH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,gBAAgB,CAAC;IAC5B,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC;AAChE,CAAC,CAAC;AAMF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,IAA2B,EAAE,KAA4B,EAAE,MAA0B,EAAE,QAAkB,EAA6B,EAAE;IACpK,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,MAAM,KAAK,SAAS,IAAI,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IACrD,CAAC;IACD,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvD,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;AAClI,CAAC,CAAC;AASF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,MAAe,EAAE,MAAmC,EAAE,QAAkB,EAAc,EAAE;IAC7H,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YACxC,SAAS;QACb,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YACjG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,SAAS;QACb,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3B,CAAC;QACD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC7D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,OAAiC,EAAiB,EAAE,CAAC,CAAC;IACzE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC;IACtC,SAAS,EAAE,OAAO,CAAC,MAAM,GAAG,WAAW;CAC1C,CAAC,CAAC;AAUH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,OAAiC,EAAE,KAAwB,EAAa,EAAE;IACpG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAChD,CAAC;IACD,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,MAAqB,EAAW,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC;IAC3H,OAAO;QACH,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;QAChF,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;KACrF,CAAC;AACN,CAAC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type FileStamp, type Listed } from "./project-files.js";
|
|
2
|
+
export declare const hashFile: (path: string, algorithm?: "sha256" | "sha1") => Promise<string>;
|
|
3
|
+
export interface Durability {
|
|
4
|
+
readonly file: (path: string) => Promise<void>;
|
|
5
|
+
readonly folder: (path: string) => Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
export declare const realDurability: Durability;
|
|
8
|
+
export interface CachedHash {
|
|
9
|
+
readonly size: number;
|
|
10
|
+
readonly mtimeMs: number;
|
|
11
|
+
readonly ctimeMs: number;
|
|
12
|
+
readonly hash: string;
|
|
13
|
+
}
|
|
14
|
+
export interface ListingRecord {
|
|
15
|
+
readonly files: ReadonlyMap<string, CachedHash>;
|
|
16
|
+
readonly agreed: ReadonlyMap<string, string>;
|
|
17
|
+
}
|
|
18
|
+
export declare const listingRecordPath: (stateDir: string, sandboxId: string) => string;
|
|
19
|
+
export declare const readListingRecord: (path: string, localDir: string, remoteDir: string) => Promise<ListingRecord>;
|
|
20
|
+
export declare const writeListingRecord: (path: string, localDir: string, remoteDir: string, record: ListingRecord) => Promise<void>;
|
|
21
|
+
export interface LocalWalk {
|
|
22
|
+
readonly root: string;
|
|
23
|
+
readonly ignored: (path: string) => boolean;
|
|
24
|
+
readonly cached: ReadonlyMap<string, CachedHash>;
|
|
25
|
+
readonly wantsHash: (path: string, size: number) => boolean;
|
|
26
|
+
}
|
|
27
|
+
export interface LocalListing {
|
|
28
|
+
readonly listing: ReadonlyMap<string, Listed>;
|
|
29
|
+
readonly hashes: ReadonlyMap<string, CachedHash>;
|
|
30
|
+
}
|
|
31
|
+
export declare const assertFolder: (root: string) => Promise<void>;
|
|
32
|
+
export declare const walkLocal: (walk: LocalWalk) => Promise<LocalListing>;
|
|
33
|
+
export declare const localTarget: (root: string, path: string) => Promise<string>;
|
|
34
|
+
export interface LocalFile extends FileStamp {
|
|
35
|
+
readonly hash: string;
|
|
36
|
+
readonly mode: number;
|
|
37
|
+
}
|
|
38
|
+
export declare const localFile: (root: string, path: string) => Promise<LocalFile | undefined>;
|
|
39
|
+
export type FileMode = {
|
|
40
|
+
readonly exact: number;
|
|
41
|
+
} | {
|
|
42
|
+
readonly executable: boolean;
|
|
43
|
+
};
|
|
44
|
+
export declare const installFile: (root: string, path: string, source: string, mode: FileMode) => Promise<void>;
|
|
45
|
+
export declare const removeFile: (root: string, path: string) => Promise<void>;
|
|
46
|
+
//# sourceMappingURL=project-local.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-local.d.ts","sourceRoot":"","sources":["../../src/sync/project-local.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,SAAS,EAAkB,KAAK,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAMjF,eAAO,MAAM,QAAQ,SAAgB,MAAM,cAAa,QAAQ,GAAG,MAAM,KAAc,OAAO,CAAC,MAAM,CAMpG,CAAC;AAKF,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACpD;AAWD,eAAO,MAAM,cAAc,EAAE,UAO5B,CAAC;AAIF,MAAM,WAAW,UAAU;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAYD,MAAM,WAAW,aAAa;IAC1B,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChD;AAED,eAAO,MAAM,iBAAiB,aAAc,MAAM,aAAa,MAAM,KAAG,MAA2E,CAAC;AAIpJ,eAAO,MAAM,iBAAiB,SAAgB,MAAM,YAAY,MAAM,aAAa,MAAM,KAAG,OAAO,CAAC,aAAa,CAQhH,CAAC;AAWF,eAAO,MAAM,kBAAkB,SAAgB,MAAM,YAAY,MAAM,aAAa,MAAM,UAAU,aAAa,KAAG,OAAO,CAAC,IAAI,CAG/H,CAAC;AAEF,MAAM,WAAW,SAAS;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAEjD,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAC/D;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE9C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpD;AAID,eAAO,MAAM,YAAY,SAAgB,MAAM,KAAG,OAAO,CAAC,IAAI,CAK7D,CAAC;AAGF,eAAO,MAAM,SAAS,SAAgB,SAAS,KAAG,OAAO,CAAC,YAAY,CAsDrE,CAAC;AAMF,eAAO,MAAM,WAAW,SAAgB,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,MAAM,CAmB5E,CAAC;AAGF,MAAM,WAAW,SAAU,SAAQ,SAAS;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,SAAS,SAAgB,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,SAAS,GAAG,SAAS,CAIzF,CAAC;AAwBF,MAAM,MAAM,QAAQ,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;CAAE,CAAC;AAMrF,eAAO,MAAM,WAAW,SAAgB,MAAM,QAAQ,MAAM,UAAU,MAAM,QAAQ,QAAQ,KAAG,OAAO,CAAC,IAAI,CAuB1G,CAAC;AAiCF,eAAO,MAAM,UAAU,SAAgB,MAAM,QAAQ,MAAM,KAAG,OAAO,CAAC,IAAI,CAczE,CAAC"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { createReadStream } from "node:fs";
|
|
3
|
+
import { chmod, lstat, mkdir, open, readdir, readFile, rename, rm, rmdir, stat } from "node:fs/promises";
|
|
4
|
+
import { basename, dirname, join } from "node:path";
|
|
5
|
+
import { pipeline } from "node:stream/promises";
|
|
6
|
+
import { setTimeout as sleep } from "node:timers/promises";
|
|
7
|
+
import { errnoCode, undefinedIfMissing } from "@intentic/base/errors";
|
|
8
|
+
import { writeFileAtomic } from "@intentic/base/fs";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { isPortablePath } from "./project-files.js";
|
|
11
|
+
export const hashFile = async (path, algorithm = "sha256") => {
|
|
12
|
+
const digest = createHash(algorithm);
|
|
13
|
+
for await (const chunk of createReadStream(path)) {
|
|
14
|
+
digest.update(chunk);
|
|
15
|
+
}
|
|
16
|
+
return digest.digest("hex");
|
|
17
|
+
};
|
|
18
|
+
const flushed = async (path, flags) => {
|
|
19
|
+
const handle = await open(path, flags);
|
|
20
|
+
try {
|
|
21
|
+
await handle.sync();
|
|
22
|
+
}
|
|
23
|
+
finally {
|
|
24
|
+
await handle.close();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
export const realDurability = {
|
|
28
|
+
file: async (path) => await flushed(path, "r+"),
|
|
29
|
+
folder: async (path) => {
|
|
30
|
+
if (process.platform !== "win32") {
|
|
31
|
+
await flushed(path, "r");
|
|
32
|
+
}
|
|
33
|
+
},
|
|
34
|
+
};
|
|
35
|
+
const RecordSchema = z.object({
|
|
36
|
+
localDir: z.string(),
|
|
37
|
+
remoteDir: z.string(),
|
|
38
|
+
files: z.record(z.string(), z.tuple([z.number(), z.number(), z.number(), z.string()])),
|
|
39
|
+
agreed: z.record(z.string(), z.string()),
|
|
40
|
+
});
|
|
41
|
+
export const listingRecordPath = (stateDir, sandboxId) => join(stateDir, "hashes", `${encodeURIComponent(sandboxId)}.json`);
|
|
42
|
+
export const readListingRecord = async (path, localDir, remoteDir) => {
|
|
43
|
+
const raw = await readFile(path, "utf8").catch(undefinedIfMissing);
|
|
44
|
+
const parsed = raw === undefined ? undefined : parseRecord(raw);
|
|
45
|
+
if (parsed === undefined || parsed.localDir !== localDir || parsed.remoteDir !== remoteDir) {
|
|
46
|
+
return { files: new Map(), agreed: new Map() };
|
|
47
|
+
}
|
|
48
|
+
const files = Object.entries(parsed.files).map(([file, [size, mtimeMs, ctimeMs, hash]]) => [file, { size, mtimeMs, ctimeMs, hash }]);
|
|
49
|
+
return { files: new Map(files), agreed: new Map(Object.entries(parsed.agreed)) };
|
|
50
|
+
};
|
|
51
|
+
const parseRecord = (raw) => {
|
|
52
|
+
try {
|
|
53
|
+
return RecordSchema.safeParse(JSON.parse(raw)).data;
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
export const writeListingRecord = async (path, localDir, remoteDir, record) => {
|
|
60
|
+
const files = Object.fromEntries([...record.files].map(([file, held]) => [file, [held.size, held.mtimeMs, held.ctimeMs, held.hash]]));
|
|
61
|
+
await writeFileAtomic(path, JSON.stringify({ localDir, remoteDir, files, agreed: Object.fromEntries(record.agreed) }), 0o600);
|
|
62
|
+
};
|
|
63
|
+
export const assertFolder = async (root) => {
|
|
64
|
+
const info = await stat(root).catch(undefinedIfMissing);
|
|
65
|
+
if (info?.isDirectory() !== true) {
|
|
66
|
+
throw new Error(`${root} is not there (moved, deleted, or on a disk that is not connected)`);
|
|
67
|
+
}
|
|
68
|
+
};
|
|
69
|
+
export const walkLocal = async (walk) => {
|
|
70
|
+
await assertFolder(walk.root);
|
|
71
|
+
const listing = new Map();
|
|
72
|
+
const hashes = new Map();
|
|
73
|
+
const hashOf = async (path, info) => {
|
|
74
|
+
const held = walk.cached.get(path);
|
|
75
|
+
if (held !== undefined && held.size === info.size && held.mtimeMs === info.mtimeMs && held.ctimeMs === info.ctimeMs) {
|
|
76
|
+
return held.hash;
|
|
77
|
+
}
|
|
78
|
+
return walk.wantsHash(path, info.size)
|
|
79
|
+
? await hashFile(join(walk.root, path)).then((hash) => hash, () => null)
|
|
80
|
+
: undefined;
|
|
81
|
+
};
|
|
82
|
+
const entryOf = async (path, isFile) => {
|
|
83
|
+
const info = isFile ? await lstat(join(walk.root, path)).catch(undefinedIfMissing) : undefined;
|
|
84
|
+
if (info === undefined) {
|
|
85
|
+
return isFile ? undefined : "other";
|
|
86
|
+
}
|
|
87
|
+
const hash = info.isFile() ? await hashOf(path, info) : null;
|
|
88
|
+
if (hash === null) {
|
|
89
|
+
return "other";
|
|
90
|
+
}
|
|
91
|
+
if (hash !== undefined) {
|
|
92
|
+
hashes.set(path, { size: info.size, mtimeMs: info.mtimeMs, ctimeMs: info.ctimeMs, hash });
|
|
93
|
+
}
|
|
94
|
+
return { size: info.size, hash };
|
|
95
|
+
};
|
|
96
|
+
const visit = async (relative) => {
|
|
97
|
+
const entries = (await readdir(join(walk.root, relative), { withFileTypes: true }).catch(undefinedIfMissing)) ?? [];
|
|
98
|
+
for (const entry of entries) {
|
|
99
|
+
const path = relative === "" ? entry.name : `${relative}/${entry.name}`;
|
|
100
|
+
if (!isPortablePath(path) || walk.ignored(path)) {
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (entry.isDirectory()) {
|
|
104
|
+
await visit(path);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
const listed = await entryOf(path, entry.isFile());
|
|
108
|
+
if (listed !== undefined) {
|
|
109
|
+
listing.set(path, listed);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
await visit("");
|
|
114
|
+
return { listing, hashes };
|
|
115
|
+
};
|
|
116
|
+
export const localTarget = async (root, path) => {
|
|
117
|
+
if (!isPortablePath(path)) {
|
|
118
|
+
throw new Error(`${JSON.stringify(path)} is not a path inside the folder`);
|
|
119
|
+
}
|
|
120
|
+
const parts = path.split("/");
|
|
121
|
+
let target = root;
|
|
122
|
+
for (const [at, part] of parts.entries()) {
|
|
123
|
+
target = join(target, part);
|
|
124
|
+
const info = await lstat(target).catch(undefinedIfMissing);
|
|
125
|
+
if (info === undefined) {
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
const last = at === parts.length - 1;
|
|
129
|
+
if (info.isSymbolicLink() || (last ? !info.isFile() : !info.isDirectory())) {
|
|
130
|
+
throw new Error(last ? "something other than a regular file is here" : `${parts.slice(0, at + 1).join("/")} is not a plain folder here`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
return join(root, ...parts);
|
|
134
|
+
};
|
|
135
|
+
export const localFile = async (root, path) => {
|
|
136
|
+
const target = await localTarget(root, path);
|
|
137
|
+
const info = await lstat(target).catch(undefinedIfMissing);
|
|
138
|
+
return info === undefined ? undefined : { size: info.size, hash: await hashFile(target), mode: info.mode & 0o7777 };
|
|
139
|
+
};
|
|
140
|
+
const TRANSIENT_RENAME = new Set(["EPERM", "EACCES", "EBUSY"]);
|
|
141
|
+
const renameInto = async (from, to) => {
|
|
142
|
+
for (let attempt = 1;; attempt += 1) {
|
|
143
|
+
try {
|
|
144
|
+
await rename(from, to);
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
if (process.platform !== "win32" || attempt >= 10 || !TRANSIENT_RENAME.has(errnoCode(error) ?? "")) {
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
await sleep(50);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
let installs = 0;
|
|
156
|
+
export const installFile = async (root, path, source, mode) => {
|
|
157
|
+
const target = await localTarget(root, path);
|
|
158
|
+
await mkdirPlain(root, dirname(path));
|
|
159
|
+
installs += 1;
|
|
160
|
+
const temporary = join(dirname(target), `.${basename(target)}.intentic-${process.pid}-${installs}.tmp`);
|
|
161
|
+
try {
|
|
162
|
+
const handle = await open(temporary, "wx", "exact" in mode || !mode.executable ? 0o666 : 0o777);
|
|
163
|
+
try {
|
|
164
|
+
await pipeline(createReadStream(source), handle.createWriteStream());
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
await handle.close().catch(() => undefined);
|
|
168
|
+
}
|
|
169
|
+
if ("exact" in mode) {
|
|
170
|
+
await chmod(temporary, mode.exact);
|
|
171
|
+
}
|
|
172
|
+
await realDurability.file(temporary);
|
|
173
|
+
await localTarget(root, path);
|
|
174
|
+
await renameInto(temporary, target);
|
|
175
|
+
}
|
|
176
|
+
finally {
|
|
177
|
+
await rm(temporary, { force: true });
|
|
178
|
+
}
|
|
179
|
+
};
|
|
180
|
+
const mkdirPlain = async (root, relative) => {
|
|
181
|
+
if (relative === "." || relative === "") {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
let at = root;
|
|
185
|
+
for (const part of relative.split("/")) {
|
|
186
|
+
at = join(at, part);
|
|
187
|
+
const info = await lstat(at).catch(undefinedIfMissing);
|
|
188
|
+
if (info === undefined) {
|
|
189
|
+
await mkdirOne(at);
|
|
190
|
+
}
|
|
191
|
+
else if (info.isSymbolicLink() || !info.isDirectory()) {
|
|
192
|
+
throw new Error(`${relative} is not a plain folder here`);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
const mkdirOne = async (path) => {
|
|
197
|
+
try {
|
|
198
|
+
await mkdir(path);
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
if (errnoCode(error) !== "EEXIST") {
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
};
|
|
206
|
+
export const removeFile = async (root, path) => {
|
|
207
|
+
await rm(await localTarget(root, path));
|
|
208
|
+
const parts = path.split("/").slice(0, -1);
|
|
209
|
+
while (parts.length > 0) {
|
|
210
|
+
const emptied = await rmdir(join(root, ...parts)).then(() => true, () => false);
|
|
211
|
+
if (!emptied) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
parts.pop();
|
|
215
|
+
}
|
|
216
|
+
};
|
|
217
|
+
//# sourceMappingURL=project-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-local.js","sourceRoot":"","sources":["../../src/sync/project-local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACzG,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,UAAU,IAAI,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAkB,cAAc,EAAe,MAAM,oBAAoB,CAAC;AAMjF,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAE,SAAS,GAAsB,QAAQ,EAAmB,EAAE;IACrG,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IACrC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAUF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,KAAiB,EAAiB,EAAE;IACrE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC;QACD,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;YAAS,CAAC;QACP,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAe;IACtC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IAC/C,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACnB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;CACJ,CAAC;AAcF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;CAC3C,CAAC,CAAC;AAOH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,SAAiB,EAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAIpJ,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgB,EAAE,SAAiB,EAA0B,EAAE;IACjH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACzF,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAE,CAAC;IACnD,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAU,CAAC,CAAC;IAC9I,OAAO,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;AACrF,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAW,EAA4C,EAAE;IAC1E,IAAI,CAAC;QACD,OAAO,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QAEL,OAAO,SAAS,CAAC;IACrB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgB,EAAE,SAAiB,EAAE,MAAqB,EAAiB,EAAE;IAChI,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtI,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAClI,CAAC,CAAC;AAkBF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IAC9D,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IACxD,IAAI,IAAI,EAAE,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,oEAAoE,CAAC,CAAC;IACjG,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAe,EAAyB,EAAE;IACtE,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAsB,CAAC;IAG7C,MAAM,MAAM,GAAG,KAAK,EAAE,IAAY,EAAE,IAAwD,EAAsC,EAAE;QAChI,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;YAClH,OAAO,IAAI,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC;YAClC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CACtC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EACd,GAAG,EAAE,CAAC,IAAI,CACb;YACH,CAAC,CAAC,SAAS,CAAC;IACpB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,MAAe,EAA+B,EAAE;QACjF,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/F,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;QACxC,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAChB,OAAO,OAAO,CAAC;QACnB,CAAC;QACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACrC,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;QACpD,MAAM,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;QACpH,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,QAAQ,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACxE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,SAAS;YACb,CAAC;YACD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBAEtB,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClB,SAAS;YACb,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACnD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;IACL,CAAC,CAAC;IACF,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC/B,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAmB,EAAE;IAC7E,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;IAC/E,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM;QACV,CAAC;QACD,MAAM,IAAI,GAAG,EAAE,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC7I,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC;AAChC,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAkC,EAAE;IAC1F,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAC3D,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;AACxH,CAAC,CAAC;AAIF,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAE/D,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,EAAU,EAAiB,EAAE;IACjE,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC;YAED,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvB,OAAO;QACX,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,IAAI,OAAO,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACjG,MAAM,KAAK,CAAC;YAChB,CAAC;YAED,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAMF,IAAI,QAAQ,GAAG,CAAC,CAAC;AAIjB,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,IAAc,EAAiB,EAAE;IAC3G,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC7C,MAAM,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACtC,QAAQ,IAAI,CAAC,CAAC;IACd,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa,OAAO,CAAC,GAAG,IAAI,QAAQ,MAAM,CAAC,CAAC;IACxG,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChG,IAAI,CAAC;YACD,MAAM,QAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC;QACzE,CAAC;gBAAS,CAAC;YAEP,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;YAClB,MAAM,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,MAAM,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;YAAS,CAAC;QACP,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;AACL,CAAC,CAAC;AAGF,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,QAAgB,EAAiB,EAAE;IACvE,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,KAAK,EAAE,EAAE,CAAC;QACtC,OAAO;IACX,CAAC;IACD,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAEpB,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAErB,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QACvB,CAAC;aAAM,IAAI,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,6BAA6B,CAAC,CAAC;QAC9D,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,KAAK,EAAE,IAAY,EAAiB,EAAE;IACnD,IAAI,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ,EAAE,CAAC;YAChC,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;AACL,CAAC,CAAC;AAIF,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,IAAY,EAAE,IAAY,EAAiB,EAAE;IAC1E,MAAM,EAAE,CAAC,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAEtB,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAClD,GAAG,EAAE,CAAC,IAAI,EACV,GAAG,EAAE,CAAC,KAAK,CACd,CAAC;QACF,IAAI,CAAC,OAAO,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QACD,KAAK,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;AACL,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type Listing } from "./project-files.js";
|
|
2
|
+
export interface Exited {
|
|
3
|
+
readonly status: number | null;
|
|
4
|
+
readonly stderr: string;
|
|
5
|
+
}
|
|
6
|
+
export interface Spawned {
|
|
7
|
+
readonly stdout: AsyncIterable<Buffer>;
|
|
8
|
+
readonly exit: Promise<Exited>;
|
|
9
|
+
}
|
|
10
|
+
export interface SpawnOptions {
|
|
11
|
+
readonly input?: string;
|
|
12
|
+
readonly timeoutMs: number;
|
|
13
|
+
}
|
|
14
|
+
export interface ProjectRunner {
|
|
15
|
+
readonly spawn: (command: string, args: readonly string[], options: SpawnOptions) => Spawned;
|
|
16
|
+
}
|
|
17
|
+
export declare const realProjectRunner: ProjectRunner;
|
|
18
|
+
export interface Collected extends Exited {
|
|
19
|
+
readonly stdout: Buffer;
|
|
20
|
+
}
|
|
21
|
+
export declare const collect: (spawned: Spawned) => Promise<Collected>;
|
|
22
|
+
export declare const remoteNodeCommand: (program: string, input: string) => string;
|
|
23
|
+
export declare const LISTING_PROGRAM: string;
|
|
24
|
+
export declare const FETCH_PROGRAM: string;
|
|
25
|
+
export interface Fetched {
|
|
26
|
+
readonly staged: string;
|
|
27
|
+
readonly size: number;
|
|
28
|
+
readonly hash: string;
|
|
29
|
+
readonly executable: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface NotFetched {
|
|
32
|
+
readonly skipped: string;
|
|
33
|
+
}
|
|
34
|
+
export declare const receiveFiles: (stdout: AsyncIterable<Buffer>, paths: readonly string[], staging: string) => Promise<Map<string, Fetched | NotFetched>>;
|
|
35
|
+
export interface SandboxCopy {
|
|
36
|
+
readonly list: (ignoreExpressions: readonly string[]) => Promise<Listing>;
|
|
37
|
+
readonly fetch: (paths: readonly string[], staging: string) => Promise<ReadonlyMap<string, Fetched | NotFetched>>;
|
|
38
|
+
}
|
|
39
|
+
export declare const sandboxCopy: (runner: ProjectRunner, ssh: string, alias: string, remoteDir: string) => SandboxCopy;
|
|
40
|
+
export interface ReportedConflict {
|
|
41
|
+
readonly agreed?: string | undefined;
|
|
42
|
+
readonly here?: string | undefined;
|
|
43
|
+
}
|
|
44
|
+
export interface SessionView {
|
|
45
|
+
readonly state: "absent" | "paused" | "running";
|
|
46
|
+
readonly conflicts: ReadonlyMap<string, ReportedConflict>;
|
|
47
|
+
}
|
|
48
|
+
export interface SessionControl {
|
|
49
|
+
readonly inspect: () => Promise<SessionView>;
|
|
50
|
+
readonly flush: () => Promise<boolean>;
|
|
51
|
+
readonly pause: () => Promise<void>;
|
|
52
|
+
readonly resume: () => Promise<void>;
|
|
53
|
+
}
|
|
54
|
+
export declare const mutagenSession: (runner: ProjectRunner, mutagen: string, name: string) => SessionControl;
|
|
55
|
+
//# sourceMappingURL=project-remote.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-remote.d.ts","sourceRoot":"","sources":["../../src/sync/project-remote.ts"],"names":[],"mappings":"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"}
|