jinaga-server 3.1.4 → 3.2.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.
Files changed (42) hide show
  1. package/.github/workflows/main.yml +1 -1
  2. package/.github/workflows/publish.yml +3 -3
  3. package/dist/http/router.js +73 -121
  4. package/dist/http/router.js.map +1 -1
  5. package/dist/jinaga-server.d.ts +2 -1
  6. package/dist/jinaga-server.js +18 -4
  7. package/dist/jinaga-server.js.map +1 -1
  8. package/dist/postgres/postgres-store.d.ts +1 -0
  9. package/dist/postgres/postgres-store.js +17 -0
  10. package/dist/postgres/postgres-store.js.map +1 -1
  11. package/dist/postgres/purge-sql.d.ts +6 -0
  12. package/dist/postgres/purge-sql.js +103 -0
  13. package/dist/postgres/purge-sql.js.map +1 -0
  14. package/dist/postgres/query-description.d.ts +1 -1
  15. package/dist/postgres/query-description.js +3 -3
  16. package/dist/postgres/query-description.js.map +1 -1
  17. package/dist/postgres/specification-result-sql.js +1 -1
  18. package/dist/postgres/specification-result-sql.js.map +1 -1
  19. package/dist/postgres/specification-sql.js +2 -2
  20. package/dist/postgres/specification-sql.js.map +1 -1
  21. package/integration-test/docker-compose.yaml +0 -1
  22. package/integration-test/jinaga-test/Dockerfile +1 -1
  23. package/integration-test/jinaga-test/package-lock.json +147 -86
  24. package/integration-test/jinaga-test/package.json +3 -3
  25. package/integration-test/postgres/1-setup.sql +2 -2
  26. package/integration-test/postgres/Dockerfile +1 -1
  27. package/package.json +4 -4
  28. package/replicator/package-lock.json +139 -71
  29. package/replicator/package.json +2 -2
  30. package/scripts/migrate_purge.sql +45 -0
  31. package/scripts/purge.sql +33 -0
  32. package/setup.sql +30 -2
  33. package/src/http/router.ts +72 -119
  34. package/src/jinaga-server.ts +27 -5
  35. package/src/postgres/postgres-store.ts +18 -0
  36. package/src/postgres/purge-sql.ts +125 -0
  37. package/src/postgres/query-description.ts +1 -1
  38. package/src/postgres/specification-result-sql.ts +3 -3
  39. package/src/postgres/specification-sql.ts +4 -4
  40. package/test/authorization/authorizationSpec.ts +1 -1
  41. package/test/models/blog.ts +92 -0
  42. package/test/postgres/purgeSqlSpec.ts +218 -0
@@ -23,7 +23,7 @@ jobs:
23
23
  # Steps represent a sequence of tasks that will be executed as part of the job
24
24
  steps:
25
25
  # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
26
- - uses: actions/checkout@v2
26
+ - uses: actions/checkout@v4
27
27
 
28
28
  - name: Build and Test
29
29
  run: |
@@ -8,11 +8,11 @@ jobs:
8
8
  build:
9
9
  runs-on: ubuntu-latest
10
10
  steps:
11
- - uses: actions/checkout@v2
11
+ - uses: actions/checkout@v4
12
12
  # Setup .npmrc file to publish to npm
13
- - uses: actions/setup-node@v2
13
+ - uses: actions/setup-node@v4
14
14
  with:
15
- node-version: '16.x'
15
+ node-version: '20.x'
16
16
  registry-url: 'https://registry.npmjs.org'
17
17
  - run: npm install
18
18
  - run: npm publish
@@ -48,17 +48,7 @@ function getOrStream(getMethod, streamMethod) {
48
48
  });
49
49
  }
50
50
  })
51
- .catch(error => {
52
- if (error instanceof jinaga_1.Forbidden) {
53
- res.type("text");
54
- res.status(403).send(error.message);
55
- }
56
- else {
57
- jinaga_1.Trace.error(error);
58
- res.status(500).send(error.message);
59
- }
60
- next();
61
- });
51
+ .catch(error => handleError(error, res, next));
62
52
  }
63
53
  else {
64
54
  getMethod(user, req.params, req.query)
@@ -73,17 +63,7 @@ function getOrStream(getMethod, streamMethod) {
73
63
  next();
74
64
  }
75
65
  })
76
- .catch(error => {
77
- if (error instanceof jinaga_1.Forbidden) {
78
- res.type("text");
79
- res.status(403).send(error.message);
80
- }
81
- else {
82
- jinaga_1.Trace.error(error);
83
- res.status(500).send(error.message);
84
- }
85
- next();
86
- });
66
+ .catch(error => handleError(error, res, next));
87
67
  }
88
68
  };
89
69
  }
@@ -100,11 +80,7 @@ function getAuthenticate(method) {
100
80
  res.send(JSON.stringify(response));
101
81
  next();
102
82
  })
103
- .catch(error => {
104
- jinaga_1.Trace.error(error);
105
- res.sendStatus(500);
106
- next();
107
- });
83
+ .catch(error => handleError(error, res, next));
108
84
  }
109
85
  };
110
86
  }
@@ -126,19 +102,7 @@ function post(parse, method, output) {
126
102
  next();
127
103
  }
128
104
  })
129
- .catch(error => {
130
- if (error instanceof jinaga_1.Forbidden) {
131
- jinaga_1.Trace.warn(error.message);
132
- res.type("text");
133
- res.status(403).send(error.message);
134
- }
135
- else {
136
- jinaga_1.Trace.error(error);
137
- res.type("text");
138
- res.status(500).send(error.message);
139
- }
140
- next();
141
- });
105
+ .catch(error => handleError(error, res, next));
142
106
  };
143
107
  }
144
108
  function postString(method) {
@@ -156,19 +120,7 @@ function postString(method) {
156
120
  res.send(JSON.stringify(response, null, 2));
157
121
  next();
158
122
  })
159
- .catch(error => {
160
- if (error instanceof jinaga_1.Forbidden) {
161
- jinaga_1.Trace.warn(error.message);
162
- res.type("text");
163
- res.status(403).send(error.message);
164
- }
165
- else {
166
- jinaga_1.Trace.error(error);
167
- res.type("text");
168
- res.status(400).send(error.message);
169
- }
170
- next();
171
- });
123
+ .catch(error => handleError(error, res, next));
172
124
  }
173
125
  };
174
126
  }
@@ -181,19 +133,7 @@ function postCreate(parse, method) {
181
133
  res.sendStatus(201);
182
134
  next();
183
135
  })
184
- .catch(error => {
185
- if (error instanceof jinaga_1.Forbidden) {
186
- jinaga_1.Trace.warn(error.message);
187
- res.type("text");
188
- res.status(403).send(error.message);
189
- }
190
- else {
191
- jinaga_1.Trace.error(error);
192
- res.type("text");
193
- res.status(500).send(error.message);
194
- }
195
- next();
196
- });
136
+ .catch(error => handleError(error, res, next));
197
137
  };
198
138
  }
199
139
  function postStringCreate(method) {
@@ -210,19 +150,7 @@ function postStringCreate(method) {
210
150
  res.sendStatus(201);
211
151
  next();
212
152
  })
213
- .catch(error => {
214
- if (error instanceof jinaga_1.Forbidden) {
215
- jinaga_1.Trace.warn(error.message);
216
- res.type("text");
217
- res.status(403).send(error.message);
218
- }
219
- else {
220
- jinaga_1.Trace.error(error);
221
- res.type("text");
222
- res.status(400).send(error.message);
223
- }
224
- next();
225
- });
153
+ .catch(error => handleError(error, res, next));
226
154
  }
227
155
  };
228
156
  }
@@ -282,13 +210,14 @@ class HttpRouter {
282
210
  this.feedCache = feedCache;
283
211
  this.allowedOrigin = allowedOrigin;
284
212
  const router = (0, express_1.Router)();
285
- router.get('/login', getAuthenticate(user => this.login(user)));
286
- router.post('/load', post(jinaga_1.parseLoadMessage, (user, loadMessage) => this.load(user, loadMessage), outputGraph));
287
- router.post('/save', postCreate(inputSaveMessage, (user, graphSource) => this.save(user, graphSource)));
288
- router.post('/read', postString((user, input) => this.read(user, input)));
289
- router.post('/write', postStringCreate((user, input) => this.write(user, input)));
290
- router.post('/feeds', post(parseString, (user, input, accepts) => this.feeds(user, input), outputFeeds));
291
- router.get('/feeds/:hash', getOrStream((user, params, query) => this.feed(user, params, query), (user, params, query) => this.streamFeed(user, params, query)));
213
+ const applyAllowOrigin = this.applyAllowOrigin.bind(this);
214
+ router.get('/login', applyAllowOrigin, getAuthenticate(user => this.login(user)));
215
+ router.post('/load', applyAllowOrigin, post(jinaga_1.parseLoadMessage, (user, loadMessage) => this.load(user, loadMessage), outputGraph));
216
+ router.post('/save', applyAllowOrigin, postCreate(inputSaveMessage, (user, graphSource) => this.save(user, graphSource)));
217
+ router.post('/read', applyAllowOrigin, postString((user, input) => this.read(user, input)));
218
+ router.post('/write', applyAllowOrigin, postStringCreate((user, input) => this.write(user, input)));
219
+ router.post('/feeds', applyAllowOrigin, post(parseString, (user, input, accepts) => this.feeds(user, input), outputFeeds));
220
+ router.get('/feeds/:hash', applyAllowOrigin, getOrStream((user, params, query) => this.feed(user, params, query), (user, params, query) => this.streamFeed(user, params, query)));
292
221
  // Respond to OPTIONS requests to describe the methods and content types
293
222
  // that are supported.
294
223
  this.setOptions(router, '/login')
@@ -353,6 +282,10 @@ class HttpRouter {
353
282
  const specification = parser.parseSpecification();
354
283
  parser.expectEnd();
355
284
  const start = this.selectStart(specification, declaration);
285
+ var failures = this.factManager.testSpecificationForCompliance(specification);
286
+ if (failures.length > 0) {
287
+ throw new jinaga_1.Invalid(failures.join("\n"));
288
+ }
356
289
  const userIdentity = serializeUserIdentity(user);
357
290
  const results = yield this.authorization.read(userIdentity, start, specification);
358
291
  return extractResults(results);
@@ -368,7 +301,7 @@ class HttpRouter {
368
301
  const factRecords = [];
369
302
  for (const value of declaration) {
370
303
  if (!value.declared.fact) {
371
- throw new Error("References are not allowed while saving.");
304
+ throw new jinaga_1.Invalid("References are not allowed while saving.");
372
305
  }
373
306
  factRecords.push(value.declared.fact);
374
307
  }
@@ -390,14 +323,19 @@ class HttpRouter {
390
323
  const start = this.selectStart(specification, declaration);
391
324
  // Verify that the number of start facts equals the number of inputs
392
325
  if (start.length !== specification.given.length) {
393
- throw new Error(`The number of start facts (${start.length}) does not equal the number of inputs (${specification.given.length})`);
326
+ throw new jinaga_1.Invalid(`The number of start facts (${start.length}) does not equal the number of inputs (${specification.given.length})`);
394
327
  }
395
328
  // Verify that the input type matches the start fact type
396
329
  for (let i = 0; i < start.length; i++) {
397
330
  if (start[i].type !== specification.given[i].type) {
398
- throw new Error(`The type of start fact ${i} (${start[i].type}) does not match the type of input ${i} (${specification.given[i].type})`);
331
+ throw new jinaga_1.Invalid(`The type of start fact ${i} (${start[i].type}) does not match the type of input ${i} (${specification.given[i].type})`);
399
332
  }
400
333
  }
334
+ // Verify that the specification is compliant with purge conditions
335
+ var failures = this.factManager.testSpecificationForCompliance(specification);
336
+ if (failures.length > 0) {
337
+ throw new jinaga_1.Invalid(failures.join("\n"));
338
+ }
401
339
  const namedStart = specification.given.reduce((map, label, index) => (Object.assign(Object.assign({}, map), { [label.name]: start[index] })), {});
402
340
  // Verify that I can distribute all feeds to the user.
403
341
  const feeds = (0, jinaga_1.buildFeeds)(specification);
@@ -513,14 +451,14 @@ class HttpRouter {
513
451
  return specification.given.map(input => {
514
452
  const declaredFact = declaration.find(d => d.name === input.name);
515
453
  if (!declaredFact) {
516
- throw new Error(`No fact named ${input.name} was declared`);
454
+ throw new jinaga_1.Invalid(`No fact named ${input.name} was declared`);
517
455
  }
518
456
  return declaredFact.declared.reference;
519
457
  });
520
458
  }
521
459
  setOptions(router, path) {
522
460
  const addOptions = (allowedMethods, allowedHeaders, allowedTypes) => {
523
- router.options(path, this.applyAllowOrigin((req, res) => {
461
+ router.options(path, this.applyAllowOrigin.bind(this), (req, res) => {
524
462
  res.set('Allow', allowedMethods.join(', '));
525
463
  res.set('Access-Control-Allow-Methods', allowedMethods.join(', '));
526
464
  res.set('Access-Control-Allow-Headers', allowedHeaders.join(', '));
@@ -528,7 +466,7 @@ class HttpRouter {
528
466
  res.set('Accept-Post', allowedTypes.join(', '));
529
467
  }
530
468
  res.status(204).send();
531
- }));
469
+ });
532
470
  };
533
471
  return {
534
472
  intendedForGet: () => {
@@ -550,44 +488,42 @@ class HttpRouter {
550
488
  }
551
489
  };
552
490
  }
553
- applyAllowOrigin(sendResponse) {
491
+ applyAllowOrigin(req, res, next) {
554
492
  // Specify the allowed origins.
555
- return (req, res, next) => {
556
- let requestOrigin = req.get('Origin');
557
- if (typeof this.allowedOrigin === 'string') {
558
- // If allowedOrigin is a string, use it as the value of the Access-Control-Allow-Origin header
559
- res.set('Access-Control-Allow-Origin', this.allowedOrigin);
560
- sendResponse(req, res);
493
+ let requestOrigin = req.get('Origin');
494
+ if (typeof this.allowedOrigin === 'string') {
495
+ // If allowedOrigin is a string, use it as the value of the Access-Control-Allow-Origin header
496
+ res.set('Access-Control-Allow-Origin', this.allowedOrigin);
497
+ next();
498
+ }
499
+ else if (Array.isArray(this.allowedOrigin)) {
500
+ // If allowedOrigin is an array, check if the request's origin is in the array
501
+ if (requestOrigin && this.allowedOrigin.includes(requestOrigin)) {
502
+ res.set('Access-Control-Allow-Origin', requestOrigin);
561
503
  }
562
- else if (Array.isArray(this.allowedOrigin)) {
563
- // If allowedOrigin is an array, check if the request's origin is in the array
564
- if (requestOrigin && this.allowedOrigin.includes(requestOrigin)) {
504
+ next();
505
+ }
506
+ else if (typeof this.allowedOrigin === 'function' && requestOrigin) {
507
+ // If allowedOrigin is a function, call it with the request's origin
508
+ this.allowedOrigin(requestOrigin, (err, allow) => {
509
+ if (err) {
510
+ next(err);
511
+ }
512
+ else if (allow) {
565
513
  res.set('Access-Control-Allow-Origin', requestOrigin);
566
514
  }
567
- sendResponse(req, res);
568
- }
569
- else if (typeof this.allowedOrigin === 'function' && requestOrigin) {
570
- // If allowedOrigin is a function, call it with the request's origin
571
- this.allowedOrigin(requestOrigin, (err, allow) => {
572
- if (err) {
573
- next(err);
574
- }
575
- else if (allow) {
576
- res.set('Access-Control-Allow-Origin', requestOrigin);
577
- }
578
- sendResponse(req, res);
579
- });
580
- }
581
- else {
582
- sendResponse(req, res);
583
- }
584
- };
515
+ next();
516
+ });
517
+ }
518
+ else {
519
+ next();
520
+ }
585
521
  }
586
522
  }
587
523
  exports.HttpRouter = HttpRouter;
588
524
  function parseString(input) {
589
525
  if (typeof input !== 'string') {
590
- throw new Error("Expected a string. Check the content type of the request.");
526
+ throw new jinaga_1.Invalid("Expected a string. Check the content type of the request.");
591
527
  }
592
528
  return input;
593
529
  }
@@ -603,4 +539,20 @@ function extractResults(obj) {
603
539
  return obj;
604
540
  }
605
541
  }
542
+ function handleError(error, res, next) {
543
+ if (error instanceof jinaga_1.Forbidden) {
544
+ res.type("text");
545
+ res.status(403).send(error.message);
546
+ }
547
+ else if (error instanceof jinaga_1.Invalid) {
548
+ res.type("text");
549
+ res.status(400).send(error.message);
550
+ }
551
+ else {
552
+ jinaga_1.Trace.error(error);
553
+ res.type("text");
554
+ res.status(500).send(error.message);
555
+ }
556
+ next();
557
+ }
606
558
  //# sourceMappingURL=router.js.map
@@ -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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"}
@@ -1,5 +1,5 @@
1
1
  import { Handler, Request } from "express";
2
- import { AuthorizationRules, DistributionRules, Jinaga, Model } from "jinaga";
2
+ import { AuthorizationRules, DistributionRules, Jinaga, Model, PurgeConditions } from "jinaga";
3
3
  import { Pool } from "pg";
4
4
  export declare type JinagaServerConfig = {
5
5
  pgStore?: string | Pool;
@@ -9,6 +9,7 @@ export declare type JinagaServerConfig = {
9
9
  model?: Model;
10
10
  authorization?: (a: AuthorizationRules) => AuthorizationRules;
11
11
  distribution?: (d: DistributionRules) => DistributionRules;
12
+ purgeConditions?: (p: PurgeConditions) => PurgeConditions;
12
13
  origin?: string | string[] | ((origin: string, callback: (err: Error | null, allow?: boolean) => void) => void);
13
14
  };
14
15
  export declare type JinagaServerInstance = {
@@ -35,7 +35,8 @@ class JinagaServer {
35
35
  const feedCache = new jinaga_1.FeedCache();
36
36
  const authentication = createAuthentication(store, keystore, authorizationRules);
37
37
  const network = new jinaga_1.NetworkNoOp();
38
- const factManager = new jinaga_1.FactManager(fork, source, store, network);
38
+ const purgeConditions = createPurgeConditions(config);
39
+ const factManager = new jinaga_1.FactManager(fork, source, store, network, purgeConditions);
39
40
  const authorization = createAuthorization(authorizationRules, distributionRules, factManager, store, keystore);
40
41
  const router = new router_1.HttpRouter(factManager, authorization, feedCache, config.origin || '*');
41
42
  const j = new jinaga_1.Jinaga(authentication, factManager, syncStatusNotifier);
@@ -50,7 +51,7 @@ class JinagaServer {
50
51
  handler: router.handler,
51
52
  j,
52
53
  withSession: (req, callback) => {
53
- return withSession(store, keystore, authorizationRules, req, callback);
54
+ return withSession(store, keystore, authorizationRules, purgeConditions, req, callback);
54
55
  },
55
56
  close
56
57
  };
@@ -137,7 +138,7 @@ function tracePool(postgresPool) {
137
138
  }
138
139
  }
139
140
  exports.tracePool = tracePool;
140
- function withSession(store, keystore, authorizationRules, req, callback) {
141
+ function withSession(store, keystore, authorizationRules, purgeConditions, req, callback) {
141
142
  return __awaiter(this, void 0, void 0, function* () {
142
143
  const user = req.user;
143
144
  const userIdentity = {
@@ -149,7 +150,7 @@ function withSession(store, keystore, authorizationRules, req, callback) {
149
150
  const fork = new jinaga_1.PassThroughFork(store);
150
151
  const observableSource = new jinaga_1.ObservableSource(store);
151
152
  const network = new jinaga_1.NetworkNoOp();
152
- const factManager = new jinaga_1.FactManager(fork, observableSource, store, network);
153
+ const factManager = new jinaga_1.FactManager(fork, observableSource, store, network, purgeConditions);
153
154
  const j = new jinaga_1.Jinaga(authentication, factManager, syncStatusNotifier);
154
155
  yield callback(j);
155
156
  });
@@ -165,4 +166,17 @@ function validateSchema(schema) {
165
166
  }
166
167
  return schema;
167
168
  }
169
+ function createPurgeConditions(config) {
170
+ if (config.purgeConditions) {
171
+ var specifications = config.purgeConditions(new jinaga_1.PurgeConditions([])).specifications;
172
+ var validationFailures = specifications.map(specification => (0, jinaga_1.validatePurgeSpecification)(specification)).flat();
173
+ if (validationFailures.length > 0) {
174
+ throw new Error(validationFailures.join("\n"));
175
+ }
176
+ return specifications;
177
+ }
178
+ else {
179
+ return [];
180
+ }
181
+ }
168
182
  //# sourceMappingURL=jinaga-server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jinaga-server.js","sourceRoot":"","sources":["../src/jinaga-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jinaga-server.js","sourceRoot":"","sources":["../src/jinaga-server.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,7 @@ export declare class PostgresStore implements Storage {
18
18
  whichExist(references: FactReference[]): Promise<FactReference[]>;
19
19
  load(references: FactReference[]): Promise<FactEnvelope[]>;
20
20
  private loadFactTypesFromReferences;
21
+ purge(purgeConditions: Specification[]): Promise<void>;
21
22
  loadBookmark(feed: string): Promise<string>;
22
23
  saveBookmark(feed: string, bookmark: string): Promise<void>;
23
24
  getMruDate(specificationHash: string): Promise<Date | null>;
@@ -17,6 +17,7 @@ const edge_record_1 = require("./edge-record");
17
17
  const maps_1 = require("./maps");
18
18
  const specification_result_sql_1 = require("./specification-result-sql");
19
19
  const specification_sql_1 = require("./specification-sql");
20
+ const purge_sql_1 = require("./purge-sql");
20
21
  function loadFactTuple(labels, row) {
21
22
  const facts = labels.map(label => {
22
23
  const hashColumn = `hash${label.index}`;
@@ -326,6 +327,22 @@ class PostgresStore {
326
327
  return factTypes;
327
328
  });
328
329
  }
330
+ purge(purgeConditions) {
331
+ return __awaiter(this, void 0, void 0, function* () {
332
+ for (const specification of purgeConditions) {
333
+ const factTypes = yield this.loadFactTypesFromSpecification(specification);
334
+ const roleMap = yield this.loadRolesFromSpecification(specification, factTypes);
335
+ const purgeCommand = (0, purge_sql_1.purgeSqlFromSpecification)(specification, factTypes, roleMap, this.schema);
336
+ if (!purgeCommand) {
337
+ continue;
338
+ }
339
+ const { sql, parameters } = purgeCommand;
340
+ yield this.connectionFactory.with((connection) => __awaiter(this, void 0, void 0, function* () {
341
+ yield connection.query(sql, parameters);
342
+ }));
343
+ }
344
+ });
345
+ }
329
346
  loadBookmark(feed) {
330
347
  throw new Error("Method not implemented.");
331
348
  }