gitx.do 0.1.0 → 0.1.2
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 +40 -353
- package/dist/do/logger.d.ts +50 -0
- package/dist/do/logger.d.ts.map +1 -0
- package/dist/do/logger.js +122 -0
- package/dist/do/logger.js.map +1 -0
- package/dist/{durable-object → do}/schema.d.ts +3 -3
- package/dist/do/schema.d.ts.map +1 -0
- package/dist/{durable-object → do}/schema.js +4 -3
- package/dist/do/schema.js.map +1 -0
- package/dist/do/types.d.ts +267 -0
- package/dist/do/types.d.ts.map +1 -0
- package/dist/do/types.js +62 -0
- package/dist/do/types.js.map +1 -0
- package/dist/index.d.ts +15 -415
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -483
- package/dist/index.js.map +1 -1
- package/package.json +13 -21
- package/dist/cli/commands/add.d.ts +0 -174
- package/dist/cli/commands/add.d.ts.map +0 -1
- package/dist/cli/commands/add.js +0 -131
- package/dist/cli/commands/add.js.map +0 -1
- package/dist/cli/commands/blame.d.ts +0 -259
- package/dist/cli/commands/blame.d.ts.map +0 -1
- package/dist/cli/commands/blame.js +0 -609
- package/dist/cli/commands/blame.js.map +0 -1
- package/dist/cli/commands/branch.d.ts +0 -249
- package/dist/cli/commands/branch.d.ts.map +0 -1
- package/dist/cli/commands/branch.js +0 -693
- package/dist/cli/commands/branch.js.map +0 -1
- package/dist/cli/commands/commit.d.ts +0 -182
- package/dist/cli/commands/commit.d.ts.map +0 -1
- package/dist/cli/commands/commit.js +0 -437
- package/dist/cli/commands/commit.js.map +0 -1
- package/dist/cli/commands/diff.d.ts +0 -464
- package/dist/cli/commands/diff.d.ts.map +0 -1
- package/dist/cli/commands/diff.js +0 -958
- package/dist/cli/commands/diff.js.map +0 -1
- package/dist/cli/commands/log.d.ts +0 -239
- package/dist/cli/commands/log.d.ts.map +0 -1
- package/dist/cli/commands/log.js +0 -535
- package/dist/cli/commands/log.js.map +0 -1
- package/dist/cli/commands/merge.d.ts +0 -106
- package/dist/cli/commands/merge.d.ts.map +0 -1
- package/dist/cli/commands/merge.js +0 -55
- package/dist/cli/commands/merge.js.map +0 -1
- package/dist/cli/commands/review.d.ts +0 -457
- package/dist/cli/commands/review.d.ts.map +0 -1
- package/dist/cli/commands/review.js +0 -533
- package/dist/cli/commands/review.js.map +0 -1
- package/dist/cli/commands/status.d.ts +0 -269
- package/dist/cli/commands/status.d.ts.map +0 -1
- package/dist/cli/commands/status.js +0 -493
- package/dist/cli/commands/status.js.map +0 -1
- package/dist/cli/commands/web.d.ts +0 -199
- package/dist/cli/commands/web.d.ts.map +0 -1
- package/dist/cli/commands/web.js +0 -696
- package/dist/cli/commands/web.js.map +0 -1
- package/dist/cli/fs-adapter.d.ts +0 -656
- package/dist/cli/fs-adapter.d.ts.map +0 -1
- package/dist/cli/fs-adapter.js +0 -1179
- package/dist/cli/fs-adapter.js.map +0 -1
- package/dist/cli/fsx-cli-adapter.d.ts +0 -359
- package/dist/cli/fsx-cli-adapter.d.ts.map +0 -1
- package/dist/cli/fsx-cli-adapter.js +0 -619
- package/dist/cli/fsx-cli-adapter.js.map +0 -1
- package/dist/cli/index.d.ts +0 -387
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js +0 -523
- package/dist/cli/index.js.map +0 -1
- package/dist/cli/ui/components/DiffView.d.ts +0 -7
- package/dist/cli/ui/components/DiffView.d.ts.map +0 -1
- package/dist/cli/ui/components/DiffView.js +0 -11
- package/dist/cli/ui/components/DiffView.js.map +0 -1
- package/dist/cli/ui/components/ErrorDisplay.d.ts +0 -6
- package/dist/cli/ui/components/ErrorDisplay.d.ts.map +0 -1
- package/dist/cli/ui/components/ErrorDisplay.js +0 -11
- package/dist/cli/ui/components/ErrorDisplay.js.map +0 -1
- package/dist/cli/ui/components/FuzzySearch.d.ts +0 -9
- package/dist/cli/ui/components/FuzzySearch.d.ts.map +0 -1
- package/dist/cli/ui/components/FuzzySearch.js +0 -12
- package/dist/cli/ui/components/FuzzySearch.js.map +0 -1
- package/dist/cli/ui/components/LoadingSpinner.d.ts +0 -6
- package/dist/cli/ui/components/LoadingSpinner.d.ts.map +0 -1
- package/dist/cli/ui/components/LoadingSpinner.js +0 -10
- package/dist/cli/ui/components/LoadingSpinner.js.map +0 -1
- package/dist/cli/ui/components/NavigationList.d.ts +0 -9
- package/dist/cli/ui/components/NavigationList.d.ts.map +0 -1
- package/dist/cli/ui/components/NavigationList.js +0 -11
- package/dist/cli/ui/components/NavigationList.js.map +0 -1
- package/dist/cli/ui/components/ScrollableContent.d.ts +0 -8
- package/dist/cli/ui/components/ScrollableContent.d.ts.map +0 -1
- package/dist/cli/ui/components/ScrollableContent.js +0 -11
- package/dist/cli/ui/components/ScrollableContent.js.map +0 -1
- package/dist/cli/ui/components/index.d.ts +0 -7
- package/dist/cli/ui/components/index.d.ts.map +0 -1
- package/dist/cli/ui/components/index.js +0 -9
- package/dist/cli/ui/components/index.js.map +0 -1
- package/dist/cli/ui/terminal-ui.d.ts +0 -52
- package/dist/cli/ui/terminal-ui.d.ts.map +0 -1
- package/dist/cli/ui/terminal-ui.js +0 -121
- package/dist/cli/ui/terminal-ui.js.map +0 -1
- package/dist/do/BashModule.d.ts +0 -871
- package/dist/do/BashModule.d.ts.map +0 -1
- package/dist/do/BashModule.js +0 -1143
- package/dist/do/BashModule.js.map +0 -1
- package/dist/do/FsModule.d.ts +0 -601
- package/dist/do/FsModule.d.ts.map +0 -1
- package/dist/do/FsModule.js +0 -1120
- package/dist/do/FsModule.js.map +0 -1
- package/dist/do/GitModule.d.ts +0 -635
- package/dist/do/GitModule.d.ts.map +0 -1
- package/dist/do/GitModule.js +0 -781
- package/dist/do/GitModule.js.map +0 -1
- package/dist/do/GitRepoDO.d.ts +0 -281
- package/dist/do/GitRepoDO.d.ts.map +0 -1
- package/dist/do/GitRepoDO.js +0 -479
- package/dist/do/GitRepoDO.js.map +0 -1
- package/dist/do/bash-ast.d.ts +0 -246
- package/dist/do/bash-ast.d.ts.map +0 -1
- package/dist/do/bash-ast.js +0 -888
- package/dist/do/bash-ast.js.map +0 -1
- package/dist/do/container-executor.d.ts +0 -491
- package/dist/do/container-executor.d.ts.map +0 -1
- package/dist/do/container-executor.js +0 -730
- package/dist/do/container-executor.js.map +0 -1
- package/dist/do/index.d.ts +0 -53
- package/dist/do/index.d.ts.map +0 -1
- package/dist/do/index.js +0 -91
- package/dist/do/index.js.map +0 -1
- package/dist/do/tiered-storage.d.ts +0 -403
- package/dist/do/tiered-storage.d.ts.map +0 -1
- package/dist/do/tiered-storage.js +0 -689
- package/dist/do/tiered-storage.js.map +0 -1
- package/dist/do/withBash.d.ts +0 -231
- package/dist/do/withBash.d.ts.map +0 -1
- package/dist/do/withBash.js +0 -244
- package/dist/do/withBash.js.map +0 -1
- package/dist/do/withFs.d.ts +0 -237
- package/dist/do/withFs.d.ts.map +0 -1
- package/dist/do/withFs.js +0 -387
- package/dist/do/withFs.js.map +0 -1
- package/dist/do/withGit.d.ts +0 -180
- package/dist/do/withGit.d.ts.map +0 -1
- package/dist/do/withGit.js +0 -271
- package/dist/do/withGit.js.map +0 -1
- package/dist/durable-object/object-store.d.ts +0 -633
- package/dist/durable-object/object-store.d.ts.map +0 -1
- package/dist/durable-object/object-store.js +0 -1161
- package/dist/durable-object/object-store.js.map +0 -1
- package/dist/durable-object/schema.d.ts.map +0 -1
- package/dist/durable-object/schema.js.map +0 -1
- package/dist/durable-object/wal.d.ts +0 -416
- package/dist/durable-object/wal.d.ts.map +0 -1
- package/dist/durable-object/wal.js +0 -445
- package/dist/durable-object/wal.js.map +0 -1
- package/dist/mcp/adapter.d.ts +0 -772
- package/dist/mcp/adapter.d.ts.map +0 -1
- package/dist/mcp/adapter.js +0 -895
- package/dist/mcp/adapter.js.map +0 -1
- package/dist/mcp/sandbox/miniflare-evaluator.d.ts +0 -22
- package/dist/mcp/sandbox/miniflare-evaluator.d.ts.map +0 -1
- package/dist/mcp/sandbox/miniflare-evaluator.js +0 -140
- package/dist/mcp/sandbox/miniflare-evaluator.js.map +0 -1
- package/dist/mcp/sandbox/object-store-proxy.d.ts +0 -32
- package/dist/mcp/sandbox/object-store-proxy.d.ts.map +0 -1
- package/dist/mcp/sandbox/object-store-proxy.js +0 -30
- package/dist/mcp/sandbox/object-store-proxy.js.map +0 -1
- package/dist/mcp/sandbox/template.d.ts +0 -17
- package/dist/mcp/sandbox/template.d.ts.map +0 -1
- package/dist/mcp/sandbox/template.js +0 -71
- package/dist/mcp/sandbox/template.js.map +0 -1
- package/dist/mcp/sandbox.d.ts +0 -764
- package/dist/mcp/sandbox.d.ts.map +0 -1
- package/dist/mcp/sandbox.js +0 -1362
- package/dist/mcp/sandbox.js.map +0 -1
- package/dist/mcp/sdk-adapter.d.ts +0 -835
- package/dist/mcp/sdk-adapter.d.ts.map +0 -1
- package/dist/mcp/sdk-adapter.js +0 -974
- package/dist/mcp/sdk-adapter.js.map +0 -1
- package/dist/mcp/tools/do.d.ts +0 -32
- package/dist/mcp/tools/do.d.ts.map +0 -1
- package/dist/mcp/tools/do.js +0 -115
- package/dist/mcp/tools/do.js.map +0 -1
- package/dist/mcp/tools.d.ts +0 -548
- package/dist/mcp/tools.d.ts.map +0 -1
- package/dist/mcp/tools.js +0 -1934
- package/dist/mcp/tools.js.map +0 -1
- package/dist/ops/blame.d.ts +0 -551
- package/dist/ops/blame.d.ts.map +0 -1
- package/dist/ops/blame.js +0 -1037
- package/dist/ops/blame.js.map +0 -1
- package/dist/ops/branch.d.ts +0 -766
- package/dist/ops/branch.d.ts.map +0 -1
- package/dist/ops/branch.js +0 -950
- package/dist/ops/branch.js.map +0 -1
- package/dist/ops/commit-traversal.d.ts +0 -349
- package/dist/ops/commit-traversal.d.ts.map +0 -1
- package/dist/ops/commit-traversal.js +0 -821
- package/dist/ops/commit-traversal.js.map +0 -1
- package/dist/ops/commit.d.ts +0 -555
- package/dist/ops/commit.d.ts.map +0 -1
- package/dist/ops/commit.js +0 -826
- package/dist/ops/commit.js.map +0 -1
- package/dist/ops/merge-base.d.ts +0 -397
- package/dist/ops/merge-base.d.ts.map +0 -1
- package/dist/ops/merge-base.js +0 -691
- package/dist/ops/merge-base.js.map +0 -1
- package/dist/ops/merge.d.ts +0 -855
- package/dist/ops/merge.d.ts.map +0 -1
- package/dist/ops/merge.js +0 -1551
- package/dist/ops/merge.js.map +0 -1
- package/dist/ops/tag.d.ts +0 -247
- package/dist/ops/tag.d.ts.map +0 -1
- package/dist/ops/tag.js +0 -649
- package/dist/ops/tag.js.map +0 -1
- package/dist/ops/tree-builder.d.ts +0 -178
- package/dist/ops/tree-builder.d.ts.map +0 -1
- package/dist/ops/tree-builder.js +0 -271
- package/dist/ops/tree-builder.js.map +0 -1
- package/dist/ops/tree-diff.d.ts +0 -291
- package/dist/ops/tree-diff.d.ts.map +0 -1
- package/dist/ops/tree-diff.js +0 -705
- package/dist/ops/tree-diff.js.map +0 -1
- package/dist/pack/delta.d.ts +0 -248
- package/dist/pack/delta.d.ts.map +0 -1
- package/dist/pack/delta.js +0 -736
- package/dist/pack/delta.js.map +0 -1
- package/dist/pack/format.d.ts +0 -446
- package/dist/pack/format.d.ts.map +0 -1
- package/dist/pack/format.js +0 -572
- package/dist/pack/format.js.map +0 -1
- package/dist/pack/full-generation.d.ts +0 -612
- package/dist/pack/full-generation.d.ts.map +0 -1
- package/dist/pack/full-generation.js +0 -1378
- package/dist/pack/full-generation.js.map +0 -1
- package/dist/pack/generation.d.ts +0 -441
- package/dist/pack/generation.d.ts.map +0 -1
- package/dist/pack/generation.js +0 -707
- package/dist/pack/generation.js.map +0 -1
- package/dist/pack/index.d.ts +0 -502
- package/dist/pack/index.d.ts.map +0 -1
- package/dist/pack/index.js +0 -833
- package/dist/pack/index.js.map +0 -1
- package/dist/refs/branch.d.ts +0 -668
- package/dist/refs/branch.d.ts.map +0 -1
- package/dist/refs/branch.js +0 -897
- package/dist/refs/branch.js.map +0 -1
- package/dist/refs/storage.d.ts +0 -833
- package/dist/refs/storage.d.ts.map +0 -1
- package/dist/refs/storage.js +0 -1023
- package/dist/refs/storage.js.map +0 -1
- package/dist/refs/tag.d.ts +0 -860
- package/dist/refs/tag.d.ts.map +0 -1
- package/dist/refs/tag.js +0 -996
- package/dist/refs/tag.js.map +0 -1
- package/dist/storage/backend.d.ts +0 -425
- package/dist/storage/backend.d.ts.map +0 -1
- package/dist/storage/backend.js +0 -41
- package/dist/storage/backend.js.map +0 -1
- package/dist/storage/fsx-adapter.d.ts +0 -204
- package/dist/storage/fsx-adapter.d.ts.map +0 -1
- package/dist/storage/fsx-adapter.js +0 -470
- package/dist/storage/fsx-adapter.js.map +0 -1
- package/dist/storage/lru-cache.d.ts +0 -691
- package/dist/storage/lru-cache.d.ts.map +0 -1
- package/dist/storage/lru-cache.js +0 -813
- package/dist/storage/lru-cache.js.map +0 -1
- package/dist/storage/object-index.d.ts +0 -585
- package/dist/storage/object-index.d.ts.map +0 -1
- package/dist/storage/object-index.js +0 -532
- package/dist/storage/object-index.js.map +0 -1
- package/dist/storage/r2-pack.d.ts +0 -1257
- package/dist/storage/r2-pack.d.ts.map +0 -1
- package/dist/storage/r2-pack.js +0 -1770
- package/dist/storage/r2-pack.js.map +0 -1
- package/dist/tiered/cdc-pipeline.d.ts +0 -1888
- package/dist/tiered/cdc-pipeline.d.ts.map +0 -1
- package/dist/tiered/cdc-pipeline.js +0 -1880
- package/dist/tiered/cdc-pipeline.js.map +0 -1
- package/dist/tiered/migration.d.ts +0 -1104
- package/dist/tiered/migration.d.ts.map +0 -1
- package/dist/tiered/migration.js +0 -1214
- package/dist/tiered/migration.js.map +0 -1
- package/dist/tiered/parquet-writer.d.ts +0 -1145
- package/dist/tiered/parquet-writer.d.ts.map +0 -1
- package/dist/tiered/parquet-writer.js +0 -1183
- package/dist/tiered/parquet-writer.js.map +0 -1
- package/dist/tiered/read-path.d.ts +0 -835
- package/dist/tiered/read-path.d.ts.map +0 -1
- package/dist/tiered/read-path.js +0 -487
- package/dist/tiered/read-path.js.map +0 -1
- package/dist/types/capability.d.ts +0 -1385
- package/dist/types/capability.d.ts.map +0 -1
- package/dist/types/capability.js +0 -36
- package/dist/types/capability.js.map +0 -1
- package/dist/types/index.d.ts +0 -13
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -18
- package/dist/types/index.js.map +0 -1
- package/dist/types/objects.d.ts +0 -692
- package/dist/types/objects.d.ts.map +0 -1
- package/dist/types/objects.js +0 -837
- package/dist/types/objects.js.map +0 -1
- package/dist/types/storage.d.ts +0 -603
- package/dist/types/storage.d.ts.map +0 -1
- package/dist/types/storage.js +0 -191
- package/dist/types/storage.js.map +0 -1
- package/dist/types/worker-loader.d.ts +0 -60
- package/dist/types/worker-loader.d.ts.map +0 -1
- package/dist/types/worker-loader.js +0 -62
- package/dist/types/worker-loader.js.map +0 -1
- package/dist/utils/hash.d.ts +0 -197
- package/dist/utils/hash.d.ts.map +0 -1
- package/dist/utils/hash.js +0 -268
- package/dist/utils/hash.js.map +0 -1
- package/dist/utils/sha1.d.ts +0 -290
- package/dist/utils/sha1.d.ts.map +0 -1
- package/dist/utils/sha1.js +0 -582
- package/dist/utils/sha1.js.map +0 -1
- package/dist/wire/capabilities.d.ts +0 -1044
- package/dist/wire/capabilities.d.ts.map +0 -1
- package/dist/wire/capabilities.js +0 -941
- package/dist/wire/capabilities.js.map +0 -1
- package/dist/wire/path-security.d.ts +0 -157
- package/dist/wire/path-security.d.ts.map +0 -1
- package/dist/wire/path-security.js +0 -307
- package/dist/wire/path-security.js.map +0 -1
- package/dist/wire/pkt-line.d.ts +0 -345
- package/dist/wire/pkt-line.d.ts.map +0 -1
- package/dist/wire/pkt-line.js +0 -381
- package/dist/wire/pkt-line.js.map +0 -1
- package/dist/wire/receive-pack.d.ts +0 -1059
- package/dist/wire/receive-pack.d.ts.map +0 -1
- package/dist/wire/receive-pack.js +0 -1414
- package/dist/wire/receive-pack.js.map +0 -1
- package/dist/wire/smart-http.d.ts +0 -799
- package/dist/wire/smart-http.d.ts.map +0 -1
- package/dist/wire/smart-http.js +0 -945
- package/dist/wire/smart-http.js.map +0 -1
- package/dist/wire/upload-pack.d.ts +0 -727
- package/dist/wire/upload-pack.d.ts.map +0 -1
- package/dist/wire/upload-pack.js +0 -1138
- package/dist/wire/upload-pack.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-path.d.ts","sourceRoot":"","sources":["../../src/tiered/read-path.ts"],"names":[],"mappings":"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"}
|
package/dist/tiered/read-path.js
DELETED
|
@@ -1,487 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview Tiered Read Path Module
|
|
3
|
-
*
|
|
4
|
-
* @description
|
|
5
|
-
* Implements reading objects from a multi-tier storage system designed for
|
|
6
|
-
* Git object storage. The tiered approach optimizes for both performance and
|
|
7
|
-
* cost by organizing data across multiple storage layers with different
|
|
8
|
-
* characteristics:
|
|
9
|
-
*
|
|
10
|
-
* **Storage Tiers:**
|
|
11
|
-
* - **Hot tier**: Durable Object SQLite (fastest, local, highest cost)
|
|
12
|
-
* - **Warm tier**: R2 object storage (medium latency, packed objects)
|
|
13
|
-
* - **Cold tier**: Analytics/Parquet (highest latency, lowest cost)
|
|
14
|
-
*
|
|
15
|
-
* **Features:**
|
|
16
|
-
* - Automatic tier fallback on cache miss
|
|
17
|
-
* - Read-through caching with promotion to hotter tiers
|
|
18
|
-
* - Configurable promotion policies (aggressive, conservative, none)
|
|
19
|
-
* - Latency tracking for performance monitoring
|
|
20
|
-
*
|
|
21
|
-
* **Architecture:**
|
|
22
|
-
* The TieredReader orchestrates reads across all tiers, attempting to serve
|
|
23
|
-
* data from the fastest available tier while optionally promoting frequently
|
|
24
|
-
* accessed objects to faster tiers.
|
|
25
|
-
*
|
|
26
|
-
* @example
|
|
27
|
-
* ```typescript
|
|
28
|
-
* // Create a tiered reader with all backends
|
|
29
|
-
* const reader = new TieredReader(
|
|
30
|
-
* hotBackend,
|
|
31
|
-
* warmBackend,
|
|
32
|
-
* coldBackend,
|
|
33
|
-
* {
|
|
34
|
-
* hot: { enabled: true, maxSize: 1024 * 1024 },
|
|
35
|
-
* warm: { enabled: true },
|
|
36
|
-
* cold: { enabled: true },
|
|
37
|
-
* promotionPolicy: 'aggressive'
|
|
38
|
-
* }
|
|
39
|
-
* )
|
|
40
|
-
*
|
|
41
|
-
* // Read an object - will try hot -> warm -> cold
|
|
42
|
-
* const result = await reader.read('abc123...')
|
|
43
|
-
* if (result.object) {
|
|
44
|
-
* console.log(`Found in ${result.tier} tier`)
|
|
45
|
-
* console.log(`Latency: ${result.latencyMs}ms`)
|
|
46
|
-
* if (result.promoted) {
|
|
47
|
-
* console.log('Object was promoted to hot tier')
|
|
48
|
-
* }
|
|
49
|
-
* }
|
|
50
|
-
* ```
|
|
51
|
-
*
|
|
52
|
-
* @module tiered/read-path
|
|
53
|
-
* @see {@link TieredReader} - Main implementation class
|
|
54
|
-
* @see {@link TieredStorageConfig} - Configuration options
|
|
55
|
-
*/
|
|
56
|
-
/**
|
|
57
|
-
* Validates a SHA-1 hash string.
|
|
58
|
-
*
|
|
59
|
-
* @description
|
|
60
|
-
* Checks that the provided string is a valid 40-character hexadecimal
|
|
61
|
-
* SHA-1 hash. Used internally to validate input before querying storage.
|
|
62
|
-
*
|
|
63
|
-
* @param sha - The string to validate
|
|
64
|
-
* @returns true if the string is a valid SHA-1 hash, false otherwise
|
|
65
|
-
*
|
|
66
|
-
* @example
|
|
67
|
-
* ```typescript
|
|
68
|
-
* isValidSha('abc123') // false - too short
|
|
69
|
-
* isValidSha('a1b2c3d4e5f678901234567890abcdef12345678') // true
|
|
70
|
-
* isValidSha('xyz123...') // false - invalid characters
|
|
71
|
-
* ```
|
|
72
|
-
*
|
|
73
|
-
* @internal
|
|
74
|
-
*/
|
|
75
|
-
function isValidSha(sha) {
|
|
76
|
-
if (!sha || sha.length !== 40) {
|
|
77
|
-
return false;
|
|
78
|
-
}
|
|
79
|
-
return /^[0-9a-f]{40}$/i.test(sha);
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* TieredReader - Main implementation of the tiered read path.
|
|
83
|
-
*
|
|
84
|
-
* @description
|
|
85
|
-
* TieredReader orchestrates reads across multiple storage tiers (hot, warm, cold),
|
|
86
|
-
* implementing automatic fallback and optional promotion to hotter tiers. It provides
|
|
87
|
-
* a unified interface for reading Git objects regardless of which tier they reside in.
|
|
88
|
-
*
|
|
89
|
-
* **Read Algorithm:**
|
|
90
|
-
* 1. Validate the SHA-1 hash
|
|
91
|
-
* 2. If hot tier enabled, attempt to read from hot tier
|
|
92
|
-
* 3. If not found and warm tier enabled, attempt warm tier
|
|
93
|
-
* 4. If not found and cold tier enabled, attempt cold tier
|
|
94
|
-
* 5. If found in warm/cold, optionally promote to hot tier
|
|
95
|
-
* 6. Return result with object, source tier, and metrics
|
|
96
|
-
*
|
|
97
|
-
* **Promotion Policies:**
|
|
98
|
-
* - `aggressive`: Immediately promote any object read from warm/cold to hot
|
|
99
|
-
* - `conservative`: Reserved for future implementation (repeated access tracking)
|
|
100
|
-
* - `none`: Never automatically promote objects
|
|
101
|
-
*
|
|
102
|
-
* **Error Handling:**
|
|
103
|
-
* Individual tier failures are silently caught and the next tier is tried.
|
|
104
|
-
* This ensures graceful degradation when a tier is temporarily unavailable.
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* ```typescript
|
|
108
|
-
* // Create backends for each tier
|
|
109
|
-
* const hotBackend = new SqliteHotBackend(db)
|
|
110
|
-
* const warmBackend = new R2WarmBackend(r2)
|
|
111
|
-
* const coldBackend = new ParquetColdBackend(parquet)
|
|
112
|
-
*
|
|
113
|
-
* // Configure the tiered storage
|
|
114
|
-
* const config: TieredStorageConfig = {
|
|
115
|
-
* hot: { enabled: true, maxSize: 1024 * 1024 },
|
|
116
|
-
* warm: { enabled: true },
|
|
117
|
-
* cold: { enabled: true },
|
|
118
|
-
* promotionPolicy: 'aggressive'
|
|
119
|
-
* }
|
|
120
|
-
*
|
|
121
|
-
* // Create the reader
|
|
122
|
-
* const reader = new TieredReader(hotBackend, warmBackend, coldBackend, config)
|
|
123
|
-
*
|
|
124
|
-
* // Read an object
|
|
125
|
-
* const result = await reader.read('a1b2c3d4e5f678901234567890abcdef12345678')
|
|
126
|
-
*
|
|
127
|
-
* if (result.object) {
|
|
128
|
-
* console.log(`Object type: ${result.object.type}`)
|
|
129
|
-
* console.log(`Size: ${result.object.size} bytes`)
|
|
130
|
-
* console.log(`Served from: ${result.tier} tier`)
|
|
131
|
-
* console.log(`Latency: ${result.latencyMs}ms`)
|
|
132
|
-
*
|
|
133
|
-
* if (result.promoted) {
|
|
134
|
-
* console.log('Object was promoted to hot tier')
|
|
135
|
-
* }
|
|
136
|
-
* } else {
|
|
137
|
-
* console.log('Object not found in any tier')
|
|
138
|
-
* }
|
|
139
|
-
*
|
|
140
|
-
* // Direct tier access
|
|
141
|
-
* const hotOnly = await reader.readFromHot(sha)
|
|
142
|
-
* const warmOnly = await reader.readFromWarm(sha)
|
|
143
|
-
* const coldOnly = await reader.readFromCold(sha)
|
|
144
|
-
*
|
|
145
|
-
* // Manual promotion
|
|
146
|
-
* if (warmOnly) {
|
|
147
|
-
* await reader.promoteToHot(sha, warmOnly)
|
|
148
|
-
* }
|
|
149
|
-
* ```
|
|
150
|
-
*
|
|
151
|
-
* @class TieredReader
|
|
152
|
-
* @implements {TieredObjectStore}
|
|
153
|
-
*/
|
|
154
|
-
export class TieredReader {
|
|
155
|
-
/**
|
|
156
|
-
* Backend for the hot storage tier (Durable Object SQLite).
|
|
157
|
-
* @private
|
|
158
|
-
*/
|
|
159
|
-
hotBackend;
|
|
160
|
-
/**
|
|
161
|
-
* Backend for the warm storage tier (R2 object storage).
|
|
162
|
-
* @private
|
|
163
|
-
*/
|
|
164
|
-
warmBackend;
|
|
165
|
-
/**
|
|
166
|
-
* Backend for the cold storage tier (Analytics/Parquet).
|
|
167
|
-
* @private
|
|
168
|
-
*/
|
|
169
|
-
coldBackend;
|
|
170
|
-
/**
|
|
171
|
-
* Configuration for all tiers and promotion policy.
|
|
172
|
-
* @private
|
|
173
|
-
*/
|
|
174
|
-
config;
|
|
175
|
-
/**
|
|
176
|
-
* Creates a new TieredReader instance.
|
|
177
|
-
*
|
|
178
|
-
* @param hotBackend - Backend for the hot tier (Durable Object SQLite)
|
|
179
|
-
* @param warmBackend - Backend for the warm tier (R2)
|
|
180
|
-
* @param coldBackend - Backend for the cold tier (Parquet)
|
|
181
|
-
* @param config - Configuration for all tiers and promotion policy
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* ```typescript
|
|
185
|
-
* const reader = new TieredReader(
|
|
186
|
-
* hotBackend,
|
|
187
|
-
* warmBackend,
|
|
188
|
-
* coldBackend,
|
|
189
|
-
* {
|
|
190
|
-
* hot: { enabled: true, maxSize: 1024 * 1024 },
|
|
191
|
-
* warm: { enabled: true },
|
|
192
|
-
* cold: { enabled: true },
|
|
193
|
-
* promotionPolicy: 'aggressive'
|
|
194
|
-
* }
|
|
195
|
-
* )
|
|
196
|
-
* ```
|
|
197
|
-
*/
|
|
198
|
-
constructor(hotBackend, warmBackend, coldBackend, config) {
|
|
199
|
-
this.hotBackend = hotBackend;
|
|
200
|
-
this.warmBackend = warmBackend;
|
|
201
|
-
this.coldBackend = coldBackend;
|
|
202
|
-
this.config = config;
|
|
203
|
-
}
|
|
204
|
-
/**
|
|
205
|
-
* Reads an object from the tiered storage system.
|
|
206
|
-
*
|
|
207
|
-
* @description
|
|
208
|
-
* Attempts to read the object from each enabled tier in order
|
|
209
|
-
* (hot -> warm -> cold), returning as soon as the object is found.
|
|
210
|
-
* Objects found in warm or cold tiers may be promoted to hot tier
|
|
211
|
-
* based on the configured promotion policy.
|
|
212
|
-
*
|
|
213
|
-
* **Invalid SHA Handling:**
|
|
214
|
-
* If the SHA is invalid (not 40 hex characters), returns immediately
|
|
215
|
-
* with null object and no tier lookup is performed.
|
|
216
|
-
*
|
|
217
|
-
* **Error Handling:**
|
|
218
|
-
* If a tier fails (throws an error), the error is caught silently
|
|
219
|
-
* and the next tier is attempted. This provides graceful degradation.
|
|
220
|
-
*
|
|
221
|
-
* @param sha - The 40-character SHA-1 hash of the object to read
|
|
222
|
-
* @returns Promise resolving to the read result with object, tier, and metrics
|
|
223
|
-
*
|
|
224
|
-
* @example
|
|
225
|
-
* ```typescript
|
|
226
|
-
* const result = await reader.read('a1b2c3d4e5f678901234567890abcdef12345678')
|
|
227
|
-
*
|
|
228
|
-
* if (result.object) {
|
|
229
|
-
* // Object found
|
|
230
|
-
* console.log(`Type: ${result.object.type}`)
|
|
231
|
-
* console.log(`Tier: ${result.tier}`)
|
|
232
|
-
* console.log(`Promoted: ${result.promoted}`)
|
|
233
|
-
* } else {
|
|
234
|
-
* // Object not found
|
|
235
|
-
* console.log(`Search took ${result.latencyMs}ms`)
|
|
236
|
-
* }
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
239
|
-
async read(sha) {
|
|
240
|
-
const startTime = performance.now();
|
|
241
|
-
// Validate SHA
|
|
242
|
-
if (!isValidSha(sha)) {
|
|
243
|
-
return {
|
|
244
|
-
object: null,
|
|
245
|
-
tier: null,
|
|
246
|
-
promoted: false,
|
|
247
|
-
latencyMs: performance.now() - startTime
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
// Try hot tier first
|
|
251
|
-
if (this.config.hot.enabled) {
|
|
252
|
-
try {
|
|
253
|
-
const obj = await this.hotBackend.get(sha);
|
|
254
|
-
if (obj) {
|
|
255
|
-
return {
|
|
256
|
-
object: obj,
|
|
257
|
-
tier: 'hot',
|
|
258
|
-
promoted: false,
|
|
259
|
-
latencyMs: performance.now() - startTime
|
|
260
|
-
};
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
catch {
|
|
264
|
-
// Hot tier failed, continue to next tier
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
// Try warm tier
|
|
268
|
-
if (this.config.warm.enabled) {
|
|
269
|
-
try {
|
|
270
|
-
const obj = await this.warmBackend.get(sha);
|
|
271
|
-
if (obj) {
|
|
272
|
-
const promoted = await this.tryPromote(sha, obj, 'warm');
|
|
273
|
-
return {
|
|
274
|
-
object: obj,
|
|
275
|
-
tier: 'warm',
|
|
276
|
-
promoted,
|
|
277
|
-
latencyMs: performance.now() - startTime
|
|
278
|
-
};
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
catch {
|
|
282
|
-
// Warm tier failed, continue to cold tier
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// Try cold tier
|
|
286
|
-
if (this.config.cold.enabled) {
|
|
287
|
-
try {
|
|
288
|
-
const obj = await this.coldBackend.get(sha);
|
|
289
|
-
if (obj) {
|
|
290
|
-
const promoted = await this.tryPromote(sha, obj, 'cold');
|
|
291
|
-
return {
|
|
292
|
-
object: obj,
|
|
293
|
-
tier: 'cold',
|
|
294
|
-
promoted,
|
|
295
|
-
latencyMs: performance.now() - startTime
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
catch {
|
|
300
|
-
// Cold tier failed
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
// Object not found in any tier
|
|
304
|
-
return {
|
|
305
|
-
object: null,
|
|
306
|
-
tier: null,
|
|
307
|
-
promoted: false,
|
|
308
|
-
latencyMs: performance.now() - startTime
|
|
309
|
-
};
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Reads an object directly from the hot tier only.
|
|
313
|
-
*
|
|
314
|
-
* @description
|
|
315
|
-
* Bypasses the tier fallback logic to read directly from the hot tier.
|
|
316
|
-
* Useful for checking if an object is already in the hot cache.
|
|
317
|
-
* Errors are caught and null is returned.
|
|
318
|
-
*
|
|
319
|
-
* @param sha - The 40-character SHA-1 hash of the object
|
|
320
|
-
* @returns Promise resolving to the object or null if not in hot tier
|
|
321
|
-
*
|
|
322
|
-
* @example
|
|
323
|
-
* ```typescript
|
|
324
|
-
* const cached = await reader.readFromHot(sha)
|
|
325
|
-
* if (cached) {
|
|
326
|
-
* console.log('Object is in hot cache')
|
|
327
|
-
* } else {
|
|
328
|
-
* console.log('Object not in hot cache')
|
|
329
|
-
* }
|
|
330
|
-
* ```
|
|
331
|
-
*/
|
|
332
|
-
async readFromHot(sha) {
|
|
333
|
-
try {
|
|
334
|
-
return await this.hotBackend.get(sha);
|
|
335
|
-
}
|
|
336
|
-
catch {
|
|
337
|
-
return null;
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
/**
|
|
341
|
-
* Reads an object directly from the warm tier only.
|
|
342
|
-
*
|
|
343
|
-
* @description
|
|
344
|
-
* Bypasses the tier fallback logic to read directly from the warm tier.
|
|
345
|
-
* Does not trigger automatic promotion to hot tier.
|
|
346
|
-
* Errors are caught and null is returned.
|
|
347
|
-
*
|
|
348
|
-
* @param sha - The 40-character SHA-1 hash of the object
|
|
349
|
-
* @returns Promise resolving to the object or null if not in warm tier
|
|
350
|
-
*
|
|
351
|
-
* @example
|
|
352
|
-
* ```typescript
|
|
353
|
-
* const warm = await reader.readFromWarm(sha)
|
|
354
|
-
* if (warm) {
|
|
355
|
-
* // Manually promote if desired
|
|
356
|
-
* await reader.promoteToHot(sha, warm)
|
|
357
|
-
* }
|
|
358
|
-
* ```
|
|
359
|
-
*/
|
|
360
|
-
async readFromWarm(sha) {
|
|
361
|
-
try {
|
|
362
|
-
return await this.warmBackend.get(sha);
|
|
363
|
-
}
|
|
364
|
-
catch {
|
|
365
|
-
return null;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
/**
|
|
369
|
-
* Reads an object directly from the cold tier only.
|
|
370
|
-
*
|
|
371
|
-
* @description
|
|
372
|
-
* Bypasses the tier fallback logic to read directly from the cold tier.
|
|
373
|
-
* Does not trigger automatic promotion to hotter tiers.
|
|
374
|
-
* Errors are caught and null is returned.
|
|
375
|
-
*
|
|
376
|
-
* @param sha - The 40-character SHA-1 hash of the object
|
|
377
|
-
* @returns Promise resolving to the object or null if not in cold tier
|
|
378
|
-
*
|
|
379
|
-
* @example
|
|
380
|
-
* ```typescript
|
|
381
|
-
* const cold = await reader.readFromCold(sha)
|
|
382
|
-
* if (cold) {
|
|
383
|
-
* console.log(`Found in cold storage, created at: ${cold.createdAt}`)
|
|
384
|
-
* }
|
|
385
|
-
* ```
|
|
386
|
-
*/
|
|
387
|
-
async readFromCold(sha) {
|
|
388
|
-
try {
|
|
389
|
-
return await this.coldBackend.get(sha);
|
|
390
|
-
}
|
|
391
|
-
catch {
|
|
392
|
-
return null;
|
|
393
|
-
}
|
|
394
|
-
}
|
|
395
|
-
/**
|
|
396
|
-
* Manually promotes an object to the hot tier.
|
|
397
|
-
*
|
|
398
|
-
* @description
|
|
399
|
-
* Copies the provided object to the hot tier storage. This is useful for
|
|
400
|
-
* pre-warming the cache or manually controlling tier placement. No size
|
|
401
|
-
* or policy checks are performed - the object is always written.
|
|
402
|
-
*
|
|
403
|
-
* @param sha - The 40-character SHA-1 hash of the object
|
|
404
|
-
* @param object - The complete stored object to promote
|
|
405
|
-
* @returns Promise that resolves when promotion is complete
|
|
406
|
-
* @throws Error if the hot tier write fails
|
|
407
|
-
*
|
|
408
|
-
* @example
|
|
409
|
-
* ```typescript
|
|
410
|
-
* // Pre-warm the hot cache
|
|
411
|
-
* const objects = await reader.query({ type: 'commit' })
|
|
412
|
-
* for (const obj of objects) {
|
|
413
|
-
* await reader.promoteToHot(obj.sha, obj)
|
|
414
|
-
* }
|
|
415
|
-
* ```
|
|
416
|
-
*/
|
|
417
|
-
async promoteToHot(sha, object) {
|
|
418
|
-
await this.hotBackend.put(sha, object);
|
|
419
|
-
}
|
|
420
|
-
/**
|
|
421
|
-
* Returns the current storage configuration.
|
|
422
|
-
*
|
|
423
|
-
* @description
|
|
424
|
-
* Returns the configuration object passed to the constructor.
|
|
425
|
-
* Useful for inspecting current settings or debugging.
|
|
426
|
-
*
|
|
427
|
-
* @returns The tiered storage configuration
|
|
428
|
-
*
|
|
429
|
-
* @example
|
|
430
|
-
* ```typescript
|
|
431
|
-
* const config = reader.getConfig()
|
|
432
|
-
* console.log(`Promotion policy: ${config.promotionPolicy}`)
|
|
433
|
-
* console.log(`Hot tier enabled: ${config.hot.enabled}`)
|
|
434
|
-
* ```
|
|
435
|
-
*/
|
|
436
|
-
getConfig() {
|
|
437
|
-
return this.config;
|
|
438
|
-
}
|
|
439
|
-
/**
|
|
440
|
-
* Attempts to promote an object to the hot tier based on policy.
|
|
441
|
-
*
|
|
442
|
-
* @description
|
|
443
|
-
* Called internally when an object is found in warm or cold tier.
|
|
444
|
-
* Decides whether to promote based on:
|
|
445
|
-
* 1. Hot tier being enabled
|
|
446
|
-
* 2. Promotion policy (aggressive promotes, conservative/none don't)
|
|
447
|
-
* 3. Object size being within hot tier's maxSize limit
|
|
448
|
-
*
|
|
449
|
-
* @param sha - The object's SHA-1 hash
|
|
450
|
-
* @param object - The object to potentially promote
|
|
451
|
-
* @param _sourceTier - The tier the object was read from (for future use)
|
|
452
|
-
* @returns true if promotion was successful, false otherwise
|
|
453
|
-
*
|
|
454
|
-
* @private
|
|
455
|
-
*/
|
|
456
|
-
async tryPromote(sha, object, _sourceTier) {
|
|
457
|
-
// Check if hot tier is enabled
|
|
458
|
-
if (!this.config.hot.enabled) {
|
|
459
|
-
return false;
|
|
460
|
-
}
|
|
461
|
-
// Check promotion policy
|
|
462
|
-
if (this.config.promotionPolicy === 'none') {
|
|
463
|
-
return false;
|
|
464
|
-
}
|
|
465
|
-
// Conservative policy only promotes from warm tier on repeated access
|
|
466
|
-
// For now, conservative means no automatic promotion on first read
|
|
467
|
-
if (this.config.promotionPolicy === 'conservative') {
|
|
468
|
-
return false;
|
|
469
|
-
}
|
|
470
|
-
// Check size limit for hot tier
|
|
471
|
-
if (this.config.hot.maxSize !== undefined && object.size > this.config.hot.maxSize) {
|
|
472
|
-
return false;
|
|
473
|
-
}
|
|
474
|
-
// Try to promote
|
|
475
|
-
try {
|
|
476
|
-
await this.hotBackend.put(sha, object);
|
|
477
|
-
return true;
|
|
478
|
-
}
|
|
479
|
-
catch {
|
|
480
|
-
// Promotion failed, but we still have the object
|
|
481
|
-
return false;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
// Re-export as TieredObjectStoreStub for backward compatibility with tests
|
|
486
|
-
export { TieredReader as TieredObjectStoreStub };
|
|
487
|
-
//# sourceMappingURL=read-path.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"read-path.js","sourceRoot":"","sources":["../../src/tiered/read-path.ts"],"names":[],"mappings":"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"}
|