jinaga-server 2.4.0 → 2.4.2

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.
@@ -47,8 +47,8 @@ class AuthorizationKeystore {
47
47
  // Break the specification into feeds and check distribution.
48
48
  const feeds = (0, jinaga_1.buildFeeds)(specification);
49
49
  const canDistribute = yield this.distributionEngine.canDistributeToAll(feeds, start, userReference);
50
- if (!canDistribute) {
51
- throw new jinaga_1.Forbidden("Unauthorized");
50
+ if (canDistribute.type === "failure") {
51
+ throw new jinaga_1.Forbidden(canDistribute.reason);
52
52
  }
53
53
  }
54
54
  return yield this.store.read(start, specification);
@@ -61,8 +61,8 @@ class AuthorizationKeystore {
61
61
  ? yield this.keystore.getUserFact(userIdentity)
62
62
  : null;
63
63
  const canDistribute = yield this.distributionEngine.canDistributeToAll([feed], start, userReference);
64
- if (!canDistribute) {
65
- throw new jinaga_1.Forbidden("Unauthorized");
64
+ if (canDistribute.type === "failure") {
65
+ throw new jinaga_1.Forbidden(canDistribute.reason);
66
66
  }
67
67
  const factFeed = yield this.store.feed(feed, start, bookmark);
68
68
  const factReferences = factFeed.tuples
@@ -118,8 +118,8 @@ class AuthorizationKeystore {
118
118
  ? yield this.keystore.getUserFact(userIdentity)
119
119
  : null;
120
120
  const canDistribute = yield this.distributionEngine.canDistributeToAll(feeds, start, userReference);
121
- if (!canDistribute) {
122
- throw new jinaga_1.Forbidden("Unauthorized");
121
+ if (canDistribute.type === "failure") {
122
+ throw new jinaga_1.Forbidden(canDistribute.reason);
123
123
  }
124
124
  });
125
125
  }
@@ -1 +1 @@
1
- {"version":3,"file":"authorization-keystore.js","sourceRoot":"","sources":["../../src/authorization/authorization-keystore.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAkBgB;AAIhB,qEAAgE;AAEhE,MAAa,qBAAqB;IAK9B,YACY,KAAc,EACd,QAAkB,EAC1B,kBAA6C,EAC7C,iBAA2C;QAHnC,UAAK,GAAL,KAAK,CAAS;QACd,aAAQ,GAAR,QAAQ,CAAU;QAJtB,qBAAgB,GAAyB,IAAI,6CAAoB,EAAE,CAAC;QAQxE,IAAI,CAAC,mBAAmB,GAAG,kBAAkB;YACzC,IAAI,4BAAmB,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,kBAAkB,GAAG,iBAAiB;YACvC,IAAI,2BAAkB,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAEK,mBAAmB,CAAC,YAA0B;;YAChD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG;gBACA;oBACV,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE,EAAE;iBACjB;aACJ,CAAC;YACF,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACjC,OAAO,QAAQ,CAAC;QACpB,CAAC;KAAA;IAED,KAAK,CAAC,YAAiC,EAAE,KAAoB,EAAE,KAAY;QACvE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEK,IAAI,CAAC,YAAiC,EAAE,KAAsB,EAAE,aAA4B;;YAC9F,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,MAAM,aAAa,GAAyB,YAAY;oBACpD,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC;oBAC/C,CAAC,CAAC,IAAI,CAAC;gBACX,6DAA6D;gBAC7D,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;gBACxC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBACpG,IAAI,CAAC,aAAa,EAAE;oBAChB,MAAM,IAAI,kBAAS,CAAC,cAAc,CAAC,CAAC;iBACvC;aACJ;YACD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;QACvD,CAAC;KAAA;IAEK,IAAI,CAAC,YAAiC,EAAE,IAAU,EAAE,KAAsB,EAAE,QAAgB;;YAC9F,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,MAAM,aAAa,GAAyB,YAAY;oBACpD,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC;oBAC/C,CAAC,CAAC,IAAI,CAAC;gBACX,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;gBACrG,IAAI,CAAC,aAAa,EAAE;oBAChB,MAAM,IAAI,kBAAS,CAAC,cAAc,CAAC,CAAC;iBACvC;gBACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBAC9D,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM;qBACjC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;qBAC7B,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAA,4BAAmB,EAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;gBAC1F,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACzD,OAAO,QAAQ,CAAC;aACnB;iBACI;gBACD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;aACvD;QACL,CAAC;KAAA;IAEK,IAAI,CAAC,YAA0B,EAAE,UAA2B;;YAC9D,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrF,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC9E,IAAI,CAAC,aAAa,EAAE;oBAChB,MAAM,IAAI,kBAAS,CAAC,cAAc,CAAC,CAAC;iBACvC;aACJ;YACD,OAAO,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC7C,CAAC;KAAA;IAEK,IAAI,CAAC,YAAiC,EAAE,KAAmB;;YAC7D,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;gBAC3B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACvD,IAAI;oBACJ,UAAU,EAAE,EAAE;iBACjB,CAAC,CAAC,CAAC,CAAC;gBACL,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACnD;YAED,MAAM,QAAQ,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrF,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,mBAAmB,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvF,IAAI,YAAY,EAAE;gBACd,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;gBACjF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACrD,OAAO,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;aACnD;iBACI;gBACD,OAAO,eAAe,CAAC;aAC1B;QACL,CAAC;KAAA;IAEK,kBAAkB,CAAC,YAAiC,EAAE,KAAa,EAAE,KAAsB;;YAC7F,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;gBAC1B,OAAO;aACV;YAED,MAAM,aAAa,GAAyB,YAAY;gBACpD,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC;gBAC/C,CAAC,CAAC,IAAI,CAAC;YACX,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;YACpG,IAAI,CAAC,aAAa,EAAE;gBAChB,MAAM,IAAI,kBAAS,CAAC,cAAc,CAAC,CAAC;aACvC;QACL,CAAC;KAAA;CACJ;AAlHD,sDAkHC"}
1
+ {"version":3,"file":"authorization-keystore.js","sourceRoot":"","sources":["../../src/authorization/authorization-keystore.ts"],"names":[],"mappings":"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"}
@@ -15,9 +15,10 @@ class DistributedFactCache {
15
15
  });
16
16
  }
17
17
  includesAll(references, userFact) {
18
+ const isUser = userFact === null ? () => false : (0, jinaga_1.factReferenceEquals)(userFact);
18
19
  this.removeOldBatches();
19
20
  return references.every(reference => this.batches.some(batch => batch.factReferences.some((0, jinaga_1.factReferenceEquals)(reference)) &&
20
- (batch.userReference === null || batch.userReference === userFact)));
21
+ (batch.userReference === null || isUser(batch.userReference))));
21
22
  }
22
23
  removeOldBatches() {
23
24
  const cutoff = new Date().getTime() - 1000 * 60 * 5;
@@ -1 +1 @@
1
- {"version":3,"file":"distributed-fact-cache.js","sourceRoot":"","sources":["../../src/authorization/distributed-fact-cache.ts"],"names":[],"mappings":";;;AAAA,mCAA4D;AAQ5D,MAAa,oBAAoB;IAAjC;QACU,YAAO,GAAY,EAAE,CAAC;IAwBhC,CAAC;IAtBC,GAAG,CAAC,cAA+B,EAAE,aAAmC;QACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,cAAc;YACd,aAAa;YACb,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,UAA2B,EAAE,QAA8B;QACrE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACxB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,4BAAmB,EAAC,SAAS,CAAC,CAAC;YACzD,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,IAAI,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,gBAAgB;QACd,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACzC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAzBD,oDAyBC"}
1
+ {"version":3,"file":"distributed-fact-cache.js","sourceRoot":"","sources":["../../src/authorization/distributed-fact-cache.ts"],"names":[],"mappings":";;;AAAA,mCAA4D;AAQ5D,MAAa,oBAAoB;IAAjC;QACU,YAAO,GAAY,EAAE,CAAC;IAyBhC,CAAC;IAvBC,GAAG,CAAC,cAA+B,EAAE,aAAmC;QACtE,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAChB,cAAc;YACd,aAAa;YACb,SAAS,EAAE,IAAI,IAAI,EAAE;SACtB,CAAC,CAAC;IACL,CAAC;IAED,WAAW,CAAC,UAA2B,EAAE,QAA8B;QACrE,MAAM,MAAM,GAAG,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,4BAAmB,EAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CACxB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAA,4BAAmB,EAAC,SAAS,CAAC,CAAC;YACzD,CAAC,KAAK,CAAC,aAAa,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,gBAAgB;QACd,MAAM,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,GAAG,EAAE,GAAG,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACzC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AA1BD,oDA0BC"}
@@ -61,10 +61,10 @@ function getAuthenticate(method) {
61
61
  }
62
62
  };
63
63
  }
64
- function post(method) {
64
+ function post(parse, method) {
65
65
  return (req, res, next) => {
66
66
  const user = req.user;
67
- const message = req.body;
67
+ const message = parse(req.body);
68
68
  if (!message) {
69
69
  throw new Error('Ensure that you have called app.use(express.json()).');
70
70
  }
@@ -98,7 +98,7 @@ function post(method) {
98
98
  function postString(method) {
99
99
  return (req, res, next) => {
100
100
  const user = req.user;
101
- const input = req.body;
101
+ const input = parseString(req.body);
102
102
  if (!input || typeof (input) !== 'string') {
103
103
  res.type("text");
104
104
  res.status(500).send('Expected Content-Type text/plain. Ensure that you have called app.use(express.text()).');
@@ -126,10 +126,10 @@ function postString(method) {
126
126
  }
127
127
  };
128
128
  }
129
- function postCreate(method) {
129
+ function postCreate(parse, method) {
130
130
  return (req, res, next) => {
131
131
  const user = req.user;
132
- const message = req.body;
132
+ const message = parse(req.body);
133
133
  if (!message) {
134
134
  throw new Error('Ensure that you have called app.use(express.json()).');
135
135
  }
@@ -156,7 +156,7 @@ function postCreate(method) {
156
156
  function postStringCreate(method) {
157
157
  return (req, res, next) => {
158
158
  const user = req.user;
159
- const input = req.body;
159
+ const input = parseString(req.body);
160
160
  if (!input || typeof (input) !== 'string') {
161
161
  res.type("text");
162
162
  res.status(500).send('Expected Content-Type text/plain. Ensure that you have called app.use(express.text()).');
@@ -199,13 +199,13 @@ class HttpRouter {
199
199
  const router = (0, express_1.Router)();
200
200
  router.get('/login', getAuthenticate(user => this.login(user)));
201
201
  if (backwardCompatible) {
202
- router.post('/query', post((user, queryMessage) => this.query(user, queryMessage)));
202
+ router.post('/query', post(jinaga_1.parseQueryMessage, (user, queryMessage) => this.query(user, queryMessage)));
203
203
  }
204
- router.post('/load', post((user, loadMessage) => this.load(user, loadMessage)));
205
- router.post('/save', postCreate((user, saveMessage) => this.save(user, saveMessage)));
204
+ router.post('/load', post(jinaga_1.parseLoadMessage, (user, loadMessage) => this.load(user, loadMessage)));
205
+ router.post('/save', postCreate(jinaga_1.parseSaveMessage, (user, saveMessage) => this.save(user, saveMessage)));
206
206
  router.post('/read', postString((user, input) => this.read(user, input)));
207
207
  router.post('/write', postStringCreate((user, input) => this.write(user, input)));
208
- router.post('/feeds', post((user, input) => this.feeds(user, input)));
208
+ router.post('/feeds', post(parseString, (user, input) => this.feeds(user, input)));
209
209
  router.get('/feeds/:hash', get((user, params, query) => this.feed(user, params, query)));
210
210
  this.handler = router;
211
211
  }
@@ -253,6 +253,7 @@ class HttpRouter {
253
253
  parser.skipWhitespace();
254
254
  const declaration = parser.parseDeclaration(knownFacts);
255
255
  const specification = parser.parseSpecification();
256
+ parser.expectEnd();
256
257
  const start = this.selectStart(specification, declaration);
257
258
  const userIdentity = serializeUserIdentity(user);
258
259
  const results = yield this.authorization.read(userIdentity, start, specification);
@@ -265,6 +266,7 @@ class HttpRouter {
265
266
  const parser = new jinaga_1.SpecificationParser(input);
266
267
  parser.skipWhitespace();
267
268
  var declaration = parser.parseDeclaration(knownFacts);
269
+ parser.expectEnd();
268
270
  const factRecords = [];
269
271
  for (const value of declaration) {
270
272
  if (!value.declared.fact) {
@@ -385,6 +387,12 @@ class HttpRouter {
385
387
  }
386
388
  }
387
389
  exports.HttpRouter = HttpRouter;
390
+ function parseString(input) {
391
+ if (typeof input !== 'string') {
392
+ throw new Error("Expected a string. Check the content type of the request.");
393
+ }
394
+ return input;
395
+ }
388
396
  function urlSafeHash(feed) {
389
397
  const base64 = (0, jinaga_1.computeObjectHash)(feed);
390
398
  return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/http/router.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jinaga-server",
3
- "version": "2.4.0",
3
+ "version": "2.4.2",
4
4
  "description": "Data management for web and mobile applications.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -48,7 +48,7 @@
48
48
  },
49
49
  "dependencies": {
50
50
  "express": "^4.18.2",
51
- "jinaga": "^5.4.1",
51
+ "jinaga": "^5.4.3",
52
52
  "node-forge": "^1.3.1",
53
53
  "passport": "^0.6.0",
54
54
  "pg": "^8.11.0"
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # The parameter must be patch, minor or major
5
+ if [ "$1" != "patch" ] && [ "$1" != "minor" ] && [ "$1" != "major" ]; then
6
+ echo "Usage: $0 [patch|minor|major]"
7
+ exit 1
8
+ fi
9
+
10
+ git c main
11
+ git pull
12
+ npm version $1
13
+ git push --follow-tags
14
+ gh release create v$(node -p "require('./package.json').version") --generate-notes --verify-tag
@@ -63,8 +63,8 @@ export class AuthorizationKeystore implements Authorization {
63
63
  // Break the specification into feeds and check distribution.
64
64
  const feeds = buildFeeds(specification);
65
65
  const canDistribute = await this.distributionEngine.canDistributeToAll(feeds, start, userReference);
66
- if (!canDistribute) {
67
- throw new Forbidden("Unauthorized");
66
+ if (canDistribute.type === "failure") {
67
+ throw new Forbidden(canDistribute.reason);
68
68
  }
69
69
  }
70
70
  return await this.store.read(start, specification);
@@ -76,8 +76,8 @@ export class AuthorizationKeystore implements Authorization {
76
76
  ? await this.keystore.getUserFact(userIdentity)
77
77
  : null;
78
78
  const canDistribute = await this.distributionEngine.canDistributeToAll([feed], start, userReference);
79
- if (!canDistribute) {
80
- throw new Forbidden("Unauthorized");
79
+ if (canDistribute.type === "failure") {
80
+ throw new Forbidden(canDistribute.reason);
81
81
  }
82
82
  const factFeed = await this.store.feed(feed, start, bookmark);
83
83
  const factReferences = factFeed.tuples
@@ -132,8 +132,8 @@ export class AuthorizationKeystore implements Authorization {
132
132
  ? await this.keystore.getUserFact(userIdentity)
133
133
  : null;
134
134
  const canDistribute = await this.distributionEngine.canDistributeToAll(feeds, start, userReference);
135
- if (!canDistribute) {
136
- throw new Forbidden("Unauthorized");
135
+ if (canDistribute.type === "failure") {
136
+ throw new Forbidden(canDistribute.reason);
137
137
  }
138
138
  }
139
139
  }
@@ -19,11 +19,12 @@ export class DistributedFactCache {
19
19
  }
20
20
 
21
21
  includesAll(references: FactReference[], userFact: FactReference | null): boolean {
22
+ const isUser = userFact === null ? () => false : factReferenceEquals(userFact);
22
23
  this.removeOldBatches();
23
24
  return references.every(reference =>
24
25
  this.batches.some(batch =>
25
26
  batch.factReferences.some(factReferenceEquals(reference)) &&
26
- (batch.userReference === null || batch.userReference === userFact)));
27
+ (batch.userReference === null || isUser(batch.userReference))));
27
28
  }
28
29
 
29
30
  removeOldBatches() {
@@ -22,6 +22,9 @@ import {
22
22
  buildFeeds,
23
23
  computeObjectHash,
24
24
  fromDescriptiveString,
25
+ parseLoadMessage,
26
+ parseQueryMessage,
27
+ parseSaveMessage,
25
28
  } from "jinaga";
26
29
 
27
30
  import { FeedCache, FeedDefinition } from "./feed-cache";
@@ -79,10 +82,13 @@ function getAuthenticate<U>(method: ((req: RequestUser, params?: { [key: string]
79
82
  };
80
83
  }
81
84
 
82
- function post<T, U>(method: (user: RequestUser, message: T, params?: { [key: string]: string }) => Promise<U>): Handler {
85
+ function post<T, U>(
86
+ parse: (input: any) => T,
87
+ method: (user: RequestUser, message: T, params?: { [key: string]: string }) => Promise<U>
88
+ ): Handler {
83
89
  return (req, res, next) => {
84
90
  const user = <RequestUser>req.user;
85
- const message = <T>req.body;
91
+ const message = parse(req.body);
86
92
  if (!message) {
87
93
  throw new Error('Ensure that you have called app.use(express.json()).');
88
94
  }
@@ -117,7 +123,7 @@ function post<T, U>(method: (user: RequestUser, message: T, params?: { [key: str
117
123
  function postString<U>(method: (user: RequestUser, message: string) => Promise<U>): Handler {
118
124
  return (req, res, next) => {
119
125
  const user = <RequestUser>req.user;
120
- const input = <string>req.body;
126
+ const input = parseString(req.body);
121
127
  if (!input || typeof(input) !== 'string') {
122
128
  res.type("text");
123
129
  res.status(500).send('Expected Content-Type text/plain. Ensure that you have called app.use(express.text()).');
@@ -146,10 +152,13 @@ function postString<U>(method: (user: RequestUser, message: string) => Promise<U
146
152
  };
147
153
  }
148
154
 
149
- function postCreate<T>(method: (user: RequestUser, message: T) => Promise<void>): Handler {
155
+ function postCreate<T>(
156
+ parse: (input: any) => T,
157
+ method: (user: RequestUser, message: T) => Promise<void>
158
+ ): Handler {
150
159
  return (req, res, next) => {
151
160
  const user = <RequestUser>req.user;
152
- const message = <T>req.body;
161
+ const message = parse(req.body);
153
162
  if (!message) {
154
163
  throw new Error('Ensure that you have called app.use(express.json()).');
155
164
  }
@@ -177,7 +186,7 @@ function postCreate<T>(method: (user: RequestUser, message: T) => Promise<void>)
177
186
  function postStringCreate(method: (user: RequestUser, message: string) => Promise<void>): Handler {
178
187
  return (req, res, next) => {
179
188
  const user = <RequestUser>req.user;
180
- const input = <string>req.body;
189
+ const input = parseString(req.body);
181
190
  if (!input || typeof(input) !== 'string') {
182
191
  res.type("text");
183
192
  res.status(500).send('Expected Content-Type text/plain. Ensure that you have called app.use(express.text()).');
@@ -228,14 +237,26 @@ export class HttpRouter {
228
237
  const router = Router();
229
238
  router.get('/login', getAuthenticate(user => this.login(user)));
230
239
  if (backwardCompatible) {
231
- router.post('/query', post((user, queryMessage: QueryMessage) => this.query(user, queryMessage)));
240
+ router.post('/query', post(
241
+ parseQueryMessage,
242
+ (user, queryMessage) => this.query(user, queryMessage)
243
+ ));
232
244
  }
233
- router.post('/load', post((user, loadMessage: LoadMessage) => this.load(user, loadMessage)));
234
- router.post('/save', postCreate((user, saveMessage: SaveMessage) => this.save(user, saveMessage)));
245
+ router.post('/load', post(
246
+ parseLoadMessage,
247
+ (user, loadMessage) => this.load(user, loadMessage)
248
+ ));
249
+ router.post('/save', postCreate(
250
+ parseSaveMessage,
251
+ (user, saveMessage) => this.save(user, saveMessage)
252
+ ));
235
253
 
236
254
  router.post('/read', postString((user, input: string) => this.read(user, input)));
237
255
  router.post('/write', postStringCreate((user, input: string) => this.write(user, input)));
238
- router.post('/feeds', post((user, input: string) => this.feeds(user, input)));
256
+ router.post('/feeds', post(
257
+ parseString,
258
+ (user, input: string) => this.feeds(user, input)
259
+ ));
239
260
  router.get('/feeds/:hash', get((user, params, query) => this.feed(user, params, query)));
240
261
 
241
262
  this.handler = router;
@@ -280,6 +301,7 @@ export class HttpRouter {
280
301
  parser.skipWhitespace();
281
302
  const declaration = parser.parseDeclaration(knownFacts);
282
303
  const specification = parser.parseSpecification();
304
+ parser.expectEnd();
283
305
  const start = this.selectStart(specification, declaration);
284
306
 
285
307
  const userIdentity = serializeUserIdentity(user);
@@ -292,6 +314,7 @@ export class HttpRouter {
292
314
  const parser = new SpecificationParser(input);
293
315
  parser.skipWhitespace();
294
316
  var declaration = parser.parseDeclaration(knownFacts);
317
+ parser.expectEnd();
295
318
 
296
319
  const factRecords: FactRecord[] = [];
297
320
  for (const value of declaration) {
@@ -419,6 +442,13 @@ export class HttpRouter {
419
442
  }
420
443
  }
421
444
 
445
+ function parseString(input: any): string {
446
+ if (typeof input !== 'string') {
447
+ throw new Error("Expected a string. Check the content type of the request.");
448
+ }
449
+ return input;
450
+ }
451
+
422
452
  function urlSafeHash(feed: Feed): string {
423
453
  const base64 = computeObjectHash(feed);
424
454
  return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');