jinaga-server 3.5.5 → 3.7.0
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/dist/authorization/authorization-keystore.d.ts +34 -2
- package/dist/authorization/authorization-keystore.js +59 -4
- package/dist/authorization/authorization-keystore.js.map +1 -1
- package/dist/feeds/feed-stream-session.d.ts +84 -0
- package/dist/feeds/feed-stream-session.js +331 -0
- package/dist/feeds/feed-stream-session.js.map +1 -0
- package/dist/http/router.d.ts +10 -3
- package/dist/http/router.js +186 -184
- package/dist/http/router.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/jinaga-server.d.ts +7 -0
- package/dist/jinaga-server.js +19 -2
- package/dist/jinaga-server.js.map +1 -1
- package/dist/memory/memory-keystore.js +1 -1
- package/dist/memory/memory-keystore.js.map +1 -1
- package/dist/postgres/query-description.d.ts +1 -0
- package/dist/postgres/query-description.js +34 -3
- package/dist/postgres/query-description.js.map +1 -1
- package/dist/postgres/specification-sql.js +7 -1
- package/dist/postgres/specification-sql.js.map +1 -1
- package/docs/design/feeds-persistent-proxy-plan.md +11 -1
- package/integration-test/jinaga-test/distribution-multi-given.test.js +184 -0
- package/integration-test/jinaga-test/distribution-negating-feed.test.js +202 -0
- package/integration-test/jinaga-test/feed-existential-input.test.js +241 -0
- package/integration-test/jinaga-test/feeds-endpoint.test.js +140 -0
- package/integration-test/jinaga-test/package-lock.json +4 -4
- package/integration-test/jinaga-test/package.json +3 -2
- package/integration-test/jinaga-test/subscription-anchor-arrival.test.js +129 -0
- package/integration-test/jinaga-test/subscription-helpers.js +60 -0
- package/integration-test/jinaga-test/subscription-late-auth.test.js +245 -0
- package/integration-test/jinaga-test/subscription-no-rule.test.js +137 -0
- package/package.json +2 -2
- package/src/authorization/authorization-keystore.ts +106 -5
- package/src/feeds/feed-stream-session.ts +386 -0
- package/src/http/router.ts +212 -237
- package/src/index.ts +2 -1
- package/src/jinaga-server.ts +45 -5
- package/src/memory/memory-keystore.ts +1 -1
- package/src/postgres/query-description.ts +66 -11
- package/src/postgres/specification-sql.ts +7 -1
- package/test/authorization/intermediateProjectionFeedSpec.ts +189 -0
- package/test/authorization/subscriptionIntersectionSpec.ts +220 -0
- package/test/feeds/feedStreamSessionRegressionSpec.ts +227 -0
- package/test/feeds/feedStreamSessionSpec.ts +351 -0
- package/test/http/anchorListenerSpec.ts +117 -0
- package/test/http/feedStreamSessionIntegrationSpec.ts +202 -0
- package/test/http/lateAuthRecoverySpec.ts +435 -0
- package/test/http/streamFeedAnchorSpec.ts +171 -0
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PostgresStore = exports.PostgresKeystore = exports.MemoryKeystore = exports.tracePool = exports.JinagaServer = exports.Stream = exports.HttpRouter = exports.createLineReader = exports.DistributedFactCache = exports.AuthorizationKeystore = exports.AuthenticationSession = exports.AuthenticationDevice = void 0;
|
|
3
|
+
exports.PostgresStore = exports.PostgresKeystore = exports.MemoryKeystore = exports.tracePool = exports.JinagaServer = exports.Stream = exports.HttpRouter = exports.FeedNotFound = exports.createLineReader = exports.defaultFeedStreamSessionConfig = exports.FeedStreamSession = exports.DistributedFactCache = exports.AuthorizationKeystore = exports.AuthenticationSession = exports.AuthenticationDevice = void 0;
|
|
4
4
|
var authentication_device_1 = require("./authentication/authentication-device");
|
|
5
5
|
Object.defineProperty(exports, "AuthenticationDevice", { enumerable: true, get: function () { return authentication_device_1.AuthenticationDevice; } });
|
|
6
6
|
var authentication_session_1 = require("./authentication/authentication-session");
|
|
@@ -9,9 +9,13 @@ var authorization_keystore_1 = require("./authorization/authorization-keystore")
|
|
|
9
9
|
Object.defineProperty(exports, "AuthorizationKeystore", { enumerable: true, get: function () { return authorization_keystore_1.AuthorizationKeystore; } });
|
|
10
10
|
var distributed_fact_cache_1 = require("./authorization/distributed-fact-cache");
|
|
11
11
|
Object.defineProperty(exports, "DistributedFactCache", { enumerable: true, get: function () { return distributed_fact_cache_1.DistributedFactCache; } });
|
|
12
|
+
var feed_stream_session_1 = require("./feeds/feed-stream-session");
|
|
13
|
+
Object.defineProperty(exports, "FeedStreamSession", { enumerable: true, get: function () { return feed_stream_session_1.FeedStreamSession; } });
|
|
14
|
+
Object.defineProperty(exports, "defaultFeedStreamSessionConfig", { enumerable: true, get: function () { return feed_stream_session_1.defaultFeedStreamSessionConfig; } });
|
|
12
15
|
var line_reader_1 = require("./http/line-reader");
|
|
13
16
|
Object.defineProperty(exports, "createLineReader", { enumerable: true, get: function () { return line_reader_1.createLineReader; } });
|
|
14
17
|
var router_1 = require("./http/router");
|
|
18
|
+
Object.defineProperty(exports, "FeedNotFound", { enumerable: true, get: function () { return router_1.FeedNotFound; } });
|
|
15
19
|
Object.defineProperty(exports, "HttpRouter", { enumerable: true, get: function () { return router_1.HttpRouter; } });
|
|
16
20
|
var stream_1 = require("./http/stream");
|
|
17
21
|
Object.defineProperty(exports, "Stream", { enumerable: true, get: function () { return stream_1.Stream; } });
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gFAA8E;AAArE,6HAAA,oBAAoB,OAAA;AAC7B,kFAAgF;AAAvE,+HAAA,qBAAqB,OAAA;AAC9B,iFAA+E;AAAtE,+HAAA,qBAAqB,OAAA;AAC9B,iFAA8E;AAArE,8HAAA,oBAAoB,OAAA;AAC7B,kDAAsD;AAA7C,+GAAA,gBAAgB,OAAA;AACzB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,gFAA8E;AAArE,6HAAA,oBAAoB,OAAA;AAC7B,kFAAgF;AAAvE,+HAAA,qBAAqB,OAAA;AAC9B,iFAA+E;AAAtE,+HAAA,qBAAqB,OAAA;AAC9B,iFAA8E;AAArE,8HAAA,oBAAoB,OAAA;AAC7B,mEAAyH;AAAhH,wHAAA,iBAAiB,OAAA;AAA2B,qIAAA,8BAA8B,OAAA;AACnF,kDAAsD;AAA7C,+GAAA,gBAAgB,OAAA;AACzB,wCAAsE;AAA7D,sGAAA,YAAY,OAAA;AAAE,oGAAA,UAAU,OAAA;AACjC,wCAAuC;AAA9B,gGAAA,MAAM,OAAA;AACf,iDAAoG;AAA3F,6GAAA,YAAY,OAAA;AAA4C,0GAAA,SAAS,OAAA;AAE1E,4DAA0D;AAAjD,iHAAA,cAAc,OAAA;AACvB,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AACzB,4DAA0D;AAAjD,+GAAA,aAAa,OAAA"}
|
package/dist/jinaga-server.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Handler, Request } from "express";
|
|
2
2
|
import { AuthorizationRules, DistributionRules, FactManager, Jinaga, Model, PurgeConditions } from "jinaga";
|
|
3
3
|
import { Pool } from "pg";
|
|
4
|
+
import { FeedStreamSessionConfig } from "./feeds/feed-stream-session";
|
|
4
5
|
export type JinagaServerConfig = {
|
|
5
6
|
pgStore?: string | Pool;
|
|
6
7
|
pgStoreSchema?: string;
|
|
@@ -14,6 +15,12 @@ export type JinagaServerConfig = {
|
|
|
14
15
|
distribution?: (d: DistributionRules) => DistributionRules;
|
|
15
16
|
purgeConditions?: (p: PurgeConditions) => PurgeConditions;
|
|
16
17
|
origin?: string | string[] | ((origin: string, callback: (err: Error | null, allow?: boolean) => void) => void);
|
|
18
|
+
/**
|
|
19
|
+
* Tuning for the per-connection feed streaming session
|
|
20
|
+
* (/feeds/:hash with Accept: application/x-jinaga-feed-stream).
|
|
21
|
+
* See FeedStreamSessionConfig for the available limits and defaults.
|
|
22
|
+
*/
|
|
23
|
+
feedStream?: Partial<FeedStreamSessionConfig>;
|
|
17
24
|
};
|
|
18
25
|
export type JinagaServerInstance = {
|
|
19
26
|
handler: Handler;
|
package/dist/jinaga-server.js
CHANGED
|
@@ -42,7 +42,7 @@ class JinagaServer {
|
|
|
42
42
|
const purgeConditions = createPurgeConditions(config);
|
|
43
43
|
const factManager = new jinaga_1.FactManager(fork, source, store, network, purgeConditions);
|
|
44
44
|
const authorization = createAuthorization(authorizationRules, distributionRules, factManager, store, keystore);
|
|
45
|
-
const router = new router_1.HttpRouter(factManager, authorization, feedCache, config.origin || '*');
|
|
45
|
+
const router = new router_1.HttpRouter(factManager, authorization, feedCache, config.origin || '*', config.feedStream || {});
|
|
46
46
|
const j = new jinaga_1.Jinaga(authentication, factManager, syncStatusNotifier);
|
|
47
47
|
function close() {
|
|
48
48
|
return __awaiter(this, void 0, void 0, function* () {
|
|
@@ -127,13 +127,30 @@ function createKeystore(config, pools) {
|
|
|
127
127
|
return null;
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
|
+
class AuthorizationNoOpWithSubscriptions extends jinaga_1.AuthorizationNoOp {
|
|
131
|
+
verifyDistributionOrIntersect(_userIdentity, specification, namedStart) {
|
|
132
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
133
|
+
const start = specification.given.map(g => namedStart[g.label.name]);
|
|
134
|
+
return { type: "success", branches: [{ start, specification }] };
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
feedPreVerified(userIdentity, specification, start, bookmark) {
|
|
138
|
+
return this.feed(userIdentity, specification, start, bookmark);
|
|
139
|
+
}
|
|
140
|
+
feedWithDistribution(userIdentity, specification, start, bookmark) {
|
|
141
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
142
|
+
const feed = yield this.feed(userIdentity, specification, start, bookmark);
|
|
143
|
+
return { type: "success", feed };
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
130
147
|
function createAuthorization(authorizationRules, distributionRules, factManager, store, keystore) {
|
|
131
148
|
if (keystore) {
|
|
132
149
|
const authorization = new authorization_keystore_1.AuthorizationKeystore(factManager, store, keystore, authorizationRules, distributionRules);
|
|
133
150
|
return authorization;
|
|
134
151
|
}
|
|
135
152
|
else {
|
|
136
|
-
return new
|
|
153
|
+
return new AuthorizationNoOpWithSubscriptions(factManager, store);
|
|
137
154
|
}
|
|
138
155
|
}
|
|
139
156
|
function createAuthentication(store, keystore, authorizationRules) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jinaga-server.js","sourceRoot":"","sources":["../src/jinaga-server.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,
|
|
1
|
+
{"version":3,"file":"jinaga-server.js","sourceRoot":"","sources":["../src/jinaga-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-keystore.js","sourceRoot":"","sources":["../../src/memory/memory-keystore.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"memory-keystore.js","sourceRoot":"","sources":["../../src/memory/memory-keystore.ts"],"names":[],"mappings":"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"}
|
|
@@ -45,6 +45,7 @@ export declare class QueryDescription {
|
|
|
45
45
|
queryDescription: QueryDescription;
|
|
46
46
|
factDescription: FactDescription;
|
|
47
47
|
};
|
|
48
|
+
withInputOnExistingFact(label: Label, factTypeId: number, factHash: string, factIndex: number, path: number[]): QueryDescription;
|
|
48
49
|
withFact(type: string): {
|
|
49
50
|
query: QueryDescription;
|
|
50
51
|
factIndex: number;
|
|
@@ -53,6 +53,25 @@ class QueryDescription {
|
|
|
53
53
|
return { queryDescription, factDescription };
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
+
withInputOnExistingFact(label, factTypeId, factHash, factIndex, path) {
|
|
57
|
+
const factTypeParameter = this.parameters.length + 1;
|
|
58
|
+
const factHashParameter = factTypeParameter + 1;
|
|
59
|
+
const input = {
|
|
60
|
+
label: label.name,
|
|
61
|
+
type: label.type,
|
|
62
|
+
factIndex,
|
|
63
|
+
factTypeParameter,
|
|
64
|
+
factHashParameter
|
|
65
|
+
};
|
|
66
|
+
const parameters = this.parameters.concat(factTypeId, factHash);
|
|
67
|
+
if (path.length === 0) {
|
|
68
|
+
return new QueryDescription([...this.inputs, input], parameters, this.outputs, this.facts, this.edges, this.existentialConditions);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
const existentialConditions = existentialsWithInput(this.existentialConditions, input, path);
|
|
72
|
+
return new QueryDescription(this.inputs, parameters, this.outputs, this.facts, this.edges, existentialConditions);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
56
75
|
withFact(type) {
|
|
57
76
|
const factIndex = this.facts.length + 1;
|
|
58
77
|
const fact = { factIndex, type };
|
|
@@ -193,9 +212,21 @@ class QueryDescriptionBuilder {
|
|
|
193
212
|
if (!factTypeId) {
|
|
194
213
|
return { queryDescription: QueryDescription.unsatisfiable, knownFacts };
|
|
195
214
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
215
|
+
// When this is an identity path condition (no roles on either side)
|
|
216
|
+
// and the unknown has already been allocated, unify the given with
|
|
217
|
+
// the existing fact: register the type+hash filter on the existing
|
|
218
|
+
// factIndex rather than allocating a disconnected fact node.
|
|
219
|
+
const existingUnknown = knownFacts[unknown.name];
|
|
220
|
+
const isIdentity = condition.rolesLeft.length === 0 && condition.rolesRight.length === 0;
|
|
221
|
+
if (isIdentity && existingUnknown) {
|
|
222
|
+
queryDescription = queryDescription.withInputOnExistingFact(given[givenIndex], factTypeId, start[givenIndex].hash, existingUnknown.factIndex, path);
|
|
223
|
+
knownFacts = Object.assign(Object.assign({}, knownFacts), { [condition.labelRight]: existingUnknown });
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
const { queryDescription: newQueryDescription, factDescription } = queryDescription.withInputParameter(given[givenIndex], factTypeId, start[givenIndex].hash, path);
|
|
227
|
+
queryDescription = newQueryDescription;
|
|
228
|
+
knownFacts = Object.assign(Object.assign({}, knownFacts), { [condition.labelRight]: factDescription });
|
|
229
|
+
}
|
|
199
230
|
}
|
|
200
231
|
// Determine whether we have already written the output.
|
|
201
232
|
const knownFact = knownFacts[unknown.name];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-description.js","sourceRoot":"","sources":["../../src/postgres/query-description.ts"],"names":[],"mappings":";;;AACA,iCAAwE;AAmCxE,SAAS,UAAU,CAAC,qBAAwD;IACxE,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,qBAAqB,CAAC,EAC1G,CAAC,CAAC,CAAC;AACX,CAAC;AAED,MAAa,gBAAgB;IAMzB,YACoB,MAA0B,EAC1B,UAA+B,EAC/B,OAA4B,EAC5B,KAAwB,EACxB,KAAwB,EACxB,wBAA2D,EAAE;QAL7D,WAAM,GAAN,MAAM,CAAoB;QAC1B,eAAU,GAAV,UAAU,CAAqB;QAC/B,YAAO,GAAP,OAAO,CAAqB;QAC5B,UAAK,GAAL,KAAK,CAAmB;QACxB,UAAK,GAAL,KAAK,CAAmB;QACxB,0BAAqB,GAArB,qBAAqB,CAAwC;IAC9E,CAAC;IAEG,aAAa,CAAC,SAA0B;QAC3C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAC9B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EACjC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,qBAAqB,CAC7B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;IACrC,CAAC;IAEM,kBAAkB,CAAC,KAAY,EAAE,UAAkB,EAAE,QAAgB,EAAE,IAAc;QACxF,MAAM,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,CAAC,CAAC;QAChD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,MAAM,eAAe,GAAoB;YACrC,SAAS,EAAE,SAAS;YACpB,IAAI,EAAE,KAAK,CAAC,IAAI;SACnB,CAAC;QACF,MAAM,KAAK,GAAG;YACV,GAAG,IAAI,CAAC,KAAK;YACb,eAAe;SAClB,CAAC;QACF,MAAM,KAAK,GAAqB;YAC5B,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,SAAS;YACT,iBAAiB;YACjB,iBAAiB;SACpB,CAAC;QACF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAChE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACnB,MAAM,MAAM,GAAG;gBACX,GAAG,IAAI,CAAC,MAAM;gBACd,KAAK;aACR,CAAC;YACF,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CACzC,MAAM,EACN,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,qBAAqB,CAC7B,CAAC;YACF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;SAChD;aACI;YACD,MAAM,qBAAqB,GAAG,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YAC7F,MAAM,gBAAgB,GAAG,IAAI,gBAAgB,CACzC,IAAI,CAAC,MAAM,EACX,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,KAAK,EACL,IAAI,CAAC,KAAK,EACV,qBAAqB,CACxB,CAAC;YACF,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,CAAC;SAChD;IACL,CAAC;IAEM,QAAQ,CAAC,IAAY;QACxB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAC9B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,qBAAqB,CAC7B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;IAChC,CAAC;IAEM,UAAU,CAAC,KAAa,EAAE,IAAY,EAAE,SAAiB;QAC5D,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAC9B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAC3B,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,qBAAqB,CAC7B,CAAC;QACF,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,QAAQ,CAAC,oBAA4B,EAAE,kBAA0B,EAAE,aAAqB,EAAE,IAAc;QAC3G,MAAM,IAAI,GAAG;YACT,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC;YACzE,oBAAoB;YACpB,kBAAkB;YAClB,aAAa;SAChB,CAAC;QACF,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;YAC7B,CAAC,CAAC,IAAI,gBAAgB,CAClB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,qBAAqB,CAC7B;YACD,CAAC,CAAC,IAAI,gBAAgB,CAClB,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,EACV,oBAAoB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,CAC/D,CAAC;QACN,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,wBAAwB,CAAC,MAAe,EAAE,IAAc;QAC3D,MAAM,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,4BAA4B,CAAC,IAAI,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAClJ,MAAM,KAAK,GAAG,IAAI,gBAAgB,CAC9B,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,KAAK,EACV,wBAAwB,CAC3B,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,aAAa;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,SAAS,CAAC,KAAa;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,YAAY,CAAC,KAAa;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,YAAY;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IACpD,CAAC;;AA9JL,4CA+JC;AA9JG,8DAA8D;AACvD,8BAAa,GAAqB,IAAI,gBAAgB,CACzD,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CACzB,CAAC;AA6JN,SAAS,qBAAqB,CAAC,qBAAwD,EAAE,KAAuB,EAAE,IAAc;IAC5H,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAE/C,CAAC,KACJ,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,IAC9B,CAAC;YACH,CAAC,CACJ,CAAC;KACL;SACI;QACD,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAE/C,CAAC,KACJ,qBAAqB,EAAE,qBAAqB,CAAC,CAAC,CAAC,qBAAqB,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAC7F,CAAC;YACH,CAAC,CACJ,CAAC;KACL;AACL,CAAC;AAED,SAAS,oBAAoB,CAAC,qBAAwD,EAAE,IAAqB,EAAE,IAAc;IACzH,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAE/C,CAAC,KACJ,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,IAC3B,CAAC;YACH,CAAC,CACJ,CAAC;KACL;SACI;QACD,OAAO,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAE/C,CAAC,KACJ,qBAAqB,EAAE,oBAAoB,CAAC,CAAC,CAAC,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAC3F,CAAC;YACH,CAAC,CACJ,CAAC;KACL;AACL,CAAC;AAED,SAAS,4BAA4B,CAAC,qBAAwD,EAAE,MAAe,EAAE,IAAc;IAC3H,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;QACnB,IAAI,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACtC,qBAAqB,GAAG;YACpB,GAAG,qBAAqB;YACxB;gBACI,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,EAAE;gBACV,KAAK,EAAE,EAAE;gBACT,qBAAqB,EAAE,EAAE;aAC5B;SACJ,CAAC;QACF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;KACjE;SACI;QACD,MAAM,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,4BAA4B,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,qBAAqB,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACrL,qBAAqB,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;YACvE;gBACI,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,qBAAqB,EAAE,wBAAwB;aAClD,CAAC,CAAC;YACH,CAAC,CACJ,CAAC;QACF,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC;QAC7B,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,IAAI,EAAE,CAAC;KACjE;AACL,CAAC;AAMD,MAAa,uBAAuB;IAChC,YACY,SAAsB,EACtB,OAAgB;QADhB,cAAS,GAAT,SAAS,CAAa;QACtB,YAAO,GAAP,OAAO,CAAS;IACxB,CAAC;IAEE,QAAQ,CAAC,gBAAkC,EAAE,KAAc,EAAE,KAAsB,EAAE,UAAuB,EAAE,IAAc,EAAE,OAAgB;QACjJ,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;YACzB,KAAK,MAAM,SAAS,IAAI,KAAK,CAAC,UAAU,EAAE;gBACtC,IAAI,SAAS,CAAC,IAAI,KAAK,MAAM,EAAE;oBAC3B,CAAC,EAAC,gBAAgB,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;iBAC5I;qBACI,IAAI,SAAS,CAAC,IAAI,KAAK,aAAa,EAAE;oBACvC,uEAAuE;oBACvE,8EAA8E;oBAC9E,+EAA+E;oBAC/E,MAAM,EAAE,KAAK,EAAE,+BAA+B,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAC,wBAAwB,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;oBAC5I,MAAM,EAAE,gBAAgB,EAAE,2BAA2B,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,+BAA+B,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;oBAEvK,iEAAiE;oBACjE,qDAAqD;oBACrD,2EAA2E;oBAC3E,IAAI,2BAA2B,CAAC,aAAa,EAAE,EAAE;wBAC7C,gBAAgB,GAAG,2BAA2B,CAAC;qBAClD;iBACJ;gBACD,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE;oBACnC,MAAM;iBACT;aACJ;YACD,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE;gBACnC,MAAM;aACT;SACJ;QACD,OAAO;YACH,gBAAgB;YAChB,UAAU;SACb,CAAC;IACN,CAAC;IAEO,gBAAgB,CAAC,gBAAkC,EAAE,KAAc,EAAE,KAAsB,EAAE,UAAuB,EAAE,IAAc,EAAE,OAAc,EAAE,MAAc,EAAE,SAAwB;QAClM,8DAA8D;QAC9D,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE;YAClD,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,CAAC,CAAC;YACjF,IAAI,UAAU,GAAG,CAAC,EAAE;gBAChB,MAAM,IAAI,KAAK,CAAC,sCAAsC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;aACjF;YACD,MAAM,UAAU,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,UAAU,EAAE;gBACb,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;aAC3E;YACD,MAAM,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,eAAe,EAAE,GAAG,gBAAgB,CAAC,kBAAkB,CAClG,KAAK,CAAC,UAAU,CAAC,EACjB,UAAU,EACV,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EACtB,IAAI,CACP,CAAC;YACF,gBAAgB,GAAG,mBAAmB,CAAC;YACvC,UAAU,mCACH,UAAU,KACb,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,eAAe,GAC1C,CAAC;SACL;QAED,wDAAwD;QACxD,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC;QAE3E,+BAA+B;QAC/B,gEAAgE;QAChE,IAAI,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,EAAE;YACP,MAAM,IAAI,KAAK,CAAC,SAAS,SAAS,CAAC,UAAU,6BAA6B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACnH;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE;YACpD,6EAA6E;YAC7E,qCAAqC;YACrC,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;aAC3E;YACD,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;aAC3E;YAED,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5G,IAAI,CAAC,KAAK,SAAS,GAAG,CAAC,IAAI,SAAS,EAAE;gBAClC,oEAAoE;gBACpE,gBAAgB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBACpG,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;aACnC;iBACI;gBACD,4DAA4D;gBAC5D,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;gBACrG,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,EAAE,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBACxF,SAAS,GAAG,oBAAoB,CAAC;aACpC;YACD,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;SAC/B;QAED,MAAM,SAAS,GAAG,IAAI,CAAC;QAEvB,8BAA8B;QAC9B,iEAAiE;QACjE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QACpB,MAAM,QAAQ,GAGR,EAAE,CAAC;QACT,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,SAAS,EAAE;YACpC,6EAA6E;YAC7E,qCAAqC;YACrC,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnD,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;aAC3E;YACD,MAAM,MAAM,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,CAAC,MAAM,EAAE;gBACT,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC;aAC3E;YAED,QAAQ,CAAC,IAAI,CAAC;gBACV,MAAM;gBACN,aAAa,EAAE,IAAI;aACtB,CAAC,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;SAC/B;QAED,IAAI,IAAI,KAAK,SAAS,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,mBAAmB,SAAS,EAAE,CAAC,CAAC;SACzE;QAED,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;YACxD,MAAM,EAAE,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,GAAG,gBAAgB,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC5G,IAAI,SAAS,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,KAAK,SAAS,GAAG,CAAC,IAAI,SAAS,EAAE;gBAChE,gBAAgB,GAAG,kBAAkB,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBACpG,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;aACnC;iBACI;gBACD,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,kBAAkB,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAC3G,gBAAgB,GAAG,aAAa,CAAC,QAAQ,CAAC,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;gBAC9F,SAAS,GAAG,kBAAkB,CAAC;aAClC;QACL,CAAC,CAAC,CAAC;QAEH,sDAAsD;QACtD,IAAI,CAAC,SAAS,EAAE;YACZ,UAAU,mCAAQ,UAAU,KAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,GAAE,CAAC;YAClF,mDAAmD;YACnD,0EAA0E;YAC1E,qDAAqD;YACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACnB,gBAAgB,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;aAClG;SACJ;QACD,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC;IAC5C,CAAC;CACJ;AAhKD,0DAgKC"}
|
|
1
|
+
{"version":3,"file":"query-description.js","sourceRoot":"","sources":["../../src/postgres/query-description.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,7 +105,13 @@ function generateNotExistsWhereClause(schema, notExistsWhereClause, outerFactInd
|
|
|
105
105
|
}
|
|
106
106
|
const tailJoins = generateJoins(schema, notExistsWhereClause.edges.slice(1), writtenFactIndexes);
|
|
107
107
|
const joins = firstJoin.concat(tailJoins);
|
|
108
|
-
|
|
108
|
+
const inputWhereClauses = notExistsWhereClause.inputs
|
|
109
|
+
.map(input => ` AND f${input.factIndex}.fact_type_id = $${input.factTypeParameter} AND f${input.factIndex}.hash = $${input.factHashParameter}`)
|
|
110
|
+
.join("");
|
|
111
|
+
const nestedExistsWhereClauses = notExistsWhereClause.existentialConditions
|
|
112
|
+
.map(nested => ` AND ${nested.exists ? "EXISTS" : "NOT EXISTS"} (${generateNotExistsWhereClause(schema, nested, writtenFactIndexes)})`)
|
|
113
|
+
.join("");
|
|
114
|
+
return `SELECT 1 FROM ${schema}.edge e${firstEdge.edgeIndex}${joins.join("")} WHERE ${whereClause.join(" AND ")}${inputWhereClauses}${nestedExistsWhereClauses}`;
|
|
109
115
|
}
|
|
110
116
|
function parseBookmark(bookmark) {
|
|
111
117
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"specification-sql.js","sourceRoot":"","sources":["../../src/postgres/specification-sql.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"specification-sql.js","sourceRoot":"","sources":["../../src/postgres/specification-sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,18 @@
|
|
|
1
1
|
# Feeds: Persistent Client Proxy with Waitlist
|
|
2
2
|
Author: @michaellperry
|
|
3
|
-
Status:
|
|
3
|
+
Status: Implemented
|
|
4
4
|
Scope: `/feeds/:hash` streaming path (`Accept: application/x-jinaga-feed-stream`)
|
|
5
5
|
|
|
6
|
+
> **Implementation note.** The session described here lives in
|
|
7
|
+
> `src/feeds/feed-stream-session.ts` (`FeedStreamSession`) and is wired into
|
|
8
|
+
> the `/feeds/:hash` streaming handler in `src/http/router.ts`. Limits are
|
|
9
|
+
> configurable through `JinagaServerConfig.feedStream`
|
|
10
|
+
> (`FeedStreamSessionConfig`). Note that stores which return the full result
|
|
11
|
+
> set with a non-advancing bookmark (e.g. the in-memory store) are treated as
|
|
12
|
+
> exhausted after the first page, at which point the session emits SYNC.
|
|
13
|
+
> Coverage: `test/feeds/feedStreamSessionSpec.ts` (unit) and
|
|
14
|
+
> `test/http/feedStreamSessionIntegrationSpec.ts` (integration).
|
|
15
|
+
|
|
6
16
|
## Summary
|
|
7
17
|
|
|
8
18
|
Introduce a per-connection "FeedStreamSession" (client proxy) that:
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
const request = require('supertest');
|
|
2
|
+
const { buildModel, User } = require('jinaga');
|
|
3
|
+
const { createSubscriptionApp, asUser, randomSuffix } = require('./subscription-helpers');
|
|
4
|
+
|
|
5
|
+
// Exercises a distribution rule whose share/with specs have multiple
|
|
6
|
+
// `given` labels — the "multi-given distribution rule (#161)" dimension
|
|
7
|
+
// the PR claims is closed by canAuthorizeByComposition.
|
|
8
|
+
//
|
|
9
|
+
// The model intentionally pulls BOTH givens into every match clause
|
|
10
|
+
// (Task has predecessors on Tenant *and* Project, ProjectAccess has
|
|
11
|
+
// predecessors on Tenant, Project, and User). This avoids a separate
|
|
12
|
+
// PostgresStore SQL-builder bug that surfaces when a given is referenced
|
|
13
|
+
// only in a WHERE clause with no JOIN — that issue is unrelated to the
|
|
14
|
+
// distribution-engine work in PR #163 and is worth a dedicated bug
|
|
15
|
+
// report rather than masking here.
|
|
16
|
+
|
|
17
|
+
class Tenant {
|
|
18
|
+
static Type = "MultiGiven.Tenant";
|
|
19
|
+
type = Tenant.Type;
|
|
20
|
+
constructor(creator, identifier) {
|
|
21
|
+
this.creator = creator;
|
|
22
|
+
this.identifier = identifier;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
class Project {
|
|
27
|
+
static Type = "MultiGiven.Project";
|
|
28
|
+
type = Project.Type;
|
|
29
|
+
constructor(tenant, identifier) {
|
|
30
|
+
this.tenant = tenant;
|
|
31
|
+
this.identifier = identifier;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
class Task {
|
|
36
|
+
static Type = "MultiGiven.Task";
|
|
37
|
+
type = Task.Type;
|
|
38
|
+
constructor(tenant, project, description) {
|
|
39
|
+
this.tenant = tenant;
|
|
40
|
+
this.project = project;
|
|
41
|
+
this.description = description;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
class ProjectAccess {
|
|
46
|
+
static Type = "MultiGiven.ProjectAccess";
|
|
47
|
+
type = ProjectAccess.Type;
|
|
48
|
+
constructor(tenant, project, user) {
|
|
49
|
+
this.tenant = tenant;
|
|
50
|
+
this.project = project;
|
|
51
|
+
this.user = user;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const model = buildModel(b => b
|
|
56
|
+
.type(User)
|
|
57
|
+
.type(Tenant, m => m.predecessor("creator", User))
|
|
58
|
+
.type(Project, m => m.predecessor("tenant", Tenant))
|
|
59
|
+
.type(Task, m => m
|
|
60
|
+
.predecessor("tenant", Tenant)
|
|
61
|
+
.predecessor("project", Project))
|
|
62
|
+
.type(ProjectAccess, m => m
|
|
63
|
+
.predecessor("tenant", Tenant)
|
|
64
|
+
.predecessor("project", Project)
|
|
65
|
+
.predecessor("user", User))
|
|
66
|
+
);
|
|
67
|
+
|
|
68
|
+
function authorization(a) {
|
|
69
|
+
return a
|
|
70
|
+
.any(User)
|
|
71
|
+
.any(Tenant)
|
|
72
|
+
.any(Project)
|
|
73
|
+
.any(Task)
|
|
74
|
+
.any(ProjectAccess);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
// Both share and with use a 2-given (Tenant, Project) and reference
|
|
78
|
+
// both labels in their match clauses.
|
|
79
|
+
function distribution(d) {
|
|
80
|
+
return d
|
|
81
|
+
.share(model.given(Tenant, Project).match((tenant, project, facts) =>
|
|
82
|
+
facts.ofType(Task)
|
|
83
|
+
.join(t => t.tenant, tenant)
|
|
84
|
+
.join(t => t.project, project)
|
|
85
|
+
))
|
|
86
|
+
.with(model.given(Tenant, Project).match((tenant, project, facts) =>
|
|
87
|
+
facts.ofType(ProjectAccess)
|
|
88
|
+
.join(a => a.tenant, tenant)
|
|
89
|
+
.join(a => a.project, project)
|
|
90
|
+
.selectMany(a => facts.ofType(User).join(u => u, a.user))
|
|
91
|
+
));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function taskSpecText(tenantHash, projectHash) {
|
|
95
|
+
return `let p1: ${Tenant.Type} = #${tenantHash}\n` +
|
|
96
|
+
`let p2: ${Project.Type} = #${projectHash}\n` +
|
|
97
|
+
`(p1: ${Tenant.Type}, p2: ${Project.Type}) {\n` +
|
|
98
|
+
` t: ${Task.Type} [\n` +
|
|
99
|
+
` t->tenant: ${Tenant.Type} = p1\n` +
|
|
100
|
+
` t->project: ${Project.Type} = p2\n` +
|
|
101
|
+
` ]\n` +
|
|
102
|
+
`} => t`;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
describe('Distribution rule with multi-given share/with', () => {
|
|
106
|
+
let app, withSession, close;
|
|
107
|
+
let tenantValue, projectValue, tenantHash, projectHash, taskHash;
|
|
108
|
+
let creatorId;
|
|
109
|
+
|
|
110
|
+
beforeEach(async () => {
|
|
111
|
+
({ app, withSession, close } = await createSubscriptionApp({
|
|
112
|
+
model, authorization, distribution
|
|
113
|
+
}));
|
|
114
|
+
|
|
115
|
+
creatorId = 'mg-creator-' + randomSuffix();
|
|
116
|
+
({ tenantHash, projectHash, taskHash } = await asUser(withSession, creatorId, async (j) => {
|
|
117
|
+
const { userFact: creatorFact } = await j.login();
|
|
118
|
+
const tenant = await j.fact(new Tenant(creatorFact, 't-' + randomSuffix()));
|
|
119
|
+
tenantValue = tenant;
|
|
120
|
+
const project = await j.fact(new Project(tenant, 'p-' + randomSuffix()));
|
|
121
|
+
projectValue = project;
|
|
122
|
+
const task = await j.fact(new Task(tenant, project, 'do the thing'));
|
|
123
|
+
return {
|
|
124
|
+
tenantHash: j.hash(tenant),
|
|
125
|
+
projectHash: j.hash(project),
|
|
126
|
+
taskHash: j.hash(task)
|
|
127
|
+
};
|
|
128
|
+
}));
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
afterEach(async () => {
|
|
132
|
+
if (close) await close();
|
|
133
|
+
});
|
|
134
|
+
|
|
135
|
+
it('delivers tasks to a user with ProjectAccess through a 2-given subscription', async () => {
|
|
136
|
+
const memberId = 'mg-member-' + randomSuffix();
|
|
137
|
+
const memberFact = await asUser(withSession, memberId, async (j) => {
|
|
138
|
+
const { userFact } = await j.login();
|
|
139
|
+
return userFact;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Grant ProjectAccess that covers both the tenant and the project.
|
|
143
|
+
await asUser(withSession, creatorId, async (j) => {
|
|
144
|
+
await j.fact(new ProjectAccess(tenantValue, projectValue, memberFact));
|
|
145
|
+
});
|
|
146
|
+
|
|
147
|
+
const feedsResponse = await request(app)
|
|
148
|
+
.post('/feeds')
|
|
149
|
+
.set('Content-Type', 'text/plain')
|
|
150
|
+
.set('x-test-user-id', memberId)
|
|
151
|
+
.send(taskSpecText(tenantHash, projectHash));
|
|
152
|
+
expect(feedsResponse.status).toBe(200);
|
|
153
|
+
const { feeds } = JSON.parse(feedsResponse.text);
|
|
154
|
+
expect(feeds.length).toBeGreaterThan(0);
|
|
155
|
+
|
|
156
|
+
const pollResponse = await request(app)
|
|
157
|
+
.get(`/feeds/${feeds[0]}`)
|
|
158
|
+
.set('x-test-user-id', memberId);
|
|
159
|
+
expect(pollResponse.status).toBe(200);
|
|
160
|
+
const body = JSON.parse(pollResponse.text);
|
|
161
|
+
const taskRefs = (body.references || []).filter(r => r.type === Task.Type);
|
|
162
|
+
expect(taskRefs.map(r => r.hash)).toContain(taskHash);
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
it('hides tasks from a user without ProjectAccess through the same 2-given subscription', async () => {
|
|
166
|
+
const outsiderId = 'mg-outsider-' + randomSuffix();
|
|
167
|
+
await asUser(withSession, outsiderId, async (j) => { /* login only */ });
|
|
168
|
+
|
|
169
|
+
const feedsResponse = await request(app)
|
|
170
|
+
.post('/feeds')
|
|
171
|
+
.set('Content-Type', 'text/plain')
|
|
172
|
+
.set('x-test-user-id', outsiderId)
|
|
173
|
+
.send(taskSpecText(tenantHash, projectHash));
|
|
174
|
+
expect(feedsResponse.status).toBe(200);
|
|
175
|
+
const { feeds } = JSON.parse(feedsResponse.text);
|
|
176
|
+
|
|
177
|
+
const pollResponse = await request(app)
|
|
178
|
+
.get(`/feeds/${feeds[0]}`)
|
|
179
|
+
.set('x-test-user-id', outsiderId);
|
|
180
|
+
expect(pollResponse.status).toBe(200);
|
|
181
|
+
const body = JSON.parse(pollResponse.text);
|
|
182
|
+
expect((body.references || []).filter(r => r.type === Task.Type)).toHaveLength(0);
|
|
183
|
+
});
|
|
184
|
+
});
|