{"_id":"@3-/gitapi","_rev":"11-8bb32206fa4b1f2261163adfad14c588","name":"@3-/gitapi","dist-tags":{"latest":"0.1.11"},"versions":{"0.1.1":{"name":"@3-/gitapi","version":"0.1.1","keywords":["git","sync","automation","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.1","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"588c56fbdb3da3cd23cfff034b0e99f4a19054b1","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.1.tgz","fileCount":9,"integrity":"sha512-I6WUknew9Q8w2ElNEHDAcq+mdm/k+FmXKDpFmQweO5iztkjEBE6g5MMEL4IXE65iurw3e44kaS80AKFFoVmj8A==","signatures":[{"sig":"MEUCIQCmw9oRNsOH9F0tpbC9zBxGsPoAgHlyJsjoQas8djoBlQIgNyklN/5JHWne22e8LcWsLp6gRVNZovZpAjDDfbzh8JA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24426},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"7c25e003a5ec43ce29b09cf175a5886b1b653619","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Automated Git repository synchronization and AI-enhanced commits / 自动化 Git 仓库同步及 AI 增强提交","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.1_1762512809699_0.4994918248683651","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@3-/gitapi","version":"0.1.2","keywords":["git","sync","automation","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.2","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"bdfb7dfd63eb674b27150287573654a8a0f8ecb4","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.2.tgz","fileCount":9,"integrity":"sha512-0eA5p7xfqhhDyRwHTO+xGwZ47OxTRA+c1PrrU+W4k3Y6YKCHWTqaTcY9YBxyP0rN1vvjEyv9vvFo9Gg/ekRkvg==","signatures":[{"sig":"MEYCIQDBcEi2iJ85PjzcKEIk+uxsHYoEZa1/rVWFSNXWw2rC4AIhAOsH0m2s7CcYr3/4rRCLIpQyUu3Mp/1SKKFkjpjMDNZJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":24425},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"b9f8eb6cb2897a8be2be40c10633f237591e7bd1","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Automated Git repository synchronization and AI-enhanced commits / 自动化 Git 仓库同步及 AI 增强提交","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.2_1762512889835_0.07836763621001563","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@3-/gitapi","version":"0.1.3","keywords":["git","sync","automation","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.3","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"902e1178bd4da0566195897915733bccc9657da0","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.3.tgz","fileCount":9,"integrity":"sha512-sPmCZxB8YMCzT9hBRbBgMOOgD0Z8IwdX/rfGRHcaZjeEe8noS79CalxiR+NbImvjmDMfEhJYMnV0de6bl2o2ZA==","signatures":[{"sig":"MEUCIQDxGGR+ekeInnp2pAsV5Jb6w6CFAoSSsK8WbxAg5XDHEAIgRAVYvPvkHpeVfnn3ecm1AxhDAtWJGqhf087iRQYgW8g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26121},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"51f1758ba58f71b825ddeb8fb8d333b36ce254e1","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Automated Git repository synchronization and AI-enhanced commits / 自动化 Git 仓库同步及 AI 增强提交","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.3_1762513353615_0.7278145411435324","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@3-/gitapi","version":"0.1.4","keywords":["git","sync","automation","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.4","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"91ca8bd6171641c6eed8fd802076ec338f1b10c0","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.4.tgz","fileCount":9,"integrity":"sha512-VWFRNOLIBoMLIVV4/rite0FSHN0AXzSB1HfBWUHP8WfCoGN9PqQzradI0qpmS4dGQmY0JHxmuUpvdu51SugCpg==","signatures":[{"sig":"MEUCIHYNTUzerTGU5/zj7foFVXxrC/QKBaShQRMgOLEYjR9aAiEAwsqEAWVLuRz7NddcC5lz6vYUqPvX8yI8OOZUqdaiCZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26130},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"be8904e33391990dfe9ef751388897b746824e10","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Automated Git repository synchronization and AI-enhanced commits / 自动化 Git 仓库同步及 AI 增强提交","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.4_1762513434282_0.684199329762845","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@3-/gitapi","version":"0.1.5","keywords":["git","sync","automation","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.5","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"5627a9d65f02e60f74b4e239b787eb975410024c","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.5.tgz","fileCount":9,"integrity":"sha512-OHvcsVFYjtpj1NtJqzFFce3nMBH9ipqhdUfIVcF/gY3Lw8ZsNWhmTT0kmfI8yPbqePs8xfN+kKkRehcEse7cbA==","signatures":[{"sig":"MEYCIQDU9NT7kDhAJOVDX9QZWEc6MB3JeLAE0X0xx4rLy2bkqQIhANst3ve188fLypgX2Gz5wn686Di3BfcKwOYEDFVehWHx","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26130},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"6ec58eb55e32e14ccc0339144d46d76439ad9d8a","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Automated Git repository synchronization and AI-enhanced commits / 自动化 Git 仓库同步及 AI 增强提交","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.5_1762513507244_0.02678468357565622","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@3-/gitapi","version":"0.1.6","keywords":["git","api","sync","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.6","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"b3871010858b1d9f7236c514c7071c71d3d5181b","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.6.tgz","fileCount":3,"integrity":"sha512-yxw5+bdYOS5dtTv6hJ88Z7gAtxoEfNBXb1UPG8yF49vW+XYC4kSj9WoQ4lWfBLX8fqRJhEPZtdFxooo7rIWdBw==","signatures":[{"sig":"MEQCIB6U9WuBUCdXhGSyQja7Sbu5/mADtRvUcSyGlxfzyfrZAiBMNl/fLPHAkWyRuFdBQhkdPnZVw9QEVL10+l9Vs0PvkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10307},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"71999dd53388050dc3e0e9e83463bef3568b91c5","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.6_1762522616706_0.33583987251530645","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@3-/gitapi","version":"0.1.7","keywords":["git","api","sync","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.7","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"e2f2b97287bc4340b289a4817742ef9df6700299","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.7.tgz","fileCount":3,"integrity":"sha512-+6mu/2KOOR1arMOP8eGbqcI6kFqnnWvnQ6hTN2FMpekkMNULm9yAxns+r+Fb310usji4BtX4KVQPvuXWRiwqeA==","signatures":[{"sig":"MEYCIQCDWKv8uEsuK6BBPiu4D/mzfEfxbVAUQIb9afPDx/133QIhANA7UK1jDYzNTVa2ntMS/gIyaQllV5Xkg4Qr7Yg9pKw1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10292},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"f3b24d2005b6b21aff400b11a45f8b5b9c9770ee","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","directories":{},"_nodeVersion":"25.1.0","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.7_1762598131138_0.7595607183448241","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@3-/gitapi","version":"0.1.8","keywords":["git","api","sync","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.8","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"3cd6c75dd6d780803a986388c3e0803e62b7f623","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.8.tgz","fileCount":3,"integrity":"sha512-+WrXHGYgYlIEjp4k9/yX/qDKGXvPq0KrnKIhm5kzf8MiY6/Jnelg12BHK388ac088EZ7ozF7RqOe8R/cFSNU5g==","signatures":[{"sig":"MEUCIBFwWEKu+hoWKZWnGxaenkD6yMSmj1tHJXp1AceA4da2AiEA/W6DM8caNlgMMAmhD6eoZi4RqHfDqcXgpjvfk5gMyeM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10315},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"f29443f72116c06506cacd5d76967d266ad5de0f","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.8_1763663854973_0.9966815412954895","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@3-/gitapi","version":"0.1.9","keywords":["git","api","sync","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.9","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"a0bfc36692439c385711a2e949491f4c3b4447bc","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.9.tgz","fileCount":3,"integrity":"sha512-YpNPea0pfv6sW6A/MLpcUOaJ9RrOzAUUR7cJQvsN48Hdf1HSP7P6RsdPHQr7ZOqwC5V5lHbb6mbxptfyLz+kGg==","signatures":[{"sig":"MEUCIQCUQyjYE/hPXbo8LTSRhPPDDdda0C1bLn5HjBq0bdPL2wIgdUe1j/CX2NDb71IxlRN1wU6kq4jnFebuilEQRo33i0U=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10311},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"ada96109e7e812f6713ec9a7218334c621609ab5","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.9_1763663926623_0.8243449448318929","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@3-/gitapi","version":"0.1.10","keywords":["git","api","sync","atomgit","github"],"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","_id":"@3-/gitapi@0.1.10","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","dist":{"shasum":"394359ffad0bf483930f9c643846cb21db4ab137","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.10.tgz","fileCount":2,"integrity":"sha512-tYD6d3GSxva1olZ/lM6hBZD6AdIGDBr+t1gPPYpiiPzhVCo4aTjd8d4T7wCIGhnXlke3CN5VNySliogntAOBYg==","signatures":[{"sig":"MEUCIQCXfUSZdLT/hyeqdASe6h9Fp2SEkYL4CNeXCx0xTk1h+gIgKnuIJZIB+tAdLpsVquRJoNTsGQYwkZhgF0m2EtJ+Dfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8815},"type":"module","exports":{".":"./lib.js","./*":"./*"},"gitHead":"ca8294b9dbe2888819930d9f1096eb4a11130eea","scripts":{},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"repository":{"url":"git+https://gitapi.com/i18n/lib.git","type":"git"},"_npmVersion":"11.6.2","description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","directories":{},"_nodeVersion":"24.11.1","dependencies":{"@3-/int":"^0.1.1","@3-/yml":"^0.1.14","@3-/qwen":"^0.1.5","@3-/mktmp":"^0.1.3","@3-/reset":"^0.1.2","simple-git":"^3.30.0","@3-/pageiter":"^0.1.2"},"_hasShrinkwrap":false,"devDependencies":{},"_npmOperationalInternal":{"tmp":"tmp/gitapi_0.1.10_1763689079356_0.3398293088297719","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@3-/gitapi","version":"0.1.11","description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","keywords":["git","api","sync","atomgit","github"],"repository":{"type":"git","url":"git+https://gitapi.com/i18n/lib.git"},"homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","exports":{".":"./lib.js","./*":"./*"},"devDependencies":{},"scripts":{},"type":"module","dependencies":{"@3-/int":"^0.1.1","@3-/mktmp":"^0.1.3","@3-/pageiter":"^0.1.2","@3-/qwen":"^0.1.5","@3-/reset":"^0.1.2","@3-/yml":"^0.1.14","simple-git":"^3.30.0"},"gitHead":"c271d37dbde5e6894d85e54c70c96638a90f82d2","_id":"@3-/gitapi@0.1.11","_nodeVersion":"24.11.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-863o6Ua1LCmieDapKQB+HiUPTA/1OWKBQ2fWM4N1dOldotocbs9lXVGTomEwnoydBAe7OB9JBegz06Grs7ZE9Q==","shasum":"613dede2a4ebac6fdfa18743e573057de7b7ea98","tarball":"https://registry.npmjs.org/@3-/gitapi/-/gitapi-0.1.11.tgz","fileCount":3,"unpackedSize":10349,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIGR0zyPFYYlDBmiP4l/yEM3shg5L4gFjLnUAfUmaVKMJAiEAl017JxIZiLJsQjtWN7zi9QU1hrvP2puiESTGYWuE1x4="}]},"_npmUser":{"name":"i18n-now","email":"i18n.site@gmail.com"},"directories":{},"maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gitapi_0.1.11_1763689227529_0.5798781627966647"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-07T10:53:29.259Z","modified":"2025-11-21T01:40:27.912Z","0.1.1":"2025-11-07T10:53:29.887Z","0.1.2":"2025-11-07T10:54:50.057Z","0.1.3":"2025-11-07T11:02:33.818Z","0.1.4":"2025-11-07T11:03:54.469Z","0.1.5":"2025-11-07T11:05:07.449Z","0.1.6":"2025-11-07T13:36:56.886Z","0.1.7":"2025-11-08T10:35:31.339Z","0.1.8":"2025-11-20T18:37:35.158Z","0.1.9":"2025-11-20T18:38:46.824Z","0.1.10":"2025-11-21T01:37:59.539Z","0.1.11":"2025-11-21T01:40:27.712Z"},"author":{"name":"i18n.site@gmail.com"},"license":"MulanPSL-2.0","homepage":"https://gitapi.com/i18n/lib/tree/dev/gitapi","keywords":["git","api","sync","atomgit","github"],"repository":{"type":"git","url":"git+https://gitapi.com/i18n/lib.git"},"description":"Git API wrapper for repo synchronization; works with gitsync to sync AtomGit repos to GitHub. / Git API 封装，用于仓库同步；配合 gitsync 将 AtomGit 仓库同步到 GitHub。","maintainers":[{"name":"i18n-now","email":"i18n.site@gmail.com"}],"readme":"[English](#en) | [中文](#zh)\n\n---\n\n<a id=\"en\"></a>\n# @3-/gitapi: Seamless Git API Abstraction\n\nThis project provides a lightweight, unified API wrapper for Git services, designed to work with [gitsync](https://www.npmjs.com/package/@3-/gitsync) to synchronize repositories from AtomGit to GitHub.\n\n## Table of Contents\n\n- [Features](#features)\n- [Usage](#usage)\n- [Design Philosophy](#design-philosophy)\n- [Technology Stack](#technology-stack)\n- [Directory Structure](#directory-structure)\n- [A Little History](#a-little-history)\n\n## Features\n\n- Unified interface for multiple Git providers (currently AtomGit and GitHub).\n- Asynchronous, promise-based operations using native `fetch`.\n- Handles API pagination for listing repositories.\n- Methods for creating repositories, checking branches, and generating Git URLs.\n\n## Usage\n\nInstall the package using bun:\n\n```sh\nbun i @3-/gitapi\n```\n\nThe following example demonstrates how to list repositories from an organization on both AtomGit and GitHub.\n\n```javascript\n#!/usr/bin/env coffee\n\nimport gitapi from '@3-/gitapi'\nconst { GITHUB_TOKEN, ATOMGIT_TOKEN } = process.env;\n\nconst github = gitapi('api.github.com', GITHUB_TOKEN),\n  atomgit = gitapi('api.atomgit.com', ATOMGIT_TOKEN),\n  orgReposLs = async (api, org) => {\n    for await (const i of api.orgRepos(org)) {\n      console.log(api.site, i.full_name)\n    }\n  }\n\nawait orgReposLs(atomgit,'js0')\nawait orgReposLs(github,'js0-site')\n```\n\n## Design Philosophy\n\nThe library is designed as a factory function that, when called with a `site` endpoint and an authentication `token`, returns a client object tailored to that service.\n\n- **Client Factory**: `gitapi(site, token)` initializes the client, setting the base URL and authorization headers for all subsequent requests.\n- **Request Handling**: A generic `req` function manages all `fetch` calls, automatically injecting authorization headers and performing basic status checks.\n- **Pagination**: The `orgRepos` method uses the `@3-/pageiter` library to abstract away the complexity of handling paginated API responses, providing a simple `for...await...of` loop to iterate through all repositories.\n- **Pure Functions**: The library adheres to a functional programming style, exporting pure functions and avoiding classes.\n\n## Technology Stack\n\n- **Language**: CoffeeScript (compiled to modern JavaScript)\n- **Runtime**: Node.js\n- **Package Manager**: Bun\n- **Core Dependencies**:\n  - `@3-/pageiter`: For asynchronous iteration over paginated API results.\n\n## Directory Structure\n\n```\n/\n├── src/lib.coffee       # Main source code\n├── lib/lib.js           # Compiled JavaScript output\n├── test/main.js         # Usage example\n├── package.json         # Project metadata and dependencies\n└── readme/\n    ├── en.md            # This document\n    └── zh.md            # Chinese documentation\n```\n\n## A Little History\n\nThe design of this library echoes a core philosophy within Git itself: the separation of \"porcelain\" from \"plumbing.\" In Git, \"plumbing\" refers to the low-level commands that do the raw work (e.g., `hash-object`, `cat-file`), while \"porcelain\" refers to the user-friendly commands that orchestrate them (e.g., `add`, `commit`).\n\nSimilarly, `@3-/gitapi` acts as a \"porcelain\" layer. It hides the raw \"plumbing\" of direct `fetch` calls, pagination parameters, and authorization headers, providing a clean, high-level interface for common Git API operations. This abstraction simplifies integration with other tools, like `gitsync`, allowing them to focus on their core logic without getting bogged down in the details of API interaction.\n\n---\n\n<a id=\"zh\"></a>\n# @3-/gitapi: 无缝 Git API 抽象\n\n本项目提供轻量、统一的 Git 服务 API 封装，专为配合 [gitsync](https://www.npmjs.com/package/@3-/gitsync) 将 AtomGit 仓库同步到 GitHub 而设计。\n\n## 目录\n\n- [功能](#功能)\n- [使用](#使用)\n- [设计思路](#设计思路)\n- [技术堆栈](#技术堆栈)\n- [目录结构](#目录结构)\n- [相关小故事](#相关小故事)\n\n## 功能\n\n- 为多 Git 平台（目前支持 AtomGit 和 GitHub）提供统一接口。\n- 使用原生 `fetch` 实现异步、基于 Promise 的操作。\n- 自动处理 API 分页，轻松遍历仓库列表。\n- 提供创建仓库、检查分支和生成 Git URL 的方法。\n\n## 使用\n\n通过 bun 安装：\n\n```sh\nbun i @3-/gitapi\n```\n\n以下示例演示如何列出 AtomGit 和 GitHub 上指定组织的所有仓库。\n\n```javascript\n#! /usr/bin/env coffee\n\nimport gitapi from '@3-/gitapi'\nconst { GITHUB_TOKEN, ATOMGIT_TOKEN } = process.env;\n\nconst github = gitapi('api.github.com', GITHUB_TOKEN),\n  atomgit = gitapi('api.atomgit.com', ATOMGIT_TOKEN),\n  orgReposLs = async (api, org) => {\n    for await (const i of api.orgRepos(org)) {\n      console.log(api.site, i.full_name)\n    }\n  }\n\nawait orgReposLs(atomgit,'js0')\nawait orgReposLs(github,'js0-site')\n```\n\n## 设计思路\n\n本库设计为工厂函数，调用时传入 `site` 端点和 `token` 认证信息，返回为该服务定制的客户端对象。\n\n- **客户端工厂**: `gitapi(site, token)` 初始化客户端，为后续所有请求设置基础 URL 和认证头。\n- **请求处理**: 通用 `req` 函数管理所有 `fetch` 调用，自动注入认证头并执行基本的状态检查。\n- **分页处理**: `orgRepos` 方法使用 `@3-/pageiter` 库，将处理 API 分页响应的复杂性抽象掉，通过简单的 `for...await...of` 循环即可遍历所有仓库。\n- **纯函数**: 库遵循函数式编程风格，导出纯函数，避免使用类。\n\n## 技术堆栈\n\n- **语言**: CoffeeScript (编译为现代 JavaScript)\n- **运行时**: Node.js\n- **包管理器**: Bun\n- **核心依赖**:\n  - `@3-/pageiter`: 用于异步遍历分页 API 结果。\n\n## 目录结构\n\n```\n/\n├── src/lib.coffee       # 主要源代码\n├── lib/lib.js           # 编译后的 JavaScript\n├── test/main.js         # 使用示例\n├── package.json         # 项目元数据与依赖\n└── readme/\n    ├── en.md            # 英文文档\n    └── zh.md            # 本文档\n```\n\n## 相关小故事\n\n本库的设计呼应了 Git 自身的核心理念：\"porcelain\"（瓷器）与 \"plumbing\"（管道）的分离。在 Git 中，\"plumbing\" 指执行底层工作的原始命令（如 `hash-object`、`cat-file`），而 \"porcelain\" 则是组织这些底层命令的用户友好型上层命令（如 `add`、`commit`）。\n\n`@3-/gitapi` 扮演了类似 \"porcelain\" 的角色。它隐藏了直接调用 `fetch`、处理分页参数和认证头等 \"plumbing\" 细节，为常见的 Git API 操作提供了简洁的高层接口。这种抽象简化了与其他工具（如 `gitsync`）的集成，使其能专注于核心逻辑，而不必陷入与 API 交互的繁琐细节中。\n\n---\n\n## About\n\nThis project is an open-source component of [i18n.site ⋅ Internationalization Solution](https://i18n.site).\n\n* [i18 : MarkDown Command Line Translation Tool](https://i18n.site/i18)\n\n  The translation perfectly maintains the Markdown format.\n\n  It recognizes file changes and only translates the modified files.\n\n  The translated Markdown content is editable; if you modify the original text and translate it again, manually edited translations will not be overwritten (as long as the original text has not been changed).\n\n* [i18n.site : MarkDown Multi-language Static Site Generator](https://i18n.site/i18n.site)\n\n  Optimized for a better reading experience\n\n## 关于\n\n本项目为 [i18n.site ⋅ 国际化解决方案](https://i18n.site) 的开源组件。\n\n* [i18 :  MarkDown命令行翻译工具](https://i18n.site/i18)\n\n  翻译能够完美保持 Markdown 的格式。能识别文件的修改，仅翻译有变动的文件。\n\n  Markdown 翻译内容可编辑；如果你修改原文并再次机器翻译，手动修改过的翻译不会被覆盖（如果这段原文没有被修改）。\n\n* [i18n.site : MarkDown多语言静态站点生成器](https://i18n.site/i18n.site) 为阅读体验而优化。\n","readmeFilename":"README.md"}