@graffiti-garden/api 0.2.0 → 0.2.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/dist/src/1-api.d.ts +147 -110
- package/dist/src/1-api.d.ts.map +1 -1
- package/dist/src/2-types.d.ts +28 -3
- package/dist/src/2-types.d.ts.map +1 -1
- package/dist/tests/index.js +1 -1
- package/dist/tests/src/channel-stats.d.ts +3 -0
- package/dist/tests/src/channel-stats.d.ts.map +1 -0
- package/dist/tests/src/crud.d.ts.map +1 -1
- package/dist/tests/src/index.d.ts +2 -0
- package/dist/tests/src/index.d.ts.map +1 -1
- package/dist/tests/src/list.d.ts +3 -0
- package/dist/tests/src/list.d.ts.map +1 -0
- package/dist/tests/src/orphans.d.ts +3 -0
- package/dist/tests/src/orphans.d.ts.map +1 -0
- package/dist/tests/src/utils.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/1-api.ts +157 -115
- package/src/2-types.ts +29 -3
- package/tests/src/channel-stats.ts +124 -0
- package/tests/src/crud.ts +41 -9
- package/tests/src/index.ts +2 -0
- package/tests/src/orphans.ts +73 -0
- package/tests/src/utils.ts +4 -1
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { it, expect, describe, assert } from "vitest";
|
|
2
|
+
import type { Graffiti, GraffitiSession } from "@graffiti-garden/api";
|
|
3
|
+
import { randomPutObject, randomString } from "./utils";
|
|
4
|
+
|
|
5
|
+
export const graffitiOrphanTests = (
|
|
6
|
+
useGraffiti: () => Pick<
|
|
7
|
+
Graffiti,
|
|
8
|
+
"recoverOrphans" | "put" | "delete" | "patch"
|
|
9
|
+
>,
|
|
10
|
+
useSession1: () => GraffitiSession,
|
|
11
|
+
useSession2: () => GraffitiSession,
|
|
12
|
+
) => {
|
|
13
|
+
describe("recoverOrphans", () => {
|
|
14
|
+
it("list orphans", async () => {
|
|
15
|
+
const graffiti = useGraffiti();
|
|
16
|
+
const session = useSession1();
|
|
17
|
+
|
|
18
|
+
const existingOrphans: string[] = [];
|
|
19
|
+
const orphanIterator1 = graffiti.recoverOrphans({}, session);
|
|
20
|
+
for await (const orphan of orphanIterator1) {
|
|
21
|
+
if (orphan.error) continue;
|
|
22
|
+
existingOrphans.push(orphan.value.name);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const object = randomPutObject();
|
|
26
|
+
object.channels = [];
|
|
27
|
+
const putted = await graffiti.put(object, session);
|
|
28
|
+
const orphanIterator2 = graffiti.recoverOrphans({}, session);
|
|
29
|
+
let numResults = 0;
|
|
30
|
+
for await (const orphan of orphanIterator2) {
|
|
31
|
+
if (orphan.error) continue;
|
|
32
|
+
if (orphan.value.name === putted.name) {
|
|
33
|
+
numResults++;
|
|
34
|
+
expect(orphan.value.source).toBe(putted.source);
|
|
35
|
+
expect(orphan.value.lastModified).toBe(putted.lastModified);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
expect(numResults).toBe(1);
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
it("replaced orphan, no longer", async () => {
|
|
42
|
+
const graffiti = useGraffiti();
|
|
43
|
+
const session = useSession1();
|
|
44
|
+
|
|
45
|
+
const object = randomPutObject();
|
|
46
|
+
object.channels = [];
|
|
47
|
+
const putOrphan = await graffiti.put(object, session);
|
|
48
|
+
|
|
49
|
+
const putNotOrphan = await graffiti.put(
|
|
50
|
+
{
|
|
51
|
+
...putOrphan,
|
|
52
|
+
...object,
|
|
53
|
+
channels: [randomString()],
|
|
54
|
+
},
|
|
55
|
+
session,
|
|
56
|
+
);
|
|
57
|
+
expect(putNotOrphan.name).toBe(putOrphan.name);
|
|
58
|
+
|
|
59
|
+
const orphanIterator = graffiti.recoverOrphans({}, session);
|
|
60
|
+
let numResults = 0;
|
|
61
|
+
for await (const orphan of orphanIterator) {
|
|
62
|
+
if (orphan.error) continue;
|
|
63
|
+
if (orphan.value.name === putOrphan.name) {
|
|
64
|
+
numResults++;
|
|
65
|
+
expect(orphan.value.tombstone).toBe(true);
|
|
66
|
+
expect(orphan.value.lastModified).toBe(putNotOrphan.lastModified);
|
|
67
|
+
expect(orphan.value.channels).toEqual([]);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
expect(numResults).toBe(1);
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
};
|
package/tests/src/utils.ts
CHANGED
|
@@ -4,9 +4,12 @@ import type { GraffitiPutObject, GraffitiStream } from "@graffiti-garden/api";
|
|
|
4
4
|
export function randomString(): string {
|
|
5
5
|
const array = new Uint8Array(16);
|
|
6
6
|
crypto.getRandomValues(array);
|
|
7
|
-
|
|
7
|
+
const str = Array.from(array)
|
|
8
8
|
.map((b) => b.toString(16).padStart(2, "0"))
|
|
9
9
|
.join("");
|
|
10
|
+
|
|
11
|
+
// check for unicode support
|
|
12
|
+
return str + "👩🏽❤️💋👩🏻🫱🏼🫲🏿";
|
|
10
13
|
}
|
|
11
14
|
|
|
12
15
|
export function randomValue() {
|