3.7 KiB
3.7 KiB
Tasks — enterprise-clipboard
Implementation checklist for migrating
@suaveplan/clipboardfrom../suaveplan/packages/browser/clipboard(1.0.3) intopackages/foundation/data/clipboard/at 0.1.0 with enterprise surface.
Spec-inventory checklist
Spec delta contains 17 ### Requirement blocks. Each item below maps 1:1 to a spec
requirement and is checked off as the implementation lands.
- R1 Stable error code registry —
src/errors/errors.ts - R2 ClipboardError extends SuaveplanError —
src/errors/errors.ts - R3 Secure-context guard —
src/security/security.ts - R4 AsyncQueue serialization —
src/queue/queue.ts - R5 Permission state probe —
src/permissions/permissions.ts - R6 Permission change subscription —
src/permissions/permissions.ts - R7 Plain-text copy via Clipboard API —
src/manager/manager.ts - R8 Plain-text copy fallback —
src/manager/manager.ts+src/fallback/fallback.ts - R9 Rich-content copy with image and blobs —
src/manager/manager.ts - R10 Rich-content read with image and blobs —
src/manager/manager.ts - R11 HTML sanitizer hook —
src/manager/manager.ts+src/sanitizer/sanitizer.ts - R12 Paste-event read fallback —
src/fallback/fallback.ts - R13 Async queue serializes manager calls —
src/manager/manager.ts - R14 Secure-context gate on copy —
src/manager/manager.ts - R15 OpenTelemetry instrumentation —
src/observability/observability.ts - R16 Injectable navigator and options bag —
src/manager/manager.ts - R17 Tree-shakeable subpath exports —
package.json
Steps
- Scaffold
packages/foundation/data/clipboard/withpackage.json,vite.config.ts,vitest.config.ts,tsconfig.lib.json,README.md. - Author shared types in
src/types/clipboard.types.ts. - Implement
src/errors/errors.tswithCLIPBOARD_CODES, metadata,ClipboardError. Adderrors.md+errors.test.ts. - Implement
src/security/security.ts(isSecure,requireSecureContext). - Implement
src/queue/queue.ts(AsyncQueue). - Implement
src/sanitizer/sanitizer.ts(default identity + interface). - Implement
src/observability/observability.ts—createClipboardObservability+ types module. - Implement
src/permissions/permissions.ts— probe + change subscription. - Implement
src/fallback/fallback.ts— textarea+execCommand copy + paste-event read fallback. - Implement
src/manager/manager.ts—ClipboardManagerorchestrating queue, secure-context, observability, permissions, fallback, sanitizer. - Wire
src/index.tswith explicit named re-exports. - Write co-located
.mdfor every implementation file (≥200 words, six required sections, with simple + advanced examples that compile). - Write tests at 100% line/branch/function/statement coverage in
vitest.config.ts(provider: 'istanbul',environment: 'happy-dom',pool: 'forks'). - Add
src/index.test.tscovering package-level invariants (subpath exports present, no node imports). - Add subpath exports for every feature module in
package.jsonexportsmap. - Update
scripts/folder-reorg/assignment.ymlto listclipboardunder thedataplugin. - Run
bun scripts/folder-reorg/generate-manifest.tsto refreshMANIFEST.md. - Run gates:
bunx turbo lint typecheck test build --filter=@suaveplan/clipboardandbunx turbo test:coverage --filter=@suaveplan/clipboard. - Flip
@suaveplan/clipboard–→✅inSTATUS.md. - Fold
specs/clipboard/spec.mdintoopenspec/specs/clipboard/spec.md. - Move
openspec/changes/enterprise-clipboard/→openspec/archive/2026-05-25-enterprise-clipboard/.