atom.io 0.35.0 → 0.36.0

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 (94) hide show
  1. package/dist/eslint-plugin/index.d.ts +2 -18
  2. package/dist/eslint-plugin/index.d.ts.map +1 -1
  3. package/dist/eslint-plugin/index.js +4 -141
  4. package/dist/eslint-plugin/index.js.map +1 -1
  5. package/dist/internal/index.d.ts +47 -41
  6. package/dist/internal/index.d.ts.map +1 -1
  7. package/dist/internal/index.js +95 -78
  8. package/dist/internal/index.js.map +1 -1
  9. package/dist/json/index.d.ts +2 -10
  10. package/dist/json/index.d.ts.map +1 -1
  11. package/dist/json/index.js +1 -31
  12. package/dist/json/index.js.map +1 -1
  13. package/dist/main/index.d.ts +24 -23
  14. package/dist/main/index.d.ts.map +1 -1
  15. package/dist/main/index.js +9 -9
  16. package/dist/main/index.js.map +1 -1
  17. package/dist/react/index.d.ts +4 -4
  18. package/dist/react/index.d.ts.map +1 -1
  19. package/dist/react/index.js.map +1 -1
  20. package/dist/react-devtools/index.d.ts.map +1 -1
  21. package/dist/realtime/index.d.ts +4 -4
  22. package/dist/realtime/index.d.ts.map +1 -1
  23. package/dist/realtime/index.js +2 -6
  24. package/dist/realtime/index.js.map +1 -1
  25. package/dist/realtime-client/index.d.ts +2 -2
  26. package/dist/realtime-client/index.d.ts.map +1 -1
  27. package/dist/realtime-client/index.js.map +1 -1
  28. package/dist/realtime-react/index.d.ts +2 -2
  29. package/dist/realtime-react/index.d.ts.map +1 -1
  30. package/dist/realtime-react/index.js.map +1 -1
  31. package/dist/realtime-server/index.d.ts +18 -18
  32. package/dist/realtime-server/index.d.ts.map +1 -1
  33. package/dist/realtime-server/index.js +5 -9
  34. package/dist/realtime-server/index.js.map +1 -1
  35. package/dist/transceivers/set-rtx/index.d.ts +1 -1
  36. package/dist/transceivers/set-rtx/index.d.ts.map +1 -1
  37. package/dist/transceivers/set-rtx/index.js.map +1 -1
  38. package/package.json +5 -5
  39. package/src/eslint-plugin/index.ts +0 -1
  40. package/src/eslint-plugin/rules/explicit-state-types.ts +8 -1
  41. package/src/eslint-plugin/rules/index.ts +0 -1
  42. package/src/internal/atom/dispose-atom.ts +1 -0
  43. package/src/internal/families/find-in-store.ts +4 -5
  44. package/src/internal/families/get-family-of-token.ts +4 -5
  45. package/src/internal/families/init-family-member.ts +3 -4
  46. package/src/internal/families/seek-in-store.ts +4 -5
  47. package/src/internal/get-state/read-or-compute-value.ts +14 -2
  48. package/src/internal/index.ts +19 -21
  49. package/src/internal/ingest-updates/ingest-creation-disposal.ts +18 -15
  50. package/src/internal/ingest-updates/ingest-selector-update.ts +9 -5
  51. package/src/internal/join/get-internal-relations-from-store.ts +2 -2
  52. package/src/internal/join/join-internal.ts +3 -14
  53. package/src/internal/molecule.ts +1 -0
  54. package/src/internal/mutable/create-mutable-atom-family.ts +37 -20
  55. package/src/internal/mutable/create-mutable-atom.ts +16 -12
  56. package/src/internal/mutable/get-json-family.ts +7 -6
  57. package/src/internal/mutable/get-json-token.ts +6 -13
  58. package/src/internal/mutable/get-update-family.ts +7 -8
  59. package/src/internal/mutable/get-update-token.ts +5 -9
  60. package/src/internal/mutable/tracker-family.ts +10 -13
  61. package/src/internal/mutable/tracker.ts +66 -90
  62. package/src/internal/mutable/transceiver.ts +35 -8
  63. package/src/internal/selector/dispose-selector.ts +9 -9
  64. package/src/internal/set-state/copy-mutable-if-needed.ts +8 -6
  65. package/src/internal/set-state/reset-atom-or-selector.ts +11 -4
  66. package/src/internal/set-state/set-atom.ts +1 -1
  67. package/src/internal/store/counterfeit.ts +3 -4
  68. package/src/internal/store/deposit.ts +7 -9
  69. package/src/internal/store/store.ts +2 -2
  70. package/src/internal/store/withdraw.ts +7 -11
  71. package/src/json/index.ts +0 -2
  72. package/src/main/atom.ts +24 -36
  73. package/src/main/dispose-state.ts +4 -4
  74. package/src/main/find-state.ts +3 -4
  75. package/src/main/join.ts +2 -2
  76. package/src/main/logger.ts +7 -7
  77. package/src/main/tokens.ts +9 -11
  78. package/src/main/transaction.ts +11 -5
  79. package/src/main/validators.ts +1 -1
  80. package/src/react/use-json.ts +15 -25
  81. package/src/realtime/shared-room-store.ts +11 -22
  82. package/src/realtime-client/pull-mutable-atom-family-member.ts +5 -9
  83. package/src/realtime-client/pull-mutable-atom.ts +5 -9
  84. package/src/realtime-react/use-pull-mutable-atom.ts +3 -5
  85. package/src/realtime-react/use-pull-mutable-family-member.ts +3 -4
  86. package/src/realtime-server/realtime-mutable-family-provider.ts +3 -4
  87. package/src/realtime-server/realtime-mutable-provider.ts +2 -3
  88. package/src/realtime-server/realtime-server-stores/server-room-external-actions.ts +6 -5
  89. package/src/realtime-server/realtime-server-stores/server-user-store.ts +8 -15
  90. package/src/transceivers/set-rtx/set-rtx.ts +1 -1
  91. package/src/eslint-plugin/rules/synchronous-selector-dependencies.ts +0 -140
  92. package/src/eslint-plugin/walk.ts +0 -81
  93. package/src/json/select-json-family.ts +0 -55
  94. package/src/json/select-json.ts +0 -19
@@ -1,26 +1,10 @@
1
1
  import { ESLintUtils } from "@typescript-eslint/utils";
2
- import { ESLint, Rule } from "eslint";
3
- import { RuleType } from "@eslint/core";
2
+ import { ESLint } from "eslint";
4
3
 
5
4
  //#region src/eslint-plugin/rules/explicit-state-types.d.ts
6
5
  declare const explicitStateTypes: ESLintUtils.RuleModule<`noTypeArgument`, [], unknown, ESLintUtils.RuleListener>;
7
- //#endregion
8
- //#region src/eslint-plugin/rules/synchronous-selector-dependencies.d.ts
9
- declare const synchronousSelectorDependencies: {
10
- meta: {
11
- type: RuleType;
12
- docs: {
13
- description: string;
14
- category: string;
15
- recommended: boolean;
16
- url: string;
17
- };
18
- schema: never[];
19
- };
20
- create(context: Rule.RuleContext): Rule.NodeListener;
21
- };
22
6
  declare namespace index_d_exports {
23
- export { explicitStateTypes, synchronousSelectorDependencies };
7
+ export { explicitStateTypes };
24
8
  }
25
9
  //#endregion
26
10
  //#region src/eslint-plugin/index.d.ts
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["explicitStateTypes: ESLintUtils.RuleModule<\n\t`noTypeArgument`,\n\t[],\n\tunknown,\n\tESLintUtils.RuleListener\n>","synchronousSelectorDependencies: {\n\tmeta: {\n\t\ttype: RuleType\n\t\tdocs: {\n\t\t\tdescription: string\n\t\t\tcategory: string\n\t\t\trecommended: boolean\n\t\t\turl: string\n\t\t}\n\t\tschema: never[]\n\t}\n\tcreate(context: Rule.RuleContext): Rule.NodeListener\n}","context: Rule.RuleContext","plugin: ESLint.Plugin"],"sources":["../../src/eslint-plugin/rules/explicit-state-types.ts","../../src/eslint-plugin/rules/synchronous-selector-dependencies.ts","../../src/eslint-plugin/rules/index.ts","../../src/eslint-plugin/index.ts"],"sourcesContent":[],"mappings":";;;;;cASaA,oBAAoB,WAAA,CAAY,0CAI5C,WAAA,CAAY;;;cCNAC;;UAEL;;MDAR,WAAaD,EAAAA,MAAAA;MAIA,QAAA,EAAA,MAAA;MAAA,WAAZ,EAAA,OAAY;MAAA,GAAA,EAJoB,MAAA;IAAY,CAAA;;;kBCS5B,IAAA,CAAK,cAAc,IAAA,CAAK;AAXzC,CAAA;AAAA;;;;;cEDMG,QAAQ,MAAA,CAAO"}
1
+ {"version":3,"file":"index.d.ts","names":["explicitStateTypes: ESLintUtils.RuleModule<\n\t`noTypeArgument`,\n\t[],\n\tunknown,\n\tESLintUtils.RuleListener\n>","plugin: ESLint.Plugin"],"sources":["../../src/eslint-plugin/rules/explicit-state-types.ts","../../src/eslint-plugin/rules/index.ts","../../src/eslint-plugin/index.ts"],"sourcesContent":[],"mappings":";;;;cAgBaA,oBAAoB,WAAA,CAAY,0CAI5C,WAAA,CAAY;;;;;;cEdPC,QAAQ,MAAA,CAAO"}
@@ -6,6 +6,8 @@ const createRule = ESLintUtils.RuleCreator((name) => `https://atom.io.fyi/docs/e
6
6
  const STATE_FUNCTIONS = [
7
7
  `atom`,
8
8
  `atomFamily`,
9
+ `mutableAtom`,
10
+ `mutableAtomFamily`,
9
11
  `selector`,
10
12
  `selectorFamily`
11
13
  ];
@@ -41,153 +43,14 @@ const explicitStateTypes = createRule({
41
43
  }
42
44
  });
43
45
 
44
- //#endregion
45
- //#region src/eslint-plugin/walk.ts
46
- function walk(node, callback, depth = 0) {
47
- callback(node, depth);
48
- switch (node.type) {
49
- case `AwaitExpression`:
50
- walk(node.argument, callback, depth + 1);
51
- break;
52
- case `FunctionExpression`:
53
- case `ArrowFunctionExpression`:
54
- for (const param of node.params) walk(param, callback, depth + 1);
55
- walk(node.body, callback, depth + 1);
56
- break;
57
- case `BlockStatement`:
58
- for (const statement of node.body) walk(statement, callback, depth + 1);
59
- break;
60
- case `IfStatement`:
61
- walk(node.test, callback, depth);
62
- walk(node.consequent, callback, depth);
63
- if (node.alternate) walk(node.alternate, callback, depth);
64
- break;
65
- case `SwitchStatement`:
66
- walk(node.discriminant, callback, depth + 1);
67
- for (const caseOrDefault of node.cases) walk(caseOrDefault, callback, depth);
68
- break;
69
- case `ReturnStatement`:
70
- if (node.argument) walk(node.argument, callback, depth);
71
- break;
72
- case `SwitchCase`:
73
- if (node.test) walk(node.test, callback, depth);
74
- for (const statement of node.consequent) walk(statement, callback, depth);
75
- break;
76
- case `VariableDeclaration`:
77
- for (const declaration of node.declarations) {
78
- walk(declaration, callback, depth);
79
- if (declaration.init) walk(declaration.init, callback, depth);
80
- }
81
- break;
82
- case `BinaryExpression`:
83
- walk(node.left, callback, depth);
84
- walk(node.right, callback, depth);
85
- break;
86
- case `ConditionalExpression`:
87
- walk(node.test, callback, depth + 1);
88
- walk(node.consequent, callback, depth + 1);
89
- walk(node.alternate, callback, depth + 1);
90
- break;
91
- case `MemberExpression`:
92
- walk(node.object, callback, depth);
93
- walk(node.property, callback, depth);
94
- break;
95
- case `CallExpression`:
96
- walk(node.callee, callback, depth);
97
- for (const argument of node.arguments) walk(argument, callback, depth);
98
- break;
99
- }
100
- }
101
-
102
- //#endregion
103
- //#region src/eslint-plugin/rules/synchronous-selector-dependencies.ts
104
- const synchronousSelectorDependencies = {
105
- meta: {
106
- type: `problem`,
107
- docs: {
108
- description: `disallow await before calling get on the parameter's get method inside selector`,
109
- category: `Possible Errors`,
110
- recommended: false,
111
- url: ``
112
- },
113
- schema: []
114
- },
115
- create(context) {
116
- return { CallExpression(node) {
117
- let selectorComputation;
118
- if (`name` in node.callee && node.callee.name === `selectorFamily`) {
119
- if (node.arguments[0].type === `ObjectExpression`) {
120
- const selectorLookupProperty = node.arguments[0].properties.find((prop) => {
121
- return `key` in prop && `name` in prop.key && prop.key.name === `get`;
122
- });
123
- const selectorLookup = selectorLookupProperty?.value;
124
- if (selectorLookup?.type === `FunctionExpression` || selectorLookup?.type === `ArrowFunctionExpression`) {
125
- if (selectorLookup.body.type === `BlockStatement`) {
126
- for (const statement of selectorLookup.body.body) if (statement.type === `ReturnStatement` && statement.argument) selectorComputation = statement.argument;
127
- } else if (selectorLookup.body.type === `FunctionExpression` || selectorLookup.body.type === `ArrowFunctionExpression`) selectorComputation = selectorLookup.body;
128
- }
129
- }
130
- }
131
- if (`name` in node.callee && node.callee.name === `selector`) {
132
- if (node.arguments[0].type === `ObjectExpression`) {
133
- const selectorComputationProperty = node.arguments[0].properties.find((prop) => {
134
- return `key` in prop && `name` in prop.key && prop.key.name === `get`;
135
- });
136
- selectorComputation = selectorComputationProperty?.value;
137
- }
138
- }
139
- if (selectorComputation?.type === `FunctionExpression` || selectorComputation?.type === `ArrowFunctionExpression`) {
140
- const nonDestructuredTransactorsName = selectorComputation.params[0] && `name` in selectorComputation.params[0] ? selectorComputation.params[0].name : void 0;
141
- let awaited;
142
- let awaitNode;
143
- walk(selectorComputation, (n, depth) => {
144
- if (typeof awaited === `number`) {
145
- if (awaited > depth) {
146
- awaited = void 0;
147
- awaitNode = void 0;
148
- }
149
- }
150
- switch (n.type) {
151
- case `AwaitExpression`:
152
- awaited = depth;
153
- awaitNode = n;
154
- break;
155
- case `CallExpression`: if (awaitNode) {
156
- let willReport = false;
157
- switch (n.callee.type) {
158
- case `MemberExpression`:
159
- if (n.callee.object.type === `Identifier` && n.callee.object.name === nonDestructuredTransactorsName && n.callee.property.type === `Identifier` && n.callee.property.name === `get`) willReport = true;
160
- break;
161
- case `Identifier`:
162
- if (n.callee.name === `get`) willReport = true;
163
- break;
164
- }
165
- if (willReport) context.report({
166
- node: awaitNode,
167
- message: `Using await before calling the 'get' transactor is not allowed.`
168
- });
169
- }
170
- }
171
- });
172
- }
173
- } };
174
- }
175
- };
176
-
177
46
  //#endregion
178
47
  //#region src/eslint-plugin/rules/index.ts
179
48
  var rules_exports = {};
180
- __export(rules_exports, {
181
- explicitStateTypes: () => explicitStateTypes,
182
- synchronousSelectorDependencies: () => synchronousSelectorDependencies
183
- });
49
+ __export(rules_exports, { explicitStateTypes: () => explicitStateTypes });
184
50
 
185
51
  //#endregion
186
52
  //#region src/eslint-plugin/index.ts
187
- const plugin = { rules: {
188
- "explicit-state-types": explicitStateTypes,
189
- "synchronous-selector-dependencies": synchronousSelectorDependencies
190
- } };
53
+ const plugin = { rules: { "explicit-state-types": explicitStateTypes } };
191
54
  var eslint_plugin_default = plugin;
192
55
 
193
56
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["explicitStateTypes: ESLintUtils.RuleModule<\n\t`noTypeArgument`,\n\t[],\n\tunknown,\n\tESLintUtils.RuleListener\n>","node: ESTree.Node","callback: (node: ESTree.Node, depth: number) => void","synchronousSelectorDependencies: {\n\tmeta: {\n\t\ttype: RuleType\n\t\tdocs: {\n\t\t\tdescription: string\n\t\t\tcategory: string\n\t\t\trecommended: boolean\n\t\t\turl: string\n\t\t}\n\t\tschema: never[]\n\t}\n\tcreate(context: Rule.RuleContext): Rule.NodeListener\n}","selectorComputation: ESTree.Node | undefined","awaited: number | undefined","awaitNode: ESTree.AwaitExpression | undefined","plugin: ESLint.Plugin"],"sources":["../../src/eslint-plugin/rules/explicit-state-types.ts","../../src/eslint-plugin/walk.ts","../../src/eslint-plugin/rules/synchronous-selector-dependencies.ts","../../src/eslint-plugin/rules/index.ts","../../src/eslint-plugin/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/switch-exhaustiveness-check */\nimport { ESLintUtils } from \"@typescript-eslint/utils\"\n\nconst createRule = ESLintUtils.RuleCreator(\n\t(name) => `https://atom.io.fyi/docs/eslint-plugin#${name}`,\n)\n\nconst STATE_FUNCTIONS = [`atom`, `atomFamily`, `selector`, `selectorFamily`]\n\nexport const explicitStateTypes: ESLintUtils.RuleModule<\n\t`noTypeArgument`,\n\t[],\n\tunknown,\n\tESLintUtils.RuleListener\n> = createRule({\n\tname: `explicit-state-types`,\n\tmeta: {\n\t\ttype: `problem`,\n\t\tdocs: {\n\t\t\tdescription: `State declarations must have generic type arguments directly passed to them`,\n\t\t},\n\t\tmessages: {\n\t\t\tnoTypeArgument: `State declarations must have generic type arguments directly passed to them.`,\n\t\t},\n\t\tschema: [], // no options\n\t},\n\tdefaultOptions: [],\n\tcreate(context) {\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tconst { callee } = node\n\t\t\t\tswitch (callee.type) {\n\t\t\t\t\tcase `Identifier`: {\n\t\t\t\t\t\tif (STATE_FUNCTIONS.includes(callee.name)) {\n\t\t\t\t\t\t\tif (!node.typeArguments) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: `noTypeArgument`,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase `MemberExpression`: {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcallee.property.type === `Identifier` &&\n\t\t\t\t\t\t\tSTATE_FUNCTIONS.includes(callee.property.name)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (!node.typeArguments) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: `noTypeArgument`,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n})\n","/* eslint-disable @typescript-eslint/switch-exhaustiveness-check */\nimport type * as ESTree from \"estree\"\n\nexport function walk(\n\tnode: ESTree.Node,\n\tcallback: (node: ESTree.Node, depth: number) => void,\n\tdepth = 0,\n): void {\n\tcallback(node, depth)\n\n\tswitch (node.type) {\n\t\tcase `AwaitExpression`:\n\t\t\twalk(node.argument, callback, depth + 1)\n\t\t\tbreak\n\t\tcase `FunctionExpression`:\n\t\tcase `ArrowFunctionExpression`:\n\t\t\tfor (const param of node.params) {\n\t\t\t\twalk(param, callback, depth + 1)\n\t\t\t}\n\t\t\twalk(node.body, callback, depth + 1)\n\t\t\tbreak\n\t\tcase `BlockStatement`:\n\t\t\tfor (const statement of node.body) {\n\t\t\t\twalk(statement, callback, depth + 1)\n\t\t\t}\n\t\t\tbreak\n\t\tcase `IfStatement`:\n\t\t\twalk(node.test, callback, depth)\n\t\t\twalk(node.consequent, callback, depth)\n\t\t\tif (node.alternate) {\n\t\t\t\twalk(node.alternate, callback, depth)\n\t\t\t}\n\t\t\tbreak\n\t\tcase `SwitchStatement`:\n\t\t\twalk(node.discriminant, callback, depth + 1)\n\t\t\tfor (const caseOrDefault of node.cases) {\n\t\t\t\twalk(caseOrDefault, callback, depth)\n\t\t\t}\n\t\t\tbreak\n\t\tcase `ReturnStatement`:\n\t\t\tif (node.argument) {\n\t\t\t\twalk(node.argument, callback, depth)\n\t\t\t}\n\t\t\tbreak\n\t\tcase `SwitchCase`:\n\t\t\tif (node.test) {\n\t\t\t\twalk(node.test, callback, depth)\n\t\t\t}\n\t\t\tfor (const statement of node.consequent) {\n\t\t\t\twalk(statement, callback, depth)\n\t\t\t}\n\t\t\tbreak\n\t\tcase `VariableDeclaration`:\n\t\t\tfor (const declaration of node.declarations) {\n\t\t\t\twalk(declaration, callback, depth)\n\t\t\t\tif (declaration.init) {\n\t\t\t\t\twalk(declaration.init, callback, depth)\n\t\t\t\t}\n\t\t\t}\n\t\t\tbreak\n\t\tcase `BinaryExpression`:\n\t\t\twalk(node.left, callback, depth)\n\t\t\twalk(node.right, callback, depth)\n\t\t\tbreak\n\t\tcase `ConditionalExpression`:\n\t\t\twalk(node.test, callback, depth + 1)\n\t\t\twalk(node.consequent, callback, depth + 1)\n\t\t\twalk(node.alternate, callback, depth + 1)\n\t\t\tbreak\n\t\tcase `MemberExpression`:\n\t\t\twalk(node.object, callback, depth)\n\t\t\twalk(node.property, callback, depth)\n\t\t\tbreak\n\t\tcase `CallExpression`:\n\t\t\twalk(node.callee, callback, depth)\n\t\t\tfor (const argument of node.arguments) {\n\t\t\t\twalk(argument, callback, depth)\n\t\t\t}\n\t\t\tbreak\n\t}\n}\n","/* eslint-disable @typescript-eslint/switch-exhaustiveness-check */\nimport type { RuleType } from \"@eslint/core\"\nimport type { Rule } from \"eslint\"\nimport type * as ESTree from \"estree\"\n\nimport { walk } from \"../walk\"\n\nexport const synchronousSelectorDependencies: {\n\tmeta: {\n\t\ttype: RuleType\n\t\tdocs: {\n\t\t\tdescription: string\n\t\t\tcategory: string\n\t\t\trecommended: boolean\n\t\t\turl: string\n\t\t}\n\t\tschema: never[]\n\t}\n\tcreate(context: Rule.RuleContext): Rule.NodeListener\n} = {\n\tmeta: {\n\t\ttype: `problem`,\n\t\tdocs: {\n\t\t\tdescription: `disallow await before calling get on the parameter's get method inside selector`,\n\t\t\tcategory: `Possible Errors`,\n\t\t\trecommended: false,\n\t\t\turl: ``, // URL to documentation page for this rule\n\t\t},\n\t\tschema: [], // no options\n\t},\n\tcreate(context) {\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tlet selectorComputation: ESTree.Node | undefined\n\t\t\t\tif (`name` in node.callee && node.callee.name === `selectorFamily`) {\n\t\t\t\t\tif (node.arguments[0].type === `ObjectExpression`) {\n\t\t\t\t\t\tconst selectorLookupProperty = node.arguments[0].properties.find(\n\t\t\t\t\t\t\t(prop): prop is ESTree.Property => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t`key` in prop && `name` in prop.key && prop.key.name === `get`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t)\n\t\t\t\t\t\tconst selectorLookup = selectorLookupProperty?.value\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tselectorLookup?.type === `FunctionExpression` ||\n\t\t\t\t\t\t\tselectorLookup?.type === `ArrowFunctionExpression`\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (selectorLookup.body.type === `BlockStatement`) {\n\t\t\t\t\t\t\t\tfor (const statement of selectorLookup.body.body) {\n\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\tstatement.type === `ReturnStatement` &&\n\t\t\t\t\t\t\t\t\t\tstatement.argument\n\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\tselectorComputation = statement.argument\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tselectorLookup.body.type === `FunctionExpression` ||\n\t\t\t\t\t\t\t\tselectorLookup.body.type === `ArrowFunctionExpression`\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tselectorComputation = selectorLookup.body\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (`name` in node.callee && node.callee.name === `selector`) {\n\t\t\t\t\tif (node.arguments[0].type === `ObjectExpression`) {\n\t\t\t\t\t\tconst selectorComputationProperty =\n\t\t\t\t\t\t\tnode.arguments[0].properties.find(\n\t\t\t\t\t\t\t\t(prop): prop is ESTree.Property => {\n\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t`key` in prop &&\n\t\t\t\t\t\t\t\t\t\t`name` in prop.key &&\n\t\t\t\t\t\t\t\t\t\tprop.key.name === `get`\n\t\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\tselectorComputation = selectorComputationProperty?.value\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\tselectorComputation?.type === `FunctionExpression` ||\n\t\t\t\t\tselectorComputation?.type === `ArrowFunctionExpression`\n\t\t\t\t) {\n\t\t\t\t\tconst nonDestructuredTransactorsName =\n\t\t\t\t\t\tselectorComputation.params[0] &&\n\t\t\t\t\t\t`name` in selectorComputation.params[0]\n\t\t\t\t\t\t\t? selectorComputation.params[0].name\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\tlet awaited: number | undefined\n\t\t\t\t\tlet awaitNode: ESTree.AwaitExpression | undefined\n\t\t\t\t\twalk(selectorComputation, (n, depth) => {\n\t\t\t\t\t\t// console.log(`${`\\t`.repeat(depth)}${n.type} ${n.name ?? ``}`)\n\t\t\t\t\t\tif (typeof awaited === `number`) {\n\t\t\t\t\t\t\tif (awaited > depth) {\n\t\t\t\t\t\t\t\tawaited = undefined\n\t\t\t\t\t\t\t\tawaitNode = undefined\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch (n.type) {\n\t\t\t\t\t\t\tcase `AwaitExpression`:\n\t\t\t\t\t\t\t\tawaited = depth\n\t\t\t\t\t\t\t\tawaitNode = n\n\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\tcase `CallExpression`:\n\t\t\t\t\t\t\t\tif (awaitNode) {\n\t\t\t\t\t\t\t\t\tlet willReport = false\n\t\t\t\t\t\t\t\t\tswitch (n.callee.type) {\n\t\t\t\t\t\t\t\t\t\tcase `MemberExpression`:\n\t\t\t\t\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t\t\t\t\tn.callee.object.type === `Identifier` &&\n\t\t\t\t\t\t\t\t\t\t\t\tn.callee.object.name ===\n\t\t\t\t\t\t\t\t\t\t\t\t\tnonDestructuredTransactorsName &&\n\t\t\t\t\t\t\t\t\t\t\t\tn.callee.property.type === `Identifier` &&\n\t\t\t\t\t\t\t\t\t\t\t\tn.callee.property.name === `get`\n\t\t\t\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t\t\t\twillReport = true\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t\tcase `Identifier`:\n\t\t\t\t\t\t\t\t\t\t\tif (n.callee.name === `get`) {\n\t\t\t\t\t\t\t\t\t\t\t\twillReport = true\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tif (willReport) {\n\t\t\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\t\t\tnode: awaitNode,\n\t\t\t\t\t\t\t\t\t\t\tmessage: `Using await before calling the 'get' transactor is not allowed.`,\n\t\t\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n} satisfies Rule.RuleModule\n","export * from \"./explicit-state-types\"\nexport * from \"./synchronous-selector-dependencies\"\n","import type { ESLint } from \"eslint\"\n\nimport * as Rules from \"./rules\"\n\nexport { Rules }\n\nconst plugin: ESLint.Plugin = {\n\trules: {\n\t\t\"explicit-state-types\": Rules.explicitStateTypes as any,\n\t\t\"synchronous-selector-dependencies\": Rules.synchronousSelectorDependencies,\n\t},\n} satisfies ESLint.Plugin\n\nexport default plugin\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["explicitStateTypes: ESLintUtils.RuleModule<\n\t`noTypeArgument`,\n\t[],\n\tunknown,\n\tESLintUtils.RuleListener\n>","plugin: ESLint.Plugin"],"sources":["../../src/eslint-plugin/rules/explicit-state-types.ts","../../src/eslint-plugin/rules/index.ts","../../src/eslint-plugin/index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/switch-exhaustiveness-check */\nimport { ESLintUtils } from \"@typescript-eslint/utils\"\n\nconst createRule = ESLintUtils.RuleCreator(\n\t(name) => `https://atom.io.fyi/docs/eslint-plugin#${name}`,\n)\n\nconst STATE_FUNCTIONS = [\n\t`atom`,\n\t`atomFamily`,\n\t`mutableAtom`,\n\t`mutableAtomFamily`,\n\t`selector`,\n\t`selectorFamily`,\n]\n\nexport const explicitStateTypes: ESLintUtils.RuleModule<\n\t`noTypeArgument`,\n\t[],\n\tunknown,\n\tESLintUtils.RuleListener\n> = createRule({\n\tname: `explicit-state-types`,\n\tmeta: {\n\t\ttype: `problem`,\n\t\tdocs: {\n\t\t\tdescription: `State declarations must have generic type arguments directly passed to them`,\n\t\t},\n\t\tmessages: {\n\t\t\tnoTypeArgument: `State declarations must have generic type arguments directly passed to them.`,\n\t\t},\n\t\tschema: [], // no options\n\t},\n\tdefaultOptions: [],\n\tcreate(context) {\n\t\treturn {\n\t\t\tCallExpression(node) {\n\t\t\t\tconst { callee } = node\n\t\t\t\tswitch (callee.type) {\n\t\t\t\t\tcase `Identifier`: {\n\t\t\t\t\t\tif (STATE_FUNCTIONS.includes(callee.name)) {\n\t\t\t\t\t\t\tif (!node.typeArguments) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: `noTypeArgument`,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak\n\t\t\t\t\t}\n\t\t\t\t\tcase `MemberExpression`: {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tcallee.property.type === `Identifier` &&\n\t\t\t\t\t\t\tSTATE_FUNCTIONS.includes(callee.property.name)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tif (!node.typeArguments) {\n\t\t\t\t\t\t\t\tcontext.report({\n\t\t\t\t\t\t\t\t\tnode,\n\t\t\t\t\t\t\t\t\tmessageId: `noTypeArgument`,\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t}\n\t},\n})\n","export * from \"./explicit-state-types\"\n","import type { ESLint } from \"eslint\"\n\nimport * as Rules from \"./rules\"\n\nexport { Rules }\n\nconst plugin: ESLint.Plugin = {\n\trules: {\n\t\t\"explicit-state-types\": Rules.explicitStateTypes as any,\n\t},\n} satisfies ESLint.Plugin\n\nexport default plugin\n"],"mappings":";;;;AAGA,MAAM,aAAa,YAAY,YAC9B,CAAC,SAAS,CAAC,uCAAuC,EAAE,MAAM,CAC1D;AAED,MAAM,kBAAkB;CACvB,CAAC,IAAI,CAAC;CACN,CAAC,UAAU,CAAC;CACZ,CAAC,WAAW,CAAC;CACb,CAAC,iBAAiB,CAAC;CACnB,CAAC,QAAQ,CAAC;CACV,CAAC,cAAc,CAAC;AAChB;AAED,MAAaA,qBAKT,WAAW;CACd,MAAM,CAAC,oBAAoB,CAAC;CAC5B,MAAM;EACL,MAAM,CAAC,OAAO,CAAC;EACf,MAAM,EACL,aAAa,CAAC,2EAA2E,CAAC,CAC1F;EACD,UAAU,EACT,gBAAgB,CAAC,4EAA4E,CAAC,CAC9F;EACD,QAAQ,CAAE;CACV;CACD,gBAAgB,CAAE;CAClB,OAAO,SAAS;AACf,SAAO,EACN,eAAe,MAAM;GACpB,MAAM,EAAE,QAAQ,GAAG;AACnB,WAAQ,OAAO,MAAf;IACC,KAAK,CAAC,UAAU,CAAC;AAChB,SAAI,gBAAgB,SAAS,OAAO,KAAK,EACxC;UAAI,CAAC,KAAK,eACT,QAAQ,OAAO;OACd;OACA,WAAW,CAAC,cAAc,CAAC;MAC3B,EAAC;KACF;AAEF;IAED,KAAK,CAAC,gBAAgB,CAAC,CACtB,KACC,OAAO,SAAS,SAAS,CAAC,UAAU,CAAC,IACrC,gBAAgB,SAAS,OAAO,SAAS,KAAK,EAE9C;SAAI,CAAC,KAAK,eACT,QAAQ,OAAO;MACd;MACA,WAAW,CAAC,cAAc,CAAC;KAC3B,EAAC;IACF;GAGH;EACD,EACD;CACD;AACD,EAAC;;;;;;;;;AE7DF,MAAMC,SAAwB,EAC7B,OAAO,EACN,2CACA,EACD;AAED,4BAAe"}
@@ -1,7 +1,7 @@
1
1
  import { Func as Func$1, Store as Store$1 } from "atom.io/internal";
2
- import { Canonical, Json, JsonInterface, stringified } from "atom.io/json";
2
+ import { Canonical, Json, stringified } from "atom.io/json";
3
3
  import { Above, ActorToolkit, Anarchy, AtomFamilyToken, AtomIOLogger, AtomIOToken, AtomToken, Claim, CompoundFrom, CompoundTypedKey, FamilyMetadata, HeldSelectorFamilyToken, HeldSelectorToken, Hierarchy, JoinOptions, JoinStates, JoinToken, KeyedStateUpdate, Logger, MoleculeCreation, MoleculeDisposal, MoleculeTransfer, MutableAtomFamilyOptions, MutableAtomFamilyToken, MutableAtomOptions, MutableAtomToken, PureSelectorFamilyToken, PureSelectorToken, ReadableFamilyToken, ReadableToken, ReadonlyHeldSelectorFamilyOptions, ReadonlyHeldSelectorFamilyToken, ReadonlyHeldSelectorOptions, ReadonlyHeldSelectorToken, ReadonlyPureSelectorFamilyOptions, ReadonlyPureSelectorFamilyToken, ReadonlyPureSelectorOptions, ReadonlyPureSelectorToken, ReadonlySelectorFamilyToken, ReadonlySelectorToken, RegularAtomFamilyOptions, RegularAtomFamilyToken, RegularAtomOptions, RegularAtomToken, SelectorFamilyToken, SelectorToken, SingularTypedKey, StateCreation, StateDisposal, StateUpdate, TimelineManageable, TimelineOptions, TimelineToken, TimelineUpdate, TokenType, TransactionOptions, TransactionToken, TransactionUpdate, TransactionUpdateHandler, UpdateHandler, Vassal, WritableFamilyToken, WritableHeldSelectorFamilyOptions, WritableHeldSelectorFamilyToken, WritableHeldSelectorOptions, WritableHeldSelectorToken, WritablePureSelectorFamilyOptions, WritablePureSelectorFamilyToken, WritablePureSelectorOptions, WritablePureSelectorToken, WritableSelectorFamilyToken, WritableSelectorToken, WritableToken, WriterToolkit } from "atom.io";
4
- import { SetRTX, SetRTXJson } from "atom.io/transceivers/set-rtx";
4
+ import { SetRTX } from "atom.io/transceivers/set-rtx";
5
5
 
6
6
  //#region src/internal/store/circular-buffer.d.ts
7
7
  declare class CircularBuffer<T> {
@@ -25,7 +25,7 @@ declare const FAMILY_MEMBER_TOKEN_TYPES: {
25
25
  readonly writable_held_selector_family: "writable_held_selector";
26
26
  readonly writable_pure_selector_family: "writable_pure_selector";
27
27
  };
28
- declare function counterfeit<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J>;
28
+ declare function counterfeit<T extends Transceiver<any, any>, K extends Canonical, Key extends K>(token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T>;
29
29
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T>;
30
30
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: AtomFamilyToken<T, K>, key: Key): AtomToken<T>;
31
31
  declare function counterfeit<T, K extends Canonical, Key extends K>(token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T>;
@@ -200,7 +200,7 @@ type TransactionEpoch = {
200
200
  //#endregion
201
201
  //#region src/internal/store/deposit.d.ts
202
202
  declare function deposit<T>(state: RegularAtom<T>): RegularAtomToken<T>;
203
- declare function deposit<T extends Transceiver<any>>(state: MutableAtom<T, any>): MutableAtomToken<T, any>;
203
+ declare function deposit<T extends Transceiver<any, any>>(state: MutableAtom<T>): MutableAtomToken<T>;
204
204
  declare function deposit<T>(state: Atom<T>): AtomToken<T>;
205
205
  declare function deposit<T>(state: WritablePureSelector<T>): WritablePureSelectorToken<T>;
206
206
  declare function deposit<T>(state: ReadonlyPureSelector<T>): ReadonlyPureSelectorToken<T>;
@@ -208,7 +208,7 @@ declare function deposit<T>(state: Selector<T>): SelectorToken<T>;
208
208
  declare function deposit<T>(state: WritableState<T>): WritableToken<T>;
209
209
  declare function deposit<T>(state: ReadableState<T>): ReadableToken<T>;
210
210
  declare function deposit<T, K extends Canonical>(state: RegularAtomFamily<T, K>): RegularAtomFamilyToken<T, K>;
211
- declare function deposit<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(state: MutableAtomFamily<T, J, K>): MutableAtomFamilyToken<T, J, K>;
211
+ declare function deposit<T extends Transceiver<any, any>, K extends Canonical>(state: MutableAtomFamily<T, K>): MutableAtomFamilyToken<T, K>;
212
212
  declare function deposit<T>(state: AtomFamily<T, any>): AtomFamilyToken<T, any>;
213
213
  declare function deposit<T>(state: WritablePureSelectorFamily<T, any>): WritablePureSelectorFamilyToken<T, any>;
214
214
  declare function deposit<T>(state: ReadonlyPureSelectorFamily<T, any>): ReadonlyPureSelectorFamilyToken<T, any>;
@@ -229,7 +229,7 @@ declare function editRelationsInStore<ASide extends string, AType extends string
229
229
  declare function findRelationsInStore<ASide extends string, AType extends string, BSide extends string, BType extends string, Cardinality extends `1:1` | `1:n` | `n:n`, Content extends Json.Object | null>(token: JoinToken<ASide, AType, BSide, BType, Cardinality, Content>, key: AType | BType, store: Store): JoinStates<ASide, AType, BSide, BType, Cardinality, Content>;
230
230
  //#endregion
231
231
  //#region src/internal/join/get-internal-relations-from-store.d.ts
232
- declare function getInternalRelationsFromStore(token: JoinToken<any, any, any, any, any, any>, store: Store): MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string>;
232
+ declare function getInternalRelationsFromStore(token: JoinToken<any, any, any, any, any, any>, store: Store): MutableAtomFamilyToken<SetRTX<string>, string>;
233
233
  //#endregion
234
234
  //#region src/internal/molecule.d.ts
235
235
  type Molecule<K extends Canonical> = {
@@ -253,7 +253,7 @@ declare class Join<const ASide extends string, const AType extends string, const
253
253
  relations: Junction<ASide, AType, BSide, BType, Content>;
254
254
  states: JoinStateFamilies<ASide, AType, BSide, BType, Cardinality, Content>;
255
255
  core: {
256
- relatedKeysAtoms: MutableAtomFamilyToken<SetRTX<string>, SetRTXJson<string>, string>;
256
+ relatedKeysAtoms: MutableAtomFamilyToken<SetRTX<string>, string>;
257
257
  };
258
258
  transact(toolkit: WriterToolkit, run: (join: Join<ASide, AType, BSide, BType, Cardinality, Content>) => void): void;
259
259
  store: Store;
@@ -349,8 +349,8 @@ declare class Store implements Lineage {
349
349
  selectorGraph: Junction<`upstreamSelectorKey`, string, `downstreamSelectorKey`, string, {
350
350
  source: string;
351
351
  }>;
352
- trackers: Map<string, Tracker<Transceiver<any>>>;
353
- families: Map<string, HeldSelectorFamily<any, any> | MutableAtomFamily<any, any, any> | PureSelectorFamily<any, any> | RegularAtomFamily<any, any>>;
352
+ trackers: Map<string, Tracker<Transceiver<any, any>>>;
353
+ families: Map<string, HeldSelectorFamily<any, any> | MutableAtomFamily<any, any> | PureSelectorFamily<any, any> | RegularAtomFamily<any, any>>;
354
354
  joins: Map<string, Join<any, any, any, any, any, any>>;
355
355
  transactions: Map<string, Transaction<Func>>;
356
356
  transactionMeta: TransactionEpoch | TransactionProgress<Func>;
@@ -401,7 +401,7 @@ declare const clearStore: (store: Store) => void;
401
401
  //#endregion
402
402
  //#region src/internal/store/withdraw.d.ts
403
403
  declare function withdraw<T>(store: Store, token: RegularAtomToken<T>): RegularAtom<T>;
404
- declare function withdraw<T extends Transceiver<any>>(store: Store, token: MutableAtomToken<T, any>): MutableAtom<T, any>;
404
+ declare function withdraw<T extends Transceiver<any, any>>(store: Store, token: MutableAtomToken<T, any>): MutableAtom<T>;
405
405
  declare function withdraw<T>(store: Store, token: AtomToken<T>): Atom<T>;
406
406
  declare function withdraw<T>(store: Store, token: WritableHeldSelectorToken<T>): WritableHeldSelector<T>;
407
407
  declare function withdraw<T>(store: Store, token: ReadonlyHeldSelectorToken<T>): ReadonlyHeldSelector<T>;
@@ -415,7 +415,7 @@ declare function withdraw<T>(store: Store, token: SelectorToken<T>): Selector<T>
415
415
  declare function withdraw<T>(store: Store, token: WritableToken<T>): WritableState<T>;
416
416
  declare function withdraw<T>(store: Store, token: ReadableToken<T>): ReadableState<T>;
417
417
  declare function withdraw<T, K extends Canonical>(store: Store, token: RegularAtomFamilyToken<T, K>): RegularAtomFamily<T, K>;
418
- declare function withdraw<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, token: MutableAtomFamilyToken<T, J, K>): MutableAtomFamily<T, J, K>;
418
+ declare function withdraw<T extends Transceiver<any, any>, K extends Canonical>(store: Store, token: MutableAtomFamilyToken<T, K>): MutableAtomFamily<T, K>;
419
419
  declare function withdraw<T, K extends Canonical>(store: Store, token: AtomFamilyToken<T, K>): AtomFamily<T, K>;
420
420
  declare function withdraw<T, K extends Canonical>(store: Store, token: ReadonlyHeldSelectorFamilyToken<T, K>): ReadonlyHeldSelectorFamily<T, K>;
421
421
  declare function withdraw<T, K extends Canonical>(store: Store, token: WritableHeldSelectorFamilyToken<T, K>): WritableHeldSelectorFamily<T, K>;
@@ -435,34 +435,40 @@ declare function withdraw<T>(store: Store, token: ReadableToken<T>): ReadableSta
435
435
  declare function withdraw(store: Store, token: AtomIOToken): AtomIOInternalResource;
436
436
  //#endregion
437
437
  //#region src/internal/mutable/transceiver.d.ts
438
- interface Transceiver<S extends Json.Serializable> {
438
+ interface Transceiver<S extends Json.Serializable, J extends Json.Serializable> {
439
439
  do: (update: S) => number | `OUT_OF_RANGE` | null;
440
440
  undo: (update: S) => void;
441
441
  subscribe: (key: string, fn: (update: S) => void) => () => void;
442
442
  cacheUpdateNumber: number;
443
443
  getUpdateNumber: (update: S) => number;
444
+ toJSON: () => J;
444
445
  }
445
- declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable>;
446
+ type TransceiverConstructor<J extends Json.Serializable, T extends Transceiver<any, J>> = (new () => T) & {
447
+ fromJSON: (json: J) => T;
448
+ };
449
+ declare function isTransceiver(value: unknown): value is Transceiver<Json.Serializable, Json.Serializable>;
446
450
  type TransceiverMode = `playback` | `record` | `transaction`;
447
- type Signal$1<TVR extends Transceiver<any>> = TVR extends Transceiver<infer S> ? S : never;
451
+ type SignalFrom<T extends Transceiver<any, any>> = T extends Transceiver<infer S, any> ? S : never;
452
+ type AsJSON<T extends Transceiver<any, any>> = T extends Transceiver<any, infer J> ? J : never;
453
+ type ConstructorOf<T extends Transceiver<any, any>> = TransceiverConstructor<AsJSON<T>, T>;
448
454
  //#endregion
449
455
  //#region src/internal/mutable/create-mutable-atom.d.ts
450
- declare function createMutableAtom<T extends Transceiver<any>, J extends Json.Serializable>(store: Store, options: MutableAtomOptions<T, J>, family: FamilyMetadata | undefined): MutableAtomToken<T, J>;
456
+ declare function createMutableAtom<T extends Transceiver<any, any>>(store: Store, options: MutableAtomOptions<T>, family: FamilyMetadata | undefined): MutableAtomToken<T>;
451
457
  //#endregion
452
458
  //#region src/internal/mutable/create-mutable-atom-family.d.ts
453
- declare function createMutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical>(store: Store, options: MutableAtomFamilyOptions<T, J, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, J, K>;
459
+ declare function createMutableAtomFamily<T extends Transceiver<any, any>, K extends Canonical>(store: Store, options: MutableAtomFamilyOptions<T, K>, internalRoles?: string[]): MutableAtomFamilyToken<T, K>;
454
460
  //#endregion
455
461
  //#region src/internal/mutable/get-json-family.d.ts
456
- declare const getJsonFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends Canonical>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => WritablePureSelectorFamily<SerializableCore, Key>;
462
+ declare const getJsonFamily: <Core extends Transceiver<Json.Serializable, Json.Serializable>, Key extends Canonical>(mutableAtomFamily: MutableAtomFamilyToken<Core, Key>, store: Store) => WritablePureSelectorFamily<ReturnType<Core[`toJSON`]>, Key>;
457
463
  //#endregion
458
464
  //#region src/internal/mutable/get-json-token.d.ts
459
- declare const getJsonToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(store: Store, mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => WritablePureSelectorToken<SerializableCore>;
465
+ declare const getJsonToken: <T extends Transceiver<any, any>>(store: Store, mutableAtomToken: MutableAtomToken<T>) => WritablePureSelectorToken<AsJSON<T>>;
460
466
  //#endregion
461
467
  //#region src/internal/mutable/get-update-family.d.ts
462
- declare const getUpdateFamily: <Core extends Transceiver<Json.Serializable>, SerializableCore extends Json.Serializable, Key extends string>(mutableAtomFamily: MutableAtomFamilyToken<Core, SerializableCore, Key>, store: Store) => AtomFamily<Signal$1<Core>, Key>;
468
+ declare const getUpdateFamily: <T extends Transceiver<Json.Serializable, Json.Serializable>, K extends string>(mutableAtomFamily: MutableAtomFamilyToken<T, K>, store: Store) => AtomFamily<SignalFrom<T>, K>;
463
469
  //#endregion
464
470
  //#region src/internal/mutable/get-update-token.d.ts
465
- declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore extends Json.Serializable>(mutableAtomToken: MutableAtomToken<Core, SerializableCore>) => RegularAtomToken<Signal$1<Core>>;
471
+ declare const getUpdateToken: <T extends Transceiver<any, any>>(mutableAtomToken: MutableAtomToken<T>) => RegularAtomToken<SignalFrom<T>>;
466
472
  //#endregion
467
473
  //#region src/internal/mutable/tracker.d.ts
468
474
  /**
@@ -470,24 +476,24 @@ declare const getUpdateToken: <Core extends Transceiver<any>, SerializableCore e
470
476
  * subscribe to the transceiver's inner value. When the inner value changes,
471
477
  * the tracker will update its own state to reflect the change.
472
478
  */
473
- declare class Tracker<Mutable extends Transceiver<any>> {
479
+ declare class Tracker<T extends Transceiver<any, any>> {
474
480
  private initializeState;
475
481
  private unsubscribeFromInnerValue;
476
482
  private unsubscribeFromState;
477
- private observeCore;
478
- private updateCore;
479
- mutableState: MutableAtomToken<Mutable, Json.Serializable>;
480
- latestUpdateState: RegularAtomToken<(Mutable extends Transceiver<infer Signal> ? Signal : never) | null>;
483
+ private captureSignalsFromCore;
484
+ private supplySignalsToCore;
485
+ mutableAtomToken: MutableAtomToken<T>;
486
+ latestSignalToken: RegularAtomToken<SignalFrom<T> | null>;
481
487
  [Symbol.dispose]: () => void;
482
- constructor(mutableState: MutableAtomToken<Mutable, Json.Serializable>, store: Store);
488
+ constructor(mutableAtomToken: MutableAtomToken<T>, store: Store);
483
489
  }
484
490
  //#endregion
485
491
  //#region src/internal/mutable/tracker-family.d.ts
486
- declare class FamilyTracker<Core extends Transceiver<any>, FamilyMemberKey extends Canonical> {
492
+ declare class FamilyTracker<T extends Transceiver<any, any>, K extends Canonical> {
487
493
  private trackers;
488
- readonly latestUpdateAtoms: RegularAtomFamily<(Core extends Transceiver<infer Signal> ? Signal : never) | null, FamilyMemberKey>;
489
- readonly mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>;
490
- constructor(mutableAtoms: MutableAtomFamily<Core, any, FamilyMemberKey>, store: Store);
494
+ readonly latestUpdateAtoms: RegularAtomFamily<(T extends Transceiver<infer Signal, any> ? Signal : never) | null, K>;
495
+ readonly mutableAtoms: MutableAtomFamily<T, K>;
496
+ constructor(mutableAtoms: MutableAtomFamily<T, K>, store: Store);
491
497
  }
492
498
  //#endregion
493
499
  //#region src/internal/arbitrary.d.ts
@@ -549,7 +555,7 @@ declare function disposeFromStore(store: Store, token: ReadableToken<any>): void
549
555
  declare function disposeFromStore<K extends Canonical>(store: Store, token: ReadableFamilyToken<any, K>, key: K): void;
550
556
  //#endregion
551
557
  //#region src/internal/families/find-in-store.d.ts
552
- declare function findInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>;
558
+ declare function findInStore<T extends Transceiver<any, any>, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, K>;
553
559
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
554
560
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K>;
555
561
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T, K>;
@@ -559,7 +565,7 @@ declare function findInStore<T, K extends Canonical, Key extends K>(store: Store
559
565
  declare function findInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
560
566
  //#endregion
561
567
  //#region src/internal/families/init-family-member.d.ts
562
- declare function initFamilyMemberInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K>;
568
+ declare function initFamilyMemberInStore<T extends Transceiver<any, any>, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, K>;
563
569
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K>;
564
570
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K>;
565
571
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T, K>;
@@ -569,7 +575,7 @@ declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(
569
575
  declare function initFamilyMemberInStore<T, K extends Canonical, Key extends K>(store: Store, token: ReadableFamilyToken<T, K>, key: Key): ReadableToken<T, K>;
570
576
  //#endregion
571
577
  //#region src/internal/families/seek-in-store.d.ts
572
- declare function seekInStore<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, J, K>, key: Key): MutableAtomToken<T, J, K> | undefined;
578
+ declare function seekInStore<T extends Transceiver<any, any>, K extends Canonical, Key extends K>(store: Store, token: MutableAtomFamilyToken<T, K>, key: Key): MutableAtomToken<T, K> | undefined;
573
579
  declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: RegularAtomFamilyToken<T, K>, key: Key): RegularAtomToken<T, K> | undefined;
574
580
  declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: AtomFamilyToken<T, K>, key: Key): AtomToken<T, K> | undefined;
575
581
  declare function seekInStore<T, K extends Canonical, Key extends K>(store: Store, token: WritablePureSelectorFamilyToken<T, K>, key: Key): WritablePureSelectorToken<T, K> | undefined;
@@ -751,12 +757,12 @@ type RegularAtom<T> = Flat<AtomIOState & {
751
757
  default: T | (() => T);
752
758
  cleanup?: () => void;
753
759
  }>;
754
- type MutableAtom<T extends Transceiver<any>, J extends Json.Serializable> = Flat<AtomIOState & JsonInterface<T, J> & {
760
+ type MutableAtom<T extends Transceiver<any, any>> = Flat<AtomIOState & {
755
761
  type: `mutable_atom`;
756
- default: () => T;
762
+ class: ConstructorOf<T>;
757
763
  cleanup?: () => void;
758
764
  }>;
759
- type Atom<T> = RegularAtom<T> | (T extends Transceiver<any> ? MutableAtom<T, any> : never);
765
+ type Atom<T> = RegularAtom<T> | (T extends Transceiver<any, any> ? MutableAtom<T> : never);
760
766
  type WritableHeldSelector<T> = Flat<AtomIOState & {
761
767
  type: `writable_held_selector`;
762
768
  const: T;
@@ -790,12 +796,12 @@ type RegularAtomFamily<T, K extends Canonical> = RegularAtomFamilyToken<T, K> &
790
796
  internalRoles: string[] | undefined;
791
797
  subject: Subject<StateCreation<AtomToken<T>> | StateDisposal<AtomToken<T>>>;
792
798
  };
793
- type MutableAtomFamily<T extends Transceiver<any>, J extends Json.Serializable, K extends Canonical> = Flat<JsonInterface<T, J> & MutableAtomFamilyToken<T, J, K> & {
799
+ type MutableAtomFamily<T extends Transceiver<any, any>, K extends Canonical> = Flat<MutableAtomFamilyToken<T, K> & {
794
800
  install: (store: Store) => void;
795
801
  internalRoles: string[] | undefined;
796
- subject: Subject<StateCreation<MutableAtomToken<T, J>> | StateDisposal<MutableAtomToken<T, J>>>;
797
- }> & ((key: K) => MutableAtomToken<T, J>);
798
- type AtomFamily<T, K extends Canonical = Canonical> = MutableAtomFamily<T extends Transceiver<any> ? T : never, any, K> | RegularAtomFamily<T, K>;
802
+ subject: Subject<StateCreation<MutableAtomToken<T>> | StateDisposal<MutableAtomToken<T>>>;
803
+ }> & ((key: K) => MutableAtomToken<T>);
804
+ type AtomFamily<T, K extends Canonical = Canonical> = MutableAtomFamily<T extends Transceiver<any, any> ? T : never, K> | RegularAtomFamily<T, K>;
799
805
  type WritablePureSelectorFamily<T, K extends Canonical> = Flat<WritablePureSelectorFamilyToken<T, K> & {
800
806
  default: (key: K) => T;
801
807
  install: (store: Store) => void;
@@ -829,5 +835,5 @@ type WritableFamily<T, K extends Canonical> = AtomFamily<T, K> | WritablePureSel
829
835
  type ReadableFamily<T, K extends Canonical> = AtomFamily<T, K> | SelectorFamily<T, K>;
830
836
  type AtomIOInternalResource = ReadableFamily<any, any> | ReadableState<any> | Timeline<any> | Transaction<any>;
831
837
  //#endregion
832
- export { Atom, AtomFamily, AtomIOInternalResource, AtomIOState, AtomKey, BaseExternalStoreConfiguration, ChildStore, CircularBuffer, Count, Each, Empty, EnvironmentData, ExternalStoreConfiguration, ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Flat, Func, Future, HeldSelector, HeldSelectorFamily, IMPLICIT, Join, JoinStateFamilies, Junction, JunctionAdvancedConfiguration, JunctionEntries, JunctionEntriesBase, JunctionJSON, JunctionSchema, JunctionSchemaBase, LazyMap, Lineage, Modify, Molecule, MutableAtom, MutableAtomFamily, NotFoundError, OperationProgress, PureSelector, PureSelectorFamily, ReadableFamily, ReadableState, ReadonlyHeldSelector, ReadonlyHeldSelectorFamily, ReadonlyPureSelector, ReadonlyPureSelectorFamily, ReadonlySelector, ReadonlySelectorFamily, ReadonlySelectorKey, Refinement, RegularAtom, RegularAtomFamily, ReservedIntrospectionKey, RootStore, Selector, SelectorFamily, SelectorKey, Signal$1 as Signal, StateKey, StatefulSubject, Store, StoreEventCarrier, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineMoleculeCreation, TimelineMoleculeDisposal, TimelineSelectorUpdate, TimelineStateCreation, TimelineStateDisposal, TimelineTransactionUpdate, Tracker, Transaction, TransactionEpoch, TransactionPhase, TransactionProgress, Transceiver, TransceiverMode, WritableFamily, WritableHeldSelector, WritableHeldSelectorFamily, WritablePureSelector, WritablePureSelectorFamily, WritableSelector, WritableSelectorFamily, WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, installIntoStore, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw };
838
+ export { AsJSON, Atom, AtomFamily, AtomIOInternalResource, AtomIOState, AtomKey, BaseExternalStoreConfiguration, ChildStore, CircularBuffer, ConstructorOf, Count, Each, Empty, EnvironmentData, ExternalStoreConfiguration, ExternalStoreWithContentConfiguration, FAMILY_MEMBER_TOKEN_TYPES, FamilyTracker, Flat, Func, Future, HeldSelector, HeldSelectorFamily, IMPLICIT, Join, JoinStateFamilies, Junction, JunctionAdvancedConfiguration, JunctionEntries, JunctionEntriesBase, JunctionJSON, JunctionSchema, JunctionSchemaBase, LazyMap, Lineage, Modify, Molecule, MutableAtom, MutableAtomFamily, NotFoundError, OperationProgress, PureSelector, PureSelectorFamily, ReadableFamily, ReadableState, ReadonlyHeldSelector, ReadonlyHeldSelectorFamily, ReadonlyPureSelector, ReadonlyPureSelectorFamily, ReadonlySelector, ReadonlySelectorFamily, ReadonlySelectorKey, Refinement, RegularAtom, RegularAtomFamily, ReservedIntrospectionKey, RootStore, Selector, SelectorFamily, SelectorKey, SignalFrom, StateKey, StatefulSubject, Store, StoreEventCarrier, Subject, TRANSACTION_PHASES, Timeline, TimelineAtomUpdate, TimelineMoleculeCreation, TimelineMoleculeDisposal, TimelineSelectorUpdate, TimelineStateCreation, TimelineStateDisposal, TimelineTransactionUpdate, Tracker, Transaction, TransactionEpoch, TransactionPhase, TransactionProgress, Transceiver, TransceiverConstructor, TransceiverMode, WritableFamily, WritableHeldSelector, WritableHeldSelectorFamily, WritablePureSelector, WritablePureSelectorFamily, WritableSelector, WritableSelectorFamily, WritableState, abortTransaction, actUponStore, allocateIntoStore, applyTransaction, arbitrary, assignTransactionToContinuity, become, buildTransaction, cacheValue, capitalize, claimWithinStore, clearStore, closeOperation, counterfeit, createJoin, createMutableAtom, createMutableAtomFamily, createReadonlyHeldSelector, createReadonlyPureSelector, createReadonlyPureSelectorFamily, createRegularAtom, createRegularAtomFamily, createSelectorFamily, createStandaloneSelector, createTimeline, createTransaction, createWritableHeldSelector, createWritablePureSelector, createWritablePureSelectorFamily, deallocateFromStore, deposit, disposeAtom, disposeFromStore, disposeSelector, editRelationsInStore, evictCachedValue, findInStore, findRelationsInStore, fuseWithinStore, getContinuityKey, getEnvironmentData, getEpochNumberOfAction, getEpochNumberOfContinuity, getFromStore, getInternalRelationsFromStore, getJoin, getJsonFamily, getJsonToken, getSelectorDependencyKeys, getTrace, getUpdateFamily, getUpdateToken, ingestAtomUpdate, ingestCreationEvent, ingestDisposalEvent, ingestMoleculeCreationEvent, ingestMoleculeDisposalEvent, ingestMoleculeTransferEvent, ingestSelectorUpdate, ingestTransactionUpdate, initFamilyMemberInStore, installIntoStore, isAtomKey, isChildStore, isDone, isReadonlySelectorKey, isReservedIntrospectionKey, isRootStore, isSelectorKey, isStateKey, isTransceiver, makeRootMoleculeInStore, markDone, newest, openOperation, prettyPrintTokenType, readCachedValue, readOrComputeValue, recallState, registerSelector, resetAtomOrSelector, resetInStore, seekInStore, setAtomOrSelector, setEpochNumberOfAction, setEpochNumberOfContinuity, setIntoStore, subscribeInStore, subscribeToRootDependency, subscribeToState, subscribeToTimeline, subscribeToTransaction, timeTravel, traceRootSelectorAtoms, updateSelectorAtoms, withdraw };
833
839
  //# sourceMappingURL=index.d.ts.map