jazz-tools 0.10.14 → 0.11.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 (150) hide show
  1. package/.turbo/turbo-build.log +11 -7
  2. package/CHANGELOG.md +31 -0
  3. package/dist/auth/AuthSecretStorage.d.ts +25 -0
  4. package/dist/auth/AuthSecretStorage.d.ts.map +1 -0
  5. package/dist/auth/DemoAuth.d.ts +27 -0
  6. package/dist/auth/DemoAuth.d.ts.map +1 -0
  7. package/dist/auth/InMemoryKVStore.d.ts +9 -0
  8. package/dist/auth/InMemoryKVStore.d.ts.map +1 -0
  9. package/dist/auth/KvStoreContext.d.ts +17 -0
  10. package/dist/auth/KvStoreContext.d.ts.map +1 -0
  11. package/dist/auth/PassphraseAuth.d.ts +35 -0
  12. package/dist/auth/PassphraseAuth.d.ts.map +1 -0
  13. package/dist/{chunk-5YDDEUNX.js → chunk-RTRX7HIO.js} +193 -81
  14. package/dist/chunk-RTRX7HIO.js.map +1 -0
  15. package/dist/coValues/account.d.ts +120 -0
  16. package/dist/coValues/account.d.ts.map +1 -0
  17. package/dist/coValues/coFeed.d.ts +361 -0
  18. package/dist/coValues/coFeed.d.ts.map +1 -0
  19. package/dist/coValues/coList.d.ts +221 -0
  20. package/dist/coValues/coList.d.ts.map +1 -0
  21. package/dist/coValues/coMap.d.ts +500 -0
  22. package/dist/coValues/coMap.d.ts.map +1 -0
  23. package/dist/coValues/coPlainText.d.ts +69 -0
  24. package/dist/coValues/coPlainText.d.ts.map +1 -0
  25. package/dist/coValues/coRichText.d.ts +259 -0
  26. package/dist/coValues/coRichText.d.ts.map +1 -0
  27. package/dist/coValues/deepLoading.d.ts +81 -0
  28. package/dist/coValues/deepLoading.d.ts.map +1 -0
  29. package/dist/coValues/extensions/imageDef.d.ts +17 -0
  30. package/dist/coValues/extensions/imageDef.d.ts.map +1 -0
  31. package/dist/coValues/group.d.ts +67 -0
  32. package/dist/coValues/group.d.ts.map +1 -0
  33. package/dist/coValues/inbox.d.ts +52 -0
  34. package/dist/coValues/inbox.d.ts.map +1 -0
  35. package/dist/coValues/interfaces.d.ts +97 -0
  36. package/dist/coValues/interfaces.d.ts.map +1 -0
  37. package/dist/coValues/profile.d.ts +28 -0
  38. package/dist/coValues/profile.d.ts.map +1 -0
  39. package/dist/coValues/registeredSchemas.d.ts +12 -0
  40. package/dist/coValues/registeredSchemas.d.ts.map +1 -0
  41. package/dist/coValues/schemaUnion.d.ts +79 -0
  42. package/dist/coValues/schemaUnion.d.ts.map +1 -0
  43. package/dist/exports.d.ts +27 -0
  44. package/dist/exports.d.ts.map +1 -0
  45. package/dist/implementation/ContextManager.d.ts +65 -0
  46. package/dist/implementation/ContextManager.d.ts.map +1 -0
  47. package/dist/implementation/activeAccountContext.d.ts +12 -0
  48. package/dist/implementation/activeAccountContext.d.ts.map +1 -0
  49. package/dist/implementation/anonymousJazzAgent.d.ts +7 -0
  50. package/dist/implementation/anonymousJazzAgent.d.ts.map +1 -0
  51. package/dist/implementation/createContext.d.ts +91 -0
  52. package/dist/implementation/createContext.d.ts.map +1 -0
  53. package/dist/implementation/devtoolsFormatters.d.ts +2 -0
  54. package/dist/implementation/devtoolsFormatters.d.ts.map +1 -0
  55. package/dist/implementation/errors.d.ts +2 -0
  56. package/dist/implementation/errors.d.ts.map +1 -0
  57. package/dist/implementation/inspect.d.ts +3 -0
  58. package/dist/implementation/inspect.d.ts.map +1 -0
  59. package/dist/implementation/invites.d.ts +23 -0
  60. package/dist/implementation/invites.d.ts.map +1 -0
  61. package/dist/implementation/refs.d.ts +21 -0
  62. package/dist/implementation/refs.d.ts.map +1 -0
  63. package/dist/implementation/schema.d.ts +72 -0
  64. package/dist/implementation/schema.d.ts.map +1 -0
  65. package/dist/implementation/subscriptionScope.d.ts +33 -0
  66. package/dist/implementation/subscriptionScope.d.ts.map +1 -0
  67. package/dist/implementation/symbols.d.ts +8 -0
  68. package/dist/implementation/symbols.d.ts.map +1 -0
  69. package/dist/index.d.ts +3 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +1 -1
  72. package/dist/internal.d.ts +12 -0
  73. package/dist/internal.d.ts.map +1 -0
  74. package/dist/lib/cache.d.ts +6 -0
  75. package/dist/lib/cache.d.ts.map +1 -0
  76. package/dist/lib/cache.test.d.ts +2 -0
  77. package/dist/lib/cache.test.d.ts.map +1 -0
  78. package/dist/testing.d.ts +41 -0
  79. package/dist/testing.d.ts.map +1 -0
  80. package/dist/testing.js +11 -16
  81. package/dist/testing.js.map +1 -1
  82. package/dist/tests/AuthSecretStorage.test.d.ts +2 -0
  83. package/dist/tests/AuthSecretStorage.test.d.ts.map +1 -0
  84. package/dist/tests/ContextManager.test.d.ts +2 -0
  85. package/dist/tests/ContextManager.test.d.ts.map +1 -0
  86. package/dist/tests/DemoAuth.test.d.ts +2 -0
  87. package/dist/tests/DemoAuth.test.d.ts.map +1 -0
  88. package/dist/tests/PassphraseAuth.test.d.ts +2 -0
  89. package/dist/tests/PassphraseAuth.test.d.ts.map +1 -0
  90. package/dist/tests/account.test.d.ts +2 -0
  91. package/dist/tests/account.test.d.ts.map +1 -0
  92. package/dist/tests/coFeed.test.d.ts +2 -0
  93. package/dist/tests/coFeed.test.d.ts.map +1 -0
  94. package/dist/tests/coList.test.d.ts +2 -0
  95. package/dist/tests/coList.test.d.ts.map +1 -0
  96. package/dist/tests/coMap.test.d.ts +2 -0
  97. package/dist/tests/coMap.test.d.ts.map +1 -0
  98. package/dist/tests/coPlainText.test.d.ts +2 -0
  99. package/dist/tests/coPlainText.test.d.ts.map +1 -0
  100. package/dist/tests/coRichText.test.d.ts +2 -0
  101. package/dist/tests/coRichText.test.d.ts.map +1 -0
  102. package/dist/tests/createContext.test.d.ts +2 -0
  103. package/dist/tests/createContext.test.d.ts.map +1 -0
  104. package/dist/tests/deepLoading.test.d.ts +2 -0
  105. package/dist/tests/deepLoading.test.d.ts.map +1 -0
  106. package/dist/tests/fixtures.d.ts +2 -0
  107. package/dist/tests/fixtures.d.ts.map +1 -0
  108. package/dist/tests/groupsAndAccounts.test.d.ts +2 -0
  109. package/dist/tests/groupsAndAccounts.test.d.ts.map +1 -0
  110. package/dist/tests/inbox.test.d.ts +2 -0
  111. package/dist/tests/inbox.test.d.ts.map +1 -0
  112. package/dist/tests/interfaces.test.d.ts +2 -0
  113. package/dist/tests/interfaces.test.d.ts.map +1 -0
  114. package/dist/tests/invites.test.d.ts +2 -0
  115. package/dist/tests/invites.test.d.ts.map +1 -0
  116. package/dist/tests/schema.test.d.ts +2 -0
  117. package/dist/tests/schema.test.d.ts.map +1 -0
  118. package/dist/tests/schemaUnion.test.d.ts +2 -0
  119. package/dist/tests/schemaUnion.test.d.ts.map +1 -0
  120. package/dist/tests/subscribe.test.d.ts +2 -0
  121. package/dist/tests/subscribe.test.d.ts.map +1 -0
  122. package/dist/tests/testing.test.d.ts +2 -0
  123. package/dist/tests/testing.test.d.ts.map +1 -0
  124. package/dist/tests/utils.d.ts +21 -0
  125. package/dist/tests/utils.d.ts.map +1 -0
  126. package/dist/types.d.ts +52 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/package.json +8 -7
  129. package/src/coValues/account.ts +69 -11
  130. package/src/coValues/coMap.ts +2 -2
  131. package/src/coValues/coRichText.ts +42 -17
  132. package/src/coValues/group.ts +76 -31
  133. package/src/coValues/inbox.ts +10 -0
  134. package/src/coValues/interfaces.ts +1 -1
  135. package/src/coValues/profile.ts +35 -2
  136. package/src/implementation/ContextManager.ts +63 -15
  137. package/src/implementation/schema.ts +1 -3
  138. package/src/testing.ts +10 -16
  139. package/src/tests/AuthSecretStorage.test.ts +1 -2
  140. package/src/tests/ContextManager.test.ts +27 -14
  141. package/src/tests/PassphraseAuth.test.ts +7 -3
  142. package/src/tests/coMap.test.ts +20 -21
  143. package/src/tests/deepLoading.test.ts +8 -17
  144. package/src/tests/groupsAndAccounts.test.ts +429 -89
  145. package/src/tests/inbox.test.ts +24 -0
  146. package/src/tests/schema.test.ts +45 -5
  147. package/src/tests/utils.ts +7 -3
  148. package/src/types.ts +6 -0
  149. package/tsconfig.json +4 -1
  150. package/dist/chunk-5YDDEUNX.js.map +0 -1
@@ -140,6 +140,15 @@ describe("co.json TypeScript validation", () => {
140
140
  }>();
141
141
  });
142
142
 
143
+ it("should flag types with symbol keys as invalid", async () => {
144
+ type InvalidType = { [key: symbol]: string };
145
+
146
+ class InvalidFunctionMap extends CoMap {
147
+ // @ts-expect-error Should not be considered valid
148
+ data = co.json<InvalidType>();
149
+ }
150
+ });
151
+
143
152
  it("should apply the same validation to optional json", async () => {
144
153
  type ValidType = {
145
154
  value: string;
@@ -163,17 +172,48 @@ describe("co.json TypeScript validation", () => {
163
172
  }>();
164
173
  });
165
174
 
175
+ /* Special case from reported issue:
176
+ ** See: https://github.com/garden-co/jazz/issues/1496
177
+ */
178
+ it("should apply the same validation to optional json [JAZZ-1496]", async () => {
179
+ interface ValidInterface0 {
180
+ value: string;
181
+ }
182
+ interface ValidInterface1 {
183
+ value: string | undefined;
184
+ }
185
+ interface InterfaceWithOptionalTypes {
186
+ requiredValue: string;
187
+ value?: string;
188
+ }
189
+
190
+ class MapWithOptionalJSON extends CoMap {
191
+ data1 = co.optional.json<ValidInterface0>();
192
+ data2 = co.optional.json<ValidInterface1>();
193
+ data3 = co.optional.json<InterfaceWithOptionalTypes>();
194
+ }
195
+
196
+ expectTypeOf(MapWithOptionalJSON.create<MapWithOptionalJSON>)
197
+ .parameter(0)
198
+ .toEqualTypeOf<{
199
+ data1?: valueWithCoMarker<ValidInterface0> | null;
200
+ data2?: valueWithCoMarker<ValidInterface1> | null;
201
+ data3?: valueWithCoMarker<InterfaceWithOptionalTypes> | null;
202
+ }>();
203
+ });
204
+
166
205
  it("should not accept functions", async () => {
167
206
  class InvalidFunctionMap extends CoMap {
168
207
  // @ts-expect-error Should not be considered valid
169
208
  data = co.json<() => void>();
170
209
  }
210
+ });
171
211
 
172
- expectTypeOf(InvalidFunctionMap.create<InvalidFunctionMap>)
173
- .parameter(0)
174
- .toEqualTypeOf<{
175
- data: valueWithCoMarker<() => void>;
176
- }>();
212
+ it("should not accept functions in nested properties", async () => {
213
+ class InvalidFunctionMap extends CoMap {
214
+ // @ts-expect-error Should not be considered valid
215
+ data = co.json<{ func: () => void }>();
216
+ }
177
217
  });
178
218
 
179
219
  it("should not accept RegExp", async () => {
@@ -44,7 +44,11 @@ export async function setupAccount() {
44
44
  return { me, meOnSecondPeer };
45
45
  }
46
46
 
47
- export async function setupTwoNodes() {
47
+ export async function setupTwoNodes(options?: {
48
+ ServerAccountSchema?: typeof Account;
49
+ }) {
50
+ const ServerAccountSchema = options?.ServerAccountSchema ?? Account;
51
+
48
52
  const [serverAsPeer, clientAsPeer] = cojsonInternals.connectedPeers(
49
53
  "clientToServer",
50
54
  "serverToClient",
@@ -72,7 +76,7 @@ export async function setupTwoNodes() {
72
76
  crypto: Crypto,
73
77
  creationProps: { name: "Server" },
74
78
  migration: async (rawAccount, _node, creationProps) => {
75
- const account = new Account({
79
+ const account = new ServerAccountSchema({
76
80
  fromRaw: rawAccount,
77
81
  });
78
82
 
@@ -86,7 +90,7 @@ export async function setupTwoNodes() {
86
90
  clientAccount: Account.fromRaw(
87
91
  await loadCoValueOrFail(client.node, client.accountID),
88
92
  ),
89
- serverAccount: Account.fromRaw(
93
+ serverAccount: ServerAccountSchema.fromRaw(
90
94
  await loadCoValueOrFail(server.node, server.accountID),
91
95
  ),
92
96
  };
package/src/types.ts CHANGED
@@ -57,3 +57,9 @@ export type SyncConfig =
57
57
  peer?: `wss://${string}` | `ws://${string}`;
58
58
  when: "never";
59
59
  };
60
+
61
+ export interface Register {}
62
+
63
+ export type RegisteredAccount = Register extends { Account: infer Acc }
64
+ ? Acc
65
+ : Account;
package/tsconfig.json CHANGED
@@ -9,7 +9,10 @@
9
9
  "skipLibCheck": true,
10
10
  "forceConsistentCasingInFileNames": true,
11
11
  "noUncheckedIndexedAccess": true,
12
- "esModuleInterop": true
12
+ "esModuleInterop": true,
13
+ "declaration": true,
14
+ "emitDeclarationOnly": true,
15
+ "declarationMap": true
13
16
  },
14
17
  "include": ["./src/**/*.ts"],
15
18
  "exclude": ["./node_modules"]