atom.io 0.11.0 → 0.12.1

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 (174) hide show
  1. package/data/dist/index.cjs +614 -0
  2. package/data/dist/index.cjs.map +1 -0
  3. package/data/dist/index.d.cts +158 -0
  4. package/data/dist/index.d.ts +118 -1
  5. package/data/dist/index.js +551 -30
  6. package/data/dist/index.js.map +1 -1
  7. package/data/dist/metafile-cjs.json +1 -0
  8. package/data/dist/metafile-esm.json +1 -0
  9. package/data/package.json +4 -3
  10. package/data/src/index.ts +1 -0
  11. package/data/src/join.ts +450 -0
  12. package/data/src/struct-family.ts +34 -24
  13. package/data/src/struct.ts +6 -8
  14. package/dist/index.cjs +257 -0
  15. package/dist/index.cjs.map +1 -0
  16. package/dist/{index.d.mts → index.d.cts} +10 -11
  17. package/dist/index.d.ts +10 -11
  18. package/dist/index.js +63 -104
  19. package/dist/index.js.map +1 -1
  20. package/dist/metafile-cjs.json +1 -0
  21. package/dist/metafile-esm.json +1 -0
  22. package/internal/dist/{index.mjs → index.cjs} +716 -495
  23. package/internal/dist/index.cjs.map +1 -0
  24. package/internal/dist/{index.d.mts → index.d.cts} +124 -105
  25. package/internal/dist/index.d.ts +124 -105
  26. package/internal/dist/index.js +651 -555
  27. package/internal/dist/index.js.map +1 -1
  28. package/internal/dist/metafile-cjs.json +1 -0
  29. package/internal/dist/metafile-esm.json +1 -0
  30. package/internal/package.json +4 -3
  31. package/internal/src/atom/create-atom.ts +29 -16
  32. package/internal/src/atom/delete-atom.ts +25 -6
  33. package/internal/src/atom/is-default.ts +4 -17
  34. package/internal/src/caching.ts +28 -23
  35. package/internal/src/families/create-atom-family.ts +3 -2
  36. package/internal/src/families/create-readonly-selector-family.ts +1 -1
  37. package/internal/src/families/create-selector-family.ts +4 -4
  38. package/internal/src/index.ts +4 -2
  39. package/internal/src/lazy-map.ts +33 -0
  40. package/internal/src/mutable/create-mutable-atom-family.ts +2 -2
  41. package/internal/src/mutable/create-mutable-atom.ts +1 -2
  42. package/internal/src/mutable/get-json-family.ts +22 -0
  43. package/internal/src/mutable/get-json-token.ts +1 -0
  44. package/internal/src/mutable/index.ts +1 -0
  45. package/internal/src/mutable/tracker-family.ts +1 -2
  46. package/internal/src/mutable/tracker.ts +8 -6
  47. package/internal/src/mutable/transceiver.ts +2 -0
  48. package/internal/src/not-found-error.ts +27 -0
  49. package/internal/src/operation.ts +2 -3
  50. package/internal/src/{get-state-internal.ts → read-or-compute-value.ts} +13 -6
  51. package/internal/src/selector/create-selector.ts +6 -7
  52. package/internal/src/selector/delete-selector.ts +37 -0
  53. package/internal/src/selector/index.ts +2 -1
  54. package/internal/src/selector/register-selector.ts +7 -7
  55. package/internal/src/set-state/copy-mutable-in-transaction.ts +3 -2
  56. package/internal/src/set-state/emit-update.ts +1 -3
  57. package/internal/src/set-state/evict-downstream.ts +6 -8
  58. package/internal/src/set-state/index.ts +1 -1
  59. package/internal/src/set-state/{set-state-internal.ts → set-atom-or-selector.ts} +2 -3
  60. package/internal/src/set-state/set-atom.ts +5 -6
  61. package/internal/src/store/store.ts +1 -1
  62. package/internal/src/store/withdraw-new-family-member.ts +6 -6
  63. package/internal/src/subscribe/recall-state.ts +1 -2
  64. package/internal/src/subscribe/subscribe-to-root-atoms.ts +2 -2
  65. package/internal/src/timeline/add-atom-to-timeline.ts +5 -16
  66. package/internal/src/timeline/{timeline-internal.ts → create-timeline.ts} +4 -5
  67. package/internal/src/timeline/index.ts +2 -2
  68. package/internal/src/timeline/time-travel.ts +89 -0
  69. package/internal/src/transaction/build-transaction.ts +8 -7
  70. package/internal/src/transaction/{transaction-internal.ts → create-transaction.ts} +6 -5
  71. package/internal/src/transaction/index.ts +2 -3
  72. package/introspection/dist/{index.mjs → index.cjs} +54 -29
  73. package/introspection/dist/index.cjs.map +1 -0
  74. package/introspection/dist/{index.d.mts → index.d.cts} +2 -2
  75. package/introspection/dist/index.d.ts +2 -2
  76. package/introspection/dist/index.js +32 -49
  77. package/introspection/dist/index.js.map +1 -1
  78. package/introspection/dist/metafile-cjs.json +1 -0
  79. package/introspection/dist/metafile-esm.json +1 -0
  80. package/introspection/package.json +4 -3
  81. package/introspection/src/attach-introspection-states.ts +2 -2
  82. package/introspection/src/attach-selector-index.ts +8 -4
  83. package/json/dist/{index.mjs → index.cjs} +20 -7
  84. package/json/dist/{index.mjs.map → index.cjs.map} +1 -1
  85. package/json/dist/{index.d.mts → index.d.cts} +1 -1
  86. package/json/dist/index.d.ts +1 -1
  87. package/json/dist/index.js +6 -19
  88. package/json/dist/index.js.map +1 -1
  89. package/json/dist/metafile-cjs.json +1 -0
  90. package/json/dist/metafile-esm.json +1 -0
  91. package/json/package.json +4 -3
  92. package/package.json +48 -47
  93. package/react/dist/index.cjs +59 -0
  94. package/react/dist/index.cjs.map +1 -0
  95. package/react/dist/index.js +20 -42
  96. package/react/dist/index.js.map +1 -1
  97. package/react/dist/metafile-cjs.json +1 -0
  98. package/react/dist/metafile-esm.json +1 -0
  99. package/react/package.json +4 -3
  100. package/react/src/store-hooks.ts +8 -2
  101. package/react-devtools/dist/{index.mjs → index.cjs} +286 -240
  102. package/react-devtools/dist/index.cjs.map +1 -0
  103. package/react-devtools/dist/{index.d.mts → index.d.cts} +29 -17
  104. package/react-devtools/dist/index.d.ts +29 -17
  105. package/react-devtools/dist/index.js +251 -273
  106. package/react-devtools/dist/index.js.map +1 -1
  107. package/react-devtools/dist/metafile-cjs.json +1 -0
  108. package/react-devtools/dist/metafile-esm.json +1 -0
  109. package/react-devtools/package.json +4 -3
  110. package/react-devtools/src/StateEditor.tsx +8 -8
  111. package/realtime-client/dist/{index.mjs → index.cjs} +50 -21
  112. package/realtime-client/dist/index.js +20 -49
  113. package/realtime-client/dist/metafile-cjs.json +1 -0
  114. package/realtime-client/dist/metafile-esm.json +1 -0
  115. package/realtime-client/package.json +4 -3
  116. package/realtime-react/dist/index.cjs +99 -0
  117. package/realtime-react/dist/index.js +35 -66
  118. package/realtime-react/dist/metafile-cjs.json +1 -0
  119. package/realtime-react/dist/metafile-esm.json +1 -0
  120. package/realtime-react/package.json +4 -3
  121. package/realtime-server/dist/{index.mjs → index.cjs} +67 -40
  122. package/realtime-server/dist/index.js +39 -66
  123. package/realtime-server/dist/metafile-cjs.json +1 -0
  124. package/realtime-server/dist/metafile-esm.json +1 -0
  125. package/realtime-server/package.json +4 -3
  126. package/realtime-testing/dist/{index.mjs → index.cjs} +54 -23
  127. package/realtime-testing/dist/index.js +22 -53
  128. package/realtime-testing/dist/metafile-cjs.json +1 -0
  129. package/realtime-testing/dist/metafile-esm.json +1 -0
  130. package/realtime-testing/package.json +4 -3
  131. package/src/atom.ts +6 -8
  132. package/src/dispose.ts +18 -0
  133. package/src/get-state.ts +16 -0
  134. package/src/index.ts +3 -1
  135. package/src/logger.ts +1 -1
  136. package/src/selector.ts +3 -3
  137. package/src/set-state.ts +22 -0
  138. package/src/silo.ts +7 -8
  139. package/src/timeline.ts +6 -11
  140. package/src/transaction.ts +2 -2
  141. package/transceivers/set-rtx/dist/{index.mjs → index.cjs} +40 -36
  142. package/transceivers/set-rtx/dist/index.cjs.map +1 -0
  143. package/transceivers/set-rtx/dist/{index.d.mts → index.d.cts} +2 -1
  144. package/transceivers/set-rtx/dist/index.d.ts +2 -1
  145. package/transceivers/set-rtx/dist/index.js +37 -37
  146. package/transceivers/set-rtx/dist/index.js.map +1 -1
  147. package/transceivers/set-rtx/dist/metafile-cjs.json +1 -0
  148. package/transceivers/set-rtx/dist/metafile-esm.json +1 -0
  149. package/transceivers/set-rtx/package.json +4 -3
  150. package/transceivers/set-rtx/src/set-rtx.ts +29 -26
  151. package/data/dist/index.d.mts +0 -41
  152. package/data/dist/index.mjs +0 -82
  153. package/data/dist/index.mjs.map +0 -1
  154. package/dist/index.mjs +0 -215
  155. package/dist/index.mjs.map +0 -1
  156. package/internal/dist/index.mjs.map +0 -1
  157. package/internal/src/set-state/set-selector-state.ts +0 -8
  158. package/internal/src/timeline/time-travel-internal.ts +0 -109
  159. package/introspection/dist/index.mjs.map +0 -1
  160. package/react/dist/index.mjs +0 -29
  161. package/react/dist/index.mjs.map +0 -1
  162. package/react-devtools/dist/index.mjs.map +0 -1
  163. package/realtime-react/dist/index.mjs +0 -68
  164. package/src/get-set.ts +0 -48
  165. package/transceivers/set-rtx/dist/index.mjs.map +0 -1
  166. /package/react/dist/{index.d.mts → index.d.cts} +0 -0
  167. /package/realtime-client/dist/{index.mjs.map → index.cjs.map} +0 -0
  168. /package/realtime-client/dist/{index.d.mts → index.d.cts} +0 -0
  169. /package/realtime-react/dist/{index.mjs.map → index.cjs.map} +0 -0
  170. /package/realtime-react/dist/{index.d.mts → index.d.cts} +0 -0
  171. /package/realtime-server/dist/{index.mjs.map → index.cjs.map} +0 -0
  172. /package/realtime-server/dist/{index.d.mts → index.d.cts} +0 -0
  173. /package/realtime-testing/dist/{index.mjs.map → index.cjs.map} +0 -0
  174. /package/realtime-testing/dist/{index.d.mts → index.d.cts} +0 -0
@@ -92,26 +92,30 @@ interface JunctionSchema<ASide extends string, BSide extends string> extends Obj
92
92
  readonly between: [a: ASide, b: BSide];
93
93
  readonly cardinality: Cardinality;
94
94
  }
95
+ type BaseExternalStoreConfiguration = {
96
+ addRelation: (a: string, b: string) => void;
97
+ deleteRelation: (a: string, b: string) => void;
98
+ replaceRelationsSafely: (a: string, bs: string[]) => void;
99
+ replaceRelationsUnsafely: (a: string, bs: string[]) => void;
100
+ getRelatedKeys: (key: string) => Set<string> | undefined;
101
+ has: (a: string, b?: string) => boolean;
102
+ };
103
+ type ExternalStoreWithContentConfiguration<Content extends Object$1> = {
104
+ getContent: (contentKey: string) => Content | undefined;
105
+ setContent: (contentKey: string, content: Content) => void;
106
+ deleteContent: (contentKey: string) => void;
107
+ };
108
+ type Empty<Obj extends object> = {
109
+ [Key in keyof Obj]?: undefined;
110
+ };
111
+ type ExternalStoreConfiguration<Content extends Object$1 | null> = Content extends Object$1 ? BaseExternalStoreConfiguration & ExternalStoreWithContentConfiguration<Content> : BaseExternalStoreConfiguration & Empty<ExternalStoreWithContentConfiguration<Object$1>>;
95
112
  type JunctionAdvancedConfiguration<Content extends Object$1 | null> = {
96
- externalStore?: (Content extends null ? {
97
- getContent?: undefined;
98
- setContent?: undefined;
99
- deleteContent?: undefined;
100
- } : {
101
- getContent: (contentKey: string) => Content | undefined;
102
- setContent: (contentKey: string, content: Content) => void;
103
- deleteContent: (contentKey: string) => void;
104
- }) & {
105
- addRelation: (a: string, b: string) => void;
106
- deleteRelation: (a: string, b: string) => void;
107
- getRelatedKeys: (key: string) => Set<string> | undefined;
108
- has: (a: string, b?: string) => boolean;
109
- };
113
+ externalStore?: ExternalStoreConfiguration<Content>;
110
114
  isContent?: Refinement<unknown, Content>;
111
115
  makeContentKey?: (a: string, b: string) => string;
112
116
  };
113
117
  type JunctionJSON<ASide extends string, BSide extends string, Content extends Object$1 | null> = JunctionEntries<Content> & JunctionSchema<ASide, BSide>;
114
- declare class Junction<ASide extends string, BSide extends string, Content extends Object$1 | null = null> {
118
+ declare class Junction<const ASide extends string, const BSide extends string, const Content extends Object$1 | null = null> {
115
119
  readonly a: ASide;
116
120
  readonly b: BSide;
117
121
  readonly cardinality: Cardinality;
@@ -122,6 +126,8 @@ declare class Junction<ASide extends string, BSide extends string, Content exten
122
126
  getRelatedKeys(key: string): Set<string> | undefined;
123
127
  protected addRelation(a: string, b: string): void;
124
128
  protected deleteRelation(a: string, b: string): void;
129
+ protected replaceRelationsUnsafely(a: string, bs: string[]): void;
130
+ protected replaceRelationsSafely(a: string, bs: string[]): void;
125
131
  protected getContentInternal(contentKey: string): Content | undefined;
126
132
  protected setContent(contentKey: string, content: Content): void;
127
133
  protected deleteContent(contentKey: string): void;
@@ -134,6 +140,9 @@ declare class Junction<ASide extends string, BSide extends string, Content exten
134
140
  delete(a: string, b?: string): this;
135
141
  delete(relation: Record<ASide | BSide, string> | Record<ASide, string> | Record<BSide, string>, b?: undefined): this;
136
142
  getRelatedKey(key: string): string | undefined;
143
+ replaceRelations(a: string, relations: Content extends null ? string[] : Record<string, Content>, config?: {
144
+ reckless: boolean;
145
+ }): this;
137
146
  getContent(a: string, b: string): Content | undefined;
138
147
  getRelationEntries(input: Record<ASide, string> | Record<BSide, string>): [string, Content][];
139
148
  has(a: string, b?: string): boolean;
@@ -143,6 +152,8 @@ interface Transceiver<Signal extends Json.Serializable> {
143
152
  do: (update: Signal) => void;
144
153
  undo: (update: Signal) => void;
145
154
  subscribe: (key: string, fn: (update: Signal) => void) => () => void;
155
+ cacheUpdateNumber: number;
156
+ getUpdateNumber: (update: Signal) => number;
146
157
  }
147
158
 
148
159
  /**
@@ -158,7 +169,7 @@ declare class Tracker<Mutable extends Transceiver<any>> {
158
169
  private updateCore;
159
170
  mutableState: MutableAtomToken<Mutable, Json.Serializable>;
160
171
  latestUpdateState: AtomToken<typeof this.Update | null>;
161
- constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store?: Store);
172
+ constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
162
173
  }
163
174
 
164
175
  interface MutableAtom<T> extends Atom<T> {
@@ -247,7 +258,8 @@ type Atom<T> = {
247
258
  newValue: T;
248
259
  oldValue: T;
249
260
  }>;
250
- default: T;
261
+ default: T | (() => T);
262
+ cleanup?: () => void;
251
263
  };
252
264
 
253
265
  type AtomTokenIndex = StateTokenIndex<AtomToken<unknown>>;
@@ -92,26 +92,30 @@ interface JunctionSchema<ASide extends string, BSide extends string> extends Obj
92
92
  readonly between: [a: ASide, b: BSide];
93
93
  readonly cardinality: Cardinality;
94
94
  }
95
+ type BaseExternalStoreConfiguration = {
96
+ addRelation: (a: string, b: string) => void;
97
+ deleteRelation: (a: string, b: string) => void;
98
+ replaceRelationsSafely: (a: string, bs: string[]) => void;
99
+ replaceRelationsUnsafely: (a: string, bs: string[]) => void;
100
+ getRelatedKeys: (key: string) => Set<string> | undefined;
101
+ has: (a: string, b?: string) => boolean;
102
+ };
103
+ type ExternalStoreWithContentConfiguration<Content extends Object$1> = {
104
+ getContent: (contentKey: string) => Content | undefined;
105
+ setContent: (contentKey: string, content: Content) => void;
106
+ deleteContent: (contentKey: string) => void;
107
+ };
108
+ type Empty<Obj extends object> = {
109
+ [Key in keyof Obj]?: undefined;
110
+ };
111
+ type ExternalStoreConfiguration<Content extends Object$1 | null> = Content extends Object$1 ? BaseExternalStoreConfiguration & ExternalStoreWithContentConfiguration<Content> : BaseExternalStoreConfiguration & Empty<ExternalStoreWithContentConfiguration<Object$1>>;
95
112
  type JunctionAdvancedConfiguration<Content extends Object$1 | null> = {
96
- externalStore?: (Content extends null ? {
97
- getContent?: undefined;
98
- setContent?: undefined;
99
- deleteContent?: undefined;
100
- } : {
101
- getContent: (contentKey: string) => Content | undefined;
102
- setContent: (contentKey: string, content: Content) => void;
103
- deleteContent: (contentKey: string) => void;
104
- }) & {
105
- addRelation: (a: string, b: string) => void;
106
- deleteRelation: (a: string, b: string) => void;
107
- getRelatedKeys: (key: string) => Set<string> | undefined;
108
- has: (a: string, b?: string) => boolean;
109
- };
113
+ externalStore?: ExternalStoreConfiguration<Content>;
110
114
  isContent?: Refinement<unknown, Content>;
111
115
  makeContentKey?: (a: string, b: string) => string;
112
116
  };
113
117
  type JunctionJSON<ASide extends string, BSide extends string, Content extends Object$1 | null> = JunctionEntries<Content> & JunctionSchema<ASide, BSide>;
114
- declare class Junction<ASide extends string, BSide extends string, Content extends Object$1 | null = null> {
118
+ declare class Junction<const ASide extends string, const BSide extends string, const Content extends Object$1 | null = null> {
115
119
  readonly a: ASide;
116
120
  readonly b: BSide;
117
121
  readonly cardinality: Cardinality;
@@ -122,6 +126,8 @@ declare class Junction<ASide extends string, BSide extends string, Content exten
122
126
  getRelatedKeys(key: string): Set<string> | undefined;
123
127
  protected addRelation(a: string, b: string): void;
124
128
  protected deleteRelation(a: string, b: string): void;
129
+ protected replaceRelationsUnsafely(a: string, bs: string[]): void;
130
+ protected replaceRelationsSafely(a: string, bs: string[]): void;
125
131
  protected getContentInternal(contentKey: string): Content | undefined;
126
132
  protected setContent(contentKey: string, content: Content): void;
127
133
  protected deleteContent(contentKey: string): void;
@@ -134,6 +140,9 @@ declare class Junction<ASide extends string, BSide extends string, Content exten
134
140
  delete(a: string, b?: string): this;
135
141
  delete(relation: Record<ASide | BSide, string> | Record<ASide, string> | Record<BSide, string>, b?: undefined): this;
136
142
  getRelatedKey(key: string): string | undefined;
143
+ replaceRelations(a: string, relations: Content extends null ? string[] : Record<string, Content>, config?: {
144
+ reckless: boolean;
145
+ }): this;
137
146
  getContent(a: string, b: string): Content | undefined;
138
147
  getRelationEntries(input: Record<ASide, string> | Record<BSide, string>): [string, Content][];
139
148
  has(a: string, b?: string): boolean;
@@ -143,6 +152,8 @@ interface Transceiver<Signal extends Json.Serializable> {
143
152
  do: (update: Signal) => void;
144
153
  undo: (update: Signal) => void;
145
154
  subscribe: (key: string, fn: (update: Signal) => void) => () => void;
155
+ cacheUpdateNumber: number;
156
+ getUpdateNumber: (update: Signal) => number;
146
157
  }
147
158
 
148
159
  /**
@@ -158,7 +169,7 @@ declare class Tracker<Mutable extends Transceiver<any>> {
158
169
  private updateCore;
159
170
  mutableState: MutableAtomToken<Mutable, Json.Serializable>;
160
171
  latestUpdateState: AtomToken<typeof this.Update | null>;
161
- constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store?: Store);
172
+ constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
162
173
  }
163
174
 
164
175
  interface MutableAtom<T> extends Atom<T> {
@@ -247,7 +258,8 @@ type Atom<T> = {
247
258
  newValue: T;
248
259
  oldValue: T;
249
260
  }>;
250
- default: T;
261
+ default: T | (() => T);
262
+ cleanup?: () => void;
251
263
  };
252
264
 
253
265
  type AtomTokenIndex = StateTokenIndex<AtomToken<unknown>>;