34 lines
1.6 KiB
Markdown
34 lines
1.6 KiB
Markdown
# Tasks: storage-set-partial
|
|
|
|
## 1. Abstract API
|
|
|
|
- [x] 1.1 Add `abstract setPartial(key, offset, bytes, signal?): Promise<void>` to `AbstractStorage`.
|
|
- [x] 1.2 Add `protected defaultSetPartial(...)` helper alongside `defaultGetPartial`.
|
|
- [x] 1.3 Add required readonly `capabilities` property; default all flags `false`.
|
|
|
|
## 2. MemoryStorage native impl
|
|
|
|
- [x] 2.1 `MemoryStorage.setPartial(key, offset, bytes)` — resize backing `Uint8Array`, `arr.set(bytes, offset)`.
|
|
- [x] 2.2 `capabilities = { partialReads: true, partialWrites: true, nativeStreams: true, atomicWrites: true, contentAddressable: false }`.
|
|
- [x] 2.3 `NamespacedStorage.setPartial` delegates with prefixed key; capabilities mirror inner.
|
|
|
|
## 3. storage-s3 fallback wiring
|
|
|
|
- [x] 3.1 `S3Storage.setPartial = defaultSetPartial` via thin override.
|
|
- [x] 3.2 `capabilities = { partialReads: <native if Range>, partialWrites: false, nativeStreams: true, atomicWrites: true, contentAddressable: false }`.
|
|
|
|
## 4. Spec
|
|
|
|
- [x] 4.1 Add `STORAGE-PARTIAL-WRITE-01` … `STORAGE-PARTIAL-WRITE-04` with `**Verified by:**` lines.
|
|
|
|
## 5. Conformance tests
|
|
|
|
- [x] 5.1 `src/abstract/abstract.spec-conformance.test.ts` — `-01` (signature), `-02` (sparse extension), `-03` (overlap overwrite), `-04` (capabilities default).
|
|
- [x] 5.2 `src/memory/memory.spec-conformance.test.ts` — native `setPartial`, `partialWrites === true`.
|
|
|
|
## 6. Verify
|
|
|
|
- [x] 6.1 `bunx turbo lint typecheck test --filter=@suaveplan/storage` green.
|
|
- [x] 6.2 `bunx turbo test:coverage --filter=@suaveplan/storage` 100/100/100/100.
|
|
- [x] 6.3 `bun scripts/openspec-conformance.ts @suaveplan/storage` PASS.
|