@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,157 @@
|
|
|
1
|
+
const require_d1_schema = require('./d1-schema.cjs');
|
|
2
|
+
const require_share_store = require('./share-store.cjs');
|
|
3
|
+
const require_rename_guard = require('./rename-guard.cjs');
|
|
4
|
+
|
|
5
|
+
//#region src/sqlite-share-store.ts
|
|
6
|
+
/** Map a libsql Row to the snake_case ShareRow shape. */
|
|
7
|
+
function toRow(r) {
|
|
8
|
+
return {
|
|
9
|
+
id: r.id,
|
|
10
|
+
owner_did: r.owner_did,
|
|
11
|
+
source_path: r.source_path,
|
|
12
|
+
decl_path: r.decl_path,
|
|
13
|
+
slug: r.slug,
|
|
14
|
+
kind: r.kind,
|
|
15
|
+
status: r.status,
|
|
16
|
+
decl_cid: r.decl_cid ?? null,
|
|
17
|
+
config_json: r.config_json,
|
|
18
|
+
created_at: Number(r.created_at),
|
|
19
|
+
updated_at: Number(r.updated_at)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var SqliteShareStore = class {
|
|
23
|
+
constructor(client) {
|
|
24
|
+
this.client = client;
|
|
25
|
+
}
|
|
26
|
+
async ensureTable() {
|
|
27
|
+
await require_rename_guard.renameLegacyTable(this.client, "shares", "ds_shares");
|
|
28
|
+
await this.client.batch([require_d1_schema.SHARES_TABLE_SQL, ...require_d1_schema.SHARES_INDEX_SQL].map((sql) => ({
|
|
29
|
+
sql,
|
|
30
|
+
args: []
|
|
31
|
+
})), "write");
|
|
32
|
+
}
|
|
33
|
+
/** Release the underlying libsql client (daemon shutdown). */
|
|
34
|
+
close() {
|
|
35
|
+
this.client.close();
|
|
36
|
+
}
|
|
37
|
+
async resolveBySlug(slug) {
|
|
38
|
+
if (!slug) return null;
|
|
39
|
+
const { rows } = await this.client.execute({
|
|
40
|
+
sql: "SELECT * FROM ds_shares WHERE slug = ?",
|
|
41
|
+
args: [slug]
|
|
42
|
+
});
|
|
43
|
+
return rows[0] ? require_share_store.rowToEntry(toRow(rows[0])) : null;
|
|
44
|
+
}
|
|
45
|
+
async listByOwner(ownerDid) {
|
|
46
|
+
const { rows } = await this.client.execute({
|
|
47
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND status = 'active' ORDER BY created_at DESC",
|
|
48
|
+
args: [ownerDid]
|
|
49
|
+
});
|
|
50
|
+
return rows.map((r) => require_share_store.rowToEntry(toRow(r))).filter((e) => e.config.visibility !== "unlisted");
|
|
51
|
+
}
|
|
52
|
+
async listByInstance(ownerDid, instanceDid) {
|
|
53
|
+
const prefix = `instances/${instanceDid}/`;
|
|
54
|
+
const { rows } = await this.client.execute({
|
|
55
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND source_path LIKE ? AND status = 'active' ORDER BY created_at DESC",
|
|
56
|
+
args: [ownerDid, `${prefix}%`]
|
|
57
|
+
});
|
|
58
|
+
return rows.map((r) => require_share_store.rowToEntry(toRow(r))).filter((e) => e.config.visibility !== "unlisted");
|
|
59
|
+
}
|
|
60
|
+
async readByOwnerAndSlug(ownerDid, slug) {
|
|
61
|
+
const { rows } = await this.client.execute({
|
|
62
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND slug = ?",
|
|
63
|
+
args: [ownerDid, slug]
|
|
64
|
+
});
|
|
65
|
+
return rows[0] ? require_share_store.rowToEntry(toRow(rows[0])) : null;
|
|
66
|
+
}
|
|
67
|
+
async findByOwnerAndDeclPath(ownerDid, declPath) {
|
|
68
|
+
const { rows } = await this.client.execute({
|
|
69
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND decl_path = ?",
|
|
70
|
+
args: [ownerDid, declPath]
|
|
71
|
+
});
|
|
72
|
+
return rows[0] ? require_share_store.rowToEntry(toRow(rows[0])) : null;
|
|
73
|
+
}
|
|
74
|
+
async findNestedConflict(ownerDid, declPath, sourcePath) {
|
|
75
|
+
const { rows } = await this.client.execute({
|
|
76
|
+
sql: `SELECT decl_path FROM ds_shares
|
|
77
|
+
WHERE owner_did = ?
|
|
78
|
+
AND decl_path != ?
|
|
79
|
+
AND (
|
|
80
|
+
(source_path != '' AND ? LIKE (source_path || '/%'))
|
|
81
|
+
OR (source_path != '' AND source_path LIKE (? || '/%'))
|
|
82
|
+
)
|
|
83
|
+
LIMIT 1`,
|
|
84
|
+
args: [
|
|
85
|
+
ownerDid,
|
|
86
|
+
declPath,
|
|
87
|
+
sourcePath,
|
|
88
|
+
sourcePath
|
|
89
|
+
]
|
|
90
|
+
});
|
|
91
|
+
return rows[0] ? rows[0].decl_path : null;
|
|
92
|
+
}
|
|
93
|
+
async findSlugConflict(slug, ownerDid, declPath) {
|
|
94
|
+
const { rows } = await this.client.execute({
|
|
95
|
+
sql: "SELECT decl_path FROM ds_shares WHERE slug = ? AND NOT (owner_did = ? AND decl_path = ?) LIMIT 1",
|
|
96
|
+
args: [
|
|
97
|
+
slug,
|
|
98
|
+
ownerDid,
|
|
99
|
+
declPath
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
return rows[0] ? rows[0].decl_path : null;
|
|
103
|
+
}
|
|
104
|
+
async upsert(row) {
|
|
105
|
+
await this.client.execute({
|
|
106
|
+
sql: `INSERT INTO ds_shares
|
|
107
|
+
(id, owner_did, source_path, decl_path, slug, kind, status, decl_cid, config_json, created_at, updated_at)
|
|
108
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
109
|
+
ON CONFLICT(owner_did, decl_path) DO UPDATE SET
|
|
110
|
+
slug = excluded.slug,
|
|
111
|
+
kind = excluded.kind,
|
|
112
|
+
status = excluded.status,
|
|
113
|
+
decl_cid = excluded.decl_cid,
|
|
114
|
+
config_json = excluded.config_json,
|
|
115
|
+
updated_at = excluded.updated_at`,
|
|
116
|
+
args: [
|
|
117
|
+
row.id,
|
|
118
|
+
row.owner_did,
|
|
119
|
+
row.source_path,
|
|
120
|
+
row.decl_path,
|
|
121
|
+
row.slug,
|
|
122
|
+
row.kind,
|
|
123
|
+
row.status,
|
|
124
|
+
row.decl_cid,
|
|
125
|
+
row.config_json,
|
|
126
|
+
row.created_at,
|
|
127
|
+
row.updated_at
|
|
128
|
+
]
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async deleteByOwnerAndDeclPath(ownerDid, declPath) {
|
|
132
|
+
await this.client.execute({
|
|
133
|
+
sql: "DELETE FROM ds_shares WHERE owner_did = ? AND decl_path = ?",
|
|
134
|
+
args: [ownerDid, declPath]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Open (or create) the daemon-global `_shares.db` libsql store at `dbPath`,
|
|
140
|
+
* `ensureTable()`d and ready. Node-only: the libsql + node:fs imports are
|
|
141
|
+
* DYNAMIC so this module stays eval-safe for the Cloudflare bundle (which only
|
|
142
|
+
* uses the type-only `SqliteShareStore` class, never this factory). Mirrors
|
|
143
|
+
* `MetadataDB.open`'s pattern (mkdir parent + dynamic `createClient`).
|
|
144
|
+
*/
|
|
145
|
+
async function openDaemonShareStore(dbPath) {
|
|
146
|
+
const { mkdirSync } = await import("node:fs");
|
|
147
|
+
const { dirname } = await import("node:path");
|
|
148
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
149
|
+
const { createClient } = await import("@libsql/client");
|
|
150
|
+
const store = new SqliteShareStore(createClient({ url: `file:${dbPath}` }));
|
|
151
|
+
await store.ensureTable();
|
|
152
|
+
return store;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
exports.SqliteShareStore = SqliteShareStore;
|
|
157
|
+
exports.openDaemonShareStore = openDaemonShareStore;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ShareEntry, ShareRow, ShareStore } from "./share-store.cjs";
|
|
2
|
+
import { Client } from "@libsql/client";
|
|
3
|
+
|
|
4
|
+
//#region src/sqlite-share-store.d.ts
|
|
5
|
+
declare class SqliteShareStore implements ShareStore {
|
|
6
|
+
private readonly client;
|
|
7
|
+
constructor(client: Client);
|
|
8
|
+
ensureTable(): Promise<void>;
|
|
9
|
+
/** Release the underlying libsql client (daemon shutdown). */
|
|
10
|
+
close(): void;
|
|
11
|
+
resolveBySlug(slug: string): Promise<ShareEntry | null>;
|
|
12
|
+
listByOwner(ownerDid: string): Promise<ShareEntry[]>;
|
|
13
|
+
listByInstance(ownerDid: string, instanceDid: string): Promise<ShareEntry[]>;
|
|
14
|
+
readByOwnerAndSlug(ownerDid: string, slug: string): Promise<ShareEntry | null>;
|
|
15
|
+
findByOwnerAndDeclPath(ownerDid: string, declPath: string): Promise<ShareEntry | null>;
|
|
16
|
+
findNestedConflict(ownerDid: string, declPath: string, sourcePath: string): Promise<string | null>;
|
|
17
|
+
findSlugConflict(slug: string, ownerDid: string, declPath: string): Promise<string | null>;
|
|
18
|
+
upsert(row: ShareRow): Promise<void>;
|
|
19
|
+
deleteByOwnerAndDeclPath(ownerDid: string, declPath: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Open (or create) the daemon-global `_shares.db` libsql store at `dbPath`,
|
|
23
|
+
* `ensureTable()`d and ready. Node-only: the libsql + node:fs imports are
|
|
24
|
+
* DYNAMIC so this module stays eval-safe for the Cloudflare bundle (which only
|
|
25
|
+
* uses the type-only `SqliteShareStore` class, never this factory). Mirrors
|
|
26
|
+
* `MetadataDB.open`'s pattern (mkdir parent + dynamic `createClient`).
|
|
27
|
+
*/
|
|
28
|
+
declare function openDaemonShareStore(dbPath: string): Promise<SqliteShareStore>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { SqliteShareStore, openDaemonShareStore };
|
|
31
|
+
//# sourceMappingURL=sqlite-share-store.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-share-store.d.cts","names":[],"sources":["../src/sqlite-share-store.ts"],"mappings":";;;;cAoCa,gBAAA,YAA4B,UAAA;EAAA,iBACV,MAAA;cAAA,MAAA,EAAQ,MAAA;EAE/B,WAAA,CAAA,GAAe,OAAA;EA4DlB;EAlDH,KAAA,CAAA;EAIM,aAAA,CAAc,IAAA,WAAe,OAAA,CAAQ,UAAA;EASrC,WAAA,CAAY,QAAA,WAAmB,OAAA,CAAQ,UAAA;EAQvC,cAAA,CAAe,QAAA,UAAkB,WAAA,WAAsB,OAAA,CAAQ,UAAA;EAS/D,kBAAA,CAAmB,QAAA,UAAkB,IAAA,WAAe,OAAA,CAAQ,UAAA;EAQ5D,sBAAA,CAAuB,QAAA,UAAkB,QAAA,WAAmB,OAAA,CAAQ,UAAA;EAQpE,kBAAA,CACJ,QAAA,UACA,QAAA,UACA,UAAA,WACC,OAAA;EAeG,gBAAA,CAAiB,IAAA,UAAc,QAAA,UAAkB,QAAA,WAAmB,OAAA;EAQpE,MAAA,CAAO,GAAA,EAAK,QAAA,GAAW,OAAA;EA4BvB,wBAAA,CAAyB,QAAA,UAAkB,QAAA,WAAmB,OAAA;AAAA;;;;;;;;iBAehD,oBAAA,CAAqB,MAAA,WAAiB,OAAA,CAAQ,gBAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ShareEntry, ShareRow, ShareStore } from "./share-store.mjs";
|
|
2
|
+
import { Client } from "@libsql/client";
|
|
3
|
+
|
|
4
|
+
//#region src/sqlite-share-store.d.ts
|
|
5
|
+
declare class SqliteShareStore implements ShareStore {
|
|
6
|
+
private readonly client;
|
|
7
|
+
constructor(client: Client);
|
|
8
|
+
ensureTable(): Promise<void>;
|
|
9
|
+
/** Release the underlying libsql client (daemon shutdown). */
|
|
10
|
+
close(): void;
|
|
11
|
+
resolveBySlug(slug: string): Promise<ShareEntry | null>;
|
|
12
|
+
listByOwner(ownerDid: string): Promise<ShareEntry[]>;
|
|
13
|
+
listByInstance(ownerDid: string, instanceDid: string): Promise<ShareEntry[]>;
|
|
14
|
+
readByOwnerAndSlug(ownerDid: string, slug: string): Promise<ShareEntry | null>;
|
|
15
|
+
findByOwnerAndDeclPath(ownerDid: string, declPath: string): Promise<ShareEntry | null>;
|
|
16
|
+
findNestedConflict(ownerDid: string, declPath: string, sourcePath: string): Promise<string | null>;
|
|
17
|
+
findSlugConflict(slug: string, ownerDid: string, declPath: string): Promise<string | null>;
|
|
18
|
+
upsert(row: ShareRow): Promise<void>;
|
|
19
|
+
deleteByOwnerAndDeclPath(ownerDid: string, declPath: string): Promise<void>;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Open (or create) the daemon-global `_shares.db` libsql store at `dbPath`,
|
|
23
|
+
* `ensureTable()`d and ready. Node-only: the libsql + node:fs imports are
|
|
24
|
+
* DYNAMIC so this module stays eval-safe for the Cloudflare bundle (which only
|
|
25
|
+
* uses the type-only `SqliteShareStore` class, never this factory). Mirrors
|
|
26
|
+
* `MetadataDB.open`'s pattern (mkdir parent + dynamic `createClient`).
|
|
27
|
+
*/
|
|
28
|
+
declare function openDaemonShareStore(dbPath: string): Promise<SqliteShareStore>;
|
|
29
|
+
//#endregion
|
|
30
|
+
export { SqliteShareStore, openDaemonShareStore };
|
|
31
|
+
//# sourceMappingURL=sqlite-share-store.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-share-store.d.mts","names":[],"sources":["../src/sqlite-share-store.ts"],"mappings":";;;;cAoCa,gBAAA,YAA4B,UAAA;EAAA,iBACV,MAAA;cAAA,MAAA,EAAQ,MAAA;EAE/B,WAAA,CAAA,GAAe,OAAA;EA4DlB;EAlDH,KAAA,CAAA;EAIM,aAAA,CAAc,IAAA,WAAe,OAAA,CAAQ,UAAA;EASrC,WAAA,CAAY,QAAA,WAAmB,OAAA,CAAQ,UAAA;EAQvC,cAAA,CAAe,QAAA,UAAkB,WAAA,WAAsB,OAAA,CAAQ,UAAA;EAS/D,kBAAA,CAAmB,QAAA,UAAkB,IAAA,WAAe,OAAA,CAAQ,UAAA;EAQ5D,sBAAA,CAAuB,QAAA,UAAkB,QAAA,WAAmB,OAAA,CAAQ,UAAA;EAQpE,kBAAA,CACJ,QAAA,UACA,QAAA,UACA,UAAA,WACC,OAAA;EAeG,gBAAA,CAAiB,IAAA,UAAc,QAAA,UAAkB,QAAA,WAAmB,OAAA;EAQpE,MAAA,CAAO,GAAA,EAAK,QAAA,GAAW,OAAA;EA4BvB,wBAAA,CAAyB,QAAA,UAAkB,QAAA,WAAmB,OAAA;AAAA;;;;;;;;iBAehD,oBAAA,CAAqB,MAAA,WAAiB,OAAA,CAAQ,gBAAA"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { SHARES_INDEX_SQL, SHARES_TABLE_SQL } from "./d1-schema.mjs";
|
|
2
|
+
import { rowToEntry } from "./share-store.mjs";
|
|
3
|
+
import { renameLegacyTable } from "./rename-guard.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/sqlite-share-store.ts
|
|
6
|
+
/** Map a libsql Row to the snake_case ShareRow shape. */
|
|
7
|
+
function toRow(r) {
|
|
8
|
+
return {
|
|
9
|
+
id: r.id,
|
|
10
|
+
owner_did: r.owner_did,
|
|
11
|
+
source_path: r.source_path,
|
|
12
|
+
decl_path: r.decl_path,
|
|
13
|
+
slug: r.slug,
|
|
14
|
+
kind: r.kind,
|
|
15
|
+
status: r.status,
|
|
16
|
+
decl_cid: r.decl_cid ?? null,
|
|
17
|
+
config_json: r.config_json,
|
|
18
|
+
created_at: Number(r.created_at),
|
|
19
|
+
updated_at: Number(r.updated_at)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
var SqliteShareStore = class {
|
|
23
|
+
constructor(client) {
|
|
24
|
+
this.client = client;
|
|
25
|
+
}
|
|
26
|
+
async ensureTable() {
|
|
27
|
+
await renameLegacyTable(this.client, "shares", "ds_shares");
|
|
28
|
+
await this.client.batch([SHARES_TABLE_SQL, ...SHARES_INDEX_SQL].map((sql) => ({
|
|
29
|
+
sql,
|
|
30
|
+
args: []
|
|
31
|
+
})), "write");
|
|
32
|
+
}
|
|
33
|
+
/** Release the underlying libsql client (daemon shutdown). */
|
|
34
|
+
close() {
|
|
35
|
+
this.client.close();
|
|
36
|
+
}
|
|
37
|
+
async resolveBySlug(slug) {
|
|
38
|
+
if (!slug) return null;
|
|
39
|
+
const { rows } = await this.client.execute({
|
|
40
|
+
sql: "SELECT * FROM ds_shares WHERE slug = ?",
|
|
41
|
+
args: [slug]
|
|
42
|
+
});
|
|
43
|
+
return rows[0] ? rowToEntry(toRow(rows[0])) : null;
|
|
44
|
+
}
|
|
45
|
+
async listByOwner(ownerDid) {
|
|
46
|
+
const { rows } = await this.client.execute({
|
|
47
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND status = 'active' ORDER BY created_at DESC",
|
|
48
|
+
args: [ownerDid]
|
|
49
|
+
});
|
|
50
|
+
return rows.map((r) => rowToEntry(toRow(r))).filter((e) => e.config.visibility !== "unlisted");
|
|
51
|
+
}
|
|
52
|
+
async listByInstance(ownerDid, instanceDid) {
|
|
53
|
+
const prefix = `instances/${instanceDid}/`;
|
|
54
|
+
const { rows } = await this.client.execute({
|
|
55
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND source_path LIKE ? AND status = 'active' ORDER BY created_at DESC",
|
|
56
|
+
args: [ownerDid, `${prefix}%`]
|
|
57
|
+
});
|
|
58
|
+
return rows.map((r) => rowToEntry(toRow(r))).filter((e) => e.config.visibility !== "unlisted");
|
|
59
|
+
}
|
|
60
|
+
async readByOwnerAndSlug(ownerDid, slug) {
|
|
61
|
+
const { rows } = await this.client.execute({
|
|
62
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND slug = ?",
|
|
63
|
+
args: [ownerDid, slug]
|
|
64
|
+
});
|
|
65
|
+
return rows[0] ? rowToEntry(toRow(rows[0])) : null;
|
|
66
|
+
}
|
|
67
|
+
async findByOwnerAndDeclPath(ownerDid, declPath) {
|
|
68
|
+
const { rows } = await this.client.execute({
|
|
69
|
+
sql: "SELECT * FROM ds_shares WHERE owner_did = ? AND decl_path = ?",
|
|
70
|
+
args: [ownerDid, declPath]
|
|
71
|
+
});
|
|
72
|
+
return rows[0] ? rowToEntry(toRow(rows[0])) : null;
|
|
73
|
+
}
|
|
74
|
+
async findNestedConflict(ownerDid, declPath, sourcePath) {
|
|
75
|
+
const { rows } = await this.client.execute({
|
|
76
|
+
sql: `SELECT decl_path FROM ds_shares
|
|
77
|
+
WHERE owner_did = ?
|
|
78
|
+
AND decl_path != ?
|
|
79
|
+
AND (
|
|
80
|
+
(source_path != '' AND ? LIKE (source_path || '/%'))
|
|
81
|
+
OR (source_path != '' AND source_path LIKE (? || '/%'))
|
|
82
|
+
)
|
|
83
|
+
LIMIT 1`,
|
|
84
|
+
args: [
|
|
85
|
+
ownerDid,
|
|
86
|
+
declPath,
|
|
87
|
+
sourcePath,
|
|
88
|
+
sourcePath
|
|
89
|
+
]
|
|
90
|
+
});
|
|
91
|
+
return rows[0] ? rows[0].decl_path : null;
|
|
92
|
+
}
|
|
93
|
+
async findSlugConflict(slug, ownerDid, declPath) {
|
|
94
|
+
const { rows } = await this.client.execute({
|
|
95
|
+
sql: "SELECT decl_path FROM ds_shares WHERE slug = ? AND NOT (owner_did = ? AND decl_path = ?) LIMIT 1",
|
|
96
|
+
args: [
|
|
97
|
+
slug,
|
|
98
|
+
ownerDid,
|
|
99
|
+
declPath
|
|
100
|
+
]
|
|
101
|
+
});
|
|
102
|
+
return rows[0] ? rows[0].decl_path : null;
|
|
103
|
+
}
|
|
104
|
+
async upsert(row) {
|
|
105
|
+
await this.client.execute({
|
|
106
|
+
sql: `INSERT INTO ds_shares
|
|
107
|
+
(id, owner_did, source_path, decl_path, slug, kind, status, decl_cid, config_json, created_at, updated_at)
|
|
108
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
109
|
+
ON CONFLICT(owner_did, decl_path) DO UPDATE SET
|
|
110
|
+
slug = excluded.slug,
|
|
111
|
+
kind = excluded.kind,
|
|
112
|
+
status = excluded.status,
|
|
113
|
+
decl_cid = excluded.decl_cid,
|
|
114
|
+
config_json = excluded.config_json,
|
|
115
|
+
updated_at = excluded.updated_at`,
|
|
116
|
+
args: [
|
|
117
|
+
row.id,
|
|
118
|
+
row.owner_did,
|
|
119
|
+
row.source_path,
|
|
120
|
+
row.decl_path,
|
|
121
|
+
row.slug,
|
|
122
|
+
row.kind,
|
|
123
|
+
row.status,
|
|
124
|
+
row.decl_cid,
|
|
125
|
+
row.config_json,
|
|
126
|
+
row.created_at,
|
|
127
|
+
row.updated_at
|
|
128
|
+
]
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
async deleteByOwnerAndDeclPath(ownerDid, declPath) {
|
|
132
|
+
await this.client.execute({
|
|
133
|
+
sql: "DELETE FROM ds_shares WHERE owner_did = ? AND decl_path = ?",
|
|
134
|
+
args: [ownerDid, declPath]
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Open (or create) the daemon-global `_shares.db` libsql store at `dbPath`,
|
|
140
|
+
* `ensureTable()`d and ready. Node-only: the libsql + node:fs imports are
|
|
141
|
+
* DYNAMIC so this module stays eval-safe for the Cloudflare bundle (which only
|
|
142
|
+
* uses the type-only `SqliteShareStore` class, never this factory). Mirrors
|
|
143
|
+
* `MetadataDB.open`'s pattern (mkdir parent + dynamic `createClient`).
|
|
144
|
+
*/
|
|
145
|
+
async function openDaemonShareStore(dbPath) {
|
|
146
|
+
const { mkdirSync } = await import("node:fs");
|
|
147
|
+
const { dirname } = await import("node:path");
|
|
148
|
+
mkdirSync(dirname(dbPath), { recursive: true });
|
|
149
|
+
const { createClient } = await import("@libsql/client");
|
|
150
|
+
const store = new SqliteShareStore(createClient({ url: `file:${dbPath}` }));
|
|
151
|
+
await store.ensureTable();
|
|
152
|
+
return store;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
export { SqliteShareStore, openDaemonShareStore };
|
|
157
|
+
//# sourceMappingURL=sqlite-share-store.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-share-store.mjs","names":[],"sources":["../src/sqlite-share-store.ts"],"sourcesContent":["/**\n * Phase 1.1 — SqliteShareStore: libsql (Node daemon) implementation of ShareStore.\n *\n * Hand-written sibling of `D1ShareStore` (no adapter) over the libsql client\n * shape (`execute({sql,args})` / `batch(stmts,\"write\")`, same as\n * `sqlite-gc-queue.ts`). Behaviour is byte-for-byte aligned with `D1ShareStore`\n * — proven by the shared `runShareStoreContract` suite running both backends.\n *\n * Node wires this as a DAEMON-GLOBAL single store (one `rootPath/_shares.db`,\n * NOT a per-space `_metadata.db`): `/s/{slug}` is a caller-less public route, so\n * the slug → owner reverse lookup needs one global registry, exactly like CF's\n * single shared D1. Owner isolation rides the `owner_did` column / composite key.\n */\n\nimport type { InValue, Client as LibsqlClient, Row } from \"@libsql/client\";\nimport { SHARES_INDEX_SQL, SHARES_TABLE_SQL } from \"./d1-schema.js\";\nimport { renameLegacyTable } from \"./rename-guard.js\";\nimport { rowToEntry, type ShareEntry, type ShareRow, type ShareStore } from \"./share-store.js\";\n\n/** Map a libsql Row to the snake_case ShareRow shape. */\nfunction toRow(r: Row): ShareRow {\n return {\n id: r.id as string,\n owner_did: r.owner_did as string,\n source_path: r.source_path as string,\n decl_path: r.decl_path as string,\n slug: r.slug as string,\n kind: r.kind as ShareRow[\"kind\"],\n status: r.status as ShareRow[\"status\"],\n decl_cid: (r.decl_cid as string | null) ?? null,\n config_json: r.config_json as string,\n created_at: Number(r.created_at),\n updated_at: Number(r.updated_at),\n };\n}\n\nexport class SqliteShareStore implements ShareStore {\n constructor(private readonly client: LibsqlClient) {}\n\n async ensureTable(): Promise<void> {\n // Upgrade guard: rename old unprefixed table before CREATE TABLE IF NOT EXISTS.\n await renameLegacyTable(this.client, \"shares\", \"ds_shares\");\n await this.client.batch(\n [SHARES_TABLE_SQL, ...SHARES_INDEX_SQL].map((sql) => ({ sql, args: [] as InValue[] })),\n \"write\",\n );\n }\n\n /** Release the underlying libsql client (daemon shutdown). */\n close(): void {\n this.client.close();\n }\n\n async resolveBySlug(slug: string): Promise<ShareEntry | null> {\n if (!slug) return null;\n const { rows } = await this.client.execute({\n sql: \"SELECT * FROM ds_shares WHERE slug = ?\",\n args: [slug],\n });\n return rows[0] ? rowToEntry(toRow(rows[0])) : null;\n }\n\n async listByOwner(ownerDid: string): Promise<ShareEntry[]> {\n const { rows } = await this.client.execute({\n sql: \"SELECT * FROM ds_shares WHERE owner_did = ? AND status = 'active' ORDER BY created_at DESC\",\n args: [ownerDid],\n });\n return rows.map((r) => rowToEntry(toRow(r))).filter((e) => e.config.visibility !== \"unlisted\");\n }\n\n async listByInstance(ownerDid: string, instanceDid: string): Promise<ShareEntry[]> {\n const prefix = `instances/${instanceDid}/`;\n const { rows } = await this.client.execute({\n sql: \"SELECT * FROM ds_shares WHERE owner_did = ? AND source_path LIKE ? AND status = 'active' ORDER BY created_at DESC\",\n args: [ownerDid, `${prefix}%`],\n });\n return rows.map((r) => rowToEntry(toRow(r))).filter((e) => e.config.visibility !== \"unlisted\");\n }\n\n async readByOwnerAndSlug(ownerDid: string, slug: string): Promise<ShareEntry | null> {\n const { rows } = await this.client.execute({\n sql: \"SELECT * FROM ds_shares WHERE owner_did = ? AND slug = ?\",\n args: [ownerDid, slug],\n });\n return rows[0] ? rowToEntry(toRow(rows[0])) : null;\n }\n\n async findByOwnerAndDeclPath(ownerDid: string, declPath: string): Promise<ShareEntry | null> {\n const { rows } = await this.client.execute({\n sql: \"SELECT * FROM ds_shares WHERE owner_did = ? AND decl_path = ?\",\n args: [ownerDid, declPath],\n });\n return rows[0] ? rowToEntry(toRow(rows[0])) : null;\n }\n\n async findNestedConflict(\n ownerDid: string,\n declPath: string,\n sourcePath: string,\n ): Promise<string | null> {\n const { rows } = await this.client.execute({\n sql: `SELECT decl_path FROM ds_shares\n WHERE owner_did = ?\n AND decl_path != ?\n AND (\n (source_path != '' AND ? LIKE (source_path || '/%'))\n OR (source_path != '' AND source_path LIKE (? || '/%'))\n )\n LIMIT 1`,\n args: [ownerDid, declPath, sourcePath, sourcePath],\n });\n return rows[0] ? (rows[0].decl_path as string) : null;\n }\n\n async findSlugConflict(slug: string, ownerDid: string, declPath: string): Promise<string | null> {\n const { rows } = await this.client.execute({\n sql: \"SELECT decl_path FROM ds_shares WHERE slug = ? AND NOT (owner_did = ? AND decl_path = ?) LIMIT 1\",\n args: [slug, ownerDid, declPath],\n });\n return rows[0] ? (rows[0].decl_path as string) : null;\n }\n\n async upsert(row: ShareRow): Promise<void> {\n await this.client.execute({\n sql: `INSERT INTO ds_shares\n (id, owner_did, source_path, decl_path, slug, kind, status, decl_cid, config_json, created_at, updated_at)\n VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)\n ON CONFLICT(owner_did, decl_path) DO UPDATE SET\n slug = excluded.slug,\n kind = excluded.kind,\n status = excluded.status,\n decl_cid = excluded.decl_cid,\n config_json = excluded.config_json,\n updated_at = excluded.updated_at`,\n args: [\n row.id,\n row.owner_did,\n row.source_path,\n row.decl_path,\n row.slug,\n row.kind,\n row.status,\n row.decl_cid,\n row.config_json,\n row.created_at,\n row.updated_at,\n ],\n });\n }\n\n async deleteByOwnerAndDeclPath(ownerDid: string, declPath: string): Promise<void> {\n await this.client.execute({\n sql: \"DELETE FROM ds_shares WHERE owner_did = ? AND decl_path = ?\",\n args: [ownerDid, declPath],\n });\n }\n}\n\n/**\n * Open (or create) the daemon-global `_shares.db` libsql store at `dbPath`,\n * `ensureTable()`d and ready. Node-only: the libsql + node:fs imports are\n * DYNAMIC so this module stays eval-safe for the Cloudflare bundle (which only\n * uses the type-only `SqliteShareStore` class, never this factory). Mirrors\n * `MetadataDB.open`'s pattern (mkdir parent + dynamic `createClient`).\n */\nexport async function openDaemonShareStore(dbPath: string): Promise<SqliteShareStore> {\n // biome-ignore lint/style/noRestrictedImports: daemon-global share store is Node-only; the dynamic import keeps this module CF-eval-safe\n const { mkdirSync } = await import(\"node:fs\");\n // biome-ignore lint/style/noRestrictedImports: Node-only; dynamic import keeps the module CF-eval-safe\n const { dirname } = await import(\"node:path\");\n mkdirSync(dirname(dbPath), { recursive: true });\n const { createClient } = await import(\"@libsql/client\");\n const store = new SqliteShareStore(createClient({ url: `file:${dbPath}` }));\n await store.ensureTable();\n return store;\n}\n"],"mappings":"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"}
|