about summary refs log tree commit diff
path: root/src/state/cache/types.ts
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2023-11-21 22:42:30 +0000
committerGitHub <noreply@github.com>2023-11-21 22:42:30 +0000
commit4c4ba553bdc4029e78eaf2ccf0f9df12e41a1b01 (patch)
treee97890d72da1fd0a2c10cc501f530a04dae3157a /src/state/cache/types.ts
parentf18b9b32b0d296c8d19dc06956699f95c0af9be2 (diff)
downloadvoidsky-4c4ba553bdc4029e78eaf2ccf0f9df12e41a1b01.tar.zst
Shadow refactoring and improvements (#1959)
* Make shadow a type-only concept

* Prevent unnecessary init state recalc

* Use derived state instead of effects

* Batch emitter updates

* Use object first seen time instead of dataUpdatedAt

* Stop threading dataUpdatedAt through

* Use same value consistently
Diffstat (limited to 'src/state/cache/types.ts')
-rw-r--r--src/state/cache/types.ts8
1 files changed, 7 insertions, 1 deletions
diff --git a/src/state/cache/types.ts b/src/state/cache/types.ts
index 8bfcc867c..055f4167e 100644
--- a/src/state/cache/types.ts
+++ b/src/state/cache/types.ts
@@ -1 +1,7 @@
-export type Shadow<T> = T & {isShadowed: true}
+// This isn't a real property, but it prevents T being compatible with Shadow<T>.
+declare const shadowTag: unique symbol
+export type Shadow<T> = T & {[shadowTag]: true}
+
+export function castAsShadow<T>(value: T): Shadow<T> {
+  return value as any as Shadow<T>
+}