@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
@@ -1,4 +1,4 @@
1
1
  import { Document } from "@docstack/shared";
2
- import Class from "../core/class.js";
2
+ import Class from "../core/class";
3
3
  import * as jsondiff from 'jsondiffpatch';
4
4
  export declare const applySchemaDelta: (doc: Document, schemaDelta: jsondiff.AddedDelta | jsondiff.ModifiedDelta | jsondiff.DeletedDelta | jsondiff.ObjectDelta | jsondiff.ArrayDelta | jsondiff.MovedDelta | jsondiff.TextDiffDelta, classObj: Class) => Promise<Document>;
package/package.json CHANGED
@@ -1,8 +1,13 @@
1
1
  {
2
2
  "name": "@docstack/client",
3
3
  "description": "One does not simply stack documents.",
4
- "version": "0.0.1",
4
+ "version": "0.0.3",
5
5
  "main": "lib/index.js",
6
+ "module": "lib/index.js",
7
+ "types": "lib/index.d.ts",
8
+ "exports": {
9
+ ".": "./lib/index.js"
10
+ },
6
11
  "src": "src/index.ts",
7
12
  "publishConfig": {
8
13
  "access": "public"
@@ -11,6 +16,8 @@
11
16
  "scripts": {
12
17
  "build:types": "npx tsc -build --force ./tsconfig.json",
13
18
  "build": "rollup --config ./rollup.config.js",
19
+ "build:dev": "webpack --node-env=development",
20
+ "build:prod": "webpack --node-env=production",
14
21
  "build:vendor": "rollup --config ./rollup.vendor.js",
15
22
  "lint": "eslint ./src --ext .ts,.tsx",
16
23
  "test": "playwright test"
@@ -30,8 +37,9 @@
30
37
  "bugs": {
31
38
  "url": "https://github.com/onyx-og/docstack/issues"
32
39
  },
33
- "homepage": "https://github.com/onyx-og/docstack#readme",
40
+ "homepage": "https://onyx.ac/docstack",
34
41
  "dependencies": {
42
+ "@docstack/shared": "^0.0.1",
35
43
  "jsondiffpatch": "^0.6.0",
36
44
  "pouchdb-browser": "^9.0.0",
37
45
  "pouchdb-find": "^9.0.0",
@@ -42,7 +50,6 @@
42
50
  "zod": "^3.24.1"
43
51
  },
44
52
  "devDependencies": {
45
- "@docstack/shared": "file:../shared",
46
53
  "@playwright/test": "^1.57.0",
47
54
  "@rollup/plugin-commonjs": "^25.0.0",
48
55
  "@rollup/plugin-json": "^6.1.0",
@@ -57,4 +64,4 @@
57
64
  "optionalDependencies": {
58
65
  "@rollup/rollup-win32-x64-msvc": "*"
59
66
  }
60
- }
67
+ }
@@ -1,296 +0,0 @@
1
- var _a;
2
- import z from "zod";
3
- import { Attribute as Attribute_, ATTRIBUTE_TYPES } from "@docstack/shared";
4
- class Attribute extends Attribute_ {
5
- constructor(classObj = null, name, type, description, config) {
6
- super(classObj, name, type, config);
7
- this.field = z.any();
8
- this.ensureReferenceConfigIsValid = async () => {
9
- if (this.model.type !== "reference") {
10
- return;
11
- }
12
- if (!this.class) {
13
- throw new Error(`Attribute '${this.name}' must belong to a class to validate reference configuration.`);
14
- }
15
- const stack = this.class.getStack();
16
- if (!stack) {
17
- throw new Error(`Class '${this.class.getName()}' is not attached to a stack.`);
18
- }
19
- const config = this.model.config;
20
- const domainName = config.domain;
21
- if (typeof domainName !== "string" || domainName.length === 0) {
22
- throw new Error(`Attribute '${this.name}' of type 'reference' must declare a domain.`);
23
- }
24
- if (config.isArray) {
25
- throw new Error(`Attribute '${this.name}' of type 'reference' cannot be an array.`);
26
- }
27
- const domain = await stack.getDomain(domainName);
28
- if (!domain) {
29
- throw new Error(`Domain '${domainName}' was not found for attribute '${this.name}'.`);
30
- }
31
- const classId = this.class.id;
32
- switch (domain.relation) {
33
- case "1:N":
34
- if (classId !== domain.targetClass.id) {
35
- throw new Error(`Given classId '${classId}' Reference attributes for domain '${domainName}' can only be added to class '${domain.targetClass}'.`);
36
- }
37
- break;
38
- case "N:1":
39
- if (classId !== domain.sourceClass.id) {
40
- throw new Error(`Given classId '${classId}' Reference attributes for domain '${domainName}' can only be added to class '${domain.sourceClass}'.`);
41
- }
42
- break;
43
- case "1:1":
44
- if (classId !== domain.sourceClass.id && classId !== domain.targetClass.id) {
45
- throw new Error(`Class '${classId}' is not part of domain '${domainName}'.`);
46
- }
47
- break;
48
- case "N:N":
49
- throw new Error(`Domain '${domainName}' does not support reference attributes.`);
50
- default:
51
- throw new Error(`Unsupported relation '${domain.relation}' for domain '${domainName}'.`);
52
- }
53
- };
54
- this.setField = () => {
55
- const { name, type, config } = this.model;
56
- let field;
57
- switch (type) {
58
- // ... existing cases for 'string', 'number', 'boolean', 'date' ...
59
- case 'string':
60
- field = z.string();
61
- if (config.maxLength !== undefined) {
62
- field = field.max(config.maxLength);
63
- }
64
- break;
65
- case 'integer':
66
- field = z.number();
67
- if (typeof config.min === 'number') {
68
- field = field.min(config.min);
69
- }
70
- if (typeof config.max === 'number') {
71
- field = field.max(config.max);
72
- }
73
- break;
74
- // case 'date':
75
- // field = z.date();
76
- // break;
77
- case 'decimal':
78
- field = z.number();
79
- // min and max validation
80
- if (typeof config.min === 'number') {
81
- field = field.min(config.min);
82
- }
83
- if (typeof config.max === 'number') {
84
- field = field.max(config.max);
85
- }
86
- // decimal precision validation (with refinement)
87
- if (typeof config.precision === 'number' && config.precision >= 0) {
88
- const isPrecise = (value) => {
89
- if (typeof value !== 'number')
90
- return true;
91
- const valueAsString = value.toString();
92
- const decimalPart = valueAsString.split('.')[1];
93
- const decimalPlaces = decimalPart ? decimalPart.length : 0;
94
- return decimalPlaces <= config.precision;
95
- };
96
- field = field.refine(isPrecise, `Number cannot have more than ${config.precision} decimals.`);
97
- }
98
- break;
99
- case 'boolean':
100
- field = z.boolean();
101
- break;
102
- case "object":
103
- field = z.object({});
104
- break;
105
- case 'enum':
106
- if (!config.values || !Array.isArray(config.values) || config.values.length === 0) {
107
- throw new Error(`Attribute '${name}' of type 'enum' must have a non-empty 'values' array in its config.`);
108
- }
109
- const enumValues = config.values.map(v => v.value);
110
- field = z.enum(enumValues);
111
- break;
112
- case 'foreign_key':
113
- if (!config.targetClass) {
114
- throw new Error(`Attribute '${name}' of type 'foreign_key' is missing a 'targetClass' in its config.`);
115
- }
116
- const foreignClass = config.targetClass;
117
- const baseSchema = z.string();
118
- field = baseSchema.refine(async (documentIdOrIds) => {
119
- var _b;
120
- const idsToValidate = Array.isArray(documentIdOrIds) ? documentIdOrIds : [documentIdOrIds];
121
- if (idsToValidate.length === 0) {
122
- return true;
123
- }
124
- try {
125
- if (this.class) {
126
- const stack = this.class.getStack();
127
- if (stack) {
128
- const promises = idsToValidate.map(id => stack.db.get(id));
129
- const fetchResult = await Promise.all(promises);
130
- return true;
131
- }
132
- else
133
- throw new Error("Missing stack connection");
134
- }
135
- else
136
- throw new Error("Missing class parentship");
137
- }
138
- catch (error) {
139
- if (error.status === 404) {
140
- console.error(`Foreign key validation failed: document not found in class '${foreignClass}'. ${(_b = this.class) === null || _b === void 0 ? void 0 : _b.getName()}`, { error });
141
- return false;
142
- }
143
- throw error;
144
- }
145
- }, {
146
- message: `One or more documents not found in class '${foreignClass}'.`,
147
- });
148
- break;
149
- case 'reference':
150
- field = z.string().min(1);
151
- break;
152
- default:
153
- throw new Error(`Unsupported schema type: '${type}' for field '${name}'`);
154
- }
155
- // These rules are applied regardless of the type, and in the correct order
156
- if (config.defaultValue) {
157
- field = field.default(config.defaultValue);
158
- }
159
- if (config.mandatory !== true) {
160
- field = field.optional();
161
- }
162
- if (config.isArray === true) {
163
- field = z.array(field);
164
- }
165
- this.field = field;
166
- };
167
- this.isPrimaryKey = () => {
168
- let model = this.getModel();
169
- return !!model.config.primaryKey;
170
- };
171
- this.isMandatory = () => {
172
- return !!this.model.config.mandatory;
173
- };
174
- this.getModel = () => {
175
- return this.model;
176
- };
177
- this.getClass = () => {
178
- if (this.class)
179
- return this.class;
180
- else
181
- throw Error("Missing class configuration for this attribute");
182
- };
183
- this.validate = async (data) => {
184
- return this.field.safeParseAsync(data);
185
- };
186
- this.setModel = (model) => {
187
- let currentModel = this.getModel();
188
- model = Object.assign(currentModel || {}, model);
189
- this.model = model;
190
- this.defaultValue = model.config.defaultValue;
191
- };
192
- // TODO: Better define config
193
- this.getType = (type) => {
194
- if (this.checkTypeValidity(type)) {
195
- return type;
196
- }
197
- else
198
- throw Error("Invalid attribute type: " + type);
199
- // return this?
200
- };
201
- this.getEmpty = () => {
202
- // Let the field handle the default value, if present
203
- // if not, it's undefined
204
- const partialDoc = {
205
- [this.name]: this.field.parse(undefined) || null
206
- };
207
- return partialDoc;
208
- };
209
- // getType()
210
- this.getName = () => {
211
- return this.name;
212
- };
213
- this.checkTypeValidity = (type) => {
214
- let validity = false;
215
- if (ATTRIBUTE_TYPES.includes(type)) {
216
- validity = true;
217
- }
218
- return validity;
219
- };
220
- // TODO: change to imported const default configs for types
221
- // as of now it accepts only string
222
- // TODO: since config depends on attribute's type,
223
- // find a way to check if given configs are correct
224
- // find a way to add default configs base on type
225
- this.getTypeConf = (type, config) => {
226
- switch (type) {
227
- // TODO: add missing cases and change values to imported const
228
- case "decimal":
229
- config = Object.assign({ max: null, min: null, precision: null, isArray: false }, config);
230
- break;
231
- case "integer":
232
- config = Object.assign({ max: null, min: null, isArray: false }, config);
233
- break;
234
- case "string":
235
- config = Object.assign({ isArray: false }, config);
236
- break;
237
- case "object":
238
- config = Object.assign({ isArray: false }, config);
239
- break;
240
- case "date":
241
- config = Object.assign({ format: "iso", max: null, min: null, isArray: false }, config);
242
- break;
243
- case "boolean":
244
- config = Object.assign({ defaultValue: false, isArray: false }, config);
245
- break;
246
- case "foreign_key":
247
- config = Object.assign({ targetClass: null, isArray: false }, config);
248
- break;
249
- case "enum":
250
- config = Object.assign({ values: [], isArray: false }, config);
251
- break;
252
- case "reference":
253
- config = Object.assign({ isArray: false }, config);
254
- break;
255
- default:
256
- throw new Error("Unexpected type: " + type);
257
- // return "^[a-zA-Z0-9_\\s]".concat("{0,"+config.maxLength+"}$");
258
- }
259
- return config;
260
- };
261
- this.name = name;
262
- this.description = description;
263
- this.setModel({
264
- name: this.name,
265
- description: this.description,
266
- type: this.getType(type),
267
- config: this.getTypeConf(type, config) || {},
268
- });
269
- this.setField();
270
- // if it's given a class
271
- // if ( classObj ) {
272
- // attempt to add attribute
273
- this.class = classObj;
274
- // }
275
- }
276
- static async create(classObj, name, type, description, config) {
277
- const attribute = new _a(classObj, name, type, description, config);
278
- await attribute.ensureReferenceConfigIsValid();
279
- await _a.build(attribute);
280
- return attribute;
281
- }
282
- }
283
- _a = Attribute;
284
- Attribute.build = async (attributeObj) => {
285
- let classObj = attributeObj.getClass();
286
- let stack = classObj.getStack();
287
- if (stack) {
288
- await classObj.addAttribute(attributeObj);
289
- return attributeObj;
290
- }
291
- else {
292
- throw new Error("Missing db configuration");
293
- }
294
- };
295
- export default Attribute;
296
- //# sourceMappingURL=attribute.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"attribute.js","sourceRoot":"","sources":["../../src/core/attribute.ts"],"names":[],"mappings":"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"}