@graffy/fill 0.16.20-alpha.11 → 0.16.20-alpha.12
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 +26 -13
- package/index.mjs +26 -13
- package/package.json +4 -4
package/index.cjs
CHANGED
|
@@ -25,8 +25,10 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
25
25
|
try {
|
|
26
26
|
const changed = common.add(query, unknown);
|
|
27
27
|
log$1(changed ? "Resubscribing" : "Not resubscribing", unknown);
|
|
28
|
-
if (!changed)
|
|
29
|
-
|
|
28
|
+
if (!changed)
|
|
29
|
+
return;
|
|
30
|
+
if (upstream)
|
|
31
|
+
upstream.return();
|
|
30
32
|
upstream = store.call("watch", query, { skipFill: true });
|
|
31
33
|
let { value } = await upstream.next();
|
|
32
34
|
log$1("First payload", typeof value, value);
|
|
@@ -44,13 +46,15 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
44
46
|
async function putStream(stream2) {
|
|
45
47
|
log$1("Start putting stream");
|
|
46
48
|
try {
|
|
47
|
-
for await (const value of stream2)
|
|
49
|
+
for await (const value of stream2)
|
|
50
|
+
putValue(value, true);
|
|
48
51
|
} catch (e) {
|
|
49
52
|
error(e);
|
|
50
53
|
}
|
|
51
54
|
}
|
|
52
55
|
function putValue(value, isChange) {
|
|
53
|
-
if (typeof value === "undefined")
|
|
56
|
+
if (typeof value === "undefined")
|
|
57
|
+
return;
|
|
54
58
|
log$1("Put", isChange ? "Change" : "Value", typeof value);
|
|
55
59
|
if (value === null) {
|
|
56
60
|
data = empty();
|
|
@@ -62,7 +66,8 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
62
66
|
sieved = common.sieve(data, value);
|
|
63
67
|
} else {
|
|
64
68
|
sieved = common.slice(value, query).known;
|
|
65
|
-
if (sieved)
|
|
69
|
+
if (sieved)
|
|
70
|
+
common.merge(data, sieved);
|
|
66
71
|
}
|
|
67
72
|
log$1("Sieved: ", sieved && sieved);
|
|
68
73
|
if (raw && sieved) {
|
|
@@ -76,24 +81,29 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
76
81
|
const valueParts = common.slice(value, unknown);
|
|
77
82
|
if (valueParts.known) {
|
|
78
83
|
common.merge(data, valueParts.known);
|
|
79
|
-
if (raw)
|
|
84
|
+
if (raw)
|
|
85
|
+
common.merge(payload, valueParts.known);
|
|
80
86
|
unknown = valueParts.unknown;
|
|
81
87
|
}
|
|
82
88
|
}
|
|
83
|
-
if (unknown)
|
|
89
|
+
if (unknown)
|
|
90
|
+
return resubscribe(unknown);
|
|
84
91
|
if (!raw) {
|
|
85
|
-
if (!isChange || (sieved == null ? void 0 : sieved.length))
|
|
92
|
+
if (!isChange || (sieved == null ? void 0 : sieved.length))
|
|
93
|
+
push(data);
|
|
86
94
|
} else if (payload.length) {
|
|
87
95
|
push(payload);
|
|
88
96
|
payload = [];
|
|
89
97
|
}
|
|
90
98
|
}
|
|
91
99
|
function error(e) {
|
|
92
|
-
if (end)
|
|
100
|
+
if (end)
|
|
101
|
+
end(e);
|
|
93
102
|
unsubscribe();
|
|
94
103
|
}
|
|
95
104
|
function unsubscribe() {
|
|
96
|
-
if (upstream)
|
|
105
|
+
if (upstream)
|
|
106
|
+
upstream.return();
|
|
97
107
|
}
|
|
98
108
|
}
|
|
99
109
|
const log = debug("graffy:fill");
|
|
@@ -102,7 +112,8 @@ function fill(_) {
|
|
|
102
112
|
return (store) => {
|
|
103
113
|
store.on("read", [], async function fillOnRead(query, options, next) {
|
|
104
114
|
let value = await next(query);
|
|
105
|
-
if (options.skipFill)
|
|
115
|
+
if (options.skipFill)
|
|
116
|
+
return value;
|
|
106
117
|
if (!(value == null ? void 0 : value.length)) {
|
|
107
118
|
log("No progress", query);
|
|
108
119
|
throw Error("fill.no_progress");
|
|
@@ -111,7 +122,8 @@ function fill(_) {
|
|
|
111
122
|
while (budget-- > 1) {
|
|
112
123
|
const { known, unknown } = common.slice(value, query);
|
|
113
124
|
value = known;
|
|
114
|
-
if (!unknown)
|
|
125
|
+
if (!unknown)
|
|
126
|
+
break;
|
|
115
127
|
const res = await store.call("read", unknown, { skipFill: true });
|
|
116
128
|
common.merge(value, res);
|
|
117
129
|
}
|
|
@@ -122,7 +134,8 @@ function fill(_) {
|
|
|
122
134
|
return value;
|
|
123
135
|
});
|
|
124
136
|
store.on("watch", [], function fillOnWatch(query, options, next) {
|
|
125
|
-
if (options.skipFill)
|
|
137
|
+
if (options.skipFill)
|
|
138
|
+
return next(query);
|
|
126
139
|
return subscribe(store, query, options);
|
|
127
140
|
});
|
|
128
141
|
};
|
package/index.mjs
CHANGED
|
@@ -24,8 +24,10 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
24
24
|
try {
|
|
25
25
|
const changed = add(query, unknown);
|
|
26
26
|
log$1(changed ? "Resubscribing" : "Not resubscribing", unknown);
|
|
27
|
-
if (!changed)
|
|
28
|
-
|
|
27
|
+
if (!changed)
|
|
28
|
+
return;
|
|
29
|
+
if (upstream)
|
|
30
|
+
upstream.return();
|
|
29
31
|
upstream = store.call("watch", query, { skipFill: true });
|
|
30
32
|
let { value } = await upstream.next();
|
|
31
33
|
log$1("First payload", typeof value, value);
|
|
@@ -43,13 +45,15 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
43
45
|
async function putStream(stream2) {
|
|
44
46
|
log$1("Start putting stream");
|
|
45
47
|
try {
|
|
46
|
-
for await (const value of stream2)
|
|
48
|
+
for await (const value of stream2)
|
|
49
|
+
putValue(value, true);
|
|
47
50
|
} catch (e) {
|
|
48
51
|
error(e);
|
|
49
52
|
}
|
|
50
53
|
}
|
|
51
54
|
function putValue(value, isChange) {
|
|
52
|
-
if (typeof value === "undefined")
|
|
55
|
+
if (typeof value === "undefined")
|
|
56
|
+
return;
|
|
53
57
|
log$1("Put", isChange ? "Change" : "Value", typeof value);
|
|
54
58
|
if (value === null) {
|
|
55
59
|
data = empty();
|
|
@@ -61,7 +65,8 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
61
65
|
sieved = sieve(data, value);
|
|
62
66
|
} else {
|
|
63
67
|
sieved = slice(value, query).known;
|
|
64
|
-
if (sieved)
|
|
68
|
+
if (sieved)
|
|
69
|
+
merge(data, sieved);
|
|
65
70
|
}
|
|
66
71
|
log$1("Sieved: ", sieved && sieved);
|
|
67
72
|
if (raw && sieved) {
|
|
@@ -75,24 +80,29 @@ function subscribe(store, originalQuery, { raw }) {
|
|
|
75
80
|
const valueParts = slice(value, unknown);
|
|
76
81
|
if (valueParts.known) {
|
|
77
82
|
merge(data, valueParts.known);
|
|
78
|
-
if (raw)
|
|
83
|
+
if (raw)
|
|
84
|
+
merge(payload, valueParts.known);
|
|
79
85
|
unknown = valueParts.unknown;
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
|
-
if (unknown)
|
|
88
|
+
if (unknown)
|
|
89
|
+
return resubscribe(unknown);
|
|
83
90
|
if (!raw) {
|
|
84
|
-
if (!isChange || (sieved == null ? void 0 : sieved.length))
|
|
91
|
+
if (!isChange || (sieved == null ? void 0 : sieved.length))
|
|
92
|
+
push(data);
|
|
85
93
|
} else if (payload.length) {
|
|
86
94
|
push(payload);
|
|
87
95
|
payload = [];
|
|
88
96
|
}
|
|
89
97
|
}
|
|
90
98
|
function error(e) {
|
|
91
|
-
if (end)
|
|
99
|
+
if (end)
|
|
100
|
+
end(e);
|
|
92
101
|
unsubscribe();
|
|
93
102
|
}
|
|
94
103
|
function unsubscribe() {
|
|
95
|
-
if (upstream)
|
|
104
|
+
if (upstream)
|
|
105
|
+
upstream.return();
|
|
96
106
|
}
|
|
97
107
|
}
|
|
98
108
|
const log = debug("graffy:fill");
|
|
@@ -101,7 +111,8 @@ function fill(_) {
|
|
|
101
111
|
return (store) => {
|
|
102
112
|
store.on("read", [], async function fillOnRead(query, options, next) {
|
|
103
113
|
let value = await next(query);
|
|
104
|
-
if (options.skipFill)
|
|
114
|
+
if (options.skipFill)
|
|
115
|
+
return value;
|
|
105
116
|
if (!(value == null ? void 0 : value.length)) {
|
|
106
117
|
log("No progress", query);
|
|
107
118
|
throw Error("fill.no_progress");
|
|
@@ -110,7 +121,8 @@ function fill(_) {
|
|
|
110
121
|
while (budget-- > 1) {
|
|
111
122
|
const { known, unknown } = slice(value, query);
|
|
112
123
|
value = known;
|
|
113
|
-
if (!unknown)
|
|
124
|
+
if (!unknown)
|
|
125
|
+
break;
|
|
114
126
|
const res = await store.call("read", unknown, { skipFill: true });
|
|
115
127
|
merge(value, res);
|
|
116
128
|
}
|
|
@@ -121,7 +133,8 @@ function fill(_) {
|
|
|
121
133
|
return value;
|
|
122
134
|
});
|
|
123
135
|
store.on("watch", [], function fillOnWatch(query, options, next) {
|
|
124
|
-
if (options.skipFill)
|
|
136
|
+
if (options.skipFill)
|
|
137
|
+
return next(query);
|
|
125
138
|
return subscribe(store, query, options);
|
|
126
139
|
});
|
|
127
140
|
};
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
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.16.20-alpha.
|
|
5
|
+
"version": "0.16.20-alpha.12",
|
|
6
6
|
"main": "./index.cjs",
|
|
7
7
|
"exports": {
|
|
8
8
|
"import": "./index.mjs",
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
},
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"@graffy/common": "0.16.20-alpha.
|
|
20
|
-
"debug": "^4.3.
|
|
21
|
-
"@graffy/stream": "0.16.20-alpha.
|
|
19
|
+
"@graffy/common": "0.16.20-alpha.12",
|
|
20
|
+
"debug": "^4.3.3",
|
|
21
|
+
"@graffy/stream": "0.16.20-alpha.12"
|
|
22
22
|
}
|
|
23
23
|
}
|