@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
package/dist/client.mjs
ADDED
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { HttpTransport } from "./transports/http.mjs";
|
|
2
|
+
import { StaticReadonlyTransport } from "./transports/static.mjs";
|
|
3
|
+
import { isTransportKind } from "./transports/types.mjs";
|
|
4
|
+
import { WsTransport } from "./transports/ws.mjs";
|
|
5
|
+
import { AFSBaseProvider } from "@aigne/afs/provider";
|
|
6
|
+
|
|
7
|
+
//#region src/client.ts
|
|
8
|
+
const FORWARDED_OPERATIONS = [
|
|
9
|
+
"list",
|
|
10
|
+
"read",
|
|
11
|
+
"write",
|
|
12
|
+
"delete",
|
|
13
|
+
"stat",
|
|
14
|
+
"search",
|
|
15
|
+
"exec",
|
|
16
|
+
"explain"
|
|
17
|
+
];
|
|
18
|
+
const REQUIRED_TRANSPORT_METHODS = [
|
|
19
|
+
"list",
|
|
20
|
+
"read",
|
|
21
|
+
"write",
|
|
22
|
+
"delete",
|
|
23
|
+
"stat",
|
|
24
|
+
"search",
|
|
25
|
+
"exec",
|
|
26
|
+
"explain"
|
|
27
|
+
];
|
|
28
|
+
/**
|
|
29
|
+
* Implement {@link AFSEventFilter}'s wildcard match for `type`. Mirrors the
|
|
30
|
+
* helper used by the core event router: `"test:*"` matches `"test:anything"`,
|
|
31
|
+
* everything else is an exact compare.
|
|
32
|
+
*/
|
|
33
|
+
function matchEventType(eventType, filterType) {
|
|
34
|
+
if (filterType.endsWith(":*")) return eventType.startsWith(filterType.slice(0, -1));
|
|
35
|
+
return eventType === filterType;
|
|
36
|
+
}
|
|
37
|
+
function assertTransportShape(transport) {
|
|
38
|
+
if (!transport || typeof transport !== "object") throw new Error("DIDSpaceClient: transport is required");
|
|
39
|
+
if (!isTransportKind(transport.kind)) throw new Error(`DIDSpaceClient: transport.kind must be 'http' | 'ws' | 'static-readonly' (got: ${String(transport.kind)})`);
|
|
40
|
+
for (const method of REQUIRED_TRANSPORT_METHODS) if (typeof transport[method] !== "function") throw new Error(`DIDSpaceClient: transport is missing required method: ${method}`);
|
|
41
|
+
}
|
|
42
|
+
var DIDSpaceClient = class extends AFSBaseProvider {
|
|
43
|
+
name;
|
|
44
|
+
description;
|
|
45
|
+
accessMode;
|
|
46
|
+
transport;
|
|
47
|
+
constructor(options) {
|
|
48
|
+
super();
|
|
49
|
+
assertTransportShape(options.transport);
|
|
50
|
+
this.transport = options.transport;
|
|
51
|
+
this.name = options.name ?? "did-space-client";
|
|
52
|
+
this.description = options.description;
|
|
53
|
+
this.accessMode = options.accessMode ?? (this.transport.kind === "static-readonly" ? "readonly" : "readwrite");
|
|
54
|
+
const unsupported = this.unsupportedOps();
|
|
55
|
+
for (const op of FORWARDED_OPERATIONS) {
|
|
56
|
+
if (unsupported.has(op)) continue;
|
|
57
|
+
delete this[op];
|
|
58
|
+
}
|
|
59
|
+
if (this.accessMode === "readonly") {
|
|
60
|
+
this.write = void 0;
|
|
61
|
+
this.delete = void 0;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Operations the transport is known *not* to support (e.g. HTTP REST
|
|
66
|
+
* does not expose stat/search/exec/explain). Used at construction time
|
|
67
|
+
* to keep those methods `undefined` so AFS routing knows.
|
|
68
|
+
*/
|
|
69
|
+
unsupportedOps() {
|
|
70
|
+
const set = /* @__PURE__ */ new Set();
|
|
71
|
+
if (this.transport.kind === "http") {
|
|
72
|
+
set.add("stat");
|
|
73
|
+
set.add("search");
|
|
74
|
+
set.add("exec");
|
|
75
|
+
set.add("explain");
|
|
76
|
+
} else if (this.transport.kind === "static-readonly") {
|
|
77
|
+
set.add("search");
|
|
78
|
+
set.add("exec");
|
|
79
|
+
}
|
|
80
|
+
return set;
|
|
81
|
+
}
|
|
82
|
+
list(path, options) {
|
|
83
|
+
return this.transport.list(path, options);
|
|
84
|
+
}
|
|
85
|
+
read(path, options) {
|
|
86
|
+
return this.transport.read(path, options);
|
|
87
|
+
}
|
|
88
|
+
write(path, payload, options) {
|
|
89
|
+
return this.transport.write(path, payload, options);
|
|
90
|
+
}
|
|
91
|
+
delete(path, options) {
|
|
92
|
+
return this.transport.delete(path, options);
|
|
93
|
+
}
|
|
94
|
+
stat(path, options) {
|
|
95
|
+
return this.transport.stat(path, options);
|
|
96
|
+
}
|
|
97
|
+
search(path, query, options) {
|
|
98
|
+
return this.transport.search(path, query, options);
|
|
99
|
+
}
|
|
100
|
+
exec(path, args, options) {
|
|
101
|
+
return this.transport.exec(path, args, options);
|
|
102
|
+
}
|
|
103
|
+
explain(path, options) {
|
|
104
|
+
return this.transport.explain(path, options);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Subscribe to push events from the transport. Only WS supports this today.
|
|
108
|
+
*
|
|
109
|
+
* Conforms to `AFSRoot.subscribe(filter, callback)` so this provider can be
|
|
110
|
+
* mounted via `MaterializedMount` like any other. The underlying transport's
|
|
111
|
+
* subscribe is path-based and async, so:
|
|
112
|
+
* - `filter.path` is mapped to the transport's `path` argument (only the
|
|
113
|
+
* path dimension of {@link AFSEventFilter} is honored today; other
|
|
114
|
+
* filter dimensions are applied client-side in the wrapped callback)
|
|
115
|
+
* - the async `Promise<Unsubscribe>` returned by the transport is bridged
|
|
116
|
+
* to a sync {@link AFSUnsubscribe} that cancels whether or not the
|
|
117
|
+
* underlying subscribe has resolved yet
|
|
118
|
+
*/
|
|
119
|
+
subscribe(filter, callback) {
|
|
120
|
+
if (typeof this.transport.subscribe !== "function") throw new Error(`DIDSpaceClient: transport (${this.transport.kind}) does not support subscribe`);
|
|
121
|
+
const path = filter.path ?? "/";
|
|
122
|
+
const matches = (event) => {
|
|
123
|
+
if (filter.type !== void 0 && !matchEventType(event.type, filter.type)) return false;
|
|
124
|
+
if (filter.scope !== void 0 && event.scope !== filter.scope) return false;
|
|
125
|
+
if (filter.source !== void 0 && event.source !== filter.source) return false;
|
|
126
|
+
return true;
|
|
127
|
+
};
|
|
128
|
+
let cancelled = false;
|
|
129
|
+
let unsubscribe;
|
|
130
|
+
this.transport.subscribe(path, (event) => {
|
|
131
|
+
if (cancelled) return;
|
|
132
|
+
if (!matches(event)) return;
|
|
133
|
+
callback(event);
|
|
134
|
+
}).then((fn) => {
|
|
135
|
+
if (cancelled) {
|
|
136
|
+
fn();
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
unsubscribe = fn;
|
|
140
|
+
}).catch(() => {});
|
|
141
|
+
return () => {
|
|
142
|
+
cancelled = true;
|
|
143
|
+
if (unsubscribe) unsubscribe();
|
|
144
|
+
};
|
|
145
|
+
}
|
|
146
|
+
/** Tear down the underlying transport (idempotent). */
|
|
147
|
+
async close() {
|
|
148
|
+
if (typeof this.transport.close === "function") await this.transport.close();
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
const UNSAFE_SCHEMES = new Set([
|
|
152
|
+
"file:",
|
|
153
|
+
"javascript:",
|
|
154
|
+
"data:",
|
|
155
|
+
"ftp:"
|
|
156
|
+
]);
|
|
157
|
+
function assertSafeUrl(rawUrl) {
|
|
158
|
+
let parsed;
|
|
159
|
+
try {
|
|
160
|
+
parsed = new URL(rawUrl);
|
|
161
|
+
} catch {
|
|
162
|
+
throw new Error(`connectDIDSpace: invalid URL: ${rawUrl}`);
|
|
163
|
+
}
|
|
164
|
+
if (UNSAFE_SCHEMES.has(parsed.protocol)) throw new Error(`connectDIDSpace: refusing unsafe URL scheme '${parsed.protocol}'`);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Construct a ready-to-mount {@link DIDSpaceClient} from a transport
|
|
168
|
+
* config. For long-lived transports (WS) the underlying connection is
|
|
169
|
+
* established before the client is returned.
|
|
170
|
+
*/
|
|
171
|
+
async function connectDIDSpace(options) {
|
|
172
|
+
const cfg = options.transport;
|
|
173
|
+
if (!cfg || typeof cfg !== "object") throw new Error("connectDIDSpace: options.transport is required");
|
|
174
|
+
if (!isTransportKind(cfg.kind)) throw new Error(`connectDIDSpace: unknown transport kind '${String(cfg.kind)}' (expected 'http' | 'ws' | 'static-readonly')`);
|
|
175
|
+
let transport;
|
|
176
|
+
switch (cfg.kind) {
|
|
177
|
+
case "http":
|
|
178
|
+
if (!cfg.url) throw new Error("connectDIDSpace: http transport requires url");
|
|
179
|
+
if (!cfg.token) throw new Error("connectDIDSpace: http transport requires token");
|
|
180
|
+
assertSafeUrl(cfg.url);
|
|
181
|
+
transport = new HttpTransport({
|
|
182
|
+
url: cfg.url,
|
|
183
|
+
token: cfg.token
|
|
184
|
+
});
|
|
185
|
+
break;
|
|
186
|
+
case "ws": {
|
|
187
|
+
if (!cfg.url) throw new Error("connectDIDSpace: ws transport requires url");
|
|
188
|
+
if (!cfg.token) throw new Error("connectDIDSpace: ws transport requires token");
|
|
189
|
+
assertSafeUrl(cfg.url);
|
|
190
|
+
const ws = new WsTransport({
|
|
191
|
+
url: cfg.url,
|
|
192
|
+
token: cfg.token,
|
|
193
|
+
namespace: cfg.namespace,
|
|
194
|
+
requestTimeout: cfg.requestTimeout
|
|
195
|
+
});
|
|
196
|
+
await ws.connect();
|
|
197
|
+
transport = ws;
|
|
198
|
+
break;
|
|
199
|
+
}
|
|
200
|
+
case "static-readonly":
|
|
201
|
+
if (!cfg.url) throw new Error("connectDIDSpace: static-readonly transport requires url");
|
|
202
|
+
assertSafeUrl(cfg.url);
|
|
203
|
+
transport = new StaticReadonlyTransport({
|
|
204
|
+
url: cfg.url,
|
|
205
|
+
token: cfg.token,
|
|
206
|
+
allowPrivateNetwork: cfg.allowPrivateNetwork
|
|
207
|
+
});
|
|
208
|
+
break;
|
|
209
|
+
}
|
|
210
|
+
return new DIDSpaceClient({
|
|
211
|
+
transport,
|
|
212
|
+
name: options.name,
|
|
213
|
+
description: options.description,
|
|
214
|
+
accessMode: options.accessMode
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
//#endregion
|
|
219
|
+
export { DIDSpaceClient, connectDIDSpace };
|
|
220
|
+
//# sourceMappingURL=client.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["/**\n * DIDSpaceClient + connectDIDSpace — Phase 3 entry point.\n *\n * `DIDSpaceClient` wraps a `Transport` in an `AFSBaseProvider` so it can\n * be mounted into an `AFS` root like any other provider. The transport\n * speaks the wire protocol (HTTP / WS / static-readonly); the client\n * just forwards AFS calls and exposes the lifecycle hooks `AFSModule`\n * defines.\n *\n * `connectDIDSpace` is the public factory. Callers pass a discriminated\n * `TransportConfig` and get a ready-to-mount `DIDSpaceClient` back. The\n * factory:\n *\n * 1. Validates `kind` is known.\n * 2. Validates required fields (`url`, `token` where applicable).\n * 3. Rejects unsafe URL schemes (`file:`, `javascript:`, `data:`).\n * 4. Constructs the matching transport class.\n * 5. For long-lived transports (`ws`), calls `connect()` so the\n * caller does not have to remember to.\n *\n * Design notes:\n * - The client never persists tokens beyond the transport instance; a\n * second `connectDIDSpace()` call returns an independent client\n * with its own connection state.\n * - Errors raised by transports surface unchanged. The client does\n * *not* swallow or retry — it is a thin marshaller.\n * - `subscribe` is exposed only when the underlying transport\n * supports it (today: WS only).\n */\n\nimport type {\n AFSAccessMode,\n AFSDeleteOptions,\n AFSDeleteResult,\n AFSEvent,\n AFSEventCallback,\n AFSEventFilter,\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 AFSUnsubscribe,\n AFSWriteEntryPayload,\n AFSWriteOptions,\n AFSWriteResult,\n} from \"@aigne/afs\";\nimport { AFSBaseProvider } from \"@aigne/afs/provider\";\n\nconst FORWARDED_OPERATIONS = [\n \"list\",\n \"read\",\n \"write\",\n \"delete\",\n \"stat\",\n \"search\",\n \"exec\",\n \"explain\",\n] as const;\n\nimport { HttpTransport } from \"./transports/http.js\";\nimport { StaticReadonlyTransport } from \"./transports/static.js\";\nimport {\n isTransportKind,\n type Transport,\n type TransportConfig,\n type Unsubscribe,\n} from \"./transports/types.js\";\nimport { WsTransport } from \"./transports/ws.js\";\n\nconst REQUIRED_TRANSPORT_METHODS = [\n \"list\",\n \"read\",\n \"write\",\n \"delete\",\n \"stat\",\n \"search\",\n \"exec\",\n \"explain\",\n] as const;\n\n/**\n * Implement {@link AFSEventFilter}'s wildcard match for `type`. Mirrors the\n * helper used by the core event router: `\"test:*\"` matches `\"test:anything\"`,\n * everything else is an exact compare.\n */\nfunction matchEventType(eventType: string, filterType: string): boolean {\n if (filterType.endsWith(\":*\")) {\n return eventType.startsWith(filterType.slice(0, -1));\n }\n return eventType === filterType;\n}\n\nfunction assertTransportShape(transport: unknown): asserts transport is Transport {\n if (!transport || typeof transport !== \"object\") {\n throw new Error(\"DIDSpaceClient: transport is required\");\n }\n if (!isTransportKind((transport as { kind?: unknown }).kind)) {\n throw new Error(\n `DIDSpaceClient: transport.kind must be 'http' | 'ws' | 'static-readonly' (got: ${String(\n (transport as { kind?: unknown }).kind,\n )})`,\n );\n }\n for (const method of REQUIRED_TRANSPORT_METHODS) {\n if (typeof (transport as Record<string, unknown>)[method] !== \"function\") {\n throw new Error(`DIDSpaceClient: transport is missing required method: ${method}`);\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Client provider\n// ---------------------------------------------------------------------------\n\nexport interface DIDSpaceClientOptions {\n transport: Transport;\n /** Optional name for the mount; default `did-space-client`. */\n name?: string;\n /** Optional description. */\n description?: string;\n /**\n * Override the access mode. Defaults to `readonly` for\n * `static-readonly` transports, `readwrite` for the others.\n */\n accessMode?: AFSAccessMode;\n}\n\nexport class DIDSpaceClient extends AFSBaseProvider {\n override readonly name: string;\n override readonly description?: string;\n override readonly accessMode: AFSAccessMode;\n private readonly transport: Transport;\n\n constructor(options: DIDSpaceClientOptions) {\n super();\n assertTransportShape(options.transport);\n this.transport = options.transport;\n this.name = options.name ?? \"did-space-client\";\n this.description = options.description;\n this.accessMode =\n options.accessMode ?? (this.transport.kind === \"static-readonly\" ? \"readonly\" : \"readwrite\");\n\n // AFSBaseProvider's constructor calls `removeUnimplementedMethods()`,\n // which sets `this.list/read/write/...` to `undefined` whenever there\n // are no @List/@Read/... decorated routes — and we have none, because\n // we forward everything to the transport. Drop those own-property\n // overrides so the prototype methods on this class stay reachable —\n // but only for methods the transport actually advertises support for.\n // Anything the transport refuses (e.g. HttpTransport.stat) stays\n // `undefined`, which is the convention `AFS.checkProviderOnMount`\n // and `findRoutableModules` rely on.\n const unsupported = this.unsupportedOps();\n for (const op of FORWARDED_OPERATIONS) {\n if (unsupported.has(op)) continue;\n delete (this as Record<string, unknown>)[op];\n }\n // For readonly transports, also strip write/delete so callers see the\n // mode mismatch immediately rather than after a server round-trip.\n if (this.accessMode === \"readonly\") {\n (this as Record<string, unknown>).write = undefined;\n (this as Record<string, unknown>).delete = undefined;\n }\n }\n\n /**\n * Operations the transport is known *not* to support (e.g. HTTP REST\n * does not expose stat/search/exec/explain). Used at construction time\n * to keep those methods `undefined` so AFS routing knows.\n */\n private unsupportedOps(): Set<(typeof FORWARDED_OPERATIONS)[number]> {\n const set = new Set<(typeof FORWARDED_OPERATIONS)[number]>();\n if (this.transport.kind === \"http\") {\n set.add(\"stat\");\n set.add(\"search\");\n set.add(\"exec\");\n set.add(\"explain\");\n } else if (this.transport.kind === \"static-readonly\") {\n // AFSHttpMount supports list/read/stat/explain; no search/exec.\n set.add(\"search\");\n set.add(\"exec\");\n // write/delete are stripped via the accessMode branch above.\n }\n return set;\n }\n\n // ───── AFSModule surface — pure passthrough ──────────────────────────────\n\n override list(path: string, options?: AFSListOptions): Promise<AFSListResult> {\n return this.transport.list(path, options);\n }\n\n override read(path: string, options?: AFSReadOptions): Promise<AFSReadResult> {\n return this.transport.read(path, options);\n }\n\n override write(\n path: string,\n payload: AFSWriteEntryPayload,\n options?: AFSWriteOptions,\n ): Promise<AFSWriteResult> {\n return this.transport.write(path, payload, options);\n }\n\n override delete(path: string, options?: AFSDeleteOptions): Promise<AFSDeleteResult> {\n return this.transport.delete(path, options);\n }\n\n override stat(path: string, options?: AFSStatOptions): Promise<AFSStatResult> {\n return this.transport.stat(path, options);\n }\n\n override search(\n path: string,\n query: string,\n options?: AFSSearchOptions,\n ): Promise<AFSSearchResult> {\n return this.transport.search(path, query, options);\n }\n\n override exec(\n path: string,\n args: Record<string, unknown>,\n options: AFSExecOptions,\n ): Promise<AFSExecResult> {\n return this.transport.exec(path, args, options);\n }\n\n override explain(path: string, options?: AFSExplainOptions): Promise<AFSExplainResult> {\n return this.transport.explain(path, options);\n }\n\n /**\n * Subscribe to push events from the transport. Only WS supports this today.\n *\n * Conforms to `AFSRoot.subscribe(filter, callback)` so this provider can be\n * mounted via `MaterializedMount` like any other. The underlying transport's\n * subscribe is path-based and async, so:\n * - `filter.path` is mapped to the transport's `path` argument (only the\n * path dimension of {@link AFSEventFilter} is honored today; other\n * filter dimensions are applied client-side in the wrapped callback)\n * - the async `Promise<Unsubscribe>` returned by the transport is bridged\n * to a sync {@link AFSUnsubscribe} that cancels whether or not the\n * underlying subscribe has resolved yet\n */\n subscribe(filter: AFSEventFilter, callback: AFSEventCallback): AFSUnsubscribe {\n if (typeof this.transport.subscribe !== \"function\") {\n throw new Error(\n `DIDSpaceClient: transport (${this.transport.kind}) does not support subscribe`,\n );\n }\n const path = filter.path ?? \"/\";\n const matches = (event: AFSEvent): boolean => {\n if (filter.type !== undefined && !matchEventType(event.type, filter.type)) return false;\n if (filter.scope !== undefined && event.scope !== filter.scope) return false;\n if (filter.source !== undefined && event.source !== filter.source) return false;\n return true;\n };\n let cancelled = false;\n let unsubscribe: Unsubscribe | undefined;\n void this.transport\n .subscribe(path, (event) => {\n if (cancelled) return;\n if (!matches(event)) return;\n callback(event);\n })\n .then((fn) => {\n if (cancelled) {\n fn();\n return;\n }\n unsubscribe = fn;\n })\n .catch(() => {\n // Surface failures only on demand — the sync AFSUnsubscribe contract\n // cannot reject, and re-throwing inside Promise.then would silently\n // crash the worker. Callers needing strict error handling can call\n // `transport.subscribe` directly.\n });\n return () => {\n cancelled = true;\n if (unsubscribe) unsubscribe();\n };\n }\n\n /** Tear down the underlying transport (idempotent). */\n async close(): Promise<void> {\n if (typeof this.transport.close === \"function\") {\n await this.transport.close();\n }\n }\n}\n\n// ---------------------------------------------------------------------------\n// Factory\n// ---------------------------------------------------------------------------\n\nexport interface ConnectDIDSpaceOptions {\n transport: TransportConfig;\n /** See `DIDSpaceClientOptions.name`. */\n name?: string;\n /** See `DIDSpaceClientOptions.description`. */\n description?: string;\n /** See `DIDSpaceClientOptions.accessMode`. */\n accessMode?: AFSAccessMode;\n}\n\nconst UNSAFE_SCHEMES = new Set([\"file:\", \"javascript:\", \"data:\", \"ftp:\"]);\n\nfunction assertSafeUrl(rawUrl: string): void {\n let parsed: URL;\n try {\n parsed = new URL(rawUrl);\n } catch {\n throw new Error(`connectDIDSpace: invalid URL: ${rawUrl}`);\n }\n if (UNSAFE_SCHEMES.has(parsed.protocol)) {\n throw new Error(`connectDIDSpace: refusing unsafe URL scheme '${parsed.protocol}'`);\n }\n}\n\n/**\n * Construct a ready-to-mount {@link DIDSpaceClient} from a transport\n * config. For long-lived transports (WS) the underlying connection is\n * established before the client is returned.\n */\nexport async function connectDIDSpace(options: ConnectDIDSpaceOptions): Promise<DIDSpaceClient> {\n const cfg = options.transport;\n if (!cfg || typeof cfg !== \"object\") {\n throw new Error(\"connectDIDSpace: options.transport is required\");\n }\n if (!isTransportKind((cfg as { kind?: unknown }).kind)) {\n throw new Error(\n `connectDIDSpace: unknown transport kind '${String(\n (cfg as { kind?: unknown }).kind,\n )}' (expected 'http' | 'ws' | 'static-readonly')`,\n );\n }\n\n let transport: Transport;\n switch (cfg.kind) {\n case \"http\": {\n if (!cfg.url) throw new Error(\"connectDIDSpace: http transport requires url\");\n if (!cfg.token) throw new Error(\"connectDIDSpace: http transport requires token\");\n assertSafeUrl(cfg.url);\n transport = new HttpTransport({ url: cfg.url, token: cfg.token });\n break;\n }\n case \"ws\": {\n if (!cfg.url) throw new Error(\"connectDIDSpace: ws transport requires url\");\n if (!cfg.token) throw new Error(\"connectDIDSpace: ws transport requires token\");\n assertSafeUrl(cfg.url);\n const ws = new WsTransport({\n url: cfg.url,\n token: cfg.token,\n namespace: cfg.namespace,\n requestTimeout: cfg.requestTimeout,\n });\n await ws.connect();\n transport = ws;\n break;\n }\n case \"static-readonly\": {\n if (!cfg.url) throw new Error(\"connectDIDSpace: static-readonly transport requires url\");\n assertSafeUrl(cfg.url);\n transport = new StaticReadonlyTransport({\n url: cfg.url,\n token: cfg.token,\n allowPrivateNetwork: cfg.allowPrivateNetwork,\n });\n break;\n }\n }\n\n return new DIDSpaceClient({\n transport,\n name: options.name,\n description: options.description,\n accessMode: options.accessMode,\n });\n}\n"],"mappings":"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"}
|