@lilaquadrat/studio 10.0.0-beta.9 → 10.1.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 (244) hide show
  1. package/eslint.config.js +146 -0
  2. package/lib/fastify-plugins.d.ts +6 -0
  3. package/lib/fastify-plugins.js +7 -0
  4. package/lib/fastify-plugins.js.map +1 -0
  5. package/lib/helpers.d.ts +4 -2
  6. package/lib/helpers.js +13 -2
  7. package/lib/helpers.js.map +1 -1
  8. package/lib/main.d.ts +1 -3
  9. package/lib/main.js +7 -3
  10. package/lib/main.js.map +1 -1
  11. package/lib/models.d.ts +4 -4
  12. package/lib/models.js +4 -4
  13. package/lib/models.js.map +1 -1
  14. package/lib/services.d.ts +5 -5
  15. package/lib/services.js +5 -13
  16. package/lib/services.js.map +1 -1
  17. package/lib/src/Immutable.class.d.ts +8 -1
  18. package/lib/src/Immutable.class.js +52 -8
  19. package/lib/src/Immutable.class.js.map +1 -1
  20. package/lib/src/ShareClientFactory.class.d.ts +1 -3
  21. package/lib/src/ShareClientFactory.class.js +1 -9
  22. package/lib/src/ShareClientFactory.class.js.map +1 -1
  23. package/lib/src/classes/models.class.js.map +1 -1
  24. package/lib/src/classes/modelv2.class.d.ts +2 -0
  25. package/lib/src/classes/modelv2.class.js +1 -1
  26. package/lib/src/classes/modelv2.class.js.map +1 -1
  27. package/lib/src/classes/mongo.class.js +4 -14
  28. package/lib/src/classes/mongo.class.js.map +1 -1
  29. package/lib/src/functions/handleError.d.ts +2 -3
  30. package/lib/src/functions/handleError.js +3 -16
  31. package/lib/src/functions/handleError.js.map +1 -1
  32. package/lib/src/functions/optionsHelper.d.ts +4 -4
  33. package/lib/src/functions/optionsHelper.js +5 -4
  34. package/lib/src/functions/optionsHelper.js.map +1 -1
  35. package/lib/src/functions/respondCode.d.ts +2 -1
  36. package/lib/src/functions/respondCode.js +1 -1
  37. package/lib/src/functions/respondCode.js.map +1 -1
  38. package/lib/src/helpers/ControllerHelper.d.ts +73 -0
  39. package/lib/src/helpers/ControllerHelper.js +242 -0
  40. package/lib/src/helpers/ControllerHelper.js.map +1 -0
  41. package/lib/src/helpers/EnvMapper.js +1 -0
  42. package/lib/src/helpers/EnvMapper.js.map +1 -0
  43. package/lib/src/helpers/auth0config.d.ts +6 -0
  44. package/lib/src/helpers/auth0config.js +23 -0
  45. package/lib/src/helpers/auth0config.js.map +1 -0
  46. package/lib/src/helpers/authPlugin.d.ts +29 -0
  47. package/lib/src/helpers/authPlugin.js +77 -0
  48. package/lib/src/helpers/authPlugin.js.map +1 -0
  49. package/lib/src/helpers/cacheHelper.d.ts +69 -0
  50. package/lib/src/helpers/cacheHelper.js +235 -0
  51. package/lib/src/helpers/cacheHelper.js.map +1 -0
  52. package/lib/src/helpers/createSasToken.d.ts +0 -2
  53. package/lib/src/helpers/createSasToken.js +35 -32
  54. package/lib/src/helpers/createSasToken.js.map +1 -1
  55. package/lib/src/helpers/getSecrets.d.ts +1 -1
  56. package/lib/src/helpers/getSecrets.js +10 -12
  57. package/lib/src/helpers/getSecrets.js.map +1 -1
  58. package/lib/src/helpers/limiterPlugin.d.ts +9 -0
  59. package/lib/src/helpers/limiterPlugin.js +72 -0
  60. package/lib/src/helpers/limiterPlugin.js.map +1 -0
  61. package/lib/src/helpers/loggingPlugin.d.ts +30 -0
  62. package/lib/src/helpers/loggingPlugin.js +87 -0
  63. package/lib/src/helpers/loggingPlugin.js.map +1 -0
  64. package/lib/src/helpers/queryAssertionPlugin.d.ts +3 -0
  65. package/lib/src/helpers/queryAssertionPlugin.js +20 -0
  66. package/lib/src/helpers/queryAssertionPlugin.js.map +1 -0
  67. package/lib/src/helpers/safeObjectId.d.ts +1 -1
  68. package/lib/src/helpers/safeObjectId.js +5 -1
  69. package/lib/src/helpers/safeObjectId.js.map +1 -1
  70. package/lib/src/helpers/storageSdkFactory.d.ts +2 -0
  71. package/lib/src/helpers/storageSdkFactory.js +11 -0
  72. package/lib/src/helpers/storageSdkFactory.js.map +1 -0
  73. package/lib/src/helpers/studioAppPlugin.d.ts +3 -0
  74. package/lib/src/helpers/studioAppPlugin.js +16 -0
  75. package/lib/src/helpers/studioAppPlugin.js.map +1 -0
  76. package/lib/src/logger.js +40 -2
  77. package/lib/src/logger.js.map +1 -1
  78. package/lib/src/models/access.model.d.ts +14 -3
  79. package/lib/src/models/access.model.js +7 -9
  80. package/lib/src/models/access.model.js.map +1 -1
  81. package/lib/src/models/customers.model.js +14 -4
  82. package/lib/src/models/customers.model.js.map +1 -1
  83. package/lib/src/models/design.model.d.ts +4 -0
  84. package/lib/src/models/design.model.js +58 -0
  85. package/lib/src/models/design.model.js.map +1 -0
  86. package/lib/src/models/domain.model.js +1 -1
  87. package/lib/src/models/domain.model.js.map +1 -1
  88. package/lib/src/models/editor.model.js +7 -0
  89. package/lib/src/models/editor.model.js.map +1 -1
  90. package/lib/src/models/emailLimit.model.d.ts +4 -0
  91. package/lib/src/models/emailLimit.model.js +31 -0
  92. package/lib/src/models/emailLimit.model.js.map +1 -0
  93. package/lib/src/models/hosting.model.js +1 -3
  94. package/lib/src/models/hosting.model.js.map +1 -1
  95. package/lib/src/models/hostingSettings.model.js +6 -4
  96. package/lib/src/models/hostingSettings.model.js.map +1 -1
  97. package/lib/src/models/invoice.model.d.ts +4 -0
  98. package/lib/src/models/invoice.model.js +235 -0
  99. package/lib/src/models/invoice.model.js.map +1 -0
  100. package/lib/src/models/mailFrom.model.js +51 -10
  101. package/lib/src/models/mailFrom.model.js.map +1 -1
  102. package/lib/src/models/project.model.js +2 -4
  103. package/lib/src/models/project.model.js.map +1 -1
  104. package/lib/src/models/publish-method.model.js +79 -430
  105. package/lib/src/models/publish-method.model.js.map +1 -1
  106. package/lib/src/models/publish.model.js +6 -0
  107. package/lib/src/models/publish.model.js.map +1 -1
  108. package/lib/src/models/storage.model.js +23 -5
  109. package/lib/src/models/storage.model.js.map +1 -1
  110. package/lib/src/models/structure.model.js +40 -0
  111. package/lib/src/models/structure.model.js.map +1 -1
  112. package/lib/src/models/upload.model.js +38 -2
  113. package/lib/src/models/upload.model.js.map +1 -1
  114. package/lib/src/prompts/textGeneration.js +88 -0
  115. package/lib/src/prompts/textGeneration.js.map +1 -1
  116. package/lib/src/prompts/textGenerationMulti.js +78 -44
  117. package/lib/src/prompts/textGenerationMulti.js.map +1 -1
  118. package/lib/src/services/access.service.d.ts +132 -33
  119. package/lib/src/services/access.service.js +270 -92
  120. package/lib/src/services/access.service.js.map +1 -1
  121. package/lib/src/services/ai.service.d.ts +4 -3
  122. package/lib/src/services/ai.service.js +22 -29
  123. package/lib/src/services/ai.service.js.map +1 -1
  124. package/lib/src/services/auth.service.d.ts +11 -0
  125. package/lib/src/services/auth.service.js +70 -0
  126. package/lib/src/services/auth.service.js.map +1 -0
  127. package/lib/src/services/conf.service.d.ts +3 -31
  128. package/lib/src/services/conf.service.js +58 -167
  129. package/lib/src/services/conf.service.js.map +1 -1
  130. package/lib/src/services/customers.service.d.ts +8 -4
  131. package/lib/src/services/customers.service.js +34 -7
  132. package/lib/src/services/customers.service.js.map +1 -1
  133. package/lib/src/services/designs.service.d.ts +7 -0
  134. package/lib/src/services/designs.service.js +10 -0
  135. package/lib/src/services/designs.service.js.map +1 -0
  136. package/lib/src/services/domains.service.d.ts +18 -84
  137. package/lib/src/services/domains.service.js +91 -583
  138. package/lib/src/services/domains.service.js.map +1 -1
  139. package/lib/src/services/editor.service.d.ts +4 -0
  140. package/lib/src/services/editor.service.js +28 -0
  141. package/lib/src/services/editor.service.js.map +1 -1
  142. package/lib/src/services/emailLimit.service.d.ts +21 -0
  143. package/lib/src/services/emailLimit.service.js +51 -0
  144. package/lib/src/services/emailLimit.service.js.map +1 -0
  145. package/lib/src/services/hosting.service.d.ts +12 -24
  146. package/lib/src/services/hosting.service.js +32 -122
  147. package/lib/src/services/hosting.service.js.map +1 -1
  148. package/lib/src/services/hostingAdmin.service.d.ts +1 -1
  149. package/lib/src/services/hostingAdmin.service.js +2 -2
  150. package/lib/src/services/hostingAdmin.service.js.map +1 -1
  151. package/lib/src/services/import.service.d.ts +6 -22
  152. package/lib/src/services/import.service.js +63 -65
  153. package/lib/src/services/import.service.js.map +1 -1
  154. package/lib/src/services/invoices.service.d.ts +30 -0
  155. package/lib/src/services/invoices.service.js +265 -0
  156. package/lib/src/services/invoices.service.js.map +1 -0
  157. package/lib/src/services/jetstream.service.d.ts +5 -3
  158. package/lib/src/services/jetstream.service.js +63 -7
  159. package/lib/src/services/jetstream.service.js.map +1 -1
  160. package/lib/src/services/listParticipants.service.d.ts +3 -5
  161. package/lib/src/services/listParticipants.service.js +76 -16
  162. package/lib/src/services/listParticipants.service.js.map +1 -1
  163. package/lib/src/services/mailFrom.service.d.ts +14 -1
  164. package/lib/src/services/mailFrom.service.js +59 -0
  165. package/lib/src/services/mailFrom.service.js.map +1 -1
  166. package/lib/src/services/me.service.d.ts +23 -12
  167. package/lib/src/services/me.service.js +65 -88
  168. package/lib/src/services/me.service.js.map +1 -1
  169. package/lib/src/services/publish.service.d.ts +6 -8
  170. package/lib/src/services/publish.service.js +34 -32
  171. package/lib/src/services/publish.service.js.map +1 -1
  172. package/lib/src/services/publishData.service.d.ts +10 -7
  173. package/lib/src/services/publishData.service.js +32 -75
  174. package/lib/src/services/publishData.service.js.map +1 -1
  175. package/lib/src/services/spamAnalasys.service.d.ts +4 -4
  176. package/lib/src/services/spamAnalasys.service.js +36 -44
  177. package/lib/src/services/spamAnalasys.service.js.map +1 -1
  178. package/lib/src/services/storage.service.d.ts +68 -39
  179. package/lib/src/services/storage.service.js +382 -209
  180. package/lib/src/services/storage.service.js.map +1 -1
  181. package/lib/src/services/structures.service.d.ts +8 -1
  182. package/lib/src/services/structures.service.js +26 -1
  183. package/lib/src/services/structures.service.js.map +1 -1
  184. package/lib/src/services/upload.service.d.ts +8 -1
  185. package/lib/src/services/upload.service.js +76 -3
  186. package/lib/src/services/upload.service.js.map +1 -1
  187. package/lib/tests/groupStructuresByModel.spec.d.ts +1 -0
  188. package/lib/tests/groupStructuresByModel.spec.js +33 -0
  189. package/lib/tests/groupStructuresByModel.spec.js.map +1 -0
  190. package/lib/tests/listParticipantsServiceJoin.spec.d.ts +1 -0
  191. package/lib/tests/listParticipantsServiceJoin.spec.js +151 -0
  192. package/lib/tests/listParticipantsServiceJoin.spec.js.map +1 -0
  193. package/lib/tests/storageServiceHandleFile.spec.d.ts +1 -0
  194. package/lib/tests/storageServiceHandleFile.spec.js +94 -0
  195. package/lib/tests/storageServiceHandleFile.spec.js.map +1 -0
  196. package/lib/tests/storageServiceToken.spec.d.ts +1 -0
  197. package/lib/tests/storageServiceToken.spec.js +104 -0
  198. package/lib/tests/storageServiceToken.spec.js.map +1 -0
  199. package/lib/tests/uploadServiceCreate.spec.d.ts +1 -0
  200. package/lib/tests/uploadServiceCreate.spec.js +81 -0
  201. package/lib/tests/uploadServiceCreate.spec.js.map +1 -0
  202. package/package.json +30 -26
  203. package/lib/src/AzureBlobStorage.share.d.ts +0 -19
  204. package/lib/src/AzureBlobStorage.share.js +0 -162
  205. package/lib/src/AzureBlobStorage.share.js.map +0 -1
  206. package/lib/src/AzureFileStorage.share.d.ts +0 -22
  207. package/lib/src/AzureFileStorage.share.js +0 -139
  208. package/lib/src/AzureFileStorage.share.js.map +0 -1
  209. package/lib/src/AzureVault.d.ts +0 -14
  210. package/lib/src/AzureVault.js +0 -28
  211. package/lib/src/AzureVault.js.map +0 -1
  212. package/lib/src/dns.challenge.class.d.ts +0 -17
  213. package/lib/src/dns.challenge.class.js +0 -41
  214. package/lib/src/dns.challenge.class.js.map +0 -1
  215. package/lib/src/http.challenge.class.d.ts +0 -33
  216. package/lib/src/http.challenge.class.js +0 -58
  217. package/lib/src/http.challenge.class.js.map +0 -1
  218. package/lib/src/models/certificate-action.model.d.ts +0 -5
  219. package/lib/src/models/certificate-action.model.js +0 -230
  220. package/lib/src/models/certificate-action.model.js.map +0 -1
  221. package/lib/src/models/certificate.model.d.ts +0 -4
  222. package/lib/src/models/certificate.model.js +0 -96
  223. package/lib/src/models/certificate.model.js.map +0 -1
  224. package/lib/src/models/editorBase.model.d.ts +0 -4
  225. package/lib/src/models/editorBase.model.js +0 -39
  226. package/lib/src/models/editorBase.model.js.map +0 -1
  227. package/lib/src/services/certificates.service.js +0 -199
  228. package/lib/src/services/certificates.service.js.map +0 -1
  229. package/lib/src/services/certificatesAction.service.d.ts +0 -0
  230. package/lib/src/services/certificatesAction.service.js +0 -237
  231. package/lib/src/services/certificatesAction.service.js.map +0 -1
  232. package/lib/src/services/editorBase.service.d.ts +0 -46
  233. package/lib/src/services/editorBase.service.js +0 -161
  234. package/lib/src/services/editorBase.service.js.map +0 -1
  235. package/lib/src/services/handleFile.service.d.ts +0 -9
  236. package/lib/src/services/handleFile.service.js +0 -45
  237. package/lib/src/services/handleFile.service.js.map +0 -1
  238. package/lib/src/services/media.service.d.ts +0 -35
  239. package/lib/src/services/media.service.js +0 -418
  240. package/lib/src/services/media.service.js.map +0 -1
  241. package/lib/src/services/share.service.d.ts +0 -6
  242. package/lib/src/services/share.service.js +0 -4
  243. package/lib/src/services/share.service.js.map +0 -1
  244. /package/lib/src/{services/certificates.service.d.ts → helpers/EnvMapper.d.ts} +0 -0
@@ -1,18 +1,12 @@
1
1
  import { ObjectId } from 'mongodb';
2
- import { Modelv2, mongoClass } from '../../main.js';
3
2
  import EditorModel from '../models/editor.model.js';
4
3
  // import UniversalService from './universal.service.js';
5
4
  import EditorService from './editor.service.js';
6
5
  export default class PublishDataService {
7
- static async getModel(type, model) {
8
- if (type === 'editor') {
9
- return EditorModel;
10
- }
11
- const universalModel = new Modelv2(model, 'universal', undefined, true);
12
- await universalModel.setMongoConnection(mongoClass.client);
13
- return universalModel;
6
+ static async getModel() {
7
+ return EditorModel;
14
8
  }
15
- static async getAll(company, project, app, model, type, full, changed, affectedStates, category) {
9
+ static async getAll(company, project, full, changed, affectedStates, category) {
16
10
  let options;
17
11
  if (full) {
18
12
  options = {};
@@ -22,19 +16,17 @@ export default class PublishDataService {
22
16
  projection: { _id: 1 },
23
17
  };
24
18
  }
25
- const select = PublishDataService.getQuery(company, project, app, model, type, changed, affectedStates, category);
26
- const useModel = await PublishDataService.getModel(type, model);
27
- return useModel
19
+ const select = PublishDataService.getQuery(company, project, changed, affectedStates, category);
20
+ return EditorModel
28
21
  .db.find(select, options)
29
22
  .toArray();
30
23
  }
31
- static async countAll(company, project, app, model, type, changed, affectedStates, category) {
32
- const select = PublishDataService.getQuery(company, project, app, model, type, changed, affectedStates, category);
33
- const useModel = await PublishDataService.getModel(type, model);
34
- return useModel
24
+ static async countAll(company, project, changed, affectedStates, category) {
25
+ const select = PublishDataService.getQuery(company, project, changed, affectedStates, category);
26
+ return EditorModel
35
27
  .db.countDocuments(select);
36
28
  }
37
- static getQuery(company, project, app, model, type, changed, affectedStates, category) {
29
+ static getQuery(company, project, changed, affectedStates, category, options) {
38
30
  let select;
39
31
  if (changed) {
40
32
  select = {
@@ -57,68 +49,33 @@ export default class PublishDataService {
57
49
  if (category) {
58
50
  select.tags = { $in: [category] };
59
51
  }
60
- if (type === 'universal') {
61
- select.app = app;
62
- select.model = model;
52
+ if (!options?.includeLayouts) {
53
+ select.layout = { $exists: false };
54
+ }
55
+ if (!options?.includePartials) {
56
+ select.partial = { $exists: false };
63
57
  }
64
58
  return select;
65
59
  }
66
- static async getSingleInternalId(internalId, company, project, partials, children, genericData, appPublish, modelPublish, type, affectedStates) {
67
- let data = null;
68
- if (type === 'editor') {
69
- data = await EditorService.getByInternalId(new ObjectId(internalId), {
70
- company,
71
- project,
72
- partials,
73
- children,
74
- genericData,
75
- affectedStates,
76
- });
77
- }
78
- // if (type === 'universal') {
79
- // const model = new Modelv2<Universal>(modelPublish, 'universal', undefined, true);
80
- // await model.setMongoConnection(mongoClass.client);
81
- // const universalService = new UniversalService(model);
82
- // data = await universalService.getByInternalId(
83
- // internalId,
84
- // company,
85
- // project,
86
- // appPublish,
87
- // modelPublish,
88
- // affectedStates,
89
- // );
90
- // }
91
- if (!data)
92
- throw new Error('DATA_SINGLE_NOT_FOUND');
93
- return data;
60
+ static async getSingleInternalId(internalId, company, project, partials, children, genericData, affectedStates) {
61
+ return EditorService.getByInternalId(new ObjectId(internalId), {
62
+ company,
63
+ project,
64
+ partials,
65
+ children,
66
+ genericData,
67
+ affectedStates,
68
+ });
94
69
  }
95
- static async getSingle(id, company, project, partials, children, genericData, appPublish, modelPublish, type, affectedStates) {
96
- let data = null;
97
- if (type === 'editor') {
98
- data = await EditorService.getById(id, {
99
- company,
100
- project,
101
- partials,
102
- children,
103
- genericData,
104
- affectedStates,
105
- });
106
- }
107
- // if (type === 'universal') {
108
- // const model = new Modelv2<Universal>(modelPublish, 'universal', undefined, true);
109
- // await model.setMongoConnection(mongoClass.client);
110
- // const universalService = new UniversalService(model);
111
- // data = await universalService.single(
112
- // id,
113
- // company,
114
- // project,
115
- // appPublish,
116
- // modelPublish,
117
- // );
118
- // }
119
- if (!data)
120
- throw new Error('DATA_SINGLE_ID_NOT_FOUND');
121
- return data;
70
+ static async getSingle(id, company, project, partials, children, genericData, affectedStates) {
71
+ return EditorService.getById(id, {
72
+ company,
73
+ project,
74
+ partials,
75
+ children,
76
+ genericData,
77
+ affectedStates,
78
+ });
122
79
  }
123
80
  static async getContextData(arrayOfInternalIds, options) {
124
81
  return EditorService.getMultipleByInternalId(arrayOfInternalIds, options);
@@ -1 +1 @@
1
- {"version":3,"file":"publishData.service.js","sourceRoot":"","sources":["../../../src/services/publishData.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"publishData.service.js","sourceRoot":"","sources":["../../../src/services/publishData.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,QAAQ,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,WAAW,MAAM,2BAA2B,CAAC;AACpD,yDAAyD;AACzD,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAGhD,MAAM,CAAC,OAAO,OAAO,kBAAkB;IAErC,MAAM,CAAC,KAAK,CAAC,QAAQ;QAEnB,OAAO,WAAW,CAAC;IAErB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAM,CACjB,OAAe,EACf,OAAe,EACf,IAAa,EACb,OAAc,EACd,cAAmC,EACnC,QAAiB;QAGjB,IAAI,OAAoB,CAAC;QAEzB,IAAI,IAAI,EAAE,CAAC;YAET,OAAO,GAAG,EAAE,CAAC;QAEf,CAAC;aAAM,CAAC;YAEN,OAAO,GAAG;gBACR,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE;aACvB,CAAC;QAEJ,CAAC;QAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CACxC,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,QAAQ,CACT,CAAC;QAEF,OAAO,WAAW;aACf,EAAE,CAAC,IAAI,CACN,MAAM,EACN,OAAO,CACR;aACA,OAAO,EAAE,CAAC;IAEf,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAQ,CACnB,OAAe,EACf,OAAe,EACf,OAAc,EACd,cAAmC,EACnC,QAAiB;QAGjB,MAAM,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CACxC,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,QAAQ,CACT,CAAC;QAEF,OAAO,WAAW;aACf,EAAE,CAAC,cAAc,CAChB,MAAyB,CAC1B,CAAC;IAEN,CAAC;IAED,MAAM,CAAC,QAAQ,CACb,OAAe,EACf,OAAe,EACf,OAAc,EACd,cAAmC,EACnC,QAAiB,EACjB,OAGC;QAGD,IAAI,MAAuB,CAAC;QAE5B,IAAI,OAAO,EAAE,CAAC;YAEZ,MAAM,GAAG;gBACP,OAAO;gBACP,OAAO;gBACP,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;gBAC1D,iBAAiB,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;aACpC,CAAC;QAEJ,CAAC;aAAM,CAAC;YAEN,MAAM,GAAG;gBACP,OAAO;gBACP,OAAO;gBACP,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;aAC3D,CAAC;QAEJ,CAAC;QAED,IAAI,cAAc,EAAE,CAAC;YAEnB,MAAM,CAAC,KAAK,GAAG,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;QAEzC,CAAC;QAED,IAAI,QAAQ,EAAE,CAAC;YAEb,MAAM,CAAC,IAAI,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC;QAEpC,CAAC;QAED,IAAG,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;YAE5B,MAAM,CAAC,MAAM,GAAG,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;QAEnC,CAAC;QAED,IAAG,CAAC,OAAO,EAAE,eAAe,EAAE,CAAC;YAE7B,MAAM,CAAC,OAAO,GAAG,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;QAEpC,CAAC;QAED,OAAO,MAAM,CAAC;IAEhB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAC9B,UAAoB,EACpB,OAAe,EACf,OAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,WAAoB,EACpB,cAAmC;QAGnC,OAAO,aAAa,CAAC,eAAe,CAClC,IAAI,QAAQ,CAAC,UAAU,CAAC,EACxB;YACE,OAAO;YACP,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,cAAc;SACf,CACF,CAAC;IAEJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,SAAS,CACpB,EAAU,EACV,OAAe,EACf,OAAe,EACf,QAAiB,EACjB,QAAiB,EACjB,WAAoB,EACpB,cAAmC;QAGnC,OAAO,aAAa,CAAC,OAAO,CAC1B,EAAE,EACF;YACE,OAAO;YACP,OAAO;YACP,QAAQ;YACR,QAAQ;YACR,WAAW;YACX,cAAc;SACf,CACF,CAAC;IAEJ,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,cAAc,CACzB,kBAAiD,EACjD,OAMC;QAGD,OAAO,aAAa,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAE5E,CAAC;CAEF"}
@@ -1,9 +1,9 @@
1
1
  import { CustomerPersonWithEmail } from '@lilaquadrat/interfaces';
2
- import OpenAI from 'openai';
2
+ import { GoogleGenAI } from '@google/genai';
3
3
  export declare class SpamAnalasys {
4
- openai: OpenAI;
5
- assistant: string;
6
- constructor(assistant: string);
4
+ provider: GoogleGenAI;
5
+ model: string;
6
+ constructor(key: string, model: string);
7
7
  checkEmailDns(email: string): Promise<boolean>;
8
8
  getDomainFromEMail(email: string): string | null;
9
9
  check(person: CustomerPersonWithEmail, message: string): Promise<{
@@ -1,12 +1,18 @@
1
1
  import dnsCallbacks from 'dns';
2
- import OpenAI from 'openai';
2
+ import logger from '../logger.js';
3
+ import { GoogleGenAI, ThinkingLevel } from '@google/genai';
3
4
  const dns = dnsCallbacks.promises;
4
5
  export class SpamAnalasys {
5
- constructor(assistant) {
6
- if (process.env.OPENAI_API_KEY) {
7
- this.openai = new OpenAI();
6
+ constructor(key, model) {
7
+ if (key) {
8
+ this.provider = new GoogleGenAI({
9
+ apiKey: key,
10
+ });
11
+ }
12
+ else {
13
+ logger.warn('NO_API_KEY');
8
14
  }
9
- this.assistant = assistant;
15
+ this.model = model;
10
16
  }
11
17
  async checkEmailDns(email) {
12
18
  const domain = this.getDomainFromEMail(email);
@@ -43,51 +49,37 @@ export class SpamAnalasys {
43
49
  : null;
44
50
  }
45
51
  async check(person, message) {
46
- const chatResponse = await this.openai.chat.completions.create({
47
- model: 'gpt-4o-mini',
48
- store: true,
49
- messages: [
50
- {
51
- role: 'system',
52
- content: `i will provide the data as a json in this format:
53
-
54
- {
55
- "name": "LASTNAME",
56
- "prename": "FIRSTNAME",
57
- "message": "MESSAGE"
58
- }
52
+ const response = await this.provider.models.generateContent({
53
+ model: this.model,
54
+ config: {
55
+ systemInstruction: `You are a strict B2B Lead Validation Agent. You will receive a JSON object: {name, prename, message}.
59
56
 
60
- classify the message as useful with a boolean
57
+ Evaluate the input based on two distinct criteria:
61
58
 
62
- factor 1: anything that is not a form of a contact attempt is not useful
63
- factor 2: nonsensical names are not useful
59
+ 1. Identity Validation:
60
+ - Fail if 'name' or 'prename' are empty, clearly fake (e.g., "test", "admin", "123"), contain URLs, or are obvious gibberish.
64
61
 
65
- the matter of the contact attempt can be anything
62
+ 2. Intent Validation:
63
+ - Pass only if the 'message' indicates a clear, human business intent (inquiry, support, sales, partnership).
64
+ - Fail if the message is promotional spam (SEO/Crypto), incoherent, automated, or lacks semantic meaning.
66
65
 
67
- the nature of real and wanted messages are contact message from a contact form from a website.
68
-
69
- the contact will be always from a person or a company to another company. therefore everything that is not in a manner of communication between two human parties
70
-
71
- please keep the answer in one sentence and as json in this format:
72
-
73
- {
74
- "useful": BOOLEAN,
75
- "explanation": "EXPLANATION"
76
- }`,
77
- },
78
- {
79
- role: 'user',
80
- content: JSON.stringify({
81
- name: person.name,
82
- prename: person.prename,
83
- message,
84
- }),
66
+ Output Instruction:
67
+ Return exactly one JSON object: {useful: BOOLEAN, explanation: STRING}.
68
+ - 'useful': true only if BOTH criteria pass.
69
+ - 'explanation': A concise, single-sentence justification.`,
70
+ thinkingConfig: {
71
+ thinkingLevel: ThinkingLevel.MEDIUM,
85
72
  },
86
- ],
73
+ responseMimeType: 'application/json'
74
+ },
75
+ contents: JSON.stringify({
76
+ name: person.name,
77
+ prename: person.prename,
78
+ message,
79
+ })
87
80
  });
88
- const response = JSON.parse(chatResponse.choices[0].message?.content);
89
- return response;
81
+ return JSON.parse(response.text);
90
82
  }
91
83
  }
92
- export default new SpamAnalasys(process.env.OPENAI_ASSISTANT);
84
+ export default new SpamAnalasys(process.env.GOOGLE_API_KEY, process.env.AI_MODEL);
93
85
  //# sourceMappingURL=spamAnalasys.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spamAnalasys.service.js","sourceRoot":"","sources":["../../../src/services/spamAnalasys.service.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,KAAK,CAAC;AAC/B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;AAElC,MAAM,OAAO,YAAY;IAMvB,YAAY,SAAiB;QAE3B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YAE/B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;QAE7B,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAE7B,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAmB,CAAC;QACxB,IAAI,EAA2B,CAAC;QAChC,IAAI,GAAuB,CAAC;QAE5B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,IAAI,CAAC;YAEH,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,EAAE,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO,KAAK,CAAC;QAEf,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE7B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAEzB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAEzB,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,GAAG,GAAG,WAAW,CAAC;YAExD,CAAC,CAAC,CAAC;QAEL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAEvB,OAAO,IAAI,CAAC;IAEd,CAAC;IAED,kBAAkB,CAAC,KAAa;QAE9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,IAAI,CAAC;IAEX,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAA+B,EAAE,OAAe;QAE1D,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAC7D,KAAK,EAAE,aAAa;YACpB,KAAK,EAAE,IAAI;YACX,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE;;;;;;;;;;;;;;;;;;;;;;;;EAwBjB;iBACO;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC;wBACtB,IAAI,EAAE,MAAM,CAAC,IAAI;wBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;wBACvB,OAAO;qBACR,CAAC;iBACH;aACF;SACK,CAAC,CAAC;QAEV,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,OAAiB,CAA6C,CAAC;QAC5H,OAAO,QAAQ,CAAC;IAElB,CAAC;CAEF;AAED,eAAe,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,gBAA0B,CAAC,CAAC"}
1
+ {"version":3,"file":"spamAnalasys.service.js","sourceRoot":"","sources":["../../../src/services/spamAnalasys.service.ts"],"names":[],"mappings":"AAEA,OAAO,YAAY,MAAM,KAAK,CAAC;AAC/B,OAAO,MAAM,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,GAAG,GAAG,YAAY,CAAC,QAAQ,CAAC;AAElC,MAAM,OAAO,YAAY;IAMvB,YAAY,GAAW,EAAE,KAAa;QAEpC,IAAI,GAAG,EAAE,CAAC;YAER,IAAI,CAAC,QAAQ,GAAG,IAAI,WAAW,CAAC;gBAC9B,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;QAEL,CAAC;aAAM,CAAC;YAEN,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE5B,CAAC;QAED,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAErB,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAa;QAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,OAAmB,CAAC;QACxB,IAAI,EAA2B,CAAC;QAChC,IAAI,GAAuB,CAAC;QAE5B,IAAI,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE1B,IAAI,CAAC;YAEH,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACvC,EAAE,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAEnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAEf,OAAO,KAAK,CAAC;QAEf,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAE7B,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAEzB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAEzB,IAAI,WAAW,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAAE,GAAG,GAAG,WAAW,CAAC;YAExD,CAAC,CAAC,CAAC;QAEL,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAC;QAEvB,OAAO,IAAI,CAAC;IAEd,CAAC;IAED,kBAAkB,CAAC,KAAa;QAE9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAEtC,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAChC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,IAAI,CAAC;IAEX,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAA+B,EAAE,OAAe;QAE1D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,eAAe,CAAC;YAC1D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE;gBACN,iBAAiB,EAAE;;;;;;;;;;;;;;2DAcgC;gBACnD,cAAc,EAAE;oBACd,aAAa,EAAE,aAAa,CAAC,MAAM;iBACpC;gBACD,gBAAgB,EAAE,kBAAkB;aACrC;YACD,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC;gBACvB,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,OAAO;aACR,CAAC;SACH,CAAC,CAAA;QAEF,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAK,CAA6C,CAAC;IAEhF,CAAC;CAEF;AAED,eAAe,IAAI,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,cAAwB,EAAE,OAAO,CAAC,GAAG,CAAC,QAAkB,CAAC,CAAC"}
@@ -1,30 +1,8 @@
1
1
  import { ObjectId } from 'mongodb';
2
- import { Media, ListOfModels, MediaStats, Options, Upload, Stored, UserAppOptionsRequired, MediaMetadata, Storage, StorageFilePaths } from '@lilaquadrat/interfaces';
2
+ import { Media, ListOfModels, MediaStats, Options, Upload, UserAppOptionsRequired, MediaMetadata, Storage, StorageFilePaths, BasicData } from '@lilaquadrat/interfaces';
3
3
  import { type MultipartFile } from '@fastify/multipart';
4
4
  import Immutable from '../Immutable.class.js';
5
5
  export declare class StorageService extends Immutable<Storage> {
6
- buckets: {
7
- cdn: {
8
- public: boolean;
9
- overwrite: boolean;
10
- cache: number;
11
- };
12
- hosting: {
13
- public: boolean;
14
- overwrite: boolean;
15
- cache: number;
16
- };
17
- secure: {
18
- public: boolean;
19
- overwrite: boolean;
20
- cache: number;
21
- };
22
- internal: {
23
- public: boolean;
24
- overwrite: boolean;
25
- cache: number;
26
- };
27
- };
28
6
  model: import("../classes/modelv2.class.js").default<Storage, string>;
29
7
  options: {
30
8
  dataFolder: string;
@@ -40,40 +18,51 @@ export declare class StorageService extends Immutable<Storage> {
40
18
  * The token is cryptographically signed using HMAC-SHA256 and base64url-encoded to be
41
19
  * non-human readable and URL-safe.
42
20
  *
43
- * @param fileId - The file identifier (ObjectId or string) to grant access to
44
21
  * @param expiresIn - Time in seconds until the token expires (default: 3600 = 1 hour)
45
22
  * @param limits - Optional restrictions to apply to the token
23
+ * @param limits.fileId - Restrict token to specific file (storage _id)
46
24
  * @param limits.company - Restrict token to specific company
47
25
  * @param limits.project - Restrict token to specific project
48
26
  * @param limits.app - Restrict token to specific app
49
27
  * @param limits.url - Restrict token to specific URL path prefix
50
28
  * @param limits.prefix - Restrict token to specific file prefix
29
+ * @param limits.customer - Restrict token to specific customer
30
+ * @param limits.list - Restrict token to specific list
51
31
  *
52
- * @returns Base64url-encoded token containing: fileId:expires[:limits]:signature
32
+ * @returns Base64url-encoded token containing: expires[:limits]:signature
53
33
  *
54
34
  * @example
55
35
  * // Generate token valid for 1 hour with no restrictions
56
- * const { token } = getSecureToken('507f1f77bcf86cd799439011', 3600);
36
+ * const { token } = getSecureToken(3600);
57
37
  *
58
38
  * @example
59
39
  * // Generate token limited to specific company and project
60
- * const { token } = getSecureToken('507f1f77bcf86cd799439011', 3600, {
40
+ * const { token } = getSecureToken(3600, {
61
41
  * company: 'acme',
62
42
  * project: 'website'
63
43
  * });
64
44
  *
65
45
  * @example
46
+ * // Generate token limited to specific file
47
+ * const { token } = getSecureToken(3600, {
48
+ * fileId: '507f1f77bcf86cd799439011'
49
+ * });
50
+ *
51
+ * @example
66
52
  * // Generate token limited to specific URL path
67
- * const { token } = getSecureToken('507f1f77bcf86cd799439011', 3600, {
53
+ * const { token } = getSecureToken(3600, {
68
54
  * url: '/company/project/files/'
69
55
  * });
70
56
  */
71
- getSecureToken(fileId: string | ObjectId, expiresIn?: number, limits?: {
57
+ getSecureToken(expiresIn?: number, limits?: {
58
+ fileId?: string;
72
59
  company?: string;
73
60
  project?: string;
74
61
  app?: string;
75
62
  url?: string;
76
63
  prefix?: string;
64
+ customer?: string;
65
+ list?: string;
77
66
  }): {
78
67
  token: string;
79
68
  expiresIn: number;
@@ -110,11 +99,14 @@ export declare class StorageService extends Immutable<Storage> {
110
99
  * });
111
100
  */
112
101
  validateSecureToken(token: string, checkLimits?: {
102
+ fileId?: string;
113
103
  company?: string;
114
104
  project?: string;
115
105
  app?: string;
116
106
  url?: string;
117
107
  prefix?: string;
108
+ customer?: string;
109
+ list?: string;
118
110
  }): boolean;
119
111
  /**
120
112
  * Creates a secure download URL with time-limited token for a storage file.
@@ -144,11 +136,11 @@ export declare class StorageService extends Immutable<Storage> {
144
136
  url: string;
145
137
  expiresAt: number;
146
138
  }>;
147
- handleFile(uploadInternalId: ObjectId, index: number, file: MultipartFile | undefined): Promise<Stored<Upload>>;
139
+ handleFile(uploadInternalId: ObjectId, index: number, file: MultipartFile | undefined): Promise<import("@lilaquadrat/interfaces").Stored<Upload>>;
148
140
  complete(upload: Upload, options?: {
149
141
  useNode?: boolean;
150
142
  }): Promise<StorageFilePaths>;
151
- writeFile(data: MultipartFile['file'] | Upload['paths'], index: number | undefined, internalId: ObjectId, type: 'upload' | 'file', options?: {
143
+ writeFile(data: MultipartFile['file'] | Upload['paths'] | string, index: number | undefined, internalId: ObjectId, type: 'upload' | 'file' | 'copy', options?: {
152
144
  useNode?: boolean;
153
145
  }): Promise<StorageFilePaths>;
154
146
  writeFileVersion(data: Buffer, internalId: ObjectId, version: string): Promise<StorageFilePaths>;
@@ -164,27 +156,64 @@ export declare class StorageService extends Immutable<Storage> {
164
156
  uploadPath(uploadId: string, index: number): StorageFilePaths;
165
157
  static sanitizeName(name: string): string;
166
158
  getMetadata(upload: Upload, metadata?: MediaMetadata): MediaMetadata;
167
- get(company: string, project?: string, app?: string, query?: any, limit?: {
159
+ get(select: {
160
+ company: string;
161
+ project?: string;
162
+ app?: string;
163
+ list?: ObjectId;
164
+ customer?: ObjectId;
165
+ assetId?: string[];
166
+ query?: {
167
+ tags?: string | string[];
168
+ search?: string;
169
+ prefix?: string;
170
+ ignorePrefix?: boolean;
171
+ populateAssetId?: boolean;
172
+ };
173
+ }, limit?: {
168
174
  skip: number;
169
175
  limit: number;
170
176
  }): Promise<ListOfModels<Media>>;
177
+ /**
178
+ * Get all files for a company/project with optional prefix filtering.
179
+ * Returns a flat list of all matching files without creating virtual folders.
180
+ *
181
+ * @param company - Company identifier
182
+ * @param project - Optional project identifier
183
+ * @param app - Optional app identifier
184
+ * @param prefix - Optional prefix to filter files (e.g., "folder/subfolder")
185
+ * @param limit - Optional pagination with skip and limit
186
+ * @returns Promise with all matching files and count
187
+ */
188
+ getAllFiles(company: string, project?: string, app?: string, prefix?: string, limit?: {
189
+ skip: number;
190
+ limit: number;
191
+ }): Promise<ListOfModels<Storage>>;
171
192
  getTags(company: string, project: string, search: string): Promise<string[]>;
172
193
  single(company: string, project: string, filename: string): Promise<Media | null>;
173
194
  content(company: string, project: string, id: ObjectId): Promise<Media | null>;
174
195
  /**
175
196
  * checks if the file was already successfully uploaded
176
197
  */
177
- exists(filename: string, prefix: string | undefined, app: string, options: {
198
+ exists(filename: string, prefix: string | undefined, app: string, customer: ObjectId | undefined, list: ObjectId | undefined, options: {
178
199
  company: string;
179
200
  project: string | undefined;
180
201
  }): Promise<boolean>;
181
- matchSortTags(documents: any[], search: RegExp | string, sort: string): string[];
202
+ /**
203
+ * counts non-versioned storage documents bound to a specific assetId
204
+ */
205
+ countByAssetId(assetId: string, app: string, customer: ObjectId | undefined, list: ObjectId | undefined, options: {
206
+ company: string;
207
+ project: string | undefined;
208
+ }): Promise<number>;
209
+ matchSortTags(documents: Storage[], search: RegExp | string, sort: string): string[];
182
210
  checkAllowedSize(filesize: number, allowedSize: number): boolean;
183
- stats(company: string, project: string): Promise<MediaStats>;
184
- getByInternalId(internalId: ObjectId, options: Required<Options>): Promise<import("mongodb").WithId<Storage> | null>;
185
- getPathByFilename(filename: string, app: string, options: Required<Options>): Promise<import("mongodb").WithId<Storage> | null>;
186
- getByFilename(filename: string, prefix: string | undefined, bucket: string, options: Required<Options>): Promise<import("mongodb").WithId<Storage> | null>;
187
- removeBlob(internalId: ObjectId, options: Required<UserAppOptionsRequired>): Promise<import("mongodb").DeleteResult>;
211
+ stats(company: string, project: string, customer?: ObjectId): Promise<MediaStats>;
212
+ getByInternalId(internalId: ObjectId, options: Required<Options>): Promise<BasicData<Storage> | null>;
213
+ getPathByFilename(filename: string, app: string, customer: ObjectId | undefined, list: ObjectId | undefined, options: Options): Promise<import("mongodb").WithId<Storage> | null>;
214
+ getByFilename(filename: string, prefix: string | undefined, app: string, customer: ObjectId | undefined, list: ObjectId | undefined, options: Required<Options>): Promise<BasicData<Storage> | null>;
215
+ removeBlobMembers(internalId: ObjectId, customer: ObjectId, options: Required<UserAppOptionsRequired>): Promise<void>;
216
+ removeBlob(internalId: ObjectId, options: Required<UserAppOptionsRequired>): Promise<void>;
188
217
  removeBlobVersion(parentId: ObjectId, options: Required<UserAppOptionsRequired>): Promise<void>;
189
218
  }
190
219
  declare const _default: StorageService;