@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.
- package/lib/cjs/models.d.ts +2 -1
- package/lib/cjs/models.js +3 -1
- package/lib/cjs/models.js.map +1 -1
- package/lib/cjs/services.d.ts +2 -1
- package/lib/cjs/services.js +3 -1
- package/lib/cjs/services.js.map +1 -1
- package/lib/cjs/src/Immutable.class.d.ts +5 -3
- package/lib/cjs/src/Immutable.class.js +7 -2
- package/lib/cjs/src/Immutable.class.js.map +1 -1
- package/lib/cjs/src/aggegations/genericData.aggregation.d.ts +25 -10
- package/lib/cjs/src/aggegations/genericData.aggregation.js +58 -160
- package/lib/cjs/src/aggegations/genericData.aggregation.js.map +1 -1
- package/lib/cjs/src/classes/modelv2.class.d.ts +5 -0
- package/lib/cjs/src/classes/modelv2.class.js +5 -4
- package/lib/cjs/src/classes/modelv2.class.js.map +1 -1
- package/lib/cjs/src/helpers/findObjetcsWithKeys.d.ts +13 -0
- package/lib/cjs/src/helpers/findObjetcsWithKeys.js +37 -0
- package/lib/cjs/src/helpers/findObjetcsWithKeys.js.map +1 -0
- package/lib/cjs/src/models/company.model.js +1 -0
- package/lib/cjs/src/models/company.model.js.map +1 -1
- package/lib/cjs/src/models/customers.model.js +1 -1
- package/lib/cjs/src/models/editor.model.js +2 -0
- package/lib/cjs/src/models/editor.model.js.map +1 -1
- package/lib/cjs/src/models/hosting.model.js.map +1 -1
- package/lib/cjs/src/models/permissions.model.js +8 -0
- package/lib/cjs/src/models/permissions.model.js.map +1 -1
- package/lib/cjs/src/models/structure.model.d.ts +4 -0
- package/lib/cjs/src/models/structure.model.js +186 -0
- package/lib/cjs/src/models/structure.model.js.map +1 -0
- package/lib/cjs/src/services/customers.service.d.ts +13 -4
- package/lib/cjs/src/services/customers.service.js +22 -7
- package/lib/cjs/src/services/customers.service.js.map +1 -1
- package/lib/cjs/src/services/editor.service.d.ts +0 -1
- package/lib/cjs/src/services/editor.service.js +2 -22
- package/lib/cjs/src/services/editor.service.js.map +1 -1
- package/lib/cjs/src/services/listParticipants.service.d.ts +14 -3
- package/lib/cjs/src/services/listParticipants.service.js +133 -16
- package/lib/cjs/src/services/listParticipants.service.js.map +1 -1
- package/lib/cjs/src/services/payments.service.js +0 -1
- package/lib/cjs/src/services/payments.service.js.map +1 -1
- package/lib/cjs/src/services/structures.service.d.ts +40 -0
- package/lib/cjs/src/services/structures.service.js +258 -0
- package/lib/cjs/src/services/structures.service.js.map +1 -0
- package/lib/esm/frontend.d.ts +2 -1
- package/lib/esm/frontend.js +2 -1
- package/lib/esm/frontend.js.map +1 -1
- package/lib/esm/src/helpers/findObjetcsWithKeys.d.ts +13 -0
- package/lib/esm/src/helpers/findObjetcsWithKeys.js +34 -0
- package/lib/esm/src/helpers/findObjetcsWithKeys.js.map +1 -0
- 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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"}
|
package/lib/esm/frontend.d.ts
CHANGED
|
@@ -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
|
-
|
|
6
|
+
import findObjectsWithKeys from './src/helpers/findObjetcsWithKeys';
|
|
7
|
+
export { filterMergeModules, prepareContent, distributeChildData, distributeGenericData, generateDataWithContent, convertCountryISO2, hardCopy, isDeepEmpty, findObjectsWithKeys };
|
package/lib/esm/frontend.js
CHANGED
|
@@ -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
|
-
|
|
6
|
+
import findObjectsWithKeys from './src/helpers/findObjetcsWithKeys';
|
|
7
|
+
export { filterMergeModules, prepareContent, distributeChildData, distributeGenericData, generateDataWithContent, convertCountryISO2, hardCopy, isDeepEmpty, findObjectsWithKeys };
|
|
7
8
|
//# sourceMappingURL=frontend.js.map
|
package/lib/esm/frontend.js.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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.
|
|
93
|
+
"openai": "^4.85.3",
|
|
94
94
|
"optional-require": "^1.1.0",
|
|
95
95
|
"prettyjson": "^1.2.1",
|
|
96
96
|
"typescript": "^5.3.3",
|