@docstack/client 0.0.1 → 0.0.3

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 (60) hide show
  1. package/lib/core/attribute.d.ts +4 -4
  2. package/lib/core/class.d.ts +13 -12
  3. package/lib/core/crypto-engine/index.d.ts +5 -5
  4. package/lib/core/query-engine/executor.d.ts +1 -1
  5. package/lib/core/query-engine/index.d.ts +3 -3
  6. package/lib/core/stack.d.ts +6 -6
  7. package/lib/index.d.ts +1 -1
  8. package/lib/index.js +7530 -7536
  9. package/lib/index.js.map +1 -1
  10. package/lib/index.umd.js +8256 -0
  11. package/lib/utils/index.d.ts +1 -1
  12. package/package.json +11 -4
  13. package/lib/core/attribute.js +0 -296
  14. package/lib/core/attribute.js.map +0 -1
  15. package/lib/core/class.js +0 -540
  16. package/lib/core/class.js.map +0 -1
  17. package/lib/core/crypto-engine/index.js +0 -130
  18. package/lib/core/crypto-engine/index.js.map +0 -1
  19. package/lib/core/crypto-engine/utils.js +0 -76
  20. package/lib/core/crypto-engine/utils.js.map +0 -1
  21. package/lib/core/datamodel/index.js +0 -1186
  22. package/lib/core/datamodel/index.js.map +0 -1
  23. package/lib/core/domain.js +0 -285
  24. package/lib/core/domain.js.map +0 -1
  25. package/lib/core/index.js +0 -379
  26. package/lib/core/index.js.map +0 -1
  27. package/lib/core/job-engine/index.js +0 -116
  28. package/lib/core/job-engine/index.js.map +0 -1
  29. package/lib/core/policy-engine/index.js +0 -150
  30. package/lib/core/policy-engine/index.js.map +0 -1
  31. package/lib/core/query-engine/accumulators.js +0 -258
  32. package/lib/core/query-engine/accumulators.js.map +0 -1
  33. package/lib/core/query-engine/evaluator.js +0 -179
  34. package/lib/core/query-engine/evaluator.js.map +0 -1
  35. package/lib/core/query-engine/executor.js +0 -405
  36. package/lib/core/query-engine/executor.js.map +0 -1
  37. package/lib/core/query-engine/index.js +0 -4
  38. package/lib/core/query-engine/index.js.map +0 -1
  39. package/lib/core/query-engine/parser.js +0 -515
  40. package/lib/core/query-engine/parser.js.map +0 -1
  41. package/lib/core/query-engine/planner.js +0 -330
  42. package/lib/core/query-engine/planner.js.map +0 -1
  43. package/lib/core/stack.js +0 -1507
  44. package/lib/core/stack.js.map +0 -1
  45. package/lib/core/test-utils/docstack.js +0 -222
  46. package/lib/core/test-utils/docstack.js.map +0 -1
  47. package/lib/core/trigger/index.js +0 -81
  48. package/lib/core/trigger/index.js.map +0 -1
  49. package/lib/plugins/pouchdb.js +0 -403
  50. package/lib/plugins/pouchdb.js.map +0 -1
  51. package/lib/utils/crypto/index.js +0 -34
  52. package/lib/utils/crypto/index.js.map +0 -1
  53. package/lib/utils/index.js +0 -58
  54. package/lib/utils/index.js.map +0 -1
  55. package/lib/utils/logger/index.js +0 -20
  56. package/lib/utils/logger/index.js.map +0 -1
  57. package/lib/utils/logger/transport.js +0 -28
  58. package/lib/utils/logger/transport.js.map +0 -1
  59. package/lib/workers/dataModel.js +0 -48
  60. package/lib/workers/dataModel.js.map +0 -1
package/lib/core/class.js DELETED
@@ -1,540 +0,0 @@
1
- var _a;
2
- import { Class as Class_ } from "@docstack/shared";
3
- import createLogger from "../utils/logger/index.js";
4
- import Attribute from "./attribute.js";
5
- import { Trigger } from "./trigger/index.js";
6
- import { z } from "zod";
7
- import clientLogger from "../utils/logger/index.js";
8
- class Class extends Class_ {
9
- constructor() {
10
- super();
11
- this.attributes = {};
12
- this.schema = {};
13
- this.schemaZOD = z.object({});
14
- this.state = "idle";
15
- this.triggers = [];
16
- // TODO: Test
17
- /*
18
- inheritAttributes( parentClass: Class ) {
19
- let parentAttributes = parentClass.getAttributes();
20
- for ( let attribute of parentAttributes ) {
21
- this.addAttribute(attribute);
22
- }
23
- } */
24
- this.build = () => {
25
- return new Promise(async (resolve, reject) => {
26
- let stack = this.getStack();
27
- if (stack) {
28
- // if (parentClassName) this.setParentClass(parentClassName);
29
- let classModel = await stack.addClass(this);
30
- // Hydrate model
31
- if (classModel) {
32
- this.setModel(classModel);
33
- _a.logger.info("build - classModel", { classModel: classModel });
34
- this.setId(classModel._id);
35
- resolve(this);
36
- }
37
- else {
38
- reject("unable to get classModel. Check logs");
39
- }
40
- }
41
- else {
42
- reject("Missing stack assignment");
43
- }
44
- });
45
- };
46
- this.init = (stack, id, name, type, description, schema = {}
47
- // parentClass: Class | null
48
- ) => {
49
- // this.parentClass = parentClass;
50
- if (stack) {
51
- this.stack = stack;
52
- }
53
- this.name = name;
54
- this.id = id;
55
- this.description = description;
56
- this.type = type;
57
- // this.attributes = [];
58
- // this.stack = null;
59
- // this.id = null;
60
- // if (schema) {
61
- // this.schema = schema;
62
- // }
63
- this.setModel({
64
- "~class": type, _id: id, active: true,
65
- name, description,
66
- schema, triggers: [],
67
- });
68
- this.logger = clientLogger(stack).child({ module: "class", className: this.name });
69
- // TODO: Waiting for test of method
70
- // if (parentClass) this.inheritAttributes(parentClass);
71
- };
72
- this.uniqueCheck = async (doc) => {
73
- const fnLogger = this.logger.child({ method: "uniqueCheck", args: { doc } });
74
- const duplicate = await this.getByPrimaryKeys(doc);
75
- if (duplicate == null || duplicate._id == doc._id) {
76
- fnLogger.info("No duplicate found for doc");
77
- return true;
78
- }
79
- else {
80
- fnLogger.info("Duplicate found for doc", { duplicate });
81
- return false;
82
- }
83
- };
84
- this.bulkUniqueCheck = async (pKs) => {
85
- var _b;
86
- const fnLogger = this.logger.child({ method: "bulkUniqueCheck", args: { pKs } });
87
- const ddocId = await ((_b = this.stack) === null || _b === void 0 ? void 0 : _b.addDesignDocumentPKs(this.name, pKs, true));
88
- fnLogger.info(`Created temporary design document '${ddocId}'`);
89
- if (this.stack && ddocId) {
90
- try {
91
- const result = await this.stack.db.query(`${ddocId}/by_pKeys`, {
92
- group: true,
93
- reduce: '_count'
94
- });
95
- const hasDuplicates = result.rows.some(row => row.value > 1);
96
- if (hasDuplicates) {
97
- // 3a. Rollback: new schema is invalid
98
- fnLogger.error('Schema change invalid: new duplicates found.');
99
- const finalTempDoc = await this.stack.db.get(ddocId);
100
- await this.stack.db.remove(finalTempDoc);
101
- return false; // Indicate failure
102
- }
103
- else {
104
- // 3b. Execute: new schema is valid. Replace the live document.
105
- fnLogger.info('Bulk unique check completed: no new duplicates found');
106
- const finalTempDoc = await this.stack.db.get(ddocId);
107
- // Clean up the temporary document
108
- await this.stack.db.remove(finalTempDoc);
109
- return true; // Indicate success
110
- }
111
- }
112
- catch (err) {
113
- console.error('Error during schema validation:', err);
114
- // Ensure the temporary document is removed on error
115
- try {
116
- const finalTempDoc = await this.stack.db.get(ddocId);
117
- await this.stack.db.remove(finalTempDoc);
118
- }
119
- catch (e) { /* ignore */ }
120
- return false;
121
- }
122
- }
123
- else {
124
- fnLogger.error(`Was unable to create temporary design document to group by`);
125
- return false;
126
- }
127
- };
128
- this.validate = async (data) => {
129
- const fnLogger = this.logger.child({ method: "validate" });
130
- const result = await this.schemaZOD.safeParseAsync(data);
131
- fnLogger.debug("Got result", { result });
132
- if (result.success) {
133
- return true;
134
- }
135
- else {
136
- return false;
137
- }
138
- };
139
- // TODO Turn into method (after factory method instantiation refactory is done)
140
- this.setId = (id) => {
141
- this.id = id;
142
- };
143
- this.getName = () => {
144
- return this.name;
145
- };
146
- this.getStack = () => {
147
- return this.stack;
148
- };
149
- this.getDescription = () => {
150
- return this.description;
151
- };
152
- this.getType = () => {
153
- return this.type;
154
- };
155
- this.getId = () => {
156
- return this.id;
157
- };
158
- this.buildSchema = () => {
159
- let schema = {};
160
- Object.entries(this.attributes).forEach(t => {
161
- schema[t[0]] = t[1].model;
162
- });
163
- return schema;
164
- };
165
- this.getModel = () => {
166
- let triggers = [];
167
- for (const trigger of this.triggers) {
168
- triggers.push(trigger.model);
169
- }
170
- let model = {
171
- _id: this.id,
172
- name: this.getName(),
173
- description: this.getDescription(),
174
- "~class": this.getType(),
175
- schema: this.buildSchema(),
176
- triggers: triggers,
177
- active: true,
178
- _rev: this.model ? this.model._rev : "", // [TODO] Error prone
179
- "~createTimestamp": this.model ? this.model["~createTimestamp"] : undefined,
180
- };
181
- return model;
182
- };
183
- // [TODO] Change into buildFromModel
184
- /**
185
- * It hydrates attributes and triggers from given model
186
- * @param model
187
- */
188
- this.setModel = (model) => {
189
- _a.logger.info("setModel - got incoming model", { model: model });
190
- // Retreive current class model
191
- let currentModel = this.getModel();
192
- // Set model arg to the overwrite of the current model with the given one
193
- model = Object.assign(currentModel, model);
194
- if (model.schema) {
195
- // model.schema = {...this.model.schema, ...model.schema};
196
- this.attributes = {};
197
- this.schemaZOD = z.object({});
198
- for (const [key, attrModel] of Object.entries(model.schema)) {
199
- let attribute = new Attribute(this, attrModel.name, attrModel.type, attrModel.description, attrModel.config);
200
- this.attributes[attrModel.name] = attribute;
201
- this.schemaZOD = this.schemaZOD.extend({
202
- [attrModel.name]: attribute.field
203
- });
204
- }
205
- }
206
- if (model.triggers) {
207
- this.triggers = [];
208
- for (const trigger of model.triggers) {
209
- let trigger_ = new Trigger(trigger, this);
210
- this.triggers.push(trigger_);
211
- }
212
- }
213
- this.name = model.name;
214
- this.description = model.description;
215
- this.type = model["~class"];
216
- this.model = model;
217
- _a.logger.info("setModel - model after processing", { model: model });
218
- };
219
- this.getPrimaryKeys = () => {
220
- return Object.values(this.attributes).filter(attr => attr.isPrimaryKey())
221
- .map(attr => attr.getName());
222
- };
223
- this.getAttributes = (...names) => {
224
- let attributes = {};
225
- for (const attribute of Object.values(this.attributes)) {
226
- if (names.length > 0) {
227
- // filter with given names
228
- for (let name of names) {
229
- // match?
230
- if (name != null && attribute.getName() == name) {
231
- attributes[attribute.name] = attribute;
232
- }
233
- }
234
- }
235
- else {
236
- // no filter provided add all
237
- attributes[attribute.name] = attribute;
238
- }
239
- }
240
- return attributes;
241
- };
242
- this.hasAllAttributes = (...names) => {
243
- let result = false;
244
- let attributes = this.getAttributes(...names);
245
- for (let attribute of Object.values(attributes)) {
246
- result = names.includes(attribute.getName());
247
- if (!result)
248
- break;
249
- }
250
- return result;
251
- };
252
- this.hasAnyAttributes = (...names) => {
253
- let result = false;
254
- let attributes = this.getAttributes(...names);
255
- for (let attribute of Object.values(attributes)) {
256
- result = names.includes(attribute.getName());
257
- if (result)
258
- break;
259
- }
260
- return result;
261
- };
262
- this.getEncryptedAttributes = () => {
263
- return Object.values(this.attributes).filter((attribute) => {
264
- const config = attribute.model.config;
265
- return (config === null || config === void 0 ? void 0 : config.encrypted) === true && (config === null || config === void 0 ? void 0 : config.primaryKey) !== true;
266
- });
267
- };
268
- // interface of hasAnyAttributes
269
- this.hasAttribute = (name) => {
270
- return this.hasAnyAttributes(name);
271
- };
272
- this.addAttribute = async (attribute) => {
273
- var _b;
274
- const fnLogger = this.logger.child({ method: "addAttribute", args: { attribute: attribute.name } });
275
- const attribute_ = attribute instanceof Attribute
276
- ? attribute : new Attribute(this, attribute.name, attribute.type, attribute.description, attribute.config);
277
- try {
278
- let name = attribute_.getName();
279
- // console.log("Adding attribute", {className: this.name, attribute: name})
280
- if (!this.hasAttribute(name)) {
281
- fnLogger.info("Adding attribute", { name: name, type: attribute_.getModel() });
282
- this.attributes[name] = attribute_;
283
- let attributeModel = attribute_.getModel();
284
- fnLogger.info("Adding attribute to schema", { attributeModel: attributeModel });
285
- const currentSchema = (_b = this.model.schema) !== null && _b !== void 0 ? _b : {};
286
- this.model.schema = Object.assign(Object.assign({}, currentSchema), { [name]: attributeModel });
287
- this.schemaZOD = this.schemaZOD.extend({
288
- [name]: attribute_.field
289
- });
290
- // TODO:
291
- // this.schema[name] = attributeModel; // sometimes getting schema undefined
292
- // update class on db
293
- fnLogger.info("Checking for requirements before updating class on db", { stack: (this.stack != null), id: this.id });
294
- if (this.stack && this.id) {
295
- // debugger;
296
- fnLogger.info("Updating class on db");
297
- let res = await this.stack.updateClass(this);
298
- return this;
299
- // TODO: Check if this class has subclasses
300
- }
301
- else {
302
- fnLogger.error("Class not updated on db because of missing stack or id");
303
- return this;
304
- }
305
- }
306
- else {
307
- fnLogger.error("Attribute with name " + name + " already exists within this Class");
308
- return this;
309
- }
310
- }
311
- catch (e) {
312
- fnLogger.error("Falied adding attribute because: ", e);
313
- return this;
314
- }
315
- };
316
- this.modifyAttribute = async (name, attribute) => {
317
- const fnLogger = this.logger.child({ method: "modifyAttribute", args: { name } });
318
- const originSchema = Object.assign({}, this.model.schema[name]), originAttr = this.attributes[name];
319
- const attribute_ = attribute instanceof Attribute
320
- ? attribute : new Attribute(this, attribute.name, attribute.type, attribute.description, attribute.config);
321
- try {
322
- fnLogger.info(`Attempting to change attribute definition.`);
323
- delete this.model.schema[name];
324
- delete this.attributes[name];
325
- this.schemaZOD = this.schemaZOD.omit({ [name]: true });
326
- return this.addAttribute(attribute_);
327
- }
328
- catch (e) {
329
- // Revert
330
- this.model.schema[name] = originSchema;
331
- this.attributes[name] = originAttr;
332
- fnLogger.error(`Failed at removing attribute from class.'`);
333
- }
334
- return this;
335
- };
336
- this.removeAttribute = async (name) => {
337
- const fnLogger = this.logger.child({ method: "removeAttribute", args: { name } });
338
- const originSchema = Object.assign({}, this.model.schema[name]), originAttr = this.attributes[name];
339
- try {
340
- fnLogger.info(`Attempting to remove attribute from class.`);
341
- delete this.model.schema[name];
342
- delete this.attributes[name];
343
- this.schemaZOD = this.schemaZOD.omit({ [name]: true });
344
- if (this.stack) {
345
- this.stack.updateClass(this);
346
- }
347
- else
348
- throw new Error("Missing stack, cannot perform updates.");
349
- }
350
- catch (e) {
351
- // Revert
352
- this.model.schema[name] = originSchema;
353
- this.attributes[name] = originAttr;
354
- fnLogger.error(`Failed at removing attribute from class.'`);
355
- }
356
- return this;
357
- };
358
- // TODO: modify to pass also the current class model
359
- // consider first fetching/updating the local class model
360
- this.addCard = async (params) => {
361
- const fnLogger = this.logger.child({ method: "addCard", args: { params } });
362
- if (!this.stack) {
363
- fnLogger.error("Stack is not defined");
364
- return null;
365
- }
366
- return await this.stack.createDoc(null, this.getName(), this, params);
367
- };
368
- this.addCards = async (paramsArray) => {
369
- const fnLogger = this.logger.child({ method: "addCards", args: { paramsArray } });
370
- if (!this.stack) {
371
- fnLogger.error("Stack is not defined");
372
- return [];
373
- }
374
- let addedCards = [];
375
- addedCards = await this.stack.createDocs(paramsArray.map(params => ({ docId: null, params })), this.getName(), this);
376
- return addedCards;
377
- };
378
- this.getByPrimaryKeys = async (params) => {
379
- const fnLogger = this.logger.child({ method: "getByPrimaryKeys" });
380
- // attempt to retrieve card by primary key
381
- let filter = {};
382
- let primaryKeys = this.getPrimaryKeys();
383
- fnLogger.info("Got primary keys", { primaryKeys });
384
- if (primaryKeys.length) {
385
- // executes a reducer function on each element of the primaryKeys array
386
- // that sets each primary key prop to the corresponding param value
387
- primaryKeys.reduce((accumulator, currentValue) => accumulator[currentValue] = params[currentValue], filter);
388
- fnLogger.info("Defined filter", { filter });
389
- let cards = await this.getCards(filter, undefined, 0, 1);
390
- if (cards.length > 0) {
391
- return cards[0];
392
- }
393
- else {
394
- fnLogger.info("Did not find any documents with given primary key", { filter });
395
- return null;
396
- }
397
- }
398
- else {
399
- fnLogger.info("Class has no field specified as primary key");
400
- return null;
401
- }
402
- };
403
- this.addOrUpdateCard = async (params, cardId) => {
404
- const fnLogger = this.logger.child({ method: "addOrUpdateCard", args: { params, cardId } });
405
- return new Promise(async (resolve, reject) => {
406
- if (cardId) {
407
- fnLogger.info("Provided document's id, performing an update");
408
- const res = await this.updateCard(cardId, params);
409
- resolve(res);
410
- }
411
- else {
412
- fnLogger.info("No document id provided, checking for PKs");
413
- const card = await this.getByPrimaryKeys(params);
414
- if (card == null) {
415
- const res = await this.addCard(params);
416
- resolve(res);
417
- }
418
- else {
419
- fnLogger.error("Duplicate card by keys");
420
- reject("Duplicate card by keys");
421
- }
422
- }
423
- });
424
- };
425
- this.updateCard = async (cardId, params) => {
426
- return new Promise(async (resolve, reject) => {
427
- if (this.stack) {
428
- const res = await this.stack.createDoc(cardId, this.getName(), this, params);
429
- resolve(res);
430
- }
431
- else {
432
- _a.logger.info("no stack defined");
433
- resolve(null);
434
- }
435
- });
436
- };
437
- this.deleteCard = async (cardId) => {
438
- const fnLogger = this.logger.child({ method: "deleteCard", args: { cardId } });
439
- if (this.stack) {
440
- const res = await this.stack.deleteDocument(cardId);
441
- return res;
442
- }
443
- else {
444
- fnLogger.error("Stack is not defined");
445
- return false;
446
- }
447
- };
448
- this.getCards = async (selector, fields, skip, limit) => {
449
- const _selector = Object.assign(Object.assign({}, (selector || {})), { "~class": { $eq: this.name } });
450
- this.logger.info("getCards - selector", { selector: _selector, fields, skip, limit });
451
- let docs = (await this.stack.findDocuments(_selector, fields, skip, limit)).docs;
452
- return docs;
453
- };
454
- this.addTrigger = async (name, model) => {
455
- const fnLogger = this.logger.child({ method: "addTrigger" });
456
- try {
457
- const trigger = new Trigger(model, this);
458
- this.triggers.push(trigger);
459
- if (this.stack) {
460
- this.setModel(); // [TODO] Change to buildFromModel();
461
- let res = await this.stack.updateClass(this);
462
- }
463
- else {
464
- throw new Error(`Stack is not defined. Can't update class`);
465
- }
466
- }
467
- catch (e) {
468
- fnLogger.error(e);
469
- }
470
- return this;
471
- };
472
- this.removeTrigger = async (name) => {
473
- this.triggers = this.triggers.filter(t => t.name != name);
474
- return this;
475
- };
476
- // Private constructor to prevent direct instantiation
477
- /* Populated on async build */
478
- // this.id = null;
479
- }
480
- }
481
- _a = Class;
482
- Class.logger = createLogger().child({ module: "class" });
483
- Class.get = (stack, id, name, type, description, schema = {}) => {
484
- const class_ = new _a();
485
- _a.logger.info("Received schema", { schema });
486
- class_.init(stack, id, name, type, description, schema);
487
- // Add listener for new documents of this class type
488
- class_.stack.onClassDoc(name)
489
- .on("change", (change) => {
490
- const evt = new CustomEvent("doc", {
491
- detail: change
492
- });
493
- class_.dispatchEvent(evt);
494
- });
495
- return class_;
496
- };
497
- Class.create = async (stack, name, type, description, schema = {}) => {
498
- const class_ = _a.get(stack, name, name, type, description, schema);
499
- await class_.build();
500
- return class_;
501
- };
502
- Class.buildFromModel = async (stack, classModel) => {
503
- _a.logger.info("buildFromModel - Instantiate from model", { classModel });
504
- // let parentClassModel = (classModel.parentClass ? await stack.getClassModel(classModel.parentClass) : null);
505
- // let parentClass = (parentClassModel ? await Class.buildFromModel(stack, parentClassModel) : null);
506
- // [TODO] Redundancy: Class.create retrieve model from db and builds it (therefore also setting the model)
507
- if (classModel._rev) {
508
- let classObj = _a.get(stack, classModel._id, classModel.name, classModel["~class"], classModel.description, classModel.schema);
509
- classObj.setModel(classModel);
510
- return classObj;
511
- }
512
- else {
513
- let classObj = await _a.create(stack, classModel.name, classModel["~class"], classModel["~class"], classModel.schema);
514
- classObj.setModel(classModel);
515
- return classObj;
516
- }
517
- };
518
- Class.fetchById = async (stack, classId) => {
519
- try {
520
- let classModel = await stack.db.get(classId);
521
- const classObj = await _a.buildFromModel(stack, classModel);
522
- return classObj;
523
- }
524
- catch (error) {
525
- throw new Error(`Class not found: ${classId}`);
526
- }
527
- };
528
- Class.fetch = async (stack, className) => {
529
- let classModel = await stack.getClassModel(className);
530
- if (classModel) {
531
- // console.log("Fetched class model", {classModel});
532
- return _a.buildFromModel(stack, classModel);
533
- }
534
- else {
535
- // throw new Error("Class not found: "+className);
536
- return null;
537
- }
538
- };
539
- export default Class;
540
- //# sourceMappingURL=class.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/core/class.ts"],"names":[],"mappings":"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"}