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.
- package/data/dist/index.cjs +614 -0
- package/data/dist/index.cjs.map +1 -0
- package/data/dist/index.d.cts +158 -0
- package/data/dist/index.d.ts +118 -1
- package/data/dist/index.js +551 -30
- package/data/dist/index.js.map +1 -1
- package/data/dist/metafile-cjs.json +1 -0
- package/data/dist/metafile-esm.json +1 -0
- package/data/package.json +4 -3
- package/data/src/index.ts +1 -0
- package/data/src/join.ts +450 -0
- package/data/src/struct-family.ts +34 -24
- package/data/src/struct.ts +6 -8
- package/dist/index.cjs +257 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.mts → index.d.cts} +10 -11
- package/dist/index.d.ts +10 -11
- package/dist/index.js +63 -104
- package/dist/index.js.map +1 -1
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/internal/dist/{index.mjs → index.cjs} +716 -495
- package/internal/dist/index.cjs.map +1 -0
- package/internal/dist/{index.d.mts → index.d.cts} +124 -105
- package/internal/dist/index.d.ts +124 -105
- package/internal/dist/index.js +651 -555
- package/internal/dist/index.js.map +1 -1
- package/internal/dist/metafile-cjs.json +1 -0
- package/internal/dist/metafile-esm.json +1 -0
- package/internal/package.json +4 -3
- package/internal/src/atom/create-atom.ts +29 -16
- package/internal/src/atom/delete-atom.ts +25 -6
- package/internal/src/atom/is-default.ts +4 -17
- package/internal/src/caching.ts +28 -23
- package/internal/src/families/create-atom-family.ts +3 -2
- package/internal/src/families/create-readonly-selector-family.ts +1 -1
- package/internal/src/families/create-selector-family.ts +4 -4
- package/internal/src/index.ts +4 -2
- package/internal/src/lazy-map.ts +33 -0
- package/internal/src/mutable/create-mutable-atom-family.ts +2 -2
- package/internal/src/mutable/create-mutable-atom.ts +1 -2
- package/internal/src/mutable/get-json-family.ts +22 -0
- package/internal/src/mutable/get-json-token.ts +1 -0
- package/internal/src/mutable/index.ts +1 -0
- package/internal/src/mutable/tracker-family.ts +1 -2
- package/internal/src/mutable/tracker.ts +8 -6
- package/internal/src/mutable/transceiver.ts +2 -0
- package/internal/src/not-found-error.ts +27 -0
- package/internal/src/operation.ts +2 -3
- package/internal/src/{get-state-internal.ts → read-or-compute-value.ts} +13 -6
- package/internal/src/selector/create-selector.ts +6 -7
- package/internal/src/selector/delete-selector.ts +37 -0
- package/internal/src/selector/index.ts +2 -1
- package/internal/src/selector/register-selector.ts +7 -7
- package/internal/src/set-state/copy-mutable-in-transaction.ts +3 -2
- package/internal/src/set-state/emit-update.ts +1 -3
- package/internal/src/set-state/evict-downstream.ts +6 -8
- package/internal/src/set-state/index.ts +1 -1
- package/internal/src/set-state/{set-state-internal.ts → set-atom-or-selector.ts} +2 -3
- package/internal/src/set-state/set-atom.ts +5 -6
- package/internal/src/store/store.ts +1 -1
- package/internal/src/store/withdraw-new-family-member.ts +6 -6
- package/internal/src/subscribe/recall-state.ts +1 -2
- package/internal/src/subscribe/subscribe-to-root-atoms.ts +2 -2
- package/internal/src/timeline/add-atom-to-timeline.ts +5 -16
- package/internal/src/timeline/{timeline-internal.ts → create-timeline.ts} +4 -5
- package/internal/src/timeline/index.ts +2 -2
- package/internal/src/timeline/time-travel.ts +89 -0
- package/internal/src/transaction/build-transaction.ts +8 -7
- package/internal/src/transaction/{transaction-internal.ts → create-transaction.ts} +6 -5
- package/internal/src/transaction/index.ts +2 -3
- package/introspection/dist/{index.mjs → index.cjs} +54 -29
- package/introspection/dist/index.cjs.map +1 -0
- package/introspection/dist/{index.d.mts → index.d.cts} +2 -2
- package/introspection/dist/index.d.ts +2 -2
- package/introspection/dist/index.js +32 -49
- package/introspection/dist/index.js.map +1 -1
- package/introspection/dist/metafile-cjs.json +1 -0
- package/introspection/dist/metafile-esm.json +1 -0
- package/introspection/package.json +4 -3
- package/introspection/src/attach-introspection-states.ts +2 -2
- package/introspection/src/attach-selector-index.ts +8 -4
- package/json/dist/{index.mjs → index.cjs} +20 -7
- package/json/dist/{index.mjs.map → index.cjs.map} +1 -1
- package/json/dist/{index.d.mts → index.d.cts} +1 -1
- package/json/dist/index.d.ts +1 -1
- package/json/dist/index.js +6 -19
- package/json/dist/index.js.map +1 -1
- package/json/dist/metafile-cjs.json +1 -0
- package/json/dist/metafile-esm.json +1 -0
- package/json/package.json +4 -3
- package/package.json +48 -47
- package/react/dist/index.cjs +59 -0
- package/react/dist/index.cjs.map +1 -0
- package/react/dist/index.js +20 -42
- package/react/dist/index.js.map +1 -1
- package/react/dist/metafile-cjs.json +1 -0
- package/react/dist/metafile-esm.json +1 -0
- package/react/package.json +4 -3
- package/react/src/store-hooks.ts +8 -2
- package/react-devtools/dist/{index.mjs → index.cjs} +286 -240
- package/react-devtools/dist/index.cjs.map +1 -0
- package/react-devtools/dist/{index.d.mts → index.d.cts} +29 -17
- package/react-devtools/dist/index.d.ts +29 -17
- package/react-devtools/dist/index.js +251 -273
- package/react-devtools/dist/index.js.map +1 -1
- package/react-devtools/dist/metafile-cjs.json +1 -0
- package/react-devtools/dist/metafile-esm.json +1 -0
- package/react-devtools/package.json +4 -3
- package/react-devtools/src/StateEditor.tsx +8 -8
- package/realtime-client/dist/{index.mjs → index.cjs} +50 -21
- package/realtime-client/dist/index.js +20 -49
- package/realtime-client/dist/metafile-cjs.json +1 -0
- package/realtime-client/dist/metafile-esm.json +1 -0
- package/realtime-client/package.json +4 -3
- package/realtime-react/dist/index.cjs +99 -0
- package/realtime-react/dist/index.js +35 -66
- package/realtime-react/dist/metafile-cjs.json +1 -0
- package/realtime-react/dist/metafile-esm.json +1 -0
- package/realtime-react/package.json +4 -3
- package/realtime-server/dist/{index.mjs → index.cjs} +67 -40
- package/realtime-server/dist/index.js +39 -66
- package/realtime-server/dist/metafile-cjs.json +1 -0
- package/realtime-server/dist/metafile-esm.json +1 -0
- package/realtime-server/package.json +4 -3
- package/realtime-testing/dist/{index.mjs → index.cjs} +54 -23
- package/realtime-testing/dist/index.js +22 -53
- package/realtime-testing/dist/metafile-cjs.json +1 -0
- package/realtime-testing/dist/metafile-esm.json +1 -0
- package/realtime-testing/package.json +4 -3
- package/src/atom.ts +6 -8
- package/src/dispose.ts +18 -0
- package/src/get-state.ts +16 -0
- package/src/index.ts +3 -1
- package/src/logger.ts +1 -1
- package/src/selector.ts +3 -3
- package/src/set-state.ts +22 -0
- package/src/silo.ts +7 -8
- package/src/timeline.ts +6 -11
- package/src/transaction.ts +2 -2
- package/transceivers/set-rtx/dist/{index.mjs → index.cjs} +40 -36
- package/transceivers/set-rtx/dist/index.cjs.map +1 -0
- package/transceivers/set-rtx/dist/{index.d.mts → index.d.cts} +2 -1
- package/transceivers/set-rtx/dist/index.d.ts +2 -1
- package/transceivers/set-rtx/dist/index.js +37 -37
- package/transceivers/set-rtx/dist/index.js.map +1 -1
- package/transceivers/set-rtx/dist/metafile-cjs.json +1 -0
- package/transceivers/set-rtx/dist/metafile-esm.json +1 -0
- package/transceivers/set-rtx/package.json +4 -3
- package/transceivers/set-rtx/src/set-rtx.ts +29 -26
- package/data/dist/index.d.mts +0 -41
- package/data/dist/index.mjs +0 -82
- package/data/dist/index.mjs.map +0 -1
- package/dist/index.mjs +0 -215
- package/dist/index.mjs.map +0 -1
- package/internal/dist/index.mjs.map +0 -1
- package/internal/src/set-state/set-selector-state.ts +0 -8
- package/internal/src/timeline/time-travel-internal.ts +0 -109
- package/introspection/dist/index.mjs.map +0 -1
- package/react/dist/index.mjs +0 -29
- package/react/dist/index.mjs.map +0 -1
- package/react-devtools/dist/index.mjs.map +0 -1
- package/realtime-react/dist/index.mjs +0 -68
- package/src/get-set.ts +0 -48
- package/transceivers/set-rtx/dist/index.mjs.map +0 -1
- /package/react/dist/{index.d.mts → index.d.cts} +0 -0
- /package/realtime-client/dist/{index.mjs.map → index.cjs.map} +0 -0
- /package/realtime-client/dist/{index.d.mts → index.d.cts} +0 -0
- /package/realtime-react/dist/{index.mjs.map → index.cjs.map} +0 -0
- /package/realtime-react/dist/{index.d.mts → index.d.cts} +0 -0
- /package/realtime-server/dist/{index.mjs.map → index.cjs.map} +0 -0
- /package/realtime-server/dist/{index.d.mts → index.d.cts} +0 -0
- /package/realtime-testing/dist/{index.mjs.map → index.cjs.map} +0 -0
- /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?:
|
|
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
|
|
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?:
|
|
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
|
|
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>>;
|