@cloudbitmaps/core 0.19.1 → 0.21.0
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/README.md +85 -0
- package/dist/{chunk-RSLVTRJY.js → chunk-IGLIZBR7.js} +982 -281
- package/dist/chunk-IGLIZBR7.js.map +7 -0
- package/dist/core/absent-operands.d.ts +8 -0
- package/dist/core/audit.d.ts +67 -4
- package/dist/core/bit-route.d.ts +2 -1
- package/dist/core/blob.d.ts +12 -1
- package/dist/core/bulk-load.d.ts +148 -0
- package/dist/core/cas-retry.d.ts +27 -0
- package/dist/core/check.d.ts +22 -0
- package/dist/core/chunk-checks.d.ts +6 -1
- package/dist/core/chunk-window.d.ts +11 -4
- package/dist/core/combine-expr.d.ts +1 -3
- package/dist/core/combine-feed.d.ts +2 -16
- package/dist/core/combine-many.d.ts +21 -15
- package/dist/core/concurrency.d.ts +8 -0
- package/dist/core/consistency.d.ts +76 -18
- package/dist/core/crbm/fingerprint.d.ts +23 -0
- package/dist/core/crbm/format.d.ts +2 -5
- package/dist/core/crbm/frame.d.ts +10 -0
- package/dist/core/crbm/plan-reads.d.ts +9 -3
- package/dist/core/crbm/reader.d.ts +51 -12
- package/dist/core/crbm/varint.d.ts +2 -1
- package/dist/core/crbm/writer.d.ts +5 -1
- package/dist/core/crbm-open.d.ts +154 -0
- package/dist/core/crbm-storage-source.d.ts +243 -490
- package/dist/core/crbm-write.d.ts +75 -0
- package/dist/core/crypto.d.ts +6 -1
- package/dist/core/engine.d.ts +239 -47
- package/dist/core/erase-id.d.ts +97 -27
- package/dist/core/erasure.d.ts +4 -3
- package/dist/core/errors.d.ts +8 -2
- package/dist/core/generation-gc.d.ts +131 -16
- package/dist/core/generation-list.d.ts +11 -0
- package/dist/core/id-window.d.ts +46 -0
- package/dist/core/invalidation-scope.d.ts +77 -0
- package/dist/core/known-generations-shape.d.ts +13 -0
- package/dist/core/known-generations.d.ts +147 -0
- package/dist/core/leases.d.ts +9 -1
- package/dist/core/ledger-seed.d.ts +17 -0
- package/dist/core/load.d.ts +17 -36
- package/dist/core/lru.d.ts +2 -15
- package/dist/core/metrics.d.ts +9 -7
- package/dist/core/order.d.ts +2 -0
- package/dist/core/pinned-storage-source.d.ts +7 -7
- package/dist/core/pointer-id.d.ts +19 -0
- package/dist/core/ports.d.ts +210 -45
- package/dist/core/publish.d.ts +207 -0
- package/dist/core/reader-defaults.d.ts +14 -3
- package/dist/core/registry-scan.d.ts +0 -2
- package/dist/core/retention-sweep.d.ts +69 -65
- package/dist/core/retention.d.ts +1 -1
- package/dist/core/retry.d.ts +12 -19
- package/dist/core/rollback.d.ts +62 -32
- package/dist/core/summary.d.ts +74 -25
- package/dist/core/token.d.ts +13 -8
- package/dist/core/validate.d.ts +2 -0
- package/dist/driver-kit.d.ts +6 -1
- package/dist/driver-kit.js +90 -10
- package/dist/driver-kit.js.map +3 -3
- package/dist/drivers/_shared/bytes.d.ts +6 -0
- package/dist/drivers/_shared/faults.d.ts +15 -0
- package/dist/drivers/_shared/object-keys.d.ts +18 -0
- package/dist/drivers/_shared/object-registry-keys.d.ts +0 -2
- package/dist/drivers/_shared/object-registry.d.ts +3 -1
- package/dist/drivers/_shared/options.d.ts +19 -0
- package/dist/drivers/_shared/registry.d.ts +31 -19
- package/dist/drivers/localfs/exact-case.d.ts +0 -3
- package/dist/drivers/localfs/fs-util.d.ts +22 -0
- package/dist/drivers/localfs/registry.d.ts +10 -4
- package/dist/drivers/localfs/storage.d.ts +16 -8
- package/dist/drivers/memory.d.ts +14 -9
- package/dist/drivers/retry/retrying-chunk-source.d.ts +1 -5
- package/dist/export/index.d.ts +16 -0
- package/dist/index.d.ts +2 -5
- package/dist/index.js +4303 -2938
- package/dist/index.js.map +4 -4
- package/package.json +1 -1
- package/dist/chunk-RSLVTRJY.js.map +0 -7
- package/dist/core/cost.d.ts +0 -351
- package/dist/core/kept-generations.d.ts +0 -40
|
@@ -19,6 +19,13 @@ export declare const mapFsError: (err: unknown) => unknown;
|
|
|
19
19
|
* Containment of symlinked *directory* components assumes the root itself is not attacker-writable.
|
|
20
20
|
*/
|
|
21
21
|
export declare const O_NOFOLLOW: number;
|
|
22
|
+
/**
|
|
23
|
+
* The modes LocalFs creates what it stores with: files readable and writable by their owner alone, directories
|
|
24
|
+
* searchable by it alone, so another user of the machine cannot read or list a segment. A process umask can only
|
|
25
|
+
* remove bits from these, never add any. On Windows Node ignores a mode apart from the read-only bit, so passing
|
|
26
|
+
* them there changes nothing.
|
|
27
|
+
*/
|
|
28
|
+
export declare const FILE_MODE = 384;
|
|
22
29
|
/**
|
|
23
30
|
* Best-effort parent-directory fsync, so a just-published `rename`/`link` survives a crash. Without it the
|
|
24
31
|
* directory entry can still be in the page cache when power goes: the generation's bytes are durable and
|
|
@@ -31,3 +38,18 @@ export declare function fsyncDir(dir: string): Promise<void>;
|
|
|
31
38
|
* or object as a whole one. A write that makes no progress is a full device.
|
|
32
39
|
*/
|
|
33
40
|
export declare function writeAll(handle: FileHandle, bytes: Uint8Array): Promise<void>;
|
|
41
|
+
/**
|
|
42
|
+
* Create `dir` and the directories missing above it, private from `top` down: what is missing above `top` is created
|
|
43
|
+
* with the default mode (another service may need to traverse it), `top` and everything below it {@link DIR_MODE}. A
|
|
44
|
+
* directory that exists keeps its mode.
|
|
45
|
+
*/
|
|
46
|
+
export declare function makeDirs(dir: string, top: string): Promise<void>;
|
|
47
|
+
/** The name of a temp file beside `finalPath`: `<finalPath>.<uuid>.tmp`. The only names {@link sweepOrphanTemps} removes. */
|
|
48
|
+
export declare const tempPathFor: (finalPath: string) => string;
|
|
49
|
+
/**
|
|
50
|
+
* Remove the temp files in `dir` named by {@link tempPathFor} that were last written more than a day ago, streaming the
|
|
51
|
+
* directory, and at most once an hour per directory in this process. Only regular files go (a symlink is never followed
|
|
52
|
+
* or removed). Best effort: a failure leaves the files for a later sweep and is never raised. Callers start it without
|
|
53
|
+
* awaiting it.
|
|
54
|
+
*/
|
|
55
|
+
export declare function sweepOrphanTemps(dir: string, now?: number): Promise<void>;
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { Entropy } from '../../core/determinism.js';
|
|
2
|
-
import type { IRegistryDriver, NewRegistryRecord, RegCaps, RegistryPatch, RegistryRecord, SegmentRef, Token } from '../../core/ports.js';
|
|
2
|
+
import type { IRegistryDriver, NewRegistryRecord, RegCaps, RegistryPatch, RegistryRecord, RegistryWriteOptions, SegmentRef, Token } from '../../core/ports.js';
|
|
3
3
|
/** Entries in the process-wide row-lock map; the map is empty whenever no registry operation is in flight. */
|
|
4
4
|
export declare function localFsRowLockCount(): number;
|
|
5
|
-
|
|
5
|
+
interface LocalFsRegistryDriverOptions {
|
|
6
6
|
/** Injected clock for `createdAt`/`updatedAt`; defaults to `Date.now`. */
|
|
7
7
|
readonly now?: () => number;
|
|
8
8
|
/** Draws every token's random parts; defaults to Web Crypto. Inject one only to make a test replayable. */
|
|
9
9
|
readonly entropy?: Entropy;
|
|
10
|
+
/** The directory this root lives under, from which down directories are created private; defaults to the root. */
|
|
11
|
+
readonly privateRoot?: string;
|
|
10
12
|
}
|
|
11
13
|
export declare class LocalFsRegistryDriver implements IRegistryDriver {
|
|
12
14
|
private readonly root;
|
|
15
|
+
private readonly options;
|
|
13
16
|
private readonly now;
|
|
14
17
|
private readonly entropy;
|
|
15
18
|
private readonly exactCase;
|
|
@@ -19,15 +22,17 @@ export declare class LocalFsRegistryDriver implements IRegistryDriver {
|
|
|
19
22
|
* the root in this process takes, so no write can land between the check and the unlink.
|
|
20
23
|
*/
|
|
21
24
|
capabilities(): RegCaps;
|
|
25
|
+
/** Every write reports its token to `onToken` before the row's file is written. */
|
|
26
|
+
get reportsWriteTokens(): true;
|
|
22
27
|
get(ref: SegmentRef): Promise<RegistryRecord | null>;
|
|
23
|
-
create(ref: SegmentRef, record: NewRegistryRecord): Promise<{
|
|
28
|
+
create(ref: SegmentRef, record: NewRegistryRecord, options?: RegistryWriteOptions): Promise<{
|
|
24
29
|
token: Token;
|
|
25
30
|
}>;
|
|
26
31
|
/**
|
|
27
32
|
* A caller's `held` row (see `RegistryWriteOptions`) has no read to spare here: the row's file is read under its lock and its token compared
|
|
28
33
|
* there, a local read and no request, so a stale one fails exactly as a lost race does.
|
|
29
34
|
*/
|
|
30
|
-
compareAndSwap(ref: SegmentRef, expected: Token, patch: RegistryPatch): Promise<{
|
|
35
|
+
compareAndSwap(ref: SegmentRef, expected: Token, patch: RegistryPatch, options?: RegistryWriteOptions): Promise<{
|
|
31
36
|
token: Token;
|
|
32
37
|
}>;
|
|
33
38
|
list(namespace?: string): AsyncIterable<RegistryRecord>;
|
|
@@ -42,3 +47,4 @@ export declare class LocalFsRegistryDriver implements IRegistryDriver {
|
|
|
42
47
|
/** Serialize callbacks for a row so read-modify-write is atomic across every instance in the process. */
|
|
43
48
|
private withRowLock;
|
|
44
49
|
}
|
|
50
|
+
export {};
|
|
@@ -1,20 +1,28 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { StorageCaps, GenKey, IStorageDriver, SegmentRef } from '../../core/ports.js';
|
|
1
|
+
import { type BlobSink } from '../../core/blob.js';
|
|
2
|
+
import type { StorageCaps, GenKey, IStorageDriver, SegmentRef, StorageDeleteOptions, TailRead } from '../../core/ports.js';
|
|
3
3
|
export declare class LocalFsStorageDriver implements IStorageDriver {
|
|
4
4
|
private readonly root;
|
|
5
|
+
private readonly options;
|
|
5
6
|
private readonly exactCase;
|
|
6
|
-
|
|
7
|
+
/**
|
|
8
|
+
* `options.privateRoot` is the directory this one lives under, from which down directories are created private; it
|
|
9
|
+
* defaults to `root`.
|
|
10
|
+
*/
|
|
11
|
+
constructor(root: string, options?: {
|
|
12
|
+
readonly privateRoot?: string;
|
|
13
|
+
});
|
|
7
14
|
capabilities(): StorageCaps;
|
|
8
15
|
putImmutable(key: GenKey, write: (sink: BlobSink) => Promise<void>): Promise<{
|
|
9
16
|
size: number;
|
|
10
17
|
sha256: string;
|
|
11
18
|
}>;
|
|
12
19
|
getRange(key: GenKey, offset: number, length: number): Promise<Uint8Array>;
|
|
13
|
-
getTail(key: GenKey, maxBytes: number): Promise<
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
20
|
+
getTail(key: GenKey, maxBytes: number): Promise<TailRead>;
|
|
21
|
+
/**
|
|
22
|
+
* Idempotent. Ignores `options.ifVersion`, as `conditionalDelete: false` says: see the note on the class for why it
|
|
23
|
+
* cannot apply one. The parameter is declared so that a wrapper of this driver can hand the port's options on.
|
|
24
|
+
*/
|
|
25
|
+
delete(key: GenKey, options?: StorageDeleteOptions): Promise<void>;
|
|
18
26
|
list(ref: SegmentRef): AsyncIterable<GenKey>;
|
|
19
27
|
private openRead;
|
|
20
28
|
}
|
package/dist/drivers/memory.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BlobSink } from '../core/blob.js';
|
|
2
2
|
import type { Entropy } from '../core/determinism.js';
|
|
3
|
-
import type { StorageCaps, GenKey, IStorageDriver, IRegistryDriver, NewRegistryRecord, RegCaps, RegistryPatch, RegistryRecord, SegmentRef, Token } from '../core/ports.js';
|
|
4
|
-
|
|
3
|
+
import type { StorageCaps, StorageDeleteOptions, TailRead, GenKey, IStorageDriver, IRegistryDriver, NewRegistryRecord, RegCaps, RegistryPatch, RegistryRecord, RegistryWriteOptions, SegmentRef, Token } from '../core/ports.js';
|
|
4
|
+
interface MemoryRegistryDriverOptions {
|
|
5
5
|
/** Injected clock for `createdAt`/`updatedAt`; defaults to `Date.now` (drivers may use ambient time). */
|
|
6
6
|
readonly now?: () => number;
|
|
7
7
|
/** Draws every token's random parts; defaults to Web Crypto. Inject one only to make a test replayable. */
|
|
@@ -22,15 +22,17 @@ export declare class MemoryRegistryDriver implements IRegistryDriver {
|
|
|
22
22
|
private nextToken;
|
|
23
23
|
/** `conditionalDelete`: a delete checks the token and removes the row in one step, with no await between. */
|
|
24
24
|
capabilities(): RegCaps;
|
|
25
|
+
/** Every write reports its token to `onToken` before it is applied. */
|
|
26
|
+
get reportsWriteTokens(): true;
|
|
25
27
|
get(ref: SegmentRef): Promise<RegistryRecord | null>;
|
|
26
|
-
create(ref: SegmentRef, record: NewRegistryRecord): Promise<{
|
|
28
|
+
create(ref: SegmentRef, record: NewRegistryRecord, options?: RegistryWriteOptions): Promise<{
|
|
27
29
|
token: Token;
|
|
28
30
|
}>;
|
|
29
31
|
/**
|
|
30
32
|
* A caller's `held` row (see `RegistryWriteOptions`) has no read to spare here: the token is compared with the stored row in the same step
|
|
31
33
|
* as the write, in memory, so a stale one fails exactly as a lost race does.
|
|
32
34
|
*/
|
|
33
|
-
compareAndSwap(ref: SegmentRef, expected: Token, patch: RegistryPatch): Promise<{
|
|
35
|
+
compareAndSwap(ref: SegmentRef, expected: Token, patch: RegistryPatch, options?: RegistryWriteOptions): Promise<{
|
|
34
36
|
token: Token;
|
|
35
37
|
}>;
|
|
36
38
|
list(namespace?: string): AsyncIterable<RegistryRecord>;
|
|
@@ -40,20 +42,23 @@ export declare class MemoryRegistryDriver implements IRegistryDriver {
|
|
|
40
42
|
* In-memory {@link IStorageDriver} — write-once immutable generation objects as opaque bytes. A "dumb byte
|
|
41
43
|
* mover" (understands neither roaring nor `.crbm`), so it's a faithful storage backend for tests and a zero-setup
|
|
42
44
|
* local storage tier. Mirrors the LocalFs/S3 contract (write-once, range/tail reads).
|
|
45
|
+
*
|
|
46
|
+
* Every object stored gets a version from a counter the driver never reuses, so two objects stored one after the other
|
|
47
|
+
* under one key never share one, whatever their bytes. A delete given `ifVersion` compares it with the stored object's
|
|
48
|
+
* and removes it in the same step, with no await between them: `conditionalDelete` is `true`.
|
|
43
49
|
*/
|
|
44
50
|
export declare class MemoryStorageDriver implements IStorageDriver {
|
|
45
51
|
private readonly objects;
|
|
52
|
+
private stored;
|
|
46
53
|
capabilities(): StorageCaps;
|
|
47
54
|
putImmutable(key: GenKey, write: (sink: BlobSink) => Promise<void>): Promise<{
|
|
48
55
|
size: number;
|
|
49
56
|
sha256: string;
|
|
50
57
|
}>;
|
|
51
58
|
getRange(key: GenKey, offset: number, length: number): Promise<Uint8Array>;
|
|
52
|
-
getTail(key: GenKey, maxBytes: number): Promise<
|
|
53
|
-
|
|
54
|
-
size: number;
|
|
55
|
-
}>;
|
|
56
|
-
delete(key: GenKey): Promise<void>;
|
|
59
|
+
getTail(key: GenKey, maxBytes: number): Promise<TailRead>;
|
|
60
|
+
delete(key: GenKey, options?: StorageDeleteOptions): Promise<void>;
|
|
57
61
|
list(ref: SegmentRef): AsyncIterable<GenKey>;
|
|
58
62
|
private require;
|
|
59
63
|
}
|
|
64
|
+
export {};
|
|
@@ -46,15 +46,11 @@ export declare class RetryingStorageChunkSource implements StorageChunkSource {
|
|
|
46
46
|
readonly getChunks?: (ref: SegmentRef, keys: readonly number[], options?: ReadChunksOptions) => AsyncIterable<ChunkRead>;
|
|
47
47
|
readonly cardinalities?: (ref: SegmentRef) => Promise<ReadonlyMap<number, number> | null>;
|
|
48
48
|
readonly summary?: (ref: SegmentRef) => Promise<GenerationSummary | null>;
|
|
49
|
+
readonly stat?: (ref: SegmentRef) => Promise<(GenerationSummary & SegmentSize) | null>;
|
|
49
50
|
readonly currentGeneration?: (ref: SegmentRef) => Promise<number | null>;
|
|
50
51
|
readonly invalidate?: (ref: SegmentRef) => void;
|
|
51
52
|
readonly exists?: (ref: SegmentRef) => Promise<boolean>;
|
|
52
53
|
readonly currentVersion?: (ref: SegmentRef) => Promise<string | null>;
|
|
53
|
-
/**
|
|
54
|
-
* Forwarded, not retried: a property, with no request behind it. Without it the grounded cost report priced a
|
|
55
|
-
* retrying store's refresh at the default TTL whatever the store was configured with.
|
|
56
|
-
*/
|
|
57
|
-
get pointerRefreshMs(): number | undefined;
|
|
58
54
|
constructor(inner: StorageChunkSource, opts: RetryingOptions);
|
|
59
55
|
getChunk(ref: ChunkRef): Promise<Uint8Array | null>;
|
|
60
56
|
listChunkKeys(ref: SegmentRef): Promise<number[]>;
|
package/dist/export/index.d.ts
CHANGED
|
@@ -50,6 +50,15 @@ export interface ExportFailure {
|
|
|
50
50
|
/** Why it failed (an error message) — e.g. a corrupt storage object, or an encrypted segment with no keystore. */
|
|
51
51
|
readonly error: string;
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* A registered segment the export did not read, and why. `'destroyed'` is a tombstone: the segment was crypto-shredded
|
|
55
|
+
* or dropped, so it resolves no generation and has nothing to export.
|
|
56
|
+
*/
|
|
57
|
+
export interface ExportSkipped {
|
|
58
|
+
readonly segment: string;
|
|
59
|
+
readonly namespace?: string;
|
|
60
|
+
readonly reason: 'destroyed';
|
|
61
|
+
}
|
|
53
62
|
/** What {@link runExport} produced — a self-describing summary the CLI persists as `manifest.json`. */
|
|
54
63
|
export interface ExportManifest {
|
|
55
64
|
/** Schema version of this manifest shape (currently `1`) — insurance for evolving the format post-1.0. */
|
|
@@ -63,6 +72,13 @@ export interface ExportManifest {
|
|
|
63
72
|
* "a manifest exists" ⇒ the run finished, **not** that every segment succeeded — always check this list.
|
|
64
73
|
*/
|
|
65
74
|
readonly failed: readonly ExportFailure[];
|
|
75
|
+
/**
|
|
76
|
+
* Registered segments the export did not read, each with its reason (empty when there were none). With `segments`
|
|
77
|
+
* and `failed` it accounts for every segment row the registry listed, so a `totalSegments` below the registry's
|
|
78
|
+
* segment count is explained rather than silent. The registry's internal due-index rows are not segments, and are in
|
|
79
|
+
* none of the three.
|
|
80
|
+
*/
|
|
81
|
+
readonly skipped: readonly ExportSkipped[];
|
|
66
82
|
}
|
|
67
83
|
/**
|
|
68
84
|
* The minimal read surface the export needs from a store — a `CloudRoaring` satisfies this structurally: `segment(name,
|
package/dist/index.d.ts
CHANGED
|
@@ -19,7 +19,6 @@ export { SegmentEngine } from './core/engine.js';
|
|
|
19
19
|
export type { EngineDeps, CombineOptions as EngineCombineOptions, IdRange } from './core/engine.js';
|
|
20
20
|
export { BoundedLru } from './core/lru.js';
|
|
21
21
|
export { safeMetrics } from './core/metrics.js';
|
|
22
|
-
export { groundedReport } from './core/cost.js';
|
|
23
22
|
export { runExport } from './export/index.js';
|
|
24
23
|
export type { SegmentReader } from './export/index.js';
|
|
25
24
|
export { splitId } from './core/bit-route.js';
|
|
@@ -50,7 +49,7 @@ export { eraseIdFromSegment } from './core/erase-id.js';
|
|
|
50
49
|
export type { EraseIdDeps, EraseIdResult } from './core/erase-id.js';
|
|
51
50
|
export type { CodecInterface, CodecBitmap, EncodedChunk } from './core/codec.js';
|
|
52
51
|
export type { Clock, Entropy, Rng } from './core/determinism.js';
|
|
53
|
-
export type { StorageChunkSource, IStorageDriver, StorageCaps, ChunkRef, ChunkRead, ReadChunksOptions, SegmentRef, GenKey, IRegistryDriver, StorageBackend, RegistryRecord, NewRegistryRecord, RegistryPatch, RegistryStatus, RegistrySummary, RegistryWriteOptions, LeaseEntry, ClearRegistrySummary, SealedRegistrySummary, GenerationMetadata, GenerationSummary, RegCaps, GovernanceMeta, SegmentSize, } from './core/ports.js';
|
|
52
|
+
export type { StorageChunkSource, IStorageDriver, StorageCaps, StorageDeleteOptions, TailRead, ChunkRef, ChunkRead, ReadChunksOptions, SegmentRef, GenKey, IRegistryDriver, StorageBackend, RegistryRecord, NewRegistryRecord, RegistryPatch, RegistryStatus, RegistrySummary, RegistryWriteOptions, LeaseEntry, KnownGeneration, ClearRegistrySummary, SealedRegistrySummary, GenerationMetadata, GenerationSummary, RegCaps, GovernanceMeta, SegmentSize, } from './core/ports.js';
|
|
54
53
|
export { CloudRoaringError, ValidationError, WriteConflictError, IntegrityError, NotFoundError, UnsupportedError, CapabilityError, TransientError, KeyUnavailableError, BudgetExceededError, LeaseExpiredError, LeaseLimitError, StaleOperandError, isCloudRoaringError, isWriteConflictError, isTransientError, isNotFoundError, isIntegrityError, isValidationError, isLeaseExpiredError, isLeaseLimitError, isStaleOperandError, isUnsupportedError, isCapabilityError, isBudgetExceededError, isKeyUnavailableError, } from './core/errors.js';
|
|
55
54
|
export type { Aead, AeadSealed, IKeystore, WrappedDek, CrbmCrypto } from './core/crypto.js';
|
|
56
55
|
export { aadFor } from './core/crypto.js';
|
|
@@ -67,7 +66,7 @@ export { DEFAULT_BUDGET } from './core/budget.js';
|
|
|
67
66
|
export type { Budget, BudgetOption } from './core/budget.js';
|
|
68
67
|
export { runConsistencyCheck } from './core/consistency.js';
|
|
69
68
|
export type { ConsistencyReport, ConsistencyIssue, ConsistencyErrorEntry, } from './core/consistency.js';
|
|
70
|
-
export type { ExportFormat, ExportSink, ExportWriter, ExportOptions, ExportedSegment, ExportFailure, ExportManifest, } from './export/index.js';
|
|
69
|
+
export type { ExportFormat, ExportSink, ExportWriter, ExportOptions, ExportedSegment, ExportFailure, ExportManifest, ExportSkipped, } from './export/index.js';
|
|
71
70
|
export { withRetry, DEFAULT_RETRY_POLICY } from './core/retry.js';
|
|
72
71
|
export type { RetryPolicy, RetryDeps } from './core/retry.js';
|
|
73
72
|
export { RetryingStorageChunkSource } from './drivers/retry/retrying-chunk-source.js';
|
|
@@ -78,7 +77,5 @@ export { BufferReader } from './core/blob.js';
|
|
|
78
77
|
export type { BlobReader, BlobSink } from './core/blob.js';
|
|
79
78
|
export { NOOP_METRICS, CountingMetricsSink } from './core/metrics.js';
|
|
80
79
|
export type { IMetricsSink, MetricEvent, MetricOpName, MetricsSnapshot } from './core/metrics.js';
|
|
81
|
-
export { estimateCost, AWS_US_EAST_1_ONDEMAND, ELASTICACHE_REDIS_US_EAST_1_ONDEMAND, ONE_REDIS_HA_CLUSTER, } from './core/cost.js';
|
|
82
|
-
export type { PricingProfile, RedisNodeType, RedisSizing, CostReport, Workload, SegmentSizing, EstimateInput, } from './core/cost.js';
|
|
83
80
|
export { RecordingAuditSink } from './core/audit.js';
|
|
84
81
|
export type { IAuditSink, AuditEvent } from './core/audit.js';
|