@evolu/common 8.13.0 → 8.15.0

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 (205) hide show
  1. package/dist/src/Crypto.d.ts +2 -1
  2. package/dist/src/Crypto.d.ts.map +1 -1
  3. package/dist/src/Redacted.d.ts +19 -39
  4. package/dist/src/Redacted.d.ts.map +1 -1
  5. package/dist/src/Redacted.js +18 -33
  6. package/dist/src/Type.d.ts +161 -0
  7. package/dist/src/Type.d.ts.map +1 -1
  8. package/dist/src/Type.js +152 -2
  9. package/dist/src/WebSocket.d.ts +16 -1
  10. package/dist/src/WebSocket.d.ts.map +1 -1
  11. package/dist/src/WebSocket.js +14 -2
  12. package/dist/src/intl/_en.d.ts +5 -1
  13. package/dist/src/intl/_en.d.ts.map +1 -1
  14. package/dist/src/intl/_en.js +4 -0
  15. package/dist/src/intl/ar.d.ts +5 -1
  16. package/dist/src/intl/ar.d.ts.map +1 -1
  17. package/dist/src/intl/ar.js +4 -0
  18. package/dist/src/intl/bn.d.ts +5 -1
  19. package/dist/src/intl/bn.d.ts.map +1 -1
  20. package/dist/src/intl/bn.js +4 -0
  21. package/dist/src/intl/ca.d.ts +5 -1
  22. package/dist/src/intl/ca.d.ts.map +1 -1
  23. package/dist/src/intl/ca.js +4 -0
  24. package/dist/src/intl/cs.d.ts +5 -1
  25. package/dist/src/intl/cs.d.ts.map +1 -1
  26. package/dist/src/intl/cs.js +4 -0
  27. package/dist/src/intl/da.d.ts +5 -1
  28. package/dist/src/intl/da.d.ts.map +1 -1
  29. package/dist/src/intl/da.js +4 -0
  30. package/dist/src/intl/de.d.ts +5 -1
  31. package/dist/src/intl/de.d.ts.map +1 -1
  32. package/dist/src/intl/de.js +4 -0
  33. package/dist/src/intl/el.d.ts +5 -1
  34. package/dist/src/intl/el.d.ts.map +1 -1
  35. package/dist/src/intl/el.js +4 -0
  36. package/dist/src/intl/es.d.ts +5 -1
  37. package/dist/src/intl/es.d.ts.map +1 -1
  38. package/dist/src/intl/es.js +4 -0
  39. package/dist/src/intl/fa.d.ts +5 -1
  40. package/dist/src/intl/fa.d.ts.map +1 -1
  41. package/dist/src/intl/fa.js +4 -0
  42. package/dist/src/intl/fi.d.ts +5 -1
  43. package/dist/src/intl/fi.d.ts.map +1 -1
  44. package/dist/src/intl/fi.js +4 -0
  45. package/dist/src/intl/fil.d.ts +5 -1
  46. package/dist/src/intl/fil.d.ts.map +1 -1
  47. package/dist/src/intl/fil.js +4 -0
  48. package/dist/src/intl/fr.d.ts +5 -1
  49. package/dist/src/intl/fr.d.ts.map +1 -1
  50. package/dist/src/intl/fr.js +4 -0
  51. package/dist/src/intl/he.d.ts +5 -1
  52. package/dist/src/intl/he.d.ts.map +1 -1
  53. package/dist/src/intl/he.js +4 -0
  54. package/dist/src/intl/hi.d.ts +5 -1
  55. package/dist/src/intl/hi.d.ts.map +1 -1
  56. package/dist/src/intl/hi.js +4 -0
  57. package/dist/src/intl/hr.d.ts +5 -1
  58. package/dist/src/intl/hr.d.ts.map +1 -1
  59. package/dist/src/intl/hr.js +4 -0
  60. package/dist/src/intl/hu.d.ts +3 -1
  61. package/dist/src/intl/hu.d.ts.map +1 -1
  62. package/dist/src/intl/hu.js +2 -0
  63. package/dist/src/intl/id.d.ts +5 -1
  64. package/dist/src/intl/id.d.ts.map +1 -1
  65. package/dist/src/intl/id.js +4 -0
  66. package/dist/src/intl/it.d.ts +5 -1
  67. package/dist/src/intl/it.d.ts.map +1 -1
  68. package/dist/src/intl/it.js +4 -0
  69. package/dist/src/intl/ja.d.ts +5 -1
  70. package/dist/src/intl/ja.d.ts.map +1 -1
  71. package/dist/src/intl/ja.js +4 -0
  72. package/dist/src/intl/ko.d.ts +5 -1
  73. package/dist/src/intl/ko.d.ts.map +1 -1
  74. package/dist/src/intl/ko.js +4 -0
  75. package/dist/src/intl/ml.d.ts +5 -1
  76. package/dist/src/intl/ml.d.ts.map +1 -1
  77. package/dist/src/intl/ml.js +4 -0
  78. package/dist/src/intl/mr.d.ts +5 -1
  79. package/dist/src/intl/mr.d.ts.map +1 -1
  80. package/dist/src/intl/mr.js +4 -0
  81. package/dist/src/intl/ms.d.ts +5 -1
  82. package/dist/src/intl/ms.d.ts.map +1 -1
  83. package/dist/src/intl/ms.js +4 -0
  84. package/dist/src/intl/nb.d.ts +3 -1
  85. package/dist/src/intl/nb.d.ts.map +1 -1
  86. package/dist/src/intl/nb.js +2 -0
  87. package/dist/src/intl/nl.d.ts +5 -1
  88. package/dist/src/intl/nl.d.ts.map +1 -1
  89. package/dist/src/intl/nl.js +4 -0
  90. package/dist/src/intl/pa.d.ts +5 -1
  91. package/dist/src/intl/pa.d.ts.map +1 -1
  92. package/dist/src/intl/pa.js +4 -0
  93. package/dist/src/intl/pl.d.ts +4 -0
  94. package/dist/src/intl/pl.d.ts.map +1 -1
  95. package/dist/src/intl/pl.js +4 -0
  96. package/dist/src/intl/pt-BR.d.ts +5 -1
  97. package/dist/src/intl/pt-BR.d.ts.map +1 -1
  98. package/dist/src/intl/pt-BR.js +4 -0
  99. package/dist/src/intl/pt.d.ts +5 -1
  100. package/dist/src/intl/pt.d.ts.map +1 -1
  101. package/dist/src/intl/pt.js +4 -0
  102. package/dist/src/intl/ro.d.ts +5 -1
  103. package/dist/src/intl/ro.d.ts.map +1 -1
  104. package/dist/src/intl/ro.js +4 -0
  105. package/dist/src/intl/sk.d.ts +5 -1
  106. package/dist/src/intl/sk.d.ts.map +1 -1
  107. package/dist/src/intl/sk.js +4 -0
  108. package/dist/src/intl/sl.d.ts +5 -1
  109. package/dist/src/intl/sl.d.ts.map +1 -1
  110. package/dist/src/intl/sl.js +4 -0
  111. package/dist/src/intl/sv.d.ts +5 -1
  112. package/dist/src/intl/sv.d.ts.map +1 -1
  113. package/dist/src/intl/sv.js +4 -0
  114. package/dist/src/intl/sw.d.ts +2 -0
  115. package/dist/src/intl/sw.d.ts.map +1 -1
  116. package/dist/src/intl/sw.js +2 -0
  117. package/dist/src/intl/ta.d.ts +5 -1
  118. package/dist/src/intl/ta.d.ts.map +1 -1
  119. package/dist/src/intl/ta.js +4 -0
  120. package/dist/src/intl/te.d.ts +5 -1
  121. package/dist/src/intl/te.d.ts.map +1 -1
  122. package/dist/src/intl/te.js +4 -0
  123. package/dist/src/intl/th.d.ts +5 -1
  124. package/dist/src/intl/th.d.ts.map +1 -1
  125. package/dist/src/intl/th.js +4 -0
  126. package/dist/src/intl/tr.d.ts +5 -1
  127. package/dist/src/intl/tr.d.ts.map +1 -1
  128. package/dist/src/intl/tr.js +4 -0
  129. package/dist/src/intl/uk.d.ts +5 -1
  130. package/dist/src/intl/uk.d.ts.map +1 -1
  131. package/dist/src/intl/uk.js +4 -0
  132. package/dist/src/intl/ur.d.ts +5 -1
  133. package/dist/src/intl/ur.d.ts.map +1 -1
  134. package/dist/src/intl/ur.js +4 -0
  135. package/dist/src/intl/vi.d.ts +5 -1
  136. package/dist/src/intl/vi.d.ts.map +1 -1
  137. package/dist/src/intl/vi.js +4 -0
  138. package/dist/src/intl/zh-CN.d.ts +5 -1
  139. package/dist/src/intl/zh-CN.d.ts.map +1 -1
  140. package/dist/src/intl/zh-CN.js +4 -0
  141. package/dist/src/intl/zh-TW.d.ts +5 -1
  142. package/dist/src/intl/zh-TW.d.ts.map +1 -1
  143. package/dist/src/intl/zh-TW.js +4 -0
  144. package/dist/src/local-first/Evolu.d.ts +66 -2
  145. package/dist/src/local-first/Evolu.d.ts.map +1 -1
  146. package/dist/src/local-first/Evolu.js +28 -4
  147. package/dist/src/local-first/Shared.d.ts +46 -39
  148. package/dist/src/local-first/Shared.d.ts.map +1 -1
  149. package/dist/src/local-first/Shared.js +30 -19
  150. package/package.json +1 -1
  151. package/src/Crypto.ts +2 -1
  152. package/src/Redacted.test.ts +231 -0
  153. package/src/Redacted.ts +36 -47
  154. package/src/Type.test.ts +166 -0
  155. package/src/Type.ts +198 -2
  156. package/src/WebSocket.ts +33 -4
  157. package/src/intl/_en.ts +10 -0
  158. package/src/intl/ar.ts +8 -0
  159. package/src/intl/bn.ts +10 -0
  160. package/src/intl/ca.ts +10 -0
  161. package/src/intl/cs.ts +10 -0
  162. package/src/intl/da.ts +10 -0
  163. package/src/intl/de.ts +10 -0
  164. package/src/intl/el.ts +10 -0
  165. package/src/intl/es.ts +10 -0
  166. package/src/intl/fa.ts +10 -0
  167. package/src/intl/fi.ts +10 -0
  168. package/src/intl/fil.ts +10 -0
  169. package/src/intl/fr.ts +10 -0
  170. package/src/intl/he.ts +10 -0
  171. package/src/intl/hi.ts +10 -0
  172. package/src/intl/hr.ts +10 -0
  173. package/src/intl/hu.ts +6 -0
  174. package/src/intl/id.ts +10 -0
  175. package/src/intl/intl.test.ts +88 -0
  176. package/src/intl/it.ts +10 -0
  177. package/src/intl/ja.ts +10 -0
  178. package/src/intl/ko.ts +10 -0
  179. package/src/intl/ml.ts +10 -0
  180. package/src/intl/mr.ts +10 -0
  181. package/src/intl/ms.ts +8 -0
  182. package/src/intl/nb.ts +6 -0
  183. package/src/intl/nl.ts +10 -0
  184. package/src/intl/pa.ts +10 -0
  185. package/src/intl/pl.ts +12 -0
  186. package/src/intl/pt-BR.ts +10 -0
  187. package/src/intl/pt.ts +8 -0
  188. package/src/intl/ro.ts +10 -0
  189. package/src/intl/sk.ts +8 -0
  190. package/src/intl/sl.ts +10 -0
  191. package/src/intl/sv.ts +10 -0
  192. package/src/intl/sw.ts +4 -0
  193. package/src/intl/ta.ts +10 -0
  194. package/src/intl/te.ts +10 -0
  195. package/src/intl/th.ts +10 -0
  196. package/src/intl/tr.ts +10 -0
  197. package/src/intl/uk.ts +10 -0
  198. package/src/intl/ur.ts +8 -0
  199. package/src/intl/vi.ts +8 -0
  200. package/src/intl/zh-CN.ts +10 -0
  201. package/src/intl/zh-TW.ts +10 -0
  202. package/src/local-first/Evolu.test.ts +162 -18
  203. package/src/local-first/Evolu.ts +102 -6
  204. package/src/local-first/Shared.test.ts +113 -30
  205. package/src/local-first/Shared.ts +73 -57
@@ -1 +1 @@
1
- {"version":3,"file":"Shared.d.ts","sourceRoot":"","sources":["../../../src/local-first/Shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Shared.d.ts","sourceRoot":"","sources":["../../../src/local-first/Shared.ts"],"names":[],"mappings":"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"}
@@ -69,13 +69,20 @@
69
69
  *
70
70
  * ## Storage
71
71
  *
72
- * A platform that can lack persistent storage, as a browser does in Safari's
73
- * Private Browsing, provides {@link PersistentStorageDep}. The worker checks it
74
- * once, after it takes the build lock and before any DbWorker starts. Without
75
- * persistent storage, every DbWorker it starts keeps its database in memory,
76
- * replacements included, and each tab that connects is told with
77
- * `StorageUnavailable`. The decision holds for the worker's lifetime, so all
78
- * its tabs see one mode, and the next worker checks again.
72
+ * The platform tells the worker with {@link DevicePersistenceDep} what it can
73
+ * promise about stored databases. The worker asks once, after it takes the
74
+ * build lock and before any DbWorker starts. A browser checks whether it can
75
+ * open the origin private file system, which Safari's Private Browsing and
76
+ * Firefox's private windows refuse. Without persistent storage, every DbWorker
77
+ * the worker starts keeps its database in memory, replacements included. The
78
+ * decision holds for the worker's lifetime, so all its tabs see one mode, and
79
+ * the next worker checks again.
80
+ *
81
+ * A tenant tells each instance it adds its {@link Evolu.devicePersistence}:
82
+ * `NotPersisted` when its database is kept in memory, because of the platform
83
+ * or {@link EvoluConfig.memoryOnly}, otherwise what the platform promised.
84
+ * Instances of one name share the tenant, so a later instance gets the mode the
85
+ * first one chose.
79
86
  *
80
87
  * The check cannot tell a private session from a storage failure, but memory
81
88
  * loses nothing that refusing to start would have kept, and the persistent
@@ -806,9 +813,6 @@ export const initSharedWorker = (self) => async (run) => {
806
813
  workerId,
807
814
  syncStateChannelName,
808
815
  });
809
- if (isPersistentStorageUnavailable) {
810
- port.postMessage({ type: "StorageUnavailable" });
811
- }
812
816
  });
813
817
  };
814
818
  // Held while this worker runs. Its DbWorkers stop once they can take it,
@@ -821,11 +825,10 @@ export const initSharedWorker = (self) => async (run) => {
821
825
  // Builds.
822
826
  disposer.use(await run.ok(acquireLeaderLock("tab")));
823
827
  starting.dispose();
824
- // Checked once, before any DbWorker starts, so every DbWorker of this
825
- // worker, replacements included, keeps its database in memory; see
826
- // Storage.
827
- const isPersistentStorageUnavailable = deps.isPersistentStorageAvailable !== undefined &&
828
- !(await deps.isPersistentStorageAvailable());
828
+ // Checked once, before any DbWorker starts, so without persistent
829
+ // storage every DbWorker of this worker, replacements included, keeps its
830
+ // database in memory; see Storage.
831
+ const platformDevicePersistence = await deps.getDevicePersistence();
829
832
  disposer.defer(deps.consoleStoreOutputEntry.subscribe(() => {
830
833
  const entry = deps.consoleStoreOutputEntry.get();
831
834
  if (entry)
@@ -1193,9 +1196,11 @@ export const initSharedWorker = (self) => async (run) => {
1193
1196
  tabLeaderPortStore,
1194
1197
  transports,
1195
1198
  }));
1196
- const tenantsByName = disposer.use(await sharedWorkerRun.ok(createSharedResourceByKey((message) => createEvoluTenant(isPersistentStorageUnavailable
1197
- ? { ...message, memoryOnly: true }
1198
- : message, currentTenantsByName, workerId), {
1199
+ const tenantsByName = disposer.use(await sharedWorkerRun.ok(createSharedResourceByKey((message) => {
1200
+ const memoryOnly = message.memoryOnly ||
1201
+ platformDevicePersistence === "NotPersisted";
1202
+ return createEvoluTenant({ ...message, memoryOnly }, memoryOnly ? "NotPersisted" : platformDevicePersistence, currentTenantsByName, workerId);
1203
+ }, {
1199
1204
  idleDisposeAfter: "3s",
1200
1205
  lookup: (message) => message.name,
1201
1206
  })));
@@ -1216,7 +1221,7 @@ export const initSharedWorker = (self) => async (run) => {
1216
1221
  await result_1;
1217
1222
  }
1218
1223
  };
1219
- const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, memoryOnly, }, currentTenantsByName, workerId) => async (run) => {
1224
+ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, memoryOnly, }, devicePersistence, currentTenantsByName, workerId) => async (run) => {
1220
1225
  const env_3 = { stack: [], error: void 0, hasError: false };
1221
1226
  try {
1222
1227
  const disposer = __addDisposableResource(env_3, new AsyncDisposableStack(), true);
@@ -2107,6 +2112,12 @@ const createEvoluTenant = ({ name, consoleLevel, sqliteSchema, encryptionKey, me
2107
2112
  disposer.defer(() => {
2108
2113
  instance.port.onMessage = null;
2109
2114
  });
2115
+ // Instances of one name share the tenant, so each learns the mode
2116
+ // the first one chose.
2117
+ instance.port.postMessage({
2118
+ type: "OnDevicePersistence",
2119
+ devicePersistence,
2120
+ });
2110
2121
  // The main-thread Evolu instance holds this per-instance leader lock
2111
2122
  // while it is alive. Acquiring the same lock here means the main
2112
2123
  // thread instance was disposed or its tab closed, so the tenant-side
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@evolu/common",
3
- "version": "8.13.0",
3
+ "version": "8.15.0",
4
4
  "description": "TypeScript library and local-first platform",
5
5
  "keywords": [
6
6
  "evolu",
package/src/Crypto.ts CHANGED
@@ -363,7 +363,8 @@ export const createPadmePadding = (length: NonNegativeInt): Uint8Array => {
363
363
  /**
364
364
  * Performs a timing-safe comparison of two Uint8Arrays. Returns true if they
365
365
  * are equal, false otherwise. Takes constant time regardless of where the
366
- * arrays differ.
366
+ * arrays differ. Arrays of different lengths are unequal, and the comparison
367
+ * does not hide their lengths.
367
368
  *
368
369
  * @group Comparison
369
370
  * @see https://nodejs.org/api/crypto.html#cryptotimingsafeequala-b
@@ -0,0 +1,231 @@
1
+ import { inspect } from "node:util";
2
+ import { describe, it, test } from "node:test";
3
+ import {
4
+ assertEqual,
5
+ assertFalse,
6
+ assertNotUndefined,
7
+ assertThrowsInstanceOf,
8
+ assertTrue,
9
+ } from "./Assert.ts";
10
+ import type { Brand } from "./Brand.ts";
11
+ import { constVoid } from "./Function.ts";
12
+ import { installPolyfills } from "./Polyfills.ts";
13
+ import { createRedacted, isRedacted, revealRedacted } from "./Redacted.ts";
14
+ import type { Redacted } from "./Redacted.ts";
15
+
16
+ describe("createRedacted hides value", () => {
17
+ it("from toString", () => {
18
+ const secret = createRedacted("my-secret-key");
19
+ assertEqual(secret.toString(), "<redacted>");
20
+ });
21
+
22
+ it("from toJSON", () => {
23
+ const secret = createRedacted("my-secret-key");
24
+ assertEqual(JSON.stringify(secret), '"<redacted>"');
25
+ });
26
+
27
+ it("from JSON.stringify in object", () => {
28
+ const config = {
29
+ apiKey: createRedacted("secret-123"),
30
+ publicValue: "visible",
31
+ };
32
+ assertEqual(
33
+ JSON.stringify(config),
34
+ '{"apiKey":"<redacted>","publicValue":"visible"}',
35
+ );
36
+ });
37
+
38
+ it("from Node.js util.inspect", () => {
39
+ const secret = createRedacted("my-secret-key");
40
+ assertEqual(inspect(secret), "<redacted>");
41
+ });
42
+
43
+ it("in string interpolation", () => {
44
+ const secret = createRedacted("my-secret-key");
45
+ assertEqual(`API key: ${secret}`, "API key: <redacted>"); // oxlint-disable-line typescript/restrict-template-expressions -- This test verifies Redacted's implicit string conversion.
46
+ });
47
+ });
48
+
49
+ describe("revealRedacted", () => {
50
+ it("retrieves string", () => {
51
+ assertEqual(
52
+ revealRedacted(createRedacted("string-secret")),
53
+ "string-secret",
54
+ );
55
+ });
56
+
57
+ it("retrieves number", () => {
58
+ assertEqual(revealRedacted(createRedacted(42)), 42);
59
+ });
60
+
61
+ it("retrieves object", () => {
62
+ assertEqual(revealRedacted(createRedacted({ password: "123" })), {
63
+ password: "123",
64
+ });
65
+ });
66
+
67
+ it("retrieves array", () => {
68
+ assertEqual(revealRedacted(createRedacted(["a", "b", "c"])), [
69
+ "a",
70
+ "b",
71
+ "c",
72
+ ]);
73
+ });
74
+
75
+ it("retrieves undefined", () => {
76
+ assertEqual(revealRedacted(createRedacted(undefined)), undefined);
77
+ });
78
+
79
+ it("throws for a structured clone", () => {
80
+ const clone = structuredClone(createRedacted("sensitive"));
81
+
82
+ assertFalse(isRedacted(clone));
83
+ assertEqual(
84
+ assertThrowsInstanceOf(() => revealRedacted(clone), Error).message,
85
+ "Redacted value was not in registry",
86
+ );
87
+ });
88
+ });
89
+
90
+ describe("isRedacted", () => {
91
+ it("returns true for Redacted values", () => {
92
+ assertTrue(isRedacted(createRedacted("secret")));
93
+ assertTrue(isRedacted(createRedacted(123)));
94
+ assertTrue(isRedacted(createRedacted({ key: "value" })));
95
+ });
96
+
97
+ it("returns false for non-Redacted values", () => {
98
+ assertFalse(isRedacted("string"));
99
+ assertFalse(isRedacted(123));
100
+ assertFalse(isRedacted(null));
101
+ assertFalse(isRedacted(undefined));
102
+ assertFalse(isRedacted({}));
103
+ assertFalse(isRedacted({ toString: () => "<redacted>" }));
104
+ });
105
+ });
106
+
107
+ test("Redacted is branded", () => {
108
+ const assigned: Redacted<string> = createRedacted("secret");
109
+ assertEqual(revealRedacted(assigned), "secret");
110
+
111
+ // @ts-expect-error Only createRedacted produces the Redacted brand.
112
+ const _fake: Redacted<string> = {
113
+ Type: "secret",
114
+ toString: () => "<redacted>",
115
+ toJSON: () => "<redacted>",
116
+ [Symbol.dispose]: constVoid,
117
+ };
118
+ });
119
+
120
+ test("branded inner type provides type-level distinction", () => {
121
+ type ApiKey = string & Brand<"ApiKey">;
122
+ type DbPassword = string & Brand<"DbPassword">;
123
+
124
+ const apiKey = "secret-123" as ApiKey;
125
+ const redactedKey: Redacted<ApiKey> = createRedacted(apiKey);
126
+
127
+ const dbPassword = "pass-456" as DbPassword;
128
+ const redactedPassword: Redacted<DbPassword> = createRedacted(dbPassword);
129
+
130
+ // Functions requiring specific branded types
131
+ const useApiKey = (k: Redacted<ApiKey>) => revealRedacted(k);
132
+ const useDbPassword = (p: Redacted<DbPassword>) => revealRedacted(p);
133
+
134
+ assertEqual(useApiKey(redactedKey), "secret-123");
135
+ assertEqual(useDbPassword(redactedPassword), "pass-456");
136
+
137
+ // @ts-expect-error - Redacted<DbPassword> is not assignable to Redacted<ApiKey>
138
+ useApiKey(redactedPassword);
139
+
140
+ // @ts-expect-error - Redacted<string> is not assignable to Redacted<ApiKey>
141
+ useApiKey(createRedacted("plain-string"));
142
+ });
143
+
144
+ describe("Disposable", () => {
145
+ it("Symbol.dispose removes value from registry", () => {
146
+ const secret = createRedacted("sensitive");
147
+ assertEqual(revealRedacted(secret), "sensitive");
148
+
149
+ secret[Symbol.dispose]();
150
+
151
+ assertEqual(
152
+ assertThrowsInstanceOf(() => revealRedacted(secret), Error).message,
153
+ "Redacted value was not in registry",
154
+ );
155
+ });
156
+
157
+ it("works with using syntax", () => {
158
+ let secretRef: Redacted<string> | undefined;
159
+
160
+ {
161
+ using secret = createRedacted("sensitive");
162
+ secretRef = secret;
163
+ assertEqual(revealRedacted(secret), "sensitive");
164
+ }
165
+
166
+ // After the scope exits, the secret can no longer be revealed.
167
+ assertEqual(
168
+ assertThrowsInstanceOf(() => revealRedacted(secretRef), Error).message,
169
+ "Redacted value was not in registry",
170
+ );
171
+ });
172
+
173
+ it("disposes through a detached dispose method", () => {
174
+ const secret = createRedacted("sensitive");
175
+
176
+ {
177
+ using stack = new DisposableStack();
178
+ stack.defer(secret[Symbol.dispose]);
179
+ }
180
+
181
+ assertEqual(
182
+ assertThrowsInstanceOf(() => revealRedacted(secret), Error).message,
183
+ "Redacted value was not in registry",
184
+ );
185
+ });
186
+
187
+ it("is disposable when Symbol.dispose is installed after import", () => {
188
+ // Apps call installPolyfills after their imports are evaluated, so a
189
+ // polyfilled Symbol.dispose appears only after this module has loaded.
190
+ const symbolDescriptor = Object.getOwnPropertyDescriptor(
191
+ globalThis,
192
+ "Symbol",
193
+ );
194
+ assertNotUndefined(symbolDescriptor);
195
+ const nativeSymbol = Symbol;
196
+ const symbolWithoutDispose = ((description?: string) =>
197
+ nativeSymbol(description)) as unknown as SymbolConstructor;
198
+ for (const key of Reflect.ownKeys(nativeSymbol)) {
199
+ if (key === "dispose" || key === "asyncDispose") continue;
200
+ if (Object.hasOwn(symbolWithoutDispose, key)) continue;
201
+ const descriptor = Object.getOwnPropertyDescriptor(nativeSymbol, key);
202
+ assertNotUndefined(descriptor);
203
+ Object.defineProperty(symbolWithoutDispose, key, descriptor);
204
+ }
205
+ Object.defineProperty(globalThis, "Symbol", {
206
+ ...symbolDescriptor,
207
+ value: symbolWithoutDispose,
208
+ });
209
+
210
+ try {
211
+ installPolyfills();
212
+
213
+ const secret = createRedacted("sensitive");
214
+ secret[Symbol.dispose]();
215
+
216
+ assertEqual(
217
+ assertThrowsInstanceOf(() => revealRedacted(secret), Error).message,
218
+ "Redacted value was not in registry",
219
+ );
220
+ } finally {
221
+ Object.defineProperty(globalThis, "Symbol", symbolDescriptor);
222
+ }
223
+ });
224
+
225
+ it("isRedacted still returns true after dispose", () => {
226
+ const secret = createRedacted("sensitive");
227
+ secret[Symbol.dispose]();
228
+ // The object is still a Redacted wrapper, just empty
229
+ assertTrue(isRedacted(secret));
230
+ });
231
+ });
package/src/Redacted.ts CHANGED
@@ -6,7 +6,6 @@
6
6
 
7
7
  import { assert } from "./Assert.ts";
8
8
  import type { Brand } from "./Brand.ts";
9
- import type { Eq } from "./Eq.ts";
10
9
 
11
10
  /**
12
11
  * A wrapper type that prevents sensitive values from being accidentally exposed
@@ -18,13 +17,17 @@ import type { Eq } from "./Eq.ts";
18
17
  *
19
18
  * For type-level distinction between different secrets, use branded types.
20
19
  *
21
- * The actual value lives in a `WeakMap`, so it never appears as a property and
22
- * is automatically garbage collected when the wrapper is dropped. This is
23
- * better than a class with a private field because private fields are still
24
- * visible in devtools. Symbols can't be used because they don't support custom
25
- * `toString`.
20
+ * Redacted guards against accidental exposure, such as logs, error reports, and
21
+ * serialized payloads. It does not hide the value from a debugger: DevTools and
22
+ * heap snapshots can still reach it.
26
23
  *
27
- * Implements `Disposable` for automatic cleanup via the `using` syntax.
24
+ * A structured clone, such as a `postMessage` to a worker, does not copy the
25
+ * hidden value and arrives as an empty object. Reveal the value before posting
26
+ * it, and wrap it again on arrival if the receiver passes it to app code.
27
+ *
28
+ * Implements `Disposable`, so the `using` syntax detaches the value when the
29
+ * scope ends. Disposal does not overwrite the value or release other references
30
+ * to it.
28
31
  *
29
32
  * ### Example
30
33
  *
@@ -48,7 +51,6 @@ import type { Eq } from "./Eq.ts";
48
51
  * using redactedKey: RedactedApiKey = createRedacted(apiKey);
49
52
  * const fetchUser = (key: RedactedApiKey): ApiKey => revealRedacted(key);
50
53
  *
51
- * // oxlint-disable-next-line typescript/no-base-to-string -- Redacted intentionally implements a safe custom toString.
52
54
  * assertEqual(redactedKey.toString(), "<redacted>");
53
55
  * assertEqual(
54
56
  * JSON.stringify({ apiKey: redactedKey }),
@@ -64,18 +66,32 @@ import type { Eq } from "./Eq.ts";
64
66
  * using key = createRedacted(apiKey);
65
67
  * return key;
66
68
  * })();
67
- * // Leaving the `using` scope removes the value from memory.
69
+ * // Leaving the `using` scope detaches the value, so revealing it throws.
68
70
  * assertErr(trySync(() => revealRedacted(disposedKey)));
69
71
  * ```
70
72
  */
71
73
  export interface Redacted<A> extends Brand<"Redacted">, Disposable {
72
- /** The inner type. Useful for inference via `typeof redacted.Type`. */
74
+ /**
75
+ * The inner type. This is a type-only phantom property. Use it through
76
+ * `typeof redacted.Type`; it does not exist at runtime.
77
+ */
73
78
  readonly Type: A;
79
+ readonly toString: () => "<redacted>";
80
+ readonly toJSON: () => "<redacted>";
74
81
  }
75
82
 
76
83
  /** Creates a {@link Redacted} wrapper for a sensitive value. */
77
84
  export const createRedacted = <A>(value: A): Redacted<A> => {
78
- const redacted = Object.create(proto) as Redacted<A>;
85
+ // Symbol.dispose is read here rather than in proto because installPolyfills
86
+ // runs after imported modules are evaluated. An arrow function also keeps a
87
+ // detached dispose method working.
88
+ const redacted = Object.create(proto, {
89
+ [Symbol.dispose]: {
90
+ value: () => {
91
+ registry.delete(redacted);
92
+ },
93
+ },
94
+ }) as Redacted<A>;
79
95
  registry.set(redacted, value);
80
96
  return redacted;
81
97
  };
@@ -84,11 +100,15 @@ const proto = {
84
100
  toString: () => redactedString,
85
101
  toJSON: () => redactedString,
86
102
  [Symbol.for("nodejs.util.inspect.custom")]: () => redactedString,
87
- [Symbol.dispose](this: Redacted<unknown>) {
88
- registry.delete(this);
89
- },
90
103
  };
91
104
  const redactedString = "<redacted>";
105
+
106
+ // The value lives in a WeakMap, so it is never a property: previews,
107
+ // enumeration, and serialization cannot show it, and it is garbage collected
108
+ // with the wrapper. A private field would show when DevTools expands the
109
+ // object. The wrapper is an object, not a symbol, because a symbol cannot
110
+ // customize toString or toJSON. DevTools can still reach the registry through
111
+ // the scopes of the wrapper's functions.
92
112
  const registry = new WeakMap<Redacted<unknown>, unknown>();
93
113
 
94
114
  /**
@@ -97,6 +117,8 @@ const registry = new WeakMap<Redacted<unknown>, unknown>();
97
117
  * This is a separate function rather than a method on {@link Redacted} to make
98
118
  * access visually explicit and easy to grep in code reviews. Accessing
99
119
  * sensitive values should feel intentional, not convenient.
120
+ *
121
+ * Throws when the wrapper was disposed or is a structured clone.
100
122
  */
101
123
  export const revealRedacted = <A>(redacted: Redacted<A>): A => {
102
124
  assert(registry.has(redacted), "Redacted value was not in registry");
@@ -108,36 +130,3 @@ export const isRedacted = (value: unknown): value is Redacted<unknown> =>
108
130
  typeof value === "object" &&
109
131
  value !== null &&
110
132
  Object.getPrototypeOf(value) === proto;
111
-
112
- /**
113
- * Creates an {@link Eq} for {@link Redacted} values based on an equality function
114
- * for the underlying type.
115
- *
116
- * ### Example
117
- *
118
- * ```ts
119
- * import {
120
- * assertFalse,
121
- * assertTrue,
122
- * createEqRedacted,
123
- * createRedacted,
124
- * eqString,
125
- * type Brand,
126
- * } from "@evolu/common";
127
- *
128
- * type ApiKey = string & Brand<"ApiKey">;
129
- * const eqRedactedApiKey = createEqRedacted<ApiKey>(eqString);
130
- *
131
- * // Apply brands only after validation or at another trusted boundary.
132
- * using a = createRedacted("x" as ApiKey);
133
- * using b = createRedacted("x" as ApiKey);
134
- * using c = createRedacted("y" as ApiKey);
135
- *
136
- * assertTrue(eqRedactedApiKey(a, b));
137
- * assertFalse(eqRedactedApiKey(a, c));
138
- * ```
139
- */
140
- export const createEqRedacted =
141
- <A>(eq: Eq<A>): Eq<Redacted<A>> =>
142
- (x, y) =>
143
- eq(revealRedacted(x), revealRedacted(y));