typeferry 0.12.0 → 0.13.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.
Files changed (252) hide show
  1. package/README.md +5 -0
  2. package/dist/application/config.d.ts +47 -39
  3. package/dist/application/config.js +29 -16
  4. package/dist/application/config.js.map +1 -1
  5. package/dist/application/native-simulator-settings.js +1 -1
  6. package/dist/application/native-simulator-settings.js.map +1 -1
  7. package/dist/application/proxy.d.ts +5 -1
  8. package/dist/application/proxy.js +25 -4
  9. package/dist/application/proxy.js.map +1 -1
  10. package/dist/application/run-tests.js +1 -1
  11. package/dist/application/run-tests.js.map +1 -1
  12. package/dist/auth/client/native-session.js +4 -2
  13. package/dist/auth/client/native-session.js.map +1 -1
  14. package/dist/auth/client/oauth/use-google-login.js +2 -0
  15. package/dist/auth/client/oauth/use-google-login.js.map +1 -1
  16. package/dist/auth/server/cookie-utils.js +4 -3
  17. package/dist/auth/server/cookie-utils.js.map +1 -1
  18. package/dist/auth/server/device-info.js +8 -8
  19. package/dist/auth/server/device-info.js.map +1 -1
  20. package/dist/auth/server/oauth/google.js +11 -7
  21. package/dist/auth/server/oauth/google.js.map +1 -1
  22. package/dist/auth/server/session-manager.js +2 -2
  23. package/dist/auth/server/session-manager.js.map +1 -1
  24. package/dist/client/client-channel.d.ts +3 -11
  25. package/dist/client/client-channel.js +11 -4
  26. package/dist/client/client-channel.js.map +1 -1
  27. package/dist/client/client-http.d.ts +2 -2
  28. package/dist/client/client-http.js.map +1 -1
  29. package/dist/client/client.d.ts +13 -13
  30. package/dist/client/client.js +24 -11
  31. package/dist/client/client.js.map +1 -1
  32. package/dist/client/context-manager.d.ts +1 -1
  33. package/dist/client/logger.d.ts +1 -0
  34. package/dist/client/logger.js +12 -15
  35. package/dist/client/logger.js.map +1 -1
  36. package/dist/client/visibility-manager.d.ts +22 -11
  37. package/dist/client/visibility-manager.js +258 -42
  38. package/dist/client/visibility-manager.js.map +1 -1
  39. package/dist/ejson/adjust-types-from-json-value.d.ts +1 -1
  40. package/dist/ejson/adjust-types-from-json-value.js +4 -2
  41. package/dist/ejson/adjust-types-from-json-value.js.map +1 -1
  42. package/dist/ejson/base64.d.ts +1 -1
  43. package/dist/ejson/base64.js +1 -1
  44. package/dist/ejson/base64.js.map +1 -1
  45. package/dist/ejson/built-in-converters.d.ts +59 -1
  46. package/dist/ejson/built-in-converters.js +109 -125
  47. package/dist/ejson/built-in-converters.js.map +1 -1
  48. package/dist/ejson/clone.js +1 -1
  49. package/dist/ejson/clone.js.map +1 -1
  50. package/dist/ejson/custom-models.d.ts +10 -10
  51. package/dist/ejson/custom-models.js +22 -2
  52. package/dist/ejson/custom-models.js.map +1 -1
  53. package/dist/ejson/custom-types.d.ts +2 -1
  54. package/dist/ejson/custom-types.js.map +1 -1
  55. package/dist/ejson/equals.d.ts +4 -1
  56. package/dist/ejson/equals.js +6 -3
  57. package/dist/ejson/equals.js.map +1 -1
  58. package/dist/ejson/from-json-value.d.ts +1 -1
  59. package/dist/ejson/from-json-value.js +1 -1
  60. package/dist/ejson/from-json-value.js.map +1 -1
  61. package/dist/ejson/helpers/adjust-types-to-json-value.d.ts +1 -1
  62. package/dist/ejson/helpers/adjust-types-to-json-value.js +4 -2
  63. package/dist/ejson/helpers/adjust-types-to-json-value.js.map +1 -1
  64. package/dist/ejson/helpers/from-json-value-helper.d.ts +1 -1
  65. package/dist/ejson/helpers/from-json-value-helper.js +5 -3
  66. package/dist/ejson/helpers/from-json-value-helper.js.map +1 -1
  67. package/dist/ejson/helpers/to-json-value-helper.d.ts +1 -1
  68. package/dist/ejson/helpers/to-json-value-helper.js +3 -1
  69. package/dist/ejson/helpers/to-json-value-helper.js.map +1 -1
  70. package/dist/ejson/index.d.ts +14 -12
  71. package/dist/ejson/index.js +3 -3
  72. package/dist/ejson/index.js.map +1 -1
  73. package/dist/ejson/is-binary.d.ts +1 -1
  74. package/dist/ejson/is-binary.js +1 -1
  75. package/dist/ejson/is-binary.js.map +1 -1
  76. package/dist/ejson/parse.d.ts +1 -1
  77. package/dist/ejson/parse.js +1 -1
  78. package/dist/ejson/parse.js.map +1 -1
  79. package/dist/ejson/stable-stringify.d.ts +1 -6
  80. package/dist/ejson/stable-stringify.js +3 -1
  81. package/dist/ejson/stable-stringify.js.map +1 -1
  82. package/dist/ejson/to-json-value.d.ts +1 -1
  83. package/dist/ejson/to-json-value.js +1 -1
  84. package/dist/ejson/to-json-value.js.map +1 -1
  85. package/dist/ejson/utils.d.ts +15 -13
  86. package/dist/ejson/utils.js +39 -37
  87. package/dist/ejson/utils.js.map +1 -1
  88. package/dist/minimongo/NOTICE.md +30 -0
  89. package/dist/minimongo/README.md +329 -0
  90. package/dist/minimongo/components.d.ts +31 -0
  91. package/dist/minimongo/components.js +53 -0
  92. package/dist/minimongo/components.js.map +1 -0
  93. package/dist/minimongo/contracts.type-test.d.ts +1 -0
  94. package/dist/minimongo/contracts.type-test.js +21 -0
  95. package/dist/minimongo/contracts.type-test.js.map +1 -0
  96. package/dist/minimongo/cursor.d.ts +67 -0
  97. package/dist/minimongo/cursor.js +157 -0
  98. package/dist/minimongo/cursor.js.map +1 -0
  99. package/dist/minimongo/document-store.d.ts +31 -0
  100. package/dist/minimongo/document-store.js +48 -0
  101. package/dist/minimongo/document-store.js.map +1 -0
  102. package/dist/minimongo/errors.d.ts +14 -0
  103. package/dist/minimongo/errors.js +16 -0
  104. package/dist/minimongo/errors.js.map +1 -0
  105. package/dist/minimongo/events.d.ts +20 -0
  106. package/dist/minimongo/events.js +80 -0
  107. package/dist/minimongo/events.js.map +1 -0
  108. package/dist/minimongo/identity.d.ts +8 -0
  109. package/dist/minimongo/identity.js +15 -0
  110. package/dist/minimongo/identity.js.map +1 -0
  111. package/dist/minimongo/immutable.d.ts +6 -0
  112. package/dist/minimongo/immutable.js +17 -0
  113. package/dist/minimongo/immutable.js.map +1 -0
  114. package/dist/minimongo/index.d.ts +7 -0
  115. package/dist/minimongo/index.js +6 -0
  116. package/dist/minimongo/index.js.map +1 -0
  117. package/dist/minimongo/local-collection.d.ts +48 -0
  118. package/dist/minimongo/local-collection.js +129 -0
  119. package/dist/minimongo/local-collection.js.map +1 -0
  120. package/dist/minimongo/matcher.d.ts +27 -0
  121. package/dist/minimongo/matcher.js +457 -0
  122. package/dist/minimongo/matcher.js.map +1 -0
  123. package/dist/minimongo/modifier.d.ts +12 -0
  124. package/dist/minimongo/modifier.js +323 -0
  125. package/dist/minimongo/modifier.js.map +1 -0
  126. package/dist/minimongo/path.d.ts +17 -0
  127. package/dist/minimongo/path.js +126 -0
  128. package/dist/minimongo/path.js.map +1 -0
  129. package/dist/minimongo/projection.d.ts +5 -0
  130. package/dist/minimongo/projection.js +100 -0
  131. package/dist/minimongo/projection.js.map +1 -0
  132. package/dist/minimongo/sorter.d.ts +16 -0
  133. package/dist/minimongo/sorter.js +140 -0
  134. package/dist/minimongo/sorter.js.map +1 -0
  135. package/dist/minimongo/transform.d.ts +4 -0
  136. package/dist/minimongo/transform.js +30 -0
  137. package/dist/minimongo/transform.js.map +1 -0
  138. package/dist/minimongo/types.d.ts +169 -0
  139. package/dist/minimongo/types.js +2 -0
  140. package/dist/minimongo/types.js.map +1 -0
  141. package/dist/minimongo/value-semantics.d.ts +8 -0
  142. package/dist/minimongo/value-semantics.js +156 -0
  143. package/dist/minimongo/value-semantics.js.map +1 -0
  144. package/dist/mongodb/change-streams.js +14 -8
  145. package/dist/mongodb/change-streams.js.map +1 -1
  146. package/dist/mongodb/decorators/collection.js +4 -1
  147. package/dist/mongodb/decorators/collection.js.map +1 -1
  148. package/dist/mongodb/decorators/metadata.js +1 -1
  149. package/dist/mongodb/decorators/metadata.js.map +1 -1
  150. package/dist/mongodb/find-one-or-create.d.ts +2 -2
  151. package/dist/mongodb/find-one-or-create.js +1 -1
  152. package/dist/mongodb/find-one-or-create.js.map +1 -1
  153. package/dist/mongodb/live/engine.js.map +1 -1
  154. package/dist/mongodb/live/source.js +11 -5
  155. package/dist/mongodb/live/source.js.map +1 -1
  156. package/dist/mongodb/live/types.d.ts +1 -1
  157. package/dist/react/components/client-provider.d.ts +3 -2
  158. package/dist/react/components/client-provider.js +1 -1
  159. package/dist/react/components/client-provider.js.map +1 -1
  160. package/dist/react/contracts.type-test.d.ts +1 -0
  161. package/dist/react/contracts.type-test.js +21 -0
  162. package/dist/react/contracts.type-test.js.map +1 -0
  163. package/dist/react/hooks/use-auth.d.ts +5 -1
  164. package/dist/react/hooks/use-auth.js +4 -2
  165. package/dist/react/hooks/use-auth.js.map +1 -1
  166. package/dist/react/hooks/use-caller.d.ts +10 -5
  167. package/dist/react/hooks/use-caller.js +12 -8
  168. package/dist/react/hooks/use-caller.js.map +1 -1
  169. package/dist/react/hooks/use-channel.d.ts +1 -1
  170. package/dist/react/hooks/use-channel.js +1 -1
  171. package/dist/react/hooks/use-channel.js.map +1 -1
  172. package/dist/react/hooks/use-circuit-breaker.d.ts +14 -6
  173. package/dist/react/hooks/use-circuit-breaker.js +5 -2
  174. package/dist/react/hooks/use-circuit-breaker.js.map +1 -1
  175. package/dist/react/hooks/use-client.d.ts +1 -1
  176. package/dist/react/hooks/use-client.js +2 -0
  177. package/dist/react/hooks/use-client.js.map +1 -1
  178. package/dist/react/hooks/use-connection-state.d.ts +4 -4
  179. package/dist/react/hooks/use-connection-state.js +2 -0
  180. package/dist/react/hooks/use-connection-state.js.map +1 -1
  181. package/dist/react/hooks/use-deps-change.d.ts +1 -1
  182. package/dist/react/hooks/use-deps-change.js.map +1 -1
  183. package/dist/react/hooks/use-local-event.d.ts +2 -2
  184. package/dist/react/hooks/use-local-event.js +2 -2
  185. package/dist/react/hooks/use-local-event.js.map +1 -1
  186. package/dist/react/hooks/use-method-refresh.d.ts +24 -15
  187. package/dist/react/hooks/use-method-refresh.js +18 -22
  188. package/dist/react/hooks/use-method-refresh.js.map +1 -1
  189. package/dist/react/hooks/use-method.d.ts +12 -11
  190. package/dist/react/hooks/use-method.js +9 -5
  191. package/dist/react/hooks/use-method.js.map +1 -1
  192. package/dist/react/hooks/use-mongodb-live-publication.js +2 -0
  193. package/dist/react/hooks/use-mongodb-live-publication.js.map +1 -1
  194. package/dist/react/hooks/use-object.d.ts +2 -2
  195. package/dist/react/hooks/use-object.js.map +1 -1
  196. package/dist/react/hooks/use-subscribe.d.ts +1 -2
  197. package/dist/react/hooks/use-subscribe.js +11 -9
  198. package/dist/react/hooks/use-subscribe.js.map +1 -1
  199. package/dist/react/hooks/use-throttled-events.d.ts +1 -1
  200. package/dist/react/hooks/use-throttled-events.js +2 -0
  201. package/dist/react/hooks/use-throttled-events.js.map +1 -1
  202. package/dist/react/hooks/use-token-refresh.js +1 -1
  203. package/dist/react/hooks/use-token-refresh.js.map +1 -1
  204. package/dist/server/client-node.d.ts +17 -10
  205. package/dist/server/client-node.js +16 -13
  206. package/dist/server/client-node.js.map +1 -1
  207. package/dist/server/decorators/register.js +10 -6
  208. package/dist/server/decorators/register.js.map +1 -1
  209. package/dist/server/method.d.ts +1 -1
  210. package/dist/server/method.js +9 -6
  211. package/dist/server/method.js.map +1 -1
  212. package/dist/server/methods.js +2 -1
  213. package/dist/server/methods.js.map +1 -1
  214. package/dist/server/server-channel.d.ts +4 -2
  215. package/dist/server/server-channel.js +33 -20
  216. package/dist/server/server-channel.js.map +1 -1
  217. package/dist/server/server.d.ts +25 -12
  218. package/dist/server/server.js +18 -17
  219. package/dist/server/server.js.map +1 -1
  220. package/dist/server/transports/node-hono-transport.d.ts +4 -4
  221. package/dist/server/transports/node-hono-transport.js +66 -14
  222. package/dist/server/transports/node-hono-transport.js.map +1 -1
  223. package/dist/server/transports/redis-transport.d.ts +5 -4
  224. package/dist/server/transports/redis-transport.js +9 -4
  225. package/dist/server/transports/redis-transport.js.map +1 -1
  226. package/dist/server/transports/websocket-transport.d.ts +1 -1
  227. package/dist/server/transports/websocket-transport.js +6 -1
  228. package/dist/server/transports/websocket-transport.js.map +1 -1
  229. package/dist/server/transports/ws-shared.d.ts +2 -1
  230. package/dist/server/transports/ws-shared.js +4 -1
  231. package/dist/server/transports/ws-shared.js.map +1 -1
  232. package/dist/utils/errors.d.ts +1 -1
  233. package/dist/utils/errors.js.map +1 -1
  234. package/dist/utils/event-emitter.d.ts +1 -1
  235. package/dist/utils/event-emitter.js.map +1 -1
  236. package/dist/utils/events.d.ts +4 -4
  237. package/dist/utils/events.js.map +1 -1
  238. package/dist/utils/helpers.d.ts +4 -4
  239. package/dist/utils/helpers.js +4 -3
  240. package/dist/utils/helpers.js.map +1 -1
  241. package/dist/utils/intercept.d.ts +1 -2
  242. package/dist/utils/intercept.js.map +1 -1
  243. package/dist/utils/iterator.d.ts +6 -8
  244. package/dist/utils/iterator.js +3 -3
  245. package/dist/utils/iterator.js.map +1 -1
  246. package/dist/utils/presentation.d.ts +1 -1
  247. package/dist/utils/presentation.js +2 -0
  248. package/dist/utils/presentation.js.map +1 -1
  249. package/dist/utils/promise.d.ts +5 -5
  250. package/dist/utils/promise.js +2 -2
  251. package/dist/utils/promise.js.map +1 -1
  252. package/package.json +9 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/minimongo/cursor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { IdentityCodec } from './identity.js';
2
+ import type { ValueSemantics } from './value-semantics.js';
3
+ export interface DocumentStore<TId, TDocument> {
4
+ readonly size: number;
5
+ has(id: TId): boolean;
6
+ get(id: TId): TDocument | undefined;
7
+ set(id: TId, document: TDocument): void;
8
+ delete(id: TId): boolean;
9
+ clear(): void;
10
+ entries(): IterableIterator<readonly [TId, TDocument]>;
11
+ clone(): DocumentStore<TId, TDocument>;
12
+ }
13
+ export interface DocumentStoreFactory {
14
+ create<TId, TDocument>(): DocumentStore<TId, TDocument>;
15
+ }
16
+ /** Insertion-ordered storage used by TypeFerry local collections. */
17
+ export declare class MemoryDocumentStore<TId, TDocument> implements DocumentStore<TId, TDocument> {
18
+ private readonly codec;
19
+ private readonly values;
20
+ private readonly documents;
21
+ private readonly identities;
22
+ constructor(codec: IdentityCodec<unknown>, values: ValueSemantics);
23
+ get size(): number;
24
+ has(id: TId): boolean;
25
+ get(id: TId): TDocument | undefined;
26
+ set(id: TId, document: TDocument): void;
27
+ delete(id: TId): boolean;
28
+ clear(): void;
29
+ entries(): IterableIterator<readonly [TId, TDocument]>;
30
+ clone(): MemoryDocumentStore<TId, TDocument>;
31
+ }
@@ -0,0 +1,48 @@
1
+ /** Insertion-ordered storage used by TypeFerry local collections. */
2
+ export class MemoryDocumentStore {
3
+ codec;
4
+ values;
5
+ documents = new Map();
6
+ identities = new Map();
7
+ constructor(codec, values) {
8
+ this.codec = codec;
9
+ this.values = values;
10
+ }
11
+ get size() {
12
+ return this.documents.size;
13
+ }
14
+ has(id) {
15
+ return this.documents.has(this.codec.stringify(id));
16
+ }
17
+ get(id) {
18
+ return this.documents.get(this.codec.stringify(id));
19
+ }
20
+ set(id, document) {
21
+ const key = this.codec.stringify(id);
22
+ this.identities.set(key, id);
23
+ this.documents.set(key, document);
24
+ }
25
+ delete(id) {
26
+ const key = this.codec.stringify(id);
27
+ this.identities.delete(key);
28
+ return this.documents.delete(key);
29
+ }
30
+ clear() {
31
+ this.documents.clear();
32
+ this.identities.clear();
33
+ }
34
+ *entries() {
35
+ for (const [key, document] of this.documents) {
36
+ const id = this.identities.get(key);
37
+ if (id !== undefined)
38
+ yield [id, document];
39
+ }
40
+ }
41
+ clone() {
42
+ const result = new MemoryDocumentStore(this.codec, this.values);
43
+ for (const [id, document] of this.entries())
44
+ result.set(id, this.values.clone(document));
45
+ return result;
46
+ }
47
+ }
48
+ //# sourceMappingURL=document-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-store.js","sourceRoot":"","sources":["../../src/minimongo/document-store.ts"],"names":[],"mappings":"AAkBA,qEAAqE;AACrE,MAAM,OAAO,mBAAmB;IAKX;IACA;IALF,SAAS,GAAG,IAAI,GAAG,EAAqB,CAAA;IACxC,UAAU,GAAG,IAAI,GAAG,EAAe,CAAA;IAEpD,YACmB,KAA6B,EAC7B,MAAsB;QADtB,UAAK,GAAL,KAAK,CAAwB;QAC7B,WAAM,GAAN,MAAM,CAAgB;IACtC,CAAC;IAEJ,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED,GAAG,CAAC,EAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,GAAG,CAAC,EAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;IACrD,CAAC;IAED,GAAG,CAAC,EAAO,EAAE,QAAmB;QAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAEpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IACnC,CAAC;IAED,MAAM,CAAC,EAAO;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAA;QAEpC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC;IAED,CAAC,OAAO;QACN,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC7C,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,EAAE,KAAK,SAAS;gBAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAU,CAAA;QACrD,CAAC;IACH,CAAC;IAED,KAAK;QACH,MAAM,MAAM,GAAG,IAAI,mBAAmB,CAAiB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/E,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAA;QAExF,OAAO,MAAM,CAAA;IACf,CAAC;CACF"}
@@ -0,0 +1,14 @@
1
+ /** Error raised when a local collection query cannot be compiled. */
2
+ export declare class LocalQueryError extends Error {
3
+ readonly name = "LocalQueryError";
4
+ }
5
+ /** Error raised by a local collection mutation. */
6
+ export declare class LocalCollectionError extends Error {
7
+ readonly name = "LocalCollectionError";
8
+ readonly field: string | undefined;
9
+ readonly setPropertyError: boolean | undefined;
10
+ constructor(message: string, options?: {
11
+ readonly field?: string;
12
+ readonly setPropertyError?: boolean;
13
+ });
14
+ }
@@ -0,0 +1,16 @@
1
+ /** Error raised when a local collection query cannot be compiled. */
2
+ export class LocalQueryError extends Error {
3
+ name = 'LocalQueryError';
4
+ }
5
+ /** Error raised by a local collection mutation. */
6
+ export class LocalCollectionError extends Error {
7
+ name = 'LocalCollectionError';
8
+ field;
9
+ setPropertyError;
10
+ constructor(message, options = {}) {
11
+ super(options.field ? `${message} for field '${options.field}'` : message);
12
+ this.field = options.field;
13
+ this.setPropertyError = options.setPropertyError;
14
+ }
15
+ }
16
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/minimongo/errors.ts"],"names":[],"mappings":"AAAA,qEAAqE;AACrE,MAAM,OAAO,eAAgB,SAAQ,KAAK;IACtB,IAAI,GAAG,iBAAiB,CAAA;CAC3C;AAED,mDAAmD;AACnD,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC3B,IAAI,GAAG,sBAAsB,CAAA;IACtC,KAAK,CAAoB;IACzB,gBAAgB,CAAqB;IAE9C,YACE,OAAe,EACf,UAGI,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,OAAO,eAAe,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAC1E,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAA;IAClD,CAAC;CACF"}
@@ -0,0 +1,20 @@
1
+ type EventMap = Record<string, readonly unknown[]>;
2
+ type EventName<TEvents extends EventMap> = Extract<keyof TEvents, string>;
3
+ type EventListener<TArguments extends readonly unknown[]> = (...args: TArguments) => void;
4
+ type AnyEventListener<TEvents extends EventMap> = <TEvent extends EventName<TEvents>>(event: TEvent, ...args: TEvents[TEvent]) => void;
5
+ /** Small typed emitter matching TypeFerry's on/off/once/onAny conventions. */
6
+ export declare class TypedEventEmitter<TEvents extends EventMap> {
7
+ private readonly listeners;
8
+ private readonly anyListeners;
9
+ on<TEvent extends EventName<TEvents>>(event: TEvent, listener: EventListener<TEvents[TEvent]>): this;
10
+ off<TEvent extends EventName<TEvents>>(event: TEvent, listener: EventListener<TEvents[TEvent]>): this;
11
+ once<TEvent extends EventName<TEvents>>(event: TEvent, listener: EventListener<TEvents[TEvent]>): this;
12
+ onAny(listener: AnyEventListener<TEvents>): this;
13
+ offAny(listener: AnyEventListener<TEvents>): this;
14
+ removeAllListeners(event?: EventName<TEvents>): this;
15
+ protected emit<TEvent extends EventName<TEvents>>(event: TEvent, ...args: TEvents[TEvent]): boolean;
16
+ protected onListenerAdded(): void;
17
+ protected onListenerRemoved(): void;
18
+ private listenerTotal;
19
+ }
20
+ export {};
@@ -0,0 +1,80 @@
1
+ /** Small typed emitter matching TypeFerry's on/off/once/onAny conventions. */
2
+ export class TypedEventEmitter {
3
+ listeners = new Map();
4
+ anyListeners = new Set();
5
+ on(event, listener) {
6
+ const listeners = this.listeners.get(event) ?? new Set();
7
+ const alreadyRegistered = listeners.has(listener);
8
+ listeners.add(listener);
9
+ this.listeners.set(event, listeners);
10
+ if (!alreadyRegistered)
11
+ this.onListenerAdded();
12
+ return this;
13
+ }
14
+ off(event, listener) {
15
+ const listeners = this.listeners.get(event);
16
+ if (!listeners)
17
+ return this;
18
+ for (const current of listeners) {
19
+ const once = current;
20
+ if (current === listener || once.original === listener) {
21
+ listeners.delete(current);
22
+ this.onListenerRemoved();
23
+ }
24
+ }
25
+ if (listeners.size === 0)
26
+ this.listeners.delete(event);
27
+ return this;
28
+ }
29
+ once(event, listener) {
30
+ const wrapped = ((...args) => {
31
+ this.off(event, wrapped);
32
+ listener(...args);
33
+ });
34
+ wrapped.original = listener;
35
+ return this.on(event, wrapped);
36
+ }
37
+ onAny(listener) {
38
+ this.anyListeners.add(listener);
39
+ this.onListenerAdded();
40
+ return this;
41
+ }
42
+ offAny(listener) {
43
+ if (this.anyListeners.delete(listener))
44
+ this.onListenerRemoved();
45
+ return this;
46
+ }
47
+ removeAllListeners(event) {
48
+ if (event) {
49
+ const removed = this.listeners.get(event)?.size ?? 0;
50
+ this.listeners.delete(event);
51
+ for (let index = 0; index < removed; index += 1)
52
+ this.onListenerRemoved();
53
+ }
54
+ else {
55
+ const removed = this.listenerTotal();
56
+ this.listeners.clear();
57
+ this.anyListeners.clear();
58
+ for (let index = 0; index < removed; index += 1)
59
+ this.onListenerRemoved();
60
+ }
61
+ return this;
62
+ }
63
+ emit(event, ...args) {
64
+ const listeners = [...(this.listeners.get(event) ?? [])];
65
+ for (const listener of listeners)
66
+ listener(...args);
67
+ for (const listener of this.anyListeners)
68
+ listener(event, ...args);
69
+ return listeners.length > 0 || this.anyListeners.size > 0;
70
+ }
71
+ onListenerAdded() { }
72
+ onListenerRemoved() { }
73
+ listenerTotal() {
74
+ let total = this.anyListeners.size;
75
+ for (const listeners of this.listeners.values())
76
+ total += listeners.size;
77
+ return total;
78
+ }
79
+ }
80
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/minimongo/events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { MinimongoId } from './types.js';
2
+ export interface IdentityCodec<TId = unknown> {
3
+ stringify(id: TId): string;
4
+ parse(value: string): TId;
5
+ }
6
+ /** Identity codec for TypeFerry's client-safe string IDs. */
7
+ export declare const stringIdentityCodec: IdentityCodec<MinimongoId>;
8
+ export declare function assertLocalId(value: unknown): asserts value is MinimongoId;
@@ -0,0 +1,15 @@
1
+ /** Identity codec for TypeFerry's client-safe string IDs. */
2
+ export const stringIdentityCodec = {
3
+ stringify(id) {
4
+ return id;
5
+ },
6
+ parse(value) {
7
+ return value;
8
+ },
9
+ };
10
+ export function assertLocalId(value) {
11
+ if (typeof value === 'string' && /^[0-9a-f]{24}$/.test(value))
12
+ return;
13
+ throw new TypeError('Local collection _id must be a lowercase 24-character hexadecimal string.');
14
+ }
15
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/minimongo/identity.ts"],"names":[],"mappings":"AAOA,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAA+B;IAC7D,SAAS,CAAC,EAAE;QACV,OAAO,EAAE,CAAA;IACX,CAAC;IACD,KAAK,CAAC,KAAa;QACjB,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAM;IAErE,MAAM,IAAI,SAAS,CAAC,2EAA2E,CAAC,CAAA;AAClG,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Recursively marks a document tree as readonly. */
2
+ export type DeepReadonly<TValue> = TValue extends Date | RegExp | Uint8Array ? TValue : TValue extends (...args: never[]) => unknown ? TValue : TValue extends readonly (infer TElement)[] ? readonly DeepReadonly<TElement>[] : TValue extends object ? {
3
+ readonly [TKey in keyof TValue]: DeepReadonly<TValue[TKey]>;
4
+ } : TValue;
5
+ /** Freezes a cloned document tree before it enters the public local-store state. */
6
+ export declare function deepFreeze<TValue>(value: TValue, seen?: WeakSet<object>): TValue;
@@ -0,0 +1,17 @@
1
+ /** Freezes a cloned document tree before it enters the public local-store state. */
2
+ export function deepFreeze(value, seen = new WeakSet()) {
3
+ if (typeof value !== 'object' || value === null)
4
+ return value;
5
+ if (seen.has(value))
6
+ throw new TypeError('Local collection documents must not contain cycles.');
7
+ seen.add(value);
8
+ if (ArrayBuffer.isView(value)) {
9
+ seen.delete(value);
10
+ return value;
11
+ }
12
+ for (const child of Object.values(value))
13
+ deepFreeze(child, seen);
14
+ seen.delete(value);
15
+ return Object.freeze(value);
16
+ }
17
+ //# sourceMappingURL=immutable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"immutable.js","sourceRoot":"","sources":["../../src/minimongo/immutable.ts"],"names":[],"mappings":"AAQA,oFAAoF;AACpF,MAAM,UAAU,UAAU,CAAS,KAAa,EAAE,OAAO,IAAI,OAAO,EAAU;IAC5E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAA;IAC7D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAA;IAE/F,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACf,IAAI,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAElB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;QAAE,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACjE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAElB,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { LocalCollection, type CollectionInsertEvent, type CollectionRemoveEvent, type CollectionUpdateEvent, } from './local-collection.js';
2
+ export { Cursor, type CollectionCursor, type CursorAddedEvent, type CursorChangedEvent, type CursorRemovedEvent, } from './cursor.js';
3
+ export { LocalCollectionError, LocalQueryError } from './errors.js';
4
+ export { Matcher, isIdSelector } from './matcher.js';
5
+ export { Sorter } from './sorter.js';
6
+ export type { DeepReadonly } from './immutable.js';
7
+ export type { ArraySelector, CollationOptions, ComparisonSelector, FieldPath, FindOptions, InsertDocument, LogicalSelector, MatchResult, MaterializedDocument, MinimongoId, Modifier, NumericSelector, Projection, Selector, SelectorValue, SortDirection, SortSpecifier, StringSelector, TransformedDocument, UpdateOptions, UpsertOptions, UpsertResult, ValueAtPath, } from './types.js';
@@ -0,0 +1,6 @@
1
+ export { LocalCollection, } from './local-collection.js';
2
+ export { Cursor, } from './cursor.js';
3
+ export { LocalCollectionError, LocalQueryError } from './errors.js';
4
+ export { Matcher, isIdSelector } from './matcher.js';
5
+ export { Sorter } from './sorter.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/minimongo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAIhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACL,MAAM,GAKP,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAChE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA"}
@@ -0,0 +1,48 @@
1
+ import { LOCAL_STORE_RUNTIME } from './components.js';
2
+ import { Cursor, type CursorCollection } from './cursor.js';
3
+ import { TypedEventEmitter } from './events.js';
4
+ import { type DeepReadonly } from './immutable.js';
5
+ import type { FindOptions, InsertDocument, MaterializedDocument, Modifier, Selector, TransformedDocument, UpdateOptions, UpsertOptions, UpsertResult } from './types.js';
6
+ type Stored<TSchema extends object> = MaterializedDocument<TSchema, string>;
7
+ export interface CollectionInsertEvent<TDocument extends object> {
8
+ readonly document: TDocument;
9
+ }
10
+ export interface CollectionUpdateEvent<TDocument extends object> {
11
+ readonly previous: TDocument;
12
+ readonly document: TDocument;
13
+ }
14
+ export interface CollectionRemoveEvent<TDocument extends object> {
15
+ readonly document: TDocument;
16
+ }
17
+ type CollectionEvents<TDocument extends object> = {
18
+ insert: readonly [event: CollectionInsertEvent<TDocument>];
19
+ update: readonly [event: CollectionUpdateEvent<TDocument>];
20
+ remove: readonly [event: CollectionRemoveEvent<TDocument>];
21
+ };
22
+ /** A typed, immutable, event-driven local document collection. */
23
+ export declare class LocalCollection<TSchema extends object = Record<string, unknown>> extends TypedEventEmitter<CollectionEvents<Stored<TSchema>>> implements CursorCollection<Stored<TSchema>> {
24
+ readonly [LOCAL_STORE_RUNTIME]: import("./components.js").LocalStoreRuntime;
25
+ readonly name: string | undefined;
26
+ private readonly store;
27
+ private readonly observers;
28
+ constructor(name?: string);
29
+ documents(): Iterable<Stored<TSchema>>;
30
+ addObserver(observer: () => void): () => void;
31
+ find<TOutput extends object = Stored<TSchema>>(selector?: Selector<Stored<TSchema>>, options?: FindOptions<Stored<TSchema>, TOutput>): Cursor<Stored<TSchema>, TOutput>;
32
+ findOne<TOutput extends object = Stored<TSchema>>(selector?: Selector<Stored<TSchema>>, options?: FindOptions<Stored<TSchema>, TOutput>): DeepReadonly<TransformedDocument<Stored<TSchema>, TOutput>> | undefined;
33
+ findOneAsync<TOutput extends object = Stored<TSchema>>(selector?: Selector<Stored<TSchema>>, options?: FindOptions<Stored<TSchema>, TOutput>): Promise<DeepReadonly<TransformedDocument<Stored<TSchema>, TOutput>> | undefined>;
34
+ countDocuments(selector?: Selector<Stored<TSchema>> | undefined, options?: FindOptions<Stored<TSchema>>): Promise<number>;
35
+ estimatedDocumentCount(options?: FindOptions<Stored<TSchema>>): Promise<number>;
36
+ insert(document: InsertDocument<TSchema, string>): string;
37
+ insertAsync(document: InsertDocument<TSchema, string>): Promise<string>;
38
+ remove(selector: Selector<Stored<TSchema>>): number;
39
+ removeAsync(selector: Selector<Stored<TSchema>>): Promise<number>;
40
+ update(selector: Selector<Stored<TSchema>>, modifier: Modifier<Stored<TSchema>> | Partial<Stored<TSchema>>, options?: UpdateOptions<string>): number;
41
+ updateAsync(selector: Selector<Stored<TSchema>>, modifier: Modifier<Stored<TSchema>> | Partial<Stored<TSchema>>, options?: UpdateOptions<string>): Promise<number>;
42
+ upsert(selector: Selector<Stored<TSchema>>, modifier: Modifier<Stored<TSchema>> | Partial<Stored<TSchema>>, options?: UpsertOptions<string>): UpsertResult<string>;
43
+ upsertAsync(selector: Selector<Stored<TSchema>>, modifier: Modifier<Stored<TSchema>> | Partial<Stored<TSchema>>, options?: UpsertOptions<string>): Promise<UpsertResult<string>>;
44
+ private prepareInsert;
45
+ private matchedDocuments;
46
+ private notifyObservers;
47
+ }
48
+ export {};
@@ -0,0 +1,129 @@
1
+ import { LOCAL_STORE_RUNTIME, localStoreRuntime } from './components.js';
2
+ import { Cursor } from './cursor.js';
3
+ import { LocalCollectionError } from './errors.js';
4
+ import { TypedEventEmitter } from './events.js';
5
+ import { deepFreeze } from './immutable.js';
6
+ import { assertLocalId } from './identity.js';
7
+ import { assertValidFieldNames } from './modifier.js';
8
+ /** A typed, immutable, event-driven local document collection. */
9
+ export class LocalCollection extends TypedEventEmitter {
10
+ [LOCAL_STORE_RUNTIME] = localStoreRuntime;
11
+ name;
12
+ store;
13
+ observers = new Set();
14
+ constructor(name) {
15
+ super();
16
+ this.name = name;
17
+ this.store = localStoreRuntime.documentStoreFactory.create();
18
+ }
19
+ documents() {
20
+ return Array.from(this.store.entries(), ([, document]) => document);
21
+ }
22
+ addObserver(observer) {
23
+ this.observers.add(observer);
24
+ return () => this.observers.delete(observer);
25
+ }
26
+ find(selector, options = {}) {
27
+ const effectiveSelector = arguments.length === 0 ? {} : selector;
28
+ return new Cursor(this, effectiveSelector, options);
29
+ }
30
+ findOne(selector, options = {}) {
31
+ const effectiveSelector = arguments.length === 0 ? {} : selector;
32
+ return this.find(effectiveSelector, { ...options, limit: 1 }).fetch()[0];
33
+ }
34
+ findOneAsync(selector, options = {}) {
35
+ return Promise.resolve(this.findOne(selector, options));
36
+ }
37
+ countDocuments(selector = {}, options = {}) {
38
+ return this.find(selector, options).countAsync();
39
+ }
40
+ estimatedDocumentCount(options = {}) {
41
+ return this.find({}, options).countAsync();
42
+ }
43
+ insert(document) {
44
+ const mutable = localStoreRuntime.values.clone(document);
45
+ const stored = this.prepareInsert(mutable);
46
+ this.emit('insert', deepFreeze({ document: stored }));
47
+ this.notifyObservers();
48
+ return stored._id;
49
+ }
50
+ insertAsync(document) {
51
+ return Promise.resolve(this.insert(document));
52
+ }
53
+ remove(selector) {
54
+ const documents = this.matchedDocuments(selector);
55
+ for (const document of documents)
56
+ this.store.delete(document._id);
57
+ for (const document of documents)
58
+ this.emit('remove', deepFreeze({ document }));
59
+ this.notifyObservers();
60
+ return documents.length;
61
+ }
62
+ removeAsync(selector) {
63
+ return Promise.resolve(this.remove(selector));
64
+ }
65
+ update(selector, modifier, options = {}) {
66
+ const matches = this.matchedDocuments(selector);
67
+ const updates = [];
68
+ let numberAffected = 0;
69
+ for (const previous of matches) {
70
+ const mutable = localStoreRuntime.values.clone(previous);
71
+ const match = localStoreRuntime.query.matcher(selector, { isUpdate: true }).documentMatches(previous);
72
+ localStoreRuntime.mutations.modify(mutable, modifier, {
73
+ ...(match.arrayIndices ? { arrayIndices: match.arrayIndices } : {}),
74
+ now: localStoreRuntime.now,
75
+ });
76
+ const document = deepFreeze(mutable);
77
+ this.store.set(previous._id, document);
78
+ updates.push(deepFreeze({ previous, document }));
79
+ numberAffected += 1;
80
+ if (!options.multi)
81
+ break;
82
+ }
83
+ if (numberAffected > 0) {
84
+ for (const event of updates)
85
+ this.emit('update', event);
86
+ this.notifyObservers();
87
+ }
88
+ return numberAffected;
89
+ }
90
+ updateAsync(selector, modifier, options = {}) {
91
+ return Promise.resolve(this.update(selector, modifier, options));
92
+ }
93
+ upsert(selector, modifier, options = {}) {
94
+ const numberAffected = this.update(selector, modifier, options);
95
+ if (numberAffected > 0)
96
+ return deepFreeze({ numberAffected });
97
+ const document = localStoreRuntime.mutations.createUpsert(selector, modifier);
98
+ if (!document._id && options.insertedId !== undefined)
99
+ document._id = options.insertedId;
100
+ const stored = this.prepareInsert(document);
101
+ this.emit('insert', deepFreeze({ document: stored }));
102
+ this.notifyObservers();
103
+ return deepFreeze({ numberAffected: 1, insertedId: stored._id });
104
+ }
105
+ upsertAsync(selector, modifier, options = {}) {
106
+ return Promise.resolve(this.upsert(selector, modifier, options));
107
+ }
108
+ prepareInsert(document) {
109
+ assertValidFieldNames(document);
110
+ document._id ??= localStoreRuntime.randomId();
111
+ assertLocalId(document._id);
112
+ if (this.store.has(document._id)) {
113
+ throw new LocalCollectionError(`Duplicate _id '${document._id}'`);
114
+ }
115
+ const stored = deepFreeze(document);
116
+ this.store.set(stored._id, stored);
117
+ return stored;
118
+ }
119
+ matchedDocuments(selector) {
120
+ const matcher = localStoreRuntime.query.matcher(selector, { isUpdate: true });
121
+ return Array.from(this.store.entries(), ([, document]) => document)
122
+ .filter(document => matcher.documentMatches(document).result);
123
+ }
124
+ notifyObservers() {
125
+ for (const observer of this.observers)
126
+ observer();
127
+ }
128
+ }
129
+ //# sourceMappingURL=local-collection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-collection.js","sourceRoot":"","sources":["../../src/minimongo/local-collection.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import type { CollationOptions, MatchResult, MinimongoId, Selector } from './types.js';
2
+ import { type ValueSemantics } from './value-semantics.js';
3
+ /** Compiles and evaluates TypeFerry's Mongo-style selectors. */
4
+ export declare class Matcher<TDocument extends object = object> {
5
+ readonly selector: Selector<TDocument> | unknown;
6
+ private readonly isUpdate;
7
+ private readonly values;
8
+ private readonly paths;
9
+ private readonly documentMatcher;
10
+ private readonly collator;
11
+ private geoQuery;
12
+ private simple;
13
+ constructor(selector: Selector<TDocument> | unknown, isUpdate?: boolean, collation?: CollationOptions | Intl.Collator, values?: ValueSemantics);
14
+ documentMatches(document: TDocument): MatchResult;
15
+ hasGeoQuery(): boolean;
16
+ isSimple(): boolean;
17
+ _getPaths(): readonly string[];
18
+ private compileSelector;
19
+ private compileDocument;
20
+ private compileLogical;
21
+ private compileValue;
22
+ private compileOperator;
23
+ private elementMatcher;
24
+ private invert;
25
+ private equal;
26
+ }
27
+ export declare function isIdSelector(selector: unknown): selector is MinimongoId;