@liminalfunctions/framework-vitamins 1.0.11 → 1.0.13

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.
@@ -24,6 +24,7 @@ declare class Query {
24
24
  query_parameters?: any;
25
25
  child_generators: child_generator<result>[];
26
26
  has_run: boolean;
27
+ last_result?: result;
27
28
  constructor(vitamins: Vitamins, reference: generated_collection_interface<result> | generated_document_interface<result>, argument?: object, child_generators?: child_generator<result>[]);
28
29
  rerun(): Promise<void>;
29
30
  run(run_from_root?: boolean): Promise<Query>;
@@ -33,6 +34,8 @@ declare class Query {
33
34
  unlink_child(id: string): void;
34
35
  unlink_parent(id: string): void;
35
36
  equals(query: Query): boolean;
37
+ clone(): Query;
38
+ next_page(): Promise<Query>;
36
39
  static find_query(queries: Query[], target: Query): Query;
37
40
  }
38
41
  export declare class Vitamins {
@@ -44,6 +47,7 @@ export declare class Vitamins {
44
47
  constructor(vue: App | any);
45
48
  document<Document extends generated_document_interface<result>>(collection: Document, ...generators: child_generator<Infer_Collection_Returntype<Document>>[]): Query;
46
49
  query<Collection extends generated_collection_interface<result>>(collection: Collection, query_parameters: any, ...generators: child_generator<Infer_Collection_Returntype<Collection>>[]): Query;
50
+ unlisten_query(query: Query): void;
47
51
  add_document_from_external<Document extends generated_document_interface<result>>(collection: Document, data: result): void;
48
52
  delete_document_from_external(document_id: string): void;
49
53
  update_document_from_external(document_id: string, data: result): void;
package/dist/vitamins.js CHANGED
@@ -30,6 +30,7 @@ class Query {
30
30
  query_parameters;
31
31
  child_generators;
32
32
  has_run;
33
+ last_result;
33
34
  constructor(vitamins, reference, argument, child_generators = []) {
34
35
  this.id = uuid();
35
36
  vitamins._debug(`constructing query ${reference.collection_id} ${this.id}`);
@@ -68,6 +69,9 @@ class Query {
68
69
  }
69
70
  self.vitamins._add_query(self);
70
71
  if (self.id !== this.id) {
72
+ for (let parent_id of this.parents) {
73
+ self.parents.add(parent_id);
74
+ }
71
75
  let new_child_generators = this.child_generators.filter(ele => !self.child_generators.includes(ele));
72
76
  for (let generator of new_child_generators) {
73
77
  self.vitamins._debug(`ADDING CHILD GENERATOR`);
@@ -103,6 +107,9 @@ class Query {
103
107
  for (let result of results) {
104
108
  this.vitamins._update_data(reference, result._id, result, this);
105
109
  }
110
+ if (results.length > 0) {
111
+ this.last_result = results[results.length - 1];
112
+ }
106
113
  }
107
114
  }
108
115
  catch (err) {
@@ -146,6 +153,23 @@ class Query {
146
153
  }
147
154
  return true;
148
155
  }
156
+ clone() {
157
+ return new Query(this.vitamins, this.reference, this.query_parameters.structuredClone(), this.child_generators);
158
+ }
159
+ async next_page() {
160
+ if (this.operation !== 'query') {
161
+ throw new Error(`can only paginate queries`);
162
+ }
163
+ if (!this.last_result) {
164
+ throw new Error(`tried to paginate before the last results were loaded.`);
165
+ }
166
+ let next_query = this.clone();
167
+ if (!next_query.query_parameters) {
168
+ next_query.query_parameters = {};
169
+ }
170
+ next_query.query_parameters.cursor = this.last_result._id;
171
+ return await next_query.run();
172
+ }
149
173
  static find_query(queries, target) {
150
174
  for (let query of queries) {
151
175
  if (query.equals(target)) {
@@ -224,6 +248,10 @@ export class Vitamins {
224
248
  let generated_query = new Query(this, collection, query_parameters ?? {}, generators);
225
249
  return generated_query;
226
250
  }
251
+ unlisten_query(query) {
252
+ query.parents.delete('root');
253
+ this._cleanup([query], []);
254
+ }
227
255
  add_document_from_external(collection, data) {
228
256
  if (!this.queries_by_collection.has(collection.collection_id)) {
229
257
  this.queries_by_collection.set(collection.collection_id, new Set());
@@ -340,6 +368,7 @@ export class Vitamins {
340
368
  if (query.parents.size > 0) {
341
369
  continue;
342
370
  }
371
+ this._debug(`deleting parentless query ${query.id}`);
343
372
  for (let child_id of query.children) {
344
373
  let child = this.documents.get(child_id);
345
374
  check_documents_queue.push(child);
@@ -352,6 +381,7 @@ export class Vitamins {
352
381
  if (document.parents.size > 0) {
353
382
  continue;
354
383
  }
384
+ this._debug(`deleting parentless document ${document.id}`);
355
385
  for (let child_id of document.children) {
356
386
  let child = this.all_queries.get(child_id);
357
387
  check_queries_queue.push(this.all_queries.get(child_id));
@@ -1 +1 @@
1
- {"version":3,"file":"vitamins.js","sourceRoot":"","sources":["../src/vitamins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vitamins.js","sourceRoot":"","sources":["../src/vitamins.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liminalfunctions/framework-vitamins",
3
- "version": "1.0.11",
3
+ "version": "1.0.13",
4
4
  "description": "",
5
5
  "license": "ISC",
6
6
  "author": "",
package/src/vitamins.ts CHANGED
@@ -47,6 +47,8 @@ class Query {
47
47
  child_generators: child_generator<result>[];
48
48
  has_run: boolean;
49
49
 
50
+ last_result?: result;
51
+
50
52
  constructor(vitamins: Vitamins, reference: generated_collection_interface<result> | generated_document_interface<result>, argument?: object, child_generators: child_generator<result>[] = []){
51
53
  this.id = uuid();
52
54
  vitamins._debug(`constructing query ${reference.collection_id} ${this.id}`)
@@ -91,6 +93,11 @@ class Query {
91
93
 
92
94
  // if we already had that query,....
93
95
  if(self.id !== this.id){
96
+ // if the existing query is missing parents, add them
97
+ for(let parent_id of this.parents){
98
+ self.parents.add(parent_id)
99
+ }
100
+
94
101
  // if any generators were specified, look for new ones and add them.
95
102
  let new_child_generators = this.child_generators.filter(ele => !self.child_generators.includes(ele))
96
103
  for(let generator of new_child_generators) {
@@ -130,6 +137,7 @@ class Query {
130
137
  for(let result of results){
131
138
  this.vitamins._update_data(reference, result._id, result, this);
132
139
  }
140
+ if(results.length > 0){ this.last_result = results[results.length - 1]; }
133
141
  }
134
142
  } catch(err){
135
143
  return Promise.reject(err);
@@ -166,6 +174,19 @@ class Query {
166
174
  return true;
167
175
  }
168
176
 
177
+ clone() {
178
+ return new Query(this.vitamins, this.reference, this.query_parameters.structuredClone(), this.child_generators);
179
+ }
180
+
181
+ async next_page() {
182
+ if(this.operation !== 'query'){ throw new Error(`can only paginate queries`); }
183
+ if(!this.last_result){ throw new Error(`tried to paginate before the last results were loaded.`); }
184
+ let next_query = this.clone();
185
+ if(!next_query.query_parameters){ next_query.query_parameters = {}; }
186
+ next_query.query_parameters.cursor = this.last_result._id;
187
+ return await next_query.run();
188
+ }
189
+
169
190
  static find_query(queries: Query[], target: Query){
170
191
  for(let query of queries){
171
192
  if(query.equals(target)) { return query; }
@@ -243,6 +264,11 @@ export class Vitamins {
243
264
  return generated_query;
244
265
  }
245
266
 
267
+ unlisten_query(query: Query) {
268
+ query.parents.delete('root');
269
+ this._cleanup([query], []);
270
+ }
271
+
246
272
  add_document_from_external<Document extends generated_document_interface<result>>(collection: Document, data: result) {
247
273
  if(!this.queries_by_collection.has(collection.collection_id)){ this.queries_by_collection.set(collection.collection_id, new Set()); }
248
274
  let generated_query = new Query(this, collection, undefined);
@@ -410,6 +436,7 @@ export class Vitamins {
410
436
  while(check_queries_queue.length > 0){
411
437
  let query = check_queries_queue.pop();
412
438
  if(query.parents.size > 0){ continue; }
439
+ this._debug(`deleting parentless query ${query.id}`);
413
440
 
414
441
  for(let child_id of query.children){
415
442
  let child = this.documents.get(child_id);
@@ -424,6 +451,7 @@ export class Vitamins {
424
451
  while(check_documents_queue.length > 0){
425
452
  let document = check_documents_queue.pop();
426
453
  if(document.parents.size > 0){ continue; }
454
+ this._debug(`deleting parentless document ${document.id}`);
427
455
 
428
456
  for(let child_id of document.children){
429
457
  let child = this.all_queries.get(child_id);
@@ -444,6 +472,4 @@ export class Vitamins {
444
472
  }
445
473
  }
446
474
  }
447
-
448
- // TOOD: I need a method that updates/deletes the document from an external source, so that I can reimplement the Synchronizer.
449
475
  }
@@ -516,4 +516,80 @@ describe('Vitamins Basics', function () {
516
516
  ).run();
517
517
  }, 'Error: arbitrary error');
518
518
  });
519
+
520
+ it(`should handle an unlisten`, async function () {
521
+ let institution_1 = gen_institution('test institution 1')
522
+ let client_1 = gen_client(institution_1, 'test client 1')
523
+ let project_1 = gen_project(institution_1, client_1, 'test project 1')
524
+ let institution_database = database(institution_1);
525
+ let client_database = database(client_1);
526
+ let project_database = database(project_1);
527
+ let {
528
+ vue,
529
+ api
530
+ } = get_setup(institution_database, client_database, project_database);
531
+
532
+ let vitamins = new Vitamins(vue);
533
+ let query = await vitamins.query(api.collection('institution'), {},
534
+ (result) => vitamins.query(api.collection('institution')?.document('*').collection('client'), {institution_id: result._id },
535
+ (result) => vitamins.query(api.collection('institution')?.document('*').collection('project'), {client_id: result._id })
536
+ ),
537
+ ).run()
538
+ await sleep(20);
539
+
540
+ let test_against_phase_1 = gen_vue();
541
+ test_against_phase_1.institutions.set(institution_1._id, structuredClone(institution_1));
542
+ test_against_phase_1.clients.set(client_1._id, structuredClone(client_1));
543
+ test_against_phase_1.projects.set(project_1._id, structuredClone(project_1));
544
+
545
+ assert.deepEqual(vue, test_against_phase_1)
546
+
547
+ vitamins.unlisten_query(query);
548
+ await sleep(20);
549
+
550
+ let test_against_phase_2 = gen_vue();
551
+
552
+ assert.deepEqual(vue, test_against_phase_2)
553
+ });
554
+
555
+ it(`should handle an unlisten where two child queries point at the same document`, async function () {
556
+ let institution_1 = gen_institution('test institution 1')
557
+ let institution_2 = gen_institution('test institution 2')
558
+ let client_1 = gen_client(institution_1, 'test client 1')
559
+ let institution_database = database(institution_1, institution_2);
560
+ let client_database = database(client_1);
561
+ let {
562
+ vue,
563
+ api
564
+ } = get_setup(institution_database, client_database);
565
+
566
+ let vitamins = new Vitamins(vue);
567
+ vitamins.debug_on = true;
568
+ let query_1 = await vitamins.document(api.collection('institution').document(institution_1._id),
569
+ // both of these queries need to point at a specific institution
570
+ (institution) => vitamins.query(api.collection('institution')?.document('*').collection('client'), {institution_id: institution_1._id }),
571
+ ).run()
572
+
573
+ let query_2 = await vitamins.document(api.collection('institution').document(institution_2._id),
574
+ // both of these queries need to point at a specific institution
575
+ (institution) => vitamins.query(api.collection('institution')?.document('*').collection('client'), {institution_id: institution_1._id }),
576
+ ).run()
577
+ await sleep(20);
578
+
579
+ let test_against_phase_1 = gen_vue();
580
+ test_against_phase_1.institutions.set(institution_1._id, structuredClone(institution_1));
581
+ test_against_phase_1.institutions.set(institution_2._id, structuredClone(institution_2));
582
+ test_against_phase_1.clients.set(client_1._id, structuredClone(client_1));
583
+
584
+ assert.deepEqual(vue, test_against_phase_1)
585
+
586
+ vitamins.unlisten_query(query_1);
587
+ await sleep(20);
588
+
589
+ let test_against_phase_2 = gen_vue();
590
+ test_against_phase_2.institutions.set(institution_2._id, structuredClone(institution_2));
591
+ test_against_phase_2.clients.set(client_1._id, structuredClone(client_1));
592
+
593
+ assert.deepEqual(vue, test_against_phase_2)
594
+ });
519
595
  });