@aigne/afs-did-space 1.12.0-beta.5
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.md +26 -0
- package/README.md +129 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.cjs +11 -0
- package/dist/_virtual/_@oxc-project_runtime@0.108.0/helpers/decorate.mjs +10 -0
- package/dist/_virtual/rolldown_runtime.cjs +29 -0
- package/dist/afs-metadata-context.cjs +20 -0
- package/dist/afs-metadata-context.d.cts +21 -0
- package/dist/afs-metadata-context.d.cts.map +1 -0
- package/dist/afs-metadata-context.d.mts +21 -0
- package/dist/afs-metadata-context.d.mts.map +1 -0
- package/dist/afs-metadata-context.mjs +18 -0
- package/dist/afs-metadata-context.mjs.map +1 -0
- package/dist/blocklet-hook.cjs +180 -0
- package/dist/blocklet-hook.d.cts +29 -0
- package/dist/blocklet-hook.d.cts.map +1 -0
- package/dist/blocklet-hook.d.mts +29 -0
- package/dist/blocklet-hook.d.mts.map +1 -0
- package/dist/blocklet-hook.mjs +178 -0
- package/dist/blocklet-hook.mjs.map +1 -0
- package/dist/changelog-schema.cjs +603 -0
- package/dist/changelog-schema.d.cts +395 -0
- package/dist/changelog-schema.d.cts.map +1 -0
- package/dist/changelog-schema.d.mts +395 -0
- package/dist/changelog-schema.d.mts.map +1 -0
- package/dist/changelog-schema.mjs +570 -0
- package/dist/changelog-schema.mjs.map +1 -0
- package/dist/changelog-write.cjs +80 -0
- package/dist/changelog-write.d.cts +70 -0
- package/dist/changelog-write.d.cts.map +1 -0
- package/dist/changelog-write.d.mts +70 -0
- package/dist/changelog-write.d.mts.map +1 -0
- package/dist/changelog-write.mjs +77 -0
- package/dist/changelog-write.mjs.map +1 -0
- package/dist/cid-byte-cache.cjs +126 -0
- package/dist/cid-byte-cache.d.cts +46 -0
- package/dist/cid-byte-cache.d.cts.map +1 -0
- package/dist/cid-byte-cache.d.mts +47 -0
- package/dist/cid-byte-cache.d.mts.map +1 -0
- package/dist/cid-byte-cache.mjs +125 -0
- package/dist/cid-byte-cache.mjs.map +1 -0
- package/dist/cid.cjs +68 -0
- package/dist/cid.d.cts +22 -0
- package/dist/cid.d.cts.map +1 -0
- package/dist/cid.d.mts +22 -0
- package/dist/cid.d.mts.map +1 -0
- package/dist/cid.mjs +65 -0
- package/dist/cid.mjs.map +1 -0
- package/dist/client.cjs +221 -0
- package/dist/client.d.cts +72 -0
- package/dist/client.d.cts.map +1 -0
- package/dist/client.d.mts +72 -0
- package/dist/client.d.mts.map +1 -0
- package/dist/client.mjs +220 -0
- package/dist/client.mjs.map +1 -0
- package/dist/cloudflare.cjs +510 -0
- package/dist/cloudflare.d.cts +307 -0
- package/dist/cloudflare.d.cts.map +1 -0
- package/dist/cloudflare.d.mts +308 -0
- package/dist/cloudflare.d.mts.map +1 -0
- package/dist/cloudflare.mjs +507 -0
- package/dist/cloudflare.mjs.map +1 -0
- package/dist/ctime-backfill.cjs +272 -0
- package/dist/ctime-backfill.d.cts +169 -0
- package/dist/ctime-backfill.d.cts.map +1 -0
- package/dist/ctime-backfill.d.mts +169 -0
- package/dist/ctime-backfill.d.mts.map +1 -0
- package/dist/ctime-backfill.mjs +267 -0
- package/dist/ctime-backfill.mjs.map +1 -0
- package/dist/d1-gc-queue.cjs +80 -0
- package/dist/d1-gc-queue.d.cts +59 -0
- package/dist/d1-gc-queue.d.cts.map +1 -0
- package/dist/d1-gc-queue.d.mts +59 -0
- package/dist/d1-gc-queue.d.mts.map +1 -0
- package/dist/d1-gc-queue.mjs +81 -0
- package/dist/d1-gc-queue.mjs.map +1 -0
- package/dist/d1-resolve-store.cjs +189 -0
- package/dist/d1-resolve-store.d.cts +93 -0
- package/dist/d1-resolve-store.d.cts.map +1 -0
- package/dist/d1-resolve-store.d.mts +93 -0
- package/dist/d1-resolve-store.d.mts.map +1 -0
- package/dist/d1-resolve-store.mjs +190 -0
- package/dist/d1-resolve-store.mjs.map +1 -0
- package/dist/d1-schema.cjs +361 -0
- package/dist/d1-schema.d.cts +237 -0
- package/dist/d1-schema.d.cts.map +1 -0
- package/dist/d1-schema.d.mts +237 -0
- package/dist/d1-schema.d.mts.map +1 -0
- package/dist/d1-schema.mjs +341 -0
- package/dist/d1-schema.mjs.map +1 -0
- package/dist/d1-share-store.cjs +0 -0
- package/dist/d1-share-store.d.cts +53 -0
- package/dist/d1-share-store.d.cts.map +1 -0
- package/dist/d1-share-store.d.mts +53 -0
- package/dist/d1-share-store.d.mts.map +1 -0
- package/dist/d1-share-store.mjs +0 -0
- package/dist/d1-share-store.mjs.map +1 -0
- package/dist/d1-tree-index.cjs +1098 -0
- package/dist/d1-tree-index.d.cts +203 -0
- package/dist/d1-tree-index.d.cts.map +1 -0
- package/dist/d1-tree-index.d.mts +203 -0
- package/dist/d1-tree-index.d.mts.map +1 -0
- package/dist/d1-tree-index.mjs +1094 -0
- package/dist/d1-tree-index.mjs.map +1 -0
- package/dist/data-backend.cjs +147 -0
- package/dist/data-backend.d.cts +30 -0
- package/dist/data-backend.d.cts.map +1 -0
- package/dist/data-backend.d.mts +30 -0
- package/dist/data-backend.d.mts.map +1 -0
- package/dist/data-backend.mjs +148 -0
- package/dist/data-backend.mjs.map +1 -0
- package/dist/dedup-backfill.cjs +278 -0
- package/dist/dedup-backfill.d.cts +165 -0
- package/dist/dedup-backfill.d.cts.map +1 -0
- package/dist/dedup-backfill.d.mts +165 -0
- package/dist/dedup-backfill.d.mts.map +1 -0
- package/dist/dedup-backfill.mjs +273 -0
- package/dist/dedup-backfill.mjs.map +1 -0
- package/dist/did-space-like.d.cts +2 -0
- package/dist/did-space-like.d.mts +2 -0
- package/dist/did-utils.cjs +44 -0
- package/dist/did-utils.d.cts +25 -0
- package/dist/did-utils.d.cts.map +1 -0
- package/dist/did-utils.d.mts +25 -0
- package/dist/did-utils.d.mts.map +1 -0
- package/dist/did-utils.mjs +43 -0
- package/dist/did-utils.mjs.map +1 -0
- package/dist/dirty-path-queue.cjs +31 -0
- package/dist/dirty-path-queue.d.cts +104 -0
- package/dist/dirty-path-queue.d.cts.map +1 -0
- package/dist/dirty-path-queue.d.mts +104 -0
- package/dist/dirty-path-queue.d.mts.map +1 -0
- package/dist/dirty-path-queue.mjs +31 -0
- package/dist/dirty-path-queue.mjs.map +1 -0
- package/dist/dirty-path-schema.cjs +142 -0
- package/dist/dirty-path-schema.d.cts +90 -0
- package/dist/dirty-path-schema.d.cts.map +1 -0
- package/dist/dirty-path-schema.d.mts +90 -0
- package/dist/dirty-path-schema.d.mts.map +1 -0
- package/dist/dirty-path-schema.mjs +136 -0
- package/dist/dirty-path-schema.mjs.map +1 -0
- package/dist/download-actions.cjs +43 -0
- package/dist/download-actions.mjs +40 -0
- package/dist/download-actions.mjs.map +1 -0
- package/dist/fs-object-store.cjs +153 -0
- package/dist/fs-object-store.d.cts +21 -0
- package/dist/fs-object-store.d.cts.map +1 -0
- package/dist/fs-object-store.d.mts +22 -0
- package/dist/fs-object-store.d.mts.map +1 -0
- package/dist/fs-object-store.mjs +153 -0
- package/dist/fs-object-store.mjs.map +1 -0
- package/dist/gc-queue.d.cts +43 -0
- package/dist/gc-queue.d.cts.map +1 -0
- package/dist/gc-queue.d.mts +43 -0
- package/dist/gc-queue.d.mts.map +1 -0
- package/dist/index.cjs +2712 -0
- package/dist/index.d.cts +504 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +505 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2537 -0
- package/dist/index.mjs.map +1 -0
- package/dist/inline-content-migration.cjs +212 -0
- package/dist/inline-content-migration.d.cts +110 -0
- package/dist/inline-content-migration.d.cts.map +1 -0
- package/dist/inline-content-migration.d.mts +111 -0
- package/dist/inline-content-migration.d.mts.map +1 -0
- package/dist/inline-content-migration.mjs +207 -0
- package/dist/inline-content-migration.mjs.map +1 -0
- package/dist/inline-content.cjs +145 -0
- package/dist/inline-content.d.cts +98 -0
- package/dist/inline-content.d.cts.map +1 -0
- package/dist/inline-content.d.mts +98 -0
- package/dist/inline-content.d.mts.map +1 -0
- package/dist/inline-content.mjs +137 -0
- package/dist/inline-content.mjs.map +1 -0
- package/dist/local-changelog.cjs +241 -0
- package/dist/local-changelog.d.cts +119 -0
- package/dist/local-changelog.d.cts.map +1 -0
- package/dist/local-changelog.d.mts +119 -0
- package/dist/local-changelog.d.mts.map +1 -0
- package/dist/local-changelog.mjs +240 -0
- package/dist/local-changelog.mjs.map +1 -0
- package/dist/local.cjs +435 -0
- package/dist/local.d.cts +254 -0
- package/dist/local.d.cts.map +1 -0
- package/dist/local.d.mts +254 -0
- package/dist/local.d.mts.map +1 -0
- package/dist/local.mjs +427 -0
- package/dist/local.mjs.map +1 -0
- package/dist/memory-gc-queue.cjs +36 -0
- package/dist/memory-gc-queue.d.cts +22 -0
- package/dist/memory-gc-queue.d.cts.map +1 -0
- package/dist/memory-gc-queue.d.mts +22 -0
- package/dist/memory-gc-queue.d.mts.map +1 -0
- package/dist/memory-gc-queue.mjs +36 -0
- package/dist/memory-gc-queue.mjs.map +1 -0
- package/dist/memory-tree-index.cjs +734 -0
- package/dist/memory-tree-index.d.cts +159 -0
- package/dist/memory-tree-index.d.cts.map +1 -0
- package/dist/memory-tree-index.d.mts +159 -0
- package/dist/memory-tree-index.d.mts.map +1 -0
- package/dist/memory-tree-index.mjs +735 -0
- package/dist/memory-tree-index.mjs.map +1 -0
- package/dist/metadata-db.cjs +562 -0
- package/dist/metadata-db.d.cts +102 -0
- package/dist/metadata-db.d.cts.map +1 -0
- package/dist/metadata-db.d.mts +102 -0
- package/dist/metadata-db.d.mts.map +1 -0
- package/dist/metadata-db.mjs +562 -0
- package/dist/metadata-db.mjs.map +1 -0
- package/dist/mime-utils.cjs +2 -0
- package/dist/mime-utils.d.cts +2 -0
- package/dist/mime-utils.d.mts +2 -0
- package/dist/mime-utils.mjs +3 -0
- package/dist/object-key.cjs +41 -0
- package/dist/object-key.d.cts +25 -0
- package/dist/object-key.d.cts.map +1 -0
- package/dist/object-key.d.mts +25 -0
- package/dist/object-key.d.mts.map +1 -0
- package/dist/object-key.mjs +40 -0
- package/dist/object-key.mjs.map +1 -0
- package/dist/packages/session/dist/index.cjs +788 -0
- package/dist/packages/session/dist/index.mjs +782 -0
- package/dist/packages/session/dist/index.mjs.map +1 -0
- package/dist/platform/r2/dist/types.d.cts +49 -0
- package/dist/platform/r2/dist/types.d.cts.map +1 -0
- package/dist/prefix-range.cjs +33 -0
- package/dist/prefix-range.d.cts +29 -0
- package/dist/prefix-range.d.cts.map +1 -0
- package/dist/prefix-range.d.mts +29 -0
- package/dist/prefix-range.d.mts.map +1 -0
- package/dist/prefix-range.mjs +33 -0
- package/dist/prefix-range.mjs.map +1 -0
- package/dist/prefixed-tree-index.cjs +238 -0
- package/dist/prefixed-tree-index.d.cts +85 -0
- package/dist/prefixed-tree-index.d.cts.map +1 -0
- package/dist/prefixed-tree-index.d.mts +85 -0
- package/dist/prefixed-tree-index.d.mts.map +1 -0
- package/dist/prefixed-tree-index.mjs +239 -0
- package/dist/prefixed-tree-index.mjs.map +1 -0
- package/dist/presign-signer.cjs +7 -0
- package/dist/presign-signer.d.cts +99 -0
- package/dist/presign-signer.d.cts.map +1 -0
- package/dist/presign-signer.d.mts +99 -0
- package/dist/presign-signer.d.mts.map +1 -0
- package/dist/presign-signer.mjs +7 -0
- package/dist/presign-signer.mjs.map +1 -0
- package/dist/providers/platform/r2/dist/index.d.mts +3 -0
- package/dist/providers/platform/r2/dist/types.d.mts +49 -0
- package/dist/providers/platform/r2/dist/types.d.mts.map +1 -0
- package/dist/reconcile.cjs +184 -0
- package/dist/reconcile.d.cts +26 -0
- package/dist/reconcile.d.cts.map +1 -0
- package/dist/reconcile.d.mts +26 -0
- package/dist/reconcile.d.mts.map +1 -0
- package/dist/reconcile.mjs +184 -0
- package/dist/reconcile.mjs.map +1 -0
- package/dist/reference-check.cjs +49 -0
- package/dist/reference-check.d.cts +10 -0
- package/dist/reference-check.d.cts.map +1 -0
- package/dist/reference-check.d.mts +10 -0
- package/dist/reference-check.d.mts.map +1 -0
- package/dist/reference-check.mjs +48 -0
- package/dist/reference-check.mjs.map +1 -0
- package/dist/remote-afs.cjs +681 -0
- package/dist/remote-afs.d.cts +236 -0
- package/dist/remote-afs.d.cts.map +1 -0
- package/dist/remote-afs.d.mts +236 -0
- package/dist/remote-afs.d.mts.map +1 -0
- package/dist/remote-afs.mjs +676 -0
- package/dist/remote-afs.mjs.map +1 -0
- package/dist/rename-guard.cjs +18 -0
- package/dist/rename-guard.mjs +18 -0
- package/dist/rename-guard.mjs.map +1 -0
- package/dist/resolve.cjs +260 -0
- package/dist/resolve.d.cts +113 -0
- package/dist/resolve.d.cts.map +1 -0
- package/dist/resolve.d.mts +113 -0
- package/dist/resolve.d.mts.map +1 -0
- package/dist/resolve.mjs +260 -0
- package/dist/resolve.mjs.map +1 -0
- package/dist/rsync-content.cjs +33 -0
- package/dist/rsync-content.mjs +33 -0
- package/dist/rsync-content.mjs.map +1 -0
- package/dist/rsync.cjs +400 -0
- package/dist/rsync.d.cts +157 -0
- package/dist/rsync.d.cts.map +1 -0
- package/dist/rsync.d.mts +157 -0
- package/dist/rsync.d.mts.map +1 -0
- package/dist/rsync.mjs +397 -0
- package/dist/rsync.mjs.map +1 -0
- package/dist/run-gc.cjs +57 -0
- package/dist/run-gc.d.cts +40 -0
- package/dist/run-gc.d.cts.map +1 -0
- package/dist/run-gc.d.mts +41 -0
- package/dist/run-gc.d.mts.map +1 -0
- package/dist/run-gc.mjs +57 -0
- package/dist/run-gc.mjs.map +1 -0
- package/dist/scope-id.cjs +70 -0
- package/dist/scope-id.d.cts +35 -0
- package/dist/scope-id.d.cts.map +1 -0
- package/dist/scope-id.d.mts +35 -0
- package/dist/scope-id.d.mts.map +1 -0
- package/dist/scope-id.mjs +68 -0
- package/dist/scope-id.mjs.map +1 -0
- package/dist/scope-migration-node.cjs +172 -0
- package/dist/scope-migration-node.d.cts +44 -0
- package/dist/scope-migration-node.d.cts.map +1 -0
- package/dist/scope-migration-node.d.mts +44 -0
- package/dist/scope-migration-node.d.mts.map +1 -0
- package/dist/scope-migration-node.mjs +171 -0
- package/dist/scope-migration-node.mjs.map +1 -0
- package/dist/scope-migration.cjs +155 -0
- package/dist/scope-migration.d.cts +65 -0
- package/dist/scope-migration.d.cts.map +1 -0
- package/dist/scope-migration.d.mts +65 -0
- package/dist/scope-migration.d.mts.map +1 -0
- package/dist/scope-migration.mjs +154 -0
- package/dist/scope-migration.mjs.map +1 -0
- package/dist/share-declaration.cjs +225 -0
- package/dist/share-declaration.d.cts +30 -0
- package/dist/share-declaration.d.cts.map +1 -0
- package/dist/share-declaration.d.mts +32 -0
- package/dist/share-declaration.d.mts.map +1 -0
- package/dist/share-declaration.mjs +221 -0
- package/dist/share-declaration.mjs.map +1 -0
- package/dist/share-hook.cjs +63 -0
- package/dist/share-hook.mjs +62 -0
- package/dist/share-hook.mjs.map +1 -0
- package/dist/share-resolve.cjs +176 -0
- package/dist/share-resolve.d.cts +36 -0
- package/dist/share-resolve.d.cts.map +1 -0
- package/dist/share-resolve.d.mts +36 -0
- package/dist/share-resolve.d.mts.map +1 -0
- package/dist/share-resolve.mjs +177 -0
- package/dist/share-resolve.mjs.map +1 -0
- package/dist/share-serve.cjs +145 -0
- package/dist/share-serve.d.cts +30 -0
- package/dist/share-serve.d.cts.map +1 -0
- package/dist/share-serve.d.mts +30 -0
- package/dist/share-serve.d.mts.map +1 -0
- package/dist/share-serve.mjs +144 -0
- package/dist/share-serve.mjs.map +1 -0
- package/dist/share-store.cjs +25 -0
- package/dist/share-store.d.cts +65 -0
- package/dist/share-store.d.cts.map +1 -0
- package/dist/share-store.d.mts +65 -0
- package/dist/share-store.d.mts.map +1 -0
- package/dist/share-store.mjs +25 -0
- package/dist/share-store.mjs.map +1 -0
- package/dist/share-virtual-path.cjs +102 -0
- package/dist/share-virtual-path.mjs +101 -0
- package/dist/share-virtual-path.mjs.map +1 -0
- package/dist/space-resolver.cjs +54 -0
- package/dist/space-resolver.d.cts +34 -0
- package/dist/space-resolver.d.cts.map +1 -0
- package/dist/space-resolver.d.mts +34 -0
- package/dist/space-resolver.d.mts.map +1 -0
- package/dist/space-resolver.mjs +55 -0
- package/dist/space-resolver.mjs.map +1 -0
- package/dist/sqlite-gc-queue.cjs +51 -0
- package/dist/sqlite-gc-queue.d.cts +22 -0
- package/dist/sqlite-gc-queue.d.cts.map +1 -0
- package/dist/sqlite-gc-queue.d.mts +22 -0
- package/dist/sqlite-gc-queue.d.mts.map +1 -0
- package/dist/sqlite-gc-queue.mjs +52 -0
- package/dist/sqlite-gc-queue.mjs.map +1 -0
- package/dist/sqlite-resolve-store.cjs +163 -0
- package/dist/sqlite-resolve-store.d.cts +50 -0
- package/dist/sqlite-resolve-store.d.cts.map +1 -0
- package/dist/sqlite-resolve-store.d.mts +50 -0
- package/dist/sqlite-resolve-store.d.mts.map +1 -0
- package/dist/sqlite-resolve-store.mjs +164 -0
- package/dist/sqlite-resolve-store.mjs.map +1 -0
- package/dist/sqlite-share-store.cjs +157 -0
- package/dist/sqlite-share-store.d.cts +31 -0
- package/dist/sqlite-share-store.d.cts.map +1 -0
- package/dist/sqlite-share-store.d.mts +31 -0
- package/dist/sqlite-share-store.d.mts.map +1 -0
- package/dist/sqlite-share-store.mjs +157 -0
- package/dist/sqlite-share-store.mjs.map +1 -0
- package/dist/sqlite-tree-index.cjs +901 -0
- package/dist/sqlite-tree-index.d.cts +107 -0
- package/dist/sqlite-tree-index.d.cts.map +1 -0
- package/dist/sqlite-tree-index.d.mts +107 -0
- package/dist/sqlite-tree-index.d.mts.map +1 -0
- package/dist/sqlite-tree-index.mjs +902 -0
- package/dist/sqlite-tree-index.mjs.map +1 -0
- package/dist/sync-engine.cjs +1324 -0
- package/dist/sync-engine.d.cts +473 -0
- package/dist/sync-engine.d.cts.map +1 -0
- package/dist/sync-engine.d.mts +473 -0
- package/dist/sync-engine.d.mts.map +1 -0
- package/dist/sync-engine.mjs +1315 -0
- package/dist/sync-engine.mjs.map +1 -0
- package/dist/sync-state.cjs +303 -0
- package/dist/sync-state.d.cts +224 -0
- package/dist/sync-state.d.cts.map +1 -0
- package/dist/sync-state.d.mts +224 -0
- package/dist/sync-state.d.mts.map +1 -0
- package/dist/sync-state.mjs +297 -0
- package/dist/sync-state.mjs.map +1 -0
- package/dist/timestamp.cjs +92 -0
- package/dist/timestamp.mjs +91 -0
- package/dist/timestamp.mjs.map +1 -0
- package/dist/transports/http.cjs +54 -0
- package/dist/transports/http.d.cts +26 -0
- package/dist/transports/http.d.cts.map +1 -0
- package/dist/transports/http.d.mts +26 -0
- package/dist/transports/http.d.mts.map +1 -0
- package/dist/transports/http.mjs +54 -0
- package/dist/transports/http.mjs.map +1 -0
- package/dist/transports/static.cjs +55 -0
- package/dist/transports/static.d.cts +28 -0
- package/dist/transports/static.d.cts.map +1 -0
- package/dist/transports/static.d.mts +28 -0
- package/dist/transports/static.d.mts.map +1 -0
- package/dist/transports/static.mjs +55 -0
- package/dist/transports/static.mjs.map +1 -0
- package/dist/transports/types.cjs +13 -0
- package/dist/transports/types.d.cts +72 -0
- package/dist/transports/types.d.cts.map +1 -0
- package/dist/transports/types.d.mts +72 -0
- package/dist/transports/types.d.mts.map +1 -0
- package/dist/transports/types.mjs +13 -0
- package/dist/transports/types.mjs.map +1 -0
- package/dist/transports/ws.cjs +207 -0
- package/dist/transports/ws.d.cts +47 -0
- package/dist/transports/ws.d.cts.map +1 -0
- package/dist/transports/ws.d.mts +47 -0
- package/dist/transports/ws.d.mts.map +1 -0
- package/dist/transports/ws.mjs +206 -0
- package/dist/transports/ws.mjs.map +1 -0
- package/dist/tree-index.cjs +333 -0
- package/dist/tree-index.d.cts +524 -0
- package/dist/tree-index.d.cts.map +1 -0
- package/dist/tree-index.d.mts +524 -0
- package/dist/tree-index.d.mts.map +1 -0
- package/dist/tree-index.mjs +322 -0
- package/dist/tree-index.mjs.map +1 -0
- package/dist/tree-query.cjs +655 -0
- package/dist/tree-query.d.cts +70 -0
- package/dist/tree-query.d.cts.map +1 -0
- package/dist/tree-query.d.mts +70 -0
- package/dist/tree-query.d.mts.map +1 -0
- package/dist/tree-query.mjs +648 -0
- package/dist/tree-query.mjs.map +1 -0
- package/dist/upload-actions.cjs +97 -0
- package/dist/upload-actions.d.cts +19 -0
- package/dist/upload-actions.d.cts.map +1 -0
- package/dist/upload-actions.d.mts +21 -0
- package/dist/upload-actions.d.mts.map +1 -0
- package/dist/upload-actions.mjs +90 -0
- package/dist/upload-actions.mjs.map +1 -0
- package/dist/upload-session-store.cjs +185 -0
- package/dist/upload-session-store.d.cts +99 -0
- package/dist/upload-session-store.d.cts.map +1 -0
- package/dist/upload-session-store.d.mts +99 -0
- package/dist/upload-session-store.d.mts.map +1 -0
- package/dist/upload-session-store.mjs +184 -0
- package/dist/upload-session-store.mjs.map +1 -0
- package/dist/url-normalize.cjs +61 -0
- package/dist/url-normalize.d.cts +33 -0
- package/dist/url-normalize.d.cts.map +1 -0
- package/dist/url-normalize.d.mts +33 -0
- package/dist/url-normalize.d.mts.map +1 -0
- package/dist/url-normalize.mjs +61 -0
- package/dist/url-normalize.mjs.map +1 -0
- package/dist/versioned-content-backends.cjs +155 -0
- package/dist/versioned-content-backends.d.cts +49 -0
- package/dist/versioned-content-backends.d.cts.map +1 -0
- package/dist/versioned-content-backends.d.mts +49 -0
- package/dist/versioned-content-backends.d.mts.map +1 -0
- package/dist/versioned-content-backends.mjs +154 -0
- package/dist/versioned-content-backends.mjs.map +1 -0
- package/dist/versioned-content-index.cjs +102 -0
- package/dist/versioned-content-index.d.cts +46 -0
- package/dist/versioned-content-index.d.cts.map +1 -0
- package/dist/versioned-content-index.d.mts +46 -0
- package/dist/versioned-content-index.d.mts.map +1 -0
- package/dist/versioned-content-index.mjs +103 -0
- package/dist/versioned-content-index.mjs.map +1 -0
- package/dist/versioned-content-store.cjs +121 -0
- package/dist/versioned-content-store.d.cts +90 -0
- package/dist/versioned-content-store.d.cts.map +1 -0
- package/dist/versioned-content-store.d.mts +90 -0
- package/dist/versioned-content-store.d.mts.map +1 -0
- package/dist/versioned-content-store.mjs +122 -0
- package/dist/versioned-content-store.mjs.map +1 -0
- package/dist/versioned-scope.cjs +39 -0
- package/dist/versioned-scope.d.cts +57 -0
- package/dist/versioned-scope.d.cts.map +1 -0
- package/dist/versioned-scope.d.mts +57 -0
- package/dist/versioned-scope.d.mts.map +1 -0
- package/dist/versioned-scope.mjs +37 -0
- package/dist/versioned-scope.mjs.map +1 -0
- package/migrations/0001_tree_entries.sql +17 -0
- package/migrations/0002_resolve_entries.sql +7 -0
- package/migrations/0003_entries_v2.sql +38 -0
- package/migrations/0004_gc_queue.sql +5 -0
- package/migrations/0006_resolve_enhance.sql +14 -0
- package/migrations/0007_resolve_created_at.sql +10 -0
- package/migrations/0008_changelog.sql +34 -0
- package/migrations/0009_device_sync_state.sql +29 -0
- package/migrations/0010_scope_meta.sql +33 -0
- package/migrations/0011_shares.sql +25 -0
- package/migrations/0012_scope_meta_file_count.sql +41 -0
- package/migrations/0013_scope_meta_total_bytes.sql +47 -0
- package/migrations/0014_rename_tables.sql +62 -0
- package/package.json +102 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { AFSBatchDeleteEntry, AFSBatchWriteEntry, AFSDeleteOptions, AFSDeleteResult, AFSListOptions, AFSListResult, AFSReadResult, AFSWriteEntryPayload, AFSWriteResult } from "@aigne/afs";
|
|
2
|
+
|
|
3
|
+
//#region src/remote-afs.d.ts
|
|
4
|
+
/** Per-entry batch result restored from a wire `results[i]` (single-op iso). */
|
|
5
|
+
interface RpcBatchEntryResult {
|
|
6
|
+
path: string;
|
|
7
|
+
success: boolean;
|
|
8
|
+
/** Wire `status` verbatim (200/404/409/503/…). */
|
|
9
|
+
status: number;
|
|
10
|
+
data?: Record<string, unknown>;
|
|
11
|
+
error?: string;
|
|
12
|
+
code?: string;
|
|
13
|
+
/** Soft miss for `optional: true` batchRead entries. */
|
|
14
|
+
missing?: boolean;
|
|
15
|
+
/** Conflict triple — same fields `AFSConflictError` carries. */
|
|
16
|
+
conflict?: {
|
|
17
|
+
currentCid: string | null;
|
|
18
|
+
currentMtime: number | null;
|
|
19
|
+
currentDeviceId: string | null;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
interface RpcBatchResult {
|
|
23
|
+
results: RpcBatchEntryResult[];
|
|
24
|
+
succeeded: number;
|
|
25
|
+
failed: number;
|
|
26
|
+
}
|
|
27
|
+
/** Thrown when the server does not support the batch wire ops (old daemon). */
|
|
28
|
+
declare class BatchUnsupportedError extends Error {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Envelope-level BATCH_OVER_BUDGET / PAYLOAD_TOO_LARGE — zero entries
|
|
33
|
+
* executed; the engine halves the chunk and retries (design §7.3). MUST NOT
|
|
34
|
+
* trip the capability-fallback memory.
|
|
35
|
+
*/
|
|
36
|
+
declare class BatchOverBudgetError extends Error {
|
|
37
|
+
constructor(message: string);
|
|
38
|
+
}
|
|
39
|
+
interface RpcUserSpaceAFSOptions {
|
|
40
|
+
/** Base URL of the arc daemon / worker (e.g. "http://127.0.0.1:4900"). */
|
|
41
|
+
baseUrl: string;
|
|
42
|
+
/** Bearer token. */
|
|
43
|
+
token: string;
|
|
44
|
+
/** Envelope blocklet (the app whose /user fragment is the sync target). */
|
|
45
|
+
blocklet: string;
|
|
46
|
+
/** Optional envelope sessionId. */
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
/** Extra headers (test seams, tracing). Never logged. */
|
|
49
|
+
extraHeaders?: Record<string, string>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* SyncCloudAFS over the afs-rpc wire (`POST /api/afs/rpc`) — the transport
|
|
53
|
+
* the production daemon/worker actually serve (the legacy `/api/space` REST
|
|
54
|
+
* server is gone; `RemoteUserSpaceAFS` above survives only for the
|
|
55
|
+
* export/import CLI against legacy hosts).
|
|
56
|
+
*
|
|
57
|
+
* Sync paths are fragment-root-relative; the wire allowlist admits only
|
|
58
|
+
* `/user/**` mutations, so every path is mapped through `/user` on the way
|
|
59
|
+
* out and stripped on the way back.
|
|
60
|
+
*
|
|
61
|
+
* Batch (P4): `batchWrite`/`batchDelete`/`batchRead` send one wire envelope
|
|
62
|
+
* each (wire-contract §9) and restore per-entry results to the single-op
|
|
63
|
+
* error types (`AFSConflictError` with the triple, `BATCH_TAIL_SKIPPED`
|
|
64
|
+
* passthrough). Capability fallback: the FIRST envelope answered with the
|
|
65
|
+
* old server's exact `Unsupported op 'batch…'` 400 marks this INSTANCE as
|
|
66
|
+
* batch-unsupported (`supportsBatch === false`) and throws
|
|
67
|
+
* {@link BatchUnsupportedError}; the engine then stays on the single-op
|
|
68
|
+
* path for the rest of the instance's life. Any other 400 (e.g.
|
|
69
|
+
* BATCH_OVER_BUDGET) does NOT trip the memory.
|
|
70
|
+
*/
|
|
71
|
+
declare class RpcUserSpaceAFS {
|
|
72
|
+
readonly name = "rpc-user-space";
|
|
73
|
+
private baseUrl;
|
|
74
|
+
private token;
|
|
75
|
+
private blocklet;
|
|
76
|
+
private sessionId?;
|
|
77
|
+
private extraHeaders;
|
|
78
|
+
/** null = unknown (no batch envelope sent yet); set on first evidence. */
|
|
79
|
+
private batchSupported;
|
|
80
|
+
constructor(options: RpcUserSpaceAFSOptions);
|
|
81
|
+
/** Instance-scoped capability memory (per-server, design §7.1). */
|
|
82
|
+
get supportsBatch(): boolean | null;
|
|
83
|
+
private wirePath;
|
|
84
|
+
private stripUser;
|
|
85
|
+
private rpc;
|
|
86
|
+
/** Map a non-OK single-op wire response onto the AFS error types. */
|
|
87
|
+
private throwWireError;
|
|
88
|
+
/**
|
|
89
|
+
* 409 → AFSConflictError with the triple. Keyed on `code: "AFS_CONFLICT"`
|
|
90
|
+
* OR triple-field presence — NEVER the legacy `error === "if_match_failed"`
|
|
91
|
+
* string (the T4.1 存量 bug: the wire sends the stable code, see
|
|
92
|
+
* afs-rpc-wire.ts WIRE_ERROR_CODES.conflict; Swift's throwConflict already
|
|
93
|
+
* keys on the code).
|
|
94
|
+
*/
|
|
95
|
+
private throwConflict;
|
|
96
|
+
list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
|
|
97
|
+
read(path: string): Promise<AFSReadResult>;
|
|
98
|
+
write(path: string, payload: AFSWriteEntryPayload): Promise<AFSWriteResult>;
|
|
99
|
+
delete(path: string, opts?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
100
|
+
/** Detect the old server's exact "unsupported batch op" 400 (design T4.2):
|
|
101
|
+
* ONLY this text trips the per-instance fallback memory. */
|
|
102
|
+
private checkBatchUnsupported;
|
|
103
|
+
private restoreBatchResults;
|
|
104
|
+
/**
|
|
105
|
+
* One wire envelope per call — entries in the CORE batch shape
|
|
106
|
+
* (`AFSBatchWriteEntry`: `content.content` bytes + `options.ifMatch` /
|
|
107
|
+
* `options.meta` provenance), paths fragment-relative.
|
|
108
|
+
*/
|
|
109
|
+
batchWrite(entries: AFSBatchWriteEntry[]): Promise<RpcBatchResult>;
|
|
110
|
+
/** Core-shaped delete entries (`options.meta.{ifMatch,deviceId,mtime}`). */
|
|
111
|
+
batchDelete(entries: AFSBatchDeleteEntry[]): Promise<RpcBatchResult>;
|
|
112
|
+
/** Entries are absolute wire paths already (e.g. "/.objects/{cid}" reads). */
|
|
113
|
+
batchRead(entries: Array<{
|
|
114
|
+
path: string;
|
|
115
|
+
optional?: boolean;
|
|
116
|
+
}>): Promise<RpcBatchResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Probe whether the server's `/user` space advertises grant capability
|
|
119
|
+
* (P2 T2.5). Reads the `.actions` catalogue and checks the prepare-upload
|
|
120
|
+
* entry's `meta.grantCapability`. `false` on Node (fallback-only) or an old
|
|
121
|
+
* server with no upload actions → the engine stays on batchWrite.
|
|
122
|
+
*/
|
|
123
|
+
uploadGrantCapability(): Promise<boolean>;
|
|
124
|
+
/** Run a `/user/.actions/<name>` exec. Throws `BatchUnsupportedError` when the
|
|
125
|
+
* server lacks the action (old server) so the engine falls back. */
|
|
126
|
+
private execAction;
|
|
127
|
+
prepareUpload(entries: PrepareUploadEntryInput[]): Promise<PrepareUploadResult>;
|
|
128
|
+
commitUpload(sessionId: string, entries: CommitUploadEntryInput[]): Promise<RpcBatchResult>;
|
|
129
|
+
/** Abort a prepared session (staged objects → GC). No TS engine call site yet
|
|
130
|
+
* — the engine bails via BatchUnsupportedError on grant loss; exposed for
|
|
131
|
+
* protocol parity (Swift mirror) + a future P4 abort-on-timeout path. */
|
|
132
|
+
abortUpload(sessionId: string): Promise<void>;
|
|
133
|
+
/** Out-of-band PUT of object bytes via a presigned grant. Returns the HTTP
|
|
134
|
+
* status (commit-after-200: the engine only commits entries that got 200). */
|
|
135
|
+
uploadObject(grant: UploadGrant, bytes: Uint8Array): Promise<number>;
|
|
136
|
+
/**
|
|
137
|
+
* Probe whether the server's `/user` space advertises GET-grant capability
|
|
138
|
+
* (P2 T2.4). Reads the `.actions` catalogue and checks the prepare-download
|
|
139
|
+
* entry's INDEPENDENT `meta.downloadGrantCapability` (NOT the upload
|
|
140
|
+
* `grantCapability`). `false` on Node (fallback-only) or an old server → the
|
|
141
|
+
* engine stays on batchRead.
|
|
142
|
+
*/
|
|
143
|
+
downloadGrantCapability(): Promise<boolean>;
|
|
144
|
+
/** Run `prepare-download` — mints GET grants for the referenced cids. Throws
|
|
145
|
+
* `BatchUnsupportedError` when the server lacks the action (old server). */
|
|
146
|
+
prepareDownload(entries: PrepareDownloadEntryInput[]): Promise<PrepareDownloadResult>;
|
|
147
|
+
/**
|
|
148
|
+
* Out-of-band GET of object bytes via a presigned grant (content leaves R2
|
|
149
|
+
* directly — never through the Worker / base64). Returns the raw bytes on
|
|
150
|
+
* 200. A 401/403 means the grant was rejected (token lacks GetObject / bad
|
|
151
|
+
* signature) → throws {@link DownloadForbiddenError} so the engine flips the
|
|
152
|
+
* whole session to batchRead (runtime fallback-on-403, §7.3). Any other
|
|
153
|
+
* non-2xx (404 dangling / 5xx) throws a generic Error — the engine leaves the
|
|
154
|
+
* cid unfilled so the existing missing-object path handles it.
|
|
155
|
+
*/
|
|
156
|
+
downloadObject(grant: DownloadGrant): Promise<Uint8Array>;
|
|
157
|
+
}
|
|
158
|
+
/** A minted presigned-PUT grant (mirrors the provider's PresignedPut). */
|
|
159
|
+
interface UploadGrant {
|
|
160
|
+
kind: "presigned-put";
|
|
161
|
+
url: string;
|
|
162
|
+
method: "PUT";
|
|
163
|
+
signedHeaders: Record<string, string>;
|
|
164
|
+
expiresAt: string;
|
|
165
|
+
}
|
|
166
|
+
interface PrepareUploadEntryInput {
|
|
167
|
+
path: string;
|
|
168
|
+
cid: string;
|
|
169
|
+
size: number;
|
|
170
|
+
/**
|
|
171
|
+
* Path-detected mime (the changelog carries none): drives the server's
|
|
172
|
+
* `treeEntry.mimeType` AND the text-mime gate for the inline copy a matching
|
|
173
|
+
* commit entry carries (inline-content-commit §5.3). Belongs on prepare so
|
|
174
|
+
* the session persists it before commit.
|
|
175
|
+
*/
|
|
176
|
+
mimeType?: string;
|
|
177
|
+
ifMatch?: string;
|
|
178
|
+
deviceId?: string;
|
|
179
|
+
mtime?: number;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Commit entries are prepare entries PLUS an optional cid-verified inline text
|
|
183
|
+
* copy of the bytes (inline-content-commit §5.1/§5.3). Split from
|
|
184
|
+
* `PrepareUploadEntryInput` so the 2KB×N content rides ONLY the commit leg, not
|
|
185
|
+
* prepare (the grant-signing step has no use for it). The server text-mime-gates
|
|
186
|
+
* + digest-pre-verifies the copy before storing it.
|
|
187
|
+
*/
|
|
188
|
+
interface CommitUploadEntryInput extends PrepareUploadEntryInput {
|
|
189
|
+
content?: string;
|
|
190
|
+
/**
|
|
191
|
+
* Application metadata (did-space-metadata G2): app fields (e.g. createdAt)
|
|
192
|
+
* the commit persists to `entries.metadata`. The server strips
|
|
193
|
+
* provider-reserved keys + caps the size; not part of the digest (it is
|
|
194
|
+
* application data, not bytes).
|
|
195
|
+
*/
|
|
196
|
+
metadata?: Record<string, unknown>;
|
|
197
|
+
}
|
|
198
|
+
interface PreparedUploadEntry {
|
|
199
|
+
path: string;
|
|
200
|
+
cid: string;
|
|
201
|
+
status: string;
|
|
202
|
+
objectKey: string;
|
|
203
|
+
checksumSha256: string;
|
|
204
|
+
grant: UploadGrant | null;
|
|
205
|
+
}
|
|
206
|
+
interface PrepareUploadResult {
|
|
207
|
+
sessionId: string;
|
|
208
|
+
expiresAt: string;
|
|
209
|
+
entries: PreparedUploadEntry[];
|
|
210
|
+
}
|
|
211
|
+
/** A minted presigned-GET grant (mirrors the provider's PresignedGet). */
|
|
212
|
+
interface DownloadGrant {
|
|
213
|
+
kind: "presigned-get";
|
|
214
|
+
url: string;
|
|
215
|
+
method: "GET";
|
|
216
|
+
signedHeaders: Record<string, string>;
|
|
217
|
+
expiresAt: string;
|
|
218
|
+
}
|
|
219
|
+
interface PrepareDownloadEntryInput {
|
|
220
|
+
cid: string;
|
|
221
|
+
/** Error/log context only — never participates in authorization (§7.2). */
|
|
222
|
+
path?: string;
|
|
223
|
+
}
|
|
224
|
+
interface PreparedDownloadEntry {
|
|
225
|
+
cid: string;
|
|
226
|
+
/** "ok" | "forbidden" | "invalid" (partial-success, §7.2). */
|
|
227
|
+
status: string;
|
|
228
|
+
objectKey?: string;
|
|
229
|
+
grant?: DownloadGrant | null;
|
|
230
|
+
}
|
|
231
|
+
interface PrepareDownloadResult {
|
|
232
|
+
entries: PreparedDownloadEntry[];
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
export { BatchOverBudgetError, BatchUnsupportedError, CommitUploadEntryInput, DownloadGrant, PrepareDownloadEntryInput, PrepareDownloadResult, PrepareUploadEntryInput, PrepareUploadResult, RpcBatchEntryResult, RpcBatchResult, RpcUserSpaceAFS, RpcUserSpaceAFSOptions, UploadGrant };
|
|
236
|
+
//# sourceMappingURL=remote-afs.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-afs.d.cts","names":[],"sources":["../src/remote-afs.ts"],"mappings":"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"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { AFSBatchDeleteEntry, AFSBatchWriteEntry, AFSDeleteOptions, AFSDeleteResult, AFSListOptions, AFSListResult, AFSReadResult, AFSWriteEntryPayload, AFSWriteResult } from "@aigne/afs";
|
|
2
|
+
|
|
3
|
+
//#region src/remote-afs.d.ts
|
|
4
|
+
/** Per-entry batch result restored from a wire `results[i]` (single-op iso). */
|
|
5
|
+
interface RpcBatchEntryResult {
|
|
6
|
+
path: string;
|
|
7
|
+
success: boolean;
|
|
8
|
+
/** Wire `status` verbatim (200/404/409/503/…). */
|
|
9
|
+
status: number;
|
|
10
|
+
data?: Record<string, unknown>;
|
|
11
|
+
error?: string;
|
|
12
|
+
code?: string;
|
|
13
|
+
/** Soft miss for `optional: true` batchRead entries. */
|
|
14
|
+
missing?: boolean;
|
|
15
|
+
/** Conflict triple — same fields `AFSConflictError` carries. */
|
|
16
|
+
conflict?: {
|
|
17
|
+
currentCid: string | null;
|
|
18
|
+
currentMtime: number | null;
|
|
19
|
+
currentDeviceId: string | null;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
interface RpcBatchResult {
|
|
23
|
+
results: RpcBatchEntryResult[];
|
|
24
|
+
succeeded: number;
|
|
25
|
+
failed: number;
|
|
26
|
+
}
|
|
27
|
+
/** Thrown when the server does not support the batch wire ops (old daemon). */
|
|
28
|
+
declare class BatchUnsupportedError extends Error {
|
|
29
|
+
constructor();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Envelope-level BATCH_OVER_BUDGET / PAYLOAD_TOO_LARGE — zero entries
|
|
33
|
+
* executed; the engine halves the chunk and retries (design §7.3). MUST NOT
|
|
34
|
+
* trip the capability-fallback memory.
|
|
35
|
+
*/
|
|
36
|
+
declare class BatchOverBudgetError extends Error {
|
|
37
|
+
constructor(message: string);
|
|
38
|
+
}
|
|
39
|
+
interface RpcUserSpaceAFSOptions {
|
|
40
|
+
/** Base URL of the arc daemon / worker (e.g. "http://127.0.0.1:4900"). */
|
|
41
|
+
baseUrl: string;
|
|
42
|
+
/** Bearer token. */
|
|
43
|
+
token: string;
|
|
44
|
+
/** Envelope blocklet (the app whose /user fragment is the sync target). */
|
|
45
|
+
blocklet: string;
|
|
46
|
+
/** Optional envelope sessionId. */
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
/** Extra headers (test seams, tracing). Never logged. */
|
|
49
|
+
extraHeaders?: Record<string, string>;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* SyncCloudAFS over the afs-rpc wire (`POST /api/afs/rpc`) — the transport
|
|
53
|
+
* the production daemon/worker actually serve (the legacy `/api/space` REST
|
|
54
|
+
* server is gone; `RemoteUserSpaceAFS` above survives only for the
|
|
55
|
+
* export/import CLI against legacy hosts).
|
|
56
|
+
*
|
|
57
|
+
* Sync paths are fragment-root-relative; the wire allowlist admits only
|
|
58
|
+
* `/user/**` mutations, so every path is mapped through `/user` on the way
|
|
59
|
+
* out and stripped on the way back.
|
|
60
|
+
*
|
|
61
|
+
* Batch (P4): `batchWrite`/`batchDelete`/`batchRead` send one wire envelope
|
|
62
|
+
* each (wire-contract §9) and restore per-entry results to the single-op
|
|
63
|
+
* error types (`AFSConflictError` with the triple, `BATCH_TAIL_SKIPPED`
|
|
64
|
+
* passthrough). Capability fallback: the FIRST envelope answered with the
|
|
65
|
+
* old server's exact `Unsupported op 'batch…'` 400 marks this INSTANCE as
|
|
66
|
+
* batch-unsupported (`supportsBatch === false`) and throws
|
|
67
|
+
* {@link BatchUnsupportedError}; the engine then stays on the single-op
|
|
68
|
+
* path for the rest of the instance's life. Any other 400 (e.g.
|
|
69
|
+
* BATCH_OVER_BUDGET) does NOT trip the memory.
|
|
70
|
+
*/
|
|
71
|
+
declare class RpcUserSpaceAFS {
|
|
72
|
+
readonly name = "rpc-user-space";
|
|
73
|
+
private baseUrl;
|
|
74
|
+
private token;
|
|
75
|
+
private blocklet;
|
|
76
|
+
private sessionId?;
|
|
77
|
+
private extraHeaders;
|
|
78
|
+
/** null = unknown (no batch envelope sent yet); set on first evidence. */
|
|
79
|
+
private batchSupported;
|
|
80
|
+
constructor(options: RpcUserSpaceAFSOptions);
|
|
81
|
+
/** Instance-scoped capability memory (per-server, design §7.1). */
|
|
82
|
+
get supportsBatch(): boolean | null;
|
|
83
|
+
private wirePath;
|
|
84
|
+
private stripUser;
|
|
85
|
+
private rpc;
|
|
86
|
+
/** Map a non-OK single-op wire response onto the AFS error types. */
|
|
87
|
+
private throwWireError;
|
|
88
|
+
/**
|
|
89
|
+
* 409 → AFSConflictError with the triple. Keyed on `code: "AFS_CONFLICT"`
|
|
90
|
+
* OR triple-field presence — NEVER the legacy `error === "if_match_failed"`
|
|
91
|
+
* string (the T4.1 存量 bug: the wire sends the stable code, see
|
|
92
|
+
* afs-rpc-wire.ts WIRE_ERROR_CODES.conflict; Swift's throwConflict already
|
|
93
|
+
* keys on the code).
|
|
94
|
+
*/
|
|
95
|
+
private throwConflict;
|
|
96
|
+
list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
|
|
97
|
+
read(path: string): Promise<AFSReadResult>;
|
|
98
|
+
write(path: string, payload: AFSWriteEntryPayload): Promise<AFSWriteResult>;
|
|
99
|
+
delete(path: string, opts?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
100
|
+
/** Detect the old server's exact "unsupported batch op" 400 (design T4.2):
|
|
101
|
+
* ONLY this text trips the per-instance fallback memory. */
|
|
102
|
+
private checkBatchUnsupported;
|
|
103
|
+
private restoreBatchResults;
|
|
104
|
+
/**
|
|
105
|
+
* One wire envelope per call — entries in the CORE batch shape
|
|
106
|
+
* (`AFSBatchWriteEntry`: `content.content` bytes + `options.ifMatch` /
|
|
107
|
+
* `options.meta` provenance), paths fragment-relative.
|
|
108
|
+
*/
|
|
109
|
+
batchWrite(entries: AFSBatchWriteEntry[]): Promise<RpcBatchResult>;
|
|
110
|
+
/** Core-shaped delete entries (`options.meta.{ifMatch,deviceId,mtime}`). */
|
|
111
|
+
batchDelete(entries: AFSBatchDeleteEntry[]): Promise<RpcBatchResult>;
|
|
112
|
+
/** Entries are absolute wire paths already (e.g. "/.objects/{cid}" reads). */
|
|
113
|
+
batchRead(entries: Array<{
|
|
114
|
+
path: string;
|
|
115
|
+
optional?: boolean;
|
|
116
|
+
}>): Promise<RpcBatchResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Probe whether the server's `/user` space advertises grant capability
|
|
119
|
+
* (P2 T2.5). Reads the `.actions` catalogue and checks the prepare-upload
|
|
120
|
+
* entry's `meta.grantCapability`. `false` on Node (fallback-only) or an old
|
|
121
|
+
* server with no upload actions → the engine stays on batchWrite.
|
|
122
|
+
*/
|
|
123
|
+
uploadGrantCapability(): Promise<boolean>;
|
|
124
|
+
/** Run a `/user/.actions/<name>` exec. Throws `BatchUnsupportedError` when the
|
|
125
|
+
* server lacks the action (old server) so the engine falls back. */
|
|
126
|
+
private execAction;
|
|
127
|
+
prepareUpload(entries: PrepareUploadEntryInput[]): Promise<PrepareUploadResult>;
|
|
128
|
+
commitUpload(sessionId: string, entries: CommitUploadEntryInput[]): Promise<RpcBatchResult>;
|
|
129
|
+
/** Abort a prepared session (staged objects → GC). No TS engine call site yet
|
|
130
|
+
* — the engine bails via BatchUnsupportedError on grant loss; exposed for
|
|
131
|
+
* protocol parity (Swift mirror) + a future P4 abort-on-timeout path. */
|
|
132
|
+
abortUpload(sessionId: string): Promise<void>;
|
|
133
|
+
/** Out-of-band PUT of object bytes via a presigned grant. Returns the HTTP
|
|
134
|
+
* status (commit-after-200: the engine only commits entries that got 200). */
|
|
135
|
+
uploadObject(grant: UploadGrant, bytes: Uint8Array): Promise<number>;
|
|
136
|
+
/**
|
|
137
|
+
* Probe whether the server's `/user` space advertises GET-grant capability
|
|
138
|
+
* (P2 T2.4). Reads the `.actions` catalogue and checks the prepare-download
|
|
139
|
+
* entry's INDEPENDENT `meta.downloadGrantCapability` (NOT the upload
|
|
140
|
+
* `grantCapability`). `false` on Node (fallback-only) or an old server → the
|
|
141
|
+
* engine stays on batchRead.
|
|
142
|
+
*/
|
|
143
|
+
downloadGrantCapability(): Promise<boolean>;
|
|
144
|
+
/** Run `prepare-download` — mints GET grants for the referenced cids. Throws
|
|
145
|
+
* `BatchUnsupportedError` when the server lacks the action (old server). */
|
|
146
|
+
prepareDownload(entries: PrepareDownloadEntryInput[]): Promise<PrepareDownloadResult>;
|
|
147
|
+
/**
|
|
148
|
+
* Out-of-band GET of object bytes via a presigned grant (content leaves R2
|
|
149
|
+
* directly — never through the Worker / base64). Returns the raw bytes on
|
|
150
|
+
* 200. A 401/403 means the grant was rejected (token lacks GetObject / bad
|
|
151
|
+
* signature) → throws {@link DownloadForbiddenError} so the engine flips the
|
|
152
|
+
* whole session to batchRead (runtime fallback-on-403, §7.3). Any other
|
|
153
|
+
* non-2xx (404 dangling / 5xx) throws a generic Error — the engine leaves the
|
|
154
|
+
* cid unfilled so the existing missing-object path handles it.
|
|
155
|
+
*/
|
|
156
|
+
downloadObject(grant: DownloadGrant): Promise<Uint8Array>;
|
|
157
|
+
}
|
|
158
|
+
/** A minted presigned-PUT grant (mirrors the provider's PresignedPut). */
|
|
159
|
+
interface UploadGrant {
|
|
160
|
+
kind: "presigned-put";
|
|
161
|
+
url: string;
|
|
162
|
+
method: "PUT";
|
|
163
|
+
signedHeaders: Record<string, string>;
|
|
164
|
+
expiresAt: string;
|
|
165
|
+
}
|
|
166
|
+
interface PrepareUploadEntryInput {
|
|
167
|
+
path: string;
|
|
168
|
+
cid: string;
|
|
169
|
+
size: number;
|
|
170
|
+
/**
|
|
171
|
+
* Path-detected mime (the changelog carries none): drives the server's
|
|
172
|
+
* `treeEntry.mimeType` AND the text-mime gate for the inline copy a matching
|
|
173
|
+
* commit entry carries (inline-content-commit §5.3). Belongs on prepare so
|
|
174
|
+
* the session persists it before commit.
|
|
175
|
+
*/
|
|
176
|
+
mimeType?: string;
|
|
177
|
+
ifMatch?: string;
|
|
178
|
+
deviceId?: string;
|
|
179
|
+
mtime?: number;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Commit entries are prepare entries PLUS an optional cid-verified inline text
|
|
183
|
+
* copy of the bytes (inline-content-commit §5.1/§5.3). Split from
|
|
184
|
+
* `PrepareUploadEntryInput` so the 2KB×N content rides ONLY the commit leg, not
|
|
185
|
+
* prepare (the grant-signing step has no use for it). The server text-mime-gates
|
|
186
|
+
* + digest-pre-verifies the copy before storing it.
|
|
187
|
+
*/
|
|
188
|
+
interface CommitUploadEntryInput extends PrepareUploadEntryInput {
|
|
189
|
+
content?: string;
|
|
190
|
+
/**
|
|
191
|
+
* Application metadata (did-space-metadata G2): app fields (e.g. createdAt)
|
|
192
|
+
* the commit persists to `entries.metadata`. The server strips
|
|
193
|
+
* provider-reserved keys + caps the size; not part of the digest (it is
|
|
194
|
+
* application data, not bytes).
|
|
195
|
+
*/
|
|
196
|
+
metadata?: Record<string, unknown>;
|
|
197
|
+
}
|
|
198
|
+
interface PreparedUploadEntry {
|
|
199
|
+
path: string;
|
|
200
|
+
cid: string;
|
|
201
|
+
status: string;
|
|
202
|
+
objectKey: string;
|
|
203
|
+
checksumSha256: string;
|
|
204
|
+
grant: UploadGrant | null;
|
|
205
|
+
}
|
|
206
|
+
interface PrepareUploadResult {
|
|
207
|
+
sessionId: string;
|
|
208
|
+
expiresAt: string;
|
|
209
|
+
entries: PreparedUploadEntry[];
|
|
210
|
+
}
|
|
211
|
+
/** A minted presigned-GET grant (mirrors the provider's PresignedGet). */
|
|
212
|
+
interface DownloadGrant {
|
|
213
|
+
kind: "presigned-get";
|
|
214
|
+
url: string;
|
|
215
|
+
method: "GET";
|
|
216
|
+
signedHeaders: Record<string, string>;
|
|
217
|
+
expiresAt: string;
|
|
218
|
+
}
|
|
219
|
+
interface PrepareDownloadEntryInput {
|
|
220
|
+
cid: string;
|
|
221
|
+
/** Error/log context only — never participates in authorization (§7.2). */
|
|
222
|
+
path?: string;
|
|
223
|
+
}
|
|
224
|
+
interface PreparedDownloadEntry {
|
|
225
|
+
cid: string;
|
|
226
|
+
/** "ok" | "forbidden" | "invalid" (partial-success, §7.2). */
|
|
227
|
+
status: string;
|
|
228
|
+
objectKey?: string;
|
|
229
|
+
grant?: DownloadGrant | null;
|
|
230
|
+
}
|
|
231
|
+
interface PrepareDownloadResult {
|
|
232
|
+
entries: PreparedDownloadEntry[];
|
|
233
|
+
}
|
|
234
|
+
//#endregion
|
|
235
|
+
export { BatchOverBudgetError, BatchUnsupportedError, CommitUploadEntryInput, DownloadGrant, PrepareDownloadEntryInput, PrepareDownloadResult, PrepareUploadEntryInput, PrepareUploadResult, RpcBatchEntryResult, RpcBatchResult, RpcUserSpaceAFS, RpcUserSpaceAFSOptions, UploadGrant };
|
|
236
|
+
//# sourceMappingURL=remote-afs.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote-afs.d.mts","names":[],"sources":["../src/remote-afs.ts"],"mappings":"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"}
|