atom.io 0.24.0 → 0.24.2

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
@@ -204,10 +204,13 @@ type MoleculeTransactors<K extends Json.Serializable> = Flat$1<Omit<TransactorsW
204
204
  bond<T>(family: ReadonlySelectorFamilyToken$1<T, K>): ReadonlySelectorToken$1<T>;
205
205
  bond<T>(family: WritableFamilyToken$1<T, K>): WritableToken$1<T>;
206
206
  bond<T>(family: ReadableFamilyToken$1<T, K>): ReadableToken$1<T>;
207
+ claim(below: MoleculeToken<any>, options: {
208
+ exclusive: boolean;
209
+ }): any;
207
210
  join(joinToken: JoinToken<any, any, any, any>): void;
208
211
  spawn<Key extends Json.Serializable, Ctor extends MoleculeConstructor>(family: MoleculeFamilyToken<Ctor>, key: Key, ...params: MoleculeParams<Ctor>): MoleculeToken<Ctor>;
209
212
  }>;
210
- type MoleculeConstructor = new (transactors: MoleculeTransactors<any>, key: Json.Serializable, ...params: any) => any;
213
+ type MoleculeConstructor = new (transactors: MoleculeTransactors<any>, key: any, ...params: any) => any;
211
214
  type Tail<T extends any[]> = T extends [any, ...infer Rest] ? Rest : any[];
212
215
  type MoleculeParams<M extends MoleculeConstructor> = Tail<Tail<ConstructorParameters<M>>>;
213
216
  type MoleculeFamilyOptions<M extends MoleculeConstructor> = {
@@ -1136,6 +1136,23 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
1136
1136
  withdraw(f, store),
1137
1137
  newest(store)
1138
1138
  ),
1139
+ claim: (below, options) => {
1140
+ const { exclusive } = options;
1141
+ const belowMolecule = newest(store).molecules.get(json.stringifyJson(below.key));
1142
+ if (belowMolecule) {
1143
+ if (exclusive) {
1144
+ for (const value of belowMolecule.above.values()) {
1145
+ value.below.delete(belowMolecule.stringKey);
1146
+ }
1147
+ belowMolecule.above.clear();
1148
+ belowMolecule.above.set(molecule.stringKey, molecule);
1149
+ molecule.below.set(belowMolecule.stringKey, belowMolecule);
1150
+ } else {
1151
+ belowMolecule.above.set(molecule.stringKey, molecule);
1152
+ molecule.below.set(belowMolecule.stringKey, belowMolecule);
1153
+ }
1154
+ }
1155
+ },
1139
1156
  join: (joinToken) => {
1140
1157
  const join = data.getJoin(joinToken, store);
1141
1158
  join.molecules.set(json.stringifyJson(key), molecule);
@@ -1540,6 +1557,20 @@ function disposeMolecule(token, store) {
1540
1557
  return;
1541
1558
  }
1542
1559
  const { family } = token;
1560
+ for (const state of molecule.tokens.values()) {
1561
+ disposeFromStore(state, store);
1562
+ }
1563
+ for (const child of molecule.below.values()) {
1564
+ if (((_a = child.family) == null ? void 0 : _a.dependsOn) === `all`) {
1565
+ disposeMolecule(child, store);
1566
+ } else {
1567
+ child.above.delete(molecule.stringKey);
1568
+ if (child.above.size === 0) {
1569
+ disposeMolecule(child, store);
1570
+ }
1571
+ }
1572
+ }
1573
+ molecule.below.clear();
1543
1574
  if (family) {
1544
1575
  const Formula = withdraw(family, store);
1545
1576
  const disposalEvent = {
@@ -1563,19 +1594,6 @@ function disposeMolecule(token, store) {
1563
1594
  }
1564
1595
  store.molecules.delete(molecule.stringKey);
1565
1596
  }
1566
- for (const state of molecule.tokens.values()) {
1567
- disposeFromStore(state, store);
1568
- }
1569
- for (const child of molecule.below.values()) {
1570
- if (((_a = child.family) == null ? void 0 : _a.dependsOn) === `all`) {
1571
- disposeMolecule(child, store);
1572
- } else {
1573
- child.above.delete(molecule.stringKey);
1574
- if (child.above.size === 0) {
1575
- disposeMolecule(child, store);
1576
- }
1577
- }
1578
- }
1579
1597
  for (const join of molecule.joins.values()) {
1580
1598
  join.molecules.delete(molecule.stringKey);
1581
1599
  }
@@ -858,6 +858,23 @@ function makeMoleculeInStore(store, context, familyToken, key, ...params) {
858
858
  withdraw(f, store),
859
859
  newest(store)
860
860
  ),
861
+ claim: (below, options) => {
862
+ const { exclusive } = options;
863
+ const belowMolecule = newest(store).molecules.get(stringifyJson(below.key));
864
+ if (belowMolecule) {
865
+ if (exclusive) {
866
+ for (const value of belowMolecule.above.values()) {
867
+ value.below.delete(belowMolecule.stringKey);
868
+ }
869
+ belowMolecule.above.clear();
870
+ belowMolecule.above.set(molecule.stringKey, molecule);
871
+ molecule.below.set(belowMolecule.stringKey, belowMolecule);
872
+ } else {
873
+ belowMolecule.above.set(molecule.stringKey, molecule);
874
+ molecule.below.set(belowMolecule.stringKey, belowMolecule);
875
+ }
876
+ }
877
+ },
861
878
  join: (joinToken) => {
862
879
  const join = getJoin(joinToken, store);
863
880
  join.molecules.set(stringifyJson(key), molecule);
@@ -1262,6 +1279,20 @@ function disposeMolecule(token, store) {
1262
1279
  return;
1263
1280
  }
1264
1281
  const { family } = token;
1282
+ for (const state of molecule.tokens.values()) {
1283
+ disposeFromStore(state, store);
1284
+ }
1285
+ for (const child of molecule.below.values()) {
1286
+ if (((_a = child.family) == null ? void 0 : _a.dependsOn) === `all`) {
1287
+ disposeMolecule(child, store);
1288
+ } else {
1289
+ child.above.delete(molecule.stringKey);
1290
+ if (child.above.size === 0) {
1291
+ disposeMolecule(child, store);
1292
+ }
1293
+ }
1294
+ }
1295
+ molecule.below.clear();
1265
1296
  if (family) {
1266
1297
  const Formula = withdraw(family, store);
1267
1298
  const disposalEvent = {
@@ -1285,19 +1316,6 @@ function disposeMolecule(token, store) {
1285
1316
  }
1286
1317
  store.molecules.delete(molecule.stringKey);
1287
1318
  }
1288
- for (const state of molecule.tokens.values()) {
1289
- disposeFromStore(state, store);
1290
- }
1291
- for (const child of molecule.below.values()) {
1292
- if (((_a = child.family) == null ? void 0 : _a.dependsOn) === `all`) {
1293
- disposeMolecule(child, store);
1294
- } else {
1295
- child.above.delete(molecule.stringKey);
1296
- if (child.above.size === 0) {
1297
- disposeMolecule(child, store);
1298
- }
1299
- }
1300
- }
1301
1319
  for (const join of molecule.joins.values()) {
1302
1320
  join.molecules.delete(molecule.stringKey);
1303
1321
  }
@@ -30,6 +30,21 @@ export function disposeMolecule<M extends MoleculeConstructor>(
30
30
  return
31
31
  }
32
32
  const { family } = token
33
+
34
+ for (const state of molecule.tokens.values()) {
35
+ disposeFromStore(state, store)
36
+ }
37
+ for (const child of molecule.below.values()) {
38
+ if (child.family?.dependsOn === `all`) {
39
+ disposeMolecule(child, store)
40
+ } else {
41
+ child.above.delete(molecule.stringKey)
42
+ if (child.above.size === 0) {
43
+ disposeMolecule(child, store)
44
+ }
45
+ }
46
+ }
47
+ molecule.below.clear()
33
48
  if (family) {
34
49
  const Formula = withdraw(family, store)
35
50
  const disposalEvent: MoleculeDisposal = {
@@ -54,19 +69,6 @@ export function disposeMolecule<M extends MoleculeConstructor>(
54
69
  store.molecules.delete(molecule.stringKey)
55
70
  }
56
71
 
57
- for (const state of molecule.tokens.values()) {
58
- disposeFromStore(state, store)
59
- }
60
- for (const child of molecule.below.values()) {
61
- if (child.family?.dependsOn === `all`) {
62
- disposeMolecule(child, store)
63
- } else {
64
- child.above.delete(molecule.stringKey)
65
- if (child.above.size === 0) {
66
- disposeMolecule(child, store)
67
- }
68
- }
69
- }
70
72
  for (const join of molecule.joins.values()) {
71
73
  join.molecules.delete(molecule.stringKey)
72
74
  }
@@ -84,6 +84,23 @@ export function makeMoleculeInStore<M extends MoleculeConstructor>(
84
84
  withdraw(f, store),
85
85
  newest(store),
86
86
  )) as MoleculeTransactors<MK<M>>[`bond`],
87
+ claim: (below, options) => {
88
+ const { exclusive } = options
89
+ const belowMolecule = newest(store).molecules.get(stringifyJson(below.key))
90
+ if (belowMolecule) {
91
+ if (exclusive) {
92
+ for (const value of belowMolecule.above.values()) {
93
+ value.below.delete(belowMolecule.stringKey)
94
+ }
95
+ belowMolecule.above.clear()
96
+ belowMolecule.above.set(molecule.stringKey, molecule)
97
+ molecule.below.set(belowMolecule.stringKey, belowMolecule)
98
+ } else {
99
+ belowMolecule.above.set(molecule.stringKey, molecule)
100
+ molecule.below.set(belowMolecule.stringKey, belowMolecule)
101
+ }
102
+ }
103
+ },
87
104
  join: (joinToken: JoinToken<any, any, any, any>) => {
88
105
  const join = getJoin(joinToken, store)
89
106
  join.molecules.set(stringifyJson(key), molecule)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.24.0",
3
+ "version": "0.24.2",
4
4
  "description": "Composable and testable reactive data library.",
5
5
  "homepage": "https://atom.io.fyi",
6
6
  "sideEffects": false,
@@ -56,8 +56,8 @@
56
56
  "@types/npmlog": "7.0.0",
57
57
  "@types/react": "18.3.3",
58
58
  "@types/tmp": "0.2.6",
59
- "@typescript-eslint/parser": "7.10.0",
60
- "@typescript-eslint/rule-tester": "7.10.0",
59
+ "@typescript-eslint/parser": "7.11.0",
60
+ "@typescript-eslint/rule-tester": "7.11.0",
61
61
  "@vitest/coverage-v8": "1.6.0",
62
62
  "@vitest/ui": "1.6.0",
63
63
  "concurrently": "8.2.2",
@@ -66,7 +66,7 @@
66
66
  "eslint": "npm:eslint@8.57.0",
67
67
  "eslint-v9": "npm:eslint@9.3.0",
68
68
  "framer-motion": "11.2.6",
69
- "happy-dom": "14.11.0",
69
+ "happy-dom": "14.11.2",
70
70
  "http-proxy": "1.18.1",
71
71
  "npmlog": "7.0.1",
72
72
  "postgres": "3.4.4",
@@ -79,7 +79,7 @@
79
79
  "tmp": "0.2.3",
80
80
  "tsup": "8.0.2",
81
81
  "typescript": "5.4.5",
82
- "vite": "5.2.11",
82
+ "vite": "5.2.12",
83
83
  "vite-tsconfig-paths": "4.3.2",
84
84
  "vitest": "1.6.0"
85
85
  },
package/src/molecule.ts CHANGED
@@ -37,6 +37,8 @@ export type MoleculeTransactors<K extends Json.Serializable> = Flat<
37
37
  bond<T>(family: WritableFamilyToken<T, K>): WritableToken<T>
38
38
  bond<T>(family: ReadableFamilyToken<T, K>): ReadableToken<T>
39
39
 
40
+ claim(below: MoleculeToken<any>, options: { exclusive: boolean })
41
+
40
42
  join(joinToken: JoinToken<any, any, any, any>): void
41
43
 
42
44
  spawn<Key extends Json.Serializable, Ctor extends MoleculeConstructor>(
@@ -48,7 +50,7 @@ export type MoleculeTransactors<K extends Json.Serializable> = Flat<
48
50
  >
49
51
  export type MoleculeConstructor = new (
50
52
  transactors: MoleculeTransactors<any>,
51
- key: Json.Serializable,
53
+ key: any,
52
54
  ...params: any
53
55
  ) => any
54
56