@voidhash/mimic-effect 1.0.0-beta.1 → 1.0.0-beta.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.
Files changed (108) hide show
  1. package/.turbo/turbo-build.log +99 -57
  2. package/dist/DocumentManager.cjs +109 -39
  3. package/dist/DocumentManager.d.cts +12 -4
  4. package/dist/DocumentManager.d.cts.map +1 -1
  5. package/dist/DocumentManager.d.mts +12 -4
  6. package/dist/DocumentManager.d.mts.map +1 -1
  7. package/dist/DocumentManager.mjs +110 -40
  8. package/dist/DocumentManager.mjs.map +1 -1
  9. package/dist/Errors.cjs +10 -1
  10. package/dist/Errors.d.cts +18 -3
  11. package/dist/Errors.d.cts.map +1 -1
  12. package/dist/Errors.d.mts +18 -3
  13. package/dist/Errors.d.mts.map +1 -1
  14. package/dist/Errors.mjs +9 -1
  15. package/dist/Errors.mjs.map +1 -1
  16. package/dist/HotStorage.cjs +23 -0
  17. package/dist/HotStorage.d.cts +17 -1
  18. package/dist/HotStorage.d.cts.map +1 -1
  19. package/dist/HotStorage.d.mts +17 -1
  20. package/dist/HotStorage.d.mts.map +1 -1
  21. package/dist/HotStorage.mjs +23 -0
  22. package/dist/HotStorage.mjs.map +1 -1
  23. package/dist/Metrics.cjs +23 -1
  24. package/dist/Metrics.d.cts +4 -0
  25. package/dist/Metrics.d.cts.map +1 -1
  26. package/dist/Metrics.d.mts +4 -0
  27. package/dist/Metrics.d.mts.map +1 -1
  28. package/dist/Metrics.mjs +21 -1
  29. package/dist/Metrics.mjs.map +1 -1
  30. package/dist/MimicClusterServerEngine.cjs +114 -36
  31. package/dist/MimicClusterServerEngine.d.cts.map +1 -1
  32. package/dist/MimicClusterServerEngine.d.mts +1 -1
  33. package/dist/MimicClusterServerEngine.d.mts.map +1 -1
  34. package/dist/MimicClusterServerEngine.mjs +119 -41
  35. package/dist/MimicClusterServerEngine.mjs.map +1 -1
  36. package/dist/MimicServer.cjs +1 -1
  37. package/dist/MimicServer.d.cts +1 -1
  38. package/dist/MimicServer.d.cts.map +1 -1
  39. package/dist/MimicServer.d.mts +1 -1
  40. package/dist/MimicServer.d.mts.map +1 -1
  41. package/dist/MimicServer.mjs +1 -1
  42. package/dist/MimicServerEngine.d.cts +7 -4
  43. package/dist/MimicServerEngine.d.cts.map +1 -1
  44. package/dist/MimicServerEngine.d.mts +7 -4
  45. package/dist/MimicServerEngine.d.mts.map +1 -1
  46. package/dist/MimicServerEngine.mjs.map +1 -1
  47. package/dist/index.cjs +1 -1
  48. package/dist/index.mjs +1 -1
  49. package/dist/testing/ColdStorageTestSuite.cjs +508 -0
  50. package/dist/testing/ColdStorageTestSuite.d.cts +36 -0
  51. package/dist/testing/ColdStorageTestSuite.d.cts.map +1 -0
  52. package/dist/testing/ColdStorageTestSuite.d.mts +36 -0
  53. package/dist/testing/ColdStorageTestSuite.d.mts.map +1 -0
  54. package/dist/testing/ColdStorageTestSuite.mjs +508 -0
  55. package/dist/testing/ColdStorageTestSuite.mjs.map +1 -0
  56. package/dist/testing/FailingStorage.cjs +135 -0
  57. package/dist/testing/FailingStorage.d.cts +43 -0
  58. package/dist/testing/FailingStorage.d.cts.map +1 -0
  59. package/dist/testing/FailingStorage.d.mts +43 -0
  60. package/dist/testing/FailingStorage.d.mts.map +1 -0
  61. package/dist/testing/FailingStorage.mjs +136 -0
  62. package/dist/testing/FailingStorage.mjs.map +1 -0
  63. package/dist/testing/HotStorageTestSuite.cjs +585 -0
  64. package/dist/testing/HotStorageTestSuite.d.cts +40 -0
  65. package/dist/testing/HotStorageTestSuite.d.cts.map +1 -0
  66. package/dist/testing/HotStorageTestSuite.d.mts +40 -0
  67. package/dist/testing/HotStorageTestSuite.d.mts.map +1 -0
  68. package/dist/testing/HotStorageTestSuite.mjs +585 -0
  69. package/dist/testing/HotStorageTestSuite.mjs.map +1 -0
  70. package/dist/testing/StorageIntegrationTestSuite.cjs +349 -0
  71. package/dist/testing/StorageIntegrationTestSuite.d.cts +35 -0
  72. package/dist/testing/StorageIntegrationTestSuite.d.cts.map +1 -0
  73. package/dist/testing/StorageIntegrationTestSuite.d.mts +35 -0
  74. package/dist/testing/StorageIntegrationTestSuite.d.mts.map +1 -0
  75. package/dist/testing/StorageIntegrationTestSuite.mjs +349 -0
  76. package/dist/testing/StorageIntegrationTestSuite.mjs.map +1 -0
  77. package/dist/testing/assertions.cjs +114 -0
  78. package/dist/testing/assertions.mjs +109 -0
  79. package/dist/testing/assertions.mjs.map +1 -0
  80. package/dist/testing/index.cjs +14 -0
  81. package/dist/testing/index.d.cts +6 -0
  82. package/dist/testing/index.d.mts +6 -0
  83. package/dist/testing/index.mjs +7 -0
  84. package/dist/testing/types.cjs +15 -0
  85. package/dist/testing/types.d.cts +90 -0
  86. package/dist/testing/types.d.cts.map +1 -0
  87. package/dist/testing/types.d.mts +90 -0
  88. package/dist/testing/types.d.mts.map +1 -0
  89. package/dist/testing/types.mjs +16 -0
  90. package/dist/testing/types.mjs.map +1 -0
  91. package/package.json +8 -3
  92. package/src/DocumentManager.ts +195 -87
  93. package/src/Errors.ts +15 -1
  94. package/src/HotStorage.ts +75 -1
  95. package/src/Metrics.ts +24 -0
  96. package/src/MimicClusterServerEngine.ts +178 -56
  97. package/src/MimicServerEngine.ts +7 -3
  98. package/src/testing/ColdStorageTestSuite.ts +589 -0
  99. package/src/testing/FailingStorage.ts +286 -0
  100. package/src/testing/HotStorageTestSuite.ts +762 -0
  101. package/src/testing/StorageIntegrationTestSuite.ts +504 -0
  102. package/src/testing/assertions.ts +181 -0
  103. package/src/testing/index.ts +83 -0
  104. package/src/testing/types.ts +100 -0
  105. package/tests/ColdStorage.test.ts +8 -120
  106. package/tests/HotStorage.test.ts +7 -126
  107. package/tests/StorageIntegration.test.ts +259 -0
  108. package/tsdown.config.ts +1 -1
@@ -1,112 +1,154 @@
1
1
 
2
- > @voidhash/mimic-effect@1.0.0-beta.1 build /home/runner/work/mimic/mimic/packages/mimic-effect
2
+ > @voidhash/mimic-effect@1.0.0-beta.2 build /home/runner/work/mimic/mimic/packages/mimic-effect
3
3
  > tsdown
4
4
 
5
5
  ℹ tsdown v0.18.2 powered by rolldown v1.0.0-beta.55
6
6
  ℹ config file: /home/runner/work/mimic/mimic/packages/mimic-effect/tsdown.config.ts
7
- ℹ entry: src/index.ts
7
+ ℹ entry: src/index.ts, src/testing/index.ts
8
8
  ℹ target: es2017
9
9
  ℹ tsconfig: tsconfig.json
10
10
  ℹ Build start
11
11
  ℹ [CJS] dist/index.cjs  2.37 kB │ gzip: 0.49 kB
12
- ℹ [CJS] dist/MimicClusterServerEngine.cjs 18.10 kB │ gzip: 4.15 kB
12
+ ℹ [CJS] dist/testing/index.cjs  0.95 kB │ gzip: 0.22 kB
13
+ ℹ [CJS] dist/testing/HotStorageTestSuite.cjs 26.32 kB │ gzip: 3.90 kB
14
+ ℹ [CJS] dist/MimicClusterServerEngine.cjs 21.55 kB │ gzip: 4.91 kB
15
+ ℹ [CJS] dist/testing/ColdStorageTestSuite.cjs 18.14 kB │ gzip: 3.22 kB
16
+ ℹ [CJS] dist/testing/StorageIntegrationTestSuite.cjs 13.93 kB │ gzip: 2.58 kB
17
+ ℹ [CJS] dist/DocumentManager.cjs 12.28 kB │ gzip: 2.97 kB
13
18
  ℹ [CJS] dist/MimicServer.cjs 10.10 kB │ gzip: 2.74 kB
14
- ℹ [CJS] dist/DocumentManager.cjs  9.09 kB │ gzip: 2.24 kB
19
+ ℹ [CJS] dist/testing/FailingStorage.cjs  5.77 kB │ gzip: 1.30 kB
20
+ ℹ [CJS] dist/Metrics.cjs  4.26 kB │ gzip: 1.04 kB
15
21
  ℹ [CJS] dist/MimicServerEngine.cjs  4.23 kB │ gzip: 1.34 kB
16
22
  ℹ [CJS] dist/Protocol.cjs  3.78 kB │ gzip: 1.14 kB
17
23
  ℹ [CJS] dist/PresenceManager.cjs  3.72 kB │ gzip: 1.00 kB
18
- ℹ [CJS] dist/Metrics.cjs  3.49 kB │ gzip: 0.88 kB
19
- ℹ [CJS] dist/HotStorage.cjs  2.63 kB │ gzip: 0.94 kB
24
+ ℹ [CJS] dist/HotStorage.cjs  3.64 kB │ gzip: 1.21 kB
25
+ ℹ [CJS] dist/testing/assertions.cjs  3.43 kB │ gzip: 1.04 kB
20
26
  ℹ [CJS] dist/MimicAuthService.cjs  2.27 kB │ gzip: 0.88 kB
27
+ ℹ [CJS] dist/Errors.cjs  1.98 kB │ gzip: 0.61 kB
21
28
  ℹ [CJS] dist/ColdStorage.cjs  1.91 kB │ gzip: 0.77 kB
22
- ℹ [CJS] dist/Errors.cjs  1.63 kB │ gzip: 0.49 kB
23
29
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.cjs  0.95 kB │ gzip: 0.43 kB
24
30
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.cjs  0.53 kB │ gzip: 0.29 kB
25
31
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.cjs  0.52 kB │ gzip: 0.32 kB
26
32
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.cjs  0.40 kB │ gzip: 0.24 kB
27
33
  ℹ [CJS] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.cjs  0.37 kB │ gzip: 0.23 kB
28
34
  ℹ [CJS] dist/_virtual/rolldown_runtime.cjs  0.36 kB │ gzip: 0.25 kB
29
- ℹ [CJS] 18 files, total: 66.45 kB
30
- ℹ [CJS] dist/Protocol.d.cts.map 1.57 kB │ gzip: 0.70 kB
31
- ℹ [CJS] dist/Types.d.cts.map 1.41 kB │ gzip: 0.65 kB
32
- ℹ [CJS] dist/MimicServerEngine.d.cts.map 1.05 kB │ gzip: 0.48 kB
33
- ℹ [CJS] dist/Errors.d.cts.map 0.72 kB │ gzip: 0.34 kB
34
- ℹ [CJS] dist/ColdStorage.d.cts.map 0.70 kB │ gzip: 0.37 kB
35
- ℹ [CJS] dist/HotStorage.d.cts.map 0.64 kB │ gzip: 0.35 kB
36
- ℹ [CJS] dist/MimicAuthService.d.cts.map 0.61 kB │ gzip: 0.35 kB
37
- ℹ [CJS] dist/DocumentManager.d.cts.map 0.56 kB │ gzip: 0.33 kB
38
- ℹ [CJS] dist/PresenceManager.d.cts.map 0.45 kB │ gzip: 0.27 kB
39
- ℹ [CJS] dist/MimicClusterServerEngine.d.cts.map 0.25 kB │ gzip: 0.19 kB
40
- ℹ [CJS] dist/MimicServer.d.cts.map 0.22 kB │ gzip: 0.16 kB
41
- ℹ [CJS] dist/Metrics.d.cts.map 0.12 kB │ gzip: 0.12 kB
42
- ℹ [CJS] dist/index.d.cts 2.23 kB │ gzip: 0.56 kB
43
- ℹ [CJS] dist/Protocol.d.cts 5.86 kB │ gzip: 1.34 kB
44
- ℹ [CJS] dist/Types.d.cts 5.47 kB │ gzip: 1.54 kB
45
- ℹ [CJS] dist/Errors.d.cts 4.10 kB │ gzip: 0.85 kB
46
- ℹ [CJS] dist/MimicServerEngine.d.cts 3.15 kB │ gzip: 1.00 kB
47
- ℹ [CJS] dist/MimicAuthService.d.cts 2.70 kB │ gzip: 1.04 kB
48
- ℹ [CJS] dist/DocumentManager.d.cts 2.23 kB │ gzip: 0.76 kB
49
- ℹ [CJS] dist/HotStorage.d.cts 1.95 kB │ gzip: 0.83 kB
50
- ℹ [CJS] dist/ColdStorage.d.cts 1.74 kB │ gzip: 0.70 kB
51
- ℹ [CJS] dist/PresenceManager.d.cts 1.60 kB │ gzip: 0.63 kB
52
- ℹ [CJS] dist/Metrics.d.cts 1.37 kB │ gzip: 0.36 kB
53
- ℹ [CJS] dist/MimicClusterServerEngine.d.cts 0.82 kB │ gzip: 0.33 kB
54
- ℹ [CJS] dist/MimicServer.d.cts 0.74 kB │ gzip: 0.31 kB
55
- ℹ [CJS] 25 files, total: 42.28 kB
56
- ✔ Build complete in 6497ms
35
+ ℹ [CJS] dist/testing/types.cjs  0.34 kB │ gzip: 0.23 kB
36
+ ℹ [CJS] 25 files, total: 144.08 kB
37
+ ℹ [CJS] dist/Protocol.d.cts.map 1.57 kB │ gzip: 0.70 kB
38
+ ℹ [CJS] dist/Types.d.cts.map 1.41 kB │ gzip: 0.65 kB
39
+ ℹ [CJS] dist/MimicServerEngine.d.cts.map 1.09 kB │ gzip: 0.50 kB
40
+ ℹ [CJS] dist/ColdStorage.d.cts.map 0.70 kB │ gzip: 0.37 kB
41
+ ℹ [CJS] dist/DocumentManager.d.cts.map 0.69 kB │ gzip: 0.38 kB
42
+ ℹ [CJS] dist/HotStorage.d.cts.map 0.67 kB │ gzip: 0.35 kB
43
+ ℹ [CJS] dist/MimicAuthService.d.cts.map 0.61 kB │ gzip: 0.35 kB
44
+ ℹ [CJS] dist/Errors.d.cts.map 0.60 kB │ gzip: 0.32 kB
45
+ ℹ [CJS] dist/testing/HotStorageTestSuite.d.cts.map 0.48 kB │ gzip: 0.29 kB
46
+ ℹ [CJS] dist/PresenceManager.d.cts.map 0.45 kB │ gzip: 0.27 kB
47
+ ℹ [CJS] dist/testing/types.d.cts.map 0.38 kB │ gzip: 0.23 kB
48
+ ℹ [CJS] dist/testing/ColdStorageTestSuite.d.cts.map 0.35 kB │ gzip: 0.25 kB
49
+ ℹ [CJS] dist/testing/StorageIntegrationTestSuite.d.cts.map 0.31 kB │ gzip: 0.21 kB
50
+ ℹ [CJS] dist/testing/FailingStorage.d.cts.map 0.26 kB │ gzip: 0.18 kB
51
+ ℹ [CJS] dist/MimicClusterServerEngine.d.cts.map 0.25 kB │ gzip: 0.19 kB
52
+ ℹ [CJS] dist/MimicServer.d.cts.map 0.22 kB │ gzip: 0.16 kB
53
+ ℹ [CJS] dist/Metrics.d.cts.map 0.12 kB │ gzip: 0.12 kB
54
+ ℹ [CJS] dist/index.d.cts 2.23 kB │ gzip: 0.56 kB
55
+ ℹ [CJS] dist/testing/index.d.cts 0.91 kB │ gzip: 0.25 kB
56
+ ℹ [CJS] dist/Protocol.d.cts 5.86 kB │ gzip: 1.34 kB
57
+ ℹ [CJS] dist/Types.d.cts 5.47 kB │ gzip: 1.54 kB
58
+ ℹ [CJS] dist/Errors.d.cts 4.86 kB │ gzip: 1.02 kB
59
+ ℹ [CJS] dist/MimicServerEngine.d.cts 3.42 kB │ gzip: 1.06 kB
60
+ ℹ [CJS] dist/testing/types.d.cts 2.76 kB │ gzip: 1.15 kB
61
+ ℹ [CJS] dist/DocumentManager.d.cts 2.74 kB │ gzip: 0.84 kB
62
+ ℹ [CJS] dist/HotStorage.d.cts 2.72 kB │ gzip: 1.08 kB
63
+ ℹ [CJS] dist/MimicAuthService.d.cts 2.70 kB │ gzip: 1.04 kB
64
+ ℹ [CJS] dist/testing/HotStorageTestSuite.d.cts 1.82 kB │ gzip: 0.56 kB
65
+ ℹ [CJS] dist/ColdStorage.d.cts 1.74 kB │ gzip: 0.70 kB
66
+ ℹ [CJS] dist/PresenceManager.d.cts 1.60 kB │ gzip: 0.63 kB
67
+ ℹ [CJS] dist/Metrics.d.cts 1.59 kB │ gzip: 0.39 kB
68
+ ℹ [CJS] dist/testing/ColdStorageTestSuite.d.cts 1.55 kB │ gzip: 0.50 kB
69
+ ℹ [CJS] dist/testing/FailingStorage.d.cts 1.44 kB │ gzip: 0.46 kB
70
+ ℹ [CJS] dist/testing/StorageIntegrationTestSuite.d.cts 1.31 kB │ gzip: 0.53 kB
71
+ ℹ [CJS] dist/MimicClusterServerEngine.d.cts 0.82 kB │ gzip: 0.33 kB
72
+ ℹ [CJS] dist/MimicServer.d.cts 0.74 kB │ gzip: 0.32 kB
73
+ ℹ [CJS] 36 files, total: 56.45 kB
74
+ ✔ Build complete in 5943ms
57
75
  ℹ [ESM] dist/index.mjs  1.34 kB │ gzip: 0.34 kB
58
- ℹ [ESM] dist/MimicClusterServerEngine.mjs.map 35.37 kB │ gzip: 8.25 kB
59
- ℹ [ESM] dist/DocumentManager.mjs.map 21.77 kB │ gzip: 5.24 kB
76
+ ℹ [ESM] dist/testing/index.mjs  0.60 kB │ gzip: 0.19 kB
77
+ ℹ [ESM] dist/testing/HotStorageTestSuite.mjs.map 44.92 kB │ gzip: 6.52 kB
78
+ ℹ [ESM] dist/MimicClusterServerEngine.mjs.map 42.30 kB │ gzip: 9.99 kB
79
+ ℹ [ESM] dist/testing/ColdStorageTestSuite.mjs.map 31.92 kB │ gzip: 5.21 kB
80
+ ℹ [ESM] dist/DocumentManager.mjs.map 28.52 kB │ gzip: 6.84 kB
81
+ ℹ [ESM] dist/testing/StorageIntegrationTestSuite.mjs.map 24.17 kB │ gzip: 4.50 kB
82
+ ℹ [ESM] dist/testing/HotStorageTestSuite.mjs 23.90 kB │ gzip: 3.87 kB
60
83
  ℹ [ESM] dist/MimicServer.mjs.map 20.88 kB │ gzip: 5.46 kB
61
- ℹ [ESM] dist/MimicClusterServerEngine.mjs 16.72 kB │ gzip: 4.17 kB
62
- ℹ [ESM] dist/MimicServerEngine.mjs.map  9.73 kB │ gzip: 2.68 kB
84
+ ℹ [ESM] dist/MimicClusterServerEngine.mjs 20.10 kB │ gzip: 4.94 kB
85
+ ℹ [ESM] dist/testing/ColdStorageTestSuite.mjs 16.50 kB │ gzip: 3.21 kB
86
+ ℹ [ESM] dist/testing/FailingStorage.mjs.map 12.93 kB │ gzip: 2.55 kB
87
+ ℹ [ESM] dist/testing/StorageIntegrationTestSuite.mjs 12.56 kB │ gzip: 2.56 kB
88
+ ℹ [ESM] dist/DocumentManager.mjs 11.59 kB │ gzip: 3.00 kB
89
+ ℹ [ESM] dist/HotStorage.mjs.map 10.05 kB │ gzip: 2.85 kB
90
+ ℹ [ESM] dist/MimicServerEngine.mjs.map 10.01 kB │ gzip: 2.73 kB
63
91
  ℹ [ESM] dist/MimicServer.mjs  9.63 kB │ gzip: 2.78 kB
64
92
  ℹ [ESM] dist/Protocol.mjs.map  9.18 kB │ gzip: 2.15 kB
65
93
  ℹ [ESM] dist/PresenceManager.mjs.map  9.11 kB │ gzip: 2.27 kB
66
- ℹ [ESM] dist/DocumentManager.mjs  8.49 kB │ gzip: 2.26 kB
67
- ℹ [ESM] dist/HotStorage.mjs.map  6.48 kB │ gzip: 1.93 kB
94
+ ℹ [ESM] dist/testing/assertions.mjs.map  6.69 kB │ gzip: 1.78 kB
95
+ ℹ [ESM] dist/Metrics.mjs.map  6.13 kB │ gzip: 1.43 kB
68
96
  ℹ [ESM] dist/MimicAuthService.mjs.map  6.09 kB │ gzip: 1.85 kB
69
- ℹ [ESM] dist/Metrics.mjs.map  5.25 kB │ gzip: 1.22 kB
97
+ ℹ [ESM] dist/testing/FailingStorage.mjs  5.41 kB │ gzip: 1.30 kB
70
98
  ℹ [ESM] dist/ColdStorage.mjs.map  4.90 kB │ gzip: 1.52 kB
71
99
  ℹ [ESM] dist/MimicServerEngine.mjs  4.10 kB │ gzip: 1.35 kB
72
- ℹ [ESM] dist/Errors.mjs.map  3.46 kB │ gzip: 0.88 kB
100
+ ℹ [ESM] dist/Errors.mjs.map  4.00 kB │ gzip: 1.05 kB
101
+ ℹ [ESM] dist/Metrics.mjs  3.63 kB │ gzip: 1.01 kB
102
+ ℹ [ESM] dist/HotStorage.mjs  3.52 kB │ gzip: 1.22 kB
73
103
  ℹ [ESM] dist/PresenceManager.mjs  3.39 kB │ gzip: 1.01 kB
74
104
  ℹ [ESM] dist/Protocol.mjs  3.35 kB │ gzip: 1.06 kB
75
- ℹ [ESM] dist/Metrics.mjs  2.95 kB │ gzip: 0.85 kB
76
- ℹ [ESM] dist/HotStorage.mjs  2.56 kB │ gzip: 0.96 kB
105
+ ℹ [ESM] dist/testing/types.mjs.map  3.22 kB │ gzip: 1.15 kB
106
+ ℹ [ESM] dist/testing/assertions.mjs  3.14 kB │ gzip: 1.03 kB
77
107
  ℹ [ESM] dist/MimicAuthService.mjs  2.23 kB │ gzip: 0.88 kB
78
108
  ℹ [ESM] dist/ColdStorage.mjs  1.85 kB │ gzip: 0.79 kB
109
+ ℹ [ESM] dist/Errors.mjs  1.73 kB │ gzip: 0.61 kB
79
110
  ℹ [ESM] dist/Protocol.d.mts.map  1.57 kB │ gzip: 0.70 kB
80
- ℹ [ESM] dist/Errors.mjs  1.42 kB │ gzip: 0.50 kB
81
111
  ℹ [ESM] dist/Types.d.mts.map  1.41 kB │ gzip: 0.65 kB
82
- ℹ [ESM] dist/MimicServerEngine.d.mts.map  1.05 kB │ gzip: 0.48 kB
112
+ ℹ [ESM] dist/MimicServerEngine.d.mts.map  1.09 kB │ gzip: 0.50 kB
83
113
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/objectSpread2.mjs  0.90 kB │ gzip: 0.42 kB
84
- ℹ [ESM] dist/Errors.d.mts.map  0.72 kB │ gzip: 0.34 kB
85
114
  ℹ [ESM] dist/ColdStorage.d.mts.map  0.70 kB │ gzip: 0.37 kB
86
- ℹ [ESM] dist/HotStorage.d.mts.map  0.64 kB │ gzip: 0.35 kB
115
+ ℹ [ESM] dist/DocumentManager.d.mts.map  0.69 kB │ gzip: 0.38 kB
116
+ ℹ [ESM] dist/HotStorage.d.mts.map  0.67 kB │ gzip: 0.35 kB
87
117
  ℹ [ESM] dist/MimicAuthService.d.mts.map  0.61 kB │ gzip: 0.35 kB
88
- ℹ [ESM] dist/DocumentManager.d.mts.map  0.56 kB │ gzip: 0.33 kB
118
+ ℹ [ESM] dist/Errors.d.mts.map  0.60 kB │ gzip: 0.32 kB
119
+ ℹ [ESM] dist/testing/HotStorageTestSuite.d.mts.map  0.48 kB │ gzip: 0.29 kB
89
120
  ℹ [ESM] dist/_virtual/rolldown_runtime.mjs  0.47 kB │ gzip: 0.30 kB
90
121
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPrimitive.mjs  0.47 kB │ gzip: 0.30 kB
91
122
  ℹ [ESM] dist/PresenceManager.d.mts.map  0.45 kB │ gzip: 0.27 kB
92
123
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/typeof.mjs  0.43 kB │ gzip: 0.24 kB
124
+ ℹ [ESM] dist/testing/types.d.mts.map  0.38 kB │ gzip: 0.23 kB
125
+ ℹ [ESM] dist/testing/types.mjs  0.35 kB │ gzip: 0.25 kB
93
126
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/defineProperty.mjs  0.35 kB │ gzip: 0.23 kB
127
+ ℹ [ESM] dist/testing/ColdStorageTestSuite.d.mts.map  0.35 kB │ gzip: 0.25 kB
128
+ ℹ [ESM] dist/testing/StorageIntegrationTestSuite.d.mts.map  0.31 kB │ gzip: 0.21 kB
94
129
  ℹ [ESM] dist/_virtual/_@oxc-project_runtime@0.103.0/helpers/toPropertyKey.mjs  0.30 kB │ gzip: 0.21 kB
130
+ ℹ [ESM] dist/testing/FailingStorage.d.mts.map  0.26 kB │ gzip: 0.18 kB
95
131
  ℹ [ESM] dist/MimicClusterServerEngine.d.mts.map  0.25 kB │ gzip: 0.19 kB
96
132
  ℹ [ESM] dist/MimicServer.d.mts.map  0.22 kB │ gzip: 0.16 kB
97
133
  ℹ [ESM] dist/Metrics.d.mts.map  0.12 kB │ gzip: 0.12 kB
98
134
  ℹ [ESM] dist/index.d.mts  2.23 kB │ gzip: 0.56 kB
135
+ ℹ [ESM] dist/testing/index.d.mts  0.91 kB │ gzip: 0.25 kB
99
136
  ℹ [ESM] dist/Protocol.d.mts  5.86 kB │ gzip: 1.34 kB
100
137
  ℹ [ESM] dist/Types.d.mts  5.47 kB │ gzip: 1.54 kB
101
- ℹ [ESM] dist/Errors.d.mts  4.10 kB │ gzip: 0.85 kB
102
- ℹ [ESM] dist/MimicServerEngine.d.mts  3.15 kB │ gzip: 1.01 kB
138
+ ℹ [ESM] dist/Errors.d.mts  4.86 kB │ gzip: 1.02 kB
139
+ ℹ [ESM] dist/MimicServerEngine.d.mts  3.42 kB │ gzip: 1.06 kB
140
+ ℹ [ESM] dist/testing/types.d.mts  2.76 kB │ gzip: 1.15 kB
141
+ ℹ [ESM] dist/DocumentManager.d.mts  2.74 kB │ gzip: 0.84 kB
142
+ ℹ [ESM] dist/HotStorage.d.mts  2.72 kB │ gzip: 1.08 kB
103
143
  ℹ [ESM] dist/MimicAuthService.d.mts  2.70 kB │ gzip: 1.04 kB
104
- ℹ [ESM] dist/DocumentManager.d.mts  2.23 kB │ gzip: 0.76 kB
105
- ℹ [ESM] dist/HotStorage.d.mts  1.95 kB │ gzip: 0.83 kB
144
+ ℹ [ESM] dist/testing/HotStorageTestSuite.d.mts  1.82 kB │ gzip: 0.56 kB
106
145
  ℹ [ESM] dist/ColdStorage.d.mts  1.74 kB │ gzip: 0.70 kB
107
146
  ℹ [ESM] dist/PresenceManager.d.mts  1.60 kB │ gzip: 0.63 kB
108
- ℹ [ESM] dist/Metrics.d.mts  1.37 kB │ gzip: 0.36 kB
147
+ ℹ [ESM] dist/Metrics.d.mts  1.59 kB │ gzip: 0.39 kB
148
+ ℹ [ESM] dist/testing/ColdStorageTestSuite.d.mts  1.55 kB │ gzip: 0.50 kB
149
+ ℹ [ESM] dist/testing/FailingStorage.d.mts  1.44 kB │ gzip: 0.46 kB
150
+ ℹ [ESM] dist/testing/StorageIntegrationTestSuite.d.mts  1.31 kB │ gzip: 0.53 kB
109
151
  ℹ [ESM] dist/MimicClusterServerEngine.d.mts  0.82 kB │ gzip: 0.33 kB
110
152
  ℹ [ESM] dist/MimicServer.d.mts  0.74 kB │ gzip: 0.31 kB
111
- ℹ [ESM] 54 files, total: 235.47 kB
112
- ✔ Build complete in 6508ms
153
+ ℹ [ESM] 78 files, total: 463.31 kB
154
+ ✔ Build complete in 5961ms
@@ -2,6 +2,7 @@ const require_ColdStorage = require('./ColdStorage.cjs');
2
2
  const require_HotStorage = require('./HotStorage.cjs');
3
3
  const require_Metrics = require('./Metrics.cjs');
4
4
  let effect = require("effect");
5
+ let _voidhash_mimic = require("@voidhash/mimic");
5
6
  let _voidhash_mimic_server = require("@voidhash/mimic/server");
6
7
 
7
8
  //#region src/DocumentManager.ts
@@ -45,7 +46,7 @@ const layer = effect.Layer.scoped(DocumentManagerTag, effect.Effect.gen(function
45
46
  * Restore a document from storage
46
47
  */
47
48
  const restoreDocument = (documentId) => effect.Effect.gen(function* () {
48
- const storedDoc = yield* effect.Effect.catchAll(coldStorage.load(documentId), () => effect.Effect.succeed(void 0));
49
+ const storedDoc = yield* coldStorage.load(documentId);
49
50
  let initialState;
50
51
  let initialVersion = 0;
51
52
  if (storedDoc) {
@@ -77,7 +78,29 @@ const layer = effect.Layer.scoped(DocumentManagerTag, effect.Effect.gen(function
77
78
  }));
78
79
  }
79
80
  });
80
- const walEntries = yield* effect.Effect.catchAll(hotStorage.getEntries(documentId, initialVersion), () => effect.Effect.succeed([]));
81
+ const walEntries = yield* hotStorage.getEntries(documentId, initialVersion);
82
+ if (walEntries.length > 0) {
83
+ const firstWalVersion = walEntries[0].version;
84
+ const expectedFirst = initialVersion + 1;
85
+ if (firstWalVersion !== expectedFirst) {
86
+ yield* effect.Effect.logWarning("WAL version gap detected", {
87
+ documentId,
88
+ snapshotVersion: initialVersion,
89
+ firstWalVersion,
90
+ expectedFirst
91
+ });
92
+ yield* effect.Metric.increment(require_Metrics.storageVersionGaps);
93
+ }
94
+ for (let i = 1; i < walEntries.length; i++) {
95
+ const prev = walEntries[i - 1].version;
96
+ const curr = walEntries[i].version;
97
+ if (curr !== prev + 1) yield* effect.Effect.logWarning("WAL internal gap detected", {
98
+ documentId,
99
+ previousVersion: prev,
100
+ currentVersion: curr
101
+ });
102
+ }
103
+ }
81
104
  for (const entry of walEntries) {
82
105
  const result = document.submit(entry.transaction);
83
106
  if (!result.success) yield* effect.Effect.logWarning("Skipping corrupted WAL entry", {
@@ -114,33 +137,47 @@ const layer = effect.Layer.scoped(DocumentManagerTag, effect.Effect.gen(function
114
137
  return instance;
115
138
  });
116
139
  /**
117
- * Save a snapshot to ColdStorage and truncate WAL
140
+ * Save a snapshot to ColdStorage derived from WAL entries.
141
+ * This ensures snapshots are always based on durable WAL data.
142
+ * Idempotent: skips save if already snapshotted at target version.
143
+ * Truncate failures are non-fatal and will be retried on next snapshot.
118
144
  */
119
- const saveSnapshot = (documentId, instance) => effect.Effect.gen(function* () {
120
- const state = instance.document.get();
121
- const version = instance.document.getVersion();
122
- if (state === void 0) return;
145
+ const saveSnapshot = (documentId, instance, targetVersion) => effect.Effect.gen(function* () {
146
+ var _baseSnapshot$version;
147
+ if (targetVersion <= (yield* effect.Ref.get(instance.lastSnapshotVersion))) return;
148
+ const snapshotStartTime = Date.now();
149
+ const baseSnapshot = yield* coldStorage.load(documentId);
150
+ const baseVersion = (_baseSnapshot$version = baseSnapshot === null || baseSnapshot === void 0 ? void 0 : baseSnapshot.version) !== null && _baseSnapshot$version !== void 0 ? _baseSnapshot$version : 0;
151
+ const baseState = baseSnapshot === null || baseSnapshot === void 0 ? void 0 : baseSnapshot.state;
152
+ const relevantEntries = (yield* hotStorage.getEntries(documentId, baseVersion)).filter((e) => e.version <= targetVersion);
153
+ if (relevantEntries.length === 0 && !baseSnapshot) return;
154
+ let snapshotState = baseState;
155
+ for (const entry of relevantEntries) {
156
+ const tempDoc = _voidhash_mimic.Document.make(config.schema, { initialState: snapshotState });
157
+ tempDoc.apply(entry.transaction.ops);
158
+ snapshotState = tempDoc.get();
159
+ }
160
+ if (snapshotState === void 0) return;
161
+ const snapshotVersion = relevantEntries.length > 0 ? relevantEntries[relevantEntries.length - 1].version : baseVersion;
162
+ if (snapshotVersion <= (yield* effect.Ref.get(instance.lastSnapshotVersion))) return;
123
163
  const storedDoc = {
124
- state,
125
- version,
164
+ state: snapshotState,
165
+ version: snapshotVersion,
126
166
  schemaVersion: SCHEMA_VERSION,
127
167
  savedAt: Date.now()
128
168
  };
129
- const snapshotStartTime = Date.now();
130
- yield* effect.Effect.catchAll(coldStorage.save(documentId, storedDoc), (e) => effect.Effect.logError("Failed to save snapshot", {
131
- documentId,
132
- error: e
133
- }));
169
+ yield* coldStorage.save(documentId, storedDoc);
134
170
  const snapshotDuration = Date.now() - snapshotStartTime;
135
171
  yield* effect.Metric.increment(require_Metrics.storageSnapshots);
136
172
  yield* effect.Metric.update(require_Metrics.storageSnapshotLatency, snapshotDuration);
137
- yield* effect.Effect.catchAll(hotStorage.truncate(documentId, version), (e) => effect.Effect.logError("Failed to truncate WAL", {
173
+ yield* effect.Ref.set(instance.lastSnapshotVersion, snapshotVersion);
174
+ yield* effect.Ref.set(instance.lastSnapshotTime, Date.now());
175
+ yield* effect.Ref.set(instance.transactionsSinceSnapshot, 0);
176
+ yield* effect.Effect.catchAll(hotStorage.truncate(documentId, snapshotVersion), (e) => effect.Effect.logWarning("WAL truncate failed - will retry on next snapshot", {
138
177
  documentId,
178
+ version: snapshotVersion,
139
179
  error: e
140
180
  }));
141
- yield* effect.Ref.set(instance.lastSnapshotVersion, version);
142
- yield* effect.Ref.set(instance.lastSnapshotTime, Date.now());
143
- yield* effect.Ref.set(instance.transactionsSinceSnapshot, 0);
144
181
  });
145
182
  /**
146
183
  * Check if snapshot should be triggered
@@ -149,13 +186,14 @@ const layer = effect.Layer.scoped(DocumentManagerTag, effect.Effect.gen(function
149
186
  const txCount = yield* effect.Ref.get(instance.transactionsSinceSnapshot);
150
187
  const lastTime = yield* effect.Ref.get(instance.lastSnapshotTime);
151
188
  const now = Date.now();
189
+ const currentVersion = instance.document.getVersion();
152
190
  const intervalMs = effect.Duration.toMillis(config.snapshot.interval);
153
191
  if (txCount >= config.snapshot.transactionThreshold) {
154
- yield* saveSnapshot(documentId, instance);
192
+ yield* saveSnapshot(documentId, instance, currentVersion);
155
193
  return;
156
194
  }
157
195
  if (now - lastTime >= intervalMs) {
158
- yield* saveSnapshot(documentId, instance);
196
+ yield* saveSnapshot(documentId, instance, currentVersion);
159
197
  return;
160
198
  }
161
199
  });
@@ -165,7 +203,11 @@ const layer = effect.Layer.scoped(DocumentManagerTag, effect.Effect.gen(function
165
203
  const now = Date.now();
166
204
  const maxIdleMs = effect.Duration.toMillis(config.maxIdleTime);
167
205
  for (const [documentId, instance] of current) if (now - (yield* effect.Ref.get(instance.lastActivityTime)) >= maxIdleMs) {
168
- yield* saveSnapshot(documentId, instance);
206
+ const currentVersion = instance.document.getVersion();
207
+ yield* effect.Effect.catchAll(saveSnapshot(documentId, instance, currentVersion), (e) => effect.Effect.logError("Failed to save snapshot during eviction", {
208
+ documentId,
209
+ error: e
210
+ }));
169
211
  yield* effect.Ref.update(store, (map) => effect.HashMap.remove(map, documentId));
170
212
  yield* effect.Metric.increment(require_Metrics.documentsEvicted);
171
213
  yield* effect.Metric.incrementBy(require_Metrics.documentsActive, -1);
@@ -175,32 +217,60 @@ const layer = effect.Layer.scoped(DocumentManagerTag, effect.Effect.gen(function
175
217
  });
176
218
  yield* effect.Effect.addFinalizer(() => effect.Effect.gen(function* () {
177
219
  const current = yield* effect.Ref.get(store);
178
- for (const [documentId, instance] of current) yield* saveSnapshot(documentId, instance);
220
+ for (const [documentId, instance] of current) {
221
+ const currentVersion = instance.document.getVersion();
222
+ yield* effect.Effect.catchAll(saveSnapshot(documentId, instance, currentVersion), (e) => effect.Effect.logError("Failed to save snapshot during shutdown", {
223
+ documentId,
224
+ error: e
225
+ }));
226
+ }
179
227
  yield* effect.Effect.logInfo("DocumentManager shutdown complete");
180
228
  }));
181
229
  return {
182
230
  submit: (documentId, transaction) => effect.Effect.gen(function* () {
183
231
  const instance = yield* getOrCreateDocument(documentId);
184
232
  const submitStartTime = Date.now();
185
- const result = instance.document.submit(transaction);
186
- const latency = Date.now() - submitStartTime;
187
- yield* effect.Metric.update(require_Metrics.transactionsLatency, latency);
188
- if (result.success) {
189
- yield* effect.Metric.increment(require_Metrics.transactionsProcessed);
190
- const walEntry = {
191
- transaction,
192
- version: result.version,
193
- timestamp: Date.now()
233
+ const validation = instance.document.validate(transaction);
234
+ if (!validation.valid) {
235
+ yield* effect.Metric.increment(require_Metrics.transactionsRejected);
236
+ const latency$1 = Date.now() - submitStartTime;
237
+ yield* effect.Metric.update(require_Metrics.transactionsLatency, latency$1);
238
+ return {
239
+ success: false,
240
+ reason: validation.reason
194
241
  };
195
- yield* effect.Effect.catchAll(hotStorage.append(documentId, walEntry), (e) => effect.Effect.logError("Failed to append to WAL", {
242
+ }
243
+ const walEntry = {
244
+ transaction,
245
+ version: validation.nextVersion,
246
+ timestamp: Date.now()
247
+ };
248
+ const appendResult = yield* effect.Effect.either(hotStorage.appendWithCheck(documentId, walEntry, validation.nextVersion));
249
+ if (appendResult._tag === "Left") {
250
+ yield* effect.Effect.logError("WAL append failed", {
196
251
  documentId,
197
- error: e
198
- }));
199
- yield* effect.Metric.increment(require_Metrics.storageWalAppends);
200
- yield* effect.Ref.update(instance.transactionsSinceSnapshot, (n) => n + 1);
201
- yield* checkSnapshotTriggers(documentId, instance);
202
- } else yield* effect.Metric.increment(require_Metrics.transactionsRejected);
203
- return result;
252
+ version: validation.nextVersion,
253
+ error: appendResult.left
254
+ });
255
+ yield* effect.Metric.increment(require_Metrics.walAppendFailures);
256
+ const latency$1 = Date.now() - submitStartTime;
257
+ yield* effect.Metric.update(require_Metrics.transactionsLatency, latency$1);
258
+ return {
259
+ success: false,
260
+ reason: "Storage unavailable. Please retry."
261
+ };
262
+ }
263
+ instance.document.apply(transaction);
264
+ const latency = Date.now() - submitStartTime;
265
+ yield* effect.Metric.update(require_Metrics.transactionsLatency, latency);
266
+ yield* effect.Metric.increment(require_Metrics.transactionsProcessed);
267
+ yield* effect.Metric.increment(require_Metrics.storageWalAppends);
268
+ yield* effect.Ref.update(instance.transactionsSinceSnapshot, (n) => n + 1);
269
+ yield* checkSnapshotTriggers(documentId, instance);
270
+ return {
271
+ success: true,
272
+ version: validation.nextVersion
273
+ };
204
274
  }),
205
275
  getSnapshot: (documentId) => effect.Effect.gen(function* () {
206
276
  return (yield* getOrCreateDocument(documentId)).document.getSnapshot();
@@ -1,4 +1,5 @@
1
1
  import { ResolvedConfig } from "./Types.cjs";
2
+ import { ColdStorageError, HotStorageError } from "./Errors.cjs";
2
3
  import { ServerBroadcast, SnapshotMessage } from "./Protocol.cjs";
3
4
  import { ColdStorageTag } from "./ColdStorage.cjs";
4
5
  import { HotStorageTag } from "./HotStorage.cjs";
@@ -17,22 +18,29 @@ type SubmitResult = {
17
18
  readonly success: false;
18
19
  readonly reason: string;
19
20
  };
21
+ /**
22
+ * Error type for DocumentManager operations
23
+ */
24
+ type DocumentManagerError = ColdStorageError | HotStorageError;
20
25
  /**
21
26
  * Internal service for managing document lifecycle.
22
27
  */
23
28
  interface DocumentManager {
24
29
  /**
25
30
  * Submit a transaction to a document.
31
+ * May fail with ColdStorageError or HotStorageError if storage is unavailable.
26
32
  */
27
- readonly submit: (documentId: string, transaction: Transaction.Transaction) => Effect.Effect<SubmitResult>;
33
+ readonly submit: (documentId: string, transaction: Transaction.Transaction) => Effect.Effect<SubmitResult, DocumentManagerError>;
28
34
  /**
29
35
  * Get a snapshot of a document.
36
+ * May fail with ColdStorageError or HotStorageError if storage is unavailable.
30
37
  */
31
- readonly getSnapshot: (documentId: string) => Effect.Effect<SnapshotMessage>;
38
+ readonly getSnapshot: (documentId: string) => Effect.Effect<SnapshotMessage, DocumentManagerError>;
32
39
  /**
33
40
  * Subscribe to broadcasts for a document.
41
+ * May fail with ColdStorageError or HotStorageError if storage is unavailable.
34
42
  */
35
- readonly subscribe: (documentId: string) => Effect.Effect<Stream.Stream<ServerBroadcast>, never, Scope.Scope>;
43
+ readonly subscribe: (documentId: string) => Effect.Effect<Stream.Stream<ServerBroadcast>, DocumentManagerError, Scope.Scope>;
36
44
  /**
37
45
  * Touch a document to update its last activity time.
38
46
  * Call this on any client activity to prevent idle GC.
@@ -55,5 +63,5 @@ declare const DocumentManager: {
55
63
  layer: Layer.Layer<DocumentManagerTag, never, ColdStorageTag | HotStorageTag | DocumentManagerConfigTag>;
56
64
  };
57
65
  //#endregion
58
- export { DocumentManager, DocumentManagerConfigTag, DocumentManagerTag, SubmitResult };
66
+ export { DocumentManager, DocumentManagerConfigTag, DocumentManagerError, DocumentManagerTag, SubmitResult };
59
67
  //# sourceMappingURL=DocumentManager.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentManager.d.cts","names":[],"sources":["../src/DocumentManager.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;AAgF0C,KApC9B,YAAA,GAoCqC;EAAM,SAAA,OAAA,EAAA,IAAA;EACtD,SAAA,OAAA,EAAA,MAAA;;;;;AASD;AAE2C;;UArC1B,eAAA;;;;EAoEJ,SAAA,MAAA,EAAA,CAAA,UAAyB,EAAA,MAAA,EAAA,WAAQ,EA9D7B,WAAA,CAAY,WAgEwC,EAAA,GA/D9D,MAAA,CAAO,MA+DuD,CA/DhD,YA+DgD,CAAA;EAwXxD;;;gDAlbmC,MAAA,CAAO,OAAO;;;;8CAOvD,MAAA,CAAO,OAAO,MAAA,CAAO,OAAO,yBAAyB,KAAA,CAAM;;;;;0CAMxB,MAAA,CAAO;;cAChD;;;;cASY,kBAAA,SAA2B,uBAAA;cAEG;;;;cA+B9B,wBAAA,SAAiC,6BAAA;cA0XjC"}
1
+ {"version":3,"file":"DocumentManager.d.cts","names":[],"sources":["../src/DocumentManager.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAiFqB,KAtCT,YAAA,GAsCgB;EAAyB,SAAA,OAAA,EAAA,IAAA;EAAsB,SAAM,OAAA,EAAA,MAAA;CAA1E,GAAA;EAMmC,SAAO,OAAA,EAAA,KAAA;EAAM,SAAA,MAAA,EAAA,MAAA;AACtD,CAAA;;;;KAlCW,oBAAA,GAAuB,mBAAmB;AA2CtD;AAE2C;;UAxC1B,eAAA;;;;AAuEjB;EA+da,SAAA,MAAA,EAAA,CAIZ,UAAA,EAAA,MAAA,EAAA,WAAA,EAniBgB,WAAA,CAAY,WAmiB5B,EAAA,GAliBM,MAAA,CAAO,MAkiBb,CAliBoB,YAkiBpB,EAliBkC,oBAkiBlC,CAAA;;;;;gDA5hB+C,MAAA,CAAO,OAAO,iBAAiB;;;;;8CAQxE,MAAA,CAAO,OAAO,MAAA,CAAO,OAAO,kBAAkB,sBAAsB,KAAA,CAAM;;;;;0CAMvC,MAAA,CAAO;;cAChD;;;;cASY,kBAAA,SAA2B,uBAAA;cAEG;;;;cA+B9B,wBAAA,SAAiC,6BAAA;cA+djC"}
@@ -1,4 +1,5 @@
1
1
  import { ResolvedConfig } from "./Types.mjs";
2
+ import { ColdStorageError, HotStorageError } from "./Errors.mjs";
2
3
  import { ServerBroadcast, SnapshotMessage } from "./Protocol.mjs";
3
4
  import { ColdStorageTag } from "./ColdStorage.mjs";
4
5
  import { HotStorageTag } from "./HotStorage.mjs";
@@ -17,22 +18,29 @@ type SubmitResult = {
17
18
  readonly success: false;
18
19
  readonly reason: string;
19
20
  };
21
+ /**
22
+ * Error type for DocumentManager operations
23
+ */
24
+ type DocumentManagerError = ColdStorageError | HotStorageError;
20
25
  /**
21
26
  * Internal service for managing document lifecycle.
22
27
  */
23
28
  interface DocumentManager {
24
29
  /**
25
30
  * Submit a transaction to a document.
31
+ * May fail with ColdStorageError or HotStorageError if storage is unavailable.
26
32
  */
27
- readonly submit: (documentId: string, transaction: Transaction.Transaction) => Effect.Effect<SubmitResult>;
33
+ readonly submit: (documentId: string, transaction: Transaction.Transaction) => Effect.Effect<SubmitResult, DocumentManagerError>;
28
34
  /**
29
35
  * Get a snapshot of a document.
36
+ * May fail with ColdStorageError or HotStorageError if storage is unavailable.
30
37
  */
31
- readonly getSnapshot: (documentId: string) => Effect.Effect<SnapshotMessage>;
38
+ readonly getSnapshot: (documentId: string) => Effect.Effect<SnapshotMessage, DocumentManagerError>;
32
39
  /**
33
40
  * Subscribe to broadcasts for a document.
41
+ * May fail with ColdStorageError or HotStorageError if storage is unavailable.
34
42
  */
35
- readonly subscribe: (documentId: string) => Effect.Effect<Stream.Stream<ServerBroadcast>, never, Scope.Scope>;
43
+ readonly subscribe: (documentId: string) => Effect.Effect<Stream.Stream<ServerBroadcast>, DocumentManagerError, Scope.Scope>;
36
44
  /**
37
45
  * Touch a document to update its last activity time.
38
46
  * Call this on any client activity to prevent idle GC.
@@ -55,5 +63,5 @@ declare const DocumentManager: {
55
63
  layer: Layer.Layer<DocumentManagerTag, never, ColdStorageTag | HotStorageTag | DocumentManagerConfigTag>;
56
64
  };
57
65
  //#endregion
58
- export { DocumentManager, DocumentManagerConfigTag, DocumentManagerTag, SubmitResult };
66
+ export { DocumentManager, DocumentManagerConfigTag, DocumentManagerError, DocumentManagerTag, SubmitResult };
59
67
  //# sourceMappingURL=DocumentManager.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DocumentManager.d.mts","names":[],"sources":["../src/DocumentManager.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;AAgF0C,KApC9B,YAAA,GAoCqC;EAAM,SAAA,OAAA,EAAA,IAAA;EACtD,SAAA,OAAA,EAAA,MAAA;;;;;AASD;AAE2C;;UArC1B,eAAA;;;;EAoEJ,SAAA,MAAA,EAAA,CAAA,UAAyB,EAAA,MAAA,EAAA,WAAQ,EA9D7B,WAAA,CAAY,WAgEwC,EAAA,GA/D9D,MAAA,CAAO,MA+DuD,CA/DhD,YA+DgD,CAAA;EAwXxD;;;gDAlbmC,MAAA,CAAO,OAAO;;;;8CAOvD,MAAA,CAAO,OAAO,MAAA,CAAO,OAAO,yBAAyB,KAAA,CAAM;;;;;0CAMxB,MAAA,CAAO;;cAChD;;;;cASY,kBAAA,SAA2B,uBAAA;cAEG;;;;cA+B9B,wBAAA,SAAiC,6BAAA;cA0XjC"}
1
+ {"version":3,"file":"DocumentManager.d.mts","names":[],"sources":["../src/DocumentManager.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;;AAiFqB,KAtCT,YAAA,GAsCgB;EAAyB,SAAA,OAAA,EAAA,IAAA;EAAsB,SAAM,OAAA,EAAA,MAAA;CAA1E,GAAA;EAMmC,SAAO,OAAA,EAAA,KAAA;EAAM,SAAA,MAAA,EAAA,MAAA;AACtD,CAAA;;;;KAlCW,oBAAA,GAAuB,mBAAmB;AA2CtD;AAE2C;;UAxC1B,eAAA;;;;AAuEjB;EA+da,SAAA,MAAA,EAAA,CAIZ,UAAA,EAAA,MAAA,EAAA,WAAA,EAniBgB,WAAA,CAAY,WAmiB5B,EAAA,GAliBM,MAAA,CAAO,MAkiBb,CAliBoB,YAkiBpB,EAliBkC,oBAkiBlC,CAAA;;;;;gDA5hB+C,MAAA,CAAO,OAAO,iBAAiB;;;;;8CAQxE,MAAA,CAAO,OAAO,MAAA,CAAO,OAAO,kBAAkB,sBAAsB,KAAA,CAAM;;;;;0CAMvC,MAAA,CAAO;;cAChD;;;;cASY,kBAAA,SAA2B,uBAAA;cAEG;;;;cA+B9B,wBAAA,SAAiC,6BAAA;cA+djC"}