mongodb-livedata-server 0.0.4 → 0.0.6

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 (93) hide show
  1. package/{livedata_server.ts → dist/livedata_server.d.ts} +1 -1
  2. package/dist/livedata_server.js +3 -1
  3. package/dist/meteor/binary-heap/max_heap.d.ts +31 -0
  4. package/dist/meteor/binary-heap/min_heap.d.ts +6 -0
  5. package/dist/meteor/binary-heap/min_max_heap.d.ts +11 -0
  6. package/dist/meteor/callback-hook/hook.d.ts +11 -0
  7. package/dist/meteor/ddp/crossbar.d.ts +15 -0
  8. package/dist/meteor/ddp/heartbeat.d.ts +19 -0
  9. package/dist/meteor/ddp/livedata_server.d.ts +141 -0
  10. package/dist/meteor/ddp/method-invocation.d.ts +25 -0
  11. package/dist/meteor/ddp/random-stream.d.ts +8 -0
  12. package/dist/meteor/ddp/session-collection-view.d.ts +27 -0
  13. package/dist/meteor/ddp/session-document-view.d.ts +8 -0
  14. package/dist/meteor/ddp/session.d.ts +69 -0
  15. package/dist/meteor/ddp/stream_server.d.ts +21 -0
  16. package/dist/meteor/ddp/subscription.d.ts +89 -0
  17. package/dist/meteor/ddp/utils.d.ts +8 -0
  18. package/dist/meteor/ddp/writefence.d.ts +20 -0
  19. package/dist/meteor/diff-sequence/diff.d.ts +13 -0
  20. package/dist/meteor/ejson/ejson.d.ts +82 -0
  21. package/dist/meteor/ejson/stringify.d.ts +2 -0
  22. package/dist/meteor/ejson/utils.d.ts +12 -0
  23. package/dist/meteor/id-map/id_map.d.ts +16 -0
  24. package/dist/meteor/mongo/caching_change_observer.d.ts +16 -0
  25. package/dist/meteor/mongo/doc_fetcher.d.ts +7 -0
  26. package/dist/meteor/mongo/geojson_utils.d.ts +3 -0
  27. package/dist/meteor/mongo/live_connection.d.ts +27 -0
  28. package/dist/meteor/mongo/live_cursor.d.ts +25 -0
  29. package/dist/meteor/mongo/minimongo_common.d.ts +84 -0
  30. package/dist/meteor/mongo/minimongo_matcher.d.ts +22 -0
  31. package/dist/meteor/mongo/minimongo_sorter.d.ts +16 -0
  32. package/dist/meteor/mongo/observe_driver_utils.d.ts +9 -0
  33. package/dist/meteor/mongo/observe_multiplexer.d.ts +36 -0
  34. package/dist/meteor/mongo/oplog-observe-driver.d.ts +67 -0
  35. package/dist/meteor/mongo/oplog_tailing.d.ts +35 -0
  36. package/dist/meteor/mongo/oplog_v2_converter.d.ts +1 -0
  37. package/dist/meteor/mongo/polling_observe_driver.d.ts +30 -0
  38. package/dist/meteor/mongo/synchronous-cursor.d.ts +17 -0
  39. package/dist/meteor/mongo/synchronous-queue.d.ts +14 -0
  40. package/dist/meteor/ordered-dict/ordered_dict.d.ts +31 -0
  41. package/dist/meteor/random/AbstractRandomGenerator.d.ts +42 -0
  42. package/dist/meteor/random/AleaRandomGenerator.d.ts +13 -0
  43. package/dist/meteor/random/NodeRandomGenerator.d.ts +16 -0
  44. package/dist/meteor/random/createAleaGenerator.d.ts +2 -0
  45. package/dist/meteor/random/createRandom.d.ts +1 -0
  46. package/dist/meteor/random/main.d.ts +1 -0
  47. package/package.json +2 -2
  48. package/meteor/LICENSE +0 -28
  49. package/meteor/binary-heap/max_heap.ts +0 -225
  50. package/meteor/binary-heap/min_heap.ts +0 -15
  51. package/meteor/binary-heap/min_max_heap.ts +0 -53
  52. package/meteor/callback-hook/hook.ts +0 -85
  53. package/meteor/ddp/crossbar.ts +0 -148
  54. package/meteor/ddp/heartbeat.ts +0 -97
  55. package/meteor/ddp/livedata_server.ts +0 -474
  56. package/meteor/ddp/method-invocation.ts +0 -86
  57. package/meteor/ddp/random-stream.ts +0 -102
  58. package/meteor/ddp/session-collection-view.ts +0 -119
  59. package/meteor/ddp/session-document-view.ts +0 -92
  60. package/meteor/ddp/session.ts +0 -708
  61. package/meteor/ddp/stream_server.ts +0 -204
  62. package/meteor/ddp/subscription.ts +0 -392
  63. package/meteor/ddp/utils.ts +0 -119
  64. package/meteor/ddp/writefence.ts +0 -130
  65. package/meteor/diff-sequence/diff.ts +0 -295
  66. package/meteor/ejson/ejson.ts +0 -601
  67. package/meteor/ejson/stringify.ts +0 -122
  68. package/meteor/ejson/utils.ts +0 -38
  69. package/meteor/id-map/id_map.ts +0 -84
  70. package/meteor/mongo/caching_change_observer.ts +0 -120
  71. package/meteor/mongo/doc_fetcher.ts +0 -52
  72. package/meteor/mongo/geojson_utils.ts +0 -42
  73. package/meteor/mongo/live_connection.ts +0 -302
  74. package/meteor/mongo/live_cursor.ts +0 -79
  75. package/meteor/mongo/minimongo_common.ts +0 -2440
  76. package/meteor/mongo/minimongo_matcher.ts +0 -275
  77. package/meteor/mongo/minimongo_sorter.ts +0 -331
  78. package/meteor/mongo/observe_driver_utils.ts +0 -79
  79. package/meteor/mongo/observe_multiplexer.ts +0 -256
  80. package/meteor/mongo/oplog-observe-driver.ts +0 -1049
  81. package/meteor/mongo/oplog_tailing.ts +0 -414
  82. package/meteor/mongo/oplog_v2_converter.ts +0 -124
  83. package/meteor/mongo/polling_observe_driver.ts +0 -247
  84. package/meteor/mongo/synchronous-cursor.ts +0 -293
  85. package/meteor/mongo/synchronous-queue.ts +0 -119
  86. package/meteor/ordered-dict/ordered_dict.ts +0 -229
  87. package/meteor/random/AbstractRandomGenerator.ts +0 -99
  88. package/meteor/random/AleaRandomGenerator.ts +0 -96
  89. package/meteor/random/NodeRandomGenerator.ts +0 -37
  90. package/meteor/random/createAleaGenerator.ts +0 -31
  91. package/meteor/random/createRandom.ts +0 -19
  92. package/meteor/random/main.ts +0 -8
  93. package/tsconfig.json +0 -10
@@ -1,119 +0,0 @@
1
- import { DiffSequence } from "../diff-sequence/diff";
2
- import { equals } from "../ejson/ejson";
3
- import { SessionDocumentView } from "./session-document-view";
4
-
5
- interface SubscriptionCallbacks {
6
- added: (collectionName: string, id: string, fields: Record<string, any>) => void;
7
- changed: (collectionName: string, id: string, fields: Record<string, any>) => void;
8
- removed: (collectionName: string, id: string) => void;
9
- }
10
-
11
- interface SubscriptionHandle {
12
-
13
- }
14
-
15
- /**
16
- * Represents a client's view of a single collection
17
- * @param {String} collectionName Name of the collection it represents
18
- * @param {Object.<String, Function>} sessionCallbacks The callbacks for added, changed, removed
19
- * @class SessionCollectionView
20
- */
21
- export class SessionCollectionView {
22
-
23
- private documents = new Map();
24
- constructor (private collectionName: string, private callbacks: SubscriptionCallbacks) { }
25
-
26
- isEmpty() {
27
- return this.documents.size === 0;
28
- }
29
-
30
- diff(previous: SessionCollectionView) {
31
- DiffSequence.diffMaps(previous.documents, this.documents, {
32
- both: this.diffDocument.bind(this),
33
-
34
- rightOnly: (id, nowDV) => {
35
- this.callbacks.added(this.collectionName, id, nowDV.getFields());
36
- },
37
-
38
- leftOnly: (id, prevDV) => {
39
- this.callbacks.removed(this.collectionName, id);
40
- }
41
- });
42
- }
43
-
44
- diffDocument(id: string, prevDV: SessionDocumentView, nowDV: SessionDocumentView) {
45
- const fields = {};
46
- DiffSequence.diffObjects(prevDV.getFields(), nowDV.getFields(), {
47
- both: (key: string, prev: any, now: any) => {
48
- if (!equals(prev, now))
49
- fields[key] = now;
50
- },
51
- rightOnly: (key: string, now: any) => {
52
- fields[key] = now;
53
- },
54
- leftOnly: (key: string, prev: any) => {
55
- fields[key] = undefined;
56
- }
57
- });
58
- this.callbacks.changed(this.collectionName, id, fields);
59
- }
60
-
61
- added(subscriptionHandle: SubscriptionHandle, id: string, fields: Record<string, any>) {
62
- var self = this;
63
- var docView = self.documents.get(id);
64
- var added = false;
65
- if (!docView) {
66
- added = true;
67
- docView = new SessionDocumentView();
68
- self.documents.set(id, docView);
69
- }
70
- docView.existsIn.add(subscriptionHandle);
71
- var changeCollector = {};
72
- for (const [key, value] of Object.entries(fields)) {
73
- docView.changeField(subscriptionHandle, key, value, changeCollector, true);
74
- }
75
- if (added)
76
- self.callbacks.added(self.collectionName, id, changeCollector);
77
- else
78
- self.callbacks.changed(self.collectionName, id, changeCollector);
79
- }
80
-
81
- changed(subscriptionHandle: SubscriptionHandle, id: string, changed: Record<string, any>) {
82
- var self = this;
83
- var changedResult = {};
84
- var docView = self.documents.get(id);
85
- if (!docView)
86
- throw new Error("Could not find element with id " + id + " to change");
87
- for (const [key, value] of Object.entries(changed)) {
88
- if (value === undefined)
89
- docView.clearField(subscriptionHandle, key, changedResult);
90
- else
91
- docView.changeField(subscriptionHandle, key, value, changedResult);
92
- }
93
- self.callbacks.changed(self.collectionName, id, changedResult);
94
- }
95
-
96
- removed(subscriptionHandle, id: string) {
97
- var self = this;
98
- var docView = self.documents.get(id);
99
- if (!docView) {
100
- var err = new Error("Removed nonexistent document " + id);
101
- throw err;
102
- }
103
- docView.existsIn.delete(subscriptionHandle);
104
- if (docView.existsIn.size === 0) {
105
- // it is gone from everyone
106
- self.callbacks.removed(self.collectionName, id);
107
- self.documents.delete(id);
108
- } else {
109
- var changed = {};
110
- // remove this subscription from every precedence list
111
- // and record the changes
112
- docView.dataByKey.forEach((precedenceList, key) => {
113
- docView.clearField(subscriptionHandle, key, changed);
114
- });
115
-
116
- self.callbacks.changed(self.collectionName, id, changed);
117
- }
118
- }
119
- }
@@ -1,92 +0,0 @@
1
- import { clone, equals } from "../ejson/ejson";
2
-
3
- interface PrecedenceItem {
4
- subscriptionHandle: any;
5
- value: any;
6
- }
7
-
8
- // Represents a single document in a SessionCollectionView
9
- export class SessionDocumentView {
10
- public existsIn: Set<any>; // set of subscriptionHandle
11
- private dataByKey: Map<string, PrecedenceItem[]>; // key-> [ {subscriptionHandle, value} by precedence]
12
- constructor() {
13
- this.existsIn = new Set();
14
- this.dataByKey = new Map();
15
- };
16
-
17
- getFields() {
18
- var ret: Record<string, any> = {};
19
- this.dataByKey.forEach((precedenceList, key) => {
20
- ret[key] = precedenceList[0].value;
21
- });
22
- return ret;
23
- }
24
-
25
- clearField(subscriptionHandle, key: string, changeCollector: Object) {
26
- // Publish API ignores _id if present in fields
27
- if (key === "_id")
28
- return;
29
- const precedenceList = this.dataByKey.get(key);
30
-
31
- // It's okay to clear fields that didn't exist. No need to throw
32
- // an error.
33
- if (!precedenceList)
34
- return;
35
-
36
- let removedValue = undefined;
37
- for (var i = 0; i < precedenceList.length; i++) {
38
- var precedence = precedenceList[i];
39
- if (precedence.subscriptionHandle === subscriptionHandle) {
40
- // The view's value can only change if this subscription is the one that
41
- // used to have precedence.
42
- if (i === 0)
43
- removedValue = precedence.value;
44
- precedenceList.splice(i, 1);
45
- break;
46
- }
47
- }
48
- if (precedenceList.length === 0) {
49
- this.dataByKey.delete(key);
50
- changeCollector[key] = undefined;
51
- } else if (removedValue !== undefined && !equals(removedValue, precedenceList[0].value)) {
52
- changeCollector[key] = precedenceList[0].value;
53
- }
54
- }
55
-
56
- changeField(subscriptionHandle, key: string, value: any, changeCollector: Object, isAdd: boolean) {
57
- // Publish API ignores _id if present in fields
58
- if (key === "_id")
59
- return;
60
-
61
- // Don't share state with the data passed in by the user.
62
- value = clone(value);
63
-
64
- if (!this.dataByKey.has(key)) {
65
- this.dataByKey.set(key, [{
66
- subscriptionHandle: subscriptionHandle,
67
- value: value
68
- }]);
69
- changeCollector[key] = value;
70
- return;
71
- }
72
- const precedenceList = this.dataByKey.get(key);
73
- let elt;
74
- if (!isAdd) {
75
- elt = precedenceList.find(precedence => {
76
- return precedence.subscriptionHandle === subscriptionHandle;
77
- });
78
- }
79
-
80
- if (elt) {
81
- if (elt === precedenceList[0] && !equals(value, elt.value)) {
82
- // this subscription is changing the value of this field.
83
- changeCollector[key] = value;
84
- }
85
- elt.value = value;
86
- } else {
87
- // this subscription is newly caring about this field
88
- precedenceList.push({ subscriptionHandle: subscriptionHandle, value: value });
89
- }
90
-
91
- }
92
- }