@automerge/automerge-repo 2.0.0-collectionsync-alpha.1 → 2.0.1
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 +8 -8
- package/dist/AutomergeUrl.d.ts +17 -5
- package/dist/AutomergeUrl.d.ts.map +1 -1
- package/dist/AutomergeUrl.js +71 -24
- package/dist/DocHandle.d.ts +33 -41
- package/dist/DocHandle.d.ts.map +1 -1
- package/dist/DocHandle.js +105 -66
- package/dist/FindProgress.d.ts +30 -0
- package/dist/FindProgress.d.ts.map +1 -0
- package/dist/FindProgress.js +1 -0
- package/dist/RemoteHeadsSubscriptions.d.ts +4 -5
- package/dist/RemoteHeadsSubscriptions.d.ts.map +1 -1
- package/dist/RemoteHeadsSubscriptions.js +4 -1
- package/dist/Repo.d.ts +24 -5
- package/dist/Repo.d.ts.map +1 -1
- package/dist/Repo.js +355 -169
- package/dist/helpers/abortable.d.ts +36 -0
- package/dist/helpers/abortable.d.ts.map +1 -0
- package/dist/helpers/abortable.js +47 -0
- package/dist/helpers/arraysAreEqual.d.ts.map +1 -1
- package/dist/helpers/bufferFromHex.d.ts +3 -0
- package/dist/helpers/bufferFromHex.d.ts.map +1 -0
- package/dist/helpers/bufferFromHex.js +13 -0
- package/dist/helpers/debounce.d.ts.map +1 -1
- package/dist/helpers/eventPromise.d.ts.map +1 -1
- package/dist/helpers/headsAreSame.d.ts +2 -2
- package/dist/helpers/headsAreSame.d.ts.map +1 -1
- package/dist/helpers/mergeArrays.d.ts +1 -1
- package/dist/helpers/mergeArrays.d.ts.map +1 -1
- package/dist/helpers/pause.d.ts.map +1 -1
- package/dist/helpers/tests/network-adapter-tests.d.ts.map +1 -1
- package/dist/helpers/tests/network-adapter-tests.js +13 -13
- package/dist/helpers/tests/storage-adapter-tests.d.ts.map +1 -1
- package/dist/helpers/tests/storage-adapter-tests.js +6 -9
- package/dist/helpers/throttle.d.ts.map +1 -1
- package/dist/helpers/withTimeout.d.ts.map +1 -1
- package/dist/index.d.ts +35 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -6
- package/dist/network/NetworkSubsystem.d.ts +0 -1
- package/dist/network/NetworkSubsystem.d.ts.map +1 -1
- package/dist/network/NetworkSubsystem.js +0 -3
- package/dist/network/messages.d.ts +1 -7
- package/dist/network/messages.d.ts.map +1 -1
- package/dist/network/messages.js +1 -2
- package/dist/storage/StorageAdapter.d.ts +0 -9
- package/dist/storage/StorageAdapter.d.ts.map +1 -1
- package/dist/storage/StorageAdapter.js +0 -33
- package/dist/storage/StorageSubsystem.d.ts +6 -2
- package/dist/storage/StorageSubsystem.d.ts.map +1 -1
- package/dist/storage/StorageSubsystem.js +131 -37
- package/dist/storage/keyHash.d.ts +1 -1
- package/dist/storage/keyHash.d.ts.map +1 -1
- package/dist/synchronizer/CollectionSynchronizer.d.ts +3 -4
- package/dist/synchronizer/CollectionSynchronizer.d.ts.map +1 -1
- package/dist/synchronizer/CollectionSynchronizer.js +32 -26
- package/dist/synchronizer/DocSynchronizer.d.ts +8 -8
- package/dist/synchronizer/DocSynchronizer.d.ts.map +1 -1
- package/dist/synchronizer/DocSynchronizer.js +205 -79
- package/dist/types.d.ts +4 -1
- package/dist/types.d.ts.map +1 -1
- package/fuzz/fuzz.ts +3 -3
- package/package.json +4 -5
- package/src/AutomergeUrl.ts +101 -26
- package/src/DocHandle.ts +158 -77
- package/src/FindProgress.ts +48 -0
- package/src/RemoteHeadsSubscriptions.ts +11 -9
- package/src/Repo.ts +465 -180
- package/src/helpers/abortable.ts +62 -0
- package/src/helpers/bufferFromHex.ts +14 -0
- package/src/helpers/headsAreSame.ts +2 -2
- package/src/helpers/tests/network-adapter-tests.ts +14 -13
- package/src/helpers/tests/storage-adapter-tests.ts +13 -24
- package/src/index.ts +57 -38
- package/src/network/NetworkSubsystem.ts +0 -4
- package/src/network/messages.ts +2 -11
- package/src/storage/StorageAdapter.ts +0 -42
- package/src/storage/StorageSubsystem.ts +155 -45
- package/src/storage/keyHash.ts +1 -1
- package/src/synchronizer/CollectionSynchronizer.ts +42 -29
- package/src/synchronizer/DocSynchronizer.ts +263 -89
- package/src/types.ts +4 -1
- package/test/AutomergeUrl.test.ts +130 -0
- package/test/CollectionSynchronizer.test.ts +6 -8
- package/test/DocHandle.test.ts +161 -77
- package/test/DocSynchronizer.test.ts +11 -9
- package/test/RemoteHeadsSubscriptions.test.ts +1 -1
- package/test/Repo.test.ts +406 -341
- package/test/StorageSubsystem.test.ts +95 -20
- package/test/remoteHeads.test.ts +28 -13
- package/dist/CollectionHandle.d.ts +0 -14
- package/dist/CollectionHandle.d.ts.map +0 -1
- package/dist/CollectionHandle.js +0 -37
- package/dist/DocUrl.d.ts +0 -47
- package/dist/DocUrl.d.ts.map +0 -1
- package/dist/DocUrl.js +0 -72
- package/dist/EphemeralData.d.ts +0 -20
- package/dist/EphemeralData.d.ts.map +0 -1
- package/dist/EphemeralData.js +0 -1
- package/dist/ferigan.d.ts +0 -51
- package/dist/ferigan.d.ts.map +0 -1
- package/dist/ferigan.js +0 -98
- package/dist/src/DocHandle.d.ts +0 -182
- package/dist/src/DocHandle.d.ts.map +0 -1
- package/dist/src/DocHandle.js +0 -405
- package/dist/src/DocUrl.d.ts +0 -49
- package/dist/src/DocUrl.d.ts.map +0 -1
- package/dist/src/DocUrl.js +0 -72
- package/dist/src/EphemeralData.d.ts +0 -19
- package/dist/src/EphemeralData.d.ts.map +0 -1
- package/dist/src/EphemeralData.js +0 -1
- package/dist/src/Repo.d.ts +0 -74
- package/dist/src/Repo.d.ts.map +0 -1
- package/dist/src/Repo.js +0 -208
- package/dist/src/helpers/arraysAreEqual.d.ts +0 -2
- package/dist/src/helpers/arraysAreEqual.d.ts.map +0 -1
- package/dist/src/helpers/arraysAreEqual.js +0 -2
- package/dist/src/helpers/cbor.d.ts +0 -4
- package/dist/src/helpers/cbor.d.ts.map +0 -1
- package/dist/src/helpers/cbor.js +0 -8
- package/dist/src/helpers/eventPromise.d.ts +0 -11
- package/dist/src/helpers/eventPromise.d.ts.map +0 -1
- package/dist/src/helpers/eventPromise.js +0 -7
- package/dist/src/helpers/headsAreSame.d.ts +0 -2
- package/dist/src/helpers/headsAreSame.d.ts.map +0 -1
- package/dist/src/helpers/headsAreSame.js +0 -4
- package/dist/src/helpers/mergeArrays.d.ts +0 -2
- package/dist/src/helpers/mergeArrays.d.ts.map +0 -1
- package/dist/src/helpers/mergeArrays.js +0 -15
- package/dist/src/helpers/pause.d.ts +0 -6
- package/dist/src/helpers/pause.d.ts.map +0 -1
- package/dist/src/helpers/pause.js +0 -10
- package/dist/src/helpers/tests/network-adapter-tests.d.ts +0 -21
- package/dist/src/helpers/tests/network-adapter-tests.d.ts.map +0 -1
- package/dist/src/helpers/tests/network-adapter-tests.js +0 -122
- package/dist/src/helpers/withTimeout.d.ts +0 -12
- package/dist/src/helpers/withTimeout.d.ts.map +0 -1
- package/dist/src/helpers/withTimeout.js +0 -24
- package/dist/src/index.d.ts +0 -53
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -40
- package/dist/src/network/NetworkAdapter.d.ts +0 -26
- package/dist/src/network/NetworkAdapter.d.ts.map +0 -1
- package/dist/src/network/NetworkAdapter.js +0 -4
- package/dist/src/network/NetworkSubsystem.d.ts +0 -23
- package/dist/src/network/NetworkSubsystem.d.ts.map +0 -1
- package/dist/src/network/NetworkSubsystem.js +0 -120
- package/dist/src/network/messages.d.ts +0 -85
- package/dist/src/network/messages.d.ts.map +0 -1
- package/dist/src/network/messages.js +0 -23
- package/dist/src/storage/StorageAdapter.d.ts +0 -14
- package/dist/src/storage/StorageAdapter.d.ts.map +0 -1
- package/dist/src/storage/StorageAdapter.js +0 -1
- package/dist/src/storage/StorageSubsystem.d.ts +0 -12
- package/dist/src/storage/StorageSubsystem.d.ts.map +0 -1
- package/dist/src/storage/StorageSubsystem.js +0 -145
- package/dist/src/synchronizer/CollectionSynchronizer.d.ts +0 -25
- package/dist/src/synchronizer/CollectionSynchronizer.d.ts.map +0 -1
- package/dist/src/synchronizer/CollectionSynchronizer.js +0 -106
- package/dist/src/synchronizer/DocSynchronizer.d.ts +0 -29
- package/dist/src/synchronizer/DocSynchronizer.d.ts.map +0 -1
- package/dist/src/synchronizer/DocSynchronizer.js +0 -263
- package/dist/src/synchronizer/Synchronizer.d.ts +0 -9
- package/dist/src/synchronizer/Synchronizer.d.ts.map +0 -1
- package/dist/src/synchronizer/Synchronizer.js +0 -2
- package/dist/src/types.d.ts +0 -16
- package/dist/src/types.d.ts.map +0 -1
- package/dist/src/types.js +0 -1
- package/dist/test/CollectionSynchronizer.test.d.ts +0 -2
- package/dist/test/CollectionSynchronizer.test.d.ts.map +0 -1
- package/dist/test/CollectionSynchronizer.test.js +0 -57
- package/dist/test/DocHandle.test.d.ts +0 -2
- package/dist/test/DocHandle.test.d.ts.map +0 -1
- package/dist/test/DocHandle.test.js +0 -238
- package/dist/test/DocSynchronizer.test.d.ts +0 -2
- package/dist/test/DocSynchronizer.test.d.ts.map +0 -1
- package/dist/test/DocSynchronizer.test.js +0 -111
- package/dist/test/Network.test.d.ts +0 -2
- package/dist/test/Network.test.d.ts.map +0 -1
- package/dist/test/Network.test.js +0 -11
- package/dist/test/Repo.test.d.ts +0 -2
- package/dist/test/Repo.test.d.ts.map +0 -1
- package/dist/test/Repo.test.js +0 -568
- package/dist/test/StorageSubsystem.test.d.ts +0 -2
- package/dist/test/StorageSubsystem.test.d.ts.map +0 -1
- package/dist/test/StorageSubsystem.test.js +0 -56
- package/dist/test/helpers/DummyNetworkAdapter.d.ts +0 -9
- package/dist/test/helpers/DummyNetworkAdapter.d.ts.map +0 -1
- package/dist/test/helpers/DummyNetworkAdapter.js +0 -15
- package/dist/test/helpers/DummyStorageAdapter.d.ts +0 -16
- package/dist/test/helpers/DummyStorageAdapter.d.ts.map +0 -1
- package/dist/test/helpers/DummyStorageAdapter.js +0 -33
- package/dist/test/helpers/generate-large-object.d.ts +0 -5
- package/dist/test/helpers/generate-large-object.d.ts.map +0 -1
- package/dist/test/helpers/generate-large-object.js +0 -9
- package/dist/test/helpers/getRandomItem.d.ts +0 -2
- package/dist/test/helpers/getRandomItem.d.ts.map +0 -1
- package/dist/test/helpers/getRandomItem.js +0 -4
- package/dist/test/types.d.ts +0 -4
- package/dist/test/types.d.ts.map +0 -1
- package/dist/test/types.js +0 -1
- package/src/CollectionHandle.ts +0 -54
- package/src/ferigan.ts +0 -184
package/dist/src/DocUrl.d.ts
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
type AutomergeUrl,
|
|
3
|
-
type BinaryDocumentId,
|
|
4
|
-
type DocumentId,
|
|
5
|
-
} from "./types.js"
|
|
6
|
-
export declare const urlPrefix = "automerge:"
|
|
7
|
-
/**
|
|
8
|
-
* given an Automerge URL, return a decoded DocumentId (and the encoded DocumentId)
|
|
9
|
-
*
|
|
10
|
-
* @param url
|
|
11
|
-
* @returns { binaryDocumentId: BinaryDocumentId, documentId: DocumentId }
|
|
12
|
-
*/
|
|
13
|
-
export declare const parseAutomergeUrl: (url: AutomergeUrl) => {
|
|
14
|
-
binaryDocumentId: BinaryDocumentId
|
|
15
|
-
documentId: DocumentId
|
|
16
|
-
}
|
|
17
|
-
interface StringifyAutomergeUrlOptions {
|
|
18
|
-
documentId: DocumentId | BinaryDocumentId
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Given a documentId in either canonical form, return an Automerge URL
|
|
22
|
-
* Throws on invalid input.
|
|
23
|
-
* Note: this is an object because we anticipate adding fields in the future.
|
|
24
|
-
* @param { documentId: BinaryDocumentId | DocumentId }
|
|
25
|
-
* @returns AutomergeUrl
|
|
26
|
-
*/
|
|
27
|
-
export declare const stringifyAutomergeUrl: ({
|
|
28
|
-
documentId,
|
|
29
|
-
}: StringifyAutomergeUrlOptions) => AutomergeUrl
|
|
30
|
-
/**
|
|
31
|
-
* Given a string, return true if it is a valid Automerge URL
|
|
32
|
-
* also acts as a type discriminator in Typescript.
|
|
33
|
-
* @param str: URL candidate
|
|
34
|
-
* @returns boolean
|
|
35
|
-
*/
|
|
36
|
-
export declare const isValidAutomergeUrl: (str: string) => str is AutomergeUrl
|
|
37
|
-
/**
|
|
38
|
-
* generateAutomergeUrl produces a new AutomergeUrl.
|
|
39
|
-
* generally only called by create(), but used in tests as well.
|
|
40
|
-
* @returns a new Automerge URL with a random UUID documentId
|
|
41
|
-
*/
|
|
42
|
-
export declare const generateAutomergeUrl: () => AutomergeUrl
|
|
43
|
-
export declare const documentIdToBinary: (
|
|
44
|
-
docId: DocumentId
|
|
45
|
-
) => BinaryDocumentId | undefined
|
|
46
|
-
export declare const binaryToDocumentId: (docId: BinaryDocumentId) => DocumentId
|
|
47
|
-
export declare const parseLegacyUUID: (str: string) => AutomergeUrl | undefined
|
|
48
|
-
export {}
|
|
49
|
-
//# sourceMappingURL=DocUrl.d.ts.map
|
package/dist/src/DocUrl.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DocUrl.d.ts","sourceRoot":"","sources":["../../src/DocUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,UAAU,EAChB,MAAM,YAAY,CAAA;AAInB,eAAO,MAAM,SAAS,eAAe,CAAA;AAErC;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAS,YAAY;;;CAIlD,CAAA;AAED,UAAU,4BAA4B;IACpC,UAAU,EAAE,UAAU,GAAG,gBAAgB,CAAA;CAC1C;AAED;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,oBAE/B,4BAA4B,KAAG,YAQjC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAS,MAAM,wBAK9C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,QAAO,YAGpC,CAAA;AAEJ,eAAO,MAAM,kBAAkB,UACtB,UAAU,KAChB,gBAAgB,GAAG,SACyC,CAAA;AAE/D,eAAO,MAAM,kBAAkB,UAAW,gBAAgB,KAAG,UACtB,CAAA;AAEvC,eAAO,MAAM,eAAe,QAAS,MAAM,KAAG,YAAY,GAAG,SAM5D,CAAA"}
|
package/dist/src/DocUrl.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
import * as Uuid from "uuid"
|
|
2
|
-
import bs58check from "bs58check"
|
|
3
|
-
export const urlPrefix = "automerge:"
|
|
4
|
-
/**
|
|
5
|
-
* given an Automerge URL, return a decoded DocumentId (and the encoded DocumentId)
|
|
6
|
-
*
|
|
7
|
-
* @param url
|
|
8
|
-
* @returns { binaryDocumentId: BinaryDocumentId, documentId: DocumentId }
|
|
9
|
-
*/
|
|
10
|
-
export const parseAutomergeUrl = url => {
|
|
11
|
-
const { binaryDocumentId, documentId } = parts(url)
|
|
12
|
-
if (!binaryDocumentId) throw new Error("Invalid document URL: " + url)
|
|
13
|
-
return { binaryDocumentId, documentId }
|
|
14
|
-
}
|
|
15
|
-
/**
|
|
16
|
-
* Given a documentId in either canonical form, return an Automerge URL
|
|
17
|
-
* Throws on invalid input.
|
|
18
|
-
* Note: this is an object because we anticipate adding fields in the future.
|
|
19
|
-
* @param { documentId: BinaryDocumentId | DocumentId }
|
|
20
|
-
* @returns AutomergeUrl
|
|
21
|
-
*/
|
|
22
|
-
export const stringifyAutomergeUrl = ({ documentId }) => {
|
|
23
|
-
if (documentId instanceof Uint8Array)
|
|
24
|
-
return urlPrefix + binaryToDocumentId(documentId)
|
|
25
|
-
else if (typeof documentId === "string") {
|
|
26
|
-
return urlPrefix + documentId
|
|
27
|
-
}
|
|
28
|
-
throw new Error("Invalid documentId: " + documentId)
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Given a string, return true if it is a valid Automerge URL
|
|
32
|
-
* also acts as a type discriminator in Typescript.
|
|
33
|
-
* @param str: URL candidate
|
|
34
|
-
* @returns boolean
|
|
35
|
-
*/
|
|
36
|
-
export const isValidAutomergeUrl = str => {
|
|
37
|
-
if (!str.startsWith(urlPrefix)) return false
|
|
38
|
-
const { binaryDocumentId: documentId } = parts(str)
|
|
39
|
-
return documentId ? true : false
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* generateAutomergeUrl produces a new AutomergeUrl.
|
|
43
|
-
* generally only called by create(), but used in tests as well.
|
|
44
|
-
* @returns a new Automerge URL with a random UUID documentId
|
|
45
|
-
*/
|
|
46
|
-
export const generateAutomergeUrl = () =>
|
|
47
|
-
stringifyAutomergeUrl({
|
|
48
|
-
documentId: Uuid.v4(null, new Uint8Array(16)),
|
|
49
|
-
})
|
|
50
|
-
export const documentIdToBinary = docId => bs58check.decodeUnsafe(docId)
|
|
51
|
-
export const binaryToDocumentId = docId => bs58check.encode(docId)
|
|
52
|
-
export const parseLegacyUUID = str => {
|
|
53
|
-
if (Uuid.validate(str)) {
|
|
54
|
-
const uuid = Uuid.parse(str)
|
|
55
|
-
return stringifyAutomergeUrl({ documentId: uuid })
|
|
56
|
-
}
|
|
57
|
-
return undefined
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* parts breaks up the URL into constituent pieces,
|
|
61
|
-
* eventually this could include things like heads, so we use this structure
|
|
62
|
-
* we return both a binary & string-encoded version of the document ID
|
|
63
|
-
* @param str
|
|
64
|
-
* @returns { binaryDocumentId, documentId }
|
|
65
|
-
*/
|
|
66
|
-
const parts = str => {
|
|
67
|
-
const regex = new RegExp(`^${urlPrefix}(\\w+)$`)
|
|
68
|
-
const [_, docMatch] = str.match(regex) || []
|
|
69
|
-
const documentId = docMatch
|
|
70
|
-
const binaryDocumentId = documentIdToBinary(documentId)
|
|
71
|
-
return { binaryDocumentId, documentId }
|
|
72
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { DocumentId, PeerId } from "./index.js"
|
|
2
|
-
import { EphemeralMessageContents } from "./network/messages.js"
|
|
3
|
-
export type SessionId = string & {
|
|
4
|
-
__SessionId: false
|
|
5
|
-
}
|
|
6
|
-
export interface EphemeralDataPayload {
|
|
7
|
-
documentId: DocumentId
|
|
8
|
-
peerId: PeerId
|
|
9
|
-
data: {
|
|
10
|
-
peerId: PeerId
|
|
11
|
-
documentId: DocumentId
|
|
12
|
-
data: unknown
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
export type EphemeralDataMessageEvents = {
|
|
16
|
-
message: (event: EphemeralMessageContents) => void
|
|
17
|
-
data: (event: EphemeralDataPayload) => void
|
|
18
|
-
}
|
|
19
|
-
//# sourceMappingURL=EphemeralData.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EphemeralData.d.ts","sourceRoot":"","sources":["../../src/EphemeralData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAGhE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG;IAAE,WAAW,EAAE,KAAK,CAAA;CAAE,CAAA;AAEvD,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,UAAU,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAA;CAChE;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,OAAO,EAAE,CAAC,KAAK,EAAE,wBAAwB,KAAK,IAAI,CAAA;IAClD,IAAI,EAAE,CAAC,KAAK,EAAE,oBAAoB,KAAK,IAAI,CAAA;CAC5C,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {}
|
package/dist/src/Repo.d.ts
DELETED
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { NetworkAdapter } from "./network/NetworkAdapter.js"
|
|
2
|
-
import { NetworkSubsystem } from "./network/NetworkSubsystem.js"
|
|
3
|
-
import { StorageAdapter } from "./storage/StorageAdapter.js"
|
|
4
|
-
import { StorageSubsystem } from "./storage/StorageSubsystem.js"
|
|
5
|
-
import { type AutomergeUrl, DocumentId, PeerId } from "./types.js"
|
|
6
|
-
import { DocHandle } from "./DocHandle.js"
|
|
7
|
-
import { EventEmitter } from "eventemitter3"
|
|
8
|
-
/** A Repo is a collection of documents with networking, syncing, and storage capabilities. */
|
|
9
|
-
/** The `Repo` is the main entry point of this library
|
|
10
|
-
*
|
|
11
|
-
* @remarks
|
|
12
|
-
* To construct a `Repo` you will need an {@link StorageAdapter} and one or
|
|
13
|
-
* more {@link NetworkAdapter}s. Once you have a `Repo` you can use it to
|
|
14
|
-
* obtain {@link DocHandle}s.
|
|
15
|
-
*/
|
|
16
|
-
export declare class Repo extends EventEmitter<DocCollectionEvents> {
|
|
17
|
-
#private
|
|
18
|
-
networkSubsystem: NetworkSubsystem
|
|
19
|
-
storageSubsystem?: StorageSubsystem
|
|
20
|
-
/** By default, we share generously with all peers. */
|
|
21
|
-
sharePolicy: SharePolicy
|
|
22
|
-
constructor({ storage, network, peerId, sharePolicy }: RepoConfig)
|
|
23
|
-
/** Returns all the handles we have cached. */
|
|
24
|
-
get handles(): Record<DocumentId, DocHandle<any>>
|
|
25
|
-
/**
|
|
26
|
-
* Creates a new document and returns a handle to it. The initial value of the document is
|
|
27
|
-
* an empty object `{}`. Its documentId is generated by the system. we emit a `document` event
|
|
28
|
-
* to advertise interest in the document.
|
|
29
|
-
*/
|
|
30
|
-
create<T>(): DocHandle<T>
|
|
31
|
-
/**
|
|
32
|
-
* Retrieves a document by id. It gets data from the local system, but also emits a `document`
|
|
33
|
-
* event to advertise interest in the document.
|
|
34
|
-
*/
|
|
35
|
-
find<T>(
|
|
36
|
-
/** The documentId of the handle to retrieve */
|
|
37
|
-
automergeUrl: AutomergeUrl
|
|
38
|
-
): DocHandle<T>
|
|
39
|
-
delete(
|
|
40
|
-
/** The documentId of the handle to delete */
|
|
41
|
-
id: DocumentId | AutomergeUrl
|
|
42
|
-
): void
|
|
43
|
-
}
|
|
44
|
-
export interface RepoConfig {
|
|
45
|
-
/** Our unique identifier */
|
|
46
|
-
peerId?: PeerId
|
|
47
|
-
/** A storage adapter can be provided, or not */
|
|
48
|
-
storage?: StorageAdapter
|
|
49
|
-
/** One or more network adapters must be provided */
|
|
50
|
-
network: NetworkAdapter[]
|
|
51
|
-
/**
|
|
52
|
-
* Normal peers typically share generously with everyone (meaning we sync all our documents with
|
|
53
|
-
* all peers). A server only syncs documents that a peer explicitly requests by ID.
|
|
54
|
-
*/
|
|
55
|
-
sharePolicy?: SharePolicy
|
|
56
|
-
}
|
|
57
|
-
export type SharePolicy = (
|
|
58
|
-
peerId: PeerId,
|
|
59
|
-
documentId?: DocumentId
|
|
60
|
-
) => Promise<boolean>
|
|
61
|
-
interface DocCollectionEvents {
|
|
62
|
-
document: (arg: DocumentPayload) => void
|
|
63
|
-
"delete-document": (arg: DeleteDocumentPayload) => void
|
|
64
|
-
"unavailable-document": (arg: DeleteDocumentPayload) => void
|
|
65
|
-
}
|
|
66
|
-
interface DocumentPayload {
|
|
67
|
-
handle: DocHandle<any>
|
|
68
|
-
isNew: boolean
|
|
69
|
-
}
|
|
70
|
-
interface DeleteDocumentPayload {
|
|
71
|
-
documentId: DocumentId
|
|
72
|
-
}
|
|
73
|
-
export {}
|
|
74
|
-
//# sourceMappingURL=Repo.d.ts.map
|
package/dist/src/Repo.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Repo.d.ts","sourceRoot":"","sources":["../../src/Repo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAEhE,OAAO,EAAE,KAAK,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AASlE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAG5C,8FAA8F;AAC9F;;;;;;GAMG;AACH,qBAAa,IAAK,SAAQ,YAAY,CAAC,mBAAmB,CAAC;;IAGzD,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,gBAAgB,CAAC,EAAE,gBAAgB,CAAA;IAGnC,sDAAsD;IACtD,WAAW,EAAE,WAAW,CAAmB;gBAE/B,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,UAAU;IAuHjE,8CAA8C;IAC9C,IAAI,OAAO,uCAEV;IAED;;;;OAIG;IACH,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IA0BzB;;;OAGG;IACH,IAAI,CAAC,CAAC;IACJ,+CAA+C;IAC/C,YAAY,EAAE,YAAY,GACzB,SAAS,CAAC,CAAC,CAAC;IAgCf,MAAM;IACJ,6CAA6C;IAC7C,EAAE,EAAE,UAAU,GAAG,YAAY;CAchC;AAED,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,gDAAgD;IAChD,OAAO,CAAC,EAAE,cAAc,CAAA;IAExB,oDAAoD;IACpD,OAAO,EAAE,cAAc,EAAE,CAAA;IAEzB;;;OAGG;IACH,WAAW,CAAC,EAAE,WAAW,CAAA;CAC1B;AAED,MAAM,MAAM,WAAW,GAAG,CACxB,MAAM,EAAE,MAAM,EACd,UAAU,CAAC,EAAE,UAAU,KACpB,OAAO,CAAC,OAAO,CAAC,CAAA;AAGrB,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,IAAI,CAAA;IACxC,iBAAiB,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,IAAI,CAAA;IACvD,sBAAsB,EAAE,CAAC,GAAG,EAAE,qBAAqB,KAAK,IAAI,CAAA;CAC7D;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,CAAA;IACtB,KAAK,EAAE,OAAO,CAAA;CACf;AAED,UAAU,qBAAqB;IAC7B,UAAU,EAAE,UAAU,CAAA;CACvB"}
|
package/dist/src/Repo.js
DELETED
|
@@ -1,208 +0,0 @@
|
|
|
1
|
-
import debug from "debug"
|
|
2
|
-
import { NetworkSubsystem } from "./network/NetworkSubsystem.js"
|
|
3
|
-
import { StorageSubsystem } from "./storage/StorageSubsystem.js"
|
|
4
|
-
import { CollectionSynchronizer } from "./synchronizer/CollectionSynchronizer.js"
|
|
5
|
-
import {
|
|
6
|
-
parseAutomergeUrl,
|
|
7
|
-
generateAutomergeUrl,
|
|
8
|
-
isValidAutomergeUrl,
|
|
9
|
-
parseLegacyUUID,
|
|
10
|
-
} from "./DocUrl.js"
|
|
11
|
-
import { DocHandle } from "./DocHandle.js"
|
|
12
|
-
import { EventEmitter } from "eventemitter3"
|
|
13
|
-
/** A Repo is a collection of documents with networking, syncing, and storage capabilities. */
|
|
14
|
-
/** The `Repo` is the main entry point of this library
|
|
15
|
-
*
|
|
16
|
-
* @remarks
|
|
17
|
-
* To construct a `Repo` you will need an {@link StorageAdapter} and one or
|
|
18
|
-
* more {@link NetworkAdapter}s. Once you have a `Repo` you can use it to
|
|
19
|
-
* obtain {@link DocHandle}s.
|
|
20
|
-
*/
|
|
21
|
-
export class Repo extends EventEmitter {
|
|
22
|
-
#log
|
|
23
|
-
networkSubsystem
|
|
24
|
-
storageSubsystem
|
|
25
|
-
#handleCache = {}
|
|
26
|
-
/** By default, we share generously with all peers. */
|
|
27
|
-
sharePolicy = async () => true
|
|
28
|
-
constructor({ storage, network, peerId, sharePolicy }) {
|
|
29
|
-
super()
|
|
30
|
-
this.#log = debug(`automerge-repo:repo`)
|
|
31
|
-
this.sharePolicy = sharePolicy ?? this.sharePolicy
|
|
32
|
-
// DOC COLLECTION
|
|
33
|
-
// The `document` event is fired by the DocCollection any time we create a new document or look
|
|
34
|
-
// up a document by ID. We listen for it in order to wire up storage and network synchronization.
|
|
35
|
-
this.on("document", async ({ handle, isNew }) => {
|
|
36
|
-
if (storageSubsystem) {
|
|
37
|
-
// Save when the document changes
|
|
38
|
-
handle.on("heads-changed", async ({ handle, doc }) => {
|
|
39
|
-
await storageSubsystem.saveDoc(handle.documentId, doc)
|
|
40
|
-
})
|
|
41
|
-
if (isNew) {
|
|
42
|
-
// this is a new document, immediately save it
|
|
43
|
-
await storageSubsystem.saveDoc(handle.documentId, handle.docSync())
|
|
44
|
-
} else {
|
|
45
|
-
// Try to load from disk
|
|
46
|
-
const loadedDoc = await storageSubsystem.loadDoc(handle.documentId)
|
|
47
|
-
if (loadedDoc) {
|
|
48
|
-
handle.update(() => loadedDoc)
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
handle.on("unavailable", () => {
|
|
53
|
-
this.#log("document unavailable", { documentId: handle.documentId })
|
|
54
|
-
this.emit("unavailable-document", {
|
|
55
|
-
documentId: handle.documentId,
|
|
56
|
-
})
|
|
57
|
-
})
|
|
58
|
-
if (this.networkSubsystem.isReady()) {
|
|
59
|
-
handle.request()
|
|
60
|
-
} else {
|
|
61
|
-
handle.awaitNetwork()
|
|
62
|
-
this.networkSubsystem
|
|
63
|
-
.whenReady()
|
|
64
|
-
.then(() => {
|
|
65
|
-
handle.networkReady()
|
|
66
|
-
})
|
|
67
|
-
.catch(err => {
|
|
68
|
-
this.#log("error waiting for network", { err })
|
|
69
|
-
})
|
|
70
|
-
}
|
|
71
|
-
// Register the document with the synchronizer. This advertises our interest in the document.
|
|
72
|
-
synchronizer.addDocument(handle.documentId)
|
|
73
|
-
})
|
|
74
|
-
this.on("delete-document", ({ documentId }) => {
|
|
75
|
-
// TODO Pass the delete on to the network
|
|
76
|
-
// synchronizer.removeDocument(documentId)
|
|
77
|
-
if (storageSubsystem) {
|
|
78
|
-
storageSubsystem.remove(documentId).catch(err => {
|
|
79
|
-
this.#log("error deleting document", { documentId, err })
|
|
80
|
-
})
|
|
81
|
-
}
|
|
82
|
-
})
|
|
83
|
-
// SYNCHRONIZER
|
|
84
|
-
// The synchronizer uses the network subsystem to keep documents in sync with peers.
|
|
85
|
-
const synchronizer = new CollectionSynchronizer(this)
|
|
86
|
-
// When the synchronizer emits sync messages, send them to peers
|
|
87
|
-
synchronizer.on("message", message => {
|
|
88
|
-
this.#log(`sending sync message to ${message.targetId}`)
|
|
89
|
-
networkSubsystem.send(message)
|
|
90
|
-
})
|
|
91
|
-
// STORAGE
|
|
92
|
-
// The storage subsystem has access to some form of persistence, and deals with save and loading documents.
|
|
93
|
-
const storageSubsystem = storage ? new StorageSubsystem(storage) : undefined
|
|
94
|
-
this.storageSubsystem = storageSubsystem
|
|
95
|
-
// NETWORK
|
|
96
|
-
// The network subsystem deals with sending and receiving messages to and from peers.
|
|
97
|
-
const networkSubsystem = new NetworkSubsystem(network, peerId)
|
|
98
|
-
this.networkSubsystem = networkSubsystem
|
|
99
|
-
// When we get a new peer, register it with the synchronizer
|
|
100
|
-
networkSubsystem.on("peer", async ({ peerId }) => {
|
|
101
|
-
this.#log("peer connected", { peerId })
|
|
102
|
-
synchronizer.addPeer(peerId)
|
|
103
|
-
})
|
|
104
|
-
// When a peer disconnects, remove it from the synchronizer
|
|
105
|
-
networkSubsystem.on("peer-disconnected", ({ peerId }) => {
|
|
106
|
-
synchronizer.removePeer(peerId)
|
|
107
|
-
})
|
|
108
|
-
// Handle incoming messages
|
|
109
|
-
networkSubsystem.on("message", async msg => {
|
|
110
|
-
await synchronizer.receiveMessage(msg)
|
|
111
|
-
})
|
|
112
|
-
}
|
|
113
|
-
/** Returns an existing handle if we have it; creates one otherwise. */
|
|
114
|
-
#getHandle(
|
|
115
|
-
/** The documentId of the handle to look up or create */
|
|
116
|
-
documentId,
|
|
117
|
-
/** If we know we're creating a new document, specify this so we can have access to it immediately */
|
|
118
|
-
isNew
|
|
119
|
-
) {
|
|
120
|
-
// If we have the handle cached, return it
|
|
121
|
-
if (this.#handleCache[documentId]) return this.#handleCache[documentId]
|
|
122
|
-
// If not, create a new handle, cache it, and return it
|
|
123
|
-
if (!documentId) throw new Error(`Invalid documentId ${documentId}`)
|
|
124
|
-
const handle = new DocHandle(documentId, { isNew })
|
|
125
|
-
this.#handleCache[documentId] = handle
|
|
126
|
-
return handle
|
|
127
|
-
}
|
|
128
|
-
/** Returns all the handles we have cached. */
|
|
129
|
-
get handles() {
|
|
130
|
-
return this.#handleCache
|
|
131
|
-
}
|
|
132
|
-
/**
|
|
133
|
-
* Creates a new document and returns a handle to it. The initial value of the document is
|
|
134
|
-
* an empty object `{}`. Its documentId is generated by the system. we emit a `document` event
|
|
135
|
-
* to advertise interest in the document.
|
|
136
|
-
*/
|
|
137
|
-
create() {
|
|
138
|
-
// TODO:
|
|
139
|
-
// either
|
|
140
|
-
// - pass an initial value and do something like this to ensure that you get a valid initial value
|
|
141
|
-
// const myInitialValue = {
|
|
142
|
-
// tasks: [],
|
|
143
|
-
// filter: "all",
|
|
144
|
-
//
|
|
145
|
-
// const guaranteeInitialValue = (doc: any) => {
|
|
146
|
-
// if (!doc.tasks) doc.tasks = []
|
|
147
|
-
// if (!doc.filter) doc.filter = "all"
|
|
148
|
-
// return { ...myInitialValue, ...doc }
|
|
149
|
-
// }
|
|
150
|
-
// or
|
|
151
|
-
// - pass a "reify" function that takes a `<any>` and returns `<T>`
|
|
152
|
-
// Generate a new UUID and store it in the buffer
|
|
153
|
-
const { documentId } = parseAutomergeUrl(generateAutomergeUrl())
|
|
154
|
-
const handle = this.#getHandle(documentId, true)
|
|
155
|
-
this.emit("document", { handle, isNew: true })
|
|
156
|
-
return handle
|
|
157
|
-
}
|
|
158
|
-
/**
|
|
159
|
-
* Retrieves a document by id. It gets data from the local system, but also emits a `document`
|
|
160
|
-
* event to advertise interest in the document.
|
|
161
|
-
*/
|
|
162
|
-
find(
|
|
163
|
-
/** The documentId of the handle to retrieve */
|
|
164
|
-
automergeUrl
|
|
165
|
-
) {
|
|
166
|
-
if (!isValidAutomergeUrl(automergeUrl)) {
|
|
167
|
-
let maybeAutomergeUrl = parseLegacyUUID(automergeUrl)
|
|
168
|
-
if (maybeAutomergeUrl) {
|
|
169
|
-
console.warn(
|
|
170
|
-
"Legacy UUID document ID detected, converting to AutomergeUrl. This will be removed in a future version."
|
|
171
|
-
)
|
|
172
|
-
automergeUrl = maybeAutomergeUrl
|
|
173
|
-
} else {
|
|
174
|
-
throw new Error(`Invalid AutomergeUrl: '${automergeUrl}'`)
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
const { documentId } = parseAutomergeUrl(automergeUrl)
|
|
178
|
-
// If we have the handle cached, return it
|
|
179
|
-
if (this.#handleCache[documentId]) {
|
|
180
|
-
if (this.#handleCache[documentId].isUnavailable()) {
|
|
181
|
-
// this ensures that the event fires after the handle has been returned
|
|
182
|
-
setTimeout(() => {
|
|
183
|
-
this.#handleCache[documentId].emit("unavailable", {
|
|
184
|
-
handle: this.#handleCache[documentId],
|
|
185
|
-
})
|
|
186
|
-
})
|
|
187
|
-
}
|
|
188
|
-
return this.#handleCache[documentId]
|
|
189
|
-
}
|
|
190
|
-
const handle = this.#getHandle(documentId, false)
|
|
191
|
-
this.emit("document", { handle, isNew: false })
|
|
192
|
-
return handle
|
|
193
|
-
}
|
|
194
|
-
delete(
|
|
195
|
-
/** The documentId of the handle to delete */
|
|
196
|
-
id
|
|
197
|
-
) {
|
|
198
|
-
if (isValidAutomergeUrl(id)) {
|
|
199
|
-
;({ documentId: id } = parseAutomergeUrl(id))
|
|
200
|
-
}
|
|
201
|
-
const handle = this.#getHandle(id, false)
|
|
202
|
-
handle.delete()
|
|
203
|
-
delete this.#handleCache[id]
|
|
204
|
-
this.emit("delete-document", {
|
|
205
|
-
documentId: id,
|
|
206
|
-
})
|
|
207
|
-
}
|
|
208
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"arraysAreEqual.d.ts","sourceRoot":"","sources":["../../../src/helpers/arraysAreEqual.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,gCACiD,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cbor.d.ts","sourceRoot":"","sources":["../../../src/helpers/cbor.ts"],"names":[],"mappings":";AAEA,wBAAgB,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAGvC;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,GAAG,GAAG,CAEpD"}
|
package/dist/src/helpers/cbor.js
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { EventEmitter } from "eventemitter3"
|
|
2
|
-
/** Returns a promise that resolves when the given event is emitted on the given emitter. */
|
|
3
|
-
export declare const eventPromise: (
|
|
4
|
-
emitter: EventEmitter,
|
|
5
|
-
event: string
|
|
6
|
-
) => Promise<any>
|
|
7
|
-
export declare const eventPromises: (
|
|
8
|
-
emitters: EventEmitter[],
|
|
9
|
-
event: string
|
|
10
|
-
) => Promise<any[]>
|
|
11
|
-
//# sourceMappingURL=eventPromise.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventPromise.d.ts","sourceRoot":"","sources":["../../../src/helpers/eventPromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,4FAA4F;AAC5F,eAAO,MAAM,YAAY,YAAa,YAAY,SAAS,MAAM,iBACE,CAAA;AAEnE,eAAO,MAAM,aAAa,aAAc,YAAY,EAAE,SAAS,MAAM,mBAGpE,CAAA"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/** Returns a promise that resolves when the given event is emitted on the given emitter. */
|
|
2
|
-
export const eventPromise = (emitter, event) =>
|
|
3
|
-
new Promise(resolve => emitter.once(event, d => resolve(d)))
|
|
4
|
-
export const eventPromises = (emitters, event) => {
|
|
5
|
-
const promises = emitters.map(emitter => eventPromise(emitter, event))
|
|
6
|
-
return Promise.all(promises)
|
|
7
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"headsAreSame.d.ts","sourceRoot":"","sources":["../../../src/helpers/headsAreSame.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,YAAY,iCAExB,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mergeArrays.d.ts","sourceRoot":"","sources":["../../../src/helpers/mergeArrays.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,QAAQ,EAAE,UAAU,EAAE,cAgBjD"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function mergeArrays(myArrays) {
|
|
2
|
-
// Get the total length of all arrays.
|
|
3
|
-
let length = 0
|
|
4
|
-
myArrays.forEach(item => {
|
|
5
|
-
length += item.length
|
|
6
|
-
})
|
|
7
|
-
// Create a new array with total length and merge all source arrays.
|
|
8
|
-
const mergedArray = new Uint8Array(length)
|
|
9
|
-
let offset = 0
|
|
10
|
-
myArrays.forEach(item => {
|
|
11
|
-
mergedArray.set(item, offset)
|
|
12
|
-
offset += item.length
|
|
13
|
-
})
|
|
14
|
-
return mergedArray
|
|
15
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"pause.d.ts","sourceRoot":"","sources":["../../../src/helpers/pause.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,KAAK,+BAC4C,CAAA;AAE9D,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAKlF"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { type NetworkAdapter } from "../../index.js"
|
|
2
|
-
/**
|
|
3
|
-
* Runs a series of tests against a set of three peers, each represented by one or more instantiated
|
|
4
|
-
* network adapters.
|
|
5
|
-
*
|
|
6
|
-
* The adapter `setup` function should return an object with the following properties:
|
|
7
|
-
*
|
|
8
|
-
* - `adapters`: A tuple representing three peers' network configuration. Each element can be either
|
|
9
|
-
* a single adapter or an array of adapters. Each will be used to instantiate a Repo for that
|
|
10
|
-
* peer.
|
|
11
|
-
* - `teardown`: An optional function that will be called after the tests have run. This can be used
|
|
12
|
-
* to clean up any resources that were created during the test.
|
|
13
|
-
*/
|
|
14
|
-
export declare function runAdapterTests(_setup: SetupFn, title?: string): void
|
|
15
|
-
type Network = NetworkAdapter | NetworkAdapter[]
|
|
16
|
-
export type SetupFn = () => Promise<{
|
|
17
|
-
adapters: [Network, Network, Network]
|
|
18
|
-
teardown?: () => void
|
|
19
|
-
}>
|
|
20
|
-
export {}
|
|
21
|
-
//# sourceMappingURL=network-adapter-tests.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"network-adapter-tests.d.ts","sourceRoot":"","sources":["../../../../src/helpers/tests/network-adapter-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,cAAc,EAAc,MAAM,gBAAgB,CAAA;AAM9E;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CA8HrE;AAID,KAAK,OAAO,GAAG,cAAc,GAAG,cAAc,EAAE,CAAA;AAEhD,MAAM,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC;IAClC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;IACrC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CACtB,CAAC,CAAA"}
|