atom.io 0.20.2 → 0.20.3

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/dist/index.d.ts CHANGED
@@ -174,9 +174,11 @@ declare const LoggerIconDictionary: {
174
174
  readonly "\u23F9\uFE0F": "Time-travel complete";
175
175
  readonly "\u2705": "Realtime transaction success";
176
176
  readonly "\u2728": "Computation complete";
177
- readonly "\u2757": "Must wait to proceed with attempted action";
178
177
  readonly "\u274C": "Conflict prevents attempted action";
179
178
  readonly "\u2B55": "Operation start";
179
+ readonly "\uD83D\uDD34": "Operation complete";
180
+ readonly "\u2757": "Operation blocked";
181
+ readonly "\uD83D\uDFE2": "Operation unblocked";
180
182
  readonly "\uD83D\uDC1E": "Possible bug in AtomIO";
181
183
  readonly "\uD83D\uDC40": "Subscription added";
182
184
  readonly "\uD83D\uDC4B": "Greeting";
@@ -195,7 +197,6 @@ declare const LoggerIconDictionary: {
195
197
  readonly "\uD83D\uDD25": "Delete state";
196
198
  readonly "\uD83D\uDD27": "Create mutable atom";
197
199
  readonly "\uD83D\uDD28": "Create immutable atom";
198
- readonly "\uD83D\uDD34": "Operation complete";
199
200
  readonly "\uD83D\uDDD1": "Evict cached value";
200
201
  readonly "\uD83D\uDE48": "Subscription canceled";
201
202
  readonly "\uD83D\uDE80": "Performance measure";
@@ -774,13 +774,14 @@ var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing insta
774
774
  // internal/src/operation.ts
775
775
  var openOperation = (token, store) => {
776
776
  if (store.operation.open) {
777
- store.logger.warn(
777
+ const rejectionTime = performance.now();
778
+ store.logger.info(
778
779
  `\u2757`,
779
780
  token.type,
780
781
  token.key,
781
- `tried to setState, but must wait until setState for "${store.operation.token.key}" completes`
782
+ `deferring setState at T-${rejectionTime} until setState for "${store.operation.token.key}" is done`
782
783
  );
783
- return `rejection`;
784
+ return rejectionTime;
784
785
  }
785
786
  store.operation = {
786
787
  open: true,
@@ -989,12 +990,18 @@ var setAtomOrSelector = (state, value, store) => {
989
990
 
990
991
  // internal/src/set-state/set-into-store.ts
991
992
  function setIntoStore(token, value, store) {
992
- const rejection = openOperation(token, store);
993
- if (rejection) {
993
+ const rejectionTime = openOperation(token, store);
994
+ if (rejectionTime) {
994
995
  const unsubscribe = store.on.operationClose.subscribe(
995
- `waiting to set "${token.key}"`,
996
+ `waiting to set "${token.key}" at T-${rejectionTime}`,
996
997
  () => {
997
998
  unsubscribe();
999
+ store.logger.info(
1000
+ `\u{1F7E2}`,
1001
+ token.type,
1002
+ token.key,
1003
+ `resuming deferred setState from T-${rejectionTime}`
1004
+ );
998
1005
  setIntoStore(token, value, store);
999
1006
  }
1000
1007
  );
@@ -1307,8 +1314,8 @@ function subscribeToState(token, handleUpdate, key, store) {
1307
1314
  updateHandler = (update) => {
1308
1315
  if (dependencyUnsubFunctions) {
1309
1316
  dependencyUnsubFunctions.length = 0;
1317
+ dependencyUnsubFunctions.push(...subscribeToRootAtoms(state, store));
1310
1318
  }
1311
- dependencyUnsubFunctions = subscribeToRootAtoms(state, store);
1312
1319
  handleUpdate(update);
1313
1320
  };
1314
1321
  }
@@ -162,7 +162,7 @@ type OperationProgress = {
162
162
  time: number;
163
163
  token: WritableToken<any>;
164
164
  };
165
- declare const openOperation: (token: WritableToken<any>, store: Store) => `rejection` | undefined;
165
+ declare const openOperation: (token: WritableToken<any>, store: Store) => number | undefined;
166
166
  declare const closeOperation: (store: Store) => void;
167
167
  declare const isDone: (key: string, store: Store) => boolean;
168
168
  declare const markDone: (key: string, store: Store) => void;
@@ -447,7 +447,7 @@ declare const setAtomOrSelector: <T>(state: WritableState<T>, value: T | ((oldVa
447
447
 
448
448
  declare function setIntoStore<T, New extends T>(token: WritableToken<T>, value: New | ((oldValue: T) => New), store: Store): void;
449
449
 
450
- declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[] | null;
450
+ declare const subscribeToRootAtoms: <T>(selector: Selector<T>, store: Store) => (() => void)[];
451
451
 
452
452
  declare function subscribeToState<T>(token: ReadableToken<T>, handleUpdate: UpdateHandler<T>, key: string, store: Store): () => void;
453
453
 
@@ -496,13 +496,14 @@ var become = (nextVersionOfThing) => (originalThing) => nextVersionOfThing insta
496
496
  // internal/src/operation.ts
497
497
  var openOperation = (token, store) => {
498
498
  if (store.operation.open) {
499
- store.logger.warn(
499
+ const rejectionTime = performance.now();
500
+ store.logger.info(
500
501
  `\u2757`,
501
502
  token.type,
502
503
  token.key,
503
- `tried to setState, but must wait until setState for "${store.operation.token.key}" completes`
504
+ `deferring setState at T-${rejectionTime} until setState for "${store.operation.token.key}" is done`
504
505
  );
505
- return `rejection`;
506
+ return rejectionTime;
506
507
  }
507
508
  store.operation = {
508
509
  open: true,
@@ -711,12 +712,18 @@ var setAtomOrSelector = (state, value, store) => {
711
712
 
712
713
  // internal/src/set-state/set-into-store.ts
713
714
  function setIntoStore(token, value, store) {
714
- const rejection = openOperation(token, store);
715
- if (rejection) {
715
+ const rejectionTime = openOperation(token, store);
716
+ if (rejectionTime) {
716
717
  const unsubscribe = store.on.operationClose.subscribe(
717
- `waiting to set "${token.key}"`,
718
+ `waiting to set "${token.key}" at T-${rejectionTime}`,
718
719
  () => {
719
720
  unsubscribe();
721
+ store.logger.info(
722
+ `\u{1F7E2}`,
723
+ token.type,
724
+ token.key,
725
+ `resuming deferred setState from T-${rejectionTime}`
726
+ );
720
727
  setIntoStore(token, value, store);
721
728
  }
722
729
  );
@@ -1029,8 +1036,8 @@ function subscribeToState(token, handleUpdate, key, store) {
1029
1036
  updateHandler = (update) => {
1030
1037
  if (dependencyUnsubFunctions) {
1031
1038
  dependencyUnsubFunctions.length = 0;
1039
+ dependencyUnsubFunctions.push(...subscribeToRootAtoms(state, store));
1032
1040
  }
1033
- dependencyUnsubFunctions = subscribeToRootAtoms(state, store);
1034
1041
  handleUpdate(update);
1035
1042
  };
1036
1043
  }
@@ -19,15 +19,16 @@ export type OperationProgress =
19
19
  export const openOperation = (
20
20
  token: WritableToken<any>,
21
21
  store: Store,
22
- ): `rejection` | undefined => {
22
+ ): number | undefined => {
23
23
  if (store.operation.open) {
24
- store.logger.warn(
24
+ const rejectionTime = performance.now()
25
+ store.logger.info(
25
26
  `❗`,
26
27
  token.type,
27
28
  token.key,
28
- `tried to setState, but must wait until setState for "${store.operation.token.key}" completes`,
29
+ `deferring setState at T-${rejectionTime} until setState for "${store.operation.token.key}" is done`,
29
30
  )
30
- return `rejection`
31
+ return rejectionTime
31
32
  }
32
33
  store.operation = {
33
34
  open: true,
@@ -10,12 +10,18 @@ export function setIntoStore<T, New extends T>(
10
10
  value: New | ((oldValue: T) => New),
11
11
  store: Store,
12
12
  ): void {
13
- const rejection = openOperation(token, store)
14
- if (rejection) {
13
+ const rejectionTime = openOperation(token, store)
14
+ if (rejectionTime) {
15
15
  const unsubscribe = store.on.operationClose.subscribe(
16
- `waiting to set "${token.key}"`,
16
+ `waiting to set "${token.key}" at T-${rejectionTime}`,
17
17
  () => {
18
18
  unsubscribe()
19
+ store.logger.info(
20
+ `đŸŸĸ`,
21
+ token.type,
22
+ token.key,
23
+ `resuming deferred setState from T-${rejectionTime}`,
24
+ )
19
25
  setIntoStore(token, value, store)
20
26
  },
21
27
  )
@@ -8,7 +8,7 @@ import { recallState } from "./recall-state"
8
8
  export const subscribeToRootAtoms = <T>(
9
9
  selector: Selector<T>,
10
10
  store: Store,
11
- ): (() => void)[] | null => {
11
+ ): (() => void)[] => {
12
12
  const target = newest(store)
13
13
  const dependencySubscriptions = traceAllSelectorAtoms(selector, store).map(
14
14
  (atomKey) => {
@@ -21,8 +21,8 @@ export function subscribeToState<T>(
21
21
  updateHandler = (update) => {
22
22
  if (dependencyUnsubFunctions) {
23
23
  dependencyUnsubFunctions.length = 0
24
+ dependencyUnsubFunctions.push(...subscribeToRootAtoms(state, store))
24
25
  }
25
- dependencyUnsubFunctions = subscribeToRootAtoms(state, store)
26
26
  handleUpdate(update)
27
27
  }
28
28
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.20.2",
3
+ "version": "0.20.3",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,
@@ -54,10 +54,10 @@
54
54
  "@types/estree": "1.0.5",
55
55
  "@types/http-proxy": "1.17.14",
56
56
  "@types/npmlog": "7.0.0",
57
- "@types/react": "18.3.0",
57
+ "@types/react": "18.3.1",
58
58
  "@types/tmp": "0.2.6",
59
- "@typescript-eslint/parser": "7.7.1",
60
- "@typescript-eslint/rule-tester": "7.7.1",
59
+ "@typescript-eslint/parser": "7.8.0",
60
+ "@typescript-eslint/rule-tester": "7.8.0",
61
61
  "@vitest/coverage-v8": "1.5.2",
62
62
  "@vitest/ui": "1.5.2",
63
63
  "concurrently": "8.2.2",
@@ -71,8 +71,8 @@
71
71
  "npmlog": "7.0.1",
72
72
  "postgres": "3.4.4",
73
73
  "preact": "10.20.2",
74
- "react": "18.3.0",
75
- "react-dom": "18.3.0",
74
+ "react": "18.3.1",
75
+ "react-dom": "18.3.1",
76
76
  "react-router-dom": "6.23.0",
77
77
  "socket.io": "4.7.5",
78
78
  "socket.io-client": "4.7.5",
package/src/logger.ts CHANGED
@@ -8,9 +8,11 @@ const LoggerIconDictionary = {
8
8
  "âšī¸": `Time-travel complete`,
9
9
  "✅": `Realtime transaction success`,
10
10
  "✨": `Computation complete`,
11
- "❗": `Must wait to proceed with attempted action`,
12
11
  "❌": `Conflict prevents attempted action`,
13
12
  "⭕": `Operation start`,
13
+ "🔴": `Operation complete`,
14
+ "❗": `Operation blocked`,
15
+ "đŸŸĸ": `Operation unblocked`,
14
16
  "🐞": `Possible bug in AtomIO`,
15
17
  "👀": `Subscription added`,
16
18
  "👋": `Greeting`,
@@ -29,7 +31,7 @@ const LoggerIconDictionary = {
29
31
  "đŸ”Ĩ": `Delete state`,
30
32
  "🔧": `Create mutable atom`,
31
33
  "🔨": `Create immutable atom`,
32
- "🔴": `Operation complete`,
34
+
33
35
  "🗑": `Evict cached value`,
34
36
  "🙈": `Subscription canceled`,
35
37
  "🚀": `Performance measure`,