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
package/dist/do/GitRepoDO.js
DELETED
|
@@ -1,479 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @fileoverview GitRepoDO - Git Repository Durable Object
|
|
3
|
-
*
|
|
4
|
-
* This module provides a GitRepoDO class that extends the DO base class pattern,
|
|
5
|
-
* providing git repository functionality as a Durable Object.
|
|
6
|
-
*
|
|
7
|
-
* @module do/GitRepoDO
|
|
8
|
-
*
|
|
9
|
-
* @example
|
|
10
|
-
* ```typescript
|
|
11
|
-
* import { GitRepoDO, isGitRepoDO } from 'gitx.do/do'
|
|
12
|
-
*
|
|
13
|
-
* // GitRepoDO instances have git capability by default
|
|
14
|
-
* const repo = new GitRepoDO(state, env)
|
|
15
|
-
* await repo.initialize({ ns: 'https://git.do/repo/my-repo' })
|
|
16
|
-
*
|
|
17
|
-
* // Access workflow context
|
|
18
|
-
* await repo.$.branch('feature')
|
|
19
|
-
* await repo.$.checkout('main')
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
import { Hono } from 'hono';
|
|
23
|
-
// ============================================================================
|
|
24
|
-
// DO Base Class Implementation
|
|
25
|
-
// ============================================================================
|
|
26
|
-
/**
|
|
27
|
-
* Base DO class that GitRepoDO extends.
|
|
28
|
-
* Provides the foundation for type hierarchy, capabilities, and lifecycle.
|
|
29
|
-
*/
|
|
30
|
-
class DO {
|
|
31
|
-
static $type = 'DO';
|
|
32
|
-
state;
|
|
33
|
-
env;
|
|
34
|
-
_ns;
|
|
35
|
-
_capabilities = new Set();
|
|
36
|
-
_initialized = false;
|
|
37
|
-
constructor(state, env) {
|
|
38
|
-
this.state = state;
|
|
39
|
-
this.env = env;
|
|
40
|
-
}
|
|
41
|
-
get $type() {
|
|
42
|
-
return this.constructor.$type;
|
|
43
|
-
}
|
|
44
|
-
get ns() {
|
|
45
|
-
return this._ns;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Get the type hierarchy for this DO.
|
|
49
|
-
*/
|
|
50
|
-
getTypeHierarchy() {
|
|
51
|
-
const hierarchy = [];
|
|
52
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
53
|
-
let current = this.constructor;
|
|
54
|
-
while (current && current.$type) {
|
|
55
|
-
hierarchy.push(current.$type);
|
|
56
|
-
current = Object.getPrototypeOf(current);
|
|
57
|
-
}
|
|
58
|
-
return hierarchy;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* Check if this DO is an instance of a specific type.
|
|
62
|
-
*/
|
|
63
|
-
isInstanceOfType(typeName) {
|
|
64
|
-
return this.getTypeHierarchy().includes(typeName);
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Check if this DO is exactly a specific type (not a subtype).
|
|
68
|
-
*/
|
|
69
|
-
isType(typeName) {
|
|
70
|
-
return this.$type === typeName;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Check if this DO extends a specific type.
|
|
74
|
-
*/
|
|
75
|
-
extendsType(typeName) {
|
|
76
|
-
return this.isInstanceOfType(typeName);
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Check if this DO has a specific capability.
|
|
80
|
-
*/
|
|
81
|
-
hasCapability(capability) {
|
|
82
|
-
return this._capabilities.has(capability);
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Convert to JSON representation.
|
|
86
|
-
*/
|
|
87
|
-
toJSON() {
|
|
88
|
-
return {
|
|
89
|
-
$type: this.$type,
|
|
90
|
-
ns: this._ns,
|
|
91
|
-
capabilities: Array.from(this._capabilities),
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
// ============================================================================
|
|
96
|
-
// GitRepoDO Class
|
|
97
|
-
// ============================================================================
|
|
98
|
-
/**
|
|
99
|
-
* GitRepoDO - Git Repository Durable Object.
|
|
100
|
-
*
|
|
101
|
-
* Extends the DO base class with git-specific functionality including:
|
|
102
|
-
* - Repository lifecycle management (initialize, fork, compact)
|
|
103
|
-
* - Workflow context with git operations (branch, checkout, merge)
|
|
104
|
-
* - Storage accessors for things, actions, events, and relationships
|
|
105
|
-
*
|
|
106
|
-
* @example
|
|
107
|
-
* ```typescript
|
|
108
|
-
* const repo = new GitRepoDO(state, env)
|
|
109
|
-
* await repo.initialize({ ns: 'https://git.do/repo/my-repo' })
|
|
110
|
-
*
|
|
111
|
-
* // Use workflow context
|
|
112
|
-
* await repo.$.branch('feature-x')
|
|
113
|
-
* await repo.$.checkout('feature-x')
|
|
114
|
-
*
|
|
115
|
-
* // Access stores
|
|
116
|
-
* await repo.things.set('file-1', { content: '...' })
|
|
117
|
-
* ```
|
|
118
|
-
*/
|
|
119
|
-
export class GitRepoDO extends DO {
|
|
120
|
-
static $type = 'GitRepoDO';
|
|
121
|
-
_router;
|
|
122
|
-
_$;
|
|
123
|
-
_db;
|
|
124
|
-
_things;
|
|
125
|
-
_rels;
|
|
126
|
-
_actions;
|
|
127
|
-
_events;
|
|
128
|
-
constructor(state, env) {
|
|
129
|
-
super(state, env);
|
|
130
|
-
// GitRepoDO has git capability by default
|
|
131
|
-
this._capabilities.add('git');
|
|
132
|
-
// Initialize router
|
|
133
|
-
this._router = new Hono();
|
|
134
|
-
this._setupRoutes();
|
|
135
|
-
// Initialize workflow context
|
|
136
|
-
this._$ = this._createWorkflowContext();
|
|
137
|
-
// Initialize store accessors
|
|
138
|
-
this._things = this._createStoreAccessor('things');
|
|
139
|
-
this._rels = this._createStoreAccessor('rels');
|
|
140
|
-
this._actions = this._createStoreAccessor('actions');
|
|
141
|
-
this._events = this._createStoreAccessor('events');
|
|
142
|
-
// Initialize db (placeholder for Drizzle integration)
|
|
143
|
-
this._db = { sql: state.storage.sql };
|
|
144
|
-
}
|
|
145
|
-
/**
|
|
146
|
-
* Workflow context for $ API.
|
|
147
|
-
*/
|
|
148
|
-
get $() {
|
|
149
|
-
return this._$;
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Database accessor (Drizzle instance).
|
|
153
|
-
*/
|
|
154
|
-
get db() {
|
|
155
|
-
return this._db;
|
|
156
|
-
}
|
|
157
|
-
/**
|
|
158
|
-
* Things store accessor.
|
|
159
|
-
*/
|
|
160
|
-
get things() {
|
|
161
|
-
return this._things;
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Relationships store accessor.
|
|
165
|
-
*/
|
|
166
|
-
get rels() {
|
|
167
|
-
return this._rels;
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Actions store accessor.
|
|
171
|
-
*/
|
|
172
|
-
get actions() {
|
|
173
|
-
return this._actions;
|
|
174
|
-
}
|
|
175
|
-
/**
|
|
176
|
-
* Events store accessor.
|
|
177
|
-
*/
|
|
178
|
-
get events() {
|
|
179
|
-
return this._events;
|
|
180
|
-
}
|
|
181
|
-
// ===========================================================================
|
|
182
|
-
// Lifecycle Methods
|
|
183
|
-
// ===========================================================================
|
|
184
|
-
/**
|
|
185
|
-
* Initialize the GitRepoDO with namespace and optional parent.
|
|
186
|
-
*/
|
|
187
|
-
async initialize(options) {
|
|
188
|
-
// Validate namespace URL
|
|
189
|
-
let url;
|
|
190
|
-
try {
|
|
191
|
-
url = new URL(options.ns);
|
|
192
|
-
}
|
|
193
|
-
catch {
|
|
194
|
-
throw new Error(`Invalid namespace URL: ${options.ns}`);
|
|
195
|
-
}
|
|
196
|
-
this._ns = options.ns;
|
|
197
|
-
this._initialized = true;
|
|
198
|
-
// Persist namespace to storage
|
|
199
|
-
await this.state.storage.put('ns', options.ns);
|
|
200
|
-
if (options.parent) {
|
|
201
|
-
await this.state.storage.put('parent', options.parent);
|
|
202
|
-
}
|
|
203
|
-
// Create initial repo state unless explicitly marked as empty
|
|
204
|
-
// This allows repos to have initial data for compaction
|
|
205
|
-
const repoPath = url.pathname;
|
|
206
|
-
if (!repoPath.includes('empty')) {
|
|
207
|
-
// Create initial root tree/commit placeholder
|
|
208
|
-
const timestamp = Date.now();
|
|
209
|
-
await this.state.storage.put(`things:root:${timestamp}`, {
|
|
210
|
-
type: 'tree',
|
|
211
|
-
entries: [],
|
|
212
|
-
created: timestamp,
|
|
213
|
-
});
|
|
214
|
-
await this.state.storage.put(`actions:init:${timestamp}`, {
|
|
215
|
-
action: 'initialize',
|
|
216
|
-
timestamp,
|
|
217
|
-
ns: options.ns,
|
|
218
|
-
});
|
|
219
|
-
await this.state.storage.put(`events:init:${timestamp}`, {
|
|
220
|
-
event: 'repo.initialized',
|
|
221
|
-
timestamp,
|
|
222
|
-
ns: options.ns,
|
|
223
|
-
});
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
/**
|
|
227
|
-
* Fork this DO to create a new instance with copied state.
|
|
228
|
-
*/
|
|
229
|
-
async fork(options) {
|
|
230
|
-
if (!this._initialized || !this._ns) {
|
|
231
|
-
throw new Error('Cannot fork: DO not initialized');
|
|
232
|
-
}
|
|
233
|
-
// Validate target namespace URL
|
|
234
|
-
try {
|
|
235
|
-
new URL(options.to);
|
|
236
|
-
}
|
|
237
|
-
catch {
|
|
238
|
-
throw new Error(`Invalid fork target URL: ${options.to}`);
|
|
239
|
-
}
|
|
240
|
-
// Create a new DO ID for the fork
|
|
241
|
-
const doId = this.env.DO?.newUniqueId() ?? { id: crypto.randomUUID() };
|
|
242
|
-
const doIdStr = typeof doId === 'object' && 'id' in doId ? String(doId.id) : String(doId);
|
|
243
|
-
// If we have the DO binding, create the forked instance
|
|
244
|
-
if (this.env.DO) {
|
|
245
|
-
const forkedDO = this.env.DO.get(doId);
|
|
246
|
-
await forkedDO.fetch(new Request('https://internal/fork', {
|
|
247
|
-
method: 'POST',
|
|
248
|
-
body: JSON.stringify({
|
|
249
|
-
ns: options.to,
|
|
250
|
-
parent: this._ns,
|
|
251
|
-
branch: options.branch,
|
|
252
|
-
}),
|
|
253
|
-
}));
|
|
254
|
-
}
|
|
255
|
-
return {
|
|
256
|
-
ns: options.to,
|
|
257
|
-
doId: doIdStr,
|
|
258
|
-
};
|
|
259
|
-
}
|
|
260
|
-
/**
|
|
261
|
-
* Compact the DO's data, archiving old things, actions, and events.
|
|
262
|
-
*/
|
|
263
|
-
async compact() {
|
|
264
|
-
if (!this._initialized) {
|
|
265
|
-
throw new Error('Cannot compact: DO not initialized');
|
|
266
|
-
}
|
|
267
|
-
// Check if there's anything to compact
|
|
268
|
-
const thingsList = await this.state.storage.list({ prefix: 'things:' });
|
|
269
|
-
const actionsList = await this.state.storage.list({ prefix: 'actions:' });
|
|
270
|
-
const eventsList = await this.state.storage.list({ prefix: 'events:' });
|
|
271
|
-
const totalItems = thingsList.size + actionsList.size + eventsList.size;
|
|
272
|
-
if (totalItems === 0) {
|
|
273
|
-
throw new Error('Nothing to compact');
|
|
274
|
-
}
|
|
275
|
-
// For now, return counts without actual archiving
|
|
276
|
-
return {
|
|
277
|
-
thingsCompacted: thingsList.size,
|
|
278
|
-
actionsArchived: actionsList.size,
|
|
279
|
-
eventsArchived: eventsList.size,
|
|
280
|
-
};
|
|
281
|
-
}
|
|
282
|
-
// ===========================================================================
|
|
283
|
-
// Durable Object Interface
|
|
284
|
-
// ===========================================================================
|
|
285
|
-
/**
|
|
286
|
-
* Handle incoming HTTP requests.
|
|
287
|
-
*/
|
|
288
|
-
async fetch(request) {
|
|
289
|
-
return this._router.fetch(request);
|
|
290
|
-
}
|
|
291
|
-
/**
|
|
292
|
-
* Handle alarm callbacks.
|
|
293
|
-
*/
|
|
294
|
-
async alarm() {
|
|
295
|
-
// Default alarm handler - can be overridden
|
|
296
|
-
}
|
|
297
|
-
// ===========================================================================
|
|
298
|
-
// Public Methods
|
|
299
|
-
// ===========================================================================
|
|
300
|
-
/**
|
|
301
|
-
* Get a typed collection accessor.
|
|
302
|
-
*/
|
|
303
|
-
collection(name) {
|
|
304
|
-
return {
|
|
305
|
-
...this._createStoreAccessor(`collection:${name}`),
|
|
306
|
-
type: name,
|
|
307
|
-
};
|
|
308
|
-
}
|
|
309
|
-
/**
|
|
310
|
-
* Resolve a URL to a resource.
|
|
311
|
-
*/
|
|
312
|
-
async resolve(url) {
|
|
313
|
-
// Parse and resolve the URL
|
|
314
|
-
const parsed = new URL(url);
|
|
315
|
-
return {
|
|
316
|
-
url,
|
|
317
|
-
host: parsed.host,
|
|
318
|
-
path: parsed.pathname,
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
// ===========================================================================
|
|
322
|
-
// Private Methods
|
|
323
|
-
// ===========================================================================
|
|
324
|
-
_setupRoutes() {
|
|
325
|
-
// Health check endpoint
|
|
326
|
-
this._router.get('/health', (c) => {
|
|
327
|
-
return c.json({
|
|
328
|
-
status: 'ok',
|
|
329
|
-
ns: this._ns,
|
|
330
|
-
$type: this.$type,
|
|
331
|
-
});
|
|
332
|
-
});
|
|
333
|
-
// Fork endpoint (internal)
|
|
334
|
-
this._router.post('/fork', async (c) => {
|
|
335
|
-
const body = await c.req.json();
|
|
336
|
-
await this.initialize({ ns: body.ns, parent: body.parent });
|
|
337
|
-
return c.json({ success: true });
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
_createWorkflowContext() {
|
|
341
|
-
const self = this;
|
|
342
|
-
// Create the $ proxy with all required methods
|
|
343
|
-
const context = {
|
|
344
|
-
// Fire-and-forget
|
|
345
|
-
send(event, data) {
|
|
346
|
-
// Queue event for async processing
|
|
347
|
-
self.state.waitUntil(self.state.storage.put(`pending:${Date.now()}`, { event, data }));
|
|
348
|
-
},
|
|
349
|
-
// Quick attempt (blocking, non-durable)
|
|
350
|
-
async try(action, data) {
|
|
351
|
-
// Execute action directly
|
|
352
|
-
return { action, data, success: true };
|
|
353
|
-
},
|
|
354
|
-
// Durable execution with retries
|
|
355
|
-
async do(action, data) {
|
|
356
|
-
// Store action for durability
|
|
357
|
-
const actionId = `action:${Date.now()}`;
|
|
358
|
-
await self.state.storage.put(actionId, { action, data, status: 'pending' });
|
|
359
|
-
// Execute and update status
|
|
360
|
-
const result = { action, data, success: true };
|
|
361
|
-
await self.state.storage.put(actionId, { action, data, status: 'completed', result });
|
|
362
|
-
return result;
|
|
363
|
-
},
|
|
364
|
-
// Event handler proxy
|
|
365
|
-
on: new Proxy({}, {
|
|
366
|
-
get(_target, noun) {
|
|
367
|
-
return new Proxy({}, {
|
|
368
|
-
get(_t, verb) {
|
|
369
|
-
return (handler) => {
|
|
370
|
-
// Register event handler
|
|
371
|
-
self.state.waitUntil(self.state.storage.put(`handler:${noun}:${verb}`, { handler: String(handler) }));
|
|
372
|
-
};
|
|
373
|
-
},
|
|
374
|
-
});
|
|
375
|
-
},
|
|
376
|
-
}),
|
|
377
|
-
// Scheduling proxy
|
|
378
|
-
every: new Proxy({}, {
|
|
379
|
-
get(_target, schedule) {
|
|
380
|
-
return {
|
|
381
|
-
at: (time) => (handler) => {
|
|
382
|
-
// Register scheduled handler
|
|
383
|
-
self.state.waitUntil(self.state.storage.put(`schedule:${schedule}:${time}`, { handler: String(handler) }));
|
|
384
|
-
},
|
|
385
|
-
};
|
|
386
|
-
},
|
|
387
|
-
}),
|
|
388
|
-
// Git-specific methods
|
|
389
|
-
async branch(name) {
|
|
390
|
-
await self.state.storage.put(`refs/heads/${name}`, {
|
|
391
|
-
created: Date.now(),
|
|
392
|
-
head: await self.state.storage.get('HEAD'),
|
|
393
|
-
});
|
|
394
|
-
},
|
|
395
|
-
async checkout(ref) {
|
|
396
|
-
await self.state.storage.put('HEAD', ref);
|
|
397
|
-
},
|
|
398
|
-
async merge(branch) {
|
|
399
|
-
const branchData = await self.state.storage.get(`refs/heads/${branch}`);
|
|
400
|
-
if (branchData) {
|
|
401
|
-
// Simple fast-forward merge for now
|
|
402
|
-
await self.state.storage.put('HEAD', branchData);
|
|
403
|
-
}
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
// Add domain proxy for $.Noun(id) pattern
|
|
407
|
-
return new Proxy(context, {
|
|
408
|
-
get(target, prop) {
|
|
409
|
-
// Return existing properties first
|
|
410
|
-
if (prop in target) {
|
|
411
|
-
return target[prop];
|
|
412
|
-
}
|
|
413
|
-
// For capitalized names, return a domain resolver function
|
|
414
|
-
if (prop.charAt(0) === prop.charAt(0).toUpperCase()) {
|
|
415
|
-
return (id) => {
|
|
416
|
-
// Return a proxy that represents the domain entity
|
|
417
|
-
return new Proxy({}, {
|
|
418
|
-
get(_t, method) {
|
|
419
|
-
return async (...args) => {
|
|
420
|
-
// This would resolve and call the method on the target DO
|
|
421
|
-
return { domain: prop, id, method, args };
|
|
422
|
-
};
|
|
423
|
-
},
|
|
424
|
-
});
|
|
425
|
-
};
|
|
426
|
-
}
|
|
427
|
-
return undefined;
|
|
428
|
-
},
|
|
429
|
-
});
|
|
430
|
-
}
|
|
431
|
-
_createStoreAccessor(prefix) {
|
|
432
|
-
const storage = this.state.storage;
|
|
433
|
-
return {
|
|
434
|
-
async get(id) {
|
|
435
|
-
return storage.get(`${prefix}:${id}`);
|
|
436
|
-
},
|
|
437
|
-
async set(id, value) {
|
|
438
|
-
await storage.put(`${prefix}:${id}`, value);
|
|
439
|
-
},
|
|
440
|
-
async delete(id) {
|
|
441
|
-
return storage.delete(`${prefix}:${id}`);
|
|
442
|
-
},
|
|
443
|
-
async list(options) {
|
|
444
|
-
const fullPrefix = options?.prefix
|
|
445
|
-
? `${prefix}:${options.prefix}`
|
|
446
|
-
: `${prefix}:`;
|
|
447
|
-
return storage.list({ prefix: fullPrefix });
|
|
448
|
-
},
|
|
449
|
-
};
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
// ============================================================================
|
|
453
|
-
// Type Guard
|
|
454
|
-
// ============================================================================
|
|
455
|
-
/**
|
|
456
|
-
* Check if a value is a GitRepoDO instance.
|
|
457
|
-
*
|
|
458
|
-
* @param value - Value to check
|
|
459
|
-
* @returns True if value is a GitRepoDO
|
|
460
|
-
*
|
|
461
|
-
* @example
|
|
462
|
-
* ```typescript
|
|
463
|
-
* if (isGitRepoDO(obj)) {
|
|
464
|
-
* // obj is typed as GitRepoDO
|
|
465
|
-
* await obj.initialize({ ns: '...' })
|
|
466
|
-
* }
|
|
467
|
-
* ```
|
|
468
|
-
*/
|
|
469
|
-
export function isGitRepoDO(value) {
|
|
470
|
-
if (!value || typeof value !== 'object') {
|
|
471
|
-
return false;
|
|
472
|
-
}
|
|
473
|
-
// Check for GitRepoDO-specific properties and methods
|
|
474
|
-
const candidate = value;
|
|
475
|
-
return (candidate.$type === 'GitRepoDO' &&
|
|
476
|
-
typeof candidate.hasCapability === 'function' &&
|
|
477
|
-
candidate.hasCapability('git'));
|
|
478
|
-
}
|
|
479
|
-
//# sourceMappingURL=GitRepoDO.js.map
|
package/dist/do/GitRepoDO.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GitRepoDO.js","sourceRoot":"","sources":["../../src/do/GitRepoDO.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AA0G3B,+EAA+E;AAC/E,+BAA+B;AAC/B,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,EAAE;IACN,MAAM,CAAC,KAAK,GAAG,IAAI,CAAA;IAET,KAAK,CAAS;IACd,GAAG,CAAc;IACjB,GAAG,CAAS;IACZ,aAAa,GAAgB,IAAI,GAAG,EAAE,CAAA;IACtC,YAAY,GAAG,KAAK,CAAA;IAE9B,YAAY,KAAc,EAAE,GAAiB;QAC3C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;IAChB,CAAC;IAED,IAAI,KAAK;QACP,OAAQ,IAAI,CAAC,WAAyB,CAAC,KAAK,CAAA;IAC9C,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,MAAM,SAAS,GAAa,EAAE,CAAA;QAC9B,8DAA8D;QAC9D,IAAI,OAAO,GAAQ,IAAI,CAAC,WAAW,CAAA;QAEnC,OAAO,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAChC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC7B,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;QAC1C,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC;IAED;;OAEG;IACH,gBAAgB,CAAC,QAAgB;QAC/B,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACnD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,QAAgB;QACrB,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAA;IAChC,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,QAAgB;QAC1B,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;IACxC,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,UAAkB;QAC9B,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3C,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,EAAE,EAAE,IAAI,CAAC,GAAG;YACZ,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;SAC7C,CAAA;IACH,CAAC;;AAGH,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,SAAU,SAAQ,EAAE;IAC/B,MAAM,CAAU,KAAK,GAAG,WAAW,CAAA;IAE3B,OAAO,CAAM;IACb,EAAE,CAAiB;IACnB,GAAG,CAAS;IACZ,OAAO,CAAe;IACtB,KAAK,CAAe;IACpB,QAAQ,CAAe;IACvB,OAAO,CAAe;IAE9B,YAAY,KAAc,EAAE,GAAiB;QAC3C,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;QAEjB,0CAA0C;QAC1C,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAE7B,oBAAoB;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAA;QACzB,IAAI,CAAC,YAAY,EAAE,CAAA;QAEnB,8BAA8B;QAC9B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAA;QAEvC,6BAA6B;QAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAClD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAA;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAA;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAA;QAElD,sDAAsD;QACtD,IAAI,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,CAAA;IACvC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;IAED;;OAEG;IACH,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,8EAA8E;IAC9E,oBAAoB;IACpB,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAA0B;QACzC,yBAAyB;QACzB,IAAI,GAAQ,CAAA;QACZ,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC,EAAE,CAAA;QACrB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QAExB,+BAA+B;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAA;QAE9C,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QACxD,CAAC;QAED,8DAA8D;QAC9D,wDAAwD;QACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAA;QAC7B,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,8CAA8C;YAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,EAAE;gBACvD,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,SAAS;aACnB,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,EAAE;gBACxD,MAAM,EAAE,YAAY;gBACpB,SAAS;gBACT,EAAE,EAAE,OAAO,CAAC,EAAE;aACf,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,EAAE;gBACvD,KAAK,EAAE,kBAAkB;gBACzB,SAAS;gBACT,EAAE,EAAE,OAAO,CAAC,EAAE;aACf,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAC,OAAoB;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAA;QACpD,CAAC;QAED,gCAAgC;QAChC,IAAI,CAAC;YACH,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACrB,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,EAAE,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,kCAAkC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,UAAU,EAAE,EAAE,CAAA;QACtE,MAAM,OAAO,GAAG,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAEzF,wDAAwD;QACxD,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,uBAAuB,EAAE;gBACxD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,MAAM,EAAE,IAAI,CAAC,GAAG;oBAChB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACvB,CAAC;aACH,CAAC,CAAC,CAAA;QACL,CAAC;QAED,OAAO;YACL,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,IAAI,EAAE,OAAO;SACd,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;QACvD,CAAC;QAED,uCAAuC;QACvC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QACvE,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;QACzE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;QAEvE,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAA;QACvE,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAA;QACvC,CAAC;QAED,kDAAkD;QAClD,OAAO;YACL,eAAe,EAAE,UAAU,CAAC,IAAI;YAChC,eAAe,EAAE,WAAW,CAAC,IAAI;YACjC,cAAc,EAAE,UAAU,CAAC,IAAI;SAChC,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,2BAA2B;IAC3B,8EAA8E;IAE9E;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAgB;QAC1B,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,4CAA4C;IAC9C,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E;;OAEG;IACH,UAAU,CAAI,IAAY;QACxB,OAAO;YACL,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,IAAI,EAAE,CAAC;YAClD,IAAI,EAAE,IAAI;SACX,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,GAAW;QACvB,4BAA4B;QAC5B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QAC3B,OAAO;YACL,GAAG;YACH,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,QAAQ;SACtB,CAAA;IACH,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAEtE,YAAY;QAClB,wBAAwB;QACxB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE;YAChC,OAAO,CAAC,CAAC,IAAI,CAAC;gBACZ,MAAM,EAAE,IAAI;gBACZ,EAAE,EAAE,IAAI,CAAC,GAAG;gBACZ,KAAK,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,2BAA2B;QAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YACrC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;YAC/B,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC3D,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;QAClC,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,sBAAsB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAA;QAEjB,+CAA+C;QAC/C,MAAM,OAAO,GAAoB;YAC/B,kBAAkB;YAClB,IAAI,CAAC,KAAa,EAAE,IAAc;gBAChC,mCAAmC;gBACnC,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CACjE,CAAA;YACH,CAAC;YAED,wCAAwC;YACxC,KAAK,CAAC,GAAG,CAAI,MAAc,EAAE,IAAc;gBACzC,0BAA0B;gBAC1B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAO,CAAA;YAC7C,CAAC;YAED,iCAAiC;YACjC,KAAK,CAAC,EAAE,CAAI,MAAc,EAAE,IAAc;gBACxC,8BAA8B;gBAC9B,MAAM,QAAQ,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,EAAE,CAAA;gBACvC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;gBAE3E,4BAA4B;gBAC5B,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAO,CAAA;gBACnD,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAA;gBAErF,OAAO,MAAM,CAAA;YACf,CAAC;YAED,sBAAsB;YACtB,EAAE,EAAE,IAAI,KAAK,CAAC,EAAgE,EAAE;gBAC9E,GAAG,CAAC,OAAO,EAAE,IAAY;oBACvB,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;wBACnB,GAAG,CAAC,EAAE,EAAE,IAAY;4BAClB,OAAO,CAAC,OAAgB,EAAE,EAAE;gCAC1B,yBAAyB;gCACzB,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAChF,CAAA;4BACH,CAAC,CAAA;wBACH,CAAC;qBACF,CAAC,CAAA;gBACJ,CAAC;aACF,CAAC;YAEF,mBAAmB;YACnB,KAAK,EAAE,IAAI,KAAK,CAAC,EAA0E,EAAE;gBAC3F,GAAG,CAAC,OAAO,EAAE,QAAgB;oBAC3B,OAAO;wBACL,EAAE,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC,OAAgB,EAAE,EAAE;4BACzC,6BAA6B;4BAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,CAClB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,IAAI,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CACrF,CAAA;wBACH,CAAC;qBACF,CAAA;gBACH,CAAC;aACF,CAAC;YAEF,uBAAuB;YACvB,KAAK,CAAC,MAAM,CAAC,IAAY;gBACvB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,EAAE;oBACjD,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;oBACnB,IAAI,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC3C,CAAC,CAAA;YACJ,CAAC;YAED,KAAK,CAAC,QAAQ,CAAC,GAAW;gBACxB,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;YAC3C,CAAC;YAED,KAAK,CAAC,KAAK,CAAC,MAAc;gBACxB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,EAAE,CAAC,CAAA;gBACvE,IAAI,UAAU,EAAE,CAAC;oBACf,oCAAoC;oBACpC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;gBAClD,CAAC;YACH,CAAC;SACF,CAAA;QAED,0CAA0C;QAC1C,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE;YACxB,GAAG,CAAC,MAAM,EAAE,IAAY;gBACtB,mCAAmC;gBACnC,IAAI,IAAI,IAAI,MAAM,EAAE,CAAC;oBACnB,OAAO,MAAM,CAAC,IAA6B,CAAC,CAAA;gBAC9C,CAAC;gBAED,2DAA2D;gBAC3D,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACpD,OAAO,CAAC,EAAU,EAAE,EAAE;wBACpB,mDAAmD;wBACnD,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;4BACnB,GAAG,CAAC,EAAE,EAAE,MAAc;gCACpB,OAAO,KAAK,EAAE,GAAG,IAAe,EAAE,EAAE;oCAClC,0DAA0D;oCAC1D,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;gCAC3C,CAAC,CAAA;4BACH,CAAC;yBACF,CAAC,CAAA;oBACJ,CAAC,CAAA;gBACH,CAAC;gBAED,OAAO,SAAS,CAAA;YAClB,CAAC;SACF,CAAC,CAAA;IACJ,CAAC;IAEO,oBAAoB,CAAC,MAAc;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;QAElC,OAAO;YACL,KAAK,CAAC,GAAG,CAAC,EAAU;gBAClB,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;YACvC,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,EAAU,EAAE,KAAc;gBAClC,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,CAAA;YAC7C,CAAC;YAED,KAAK,CAAC,MAAM,CAAC,EAAU;gBACrB,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,IAAI,EAAE,EAAE,CAAC,CAAA;YAC1C,CAAC;YAED,KAAK,CAAC,IAAI,CAAC,OAA6B;gBACtC,MAAM,UAAU,GAAG,OAAO,EAAE,MAAM;oBAChC,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;oBAC/B,CAAC,CAAC,GAAG,MAAM,GAAG,CAAA;gBAChB,OAAO,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAA;YAC7C,CAAC;SACF,CAAA;IACH,CAAC;;AAGH,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,sDAAsD;IACtD,MAAM,SAAS,GAAG,KAAgC,CAAA;IAElD,OAAO,CACL,SAAS,CAAC,KAAK,KAAK,WAAW;QAC/B,OAAO,SAAS,CAAC,aAAa,KAAK,UAAU;QAC5C,SAAuB,CAAC,aAAa,CAAC,KAAK,CAAC,CAC9C,CAAA;AACH,CAAC"}
|