@based/db 0.0.31 → 0.0.32
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/README.md +565 -3
- package/dist/lib/darwin_aarch64/include/selva/db.h +1 -1
- package/dist/lib/darwin_aarch64/include/selva/fields.h +0 -2
- package/dist/lib/darwin_aarch64/libdeflate.dylib +0 -0
- package/dist/lib/darwin_aarch64/libjemalloc_selva.2.dylib +0 -0
- package/dist/lib/darwin_aarch64/libnode-v20.node +0 -0
- package/dist/lib/darwin_aarch64/libselva.dylib +0 -0
- package/dist/src/client/flushModify.d.ts +1 -1
- package/dist/src/client/flushModify.js +5 -4
- package/dist/src/client/index.d.ts +3 -2
- package/dist/src/client/modify/binary.js +1 -1
- package/dist/src/client/modify/cardinality.js +1 -1
- package/dist/src/client/modify/references/appendEdgeRefs.js +3 -0
- package/dist/src/client/modify/references/edge.js +6 -0
- package/dist/src/client/modify/references/getEdgeSize.js +1 -1
- package/dist/src/client/modify/string.js +10 -4
- package/dist/src/client/modify/text.js +1 -9
- package/dist/src/client/modify/types.d.ts +1 -0
- package/dist/src/client/modify/types.js +1 -0
- package/dist/src/client/modify/upsert.js +33 -21
- package/dist/src/client/query/BasedDbQuery.js +1 -1
- package/dist/src/client/query/BasedIterable.d.ts +2 -2
- package/dist/src/client/query/BasedIterable.js +7 -1
- package/dist/src/client/query/aggregates/aggregation.d.ts +4 -0
- package/dist/src/client/query/aggregates/aggregation.js +12 -0
- package/dist/src/client/query/aggregation.d.ts +1 -1
- package/dist/src/client/query/debug.js +3 -2
- package/dist/src/client/query/display.js +1 -1
- package/dist/src/client/query/filter/createFixedFilterBuffer.js +1 -1
- package/dist/src/client/query/filter/createVariableFilterBuffer.js +1 -1
- package/dist/src/client/query/filter/parseFilterValue.js +1 -2
- package/dist/src/client/query/queryDef.js +2 -2
- package/dist/src/client/query/read/read.js +4 -14
- package/dist/src/client/query/registerQuery.js +1 -1
- package/dist/src/client/query/search/index.d.ts +1 -1
- package/dist/src/client/query/search/index.js +1 -1
- package/dist/src/client/query/sort.d.ts +1 -1
- package/dist/src/client/query/toBuffer.js +11 -15
- package/dist/src/client/query/types.d.ts +7 -0
- package/dist/src/client/query/types.js +8 -0
- package/dist/src/client/query/validation.d.ts +1 -1
- package/dist/src/client/query/validation.js +4 -5
- package/dist/src/client/string.js +1 -3
- package/dist/src/client/xxHash64.d.ts +1 -1
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +5 -1
- package/dist/src/native.d.ts +1 -2
- package/dist/src/native.js +2 -5
- package/dist/src/server/csmt/draw-dot.d.ts +3 -1
- package/dist/src/server/csmt/draw-dot.js +7 -2
- package/dist/src/server/csmt/match.d.ts +1 -1
- package/dist/src/server/csmt/memebership-proof.d.ts +1 -1
- package/dist/src/server/csmt/tree-utils.d.ts +4 -4
- package/dist/src/server/csmt/tree.d.ts +1 -1
- package/dist/src/server/csmt/tree.js +1 -1
- package/dist/src/server/csmt/types.d.ts +10 -10
- package/dist/src/server/dbHash.d.ts +1 -1
- package/dist/src/server/dbHash.js +1 -1
- package/dist/src/server/index.d.ts +8 -4
- package/dist/src/server/index.js +28 -13
- package/dist/src/server/migrate/worker.js +11 -0
- package/dist/src/server/save.js +3 -2
- package/dist/src/server/start.js +9 -5
- package/dist/src/utils.d.ts +0 -10
- package/dist/src/utils.js +0 -152
- package/package.json +3 -3
- package/dist/lib/darwin_aarch64/include/selva/xxhash64.h +0 -23
- package/dist/lib/darwin_aarch64/libnode-v21.node +0 -0
- package/dist/lib/darwin_aarch64/libnode-v22.node +0 -0
- package/dist/lib/darwin_aarch64/libnode-v23.node +0 -0
- package/dist/lib/linux_aarch64/include/cdefs.h +0 -317
- package/dist/lib/linux_aarch64/include/jemalloc.h +0 -468
- package/dist/lib/linux_aarch64/include/libdeflate.h +0 -322
- package/dist/lib/linux_aarch64/include/libdeflate_strings.h +0 -35
- package/dist/lib/linux_aarch64/include/linker_set.h +0 -109
- package/dist/lib/linux_aarch64/include/queue.h +0 -627
- package/dist/lib/linux_aarch64/include/selva/_export.h +0 -7
- package/dist/lib/linux_aarch64/include/selva/align.h +0 -9
- package/dist/lib/linux_aarch64/include/selva/backoff_timeout.h +0 -29
- package/dist/lib/linux_aarch64/include/selva/bitmap.h +0 -95
- package/dist/lib/linux_aarch64/include/selva/crc32c.h +0 -17
- package/dist/lib/linux_aarch64/include/selva/ctime.h +0 -135
- package/dist/lib/linux_aarch64/include/selva/db.h +0 -418
- package/dist/lib/linux_aarch64/include/selva/endian.h +0 -301
- package/dist/lib/linux_aarch64/include/selva/fast_linear_search.h +0 -23
- package/dist/lib/linux_aarch64/include/selva/fast_memcmp.h +0 -18
- package/dist/lib/linux_aarch64/include/selva/fast_memmem.h +0 -11
- package/dist/lib/linux_aarch64/include/selva/fast_parsei.h +0 -36
- package/dist/lib/linux_aarch64/include/selva/fields.h +0 -383
- package/dist/lib/linux_aarch64/include/selva/find.h +0 -47
- package/dist/lib/linux_aarch64/include/selva/history.h +0 -64
- package/dist/lib/linux_aarch64/include/selva/hll.h +0 -81
- package/dist/lib/linux_aarch64/include/selva/lpf.h +0 -28
- package/dist/lib/linux_aarch64/include/selva/node_id_set.h +0 -43
- package/dist/lib/linux_aarch64/include/selva/poptop.h +0 -114
- package/dist/lib/linux_aarch64/include/selva/queue_r.h +0 -190
- package/dist/lib/linux_aarch64/include/selva/selva_hash128.h +0 -49
- package/dist/lib/linux_aarch64/include/selva/selva_lang.h +0 -105
- package/dist/lib/linux_aarch64/include/selva/selva_math.h +0 -37
- package/dist/lib/linux_aarch64/include/selva/selva_string.h +0 -674
- package/dist/lib/linux_aarch64/include/selva/sort.h +0 -140
- package/dist/lib/linux_aarch64/include/selva/strsearch.h +0 -43
- package/dist/lib/linux_aarch64/include/selva/timestamp.h +0 -25
- package/dist/lib/linux_aarch64/include/selva/traverse.h +0 -65
- package/dist/lib/linux_aarch64/include/selva/types.h +0 -106
- package/dist/lib/linux_aarch64/include/selva/vector.h +0 -35
- package/dist/lib/linux_aarch64/include/selva/worker_ctx.h +0 -13
- package/dist/lib/linux_aarch64/include/selva/xxhash64.h +0 -23
- package/dist/lib/linux_aarch64/include/selva_error.h +0 -137
- package/dist/lib/linux_aarch64/include/selva_lang_code.h +0 -157
- package/dist/lib/linux_aarch64/include/tree.h +0 -852
- package/dist/lib/linux_aarch64/libdeflate.so +0 -0
- package/dist/lib/linux_aarch64/libjemalloc_selva.so.2 +0 -0
- package/dist/lib/linux_aarch64/libnode-v20.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v21.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v22.node +0 -0
- package/dist/lib/linux_aarch64/libnode-v23.node +0 -0
- package/dist/lib/linux_aarch64/libselva.so +0 -0
- package/dist/lib/linux_aarch64/libxxhash.so.0 +0 -0
- package/dist/lib/linux_x86_64/include/cdefs.h +0 -317
- package/dist/lib/linux_x86_64/include/jemalloc.h +0 -468
- package/dist/lib/linux_x86_64/include/libdeflate.h +0 -322
- package/dist/lib/linux_x86_64/include/libdeflate_strings.h +0 -35
- package/dist/lib/linux_x86_64/include/linker_set.h +0 -109
- package/dist/lib/linux_x86_64/include/queue.h +0 -627
- package/dist/lib/linux_x86_64/include/selva/_export.h +0 -7
- package/dist/lib/linux_x86_64/include/selva/align.h +0 -9
- package/dist/lib/linux_x86_64/include/selva/backoff_timeout.h +0 -29
- package/dist/lib/linux_x86_64/include/selva/bitmap.h +0 -95
- package/dist/lib/linux_x86_64/include/selva/crc32c.h +0 -17
- package/dist/lib/linux_x86_64/include/selva/ctime.h +0 -135
- package/dist/lib/linux_x86_64/include/selva/db.h +0 -418
- package/dist/lib/linux_x86_64/include/selva/endian.h +0 -301
- package/dist/lib/linux_x86_64/include/selva/fast_linear_search.h +0 -23
- package/dist/lib/linux_x86_64/include/selva/fast_memcmp.h +0 -18
- package/dist/lib/linux_x86_64/include/selva/fast_memmem.h +0 -11
- package/dist/lib/linux_x86_64/include/selva/fast_parsei.h +0 -36
- package/dist/lib/linux_x86_64/include/selva/fields.h +0 -383
- package/dist/lib/linux_x86_64/include/selva/find.h +0 -47
- package/dist/lib/linux_x86_64/include/selva/history.h +0 -64
- package/dist/lib/linux_x86_64/include/selva/hll.h +0 -81
- package/dist/lib/linux_x86_64/include/selva/lpf.h +0 -28
- package/dist/lib/linux_x86_64/include/selva/node_id_set.h +0 -43
- package/dist/lib/linux_x86_64/include/selva/poptop.h +0 -114
- package/dist/lib/linux_x86_64/include/selva/queue_r.h +0 -190
- package/dist/lib/linux_x86_64/include/selva/selva_hash128.h +0 -49
- package/dist/lib/linux_x86_64/include/selva/selva_lang.h +0 -105
- package/dist/lib/linux_x86_64/include/selva/selva_math.h +0 -37
- package/dist/lib/linux_x86_64/include/selva/selva_string.h +0 -674
- package/dist/lib/linux_x86_64/include/selva/sort.h +0 -140
- package/dist/lib/linux_x86_64/include/selva/strsearch.h +0 -43
- package/dist/lib/linux_x86_64/include/selva/timestamp.h +0 -25
- package/dist/lib/linux_x86_64/include/selva/traverse.h +0 -65
- package/dist/lib/linux_x86_64/include/selva/types.h +0 -106
- package/dist/lib/linux_x86_64/include/selva/vector.h +0 -35
- package/dist/lib/linux_x86_64/include/selva/worker_ctx.h +0 -13
- package/dist/lib/linux_x86_64/include/selva/xxhash64.h +0 -23
- package/dist/lib/linux_x86_64/include/selva_error.h +0 -137
- package/dist/lib/linux_x86_64/include/selva_lang_code.h +0 -157
- package/dist/lib/linux_x86_64/include/tree.h +0 -852
- package/dist/lib/linux_x86_64/libdeflate.so +0 -0
- package/dist/lib/linux_x86_64/libjemalloc_selva.so.2 +0 -0
- package/dist/lib/linux_x86_64/libnode-v20.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v21.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v22.node +0 -0
- package/dist/lib/linux_x86_64/libnode-v23.node +0 -0
- package/dist/lib/linux_x86_64/libselva.so +0 -0
- package/dist/lib/linux_x86_64/libxxhash.so.0 +0 -0
- package/dist/src/client/query/subscription/markers.d.ts +0 -10
- package/dist/src/client/query/subscription/markers.js +0 -213
- package/dist/src/client/query/subscription/run.d.ts +0 -5
- package/dist/src/client/query/subscription/run.js +0 -76
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { PropDef, PropDefEdge } from '@based/schema/def';
|
|
2
|
-
import { Subscription, SubscriptionMarkerMap, SubscriptionMarkersCheck } from './types.js';
|
|
3
|
-
import { BasedDbQuery } from '../BasedDbQuery.js';
|
|
4
|
-
import { DbClient } from '../../index.js';
|
|
5
|
-
export declare const getSubscriptionMarkers: (db: DbClient, typeId: number, id: number, isCreate: boolean) => SubscriptionMarkersCheck | false;
|
|
6
|
-
export declare const checkSubscriptionMarkers: (db: DbClient, m: SubscriptionMarkersCheck, prop: PropDef | PropDefEdge) => void;
|
|
7
|
-
export declare const createSubscriptionMarkerMap: () => SubscriptionMarkerMap;
|
|
8
|
-
export declare const addSubscriptionMarkers: (q: BasedDbQuery, subscription: Subscription) => void;
|
|
9
|
-
export declare const resetSubscriptionMarkers: (db: DbClient) => void;
|
|
10
|
-
export declare const deleteSubscriptionMarkers: (q: BasedDbQuery) => void;
|
|
@@ -1,213 +0,0 @@
|
|
|
1
|
-
import { startSubscription } from './run.js';
|
|
2
|
-
export const getSubscriptionMarkers = (db, typeId, id, isCreate) => {
|
|
3
|
-
if (!(typeId in db.subscriptionMarkers)) {
|
|
4
|
-
return false;
|
|
5
|
-
}
|
|
6
|
-
const t = db.subscriptionMarkers[typeId];
|
|
7
|
-
let subMarkersCheck = false;
|
|
8
|
-
if (!isCreate) {
|
|
9
|
-
if (t.ids.has(id)) {
|
|
10
|
-
const idMarkers = t.ids.get(id);
|
|
11
|
-
subMarkersCheck = { ids: idMarkers, collection: false };
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
if (t.collection) {
|
|
15
|
-
if (!subMarkersCheck) {
|
|
16
|
-
subMarkersCheck = { ids: false, collection: t.collection };
|
|
17
|
-
}
|
|
18
|
-
else {
|
|
19
|
-
subMarkersCheck.collection = t.collection;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
return subMarkersCheck;
|
|
23
|
-
};
|
|
24
|
-
export const checkSubscriptionMarkers = (db, m, prop) => {
|
|
25
|
-
let newSub = false;
|
|
26
|
-
if (m.ids) {
|
|
27
|
-
const markers = m.ids;
|
|
28
|
-
if (prop.separate) {
|
|
29
|
-
const propSubs = markers.props[prop.prop];
|
|
30
|
-
if (propSubs) {
|
|
31
|
-
for (const s of propSubs) {
|
|
32
|
-
if (!s.inProgress) {
|
|
33
|
-
newSub = true;
|
|
34
|
-
db.subscriptionsToRun.push(s);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
const propSubs = markers.main[prop.start];
|
|
41
|
-
if (propSubs) {
|
|
42
|
-
for (const s of propSubs) {
|
|
43
|
-
if (!s.inProgress) {
|
|
44
|
-
newSub = true;
|
|
45
|
-
db.subscriptionsToRun.push(s);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
if (m.collection) {
|
|
52
|
-
const markers = m.collection;
|
|
53
|
-
if (prop.separate) {
|
|
54
|
-
const propSubs = markers.props[prop.prop];
|
|
55
|
-
// @ts-ignore
|
|
56
|
-
if (propSubs && !propSubs.__handled) {
|
|
57
|
-
// @ts-ignore
|
|
58
|
-
propSubs.__handled = true;
|
|
59
|
-
for (const s of propSubs) {
|
|
60
|
-
if (!s.inProgress) {
|
|
61
|
-
newSub = true;
|
|
62
|
-
db.subscriptionsToRun.push(s);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
const propSubs = markers.main[prop.start];
|
|
69
|
-
// @ts-ignore
|
|
70
|
-
if (propSubs && !propSubs.__handled) {
|
|
71
|
-
// @ts-ignore
|
|
72
|
-
propSubs.__handled = true;
|
|
73
|
-
for (const s of propSubs) {
|
|
74
|
-
if (!s.inProgress) {
|
|
75
|
-
newSub = true;
|
|
76
|
-
db.subscriptionsToRun.push(s);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
if (newSub && !db.subscriptionsInProgress) {
|
|
83
|
-
startSubscription(db);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
export const createSubscriptionMarkerMap = () => {
|
|
87
|
-
return {};
|
|
88
|
-
};
|
|
89
|
-
const getFilterFields = (filter, results = {
|
|
90
|
-
main: new Set(),
|
|
91
|
-
props: new Set(),
|
|
92
|
-
}) => {
|
|
93
|
-
const conditions = filter.conditions;
|
|
94
|
-
if (conditions) {
|
|
95
|
-
conditions.forEach((v, k) => {
|
|
96
|
-
if (k === 0) {
|
|
97
|
-
for (const buf of v) {
|
|
98
|
-
const x = buf[4] | (buf[5] << 8);
|
|
99
|
-
results.main.add(x);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
else {
|
|
103
|
-
results.props.add(k);
|
|
104
|
-
}
|
|
105
|
-
});
|
|
106
|
-
}
|
|
107
|
-
if (filter.or) {
|
|
108
|
-
getFilterFields(filter.or, results);
|
|
109
|
-
}
|
|
110
|
-
return results;
|
|
111
|
-
};
|
|
112
|
-
// resetting subs is a copy for now
|
|
113
|
-
export const addSubscriptionMarkers = (q, subscription) => {
|
|
114
|
-
const typeId = q.def.schema.id;
|
|
115
|
-
if (!q.db.subscriptionMarkers[typeId]) {
|
|
116
|
-
q.db.subscriptionMarkers[typeId] = {
|
|
117
|
-
ids: new Map(),
|
|
118
|
-
collection: {
|
|
119
|
-
main: {},
|
|
120
|
-
props: {},
|
|
121
|
-
},
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
const markerType = q.db.subscriptionMarkers[typeId];
|
|
125
|
-
if ('id' in q.def.target) {
|
|
126
|
-
const id = q.def.target.id;
|
|
127
|
-
if (!markerType.ids.has(id)) {
|
|
128
|
-
markerType.ids.set(id, {
|
|
129
|
-
main: {},
|
|
130
|
-
props: {},
|
|
131
|
-
});
|
|
132
|
-
}
|
|
133
|
-
const marker = markerType.ids.get(id);
|
|
134
|
-
const props = q.def.include.props;
|
|
135
|
-
const main = q.def.include.main;
|
|
136
|
-
for (const [p] of props.entries()) {
|
|
137
|
-
if (!(p in marker.props)) {
|
|
138
|
-
marker.props[p] = [];
|
|
139
|
-
}
|
|
140
|
-
const markerProps = marker.props[p];
|
|
141
|
-
markerProps.push(subscription);
|
|
142
|
-
}
|
|
143
|
-
for (const p in main.include) {
|
|
144
|
-
if (!(p in marker.main)) {
|
|
145
|
-
marker.main[p] = [];
|
|
146
|
-
}
|
|
147
|
-
const markerProps = marker.main[p];
|
|
148
|
-
markerProps.push(subscription);
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
else if ('alias' in q.def.target) {
|
|
152
|
-
// later
|
|
153
|
-
}
|
|
154
|
-
else {
|
|
155
|
-
const props = q.def.include.props;
|
|
156
|
-
const main = q.def.include.main;
|
|
157
|
-
const marker = markerType.collection;
|
|
158
|
-
for (const [p] of props.entries()) {
|
|
159
|
-
if (!(p in marker.props)) {
|
|
160
|
-
marker.props[p] = [];
|
|
161
|
-
}
|
|
162
|
-
marker.props[p].push(subscription);
|
|
163
|
-
}
|
|
164
|
-
for (const p in main.include) {
|
|
165
|
-
if (!(p in marker.main)) {
|
|
166
|
-
marker.main[p] = [];
|
|
167
|
-
}
|
|
168
|
-
marker.main[p].push(subscription);
|
|
169
|
-
}
|
|
170
|
-
if (q.def.filter) {
|
|
171
|
-
const r = getFilterFields(q.def.filter);
|
|
172
|
-
r.main.forEach((k) => {
|
|
173
|
-
const p = String(k);
|
|
174
|
-
if (!(p in marker.main)) {
|
|
175
|
-
marker.main[p] = [];
|
|
176
|
-
// @ts-ignore
|
|
177
|
-
marker.main[p].__handled = false;
|
|
178
|
-
}
|
|
179
|
-
if (!main.include[p]) {
|
|
180
|
-
marker.main[p].push(subscription);
|
|
181
|
-
}
|
|
182
|
-
});
|
|
183
|
-
r.props.forEach((k) => {
|
|
184
|
-
const p = String(k);
|
|
185
|
-
if (!(p in marker.props)) {
|
|
186
|
-
marker.props[p] = [];
|
|
187
|
-
// @ts-ignore
|
|
188
|
-
marker.props[p].__handled = false;
|
|
189
|
-
}
|
|
190
|
-
if (!props.has(k)) {
|
|
191
|
-
marker.props[p].push(subscription);
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
};
|
|
197
|
-
export const resetSubscriptionMarkers = (db) => {
|
|
198
|
-
for (const typeId in db.subscriptionMarkers) {
|
|
199
|
-
const t = db.subscriptionMarkers[typeId];
|
|
200
|
-
for (const k in t.collection.main) {
|
|
201
|
-
// @ts-ignore
|
|
202
|
-
t.collection.main[k].__handled = false;
|
|
203
|
-
}
|
|
204
|
-
for (const k in t.collection.props) {
|
|
205
|
-
// @ts-ignore
|
|
206
|
-
t.collection.props[k].__handled = false;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
export const deleteSubscriptionMarkers = (q) => {
|
|
211
|
-
// derp
|
|
212
|
-
};
|
|
213
|
-
//# sourceMappingURL=markers.js.map
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { Subscription } from './types.js';
|
|
2
|
-
import { DbClient } from '../../index.js';
|
|
3
|
-
export declare const resultsAreEqual: (a: Uint8Array, b: Uint8Array) => boolean;
|
|
4
|
-
export declare const runSubscription: (subscription: Subscription) => void;
|
|
5
|
-
export declare const startSubscription: (db: DbClient) => void;
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
import { BasedQueryResponse } from '../BasedIterable.js';
|
|
2
|
-
import { resetSubscriptionMarkers } from './markers.js';
|
|
3
|
-
export const resultsAreEqual = (a, b) => {
|
|
4
|
-
const aLen = a.byteLength;
|
|
5
|
-
const bLen = b.byteLength;
|
|
6
|
-
if (aLen != bLen) {
|
|
7
|
-
return false;
|
|
8
|
-
}
|
|
9
|
-
if (a[aLen - 4] != b[bLen - 4])
|
|
10
|
-
return false;
|
|
11
|
-
if (a[aLen - 3] != b[bLen - 3])
|
|
12
|
-
return false;
|
|
13
|
-
if (a[aLen - 2] != b[bLen - 2])
|
|
14
|
-
return false;
|
|
15
|
-
if (a[aLen - 1] != b[bLen - 1])
|
|
16
|
-
return false;
|
|
17
|
-
return true;
|
|
18
|
-
};
|
|
19
|
-
const EMPTY = new Uint8Array(4);
|
|
20
|
-
export const runSubscription = (subscription) => {
|
|
21
|
-
if (!subscription.inProgress) {
|
|
22
|
-
subscription.inProgress = true;
|
|
23
|
-
const q = subscription.query;
|
|
24
|
-
const buf = q.buffer;
|
|
25
|
-
const d = performance.now();
|
|
26
|
-
q.db.hooks
|
|
27
|
-
.getQueryBuf(buf)
|
|
28
|
-
.then((res) => {
|
|
29
|
-
if (subscription.closed) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
subscription.inProgress = false;
|
|
33
|
-
let err = null;
|
|
34
|
-
let buf;
|
|
35
|
-
if (res instanceof Error) {
|
|
36
|
-
err = res;
|
|
37
|
-
buf = EMPTY;
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
buf = res;
|
|
41
|
-
}
|
|
42
|
-
if (subscription.res) {
|
|
43
|
-
if (resultsAreEqual(subscription.res.result, buf)) {
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
subscription.res.execTime = performance.now() - d;
|
|
47
|
-
subscription.res.result = buf;
|
|
48
|
-
subscription.res.end = buf.byteLength;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
subscription.res = new BasedQueryResponse(q.id, q.def, buf, performance.now() - d);
|
|
52
|
-
}
|
|
53
|
-
subscription.subs.forEach((fn) => {
|
|
54
|
-
fn(subscription.res, err);
|
|
55
|
-
});
|
|
56
|
-
})
|
|
57
|
-
.catch((err) => {
|
|
58
|
-
subscription.inProgress = false;
|
|
59
|
-
console.error('Subscription getQuery errors', err);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
};
|
|
63
|
-
export const startSubscription = (db) => {
|
|
64
|
-
if (!db.subscriptionsInProgress) {
|
|
65
|
-
db.subscriptionsInProgress = true;
|
|
66
|
-
setTimeout(() => {
|
|
67
|
-
db.subscriptionsToRun.forEach((s) => {
|
|
68
|
-
runSubscription(s);
|
|
69
|
-
});
|
|
70
|
-
db.subscriptionsToRun = [];
|
|
71
|
-
resetSubscriptionMarkers(db);
|
|
72
|
-
db.subscriptionsInProgress = false;
|
|
73
|
-
}, db.subscriptonThrottleMs);
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
//# sourceMappingURL=run.js.map
|