@tensorix/metahub 0.5.7 → 0.6.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.
Files changed (124) hide show
  1. package/README.md +35 -14
  2. package/README.zh-CN.md +41 -13
  3. package/dist/cli.js +4436 -1328
  4. package/dist/cli.js.map +71 -48
  5. package/dist/core/blobs.d.ts.map +1 -1
  6. package/dist/core/blocks.d.ts +6 -2
  7. package/dist/core/blocks.d.ts.map +1 -1
  8. package/dist/core/compact.d.ts.map +1 -1
  9. package/dist/core/crdt.d.ts +5 -6
  10. package/dist/core/crdt.d.ts.map +1 -1
  11. package/dist/core/db.d.ts.map +1 -1
  12. package/dist/core/documents.d.ts +39 -0
  13. package/dist/core/documents.d.ts.map +1 -1
  14. package/dist/core/errors.d.ts +6 -1
  15. package/dist/core/errors.d.ts.map +1 -1
  16. package/dist/core/history-archive.d.ts +41 -0
  17. package/dist/core/history-archive.d.ts.map +1 -0
  18. package/dist/core/history.d.ts.map +1 -1
  19. package/dist/core/hlc.d.ts +4 -0
  20. package/dist/core/hlc.d.ts.map +1 -1
  21. package/dist/core/node.d.ts.map +1 -1
  22. package/dist/core/properties.d.ts +6 -0
  23. package/dist/core/properties.d.ts.map +1 -1
  24. package/dist/core/replica/drafts.d.ts +26 -0
  25. package/dist/core/replica/drafts.d.ts.map +1 -0
  26. package/dist/core/replica/rpc.d.ts +8 -0
  27. package/dist/core/replica/rpc.d.ts.map +1 -0
  28. package/dist/core/replica/service.d.ts +970 -0
  29. package/dist/core/replica/service.d.ts.map +1 -0
  30. package/dist/core/replica/sync.d.ts +55 -0
  31. package/dist/core/replica/sync.d.ts.map +1 -0
  32. package/dist/core/schema-init.d.ts +1 -1
  33. package/dist/core/schema-init.d.ts.map +1 -1
  34. package/dist/core/search.d.ts +34 -0
  35. package/dist/core/search.d.ts.map +1 -1
  36. package/dist/core/snapshot.d.ts.map +1 -1
  37. package/dist/core/sync/bucket-v2.d.ts +110 -0
  38. package/dist/core/sync/bucket-v2.d.ts.map +1 -0
  39. package/dist/core/sync/client.d.ts +14 -1
  40. package/dist/core/sync/client.d.ts.map +1 -1
  41. package/dist/core/sync/commit-log.d.ts +41 -0
  42. package/dist/core/sync/commit-log.d.ts.map +1 -0
  43. package/dist/core/sync/current-checkpoint.d.ts +47 -0
  44. package/dist/core/sync/current-checkpoint.d.ts.map +1 -0
  45. package/dist/core/sync/data-map-db.d.ts.map +1 -1
  46. package/dist/core/sync/data-version.d.ts +29 -0
  47. package/dist/core/sync/data-version.d.ts.map +1 -0
  48. package/dist/core/sync/drop-keys.d.ts.map +1 -1
  49. package/dist/core/sync/drop-pull.d.ts.map +1 -1
  50. package/dist/core/sync/e2ee.d.ts +5 -0
  51. package/dist/core/sync/e2ee.d.ts.map +1 -1
  52. package/dist/core/sync/enroll.d.ts +2 -0
  53. package/dist/core/sync/enroll.d.ts.map +1 -1
  54. package/dist/core/sync/history-observation.d.ts +5 -0
  55. package/dist/core/sync/history-observation.d.ts.map +1 -0
  56. package/dist/core/sync/http-status.d.ts.map +1 -1
  57. package/dist/core/sync/page-messages.d.ts +12 -0
  58. package/dist/core/sync/page-messages.d.ts.map +1 -1
  59. package/dist/core/sync/peer-v2.d.ts +9 -0
  60. package/dist/core/sync/peer-v2.d.ts.map +1 -0
  61. package/dist/core/sync/peers.d.ts +1 -0
  62. package/dist/core/sync/peers.d.ts.map +1 -1
  63. package/dist/core/sync/portable-json.d.ts +5 -0
  64. package/dist/core/sync/portable-json.d.ts.map +1 -0
  65. package/dist/core/sync/protocol.d.ts +32 -0
  66. package/dist/core/sync/protocol.d.ts.map +1 -1
  67. package/dist/core/sync/recovery-desktop.d.ts +6 -0
  68. package/dist/core/sync/recovery-desktop.d.ts.map +1 -0
  69. package/dist/core/sync/recovery-intent.d.ts +7 -0
  70. package/dist/core/sync/recovery-intent.d.ts.map +1 -0
  71. package/dist/core/sync/recovery-local.d.ts +21 -0
  72. package/dist/core/sync/recovery-local.d.ts.map +1 -0
  73. package/dist/core/sync/recovery-v2.d.ts +40 -0
  74. package/dist/core/sync/recovery-v2.d.ts.map +1 -0
  75. package/dist/core/sync/retention-executor.d.ts +77 -0
  76. package/dist/core/sync/retention-executor.d.ts.map +1 -0
  77. package/dist/core/sync/retention-protocol.d.ts +74 -0
  78. package/dist/core/sync/retention-protocol.d.ts.map +1 -0
  79. package/dist/core/sync/retention-state.d.ts +87 -0
  80. package/dist/core/sync/retention-state.d.ts.map +1 -0
  81. package/dist/core/sync/routes.d.ts +1 -1
  82. package/dist/core/sync/routes.d.ts.map +1 -1
  83. package/dist/core/sync/server.d.ts +1 -1
  84. package/dist/core/sync/server.d.ts.map +1 -1
  85. package/dist/core/sync/share-export.d.ts.map +1 -1
  86. package/dist/core/sync/share-serve.d.ts.map +1 -1
  87. package/dist/core/sync/share-table-client.d.ts +7 -0
  88. package/dist/core/sync/share-table-client.d.ts.map +1 -0
  89. package/dist/core/sync/share-table.d.ts +11 -0
  90. package/dist/core/sync/share-table.d.ts.map +1 -0
  91. package/dist/core/sync/share-tools.d.ts +10 -0
  92. package/dist/core/sync/share-tools.d.ts.map +1 -0
  93. package/dist/core/sync/storage-s3-bun.d.ts +3 -1
  94. package/dist/core/sync/storage-s3-bun.d.ts.map +1 -1
  95. package/dist/core/sync/storage-s3-fetch.d.ts +8 -0
  96. package/dist/core/sync/storage-s3-fetch.d.ts.map +1 -0
  97. package/dist/core/sync/storage-s3-sign.d.ts +3 -0
  98. package/dist/core/sync/storage-s3-sign.d.ts.map +1 -1
  99. package/dist/core/sync/storage-v2.d.ts +18 -0
  100. package/dist/core/sync/storage-v2.d.ts.map +1 -0
  101. package/dist/core/sync/storage.d.ts +47 -6
  102. package/dist/core/sync/storage.d.ts.map +1 -1
  103. package/dist/core/sync/transport.d.ts +4 -0
  104. package/dist/core/sync/transport.d.ts.map +1 -0
  105. package/dist/core/sync/v2-ingest.d.ts +10 -0
  106. package/dist/core/sync/v2-ingest.d.ts.map +1 -0
  107. package/dist/core/sync/v2-maintenance.d.ts +10 -0
  108. package/dist/core/sync/v2-maintenance.d.ts.map +1 -0
  109. package/dist/db-worker.js +212 -160
  110. package/dist/edge-worker.js +4956 -186
  111. package/dist/index.js +9461 -6468
  112. package/dist/index.js.map +69 -47
  113. package/dist/metahub-sdk.js +5 -5
  114. package/dist/mh-runtime.js +2 -2
  115. package/dist/shared/views/date.d.ts +21 -0
  116. package/dist/shared/views/date.d.ts.map +1 -0
  117. package/dist/shared/views/model.d.ts +65 -0
  118. package/dist/shared/views/model.d.ts.map +1 -0
  119. package/dist/shared/views/query.d.ts +47 -0
  120. package/dist/shared/views/query.d.ts.map +1 -0
  121. package/dist/sw.js +9 -9
  122. package/dist/webui/server/routes.d.ts.map +1 -1
  123. package/dist/webui.js +131 -130
  124. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../../src/core/sync/peers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peers.d.ts","sourceRoot":"","sources":["../../../src/core/sync/peers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Hermes does not guarantee TextDecoder or structuredClone. Protocol state is
2
+ * JSON-only; keep this fallback local rather than replacing platform globals. */
3
+ export declare function cloneProtocolState<T>(value: T): T;
4
+ export declare function decodeUtf8(bytes: Uint8Array): string;
5
+ //# sourceMappingURL=portable-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"portable-json.d.ts","sourceRoot":"","sources":["../../../src/core/sync/portable-json.ts"],"names":[],"mappings":"AAAA;iFACiF;AACjF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAEjD;AACD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAuBpD"}
@@ -10,6 +10,17 @@ export declare const ChangeSchema: z.ZodObject<{
10
10
  txn: z.ZodOptional<z.ZodNullable<z.ZodString>>;
11
11
  }, z.core.$strip>;
12
12
  export declare const SyncRequestSchema: z.ZodObject<{
13
+ dataVersion: z.ZodOptional<z.ZodNumber>;
14
+ minSupportedDataVersion: z.ZodOptional<z.ZodNumber>;
15
+ maxSupportedDataVersion: z.ZodOptional<z.ZodNumber>;
16
+ generation: z.ZodOptional<z.ZodObject<{
17
+ protocolVersion: z.ZodLiteral<2>;
18
+ workspaceId: z.ZodString;
19
+ epoch: z.ZodNumber;
20
+ incarnationId: z.ZodString;
21
+ checkpoint: z.ZodNullable<z.ZodString>;
22
+ }, z.core.$strict>>;
23
+ bases: z.ZodOptional<z.ZodArray<z.ZodNullable<z.ZodString>>>;
13
24
  node_id: z.ZodString;
14
25
  since: z.ZodNumber;
15
26
  changes: z.ZodArray<z.ZodObject<{
@@ -25,6 +36,17 @@ export declare const SyncRequestSchema: z.ZodObject<{
25
36
  exclude_datasets: z.ZodOptional<z.ZodArray<z.ZodString>>;
26
37
  }, z.core.$strip>;
27
38
  export declare const SyncResponseSchema: z.ZodObject<{
39
+ dataVersion: z.ZodOptional<z.ZodNumber>;
40
+ minSupportedDataVersion: z.ZodOptional<z.ZodNumber>;
41
+ maxSupportedDataVersion: z.ZodOptional<z.ZodNumber>;
42
+ generation: z.ZodOptional<z.ZodObject<{
43
+ protocolVersion: z.ZodLiteral<2>;
44
+ workspaceId: z.ZodString;
45
+ epoch: z.ZodNumber;
46
+ incarnationId: z.ZodString;
47
+ checkpoint: z.ZodNullable<z.ZodString>;
48
+ }, z.core.$strict>>;
49
+ bases: z.ZodOptional<z.ZodArray<z.ZodNullable<z.ZodString>>>;
28
50
  node_id: z.ZodString;
29
51
  changes: z.ZodArray<z.ZodObject<{
30
52
  hlc: z.ZodString;
@@ -39,6 +61,16 @@ export declare const SyncResponseSchema: z.ZodObject<{
39
61
  skewed_rejected: z.ZodOptional<z.ZodNumber>;
40
62
  }, z.core.$strip>;
41
63
  export declare const HealthResponseSchema: z.ZodObject<{
64
+ dataVersion: z.ZodOptional<z.ZodNumber>;
65
+ minSupportedDataVersion: z.ZodOptional<z.ZodNumber>;
66
+ maxSupportedDataVersion: z.ZodOptional<z.ZodNumber>;
67
+ generation: z.ZodOptional<z.ZodObject<{
68
+ protocolVersion: z.ZodLiteral<2>;
69
+ workspaceId: z.ZodString;
70
+ epoch: z.ZodNumber;
71
+ incarnationId: z.ZodString;
72
+ checkpoint: z.ZodNullable<z.ZodString>;
73
+ }, z.core.$strict>>;
42
74
  ok: z.ZodBoolean;
43
75
  node: z.ZodString;
44
76
  capabilities: z.ZodOptional<z.ZodArray<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/core/sync/protocol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,YAAY,CAAC;AAMvD,eAAO,MAAM,YAAY;;;;;;;;iBAUvB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;iBAa5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;iBAQ7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;iBAW/B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC;AACxF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC;AAC1F,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,WAAW,YAAY,CAAC;AAGrC,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAGxC,eAAO,MAAM,SAAS,cAAc,CAAC"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../src/core/sync/protocol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,YAAY,CAAC;AAMvD,eAAO,MAAM,YAAY;;;;;;;;iBAUvB,CAAC;AAEH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;iBAkB5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;iBAa7B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;iBAe/B,CAAC;AAKH,eAAO,MAAM,iBAAiB;;;;;iBAK5B,CAAC;AAEH,eAAO,MAAM,kBAAkB;;;iBAG7B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC;AACxF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,GAAG;IAAE,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,CAAC;AAC1F,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,eAAO,MAAM,SAAS,UAAU,CAAC;AACjC,eAAO,MAAM,WAAW,YAAY,CAAC;AAGrC,eAAO,MAAM,UAAU,gBAAgB,CAAC;AAGxC,eAAO,MAAM,SAAS,cAAc,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type StorageClient } from "./storage.ts";
2
+ export declare function rebuildDesktopReplica(url: string, transport?: StorageClient): Promise<{
3
+ packageId: `${string}-${string}-${string}-${string}-${string}`;
4
+ pending: number;
5
+ }>;
6
+ //# sourceMappingURL=recovery-desktop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-desktop.d.ts","sourceRoot":"","sources":["../../../src/core/sync/recovery-desktop.ts"],"names":[],"mappings":"AAcA,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,cAAc,CAAC;AAEpE,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,aAAa;;;GAiG1B"}
@@ -0,0 +1,7 @@
1
+ import type { DbDriver } from "../driver.ts";
2
+ import type { Change } from "../crdt.ts";
3
+ /** Replay plain block edits only when every edited register still has the
4
+ * exact common baseline. Structural edits or missing evidence stay recoverable
5
+ * copies. Unedited remote blocks are preserved. */
6
+ export declare function restoreUncontestedText(source: DbDriver, target: DbDriver, docId: string, pending: Change[]): boolean;
7
+ //# sourceMappingURL=recovery-intent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-intent.d.ts","sourceRoot":"","sources":["../../../src/core/sync/recovery-intent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAGzC;;mDAEmD;AACnD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAuBpH"}
@@ -0,0 +1,21 @@
1
+ import { type DbDriver } from "../driver.ts";
2
+ export declare const replicaName: (id: string) => string;
3
+ /** Each retired database contains one durable link. A missing target is an
4
+ * error: opening an empty replacement would hide the verified replica. */
5
+ export declare function openActiveReplica<T extends {
6
+ db: DbDriver;
7
+ close(): void;
8
+ }>(open: (name: string, initial: boolean) => T): T;
9
+ export declare function publishSuccessor(source: DbDriver, name: string): void;
10
+ /** Foreground check also works when the sync scheduler is paused/offline. */
11
+ export declare function inspectWorkspaceVersion(db: DbDriver): Promise<number>;
12
+ export declare function upgradeBuckets(db: DbDriver): string[];
13
+ export declare function localRecoveryTarget(db: DbDriver, url: string): {
14
+ config: any;
15
+ workspaceId: string;
16
+ };
17
+ /** Hydrate retained revisions only when an operation actually needs history. */
18
+ export declare function hydrateLocalHistory(db: DbDriver, docId: string): Promise<void>;
19
+ /** Preserve connection settings, never the old transport acknowledgements. */
20
+ export declare function installLocalConnections(source: DbDriver, shadow: DbDriver, recoveryPeer: string): void;
21
+ //# sourceMappingURL=recovery-local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-local.d.ts","sourceRoot":"","sources":["../../../src/core/sync/recovery-local.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAUtD,eAAO,MAAM,WAAW,GAAI,IAAI,MAAM,WAAuB,CAAC;AAQ9D;0EAC0E;AAC1E,wBAAgB,iBAAiB,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,QAAQ,CAAC;IAAC,KAAK,IAAI,IAAI,CAAA;CAAE,EACzE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,CAAC,GAC1C,CAAC,CA+BH;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,QAS9D;AAED,6EAA6E;AAC7E,wBAAsB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,mBAgBzD;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,QAAQ,GAAG,MAAM,EAAE,CAErD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM;;;EAa5D;AAED,gFAAgF;AAChF,wBAAsB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,iBA2BpE;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,EAChB,YAAY,EAAE,MAAM,QAqCrB"}
@@ -0,0 +1,40 @@
1
+ import type { DbDriver } from "../driver.ts";
2
+ import { type StorageClient, type S3Config } from "./storage.ts";
3
+ export type RecoveryPhase = "saving" | "protecting" | "downloading" | "verifying" | "swapping" | "pending";
4
+ export interface RecoveryItem {
5
+ id: string;
6
+ kind: string;
7
+ target: string;
8
+ local: string;
9
+ remote: string | null;
10
+ status: string;
11
+ result: string | null;
12
+ }
13
+ export declare function recoveryItems(db: DbDriver): RecoveryItem[];
14
+ /** Explicit user decisions are idempotent. No TTL deletes unresolved items. */
15
+ export declare function resolveRecoveryItem(db: DbDriver, id: string, action: "copy" | "discard"): string | null;
16
+ export interface RecoveryAdapter {
17
+ /** Connected v1 bucket to drain before publishing the first v2 checkpoint. */
18
+ legacyPeerUrl?: string;
19
+ /** Flush every active editor then quiesce mutations and old transport. */
20
+ pauseAndFlush(): Promise<void>;
21
+ /** Durable consistent database + drafts + unpublished attachment bytes.
22
+ * Must read back and verify the saved package before returning its proof. */
23
+ protect(id: string): Promise<{
24
+ proof: string;
25
+ }>;
26
+ createShadow(id: string): Promise<DbDriver>;
27
+ /** Persist the active-database pointer atomically; old package stays intact. */
28
+ swap(shadow: DbDriver, id: string): Promise<void>;
29
+ releaseShadow(shadow: DbDriver, committed: boolean): Promise<void>;
30
+ resume(): Promise<void>;
31
+ phase?(phase: RecoveryPhase): void;
32
+ }
33
+ /** Transaction boundary across runtimes. No old database is reset in place.
34
+ * Adapter failures before swap leave the original database available. */
35
+ export declare function recoverV2Workspace(source: DbDriver, client: StorageClient, config: S3Config, workspaceId: string, adapter: RecoveryAdapter): Promise<{
36
+ packageId: `${string}-${string}-${string}-${string}-${string}`;
37
+ pending: number;
38
+ }>;
39
+ export declare function loadV2DocumentHistory(db: DbDriver, client: StorageClient, config: S3Config, documentId: string): Promise<void>;
40
+ //# sourceMappingURL=recovery-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recovery-v2.d.ts","sourceRoot":"","sources":["../../../src/core/sync/recovery-v2.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAG7C,OAAO,EAAmB,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAQlF,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,YAAY,GAAG,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3G,MAAM,WAAW,YAAY;IAAG,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AAyCvJ,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,GAAG,YAAY,EAAE,CAc1D;AACD,+EAA+E;AAC/E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAkBvG;AAED,MAAM,WAAW,eAAe;IAC9B,8EAA8E;IAC9E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0EAA0E;IAC1E,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B;iFAC6E;IAC7E,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAChD,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5C,gFAAgF;IAChF,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,KAAK,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;CACpC;AACD;yEACyE;AACzE,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe;;;GAqJhJ;AAED,wBAAsB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAoBpH"}
@@ -0,0 +1,77 @@
1
+ import type { DbDriver } from "../driver.ts";
2
+ import type { S3Config, StorageClient } from "./storage.ts";
3
+ import { type DocumentArchive } from "../history-archive.ts";
4
+ export interface RetentionReport {
5
+ workspaceId: string;
6
+ checkpoint: string;
7
+ epoch: number;
8
+ observedAt: number;
9
+ candidates: string[];
10
+ blockedBy: string[];
11
+ deletionTimes: Record<string, number>;
12
+ eligible: boolean;
13
+ reason: string | null;
14
+ currentFields: number;
15
+ projectedFields: number;
16
+ }
17
+ /** Keep each register's last value before the window, plus every collected
18
+ * transition in the window. Baseline values do not imply continuous coverage. */
19
+ export declare function retainHistoryWindow(archive: DocumentArchive, cutoff: number): DocumentArchive;
20
+ /** Read-only daily candidate report. Age starts at observed bucket commit time,
21
+ * including migration tombstones whose original delete time is unprovable. */
22
+ export declare function inspectRetention(db: DbDriver, client: StorageClient, config: S3Config): Promise<RetentionReport>;
23
+ /** Prepare/commit can be resumed by any complete node. Production must explicitly
24
+ * enable this after its dry-run report is reviewed; no election grants authority. */
25
+ export declare function executeRetention(db: DbDriver, client: StorageClient, config: S3Config, options: {
26
+ enabled: boolean;
27
+ }): Promise<{
28
+ status: "dry_run";
29
+ report: RetentionReport;
30
+ checkpoint?: undefined;
31
+ protectedUntil?: undefined;
32
+ } | {
33
+ status: "waiting_for_seals";
34
+ report: RetentionReport;
35
+ checkpoint?: undefined;
36
+ protectedUntil?: undefined;
37
+ } | {
38
+ status: "cancelled";
39
+ report: RetentionReport;
40
+ checkpoint?: undefined;
41
+ protectedUntil?: undefined;
42
+ } | {
43
+ status: "committed";
44
+ report: RetentionReport;
45
+ checkpoint: string;
46
+ protectedUntil: number | null;
47
+ }>;
48
+ export declare function upgradeWorkspaceData(db: DbDriver, client: StorageClient, config: S3Config, targetDataVersion: number): Promise<{
49
+ status: "dry_run";
50
+ report: RetentionReport;
51
+ checkpoint?: undefined;
52
+ protectedUntil?: undefined;
53
+ } | {
54
+ status: "waiting_for_seals";
55
+ report: RetentionReport;
56
+ checkpoint?: undefined;
57
+ protectedUntil?: undefined;
58
+ } | {
59
+ status: "cancelled";
60
+ report: RetentionReport;
61
+ checkpoint?: undefined;
62
+ protectedUntil?: undefined;
63
+ } | {
64
+ status: "committed";
65
+ report: RetentionReport;
66
+ checkpoint: string;
67
+ protectedUntil: number | null;
68
+ }>;
69
+ /** Delete only objects covered by an accepted checkpoint after its protection
70
+ * window. Control slots and unreferenced uploads are deliberately never swept. */
71
+ export declare function cleanRetiredV2Objects(client: StorageClient, config: S3Config, options: {
72
+ enabled: boolean;
73
+ }, db?: DbDriver): Promise<{
74
+ deleted: number;
75
+ candidates: number;
76
+ }>;
77
+ //# sourceMappingURL=retention-executor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-executor.d.ts","sourceRoot":"","sources":["../../../src/core/sync/retention-executor.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAI5D,OAAO,EAA+F,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO1J,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,EAAE,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7J,QAAQ,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAC;CAC1F;AACD;iFACiF;AACjF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAa7F;AACD;8EAC8E;AAC9E,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,CAAC,CAmCtH;AAED;qFACqF;AACrF,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE;;;;;;;;;;;;;;;;;;;;GAE1H;AAID,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;GAGpH;AAqED;kFACkF;AAClF,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,EAAE,CAAC,EAAE,QAAQ;;;GAoDhI"}
@@ -0,0 +1,74 @@
1
+ import { z } from "zod";
2
+ import type { DbDriver } from "../driver.ts";
3
+ import type { RetentionEvent } from "./retention-state.ts";
4
+ export declare const RetentionEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
5
+ type: z.ZodLiteral<"upgrade">;
6
+ workspaceId: z.ZodString;
7
+ epoch: z.ZodNumber;
8
+ id: z.ZodString;
9
+ from: z.ZodNumber;
10
+ to: z.ZodNumber;
11
+ checkpoint: z.ZodString;
12
+ }, z.core.$strict>, z.ZodObject<{
13
+ type: z.ZodLiteral<"clock">;
14
+ }, z.core.$strict>, z.ZodObject<{
15
+ type: z.ZodLiteral<"join">;
16
+ epoch: z.ZodNumber;
17
+ member: z.ZodString;
18
+ checkpoint: z.ZodNullable<z.ZodString>;
19
+ replaces: z.ZodOptional<z.ZodObject<{
20
+ member: z.ZodString;
21
+ sequence: z.ZodNumber;
22
+ }, z.core.$strict>>;
23
+ }, z.core.$strict>, z.ZodObject<{
24
+ type: z.ZodLiteral<"batch">;
25
+ epoch: z.ZodNumber;
26
+ member: z.ZodString;
27
+ first: z.ZodNumber;
28
+ last: z.ZodNumber;
29
+ objectHash: z.ZodString;
30
+ }, z.core.$strict>, z.ZodObject<{
31
+ type: z.ZodLiteral<"renew">;
32
+ epoch: z.ZodNumber;
33
+ member: z.ZodString;
34
+ sequence: z.ZodNumber;
35
+ checkpoint: z.ZodNullable<z.ZodString>;
36
+ }, z.core.$strict>, z.ZodObject<{
37
+ type: z.ZodLiteral<"prepare">;
38
+ epoch: z.ZodNumber;
39
+ id: z.ZodString;
40
+ targetDataVersion: z.ZodOptional<z.ZodNumber>;
41
+ }, z.core.$strict>, z.ZodObject<{
42
+ type: z.ZodLiteral<"seal">;
43
+ epoch: z.ZodNumber;
44
+ id: z.ZodString;
45
+ member: z.ZodString;
46
+ sequence: z.ZodNumber;
47
+ }, z.core.$strict>, z.ZodObject<{
48
+ type: z.ZodLiteral<"cancel">;
49
+ epoch: z.ZodNumber;
50
+ id: z.ZodString;
51
+ }, z.core.$strict>, z.ZodObject<{
52
+ type: z.ZodLiteral<"commit">;
53
+ epoch: z.ZodNumber;
54
+ id: z.ZodString;
55
+ checkpoint: z.ZodString;
56
+ }, z.core.$strict>], "type">;
57
+ export declare function parseRetentionEvent(value: unknown): RetentionEvent;
58
+ export declare const ReplicaGenerationSchema: z.ZodObject<{
59
+ protocolVersion: z.ZodLiteral<2>;
60
+ workspaceId: z.ZodString;
61
+ epoch: z.ZodNumber;
62
+ incarnationId: z.ZodString;
63
+ checkpoint: z.ZodNullable<z.ZodString>;
64
+ }, z.core.$strict>;
65
+ export type ReplicaGeneration = z.infer<typeof ReplicaGenerationSchema>;
66
+ export declare function readReplicaGeneration(db: DbDriver): ReplicaGeneration | null;
67
+ /** Storage v2 records local upload progress per incarnation. Do not credit a
68
+ * different bucket with that acknowledgement when reporting its status. */
69
+ export declare function bucketPushCursor(db: DbDriver, url: string, peerCursor: number): number;
70
+ export declare function needsBucketUpgrade(db: DbDriver, url: string): boolean;
71
+ export declare function writeReplicaGeneration(db: DbDriver, value: ReplicaGeneration): void;
72
+ /** Gate before any ingestion, upload, cursor acknowledgement, or backup merge. */
73
+ export declare function assertReplicaGeneration(db: DbDriver, remote: unknown): void;
74
+ //# sourceMappingURL=retention-protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-protocol.d.ts","sourceRoot":"","sources":["../../../src/core/sync/retention-protocol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAO3D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAU/B,CAAC;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAIlE;AACD,eAAO,MAAM,uBAAuB;;;;;;kBAGzB,CAAC;AACZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,qBAAqB,CAAC,EAAE,EAAE,QAAQ,GAAG,iBAAiB,GAAG,IAAI,CAM5E;AACD;2EAC2E;AAC3E,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAQtF;AAED,wBAAgB,kBAAkB,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAGrE;AAED,wBAAgB,sBAAsB,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,GAAG,IAAI,CAOnF;AACD,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAW3E"}
@@ -0,0 +1,87 @@
1
+ export declare const DAY_MS = 86400000;
2
+ export declare const RETENTION_POLICY: Readonly<{
3
+ syncDays: 30;
4
+ historyDays: 90;
5
+ protectionDays: 7;
6
+ prepareMs: 60000;
7
+ gcIntervalMs: number;
8
+ }>;
9
+ export interface RetentionMember {
10
+ sequence: number;
11
+ expiresAt: number;
12
+ renewedAt: number;
13
+ sealed: boolean;
14
+ }
15
+ export interface RetentionState {
16
+ dataVersion: number;
17
+ epoch: number;
18
+ members: Record<string, RetentionMember>;
19
+ preparing: null | {
20
+ id: string;
21
+ startedAt: number;
22
+ members: string[];
23
+ targetDataVersion?: number;
24
+ };
25
+ lastGcAt: number | null;
26
+ checkpoint: string | null;
27
+ protectedUntil: number | null;
28
+ }
29
+ export type RetentionEvent = {
30
+ type: "upgrade";
31
+ workspaceId: string;
32
+ epoch: number;
33
+ id: string;
34
+ from: number;
35
+ to: number;
36
+ checkpoint: string;
37
+ } | {
38
+ type: "clock";
39
+ } | {
40
+ type: "join";
41
+ epoch: number;
42
+ member: string;
43
+ checkpoint: string | null;
44
+ replaces?: {
45
+ member: string;
46
+ sequence: number;
47
+ };
48
+ } | {
49
+ type: "batch";
50
+ epoch: number;
51
+ member: string;
52
+ first: number;
53
+ last: number;
54
+ objectHash: string;
55
+ } | {
56
+ type: "renew";
57
+ epoch: number;
58
+ member: string;
59
+ sequence: number;
60
+ checkpoint: string | null;
61
+ } | {
62
+ type: "prepare";
63
+ epoch: number;
64
+ id: string;
65
+ targetDataVersion?: number;
66
+ } | {
67
+ type: "seal";
68
+ epoch: number;
69
+ id: string;
70
+ member: string;
71
+ sequence: number;
72
+ } | {
73
+ type: "cancel";
74
+ epoch: number;
75
+ id: string;
76
+ } | {
77
+ type: "commit";
78
+ epoch: number;
79
+ id: string;
80
+ checkpoint: string;
81
+ };
82
+ export declare function initialRetentionState(): RetentionState;
83
+ /** Deterministic control reducer. Object existence/content/coverage proofs must
84
+ * be validated by the storage layer before it accepts a batch/checkpoint event.
85
+ * Returns a new state: failed proposals never partially modify caller state. */
86
+ export declare function reduceRetention(state: RetentionState, event: RetentionEvent, at: number): RetentionState;
87
+ //# sourceMappingURL=retention-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention-state.d.ts","sourceRoot":"","sources":["../../../src/core/sync/retention-state.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM,WAAa,CAAC;AACjC,eAAO,MAAM,gBAAgB;;;;;;EAAmH,CAAC;AACjJ,MAAM,WAAW,eAAe;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE;AAC5G,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACzC,SAAS,EAAE,IAAI,GAAG;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACnG,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AACD,MAAM,MAAM,cAAc,GACtB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACjH;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC3H;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACjG;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAC7F;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7E;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC;AACtE,wBAAgB,qBAAqB,IAAI,cAAc,CAEtD;AAGD;;gFAEgF;AAChF,wBAAgB,eAAe,CAAC,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,cAAc,CAsFxG"}
@@ -11,7 +11,7 @@ export interface RouteCtx {
11
11
  /** Turn a thrown handler error into a JSON response: `{error, code?}` with a
12
12
  * semantic status, so HTTP clients can dispatch on `code` like CLI users
13
13
  * dispatch on exit codes. */
14
- export declare function errorResponse(e: unknown, req?: Request): Response;
14
+ export declare function errorResponse(e: unknown, req?: Request, workspaceId?: string): Response;
15
15
  /**
16
16
  * One entry per endpoint. `request`/`response` are Zod schemas that double as
17
17
  * the OpenAPI source (see ./openapi.ts). Add an endpoint here and it shows up
@@ -1 +1 @@
1
- {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/core/sync/routes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB3C,yEAAyE;AACzE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;4DACwD;IACxD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAkBD;;8BAE8B;AAC9B,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,GAAG,QAAQ,CAOjE;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CACxE;AA4CD,eAAO,MAAM,MAAM,EAAE,KAAK,EAAmE,CAAC"}
1
+ {"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../../src/core/sync/routes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAkB3C,yEAAyE;AACzE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,QAAQ,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb;4DACwD;IACxD,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAsBD;;8BAE8B;AAC9B,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,CAOvF;AAED;;;;GAIG;AACH,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC;CACxE;AA+DD,eAAO,MAAM,MAAM,EAAE,KAAK,EAAmE,CAAC"}
@@ -68,7 +68,7 @@ export interface UiHandler {
68
68
  routes: Route[];
69
69
  onStart?(db: DbDriver): void;
70
70
  }
71
- export declare function loopbackUiRejection(req: Request, port: number): Response | null;
71
+ export declare function loopbackUiRejection(req: Request, port: number, boundHost?: string): Response | null;
72
72
  /** Start the CRDT sync server. It is just another node backed by ~/.metahub. */
73
73
  export declare function startServer(opts?: ServerOptions): RunningServer;
74
74
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/core/sync/server.ts"],"names":[],"mappings":"AAAA,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAIvC,OAAO,EAAU,KAAK,KAAK,EAAiB,MAAM,aAAa,CAAC;AAwBhE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qFAAqF;IACrF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,wFAAwF;IACxF,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,oEAAoE;IACpE,GAAG,EAAE,OAAO,CAAC;IACb,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,6EAA6E;AAC7E,qBAAa,cAAe,SAAQ,OAAO;IAEvC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBADZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM;CASxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;2DACuD;IACvD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;yEACqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;kDAE8C;IAC9C,EAAE,CAAC,EAAE,SAAS,CAAC;IACf;;;mEAG+D;IAC/D,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACpD,4EAA4E;IAC5E,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAe/E;AAYD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,GAAE,aAAkB,GAAG,aAAa,CAkVnE"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/core/sync/server.ts"],"names":[],"mappings":"AACA,OAAO,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAKvC,OAAO,EAAyB,KAAK,KAAK,EAAiB,MAAM,aAAa,CAAC;AAwB/E,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,iEAAiE;IACjE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,qFAAqF;IACrF,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,wFAAwF;IACxF,QAAQ,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC5C,oEAAoE;IACpE,GAAG,EAAE,OAAO,CAAC;IACb,8CAA8C;IAC9C,QAAQ,EAAE,OAAO,CAAC;IAClB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,IAAI,CAAC;CAClB;AAED,6EAA6E;AAC7E,qBAAa,cAAe,SAAQ,OAAO;IAEvC,QAAQ,CAAC,IAAI,EAAE,MAAM;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM;gBADZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM;CASxB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qEAAqE;IACrE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,oEAAoE;IACpE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;2DACuD;IACvD,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC;yEACqE;IACrE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;kDAE8C;IAC9C,EAAE,CAAC,EAAE,SAAS,CAAC;IACf;;;mEAG+D;IAC/D,GAAG,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7C;AAED,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,8EAA8E;IAC9E,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;IACpD,4EAA4E;IAC5E,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,OAAO,CAAC,CAAC,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC9B;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAgBnG;AAYD,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,IAAI,GAAE,aAAkB,GAAG,aAAa,CAqWnE"}
@@ -1 +1 @@
1
- {"version":3,"file":"share-export.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-export.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"share-export.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-export.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"share-serve.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-serve.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA6C5C,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAoC1B"}
1
+ {"version":3,"file":"share-serve.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-serve.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AA+C5C,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED,wBAAsB,UAAU,CAC9B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,GAAE,cAAmB,GACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAoC1B"}
@@ -0,0 +1,7 @@
1
+ /** @param {{copied: string, failed: string, record: string}} labels */
2
+ export function mountShareTable(labels: {
3
+ copied: string;
4
+ failed: string;
5
+ record: string;
6
+ }): void;
7
+ //# sourceMappingURL=share-table-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-table-client.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-table-client.js"],"names":[],"mappings":"AAEA,uEAAuE;AACvE,wCADY;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,QAgF3D"}
@@ -0,0 +1,11 @@
1
+ import type { Locale } from "./locale.ts";
2
+ /** html and editAttrs must be produced by the caller's escaped cell renderer. */
3
+ export declare function shareCellHtml(html: string, name: string, locale: Locale, editAttrs?: string): string;
4
+ export declare function shareTableHtml(columns: {
5
+ name: string;
6
+ width?: number;
7
+ }[], rows: string, locale: Locale): string;
8
+ export declare const SHARE_TABLE_CSS = "\n#app:has(.share-table),.wrap:has(.share-table){max-width:1440px}\n.table-wrap:has(.share-table){max-width:100%;overflow:auto;overscroll-behavior-x:contain}\ntable.share-table{table-layout:fixed;min-width:100%}\ntable.share-table th{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500;color:var(--muted)}\ntable.share-table td{position:relative;vertical-align:top}\n.share-cell-value{min-width:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}\n.share-table[data-ready] .share-cell-value{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;max-height:4.65em}\n.share-table .tag{max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}\n.share-cell-expand{position:absolute;top:5px;right:5px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--bg);color:var(--fg);cursor:pointer;opacity:0;pointer-events:none}\n.share-cell-expand[hidden]{display:none}\n.share-cell-expand svg,.share-text-close svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}\n.share-table td:is(:hover,:focus-within,.is-selected) .share-cell-expand{opacity:1;pointer-events:auto}\n.share-table td.is-selected{box-shadow:inset 0 0 0 1.5px var(--accent);background:var(--accent-soft)}\n.share-cell-expand:hover,.share-text-close:hover{background:var(--card)}\n.share-cell-expand:focus-visible,.share-text-close:focus-visible,.share-text-body:focus-visible{outline:2px solid var(--accent);outline-offset:2px}\n.share-table[data-ready] [contenteditable]:focus{display:block;-webkit-line-clamp:unset;max-height:min(320px,40vh);overflow:auto;outline:2px solid var(--accent);outline-offset:2px}\n.share-cell-value.saving{opacity:.5}.share-cell-value.saved{background:color-mix(in srgb,var(--success) 18%,transparent)}\n.share-text-peek{position:fixed;inset:0 0 0 auto;margin:0;padding:0;width:min(620px,100vw);max-width:100vw;height:100vh;height:100dvh;max-height:100dvh;border:0;border-inline-start:1px solid var(--line);background:var(--bg);color:var(--fg);font:inherit;overflow:hidden}\n.share-text-peek[open]{display:flex;flex-direction:column}\n.share-text-peek::backdrop{background:rgba(15,15,25,.3)}\nbody:has(.share-text-peek[open]){overflow:hidden}\n.share-text-toolbar{display:flex;align-items:center;gap:12px;flex:none;padding:12px 20px;border-bottom:1px solid var(--line)}\n.share-text-close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;margin-inline-end:auto;border:0;border-radius:5px;background:transparent;color:var(--muted);cursor:pointer}\n.share-text-feedback{font-size:13px;color:var(--muted)}.share-text-feedback:empty{display:none}\n.share-text-heading{flex:none;padding:24px 32px 16px;min-width:0}\n.share-text-heading h2{margin:0;font-size:20px;line-height:1.4;overflow-wrap:anywhere}\n.share-text-record{margin:6px 0 0;font-size:13px;color:var(--muted);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}\n.share-text-body{flex:1;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:0 32px 40px;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.75;user-select:text}\n@media(max-width:600px){.share-text-peek{width:100vw}.share-text-toolbar{padding:10px 14px}.share-text-heading{padding:20px 20px 16px}.share-text-body{padding:0 20px 32px;font-size:16px}}\n@media(hover:none),(pointer:coarse){.share-cell-expand{opacity:1;pointer-events:auto;width:44px;height:44px;top:0;right:0}.share-table td:has(.share-cell-expand:not([hidden])) .share-cell-value{min-height:44px}.share-text-close{width:44px;height:44px}}\n";
9
+ export { mountShareTable } from "./share-table-client.js";
10
+ export declare function shareTableScript(locale: Locale): string;
11
+ //# sourceMappingURL=share-table.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-table.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-table.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAK1C,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAEhG;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAQhH;AAED,eAAO,MAAM,eAAe,kuHA+B3B,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD"}
@@ -0,0 +1,10 @@
1
+ import type { Locale } from "./locale.ts";
2
+ export type ShareContentKind = "doc" | "database";
3
+ /** RFC 4180: keep newlines, quotes, empty cells and significant whitespace. */
4
+ export declare function csvTable(header: string[], rows: string[][]): string;
5
+ export declare function shareToolsHtml(kind: ShareContentKind, title: string, locale: Locale, extra?: string): string;
6
+ /** Used by both live server pages and decrypted snapshot pages. No network calls:
7
+ * exports only the Markdown / complete cell values already shared on this page. */
8
+ export declare function shareToolsScript(locale: Locale): string;
9
+ export declare const SHARE_TOOLS_CSS = "\n.share-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;position:relative;margin-bottom:28px}\n.share-brand{display:flex;align-items:center;gap:10px;font-size:19px;font-weight:650;letter-spacing:-.03em;flex:none}\n.share-tools{flex-wrap:wrap;justify-content:flex-end;gap:8px}\n.share-tools .copy-btn{height:40px;white-space:nowrap;font-size:13px;line-height:1}\n.share-tools .share-download{background:var(--accent);border-color:var(--accent);color:var(--accent-fg)}\n.share-tools .share-download:hover{background:var(--accent);border-color:var(--accent);filter:brightness(1.08)}\n.share-tools .share-width{background:transparent;border-color:transparent;color:var(--muted)}\n.share-tools .share-width:hover{background:var(--card);color:var(--fg)}\n.share-tools .share-width[aria-pressed=\"true\"]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft)}\n.share-tool-divider{height:18px;width:1px;background:var(--line);margin-inline:4px;flex:none}\n.share-tool-feedback{position:absolute;right:0;top:calc(100% + 4px);display:block;text-align:right;font-size:12px;line-height:1.25;color:var(--muted)}\n.share-tool-feedback:empty{display:none}\n#app[data-share-kind=\"doc\"][data-share-wide=\"true\"],.wrap[data-share-kind=\"doc\"][data-share-wide=\"true\"]{max-width:1200px}\n#app[data-share-kind=\"database\"][data-share-wide=\"true\"],.wrap[data-share-kind=\"database\"][data-share-wide=\"true\"]{max-width:none;padding-inline:24px}\n@media(max-width:600px){.share-topbar{gap:10px;margin-bottom:20px;flex-wrap:wrap}.share-tools{gap:6px}.share-tools .share-width,.share-tool-divider{display:none}.share-tools .copy-btn{height:44px;padding-inline:10px}.share-tools .share-download span{display:inline}.share-tools #mh-copy span{display:inline;font-size:0}.share-tools #mh-copy span::after{content:attr(data-compact);font-size:13px}#app[data-share-kind][data-share-wide=\"true\"],.wrap[data-share-kind][data-share-wide=\"true\"]{padding-inline:16px}}\n";
10
+ //# sourceMappingURL=share-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-tools.d.ts","sourceRoot":"","sources":["../../../src/core/sync/share-tools.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,UAAU,CAAC;AAElD,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,MAAM,CAEnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,MAAM,CAUxG;AAED;oFACoF;AACpF,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAsBvD;AAED,eAAO,MAAM,eAAe,89DAgB3B,CAAC"}
@@ -1,4 +1,6 @@
1
- import { type S3Config } from "./storage.ts";
1
+ import { type StorageClient, type S3Config } from "./storage.ts";
2
+ export declare function createBunStorageClient(config: S3Config): StorageClient;
3
+ export declare const makeBunStorageClient: typeof createBunStorageClient;
2
4
  /**
3
5
  * Allow a browser shell served from `origins` to talk to the bucket directly
4
6
  * (GET/PUT/HEAD/DELETE) via GET-merge-PUT (see buildCorsXml). `opts.merge` unions
@@ -1 +1 @@
1
- {"version":3,"file":"storage-s3-bun.d.ts","sourceRoot":"","sources":["../../../src/core/sync/storage-s3-bun.ts"],"names":[],"mappings":"AAgBA,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AA8FtB;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAmBf"}
1
+ {"version":3,"file":"storage-s3-bun.d.ts","sourceRoot":"","sources":["../../../src/core/sync/storage-s3-bun.ts"],"names":[],"mappings":"AAgBA,OAAO,EAIL,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAOtB,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,CAgEtE;AAGD,eAAO,MAAM,oBAAoB,+BAAyB,CAAC;AAI3D;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,QAAQ,EAChB,OAAO,EAAE,MAAM,EAAE,EACjB,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC7B,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -0,0 +1,8 @@
1
+ export interface FetchStorageClientOpts {
2
+ timeoutMs?: number;
3
+ signal?: AbortSignal;
4
+ fetch?: typeof fetch;
5
+ }
6
+ import { type StorageClient, type S3Config } from "./storage.ts";
7
+ export declare function createFetchStorageClient(config: S3Config, opts?: FetchStorageClientOpts): StorageClient;
8
+ //# sourceMappingURL=storage-s3-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-s3-fetch.d.ts","sourceRoot":"","sources":["../../../src/core/sync/storage-s3-fetch.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;CACtB;AAGD,OAAO,EACL,KAAK,aAAa,EAGlB,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AActB,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAE,sBAA2B,GAAG,aAAa,CAgO3G"}
@@ -4,6 +4,9 @@ import { type S3Config } from "./storage.ts";
4
4
  * put, the CORS bootstrap and presignGet, so a signer-config fix can't land in
5
5
  * one call site and 403 the others. */
6
6
  export declare function awsSigner(config: S3Config): AwsClient;
7
+ /** Conditional-write semantics follow the official endpoint, not its display
8
+ * label or virtual-host addressing. A declared COS custom domain is unverified. */
9
+ export declare function conditionalWriteProvider(config: S3Config): "cos" | "s3";
7
10
  /** Bucket-level base URL: virtual-hosted has the bucket in the host already
8
11
  * (COS), path-style puts it in the path (R2/MinIO/S3). */
9
12
  export declare function bucketBase(config: S3Config): string;
@@ -1 +1 @@
1
- {"version":3,"file":"storage-s3-sign.d.ts","sourceRoot":"","sources":["../../../src/core/sync/storage-s3-sign.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnE;;wCAEwC;AACxC,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAOrD;AAED;2DAC2D;AAC3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAGnD;AAED;;;mCAGmC;AACnC,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAWD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE9E;AA6BD,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMnG;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAoB/F"}
1
+ {"version":3,"file":"storage-s3-sign.d.ts","sourceRoot":"","sources":["../../../src/core/sync/storage-s3-sign.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtC,OAAO,EAAwB,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEnE;;wCAEwC;AACxC,wBAAgB,SAAS,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAOrD;AAED;mFACmF;AACnF,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,IAAI,CAOvE;AAED;2DAC2D;AAC3D,wBAAgB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,MAAM,CAGnD;AAED;;;mCAGmC;AACnC,wBAAgB,WAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjE;AAWD,eAAO,MAAM,oBAAoB,gBAAgB,CAAC;AAElD,wBAAgB,YAAY,CAAC,MAAM,EAAE,QAAQ,GAAG;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAE9E;AA6BD,yEAAyE;AACzE,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAE1C;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAMnG;AAED,+EAA+E;AAC/E,wBAAsB,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAoB/F"}