jinaga-server 2.5.0 → 2.6.1

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 (59) hide show
  1. package/dist/authorization/authorization-keystore.d.ts +5 -4
  2. package/dist/authorization/authorization-keystore.js +16 -13
  3. package/dist/authorization/authorization-keystore.js.map +1 -1
  4. package/dist/http/router.d.ts +5 -3
  5. package/dist/http/router.js +125 -52
  6. package/dist/http/router.js.map +1 -1
  7. package/dist/http/stream.d.ts +10 -0
  8. package/dist/http/stream.js +35 -0
  9. package/dist/http/stream.js.map +1 -0
  10. package/dist/index.d.ts +1 -2
  11. package/dist/index.js +3 -3
  12. package/dist/index.js.map +1 -1
  13. package/dist/jinaga-server.js +7 -8
  14. package/dist/jinaga-server.js.map +1 -1
  15. package/dist/postgres/postgres-store.d.ts +4 -4
  16. package/dist/postgres/postgres-store.js +2 -2
  17. package/dist/postgres/postgres-store.js.map +1 -1
  18. package/dist/postgres/query-description.d.ts +75 -0
  19. package/dist/postgres/query-description.js +283 -0
  20. package/dist/postgres/query-description.js.map +1 -0
  21. package/dist/postgres/specification-result-sql.d.ts +2 -2
  22. package/dist/postgres/specification-result-sql.js +39 -324
  23. package/dist/postgres/specification-result-sql.js.map +1 -1
  24. package/dist/postgres/specification-sql.d.ts +2 -2
  25. package/dist/postgres/specification-sql.js +60 -163
  26. package/dist/postgres/specification-sql.js.map +1 -1
  27. package/http/sans-auth/.env.local +1 -0
  28. package/http/sans-auth/Create post sans auth.http +27 -0
  29. package/http/sans-auth/Create site sans auth.http +11 -0
  30. package/http/sans-auth/Feed sites.http +1 -0
  31. package/http/sans-auth/Feeds sites.http +12 -0
  32. package/http/sans-auth/Get posts sans auth.http +35 -0
  33. package/http/sans-auth/Get sites sans auth.http +12 -0
  34. package/http/sans-auth/stream.sh +2 -0
  35. package/integration-test/jinaga-test/Dockerfile +1 -1
  36. package/integration-test/jinaga-test/package-lock.json +917 -748
  37. package/integration-test/jinaga-test/package.json +3 -3
  38. package/package.json +2 -2
  39. package/replicator/package-lock.json +16 -16
  40. package/replicator/package.json +1 -1
  41. package/src/authorization/authorization-keystore.ts +23 -14
  42. package/src/http/router.ts +154 -64
  43. package/src/http/stream.ts +32 -0
  44. package/src/index.ts +1 -2
  45. package/src/jinaga-server.ts +8 -8
  46. package/src/postgres/postgres-store.ts +5 -8
  47. package/src/postgres/query-description.ts +435 -0
  48. package/src/postgres/specification-result-sql.ts +56 -489
  49. package/src/postgres/specification-sql.ts +71 -232
  50. package/test/authorization/authorizationSpec.ts +12 -2
  51. package/test/postgres/postgresSpecificationSpec.ts +15 -15
  52. package/dist/http/feed-cache.d.ts +0 -12
  53. package/dist/http/feed-cache.js +0 -3
  54. package/dist/http/feed-cache.js.map +0 -1
  55. package/dist/memory/memory-feed-cache.d.ts +0 -6
  56. package/dist/memory/memory-feed-cache.js +0 -17
  57. package/dist/memory/memory-feed-cache.js.map +0 -1
  58. package/src/http/feed-cache.ts +0 -14
  59. package/src/memory/memory-feed-cache.ts +0 -14
@@ -2,50 +2,42 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.sqlFromFeed = exports.sqlFromSpecification = void 0;
4
4
  const jinaga_1 = require("jinaga");
5
- const maps_1 = require("./maps");
5
+ const query_description_1 = require("./query-description");
6
6
  ;
7
- class QueryDescription {
8
- constructor(inputs, parameters, outputs, edges, notExistsConditions = []) {
9
- this.inputs = inputs;
10
- this.parameters = parameters;
11
- this.outputs = outputs;
12
- this.edges = edges;
13
- this.notExistsConditions = notExistsConditions;
14
- }
15
- generateSqlQuery(schema, bookmark, limit) {
16
- const hashes = this.outputs
17
- .map(output => `f${output.factIndex}.hash as hash${output.factIndex}`)
18
- .join(", ");
19
- const factIds = this.outputs
20
- .map(output => `f${output.factIndex}.fact_id`)
21
- .join(", ");
22
- const firstEdge = this.edges[0];
23
- const predecessorFact = this.inputs.find(i => i.factIndex === firstEdge.predecessorFactIndex);
24
- const successorFact = this.inputs.find(i => i.factIndex === firstEdge.successorFactIndex);
25
- const firstFactIndex = predecessorFact ? predecessorFact.factIndex : successorFact.factIndex;
26
- const writtenFactIndexes = new Set().add(firstFactIndex);
27
- const joins = generateJoins(schema, this.edges, writtenFactIndexes);
28
- const inputWhereClauses = this.inputs
29
- .filter(input => input.factTypeParameter !== 0)
30
- .map(input => `f${input.factIndex}.fact_type_id = $${input.factTypeParameter} AND f${input.factIndex}.hash = $${input.factHashParameter}`)
31
- .join(" AND ");
32
- const notExistsWhereClauses = this.notExistsConditions
33
- .map(notExistsWhereClause => ` AND NOT EXISTS (${generateNotExistsWhereClause(schema, notExistsWhereClause, writtenFactIndexes)})`)
34
- .join("");
35
- const bookmarkParameter = this.parameters.length + 1;
36
- const limitParameter = bookmarkParameter + 1;
37
- const sql = `SELECT ${hashes}, sort(array[${factIds}], 'desc') as bookmark FROM ${schema}.fact f${firstFactIndex}${joins.join("")} WHERE ${inputWhereClauses}${notExistsWhereClauses} AND sort(array[${factIds}], 'desc') > $${bookmarkParameter} ORDER BY bookmark ASC LIMIT $${limitParameter}`;
38
- const bookmarkValue = parseBookmark(bookmark);
39
- return {
40
- sql,
41
- parameters: [...this.parameters, bookmarkValue, limit],
42
- labels: this.outputs.map(output => ({
43
- type: output.type,
44
- index: output.factIndex
45
- })),
46
- bookmark: "[]"
47
- };
48
- }
7
+ function generateSqlQuery(queryDescription, schema, bookmark, limit) {
8
+ const hashes = queryDescription.outputs
9
+ .map(output => `f${output.factIndex}.hash as hash${output.factIndex}`)
10
+ .join(", ");
11
+ const factIds = queryDescription.outputs
12
+ .map(output => `f${output.factIndex}.fact_id`)
13
+ .join(", ");
14
+ const firstEdge = queryDescription.edges[0];
15
+ const predecessorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.predecessorFactIndex);
16
+ const successorFact = queryDescription.inputs.find(i => i.factIndex === firstEdge.successorFactIndex);
17
+ const firstFactIndex = predecessorFact ? predecessorFact.factIndex : successorFact.factIndex;
18
+ const writtenFactIndexes = new Set().add(firstFactIndex);
19
+ const joins = generateJoins(schema, queryDescription.edges, writtenFactIndexes);
20
+ const inputWhereClauses = queryDescription.inputs
21
+ .filter(input => input.factTypeParameter !== 0)
22
+ .map(input => `f${input.factIndex}.fact_type_id = $${input.factTypeParameter} AND f${input.factIndex}.hash = $${input.factHashParameter}`)
23
+ .join(" AND ");
24
+ const notExistsWhereClauses = (queryDescription.existentialConditions
25
+ .filter(c => c.exists === false))
26
+ .map(notExistsWhereClause => ` AND NOT EXISTS (${generateNotExistsWhereClause(schema, notExistsWhereClause, writtenFactIndexes)})`)
27
+ .join("");
28
+ const bookmarkParameter = queryDescription.parameters.length + 1;
29
+ const limitParameter = bookmarkParameter + 1;
30
+ const sql = `SELECT ${hashes}, sort(array[${factIds}], 'desc') as bookmark FROM ${schema}.fact f${firstFactIndex}${joins.join("")} WHERE ${inputWhereClauses}${notExistsWhereClauses} AND sort(array[${factIds}], 'desc') > $${bookmarkParameter} ORDER BY bookmark ASC LIMIT $${limitParameter}`;
31
+ const bookmarkValue = parseBookmark(bookmark);
32
+ return {
33
+ sql,
34
+ parameters: [...queryDescription.parameters, bookmarkValue, limit],
35
+ labels: queryDescription.outputs.map(output => ({
36
+ type: output.type,
37
+ index: output.factIndex
38
+ })),
39
+ bookmark: "[]"
40
+ };
49
41
  }
50
42
  function generateJoins(schema, edges, writtenFactIndexes) {
51
43
  const joins = [];
@@ -131,140 +123,45 @@ function parseBookmark(bookmark) {
131
123
  return parsed;
132
124
  }
133
125
  }
134
- class DescriptionBuilder {
135
- constructor(factTypes, roleMap) {
136
- this.factTypes = factTypes;
137
- this.roleMap = roleMap;
138
- }
139
- isSatisfiable(feed, edges) {
140
- for (const edge of edges) {
141
- const successor = feed.facts.find(f => f.factIndex === edge.successorFactIndex);
142
- if (!successor) {
143
- return false;
144
- }
145
- const predecessor = feed.facts.find(f => f.factIndex === edge.predecessorFactIndex);
146
- if (!predecessor) {
147
- return false;
148
- }
149
- const successorFactTypeId = (0, maps_1.getFactTypeId)(this.factTypes, successor.factType);
150
- if (!successorFactTypeId) {
151
- return false;
152
- }
153
- if (!(0, maps_1.getRoleId)(this.roleMap, successorFactTypeId, edge.roleName)) {
154
- return false;
155
- }
156
- const predecessorFactTypeId = (0, maps_1.getFactTypeId)(this.factTypes, predecessor.factType);
157
- if (!predecessorFactTypeId) {
158
- return false;
159
- }
160
- }
161
- return true;
162
- }
163
- buildDescription(feed, start) {
164
- const parameters = [];
165
- function addParameter(value) {
166
- parameters.push(value);
167
- return parameters.length;
168
- }
169
- // Allocate parameters for the inputs.
170
- const inputs = feed.inputs.map(input => this.buildInputDescription(feed, input, start, addParameter));
171
- // Allocate parameters for the edge roles.
172
- const edges = feed.edges.map(edge => this.buildEdgeDescription(feed, edge, addParameter));
173
- // Allocate parameters for the conditional roles.
174
- const satisfiableNotExistsConditions = feed.notExistsConditions.filter(condition => this.isSatisfiable(feed, condition.edges));
175
- const notExistsConditions = satisfiableNotExistsConditions.map(condition => this.buildNotExistsConditionDescription(feed, condition, addParameter));
176
- const outputs = feed.outputs.map(output => this.buildOutputDescription(feed, output));
177
- return new QueryDescription(inputs, parameters, outputs, edges, notExistsConditions);
178
- }
179
- buildInputDescription(feed, input, start, addParameter) {
180
- const fact = feed.facts.find(f => f.factIndex === input.factIndex);
181
- if (!fact) {
182
- throw new Error(`Fact not found: ${input.factIndex}`);
183
- }
184
- const factTypeId = (0, maps_1.getFactTypeId)(this.factTypes, fact.factType);
185
- if (!factTypeId) {
186
- throw new Error(`Fact type not found: ${fact.factType}`);
187
- }
188
- const factTypeParameter = addParameter(factTypeId);
189
- const factHashParameter = addParameter(start[input.inputIndex].hash);
190
- return {
191
- factIndex: input.factIndex,
192
- factTypeParameter,
193
- factHashParameter
194
- };
195
- }
196
- buildEdgeDescription(feed, edge, addParameter) {
197
- const fact = feed.facts.find(f => f.factIndex === edge.successorFactIndex);
198
- if (!fact) {
199
- throw new Error(`Fact not found: ${edge.successorFactIndex}`);
200
- }
201
- const factTypeId = (0, maps_1.getFactTypeId)(this.factTypes, fact.factType);
202
- if (!factTypeId) {
203
- throw new Error(`Fact type not found: ${fact.factType}`);
204
- }
205
- const roleId = (0, maps_1.getRoleId)(this.roleMap, factTypeId, edge.roleName);
206
- if (!roleId) {
207
- throw new Error(`Role not found: ${fact.factType}.${edge.roleName}`);
208
- }
209
- const roleParameter = addParameter(roleId);
210
- return {
211
- edgeIndex: edge.edgeIndex,
212
- predecessorFactIndex: edge.predecessorFactIndex,
213
- successorFactIndex: edge.successorFactIndex,
214
- roleParameter
215
- };
216
- }
217
- buildOutputDescription(feed, output) {
218
- const fact = feed.facts.find(f => f.factIndex === output.factIndex);
219
- if (!fact) {
220
- throw new Error(`Fact not found: ${output.factIndex}`);
221
- }
222
- return {
223
- factIndex: output.factIndex,
224
- type: fact.factType
225
- };
226
- }
227
- buildNotExistsConditionDescription(feed, condition, addParameter) {
228
- const edges = condition.edges.map(edge => this.buildEdgeDescription(feed, edge, addParameter));
229
- return {
230
- edges
231
- };
232
- }
233
- }
234
126
  function sqlFromSpecification(start, schema, bookmarks, limit, specification, factTypes, roleMap) {
235
- // Verify that the number of start facts equals the number of inputs
236
- if (start.length !== specification.given.length) {
237
- throw new Error(`The number of start facts (${start.length}) does not equal the number of inputs (${specification.given.length})`);
238
- }
239
- // Verify that the input type matches the start fact type
240
- for (let i = 0; i < start.length; i++) {
241
- if (start[i].type !== specification.given[i].type) {
242
- throw new Error(`The type of start fact ${i} (${start[i].type}) does not match the type of input ${i} (${specification.given[i].type})`);
243
- }
244
- }
127
+ (0, jinaga_1.validateGiven)(start, specification);
128
+ const labeledStart = start.map((s, index) => ({
129
+ name: specification.given[index].name,
130
+ reference: s
131
+ })).reduce((map, s) => {
132
+ map.set(s.name, s.reference);
133
+ return map;
134
+ }, new Map());
245
135
  const feeds = (0, jinaga_1.buildFeeds)(specification);
246
- const descriptionBuilder = new DescriptionBuilder(factTypes, roleMap);
136
+ const queryDescriptionBuilder = new query_description_1.QueryDescriptionBuider(factTypes, roleMap);
247
137
  const feedAndBookmark = feeds.map((feed, index) => ({
248
138
  feed,
249
139
  bookmark: bookmarks[index]
250
140
  }));
251
- const satisfiableFeedsAndBookmarks = feedAndBookmark.filter(fb => descriptionBuilder.isSatisfiable(fb.feed, fb.feed.edges));
252
- const sqlQueries = satisfiableFeedsAndBookmarks.map(fb => {
253
- const description = descriptionBuilder.buildDescription(fb.feed, start);
254
- const sql = description.generateSqlQuery(schema, fb.bookmark, limit);
255
- return sql;
141
+ const queryDescriptionsAndBookmarks = feedAndBookmark.map(fb => {
142
+ const feedStart = fb.feed.given.map(s => labeledStart.get(s.name));
143
+ return {
144
+ queryDescription: buildQueryDescription(queryDescriptionBuilder, fb.feed, feedStart),
145
+ bookmark: fb.bookmark
146
+ };
256
147
  });
148
+ const satisfiableQueryDescriptionsAndBookmarks = queryDescriptionsAndBookmarks.filter(qb => qb.queryDescription.isSatisfiable());
149
+ const sqlQueries = satisfiableQueryDescriptionsAndBookmarks.map(qdb => generateSqlQuery(qdb.queryDescription, schema, qdb.bookmark, limit));
257
150
  return sqlQueries;
258
151
  }
259
152
  exports.sqlFromSpecification = sqlFromSpecification;
260
153
  function sqlFromFeed(feed, start, schema, bookmark, limit, factTypes, roleMap) {
261
- const descriptionBuilder = new DescriptionBuilder(factTypes, roleMap);
262
- if (!descriptionBuilder.isSatisfiable(feed, feed.edges)) {
154
+ const queryDescriptionBuilder = new query_description_1.QueryDescriptionBuider(factTypes, roleMap);
155
+ const queryDescription = buildQueryDescription(queryDescriptionBuilder, feed, start);
156
+ if (!queryDescription.isSatisfiable()) {
263
157
  return null;
264
158
  }
265
- const description = descriptionBuilder.buildDescription(feed, start);
266
- const sql = description.generateSqlQuery(schema, bookmark, limit);
159
+ const sql = generateSqlQuery(queryDescription, schema, bookmark, limit);
267
160
  return sql;
268
161
  }
269
162
  exports.sqlFromFeed = sqlFromFeed;
163
+ function buildQueryDescription(queryDescriptionBuilder, specification, start) {
164
+ const { queryDescription } = queryDescriptionBuilder.addEdges(query_description_1.QueryDescription.unsatisfiable, specification.given, start, {}, [], specification.matches);
165
+ return queryDescription;
166
+ }
270
167
  //# sourceMappingURL=specification-sql.js.map
@@ -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":";;;AAAA,mCAKgB;AAEhB,2DAAiI;AAYhI,CAAC;AAEF,SAAS,gBAAgB,CAAC,gBAAkC,EAAE,MAAc,EAAE,QAAgB,EAAE,KAAa;IACzG,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO;SAClC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,gBAAgB,MAAM,CAAC,SAAS,EAAE,CAAC;SACrE,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO;SACnC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,SAAS,UAAU,CAAC;SAC7C,IAAI,CAAC,IAAI,CAAC,CAAC;IAChB,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC1G,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACtG,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,aAAc,CAAC,SAAS,CAAC;IAC9F,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjE,MAAM,KAAK,GAAa,aAAa,CAAC,MAAM,EAAE,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;IAC1F,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,MAAM;SAC5C,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,KAAK,CAAC,CAAC;SAC9C,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,SAAS,oBAAoB,KAAK,CAAC,iBAAiB,SAAS,KAAK,CAAC,SAAS,YAAY,KAAK,CAAC,iBAAiB,EAAE,CAAC;SACzI,IAAI,CAAC,OAAO,CAAC,CAAC;IACnB,MAAM,qBAAqB,GAAG,CAAC,gBAAgB,CAAC,qBAAqB;SAChE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;SAChC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC,oBAAoB,4BAA4B,CAAC,MAAM,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,GAAG,CAAC;SAClI,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,iBAAiB,GAAG,CAAC,CAAC;IAC7C,MAAM,GAAG,GAAG,UAAU,MAAM,gBAAgB,OAAO,+BAA+B,MAAM,UAAU,cAAc,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,iBAAiB,GAAG,qBAAqB,mBAAmB,OAAO,iBAAiB,iBAAiB,iCAAiC,cAAc,EAAE,CAAC;IAClS,MAAM,aAAa,GAAa,aAAa,CAAC,QAAQ,CAAC,CAAC;IACxD,OAAO;QACH,GAAG;QACH,UAAU,EAAE,CAAC,GAAG,gBAAgB,CAAC,UAAU,EAAE,aAAa,EAAE,KAAK,CAAC;QAClE,MAAM,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,KAAK,EAAE,MAAM,CAAC,SAAS;SAC1B,CAAC,CAAC;QACH,QAAQ,EAAE,IAAI;KACjB,CAAC;AACN,CAAC;AAED,SAAS,aAAa,CAAC,MAAc,EAAE,KAAwB,EAAE,kBAA+B;IAC5F,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjB,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YACnD,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;gBACjD,KAAK,CAAC,IAAI,CACN,SAAS,MAAM,UAAU,IAAI,CAAC,SAAS,EAAE;oBACzC,QAAQ,IAAI,CAAC,SAAS,2BAA2B,IAAI,CAAC,oBAAoB,UAAU;oBACpF,SAAS,IAAI,CAAC,SAAS,yBAAyB,IAAI,CAAC,kBAAkB,UAAU;oBACjF,SAAS,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,aAAa,EAAE,CAC7D,CAAC;aACL;iBACI;gBACD,KAAK,CAAC,IAAI,CACN,SAAS,MAAM,UAAU,IAAI,CAAC,SAAS,EAAE;oBACzC,QAAQ,IAAI,CAAC,SAAS,2BAA2B,IAAI,CAAC,oBAAoB,UAAU;oBACpF,SAAS,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,aAAa,EAAE,CAC7D,CAAC;gBACF,KAAK,CAAC,IAAI,CACN,SAAS,MAAM,UAAU,IAAI,CAAC,kBAAkB,EAAE;oBAClD,QAAQ,IAAI,CAAC,kBAAkB,eAAe,IAAI,CAAC,SAAS,oBAAoB,CACnF,CAAC;gBACF,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACnD;SACJ;aACI,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACtD,KAAK,CAAC,IAAI,CACN,SAAS,MAAM,UAAU,IAAI,CAAC,SAAS,EAAE;gBACzC,QAAQ,IAAI,CAAC,SAAS,yBAAyB,IAAI,CAAC,kBAAkB,UAAU;gBAChF,SAAS,IAAI,CAAC,SAAS,eAAe,IAAI,CAAC,aAAa,EAAE,CAC7D,CAAC;YACF,KAAK,CAAC,IAAI,CACN,SAAS,MAAM,UAAU,IAAI,CAAC,oBAAoB,EAAE;gBACpD,QAAQ,IAAI,CAAC,oBAAoB,eAAe,IAAI,CAAC,SAAS,sBAAsB,CACvF,CAAC;YACF,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACrD;aACI;YACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC9E;IACL,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,SAAS,4BAA4B,CAAC,MAAc,EAAE,oBAAqD,EAAE,gBAA6B;IACtI,MAAM,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS,gBAAgB,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE;QACxD,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE;YACtD,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC1C;aACI;YACD,WAAW,CAAC,IAAI,CACZ,IAAI,SAAS,CAAC,SAAS,2BAA2B,SAAS,CAAC,oBAAoB,UAAU;gBAC1F,SAAS,SAAS,CAAC,SAAS,eAAe,SAAS,CAAC,aAAa,EAAE,CACvE,CAAC;YACF,SAAS,CAAC,IAAI,CACV,SAAS,MAAM,UAAU,SAAS,CAAC,kBAAkB,EAAE;gBACvD,QAAQ,SAAS,CAAC,kBAAkB,eAAe,SAAS,CAAC,SAAS,oBAAoB,CAC7F,CAAC;YACF,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;SACxD;KACJ;SACI,IAAI,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE;QAC3D,WAAW,CAAC,IAAI,CACZ,IAAI,SAAS,CAAC,SAAS,yBAAyB,SAAS,CAAC,kBAAkB,UAAU;YACtF,SAAS,SAAS,CAAC,SAAS,eAAe,SAAS,CAAC,aAAa,EAAE,CACvE,CAAC;QACF,SAAS,CAAC,IAAI,CACV,SAAS,MAAM,UAAU,SAAS,CAAC,oBAAoB,EAAE;YACzD,QAAQ,SAAS,CAAC,oBAAoB,eAAe,SAAS,CAAC,SAAS,sBAAsB,CACjG,CAAC;QACF,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;KAC1D;SACI;QACD,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;KAC9E;IACD,MAAM,SAAS,GAAa,aAAa,CAAC,MAAM,EAAE,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;IAC3G,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1C,OAAO,iBAAiB,MAAM,UAAU,SAAS,CAAC,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;AACtH,CAAC;AAED,SAAS,aAAa,CAAC,QAAgB;IACnC,IAAI;QACA,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,EAAE,EAAE;YAChE,OAAO,EAAE,CAAC;SACb;aACI;YACD,OAAO,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9D;KACJ;IACD,OAAO,CAAC,EAAE;QACN,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,GAAG,CAAC,CAAC;KACtD;IAED,SAAS,cAAc,CAAC,GAAW;QAC/B,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,CAAC,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;AACL,CAAC;AAED,SAAgB,oBAAoB,CAAC,KAAsB,EAAE,MAAc,EAAE,SAAmB,EAAE,KAAa,EAAE,aAA4B,EAAE,SAA8B,EAAE,OAAyC;IACpN,IAAA,sBAAa,EAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAEpC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1C,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;QACrC,SAAS,EAAE,CAAC;KACf,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QAClB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,GAAG,CAAC;IACf,CAAC,EAAE,IAAI,GAAG,EAAyB,CAAC,CAAC;IAErC,MAAM,KAAK,GAAG,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;IACxC,MAAM,uBAAuB,GAAG,IAAI,0CAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,MAAM,eAAe,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAChD,IAAI;QACJ,QAAQ,EAAE,SAAS,CAAC,KAAK,CAAC;KAC7B,CAAC,CAAC,CAAC;IACJ,MAAM,6BAA6B,GAAG,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAC3D,MAAM,SAAS,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAE,CAAC,CAAC;QACpE,OAAO;YACH,gBAAgB,EAAE,qBAAqB,CAAC,uBAAuB,EAAE,EAAE,CAAC,IAAI,EAAE,SAAS,CAAC;YACpF,QAAQ,EAAE,EAAE,CAAC,QAAQ;SACxB,CAAC;IACN,CAAC,CAAC,CAAC;IACH,MAAM,wCAAwC,GAAG,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CACvF,EAAE,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,wCAAwC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAClE,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;IACzE,OAAO,UAAU,CAAC;AACtB,CAAC;AA7BD,oDA6BC;AAED,SAAgB,WAAW,CAAC,IAAmB,EAAE,KAAsB,EAAE,MAAc,EAAE,QAAgB,EAAE,KAAa,EAAE,SAA8B,EAAE,OAAyC;IAC/L,MAAM,uBAAuB,GAAG,IAAI,0CAAsB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrF,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,EAAE;QACnC,OAAO,IAAI,CAAC;KACf;IACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxE,OAAO,GAAG,CAAC;AACf,CAAC;AARD,kCAQC;AAED,SAAS,qBAAqB,CAAC,uBAA+C,EAAE,aAA4B,EAAE,KAAsB;IAChI,MAAM,EAAE,gBAAgB,EAAE,GAAG,uBAAuB,CAAC,QAAQ,CACzD,oCAAgB,CAAC,aAAa,EAC9B,aAAa,CAAC,KAAK,EACnB,KAAK,EAAE,EAAE,EAAE,EAAE,EACb,aAAa,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1 @@
1
+ replicatorUrl=http://localhost:8080/jinaga
@@ -0,0 +1,27 @@
1
+ POST {{replicatorUrl}}/write
2
+ Content-Type: text/plain
3
+
4
+ let creator: Jinaga.User = {
5
+ publicKey: "--- FAKE PUBLIC KEY ---"
6
+ }
7
+
8
+ let site: Blog.Site = {
9
+ creator,
10
+ domain: "michaelperry.net"
11
+ }
12
+
13
+ let post: Blog.Post = {
14
+ createdAt: "2022-08-16T15:23:13.231Z",
15
+ site
16
+ }
17
+
18
+ let title: Blog.Post.Title = {
19
+ post,
20
+ value: "Introducing Jinaga Replicator",
21
+ prior: []
22
+ }
23
+ let title2: Blog.Post.Title = {
24
+ post,
25
+ value: "Introduction to the Jinaga Replicator",
26
+ prior: [ title ]
27
+ }
@@ -0,0 +1,11 @@
1
+ POST {{replicatorUrl}}/write
2
+ Content-Type: text/plain
3
+
4
+ let creator: Jinaga.User = {
5
+ publicKey: "--- FAKE PUBLIC KEY ---"
6
+ }
7
+
8
+ let site: Blog.Site = {
9
+ creator,
10
+ domain: "michaelperry13.net"
11
+ }
@@ -0,0 +1 @@
1
+ GET {{replicatorUrl}}/feeds/8tObENmhwUfn7R0KwkCtUkMDgMN5HKLyLXNq0O__x1LQvxXLJABh6uuwXcETA23mUonsq5bBHFMdaeh5HT8-RA
@@ -0,0 +1,12 @@
1
+ POST {{replicatorUrl}}/feeds
2
+ Content-Type: text/plain
3
+
4
+ let creator: Jinaga.User = {
5
+ publicKey: "--- FAKE PUBLIC KEY ---"
6
+ }
7
+
8
+ (creator: Jinaga.User) {
9
+ site: Blog.Site [
10
+ site->creator: Jinaga.User = creator
11
+ ]
12
+ } => site.domain
@@ -0,0 +1,35 @@
1
+ POST {{replicatorUrl}}/read
2
+ Content-Type: text/plain
3
+
4
+ let creator: Jinaga.User = {
5
+ publicKey: "--- FAKE PUBLIC KEY ---"
6
+ }
7
+
8
+ let site: Blog.Site = {
9
+ creator,
10
+ domain: "michaelperry.net"
11
+ }
12
+
13
+ (site: Blog.Site) {
14
+ post: Blog.Post [
15
+ post->site: Blog.Site = site
16
+ !E {
17
+ deleted: Blog.Post.Deleted [
18
+ deleted->post: Blog.Post = post
19
+ ]
20
+ }
21
+ ]
22
+ } => {
23
+ id = #post
24
+ createdAt = post.createdAt
25
+ titles = {
26
+ title: Blog.Post.Title [
27
+ title->post: Blog.Post = post
28
+ !E {
29
+ next: Blog.Post.Title [
30
+ next->prior: Blog.Post.Title = title
31
+ ]
32
+ }
33
+ ]
34
+ } => title.value
35
+ }
@@ -0,0 +1,12 @@
1
+ POST {{replicatorUrl}}/read
2
+ Content-Type: text/plain
3
+
4
+ let creator: Jinaga.User = {
5
+ publicKey: "--- FAKE PUBLIC KEY ---"
6
+ }
7
+
8
+ (creator: Jinaga.User) {
9
+ site: Blog.Site [
10
+ site->creator: Jinaga.User = creator
11
+ ]
12
+ } => site.domain
@@ -0,0 +1,2 @@
1
+ #! /bin/bash
2
+ curl -H "Accept: application/x-jinaga-feed-stream" http://localhost:8080/jinaga/feeds/jEYBSRk5DOr5Bedi1XGF17gAQoL_8z-rFbmD6CAu9Hux5N1doYTJLvkJPzY6l0JE1Uk1V6J-599LkQkYK4MQFA
@@ -1,4 +1,4 @@
1
- FROM node:20.3.0-bullseye-slim
1
+ FROM node:20.9-bullseye-slim
2
2
 
3
3
  WORKDIR /root
4
4