Files
suaveplan/packages/foundation/data/clipboard/src/index.ts
2026-05-27 23:47:53 +01:00

70 lines
1.9 KiB
TypeScript

/**
* `@suaveplan/clipboard` — enterprise Clipboard API abstraction.
*
* Browser-tier facade over `navigator.clipboard` with a textarea +
* `execCommand` fallback, paste-event read fallback, async FIFO
* serialization, secure-context guard, image / blob copy + read via
* `ClipboardItem`, permission change subscription, focus-aware retry,
* sanitizer hook, OpenTelemetry instrumentation, and a typed error
* hierarchy under the `CLIPBOARD.*` namespace.
*/
// Errors
export {
asClipboardError,
CLIPBOARD_CODES,
CLIPBOARD_ERROR_METADATA,
type ClipboardCodeMetadata,
ClipboardError,
type ClipboardErrorCode,
} from "./errors/errors.js";
// Fallback
export {
copyTextFallback,
dispatchSyntheticPaste,
readTextFallback,
} from "./fallback/fallback.js";
// Manager
export { ClipboardManager } from "./manager/manager.js";
// Observability
export { createClipboardObservability } from "./observability/observability.js";
export type {
ClipboardCounters,
ClipboardHistograms,
ClipboardObservability,
ClipboardObservabilityOptions,
} from "./observability/observability.types.js";
// Permissions
export {
checkPermissions,
onPermissionChange,
} from "./permissions/permissions.js";
// Queue
export { AsyncQueue } from "./queue/queue.js";
// Sanitizer
export {
createTagAllowlistSanitizer,
identitySanitizer,
} from "./sanitizer/sanitizer.js";
// Security
export {
isSecure,
requireSecureContext,
waitForNextFocus,
} from "./security/security.js";
// Types
export {
type ClipboardBlobMap,
type ClipboardData,
type ClipboardNavigator,
type ClipboardOptions,
type ClipboardPermissionState,
type ClipboardResult,
type ClipboardSanitizer,
type ClipboardWindowLike,
DEFAULT_CLIPBOARD_OPTIONS,
type PermissionChangeListener,
type PermissionResult,
type PermissionStatusLike,
} from "./types/clipboard.types.js";