@graffy/fill 0.15.6 → 0.15.8-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.cjs +1 -0
- package/index.d.ts +8 -0
- package/index.mjs +1 -0
- package/package.json +11 -7
- package/cjs/index.js +0 -123
- package/cjs/subscribe.js +0 -296
- package/types/index.d.ts +0 -1
- package/types/subscribe.d.ts +0 -3
package/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var r=require("@graffy/common"),n=require("@graffy/stream"),t=require("debug"),e=require("@graffy/testing");function a(r){return r&&"object"==typeof r&&"default"in r?r:{default:r}}var o=a(t);const i=o.default("graffy:fill:subscribe");function f(t,a,{raw:o}){const f=()=>r.finalize([],a,0);let l,u,c,s=[],m=f(),g=[];const w=n.makeStream(((r,n)=>(l=n=>{i("Push",e.format(n)),r(n)},u=n,p)));return d(a),w;async function d(n){try{const a=r.add(s,n);if(i(a?"Resubscribing":"Not resubscribing",e.format(n)),!a)return;c&&c.return(),c=t.call("watch",s,{skipFill:!0});let{value:o}=await c.next();i("First payload",typeof o,e.format(o)),void 0===o&&(o=await t.call("read",n,{skipCache:!0}),i("Read initial value",e.format(o))),k(o,!1)}catch(a){i("resubscribe error",a),y(a)}!async function(r){i("Start putting stream");try{for await(const n of r)k(n,!0)}catch(a){y(a)}}(c)}function k(n,t){if(void 0===n)return;if(i("Put",t?"Change":"Value",typeof n),null===n)return m=f(),void l(null);let u;t?u=r.sieve(m,n):(u=r.slice(n,s).known,u&&r.merge(m,u)),i("Sieved: ",u&&e.format(u)),o&&u&&r.merge(g,u);let{known:c,unknown:w}=r.slice(m,a);if(m=c||f(),i("Data and unknown",e.format(m),w&&e.format(w)),i("Payload and value",e.format(g),n&&e.format(n)),t&&n&&w){const t=r.slice(n,w);t.known&&(r.merge(m,t.known),o&&r.merge(g,t.known),w=t.unknown)}if(w)return d(w);o?g.length&&(l(g),g=[]):(!t||u&&u.length)&&l(m)}function y(r){u&&u(r),p()}function p(){c&&c.return()}}const l=o.default("graffy:fill");module.exports=function(n){return n=>{n.on("read",[],(async function(t,a,o){let i=await o(t);if(a.skipFill)return i;if(!i||!i.length)throw l("No progress",e.format(t)),Error("fill.no_progress");let f=10;for(;f-- >1;){const{known:e,unknown:a}=r.slice(i,t);if(i=e,!a)break;const o=await n.call("read",a,{skipFill:!0});r.merge(i,o)}if(!f)throw l("fill.max_recursion",e.format(i),e.format(t)),new Error("fill.max_recursion");return i})),n.on("watch",[],(function(r,t,e){return t.skipFill?e(r):f(n,r,t)}))}};
|
package/index.d.ts
ADDED
package/index.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{finalize as n,add as r,sieve as t,slice as o,merge as i}from"@graffy/common";import{makeStream as a}from"@graffy/stream";import e from"debug";import{format as l}from"@graffy/testing";const f=e("graffy:fill:subscribe");function u(e,u,{raw:c}){const s=()=>n([],u,0);let w,g,k,p=[],d=s(),m=[];const y=a(((n,r)=>(w=r=>{f("Push",l(r)),n(r)},g=r,F)));return h(u),y;async function h(n){try{const t=r(p,n);if(f(t?"Resubscribing":"Not resubscribing",l(n)),!t)return;k&&k.return(),k=e.call("watch",p,{skipFill:!0});let{value:o}=await k.next();f("First payload",typeof o,l(o)),void 0===o&&(o=await e.call("read",n,{skipCache:!0}),f("Read initial value",l(o))),b(o,!1)}catch(t){f("resubscribe error",t),v(t)}!async function(n){f("Start putting stream");try{for await(const r of n)b(r,!0)}catch(t){v(t)}}(k)}function b(n,r){if(void 0===n)return;if(f("Put",r?"Change":"Value",typeof n),null===n)return d=s(),void w(null);let a;r?a=t(d,n):(a=o(n,p).known,a&&i(d,a)),f("Sieved: ",a&&l(a)),c&&a&&i(m,a);let{known:e,unknown:g}=o(d,u);if(d=e||s(),f("Data and unknown",l(d),g&&l(g)),f("Payload and value",l(m),n&&l(n)),r&&n&&g){const r=o(n,g);r.known&&(i(d,r.known),c&&i(m,r.known),g=r.unknown)}if(g)return h(g);c?m.length&&(w(m),m=[]):(!r||a&&a.length)&&w(d)}function v(n){g&&g(n),F()}function F(){k&&k.return()}}const c=e("graffy:fill");function s(n){return n=>{n.on("read",[],(async function(r,t,a){let e=await a(r);if(t.skipFill)return e;if(!e||!e.length)throw c("No progress",l(r)),Error("fill.no_progress");let f=10;for(;f-- >1;){const{known:t,unknown:a}=o(e,r);if(e=t,!a)break;const l=await n.call("read",a,{skipFill:!0});i(e,l)}if(!f)throw c("fill.max_recursion",l(e),l(r)),new Error("fill.max_recursion");return e})),n.on("watch",[],(function(r,t,o){return t.skipFill?o(r):u(n,r,t)}))}}export{s as default};
|
package/package.json
CHANGED
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
"name": "@graffy/fill",
|
|
3
3
|
"description": "Graffy module for fulfilling queries using multiple backends, traversing links and turning subscriptions into live queries.",
|
|
4
4
|
"author": "aravind (https://github.com/aravindet)",
|
|
5
|
-
"version": "0.15.
|
|
6
|
-
"main": "./
|
|
7
|
-
"
|
|
5
|
+
"version": "0.15.8-alpha.3",
|
|
6
|
+
"main": "./index.cjs",
|
|
7
|
+
"exports": {
|
|
8
|
+
"import": "./index.mjs",
|
|
9
|
+
"require": "./index.cjs"
|
|
10
|
+
},
|
|
11
|
+
"module": "./index.mjs",
|
|
12
|
+
"types": "./index.d.ts",
|
|
8
13
|
"repository": {
|
|
9
14
|
"type": "git",
|
|
10
15
|
"url": "git+https://github.com/usegraffy/graffy.git"
|
|
11
16
|
},
|
|
12
17
|
"license": "Apache-2.0",
|
|
13
18
|
"dependencies": {
|
|
14
|
-
"@
|
|
15
|
-
"@graffy/
|
|
16
|
-
"@graffy/stream": "0.15.6",
|
|
19
|
+
"@graffy/common": "0.15.8-alpha.3",
|
|
20
|
+
"@graffy/stream": "0.15.8-alpha.3",
|
|
17
21
|
"debug": "^4.3.2",
|
|
18
|
-
"@graffy/testing": "0.15.
|
|
22
|
+
"@graffy/testing": "0.15.8-alpha.3"
|
|
19
23
|
}
|
|
20
24
|
}
|
package/cjs/index.js
DELETED
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
|
|
4
|
-
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
|
-
exports.__esModule = true;
|
|
8
|
-
exports.default = fill;
|
|
9
|
-
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
|
-
var _common = require("@graffy/common");
|
|
15
|
-
|
|
16
|
-
var _subscribe = _interopRequireDefault(require("./subscribe.js"));
|
|
17
|
-
|
|
18
|
-
var _testing = require("@graffy/testing");
|
|
19
|
-
|
|
20
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
21
|
-
|
|
22
|
-
var log = (0, _debug.default)('graffy:fill');
|
|
23
|
-
var MAX_RECURSIONS = 10;
|
|
24
|
-
|
|
25
|
-
function fill(_) {
|
|
26
|
-
return function (store) {
|
|
27
|
-
store.on('read', [], /*#__PURE__*/function () {
|
|
28
|
-
var _fillOnRead = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(query, options, next) {
|
|
29
|
-
var value, budget, _slice, known, unknown, res;
|
|
30
|
-
|
|
31
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
32
|
-
while (1) {
|
|
33
|
-
switch (_context.prev = _context.next) {
|
|
34
|
-
case 0:
|
|
35
|
-
_context.next = 2;
|
|
36
|
-
return next(query);
|
|
37
|
-
|
|
38
|
-
case 2:
|
|
39
|
-
value = _context.sent;
|
|
40
|
-
|
|
41
|
-
if (!options.skipFill) {
|
|
42
|
-
_context.next = 5;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return _context.abrupt("return", value);
|
|
47
|
-
|
|
48
|
-
case 5:
|
|
49
|
-
if (!(!value || !value.length)) {
|
|
50
|
-
_context.next = 8;
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
log('No progress', (0, _testing.format)(query));
|
|
55
|
-
throw Error('fill.no_progress');
|
|
56
|
-
|
|
57
|
-
case 8:
|
|
58
|
-
budget = MAX_RECURSIONS;
|
|
59
|
-
|
|
60
|
-
case 9:
|
|
61
|
-
if (!(budget-- > 1)) {
|
|
62
|
-
_context.next = 20;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// console.log('filled value', value);
|
|
67
|
-
_slice = (0, _sliceInstanceProperty(_common))(value, query), known = _slice.known, unknown = _slice.unknown;
|
|
68
|
-
value = known;
|
|
69
|
-
|
|
70
|
-
if (unknown) {
|
|
71
|
-
_context.next = 14;
|
|
72
|
-
break;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
return _context.abrupt("break", 20);
|
|
76
|
-
|
|
77
|
-
case 14:
|
|
78
|
-
_context.next = 16;
|
|
79
|
-
return store.call('read', unknown, {
|
|
80
|
-
skipFill: true
|
|
81
|
-
});
|
|
82
|
-
|
|
83
|
-
case 16:
|
|
84
|
-
res = _context.sent;
|
|
85
|
-
// console.log('fetched', res);
|
|
86
|
-
(0, _common.merge)(value, res);
|
|
87
|
-
_context.next = 9;
|
|
88
|
-
break;
|
|
89
|
-
|
|
90
|
-
case 20:
|
|
91
|
-
if (budget) {
|
|
92
|
-
_context.next = 23;
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
log('fill.max_recursion', (0, _testing.format)(value), (0, _testing.format)(query));
|
|
97
|
-
throw new Error('fill.max_recursion');
|
|
98
|
-
|
|
99
|
-
case 23:
|
|
100
|
-
return _context.abrupt("return", value);
|
|
101
|
-
|
|
102
|
-
case 24:
|
|
103
|
-
case "end":
|
|
104
|
-
return _context.stop();
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}, _callee);
|
|
108
|
-
}));
|
|
109
|
-
|
|
110
|
-
function fillOnRead(_x, _x2, _x3) {
|
|
111
|
-
return _fillOnRead.apply(this, arguments);
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return fillOnRead;
|
|
115
|
-
}());
|
|
116
|
-
store.on('watch', [], function fillOnWatch(query, options, next) {
|
|
117
|
-
if (options.skipFill) return next(query);
|
|
118
|
-
return (0, _subscribe.default)(store, query, options);
|
|
119
|
-
});
|
|
120
|
-
};
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
module.exports = exports.default;
|
package/cjs/subscribe.js
DELETED
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
var _sliceInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/slice");
|
|
4
|
-
|
|
5
|
-
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
6
|
-
|
|
7
|
-
exports.__esModule = true;
|
|
8
|
-
exports.default = subscribe;
|
|
9
|
-
|
|
10
|
-
var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
|
|
11
|
-
|
|
12
|
-
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
13
|
-
|
|
14
|
-
var _asyncIterator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncIterator"));
|
|
15
|
-
|
|
16
|
-
var _common = require("@graffy/common");
|
|
17
|
-
|
|
18
|
-
var _stream = require("@graffy/stream");
|
|
19
|
-
|
|
20
|
-
var _debug = _interopRequireDefault(require("debug"));
|
|
21
|
-
|
|
22
|
-
var _testing = require("@graffy/testing");
|
|
23
|
-
|
|
24
|
-
var log = (0, _debug.default)('graffy:fill:subscribe');
|
|
25
|
-
|
|
26
|
-
function subscribe(store, originalQuery, _ref) {
|
|
27
|
-
var raw = _ref.raw;
|
|
28
|
-
|
|
29
|
-
var empty = function empty() {
|
|
30
|
-
return (0, _common.finalize)([], originalQuery, 0);
|
|
31
|
-
};
|
|
32
|
-
|
|
33
|
-
var push, end;
|
|
34
|
-
var upstream;
|
|
35
|
-
var query = [];
|
|
36
|
-
var data = empty();
|
|
37
|
-
var payload = [];
|
|
38
|
-
var stream = (0, _stream.makeStream)(function (streamPush, streamEnd) {
|
|
39
|
-
push = function push(v) {
|
|
40
|
-
log('Push', (0, _testing.format)(v));
|
|
41
|
-
streamPush(v);
|
|
42
|
-
};
|
|
43
|
-
|
|
44
|
-
end = streamEnd;
|
|
45
|
-
return unsubscribe;
|
|
46
|
-
});
|
|
47
|
-
resubscribe(originalQuery);
|
|
48
|
-
return stream;
|
|
49
|
-
|
|
50
|
-
function resubscribe(_x) {
|
|
51
|
-
return _resubscribe.apply(this, arguments);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function _resubscribe() {
|
|
55
|
-
_resubscribe = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(unknown) {
|
|
56
|
-
var changed, _yield$upstream$next, value;
|
|
57
|
-
|
|
58
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
|
59
|
-
while (1) {
|
|
60
|
-
switch (_context.prev = _context.next) {
|
|
61
|
-
case 0:
|
|
62
|
-
_context.prev = 0;
|
|
63
|
-
changed = (0, _common.add)(query, unknown);
|
|
64
|
-
log(changed ? 'Resubscribing' : 'Not resubscribing', (0, _testing.format)(unknown));
|
|
65
|
-
|
|
66
|
-
if (changed) {
|
|
67
|
-
_context.next = 5;
|
|
68
|
-
break;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return _context.abrupt("return");
|
|
72
|
-
|
|
73
|
-
case 5:
|
|
74
|
-
if (upstream) upstream.return(); // Close the existing stream.
|
|
75
|
-
|
|
76
|
-
upstream = store.call('watch', query, {
|
|
77
|
-
skipFill: true
|
|
78
|
-
});
|
|
79
|
-
_context.next = 9;
|
|
80
|
-
return upstream.next();
|
|
81
|
-
|
|
82
|
-
case 9:
|
|
83
|
-
_yield$upstream$next = _context.sent;
|
|
84
|
-
value = _yield$upstream$next.value;
|
|
85
|
-
log('First payload', typeof value, (0, _testing.format)(value));
|
|
86
|
-
|
|
87
|
-
if (!(typeof value === 'undefined')) {
|
|
88
|
-
_context.next = 17;
|
|
89
|
-
break;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
_context.next = 15;
|
|
93
|
-
return store.call('read', unknown, {
|
|
94
|
-
skipCache: true
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
case 15:
|
|
98
|
-
value = _context.sent;
|
|
99
|
-
log('Read initial value', (0, _testing.format)(value));
|
|
100
|
-
|
|
101
|
-
case 17:
|
|
102
|
-
// value = value && slice(value, unknown).known;
|
|
103
|
-
putValue(value, false);
|
|
104
|
-
_context.next = 24;
|
|
105
|
-
break;
|
|
106
|
-
|
|
107
|
-
case 20:
|
|
108
|
-
_context.prev = 20;
|
|
109
|
-
_context.t0 = _context["catch"](0);
|
|
110
|
-
log('resubscribe error', _context.t0);
|
|
111
|
-
error(_context.t0);
|
|
112
|
-
|
|
113
|
-
case 24:
|
|
114
|
-
putStream(upstream);
|
|
115
|
-
|
|
116
|
-
case 25:
|
|
117
|
-
case "end":
|
|
118
|
-
return _context.stop();
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}, _callee, null, [[0, 20]]);
|
|
122
|
-
}));
|
|
123
|
-
return _resubscribe.apply(this, arguments);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
function putStream(_x2) {
|
|
127
|
-
return _putStream.apply(this, arguments);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
function _putStream() {
|
|
131
|
-
_putStream = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(stream) {
|
|
132
|
-
var _iteratorAbruptCompletion, _didIteratorError, _iteratorError, _iterator, _step, value;
|
|
133
|
-
|
|
134
|
-
return _regenerator.default.wrap(function _callee2$(_context2) {
|
|
135
|
-
while (1) {
|
|
136
|
-
switch (_context2.prev = _context2.next) {
|
|
137
|
-
case 0:
|
|
138
|
-
// TODO: Backpressure: pause pulling if downstream listener is saturated.
|
|
139
|
-
log('Start putting stream');
|
|
140
|
-
_context2.prev = 1;
|
|
141
|
-
_iteratorAbruptCompletion = false;
|
|
142
|
-
_didIteratorError = false;
|
|
143
|
-
_context2.prev = 4;
|
|
144
|
-
_iterator = (0, _asyncIterator2.default)(stream);
|
|
145
|
-
|
|
146
|
-
case 6:
|
|
147
|
-
_context2.next = 8;
|
|
148
|
-
return _iterator.next();
|
|
149
|
-
|
|
150
|
-
case 8:
|
|
151
|
-
if (!(_iteratorAbruptCompletion = !(_step = _context2.sent).done)) {
|
|
152
|
-
_context2.next = 14;
|
|
153
|
-
break;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
value = _step.value;
|
|
157
|
-
putValue(value, true);
|
|
158
|
-
|
|
159
|
-
case 11:
|
|
160
|
-
_iteratorAbruptCompletion = false;
|
|
161
|
-
_context2.next = 6;
|
|
162
|
-
break;
|
|
163
|
-
|
|
164
|
-
case 14:
|
|
165
|
-
_context2.next = 20;
|
|
166
|
-
break;
|
|
167
|
-
|
|
168
|
-
case 16:
|
|
169
|
-
_context2.prev = 16;
|
|
170
|
-
_context2.t0 = _context2["catch"](4);
|
|
171
|
-
_didIteratorError = true;
|
|
172
|
-
_iteratorError = _context2.t0;
|
|
173
|
-
|
|
174
|
-
case 20:
|
|
175
|
-
_context2.prev = 20;
|
|
176
|
-
_context2.prev = 21;
|
|
177
|
-
|
|
178
|
-
if (!(_iteratorAbruptCompletion && _iterator.return != null)) {
|
|
179
|
-
_context2.next = 25;
|
|
180
|
-
break;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
_context2.next = 25;
|
|
184
|
-
return _iterator.return();
|
|
185
|
-
|
|
186
|
-
case 25:
|
|
187
|
-
_context2.prev = 25;
|
|
188
|
-
|
|
189
|
-
if (!_didIteratorError) {
|
|
190
|
-
_context2.next = 28;
|
|
191
|
-
break;
|
|
192
|
-
}
|
|
193
|
-
|
|
194
|
-
throw _iteratorError;
|
|
195
|
-
|
|
196
|
-
case 28:
|
|
197
|
-
return _context2.finish(25);
|
|
198
|
-
|
|
199
|
-
case 29:
|
|
200
|
-
return _context2.finish(20);
|
|
201
|
-
|
|
202
|
-
case 30:
|
|
203
|
-
_context2.next = 35;
|
|
204
|
-
break;
|
|
205
|
-
|
|
206
|
-
case 32:
|
|
207
|
-
_context2.prev = 32;
|
|
208
|
-
_context2.t1 = _context2["catch"](1);
|
|
209
|
-
error(_context2.t1);
|
|
210
|
-
|
|
211
|
-
case 35:
|
|
212
|
-
case "end":
|
|
213
|
-
return _context2.stop();
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
}, _callee2, null, [[1, 32], [4, 16, 20, 30], [21,, 25, 29]]);
|
|
217
|
-
}));
|
|
218
|
-
return _putStream.apply(this, arguments);
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
function putValue(value, isChange) {
|
|
222
|
-
if (typeof value === 'undefined') return;
|
|
223
|
-
log('Put', isChange ? 'Change' : 'Value', typeof value);
|
|
224
|
-
|
|
225
|
-
if (value === null) {
|
|
226
|
-
// No results exist at this moment.
|
|
227
|
-
data = empty();
|
|
228
|
-
push(null);
|
|
229
|
-
return;
|
|
230
|
-
} // We do this to ensure that everything in value gets incorporated
|
|
231
|
-
// into data, even as we use sieve to ensure only actual changes are
|
|
232
|
-
// added to payload.
|
|
233
|
-
// if (!isChange) merge(data, [{ key: '', end: '\uffff', version: -1 }]);
|
|
234
|
-
// log('Data before sieve', format(data));
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
var sieved;
|
|
238
|
-
|
|
239
|
-
if (isChange) {
|
|
240
|
-
sieved = (0, _common.sieve)(data, value);
|
|
241
|
-
} else {
|
|
242
|
-
sieved = (0, _sliceInstanceProperty(_common))(value, query).known;
|
|
243
|
-
if (sieved) (0, _common.merge)(data, sieved);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
log('Sieved: ', sieved && (0, _testing.format)(sieved));
|
|
247
|
-
|
|
248
|
-
if (raw && sieved) {
|
|
249
|
-
// log('Payload before adding sieved', format(payload));
|
|
250
|
-
(0, _common.merge)(payload, sieved); // log('Payload after adding sieved', format(payload));
|
|
251
|
-
} // The new value might have removed a link, making parts of
|
|
252
|
-
// data unnecessary, or added a link, introducing
|
|
253
|
-
// new data requirements. Let's find out.
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
var _slice = (0, _sliceInstanceProperty(_common))(data, originalQuery),
|
|
257
|
-
known = _slice.known,
|
|
258
|
-
unknown = _slice.unknown;
|
|
259
|
-
|
|
260
|
-
data = known || empty();
|
|
261
|
-
log('Data and unknown', (0, _testing.format)(data), unknown && (0, _testing.format)(unknown));
|
|
262
|
-
log('Payload and value', (0, _testing.format)(payload), value && (0, _testing.format)(value));
|
|
263
|
-
|
|
264
|
-
if (isChange && value && unknown) {
|
|
265
|
-
// The sieve may have removed some necessary data (that we weren't aware
|
|
266
|
-
// was necessary). Get it back.
|
|
267
|
-
var valueParts = (0, _sliceInstanceProperty(_common))(value, unknown);
|
|
268
|
-
|
|
269
|
-
if (valueParts.known) {
|
|
270
|
-
(0, _common.merge)(data, valueParts.known);
|
|
271
|
-
if (raw) (0, _common.merge)(payload, valueParts.known);
|
|
272
|
-
unknown = valueParts.unknown;
|
|
273
|
-
}
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
if (unknown) return resubscribe(unknown);
|
|
277
|
-
|
|
278
|
-
if (!raw) {
|
|
279
|
-
if (!isChange || sieved && sieved.length) push(data);
|
|
280
|
-
} else if (payload.length) {
|
|
281
|
-
push(payload);
|
|
282
|
-
payload = [];
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
function error(e) {
|
|
287
|
-
if (end) end(e);
|
|
288
|
-
unsubscribe();
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
function unsubscribe() {
|
|
292
|
-
if (upstream) upstream.return();
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
module.exports = exports.default;
|
package/types/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export default function fill(_: any): (store: any) => void;
|
package/types/subscribe.d.ts
DELETED