@lilaquadrat/studio 9.6.2 → 9.7.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 (50) hide show
  1. package/lib/cjs/models.d.ts +2 -1
  2. package/lib/cjs/models.js +3 -1
  3. package/lib/cjs/models.js.map +1 -1
  4. package/lib/cjs/services.d.ts +2 -1
  5. package/lib/cjs/services.js +3 -1
  6. package/lib/cjs/services.js.map +1 -1
  7. package/lib/cjs/src/Immutable.class.d.ts +5 -3
  8. package/lib/cjs/src/Immutable.class.js +7 -2
  9. package/lib/cjs/src/Immutable.class.js.map +1 -1
  10. package/lib/cjs/src/aggegations/genericData.aggregation.d.ts +25 -10
  11. package/lib/cjs/src/aggegations/genericData.aggregation.js +58 -160
  12. package/lib/cjs/src/aggegations/genericData.aggregation.js.map +1 -1
  13. package/lib/cjs/src/classes/modelv2.class.d.ts +5 -0
  14. package/lib/cjs/src/classes/modelv2.class.js +5 -4
  15. package/lib/cjs/src/classes/modelv2.class.js.map +1 -1
  16. package/lib/cjs/src/helpers/findObjetcsWithKeys.d.ts +13 -0
  17. package/lib/cjs/src/helpers/findObjetcsWithKeys.js +37 -0
  18. package/lib/cjs/src/helpers/findObjetcsWithKeys.js.map +1 -0
  19. package/lib/cjs/src/models/company.model.js +1 -0
  20. package/lib/cjs/src/models/company.model.js.map +1 -1
  21. package/lib/cjs/src/models/customers.model.js +1 -1
  22. package/lib/cjs/src/models/editor.model.js +2 -0
  23. package/lib/cjs/src/models/editor.model.js.map +1 -1
  24. package/lib/cjs/src/models/hosting.model.js.map +1 -1
  25. package/lib/cjs/src/models/permissions.model.js +8 -0
  26. package/lib/cjs/src/models/permissions.model.js.map +1 -1
  27. package/lib/cjs/src/models/structure.model.d.ts +4 -0
  28. package/lib/cjs/src/models/structure.model.js +186 -0
  29. package/lib/cjs/src/models/structure.model.js.map +1 -0
  30. package/lib/cjs/src/services/customers.service.d.ts +13 -4
  31. package/lib/cjs/src/services/customers.service.js +22 -7
  32. package/lib/cjs/src/services/customers.service.js.map +1 -1
  33. package/lib/cjs/src/services/editor.service.d.ts +0 -1
  34. package/lib/cjs/src/services/editor.service.js +2 -22
  35. package/lib/cjs/src/services/editor.service.js.map +1 -1
  36. package/lib/cjs/src/services/listParticipants.service.d.ts +14 -3
  37. package/lib/cjs/src/services/listParticipants.service.js +133 -16
  38. package/lib/cjs/src/services/listParticipants.service.js.map +1 -1
  39. package/lib/cjs/src/services/payments.service.js +0 -1
  40. package/lib/cjs/src/services/payments.service.js.map +1 -1
  41. package/lib/cjs/src/services/structures.service.d.ts +40 -0
  42. package/lib/cjs/src/services/structures.service.js +258 -0
  43. package/lib/cjs/src/services/structures.service.js.map +1 -0
  44. package/lib/esm/frontend.d.ts +2 -1
  45. package/lib/esm/frontend.js +2 -1
  46. package/lib/esm/frontend.js.map +1 -1
  47. package/lib/esm/src/helpers/findObjetcsWithKeys.d.ts +13 -0
  48. package/lib/esm/src/helpers/findObjetcsWithKeys.js +34 -0
  49. package/lib/esm/src/helpers/findObjetcsWithKeys.js.map +1 -0
  50. package/package.json +2 -2
@@ -0,0 +1,258 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StructureService = void 0;
7
+ const mongodb_1 = require("mongodb");
8
+ const Immutable_class_1 = __importDefault(require("../Immutable.class"));
9
+ const structure_model_1 = __importDefault(require("../models/structure.model"));
10
+ const safeObjectId_1 = __importDefault(require("../helpers/safeObjectId"));
11
+ class StructureService extends Immutable_class_1.default {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.model = structure_model_1.default;
15
+ // createWithUniqueId(
16
+ // data: BasicData<Structure> | Structure,
17
+ // user: string,
18
+ // source: string,
19
+ // partial?: Model<BasicData<Structure>>['actions'],
20
+ // ) {
21
+ // debugger;
22
+ // if(data.options) {
23
+ // }
24
+ // return this.create(data, user, source, undefined, undefined, partial);
25
+ // }
26
+ }
27
+ injectAjv(ajv) {
28
+ this.ajv = ajv;
29
+ }
30
+ async getByModel(model, options) {
31
+ return this.model.db.find({
32
+ model,
33
+ company: options.company,
34
+ project: options.project,
35
+ }, { projection: { history: 0 } }).toArray();
36
+ }
37
+ async listByModels(models, filter, options) {
38
+ const match = {
39
+ $and: [
40
+ { $expr: { $eq: ['$company', options.company] } },
41
+ ],
42
+ };
43
+ // Handle model matching based on input
44
+ if (models && models.length > 0) {
45
+ const modelsSelectOr = [];
46
+ /**
47
+ * select customers structures which dont have a project
48
+ */
49
+ if (models?.includes('customers')) {
50
+ modelsSelectOr.push({ $expr: { $and: [
51
+ { $eq: ['$model', 'customers'] },
52
+ { $eq: ['$company', options.company] },
53
+ ] } });
54
+ }
55
+ /**
56
+ * select listsParticipants structures which have a project
57
+ */
58
+ if (models?.includes('listsParticipants')) {
59
+ modelsSelectOr.push({ $expr: { $and: [
60
+ { $eq: ['$model', 'listsParticipants'] },
61
+ { $eq: ['$company', options.company] },
62
+ { $eq: ['$project', options.project] },
63
+ ] } });
64
+ }
65
+ match.$and.push({
66
+ $or: modelsSelectOr,
67
+ });
68
+ }
69
+ let aggregation = [
70
+ {
71
+ $match: match,
72
+ },
73
+ ];
74
+ aggregation.push({
75
+ $sort: options.sort || { _id: -1 },
76
+ });
77
+ aggregation.push({
78
+ $project: {
79
+ history: 0,
80
+ },
81
+ });
82
+ if (filter?.search) {
83
+ aggregation.unshift({
84
+ $match: {
85
+ $or: [
86
+ { question: { $regex: filter.search, $options: 'i' } },
87
+ ],
88
+ },
89
+ });
90
+ }
91
+ aggregation.push({
92
+ $facet: {
93
+ all: [
94
+ {
95
+ $count: 'all',
96
+ },
97
+ ],
98
+ data: [
99
+ {
100
+ $skip: options.skip,
101
+ },
102
+ {
103
+ $limit: options.limit,
104
+ },
105
+ ],
106
+ },
107
+ }, {
108
+ $unwind: '$all',
109
+ });
110
+ const data = await this.model.db.aggregate(aggregation)
111
+ .toArray();
112
+ return data[0] ? { all: data[0].all.all, data: data[0].data, count: data[0].data?.length } : { all: 0, data: [], count: 0 };
113
+ }
114
+ async validateWithStructure(data, required, structures, baseSchema) {
115
+ const schema = this.createSchema(structures, required, baseSchema);
116
+ const validator = this.ajv.compile(schema);
117
+ const validationResult = validator(data);
118
+ if (!validationResult) {
119
+ return validator.errors;
120
+ }
121
+ return true;
122
+ }
123
+ createValidator(data, required, structures, baseSchema) {
124
+ const schema = this.createSchema(structures, required, baseSchema);
125
+ return this.ajv.compile(schema);
126
+ }
127
+ async byInternalId(id, options) {
128
+ /**
129
+ * if the model is customer we dont check for the project because they are not bound to a project
130
+ * if the model is listsParticipants we check for the project
131
+ */
132
+ const query = { $or: [
133
+ {
134
+ _id: (0, safeObjectId_1.default)(id),
135
+ company: options.company,
136
+ model: 'customers',
137
+ },
138
+ {
139
+ _id: (0, safeObjectId_1.default)(id),
140
+ company: options.company,
141
+ project: options.project,
142
+ },
143
+ ] };
144
+ return this.model.db.findOne(query);
145
+ }
146
+ async byMultipleInternalIds(ids, options) {
147
+ return this.model.db.find({
148
+ _id: { $in: ids.map(id => new mongodb_1.ObjectId(id)) },
149
+ company: options.company,
150
+ project: options.project,
151
+ }).toArray();
152
+ }
153
+ // async getAllStructures(options: { company: string }) {
154
+ // return this.model.db.find({
155
+ // company: options.company,
156
+ // }).toArray();
157
+ // }
158
+ // async deleteStructure(
159
+ // internalId: ObjectId,
160
+ // options: Required<UserAppWithOptions>,
161
+ // ) {
162
+ // return this.model.db.deleteOne({
163
+ // _id: internalId,
164
+ // company: options.company,
165
+ // });
166
+ // }
167
+ createSchema(structures, required, baseSchema) {
168
+ const properties = baseSchema?.properties || {};
169
+ const allRequired = new Set(baseSchema?.required || []);
170
+ structures.forEach((structure) => {
171
+ let property = {};
172
+ if (structure.type === 'select') {
173
+ if (structure.multiple) {
174
+ property.type = 'array';
175
+ property.items = {
176
+ type: 'string',
177
+ enum: structure.options?.map(option => option.value) || [],
178
+ };
179
+ }
180
+ else {
181
+ property.type = 'string';
182
+ property.enum = structure.options?.map(option => option.value) || [];
183
+ }
184
+ }
185
+ else {
186
+ property.type = this.mapType(structure.type);
187
+ if (structure.max !== undefined) {
188
+ if (structure.type === 'string') {
189
+ property.maxLength = structure.max;
190
+ }
191
+ else if (structure.type === 'number') {
192
+ property.maximum = structure.max;
193
+ }
194
+ }
195
+ if (structure.min !== undefined) {
196
+ if (structure.type === 'string') {
197
+ property.minLength = structure.min;
198
+ }
199
+ else if (structure.type === 'number') {
200
+ property.minimum = structure.min;
201
+ }
202
+ }
203
+ }
204
+ properties[structure.id] = property;
205
+ });
206
+ required.forEach(req => allRequired.add(req));
207
+ return {
208
+ type: 'object',
209
+ properties,
210
+ additionalProperties: false,
211
+ required: Array.from(allRequired),
212
+ };
213
+ }
214
+ mapType(type) {
215
+ switch (type) {
216
+ case 'boolean':
217
+ return 'boolean';
218
+ case 'number':
219
+ return 'number';
220
+ case 'select':
221
+ return 'string';
222
+ default:
223
+ return 'string';
224
+ }
225
+ }
226
+ /**
227
+ * create structures by model and separate the input data by model
228
+ * input that does not match a structure will be not added to the response
229
+ */
230
+ groupStructuresByModel(structures, data) {
231
+ const structuresByModel = {};
232
+ const structuresInputByModel = {};
233
+ structures.forEach((structure) => {
234
+ if (structure.model) {
235
+ if (!structuresByModel[structure.model])
236
+ structuresByModel[structure.model] = [];
237
+ if (!structuresInputByModel[structure.model])
238
+ structuresInputByModel[structure.model] = {};
239
+ structuresByModel[structure.model].push(structure);
240
+ structuresInputByModel[structure.model][structure.id] = data[structure.id];
241
+ }
242
+ });
243
+ return {
244
+ structuresByModel,
245
+ structuresInputByModel,
246
+ };
247
+ }
248
+ async updateWithType(internalId, body, userId, reason, app) {
249
+ const dbStrucure = await this.model.db.findOne(internalId, { projection: { type: 1 } });
250
+ if (!dbStrucure) {
251
+ throw new Error('Structure not found');
252
+ }
253
+ return this.immutable(internalId, body, userId, reason, app, undefined, undefined, `change-${dbStrucure.type}`);
254
+ }
255
+ }
256
+ exports.StructureService = StructureService;
257
+ exports.default = new StructureService();
258
+ //# sourceMappingURL=structures.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structures.service.js","sourceRoot":"","sources":["../../../../src/services/structures.service.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,5 @@ import filterMergeModules from './src/filterMergeModules';
3
3
  import convertCountryISO2 from './src/helpers/convertCountryISO2';
4
4
  import hardCopy from './src/helpers/hardCopy';
5
5
  import isDeepEmpty from './src/helpers/isDeepEmpty';
6
- export { filterMergeModules, prepareContent, distributeChildData, distributeGenericData, generateDataWithContent, convertCountryISO2, hardCopy, isDeepEmpty };
6
+ import findObjectsWithKeys from './src/helpers/findObjetcsWithKeys';
7
+ export { filterMergeModules, prepareContent, distributeChildData, distributeGenericData, generateDataWithContent, convertCountryISO2, hardCopy, isDeepEmpty, findObjectsWithKeys };
@@ -3,5 +3,6 @@ import filterMergeModules from './src/filterMergeModules';
3
3
  import convertCountryISO2 from './src/helpers/convertCountryISO2';
4
4
  import hardCopy from './src/helpers/hardCopy';
5
5
  import isDeepEmpty from './src/helpers/isDeepEmpty';
6
- export { filterMergeModules, prepareContent, distributeChildData, distributeGenericData, generateDataWithContent, convertCountryISO2, hardCopy, isDeepEmpty };
6
+ import findObjectsWithKeys from './src/helpers/findObjetcsWithKeys';
7
+ export { filterMergeModules, prepareContent, distributeChildData, distributeGenericData, generateDataWithContent, convertCountryISO2, hardCopy, isDeepEmpty, findObjectsWithKeys };
7
8
  //# sourceMappingURL=frontend.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../frontend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,kBAAkB,MAAM,kCAAkC,CAAC;AAClE,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,WAAW,MAAM,2BAA2B,CAAC;AAEpD,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACZ,CAAC"}
1
+ {"version":3,"file":"frontend.js","sourceRoot":"","sources":["../../frontend.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC3H,OAAO,kBAAkB,MAAM,0BAA0B,CAAC;AAC1D,OAAO,kBAAkB,MAAM,kCAAkC,CAAC;AAClE,OAAO,QAAQ,MAAM,wBAAwB,CAAC;AAC9C,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,OAAO,mBAAmB,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EACL,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,uBAAuB,EACvB,kBAAkB,EAClB,QAAQ,EACR,WAAW,EACX,mBAAmB,EACpB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Recursively searches through an object and finds all objects that contain any of the specified keys.
3
+ *
4
+ * ```typescript
5
+ * const obj = {
6
+ * foo: { bar: 1 },
7
+ * baz: { bar: 2 }
8
+ * };
9
+ * const keys = ['bar'];
10
+ * findObjectsWithKeys(obj, keys); // Returns [{ bar: 1 }, { bar: 2 }]
11
+ * ```
12
+ */
13
+ export default function findObjectsWithKeys(obj: Object, keys: string[]): Object[];
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Recursively searches through an object and finds all objects that contain any of the specified keys.
3
+ *
4
+ * ```typescript
5
+ * const obj = {
6
+ * foo: { bar: 1 },
7
+ * baz: { bar: 2 }
8
+ * };
9
+ * const keys = ['bar'];
10
+ * findObjectsWithKeys(obj, keys); // Returns [{ bar: 1 }, { bar: 2 }]
11
+ * ```
12
+ */
13
+ export default function findObjectsWithKeys(obj, keys) {
14
+ let found = [];
15
+ // Ensure we only work with objects (and not null or primitives)
16
+ if (obj && typeof obj === 'object') {
17
+ // Check if current object has any of the requested keys
18
+ for (const key of keys) {
19
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
20
+ found.push(obj);
21
+ break; // we can break because we only need to include this object once
22
+ }
23
+ }
24
+ // Recursively traverse nested objects
25
+ for (const prop in obj) {
26
+ const value = obj[prop];
27
+ if (value && typeof value === 'object') {
28
+ found = found.concat(this.findObjectsWithKeys(value, keys));
29
+ }
30
+ }
31
+ }
32
+ return found;
33
+ }
34
+ //# sourceMappingURL=findObjetcsWithKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"findObjetcsWithKeys.js","sourceRoot":"","sources":["../../../../src/helpers/findObjetcsWithKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,GAAW,EACX,IAAc;IAGd,IAAI,KAAK,GAAa,EAAE,CAAC;IAEzB,gEAAgE;IAChE,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAEnC,wDAAwD;QACxD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YAEvB,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAEnD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAChB,MAAM,CAAC,gEAAgE;YAEzE,CAAC;QAEH,CAAC;QAED,sCAAsC;QACtC,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;YAEvB,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;YACxB,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAEvC,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YAE9D,CAAC;QAEH,CAAC;IAEH,CAAC;IAED,OAAO,KAAK,CAAC;AAEf,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lilaquadrat/studio",
3
- "version": "9.6.2",
3
+ "version": "9.7.0",
4
4
  "description": "classes and tools for STUDIO",
5
5
  "license": "MIT",
6
6
  "homepage": "https://lilaquadrat.de",
@@ -90,7 +90,7 @@
90
90
  "multer": "^1.4.5-lts.1",
91
91
  "node-fetch": "^2",
92
92
  "object-path": "^0.11.8",
93
- "openai": "^4.20.0",
93
+ "openai": "^4.85.3",
94
94
  "optional-require": "^1.1.0",
95
95
  "prettyjson": "^1.2.1",
96
96
  "typescript": "^5.3.3",