83 lines
3.1 KiB
TypeScript
83 lines
3.1 KiB
TypeScript
/**
|
|
* Tree-shake verification — ensures every public export is importable
|
|
* without triggering side-effects on unused paths.
|
|
*/
|
|
|
|
import { describe, expect, it } from "@suaveplan/testing/runner";
|
|
|
|
describe("tree-shake imports", () => {
|
|
it("imports from guard subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/guard/idempotency-guard.js");
|
|
expect(typeof mod.IdempotencyGuard).toBe("function");
|
|
});
|
|
|
|
it("imports from store subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/store/memory-store.js");
|
|
expect(typeof mod.MemoryIdempotencyStore).toBe("function");
|
|
});
|
|
|
|
it("imports from key subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/key/key-generator.js");
|
|
expect(typeof mod.compositeKey).toBe("function");
|
|
expect(typeof mod.fingerprintPayload).toBe("function");
|
|
expect(typeof mod.generateIdempotencyKey).toBe("function");
|
|
});
|
|
|
|
it("imports from errors subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/errors/idempotency-error.js");
|
|
expect(typeof mod.IdempotencyConflictError).toBe("function");
|
|
expect(typeof mod.IdempotencyMismatchError).toBe("function");
|
|
expect(typeof mod.LockAcquisitionError).toBe("function");
|
|
expect(typeof mod.VersionConflictError).toBe("function");
|
|
});
|
|
|
|
it("imports from distributed subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/distributed/distributed-guard.js");
|
|
expect(typeof mod.DistributedIdempotencyGuard).toBe("function");
|
|
expect(typeof mod.MemoryLockProvider).toBe("function");
|
|
});
|
|
|
|
it("imports from metrics subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/metrics/idempotency-metrics.js");
|
|
expect(typeof mod.IdempotencyMetrics).toBe("function");
|
|
});
|
|
|
|
it("imports from versioning subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/versioning/key-versioning.js");
|
|
expect(typeof mod.KeyVersioning).toBe("function");
|
|
});
|
|
|
|
it("imports from middleware subpath without error", {
|
|
timeout: 30000,
|
|
}, async () => {
|
|
const mod = await import("../src/middleware/idempotency-middleware.js");
|
|
expect(typeof mod.createIdempotencyMiddleware).toBe("function");
|
|
});
|
|
|
|
it("imports error-codes without error", { timeout: 30000 }, async () => {
|
|
const mod = await import("../src/error-codes/error-codes.js");
|
|
expect(typeof mod.IDEMPOTENCY_ERROR_METADATA).toBe("object");
|
|
expect(typeof mod.registerIdempotencyErrorCodes).toBe("function");
|
|
});
|
|
|
|
it("imports schemas without error", { timeout: 30000 }, async () => {
|
|
const mod = await import("../src/schemas/idempotency.schemas.js");
|
|
expect(typeof mod.IdempotencyRecordSchema).toBe("object");
|
|
expect(typeof mod.IdempotencyGuardConfigSchema).toBe("object");
|
|
});
|
|
});
|