@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.
Files changed (99) hide show
  1. package/dist/ColdStorage.cjs +1 -1
  2. package/dist/ColdStorage.d.cts +2 -2
  3. package/dist/ColdStorage.d.cts.map +1 -1
  4. package/dist/ColdStorage.d.mts +2 -2
  5. package/dist/ColdStorage.d.mts.map +1 -1
  6. package/dist/ColdStorage.mjs +2 -2
  7. package/dist/ColdStorage.mjs.map +1 -1
  8. package/dist/DocumentInstance.cjs +13 -13
  9. package/dist/DocumentInstance.mjs +13 -13
  10. package/dist/DocumentInstance.mjs.map +1 -1
  11. package/dist/Errors.d.cts +8 -8
  12. package/dist/Errors.d.cts.map +1 -1
  13. package/dist/Errors.d.mts +8 -8
  14. package/dist/Errors.d.mts.map +1 -1
  15. package/dist/HotStorage.cjs +1 -1
  16. package/dist/HotStorage.d.cts +2 -2
  17. package/dist/HotStorage.d.mts +2 -2
  18. package/dist/HotStorage.mjs +2 -2
  19. package/dist/HotStorage.mjs.map +1 -1
  20. package/dist/Metrics.cjs +6 -6
  21. package/dist/Metrics.d.cts +21 -23
  22. package/dist/Metrics.d.cts.map +1 -1
  23. package/dist/Metrics.d.mts +21 -23
  24. package/dist/Metrics.d.mts.map +1 -1
  25. package/dist/Metrics.mjs +7 -7
  26. package/dist/Metrics.mjs.map +1 -1
  27. package/dist/MimicAuthService.cjs +1 -1
  28. package/dist/MimicAuthService.d.cts +2 -2
  29. package/dist/MimicAuthService.d.cts.map +1 -1
  30. package/dist/MimicAuthService.d.mts +2 -2
  31. package/dist/MimicAuthService.d.mts.map +1 -1
  32. package/dist/MimicAuthService.mjs +2 -2
  33. package/dist/MimicAuthService.mjs.map +1 -1
  34. package/dist/MimicClusterServerEngine.cjs +38 -41
  35. package/dist/MimicClusterServerEngine.d.cts +1 -1
  36. package/dist/MimicClusterServerEngine.d.mts +1 -1
  37. package/dist/MimicClusterServerEngine.mjs +31 -34
  38. package/dist/MimicClusterServerEngine.mjs.map +1 -1
  39. package/dist/MimicServer.cjs +23 -23
  40. package/dist/MimicServer.d.cts +3 -3
  41. package/dist/MimicServer.d.cts.map +1 -1
  42. package/dist/MimicServer.d.mts +3 -3
  43. package/dist/MimicServer.d.mts.map +1 -1
  44. package/dist/MimicServer.mjs +22 -22
  45. package/dist/MimicServer.mjs.map +1 -1
  46. package/dist/MimicServerEngine.cjs +13 -13
  47. package/dist/MimicServerEngine.d.cts +2 -2
  48. package/dist/MimicServerEngine.d.mts +2 -2
  49. package/dist/MimicServerEngine.mjs +14 -14
  50. package/dist/MimicServerEngine.mjs.map +1 -1
  51. package/dist/PresenceManager.cjs +4 -4
  52. package/dist/PresenceManager.d.cts +2 -2
  53. package/dist/PresenceManager.d.mts +2 -2
  54. package/dist/PresenceManager.mjs +5 -5
  55. package/dist/PresenceManager.mjs.map +1 -1
  56. package/dist/Types.d.cts +1 -1
  57. package/dist/Types.d.mts +1 -1
  58. package/dist/testing/ColdStorageTestSuite.cjs +3 -3
  59. package/dist/testing/ColdStorageTestSuite.mjs +3 -3
  60. package/dist/testing/ColdStorageTestSuite.mjs.map +1 -1
  61. package/dist/testing/HotStorageTestSuite.cjs +13 -13
  62. package/dist/testing/HotStorageTestSuite.mjs +13 -13
  63. package/dist/testing/HotStorageTestSuite.mjs.map +1 -1
  64. package/dist/testing/StorageIntegrationTestSuite.cjs +3 -3
  65. package/dist/testing/StorageIntegrationTestSuite.mjs +3 -3
  66. package/dist/testing/StorageIntegrationTestSuite.mjs.map +1 -1
  67. package/dist/testing/types.d.cts +3 -3
  68. package/dist/testing/types.d.cts.map +1 -1
  69. package/dist/testing/types.d.mts +1 -1
  70. package/dist/testing/types.d.mts.map +1 -1
  71. package/package.json +17 -21
  72. package/src/ColdStorage.ts +4 -5
  73. package/src/DocumentInstance.ts +13 -13
  74. package/src/HotStorage.ts +3 -3
  75. package/src/Metrics.ts +22 -16
  76. package/src/MimicAuthService.ts +3 -3
  77. package/src/MimicClusterServerEngine.ts +35 -35
  78. package/src/MimicServer.ts +26 -30
  79. package/src/MimicServerEngine.ts +15 -15
  80. package/src/PresenceManager.ts +6 -6
  81. package/src/Types.ts +1 -1
  82. package/src/testing/ColdStorageTestSuite.ts +3 -3
  83. package/src/testing/HotStorageTestSuite.ts +17 -17
  84. package/src/testing/StorageIntegrationTestSuite.ts +3 -3
  85. package/.turbo/turbo-build.log +0 -154
  86. package/tests/ColdStorage.test.ts +0 -24
  87. package/tests/DocumentInstance.test.ts +0 -669
  88. package/tests/HotStorage.test.ts +0 -24
  89. package/tests/MimicAuthService.test.ts +0 -153
  90. package/tests/MimicClusterServerEngine.test.ts +0 -587
  91. package/tests/MimicServer.test.ts +0 -142
  92. package/tests/MimicServerEngine.test.ts +0 -547
  93. package/tests/PresenceManager.test.ts +0 -380
  94. package/tests/Protocol.test.ts +0 -190
  95. package/tests/StorageIntegration.test.ts +0 -259
  96. package/tsconfig.build.json +0 -24
  97. package/tsconfig.json +0 -8
  98. package/tsdown.config.ts +0 -18
  99. package/vitest.mts +0 -11
@@ -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
- });