@voidhash/mimic-effect 1.0.0-beta.16 → 1.0.0-beta.18
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/ColdStorage.cjs +1 -1
- package/dist/ColdStorage.d.cts +2 -2
- package/dist/ColdStorage.d.cts.map +1 -1
- package/dist/ColdStorage.d.mts +2 -2
- package/dist/ColdStorage.d.mts.map +1 -1
- package/dist/ColdStorage.mjs +2 -2
- package/dist/ColdStorage.mjs.map +1 -1
- package/dist/DocumentInstance.cjs +13 -13
- package/dist/DocumentInstance.mjs +13 -13
- package/dist/DocumentInstance.mjs.map +1 -1
- package/dist/Errors.d.cts +8 -8
- package/dist/Errors.d.cts.map +1 -1
- package/dist/Errors.d.mts +8 -8
- package/dist/Errors.d.mts.map +1 -1
- package/dist/HotStorage.cjs +1 -1
- package/dist/HotStorage.d.cts +2 -2
- package/dist/HotStorage.d.mts +2 -2
- package/dist/HotStorage.mjs +2 -2
- package/dist/HotStorage.mjs.map +1 -1
- package/dist/Metrics.cjs +6 -6
- package/dist/Metrics.d.cts +21 -23
- package/dist/Metrics.d.cts.map +1 -1
- package/dist/Metrics.d.mts +21 -23
- package/dist/Metrics.d.mts.map +1 -1
- package/dist/Metrics.mjs +7 -7
- package/dist/Metrics.mjs.map +1 -1
- package/dist/MimicAuthService.cjs +1 -1
- package/dist/MimicAuthService.d.cts +2 -2
- package/dist/MimicAuthService.d.cts.map +1 -1
- package/dist/MimicAuthService.d.mts +2 -2
- package/dist/MimicAuthService.d.mts.map +1 -1
- package/dist/MimicAuthService.mjs +2 -2
- package/dist/MimicAuthService.mjs.map +1 -1
- package/dist/MimicClusterServerEngine.cjs +38 -41
- package/dist/MimicClusterServerEngine.d.cts +1 -1
- package/dist/MimicClusterServerEngine.d.mts +1 -1
- package/dist/MimicClusterServerEngine.mjs +31 -34
- package/dist/MimicClusterServerEngine.mjs.map +1 -1
- package/dist/MimicServer.cjs +23 -23
- package/dist/MimicServer.d.cts +3 -3
- package/dist/MimicServer.d.cts.map +1 -1
- package/dist/MimicServer.d.mts +3 -3
- package/dist/MimicServer.d.mts.map +1 -1
- package/dist/MimicServer.mjs +22 -22
- package/dist/MimicServer.mjs.map +1 -1
- package/dist/MimicServerEngine.cjs +13 -13
- package/dist/MimicServerEngine.d.cts +2 -2
- package/dist/MimicServerEngine.d.mts +2 -2
- package/dist/MimicServerEngine.mjs +14 -14
- package/dist/MimicServerEngine.mjs.map +1 -1
- package/dist/PresenceManager.cjs +4 -4
- package/dist/PresenceManager.d.cts +2 -2
- package/dist/PresenceManager.d.mts +2 -2
- package/dist/PresenceManager.mjs +5 -5
- package/dist/PresenceManager.mjs.map +1 -1
- package/dist/Types.d.cts +1 -1
- package/dist/Types.d.mts +1 -1
- package/dist/testing/ColdStorageTestSuite.cjs +3 -3
- package/dist/testing/ColdStorageTestSuite.mjs +3 -3
- package/dist/testing/ColdStorageTestSuite.mjs.map +1 -1
- package/dist/testing/HotStorageTestSuite.cjs +13 -13
- package/dist/testing/HotStorageTestSuite.mjs +13 -13
- package/dist/testing/HotStorageTestSuite.mjs.map +1 -1
- package/dist/testing/StorageIntegrationTestSuite.cjs +3 -3
- package/dist/testing/StorageIntegrationTestSuite.mjs +3 -3
- package/dist/testing/StorageIntegrationTestSuite.mjs.map +1 -1
- package/dist/testing/types.d.cts +3 -3
- package/dist/testing/types.d.cts.map +1 -1
- package/dist/testing/types.d.mts +1 -1
- package/dist/testing/types.d.mts.map +1 -1
- package/package.json +17 -21
- package/src/ColdStorage.ts +4 -5
- package/src/DocumentInstance.ts +13 -13
- package/src/HotStorage.ts +3 -3
- package/src/Metrics.ts +22 -16
- package/src/MimicAuthService.ts +3 -3
- package/src/MimicClusterServerEngine.ts +35 -35
- package/src/MimicServer.ts +26 -30
- package/src/MimicServerEngine.ts +15 -15
- package/src/PresenceManager.ts +6 -6
- package/src/Types.ts +1 -1
- package/src/testing/ColdStorageTestSuite.ts +3 -3
- package/src/testing/HotStorageTestSuite.ts +17 -17
- package/src/testing/StorageIntegrationTestSuite.ts +3 -3
- package/.turbo/turbo-build.log +0 -154
- package/tests/ColdStorage.test.ts +0 -24
- package/tests/DocumentInstance.test.ts +0 -669
- package/tests/HotStorage.test.ts +0 -24
- package/tests/MimicAuthService.test.ts +0 -153
- package/tests/MimicClusterServerEngine.test.ts +0 -587
- package/tests/MimicServer.test.ts +0 -142
- package/tests/MimicServerEngine.test.ts +0 -547
- package/tests/PresenceManager.test.ts +0 -380
- package/tests/Protocol.test.ts +0 -190
- package/tests/StorageIntegration.test.ts +0 -259
- package/tsconfig.build.json +0 -24
- package/tsconfig.json +0 -8
- package/tsdown.config.ts +0 -18
- package/vitest.mts +0 -11
package/tests/HotStorage.test.ts
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { Effect } from "effect";
|
|
3
|
-
import { HotStorage, HotStorageTag } from "../src/HotStorage";
|
|
4
|
-
import { HotStorageTestSuite } from "../src/testing";
|
|
5
|
-
|
|
6
|
-
describe("HotStorage", () => {
|
|
7
|
-
describe("InMemory", () => {
|
|
8
|
-
// Use the test suite utilities for comprehensive testing
|
|
9
|
-
const layer = HotStorage.InMemory.make();
|
|
10
|
-
|
|
11
|
-
// Run all test suite tests
|
|
12
|
-
for (const test of HotStorageTestSuite.makeTests()) {
|
|
13
|
-
it(`[${test.category}] ${test.name}`, () =>
|
|
14
|
-
Effect.runPromise(test.run.pipe(Effect.provide(layer)))
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
|
-
|
|
19
|
-
describe("Tag", () => {
|
|
20
|
-
it("should have correct identifier", () => {
|
|
21
|
-
expect(HotStorageTag.key).toBe("@voidhash/mimic-effect/HotStorage");
|
|
22
|
-
});
|
|
23
|
-
});
|
|
24
|
-
});
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
import { describe, it, expect } from "vitest";
|
|
2
|
-
import { Effect, Layer, Context } from "effect";
|
|
3
|
-
import {
|
|
4
|
-
MimicAuthService,
|
|
5
|
-
MimicAuthServiceTag,
|
|
6
|
-
} from "../src/MimicAuthService";
|
|
7
|
-
import { AuthenticationError } from "../src/Errors";
|
|
8
|
-
|
|
9
|
-
describe("MimicAuthService", () => {
|
|
10
|
-
describe("NoAuth", () => {
|
|
11
|
-
const layer = MimicAuthService.NoAuth.make();
|
|
12
|
-
|
|
13
|
-
it("should authenticate any token with write permission", async () => {
|
|
14
|
-
const result = await Effect.runPromise(
|
|
15
|
-
Effect.gen(function* () {
|
|
16
|
-
const auth = yield* MimicAuthServiceTag;
|
|
17
|
-
return yield* auth.authenticate("any-token", "any-doc");
|
|
18
|
-
}).pipe(Effect.provide(layer))
|
|
19
|
-
);
|
|
20
|
-
|
|
21
|
-
expect(result.userId).toBe("anonymous");
|
|
22
|
-
expect(result.permission).toBe("write");
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
it("should work with empty token", async () => {
|
|
26
|
-
const result = await Effect.runPromise(
|
|
27
|
-
Effect.gen(function* () {
|
|
28
|
-
const auth = yield* MimicAuthServiceTag;
|
|
29
|
-
return yield* auth.authenticate("", "doc-1");
|
|
30
|
-
}).pipe(Effect.provide(layer))
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
expect(result.userId).toBe("anonymous");
|
|
34
|
-
expect(result.permission).toBe("write");
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
|
|
38
|
-
describe("Static", () => {
|
|
39
|
-
it("should return configured permissions", async () => {
|
|
40
|
-
const layer = MimicAuthService.Static.make({
|
|
41
|
-
permissions: {
|
|
42
|
-
"user-1": "write",
|
|
43
|
-
"user-2": "read",
|
|
44
|
-
},
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const result = await Effect.runPromise(
|
|
48
|
-
Effect.gen(function* () {
|
|
49
|
-
const auth = yield* MimicAuthServiceTag;
|
|
50
|
-
const result1 = yield* auth.authenticate("user-1", "doc-1");
|
|
51
|
-
const result2 = yield* auth.authenticate("user-2", "doc-1");
|
|
52
|
-
return { result1, result2 };
|
|
53
|
-
}).pipe(Effect.provide(layer))
|
|
54
|
-
);
|
|
55
|
-
|
|
56
|
-
expect(result.result1.userId).toBe("user-1");
|
|
57
|
-
expect(result.result1.permission).toBe("write");
|
|
58
|
-
expect(result.result2.userId).toBe("user-2");
|
|
59
|
-
expect(result.result2.permission).toBe("read");
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it("should use default permission for unknown users", async () => {
|
|
63
|
-
const layer = MimicAuthService.Static.make({
|
|
64
|
-
permissions: {
|
|
65
|
-
"user-1": "write",
|
|
66
|
-
},
|
|
67
|
-
defaultPermission: "read",
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
const result = await Effect.runPromise(
|
|
71
|
-
Effect.gen(function* () {
|
|
72
|
-
const auth = yield* MimicAuthServiceTag;
|
|
73
|
-
return yield* auth.authenticate("unknown-user", "doc-1");
|
|
74
|
-
}).pipe(Effect.provide(layer))
|
|
75
|
-
);
|
|
76
|
-
|
|
77
|
-
expect(result.userId).toBe("unknown-user");
|
|
78
|
-
expect(result.permission).toBe("read");
|
|
79
|
-
});
|
|
80
|
-
|
|
81
|
-
it("should fail for unknown users without default permission", async () => {
|
|
82
|
-
const layer = MimicAuthService.Static.make({
|
|
83
|
-
permissions: {
|
|
84
|
-
"user-1": "write",
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
const result = await Effect.runPromise(
|
|
89
|
-
Effect.gen(function* () {
|
|
90
|
-
const auth = yield* MimicAuthServiceTag;
|
|
91
|
-
return yield* Effect.either(
|
|
92
|
-
auth.authenticate("unknown-user", "doc-1")
|
|
93
|
-
);
|
|
94
|
-
}).pipe(Effect.provide(layer))
|
|
95
|
-
);
|
|
96
|
-
|
|
97
|
-
expect(result._tag).toBe("Left");
|
|
98
|
-
if (result._tag === "Left") {
|
|
99
|
-
expect(result.left).toBeInstanceOf(AuthenticationError);
|
|
100
|
-
expect(result.left.reason).toBe("Unknown user");
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
describe("make (custom)", () => {
|
|
106
|
-
it("should allow custom implementation with service access", async () => {
|
|
107
|
-
// Create a mock service
|
|
108
|
-
class MockDatabaseTag extends Context.Tag("MockDatabase")<
|
|
109
|
-
MockDatabaseTag,
|
|
110
|
-
{ getPermission: (userId: string) => Effect.Effect<"read" | "write"> }
|
|
111
|
-
>() {}
|
|
112
|
-
|
|
113
|
-
const mockDbLayer = Layer.succeed(MockDatabaseTag, {
|
|
114
|
-
getPermission: (userId: string) =>
|
|
115
|
-
Effect.succeed(userId === "admin" ? "write" : "read"),
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
const authLayer = MimicAuthService.make(
|
|
119
|
-
Effect.gen(function* () {
|
|
120
|
-
const db = yield* MockDatabaseTag;
|
|
121
|
-
|
|
122
|
-
return {
|
|
123
|
-
authenticate: (token: string, _documentId: string) =>
|
|
124
|
-
Effect.gen(function* () {
|
|
125
|
-
const permission = yield* db.getPermission(token);
|
|
126
|
-
return { userId: token, permission };
|
|
127
|
-
}),
|
|
128
|
-
};
|
|
129
|
-
})
|
|
130
|
-
).pipe(Layer.provide(mockDbLayer));
|
|
131
|
-
|
|
132
|
-
const result = await Effect.runPromise(
|
|
133
|
-
Effect.gen(function* () {
|
|
134
|
-
const auth = yield* MimicAuthServiceTag;
|
|
135
|
-
const admin = yield* auth.authenticate("admin", "doc-1");
|
|
136
|
-
const user = yield* auth.authenticate("user", "doc-1");
|
|
137
|
-
return { admin, user };
|
|
138
|
-
}).pipe(Effect.provide(authLayer))
|
|
139
|
-
);
|
|
140
|
-
|
|
141
|
-
expect(result.admin.permission).toBe("write");
|
|
142
|
-
expect(result.user.permission).toBe("read");
|
|
143
|
-
});
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
describe("Tag", () => {
|
|
147
|
-
it("should have correct identifier", () => {
|
|
148
|
-
expect(MimicAuthServiceTag.key).toBe(
|
|
149
|
-
"@voidhash/mimic-effect/MimicAuthService"
|
|
150
|
-
);
|
|
151
|
-
});
|
|
152
|
-
});
|
|
153
|
-
});
|