@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,54 @@
|
|
|
1
|
+
import { RemoteUserSpaceAFS } from "../remote-afs.mjs";
|
|
2
|
+
import { AFSUnsupportedError } from "@aigne/afs";
|
|
3
|
+
|
|
4
|
+
//#region src/transports/http.ts
|
|
5
|
+
const ALLOWED_SCHEMES = new Set(["http:", "https:"]);
|
|
6
|
+
function assertUrlScheme(rawUrl) {
|
|
7
|
+
let parsed;
|
|
8
|
+
try {
|
|
9
|
+
parsed = new URL(rawUrl);
|
|
10
|
+
} catch {
|
|
11
|
+
throw new Error(`HttpTransport: invalid URL: ${rawUrl}`);
|
|
12
|
+
}
|
|
13
|
+
if (!ALLOWED_SCHEMES.has(parsed.protocol)) throw new Error(`HttpTransport: only http(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`);
|
|
14
|
+
return parsed;
|
|
15
|
+
}
|
|
16
|
+
var HttpTransport = class {
|
|
17
|
+
kind = "http";
|
|
18
|
+
remote;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
assertUrlScheme(options.url);
|
|
21
|
+
this.remote = new RemoteUserSpaceAFS({
|
|
22
|
+
baseUrl: options.url,
|
|
23
|
+
token: options.token
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
list(path, options) {
|
|
27
|
+
return this.remote.list(path, options);
|
|
28
|
+
}
|
|
29
|
+
read(path, _options) {
|
|
30
|
+
return this.remote.read(path);
|
|
31
|
+
}
|
|
32
|
+
write(path, payload, _options) {
|
|
33
|
+
return this.remote.write(path, payload);
|
|
34
|
+
}
|
|
35
|
+
delete(path, options) {
|
|
36
|
+
return this.remote.delete(path, options);
|
|
37
|
+
}
|
|
38
|
+
async stat(_path, _options) {
|
|
39
|
+
throw new AFSUnsupportedError("stat", "HttpTransport does not expose stat (REST has no /op=stat); use the WS transport for stat.");
|
|
40
|
+
}
|
|
41
|
+
async search(_path, _query, _options) {
|
|
42
|
+
throw new AFSUnsupportedError("search", "HttpTransport does not expose search (REST has no /op=search); use the WS transport for search.");
|
|
43
|
+
}
|
|
44
|
+
async exec(_path, _args, _options) {
|
|
45
|
+
throw new AFSUnsupportedError("exec", "HttpTransport does not expose exec; use the WS transport for action execution.");
|
|
46
|
+
}
|
|
47
|
+
async explain(_path, _options) {
|
|
48
|
+
throw new AFSUnsupportedError("explain", "HttpTransport does not expose explain; use the WS transport for explain.");
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { HttpTransport };
|
|
54
|
+
//# sourceMappingURL=http.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.mjs","names":[],"sources":["../../src/transports/http.ts"],"sourcesContent":["/**\n * HttpTransport — REST adapter for `/api/space/{path}`.\n *\n * Wire format and error mapping are inherited from the legacy\n * `RemoteUserSpaceAFS` (see `../remote-afs.ts` for the full transport\n * implementation). This file is the Phase 3 facade that:\n *\n * 1. Adds the `kind: \"http\"` discriminator so it can be selected via\n * `connectDIDSpace`.\n * 2. Validates the base URL scheme up front (https/http only — no\n * file://, javascript:, data:).\n * 3. Throws `AFSUnsupportedError` for the AFS operations the REST\n * surface does not expose (stat/search/exec/explain). The existing\n * `arc space` flows only need list/read/write/delete; richer\n * operations should travel over the WS transport.\n *\n * The class delegates to the same private REST client the previous\n * `RemoteUserSpaceAFS` used. Keeping that class in-place lets sync code\n * paths that reference it during the migration window keep working.\n */\n\nimport type {\n AFSDeleteOptions,\n AFSDeleteResult,\n AFSExecOptions,\n AFSExecResult,\n AFSExplainOptions,\n AFSExplainResult,\n AFSListOptions,\n AFSListResult,\n AFSReadOptions,\n AFSReadResult,\n AFSSearchOptions,\n AFSSearchResult,\n AFSStatOptions,\n AFSStatResult,\n AFSWriteEntryPayload,\n AFSWriteOptions,\n AFSWriteResult,\n} from \"@aigne/afs\";\nimport { AFSUnsupportedError } from \"@aigne/afs\";\nimport { RemoteUserSpaceAFS } from \"../remote-afs.js\";\nimport type { Transport } from \"./types.js\";\n\nexport interface HttpTransportOptions {\n /** Base URL of the DID Space REST server, e.g. `https://computer.afsd.dev`. */\n url: string;\n /** Bearer token for authentication. */\n token: string;\n}\n\nconst ALLOWED_SCHEMES = new Set([\"http:\", \"https:\"]);\n\nfunction assertUrlScheme(rawUrl: string): URL {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n throw new Error(`HttpTransport: invalid URL: ${rawUrl}`);\n }\n if (!ALLOWED_SCHEMES.has(parsed.protocol)) {\n throw new Error(\n `HttpTransport: only http(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`,\n );\n }\n return parsed;\n}\n\nexport class HttpTransport implements Transport {\n readonly kind = \"http\" as const;\n private readonly remote: RemoteUserSpaceAFS;\n\n constructor(options: HttpTransportOptions) {\n assertUrlScheme(options.url);\n // RemoteUserSpaceAFS additionally enforces HTTPS for non-localhost\n // (defence-in-depth — keep that behaviour by delegating).\n this.remote = new RemoteUserSpaceAFS({ baseUrl: options.url, token: options.token });\n }\n\n list(path: string, options?: AFSListOptions): Promise<AFSListResult> {\n return this.remote.list(path, options);\n }\n\n read(path: string, _options?: AFSReadOptions): Promise<AFSReadResult> {\n return this.remote.read(path);\n }\n\n write(\n path: string,\n payload: AFSWriteEntryPayload,\n _options?: AFSWriteOptions,\n ): Promise<AFSWriteResult> {\n return this.remote.write(path, payload);\n }\n\n delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult> {\n return this.remote.delete(path, options) as unknown as Promise<AFSDeleteResult>;\n }\n\n async stat(_path: string, _options?: AFSStatOptions): Promise<AFSStatResult> {\n throw new AFSUnsupportedError(\n \"stat\",\n \"HttpTransport does not expose stat (REST has no /op=stat); use the WS transport for stat.\",\n );\n }\n\n async search(\n _path: string,\n _query: string,\n _options?: AFSSearchOptions,\n ): Promise<AFSSearchResult> {\n throw new AFSUnsupportedError(\n \"search\",\n \"HttpTransport does not expose search (REST has no /op=search); use the WS transport for search.\",\n );\n }\n\n async exec(\n _path: string,\n _args: Record<string, unknown>,\n _options?: AFSExecOptions,\n ): Promise<AFSExecResult> {\n throw new AFSUnsupportedError(\n \"exec\",\n \"HttpTransport does not expose exec; use the WS transport for action execution.\",\n );\n }\n\n async explain(_path: string, _options?: AFSExplainOptions): Promise<AFSExplainResult> {\n throw new AFSUnsupportedError(\n \"explain\",\n \"HttpTransport does not expose explain; use the WS transport for explain.\",\n );\n }\n}\n"],"mappings":";;;;AAmDA,MAAM,kBAAkB,IAAI,IAAI,CAAC,SAAS,SAAS,CAAC;AAEpD,SAAS,gBAAgB,QAAqB;CAC5C,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,OAAO;SAClB;AACN,QAAM,IAAI,MAAM,+BAA+B,SAAS;;AAE1D,KAAI,CAAC,gBAAgB,IAAI,OAAO,SAAS,CACvC,OAAM,IAAI,MACR,iDAAiD,OAAO,SAAS,SAAS,OAAO,GAClF;AAEH,QAAO;;AAGT,IAAa,gBAAb,MAAgD;CAC9C,AAAS,OAAO;CAChB,AAAiB;CAEjB,YAAY,SAA+B;AACzC,kBAAgB,QAAQ,IAAI;AAG5B,OAAK,SAAS,IAAI,mBAAmB;GAAE,SAAS,QAAQ;GAAK,OAAO,QAAQ;GAAO,CAAC;;CAGtF,KAAK,MAAc,SAAkD;AACnE,SAAO,KAAK,OAAO,KAAK,MAAM,QAAQ;;CAGxC,KAAK,MAAc,UAAmD;AACpE,SAAO,KAAK,OAAO,KAAK,KAAK;;CAG/B,MACE,MACA,SACA,UACyB;AACzB,SAAO,KAAK,OAAO,MAAM,MAAM,QAAQ;;CAGzC,OAAO,MAAc,SAAsD;AACzE,SAAO,KAAK,OAAO,OAAO,MAAM,QAAQ;;CAG1C,MAAM,KAAK,OAAe,UAAmD;AAC3E,QAAM,IAAI,oBACR,QACA,4FACD;;CAGH,MAAM,OACJ,OACA,QACA,UAC0B;AAC1B,QAAM,IAAI,oBACR,UACA,kGACD;;CAGH,MAAM,KACJ,OACA,OACA,UACwB;AACxB,QAAM,IAAI,oBACR,QACA,iFACD;;CAGH,MAAM,QAAQ,OAAe,UAAyD;AACpF,QAAM,IAAI,oBACR,WACA,2EACD"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let _aigne_afs = require("@aigne/afs");
|
|
3
|
+
let _aigne_afs_http_mount = require("@aigne/afs-http-mount");
|
|
4
|
+
|
|
5
|
+
//#region src/transports/static.ts
|
|
6
|
+
const ALLOWED_SCHEMES = new Set(["http:", "https:"]);
|
|
7
|
+
function assertScheme(rawUrl) {
|
|
8
|
+
let parsed;
|
|
9
|
+
try {
|
|
10
|
+
parsed = new URL(rawUrl);
|
|
11
|
+
} catch {
|
|
12
|
+
throw new Error(`StaticReadonlyTransport: invalid URL: ${rawUrl}`);
|
|
13
|
+
}
|
|
14
|
+
if (!ALLOWED_SCHEMES.has(parsed.protocol)) throw new Error(`StaticReadonlyTransport: only http(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`);
|
|
15
|
+
return parsed;
|
|
16
|
+
}
|
|
17
|
+
var StaticReadonlyTransport = class {
|
|
18
|
+
kind = "static-readonly";
|
|
19
|
+
mount;
|
|
20
|
+
constructor(options) {
|
|
21
|
+
assertScheme(options.url);
|
|
22
|
+
this.mount = new _aigne_afs_http_mount.AFSHttpMount({
|
|
23
|
+
baseUrl: options.url,
|
|
24
|
+
token: options.token,
|
|
25
|
+
allowPrivateNetwork: options.allowPrivateNetwork
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
list(path, options) {
|
|
29
|
+
return this.mount.list(path, options);
|
|
30
|
+
}
|
|
31
|
+
read(path, options) {
|
|
32
|
+
return this.mount.read(path, options);
|
|
33
|
+
}
|
|
34
|
+
async write(_path, _payload, _options) {
|
|
35
|
+
throw new _aigne_afs.AFSReadonlyError("StaticReadonlyTransport is read-only");
|
|
36
|
+
}
|
|
37
|
+
async delete(_path, _options) {
|
|
38
|
+
throw new _aigne_afs.AFSReadonlyError("StaticReadonlyTransport is read-only");
|
|
39
|
+
}
|
|
40
|
+
stat(path, options) {
|
|
41
|
+
return this.mount.stat(path, options);
|
|
42
|
+
}
|
|
43
|
+
async search(_path, _query, _options) {
|
|
44
|
+
throw new _aigne_afs.AFSUnsupportedError("search", "StaticReadonlyTransport does not support search; use the WS transport for full-text search.");
|
|
45
|
+
}
|
|
46
|
+
async exec(_path, _args, _options) {
|
|
47
|
+
throw new _aigne_afs.AFSUnsupportedError("exec", "StaticReadonlyTransport does not support exec; static mirrors do not run code.");
|
|
48
|
+
}
|
|
49
|
+
explain(path, options) {
|
|
50
|
+
return this.mount.explain(path, options);
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
//#endregion
|
|
55
|
+
exports.StaticReadonlyTransport = StaticReadonlyTransport;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Transport } from "./types.cjs";
|
|
2
|
+
import { AFSDeleteOptions, AFSDeleteResult, AFSExecOptions, AFSExecResult, AFSExplainOptions, AFSExplainResult, AFSListOptions, AFSListResult, AFSReadOptions, AFSReadResult, AFSSearchOptions, AFSSearchResult, AFSStatOptions, AFSStatResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
|
|
3
|
+
|
|
4
|
+
//#region src/transports/static.d.ts
|
|
5
|
+
interface StaticReadonlyTransportOptions {
|
|
6
|
+
/** Base URL of the readonly tree (must serve `/.afs/manifest.json`). */
|
|
7
|
+
url: string;
|
|
8
|
+
/** Optional bearer token forwarded to every fetch (for private mirrors). */
|
|
9
|
+
token?: string;
|
|
10
|
+
/** Allow private/loopback hosts (local dev / fixture servers). */
|
|
11
|
+
allowPrivateNetwork?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare class StaticReadonlyTransport implements Transport {
|
|
14
|
+
readonly kind: "static-readonly";
|
|
15
|
+
private readonly mount;
|
|
16
|
+
constructor(options: StaticReadonlyTransportOptions);
|
|
17
|
+
list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
|
|
18
|
+
read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;
|
|
19
|
+
write(_path: string, _payload: AFSWriteEntryPayload, _options?: AFSWriteOptions): Promise<AFSWriteResult>;
|
|
20
|
+
delete(_path: string, _options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
21
|
+
stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;
|
|
22
|
+
search(_path: string, _query: string, _options?: AFSSearchOptions): Promise<AFSSearchResult>;
|
|
23
|
+
exec(_path: string, _args: Record<string, unknown>, _options?: AFSExecOptions): Promise<AFSExecResult>;
|
|
24
|
+
explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { StaticReadonlyTransport, StaticReadonlyTransportOptions };
|
|
28
|
+
//# sourceMappingURL=static.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.d.cts","names":[],"sources":["../../src/transports/static.ts"],"mappings":";;;;UAgEiB,8BAAA;EAkCZ;EAhCH,GAAA;EAoCkE;EAlClE,KAAA;EAsC6B;EApC7B,mBAAA;AAAA;AAAA,cAGW,uBAAA,YAAmC,SAAA;EAAA,SACrC,IAAA;EAAA,iBACQ,KAAA;cAEL,OAAA,EAAS,8BAAA;EASrB,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAIhD,KAAA,CACJ,KAAA,UACA,QAAA,EAAU,oBAAA,EACV,QAAA,GAAW,eAAA,GACV,OAAA,CAAQ,cAAA;EAIL,MAAA,CAAO,KAAA,UAAe,QAAA,GAAW,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAIlE,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAIhD,MAAA,CACJ,KAAA,UACA,MAAA,UACA,QAAA,GAAW,gBAAA,GACV,OAAA,CAAQ,eAAA;EAOL,IAAA,CACJ,KAAA,UACA,KAAA,EAAO,MAAA,mBACP,QAAA,GAAW,cAAA,GACV,OAAA,CAAQ,aAAA;EAOX,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Transport } from "./types.mjs";
|
|
2
|
+
import { AFSDeleteOptions, AFSDeleteResult, AFSExecOptions, AFSExecResult, AFSExplainOptions, AFSExplainResult, AFSListOptions, AFSListResult, AFSReadOptions, AFSReadResult, AFSSearchOptions, AFSSearchResult, AFSStatOptions, AFSStatResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
|
|
3
|
+
|
|
4
|
+
//#region src/transports/static.d.ts
|
|
5
|
+
interface StaticReadonlyTransportOptions {
|
|
6
|
+
/** Base URL of the readonly tree (must serve `/.afs/manifest.json`). */
|
|
7
|
+
url: string;
|
|
8
|
+
/** Optional bearer token forwarded to every fetch (for private mirrors). */
|
|
9
|
+
token?: string;
|
|
10
|
+
/** Allow private/loopback hosts (local dev / fixture servers). */
|
|
11
|
+
allowPrivateNetwork?: boolean;
|
|
12
|
+
}
|
|
13
|
+
declare class StaticReadonlyTransport implements Transport {
|
|
14
|
+
readonly kind: "static-readonly";
|
|
15
|
+
private readonly mount;
|
|
16
|
+
constructor(options: StaticReadonlyTransportOptions);
|
|
17
|
+
list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
|
|
18
|
+
read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;
|
|
19
|
+
write(_path: string, _payload: AFSWriteEntryPayload, _options?: AFSWriteOptions): Promise<AFSWriteResult>;
|
|
20
|
+
delete(_path: string, _options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
21
|
+
stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;
|
|
22
|
+
search(_path: string, _query: string, _options?: AFSSearchOptions): Promise<AFSSearchResult>;
|
|
23
|
+
exec(_path: string, _args: Record<string, unknown>, _options?: AFSExecOptions): Promise<AFSExecResult>;
|
|
24
|
+
explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;
|
|
25
|
+
}
|
|
26
|
+
//#endregion
|
|
27
|
+
export { StaticReadonlyTransport, StaticReadonlyTransportOptions };
|
|
28
|
+
//# sourceMappingURL=static.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.d.mts","names":[],"sources":["../../src/transports/static.ts"],"mappings":";;;;UAgEiB,8BAAA;EAkCZ;EAhCH,GAAA;EAoCkE;EAlClE,KAAA;EAsC6B;EApC7B,mBAAA;AAAA;AAAA,cAGW,uBAAA,YAAmC,SAAA;EAAA,SACrC,IAAA;EAAA,iBACQ,KAAA;cAEL,OAAA,EAAS,8BAAA;EASrB,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAItD,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAIhD,KAAA,CACJ,KAAA,UACA,QAAA,EAAU,oBAAA,EACV,QAAA,GAAW,eAAA,GACV,OAAA,CAAQ,cAAA;EAIL,MAAA,CAAO,KAAA,UAAe,QAAA,GAAW,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAIlE,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EAIhD,MAAA,CACJ,KAAA,UACA,MAAA,UACA,QAAA,GAAW,gBAAA,GACV,OAAA,CAAQ,eAAA;EAOL,IAAA,CACJ,KAAA,UACA,KAAA,EAAO,MAAA,mBACP,QAAA,GAAW,cAAA,GACV,OAAA,CAAQ,aAAA;EAOX,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;AAAA"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { AFSReadonlyError, AFSUnsupportedError } from "@aigne/afs";
|
|
2
|
+
import { AFSHttpMount } from "@aigne/afs-http-mount";
|
|
3
|
+
|
|
4
|
+
//#region src/transports/static.ts
|
|
5
|
+
const ALLOWED_SCHEMES = new Set(["http:", "https:"]);
|
|
6
|
+
function assertScheme(rawUrl) {
|
|
7
|
+
let parsed;
|
|
8
|
+
try {
|
|
9
|
+
parsed = new URL(rawUrl);
|
|
10
|
+
} catch {
|
|
11
|
+
throw new Error(`StaticReadonlyTransport: invalid URL: ${rawUrl}`);
|
|
12
|
+
}
|
|
13
|
+
if (!ALLOWED_SCHEMES.has(parsed.protocol)) throw new Error(`StaticReadonlyTransport: only http(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`);
|
|
14
|
+
return parsed;
|
|
15
|
+
}
|
|
16
|
+
var StaticReadonlyTransport = class {
|
|
17
|
+
kind = "static-readonly";
|
|
18
|
+
mount;
|
|
19
|
+
constructor(options) {
|
|
20
|
+
assertScheme(options.url);
|
|
21
|
+
this.mount = new AFSHttpMount({
|
|
22
|
+
baseUrl: options.url,
|
|
23
|
+
token: options.token,
|
|
24
|
+
allowPrivateNetwork: options.allowPrivateNetwork
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
list(path, options) {
|
|
28
|
+
return this.mount.list(path, options);
|
|
29
|
+
}
|
|
30
|
+
read(path, options) {
|
|
31
|
+
return this.mount.read(path, options);
|
|
32
|
+
}
|
|
33
|
+
async write(_path, _payload, _options) {
|
|
34
|
+
throw new AFSReadonlyError("StaticReadonlyTransport is read-only");
|
|
35
|
+
}
|
|
36
|
+
async delete(_path, _options) {
|
|
37
|
+
throw new AFSReadonlyError("StaticReadonlyTransport is read-only");
|
|
38
|
+
}
|
|
39
|
+
stat(path, options) {
|
|
40
|
+
return this.mount.stat(path, options);
|
|
41
|
+
}
|
|
42
|
+
async search(_path, _query, _options) {
|
|
43
|
+
throw new AFSUnsupportedError("search", "StaticReadonlyTransport does not support search; use the WS transport for full-text search.");
|
|
44
|
+
}
|
|
45
|
+
async exec(_path, _args, _options) {
|
|
46
|
+
throw new AFSUnsupportedError("exec", "StaticReadonlyTransport does not support exec; static mirrors do not run code.");
|
|
47
|
+
}
|
|
48
|
+
explain(path, options) {
|
|
49
|
+
return this.mount.explain(path, options);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
//#endregion
|
|
54
|
+
export { StaticReadonlyTransport };
|
|
55
|
+
//# sourceMappingURL=static.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"static.mjs","names":[],"sources":["../../src/transports/static.ts"],"sourcesContent":["/**\n * StaticReadonlyTransport — read-only DID Space mirror over HTTPS.\n *\n * A thin facade over `@aigne/afs-http-mount`'s `AFSHttpMount`. The\n * upstream URL is expected to serve:\n *\n * - `{baseUrl}/.afs/manifest.json` (`{ afs: \"1.0\", type: \"readonly-tree\" }`)\n * - `{baseUrl}/{path}` raw file bytes for every entry listed there.\n *\n * Behaviour:\n *\n * - `list` / `read` / `stat` / `explain` — delegated to AFSHttpMount.\n * - `write` / `delete` — throw `AFSReadonlyError`. Read-only is the\n * point of this transport, not a runtime accident.\n * - `search` / `exec` — `AFSUnsupportedError`. Public mirrors do not\n * run code or full-text search; consumers needing those should\n * connect over `WsTransport`.\n * - SSRF — inherits `AFSHttpMount`'s URL validation; private networks\n * require `allowPrivateNetwork: true`.\n * - Binary content — passes through whatever `AFSHttpMount.read`\n * returns; `AFSHttpMount` already classifies text vs binary by mime\n * and verifies SHA-256 when manifest hashes are present.\n */\n\nimport type {\n AFSDeleteOptions,\n AFSDeleteResult,\n AFSExecOptions,\n AFSExecResult,\n AFSExplainOptions,\n AFSExplainResult,\n AFSListOptions,\n AFSListResult,\n AFSReadOptions,\n AFSReadResult,\n AFSSearchOptions,\n AFSSearchResult,\n AFSStatOptions,\n AFSStatResult,\n AFSWriteEntryPayload,\n AFSWriteOptions,\n AFSWriteResult,\n} from \"@aigne/afs\";\nimport { AFSReadonlyError, AFSUnsupportedError } from \"@aigne/afs\";\nimport { AFSHttpMount } from \"@aigne/afs-http-mount\";\nimport type { Transport } from \"./types.js\";\n\nconst ALLOWED_SCHEMES = new Set([\"http:\", \"https:\"]);\n\nfunction assertScheme(rawUrl: string): URL {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n throw new Error(`StaticReadonlyTransport: invalid URL: ${rawUrl}`);\n }\n if (!ALLOWED_SCHEMES.has(parsed.protocol)) {\n throw new Error(\n `StaticReadonlyTransport: only http(s) is supported, got ${parsed.protocol} (URL: ${rawUrl})`,\n );\n }\n return parsed;\n}\n\nexport interface StaticReadonlyTransportOptions {\n /** Base URL of the readonly tree (must serve `/.afs/manifest.json`). */\n url: string;\n /** Optional bearer token forwarded to every fetch (for private mirrors). */\n token?: string;\n /** Allow private/loopback hosts (local dev / fixture servers). */\n allowPrivateNetwork?: boolean;\n}\n\nexport class StaticReadonlyTransport implements Transport {\n readonly kind = \"static-readonly\" as const;\n private readonly mount: AFSHttpMount;\n\n constructor(options: StaticReadonlyTransportOptions) {\n assertScheme(options.url);\n this.mount = new AFSHttpMount({\n baseUrl: options.url,\n token: options.token,\n allowPrivateNetwork: options.allowPrivateNetwork,\n });\n }\n\n list(path: string, options?: AFSListOptions): Promise<AFSListResult> {\n return this.mount.list(path, options);\n }\n\n read(path: string, options?: AFSReadOptions): Promise<AFSReadResult> {\n return this.mount.read(path, options);\n }\n\n async write(\n _path: string,\n _payload: AFSWriteEntryPayload,\n _options?: AFSWriteOptions,\n ): Promise<AFSWriteResult> {\n throw new AFSReadonlyError(\"StaticReadonlyTransport is read-only\");\n }\n\n async delete(_path: string, _options?: AFSDeleteOptions): Promise<AFSDeleteResult> {\n throw new AFSReadonlyError(\"StaticReadonlyTransport is read-only\");\n }\n\n stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult> {\n return this.mount.stat(path, options);\n }\n\n async search(\n _path: string,\n _query: string,\n _options?: AFSSearchOptions,\n ): Promise<AFSSearchResult> {\n throw new AFSUnsupportedError(\n \"search\",\n \"StaticReadonlyTransport does not support search; use the WS transport for full-text search.\",\n );\n }\n\n async exec(\n _path: string,\n _args: Record<string, unknown>,\n _options?: AFSExecOptions,\n ): Promise<AFSExecResult> {\n throw new AFSUnsupportedError(\n \"exec\",\n \"StaticReadonlyTransport does not support exec; static mirrors do not run code.\",\n );\n }\n\n explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult> {\n return this.mount.explain(path, options);\n }\n}\n"],"mappings":";;;;AA+CA,MAAM,kBAAkB,IAAI,IAAI,CAAC,SAAS,SAAS,CAAC;AAEpD,SAAS,aAAa,QAAqB;CACzC,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,OAAO;SAClB;AACN,QAAM,IAAI,MAAM,yCAAyC,SAAS;;AAEpE,KAAI,CAAC,gBAAgB,IAAI,OAAO,SAAS,CACvC,OAAM,IAAI,MACR,2DAA2D,OAAO,SAAS,SAAS,OAAO,GAC5F;AAEH,QAAO;;AAYT,IAAa,0BAAb,MAA0D;CACxD,AAAS,OAAO;CAChB,AAAiB;CAEjB,YAAY,SAAyC;AACnD,eAAa,QAAQ,IAAI;AACzB,OAAK,QAAQ,IAAI,aAAa;GAC5B,SAAS,QAAQ;GACjB,OAAO,QAAQ;GACf,qBAAqB,QAAQ;GAC9B,CAAC;;CAGJ,KAAK,MAAc,SAAkD;AACnE,SAAO,KAAK,MAAM,KAAK,MAAM,QAAQ;;CAGvC,KAAK,MAAc,SAAkD;AACnE,SAAO,KAAK,MAAM,KAAK,MAAM,QAAQ;;CAGvC,MAAM,MACJ,OACA,UACA,UACyB;AACzB,QAAM,IAAI,iBAAiB,uCAAuC;;CAGpE,MAAM,OAAO,OAAe,UAAuD;AACjF,QAAM,IAAI,iBAAiB,uCAAuC;;CAGpE,KAAK,MAAc,SAAkD;AACnE,SAAO,KAAK,MAAM,KAAK,MAAM,QAAQ;;CAGvC,MAAM,OACJ,OACA,QACA,UAC0B;AAC1B,QAAM,IAAI,oBACR,UACA,8FACD;;CAGH,MAAM,KACJ,OACA,OACA,UACwB;AACxB,QAAM,IAAI,oBACR,QACA,iFACD;;CAGH,QAAQ,MAAc,SAAwD;AAC5E,SAAO,KAAK,MAAM,QAAQ,MAAM,QAAQ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/transports/types.ts
|
|
3
|
+
/**
|
|
4
|
+
* Runtime check for `TransportConfig.kind`. Useful in factory code
|
|
5
|
+
* where we have an `unknown` config and want a friendly error rather
|
|
6
|
+
* than a raw type cast.
|
|
7
|
+
*/
|
|
8
|
+
function isTransportKind(value) {
|
|
9
|
+
return value === "http" || value === "ws" || value === "static-readonly";
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
exports.isTransportKind = isTransportKind;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { AFSDeleteOptions, AFSDeleteResult, AFSEvent, AFSExecOptions, AFSExecResult, AFSExplainOptions, AFSExplainResult, AFSListOptions, AFSListResult, AFSReadOptions, AFSReadResult, AFSSearchOptions, AFSSearchResult, AFSStatOptions, AFSStatResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
|
|
2
|
+
|
|
3
|
+
//#region src/transports/types.d.ts
|
|
4
|
+
type TransportKind = "http" | "ws" | "static-readonly";
|
|
5
|
+
/**
|
|
6
|
+
* Unsubscribe callback returned from `subscribe()`. Calling it cancels
|
|
7
|
+
* the subscription and releases any underlying transport resources
|
|
8
|
+
* (e.g. RPC handles, watcher state).
|
|
9
|
+
*/
|
|
10
|
+
type Unsubscribe = () => void | Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Wire-level adapter for a DID Space.
|
|
13
|
+
*
|
|
14
|
+
* Implementations must throw AFS-typed errors (`AFSNotFoundError`, …)
|
|
15
|
+
* for AFS-semantic failures and plain `Error` (or transport-specific
|
|
16
|
+
* subclasses) for connection / auth / protocol failures.
|
|
17
|
+
*/
|
|
18
|
+
interface Transport {
|
|
19
|
+
/** Discriminator — used by `connectDIDSpace` to select the right kind. */
|
|
20
|
+
readonly kind: TransportKind;
|
|
21
|
+
list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
|
|
22
|
+
read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;
|
|
23
|
+
write(path: string, payload: AFSWriteEntryPayload, options?: AFSWriteOptions): Promise<AFSWriteResult>;
|
|
24
|
+
delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
25
|
+
stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;
|
|
26
|
+
search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
|
|
27
|
+
exec(path: string, args: Record<string, unknown>, options?: AFSExecOptions): Promise<AFSExecResult>;
|
|
28
|
+
explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Optional change subscription. Implementations that support push
|
|
31
|
+
* (e.g. `WsTransport` via `.changelog/{seq}` virtual path) wire this
|
|
32
|
+
* up; `HttpTransport` and `StaticReadonlyTransport` may omit it.
|
|
33
|
+
*
|
|
34
|
+
* `path` is the AFS sub-tree to watch; `onEvent` is invoked for every
|
|
35
|
+
* change. The returned `Unsubscribe` releases all resources held by
|
|
36
|
+
* the subscription.
|
|
37
|
+
*/
|
|
38
|
+
subscribe?(path: string, onEvent: (event: AFSEvent) => void): Promise<Unsubscribe>;
|
|
39
|
+
/** Optional tear-down for long-lived transports (WS sockets etc.). */
|
|
40
|
+
close?(): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
interface HttpTransportConfig {
|
|
43
|
+
kind: "http";
|
|
44
|
+
/** Base URL of the DID Space server, e.g. `https://computer.afsd.dev`. */
|
|
45
|
+
url: string;
|
|
46
|
+
/** Bearer token for authentication. */
|
|
47
|
+
token: string;
|
|
48
|
+
}
|
|
49
|
+
interface WsTransportConfig {
|
|
50
|
+
kind: "ws";
|
|
51
|
+
/** WebSocket URL of the DID Space server, e.g. `ws://localhost:9999`. */
|
|
52
|
+
url: string;
|
|
53
|
+
/** Bearer token used in the WebSocket subprotocol or `Authorization` header. */
|
|
54
|
+
token: string;
|
|
55
|
+
/** Session namespace passed to `session.attach`. Default: `"did-space-client"`. */
|
|
56
|
+
namespace?: string;
|
|
57
|
+
/** Request timeout in ms. Default: 30000. */
|
|
58
|
+
requestTimeout?: number;
|
|
59
|
+
}
|
|
60
|
+
interface StaticReadonlyTransportConfig {
|
|
61
|
+
kind: "static-readonly";
|
|
62
|
+
/** HTTPS base URL serving an AFS readonly tree (with `/.afs/manifest.json`). */
|
|
63
|
+
url: string;
|
|
64
|
+
/** Optional bearer token forwarded to every fetch (for private mirrors). */
|
|
65
|
+
token?: string;
|
|
66
|
+
/** Allow private/loopback hosts (local dev only). */
|
|
67
|
+
allowPrivateNetwork?: boolean;
|
|
68
|
+
}
|
|
69
|
+
type TransportConfig = HttpTransportConfig | WsTransportConfig | StaticReadonlyTransportConfig;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { HttpTransportConfig, StaticReadonlyTransportConfig, Transport, TransportConfig, TransportKind, Unsubscribe, WsTransportConfig };
|
|
72
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../../src/transports/types.ts"],"mappings":";;;KAwDY,aAAA;;;;;;KAOA,WAAA,gBAA2B,OAAA;;;;;;;;UAStB,SAAA;EAiCL;EAAA,SA/BD,IAAA,EAAM,aAAA;EAEf,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EACtD,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EACtD,KAAA,CACE,IAAA,UACA,OAAA,EAAS,oBAAA,EACT,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,cAAA;EACX,MAAA,CAAO,IAAA,UAAc,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAC1D,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EACtD,MAAA,CAAO,IAAA,UAAc,KAAA,UAAe,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EACzE,IAAA,CACE,IAAA,UACA,IAAA,EAAM,MAAA,mBACN,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,aAAA;EACX,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;EAfN;;;;;;;;;EA0BtD,SAAA,EAAW,IAAA,UAAc,OAAA,GAAU,KAAA,EAAO,QAAA,YAAoB,OAAA,CAAQ,WAAA;EAtBpE;EAyBF,KAAA,KAAU,OAAA;AAAA;AAAA,UAOK,mBAAA;EACf,IAAA;EA9BA;EAgCA,GAAA;EAhC+B;EAkC/B,KAAA;AAAA;AAAA,UAGe,iBAAA;EACf,IAAA;EArCK;EAuCL,GAAA;EAvCmB;EAyCnB,KAAA;EAzCsD;EA2CtD,SAAA;EA1CO;EA4CP,cAAA;AAAA;AAAA,UAGe,6BAAA;EACf,IAAA;EAhDyE;EAkDzE,GAAA;EAhDE;EAkDF,KAAA;EAjDE;EAmDF,mBAAA;AAAA;AAAA,KAGU,eAAA,GACR,mBAAA,GACA,iBAAA,GACA,6BAAA"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { AFSDeleteOptions, AFSDeleteResult, AFSEvent, AFSExecOptions, AFSExecResult, AFSExplainOptions, AFSExplainResult, AFSListOptions, AFSListResult, AFSReadOptions, AFSReadResult, AFSSearchOptions, AFSSearchResult, AFSStatOptions, AFSStatResult, AFSWriteEntryPayload, AFSWriteOptions, AFSWriteResult } from "@aigne/afs";
|
|
2
|
+
|
|
3
|
+
//#region src/transports/types.d.ts
|
|
4
|
+
type TransportKind = "http" | "ws" | "static-readonly";
|
|
5
|
+
/**
|
|
6
|
+
* Unsubscribe callback returned from `subscribe()`. Calling it cancels
|
|
7
|
+
* the subscription and releases any underlying transport resources
|
|
8
|
+
* (e.g. RPC handles, watcher state).
|
|
9
|
+
*/
|
|
10
|
+
type Unsubscribe = () => void | Promise<void>;
|
|
11
|
+
/**
|
|
12
|
+
* Wire-level adapter for a DID Space.
|
|
13
|
+
*
|
|
14
|
+
* Implementations must throw AFS-typed errors (`AFSNotFoundError`, …)
|
|
15
|
+
* for AFS-semantic failures and plain `Error` (or transport-specific
|
|
16
|
+
* subclasses) for connection / auth / protocol failures.
|
|
17
|
+
*/
|
|
18
|
+
interface Transport {
|
|
19
|
+
/** Discriminator — used by `connectDIDSpace` to select the right kind. */
|
|
20
|
+
readonly kind: TransportKind;
|
|
21
|
+
list(path: string, options?: AFSListOptions): Promise<AFSListResult>;
|
|
22
|
+
read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;
|
|
23
|
+
write(path: string, payload: AFSWriteEntryPayload, options?: AFSWriteOptions): Promise<AFSWriteResult>;
|
|
24
|
+
delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;
|
|
25
|
+
stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;
|
|
26
|
+
search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;
|
|
27
|
+
exec(path: string, args: Record<string, unknown>, options?: AFSExecOptions): Promise<AFSExecResult>;
|
|
28
|
+
explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Optional change subscription. Implementations that support push
|
|
31
|
+
* (e.g. `WsTransport` via `.changelog/{seq}` virtual path) wire this
|
|
32
|
+
* up; `HttpTransport` and `StaticReadonlyTransport` may omit it.
|
|
33
|
+
*
|
|
34
|
+
* `path` is the AFS sub-tree to watch; `onEvent` is invoked for every
|
|
35
|
+
* change. The returned `Unsubscribe` releases all resources held by
|
|
36
|
+
* the subscription.
|
|
37
|
+
*/
|
|
38
|
+
subscribe?(path: string, onEvent: (event: AFSEvent) => void): Promise<Unsubscribe>;
|
|
39
|
+
/** Optional tear-down for long-lived transports (WS sockets etc.). */
|
|
40
|
+
close?(): Promise<void>;
|
|
41
|
+
}
|
|
42
|
+
interface HttpTransportConfig {
|
|
43
|
+
kind: "http";
|
|
44
|
+
/** Base URL of the DID Space server, e.g. `https://computer.afsd.dev`. */
|
|
45
|
+
url: string;
|
|
46
|
+
/** Bearer token for authentication. */
|
|
47
|
+
token: string;
|
|
48
|
+
}
|
|
49
|
+
interface WsTransportConfig {
|
|
50
|
+
kind: "ws";
|
|
51
|
+
/** WebSocket URL of the DID Space server, e.g. `ws://localhost:9999`. */
|
|
52
|
+
url: string;
|
|
53
|
+
/** Bearer token used in the WebSocket subprotocol or `Authorization` header. */
|
|
54
|
+
token: string;
|
|
55
|
+
/** Session namespace passed to `session.attach`. Default: `"did-space-client"`. */
|
|
56
|
+
namespace?: string;
|
|
57
|
+
/** Request timeout in ms. Default: 30000. */
|
|
58
|
+
requestTimeout?: number;
|
|
59
|
+
}
|
|
60
|
+
interface StaticReadonlyTransportConfig {
|
|
61
|
+
kind: "static-readonly";
|
|
62
|
+
/** HTTPS base URL serving an AFS readonly tree (with `/.afs/manifest.json`). */
|
|
63
|
+
url: string;
|
|
64
|
+
/** Optional bearer token forwarded to every fetch (for private mirrors). */
|
|
65
|
+
token?: string;
|
|
66
|
+
/** Allow private/loopback hosts (local dev only). */
|
|
67
|
+
allowPrivateNetwork?: boolean;
|
|
68
|
+
}
|
|
69
|
+
type TransportConfig = HttpTransportConfig | WsTransportConfig | StaticReadonlyTransportConfig;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { HttpTransportConfig, StaticReadonlyTransportConfig, Transport, TransportConfig, TransportKind, Unsubscribe, WsTransportConfig };
|
|
72
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../src/transports/types.ts"],"mappings":";;;KAwDY,aAAA;;;;;;KAOA,WAAA,gBAA2B,OAAA;;;;;;;;UAStB,SAAA;EAiCL;EAAA,SA/BD,IAAA,EAAM,aAAA;EAEf,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EACtD,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EACtD,KAAA,CACE,IAAA,UACA,OAAA,EAAS,oBAAA,EACT,OAAA,GAAU,eAAA,GACT,OAAA,CAAQ,cAAA;EACX,MAAA,CAAO,IAAA,UAAc,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EAC1D,IAAA,CAAK,IAAA,UAAc,OAAA,GAAU,cAAA,GAAiB,OAAA,CAAQ,aAAA;EACtD,MAAA,CAAO,IAAA,UAAc,KAAA,UAAe,OAAA,GAAU,gBAAA,GAAmB,OAAA,CAAQ,eAAA;EACzE,IAAA,CACE,IAAA,UACA,IAAA,EAAM,MAAA,mBACN,OAAA,GAAU,cAAA,GACT,OAAA,CAAQ,aAAA;EACX,OAAA,CAAQ,IAAA,UAAc,OAAA,GAAU,iBAAA,GAAoB,OAAA,CAAQ,gBAAA;EAfN;;;;;;;;;EA0BtD,SAAA,EAAW,IAAA,UAAc,OAAA,GAAU,KAAA,EAAO,QAAA,YAAoB,OAAA,CAAQ,WAAA;EAtBpE;EAyBF,KAAA,KAAU,OAAA;AAAA;AAAA,UAOK,mBAAA;EACf,IAAA;EA9BA;EAgCA,GAAA;EAhC+B;EAkC/B,KAAA;AAAA;AAAA,UAGe,iBAAA;EACf,IAAA;EArCK;EAuCL,GAAA;EAvCmB;EAyCnB,KAAA;EAzCsD;EA2CtD,SAAA;EA1CO;EA4CP,cAAA;AAAA;AAAA,UAGe,6BAAA;EACf,IAAA;EAhDyE;EAkDzE,GAAA;EAhDE;EAkDF,KAAA;EAjDE;EAmDF,mBAAA;AAAA;AAAA,KAGU,eAAA,GACR,mBAAA,GACA,iBAAA,GACA,6BAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
//#region src/transports/types.ts
|
|
2
|
+
/**
|
|
3
|
+
* Runtime check for `TransportConfig.kind`. Useful in factory code
|
|
4
|
+
* where we have an `unknown` config and want a friendly error rather
|
|
5
|
+
* than a raw type cast.
|
|
6
|
+
*/
|
|
7
|
+
function isTransportKind(value) {
|
|
8
|
+
return value === "http" || value === "ws" || value === "static-readonly";
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
//#endregion
|
|
12
|
+
export { isTransportKind };
|
|
13
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../../src/transports/types.ts"],"sourcesContent":["/**\n * Phase 3 — Transport interface.\n *\n * A `Transport` is the wire-level adapter a `DIDSpaceClient` uses to talk\n * to a DID Space. It is intentionally narrower than `AFSModule`:\n *\n * 1. No mount/lifecycle hooks (`onMount` / `setEventSink` / etc.) —\n * those belong to the wrapping `DIDSpaceClient` provider, not to\n * individual transports.\n * 2. Shape mirrors the AFS surface (list/read/write/delete/stat/search/\n * exec/explain) so a transport can be 1:1 with a remote DID Space.\n * 3. Failure semantics are explicitly *transport* failures — connection\n * drops, auth errors, sidecar buffering issues — not AFS semantic\n * errors. The AFS error mapping (`AFSNotFoundError`, …) is decoded\n * from the wire response and re-thrown by the transport so callers\n * get one coherent error model.\n *\n * Three kinds are supported in Phase 3:\n *\n * - `http` — REST over HTTPS (`/api/space/{path}`). What\n * today's `RemoteUserSpaceAFS` did, extracted.\n * - `ws` — WebSocket via `@aigne/afs-session` (`session.attach`\n * + `afs.*` RPC + `afs.subscribe` push).\n * - `static-readonly` — Read-only HTTP tree backed by an `AFSHttpMount`\n * manifest. Useful for public DID Space mirrors.\n *\n * Design note: the interface is a discriminated union via the `kind`\n * field. Adding a new transport (e.g. an in-process transport for\n * tests) is a matter of adding a new variant.\n */\n\nimport type {\n AFSDeleteOptions,\n AFSDeleteResult,\n AFSEvent,\n AFSExecOptions,\n AFSExecResult,\n AFSExplainOptions,\n AFSExplainResult,\n AFSListOptions,\n AFSListResult,\n AFSReadOptions,\n AFSReadResult,\n AFSSearchOptions,\n AFSSearchResult,\n AFSStatOptions,\n AFSStatResult,\n AFSWriteEntryPayload,\n AFSWriteOptions,\n AFSWriteResult,\n} from \"@aigne/afs\";\n\n// ---------------------------------------------------------------------------\n// Transport interface\n// ---------------------------------------------------------------------------\n\nexport type TransportKind = \"http\" | \"ws\" | \"static-readonly\";\n\n/**\n * Unsubscribe callback returned from `subscribe()`. Calling it cancels\n * the subscription and releases any underlying transport resources\n * (e.g. RPC handles, watcher state).\n */\nexport type Unsubscribe = () => void | Promise<void>;\n\n/**\n * Wire-level adapter for a DID Space.\n *\n * Implementations must throw AFS-typed errors (`AFSNotFoundError`, …)\n * for AFS-semantic failures and plain `Error` (or transport-specific\n * subclasses) for connection / auth / protocol failures.\n */\nexport interface Transport {\n /** Discriminator — used by `connectDIDSpace` to select the right kind. */\n readonly kind: TransportKind;\n\n list(path: string, options?: AFSListOptions): Promise<AFSListResult>;\n read(path: string, options?: AFSReadOptions): Promise<AFSReadResult>;\n write(\n path: string,\n payload: AFSWriteEntryPayload,\n options?: AFSWriteOptions,\n ): Promise<AFSWriteResult>;\n delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult>;\n stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult>;\n search(path: string, query: string, options?: AFSSearchOptions): Promise<AFSSearchResult>;\n exec(\n path: string,\n args: Record<string, unknown>,\n options?: AFSExecOptions,\n ): Promise<AFSExecResult>;\n explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult>;\n\n /**\n * Optional change subscription. Implementations that support push\n * (e.g. `WsTransport` via `.changelog/{seq}` virtual path) wire this\n * up; `HttpTransport` and `StaticReadonlyTransport` may omit it.\n *\n * `path` is the AFS sub-tree to watch; `onEvent` is invoked for every\n * change. The returned `Unsubscribe` releases all resources held by\n * the subscription.\n */\n subscribe?(path: string, onEvent: (event: AFSEvent) => void): Promise<Unsubscribe>;\n\n /** Optional tear-down for long-lived transports (WS sockets etc.). */\n close?(): Promise<void>;\n}\n\n// ---------------------------------------------------------------------------\n// Per-kind config — input to `connectDIDSpace`\n// ---------------------------------------------------------------------------\n\nexport interface HttpTransportConfig {\n kind: \"http\";\n /** Base URL of the DID Space server, e.g. `https://computer.afsd.dev`. */\n url: string;\n /** Bearer token for authentication. */\n token: string;\n}\n\nexport interface WsTransportConfig {\n kind: \"ws\";\n /** WebSocket URL of the DID Space server, e.g. `ws://localhost:9999`. */\n url: string;\n /** Bearer token used in the WebSocket subprotocol or `Authorization` header. */\n token: string;\n /** Session namespace passed to `session.attach`. Default: `\"did-space-client\"`. */\n namespace?: string;\n /** Request timeout in ms. Default: 30000. */\n requestTimeout?: number;\n}\n\nexport interface StaticReadonlyTransportConfig {\n kind: \"static-readonly\";\n /** HTTPS base URL serving an AFS readonly tree (with `/.afs/manifest.json`). */\n url: string;\n /** Optional bearer token forwarded to every fetch (for private mirrors). */\n token?: string;\n /** Allow private/loopback hosts (local dev only). */\n allowPrivateNetwork?: boolean;\n}\n\nexport type TransportConfig =\n | HttpTransportConfig\n | WsTransportConfig\n | StaticReadonlyTransportConfig;\n\n/**\n * Runtime check for `TransportConfig.kind`. Useful in factory code\n * where we have an `unknown` config and want a friendly error rather\n * than a raw type cast.\n */\nexport function isTransportKind(value: unknown): value is TransportKind {\n return value === \"http\" || value === \"ws\" || value === \"static-readonly\";\n}\n"],"mappings":";;;;;;AAwJA,SAAgB,gBAAgB,OAAwC;AACtE,QAAO,UAAU,UAAU,UAAU,QAAQ,UAAU"}
|