@syngrisi/syngrisi 2.2.2 → 2.2.6-alpha.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 (613) hide show
  1. package/README.md +49 -27
  2. package/dist/server/api-docs/openAPIDocumentGenerator.js +6489 -0
  3. package/dist/server/api-docs/openAPIDocumentGenerator.js.map +1 -0
  4. package/dist/server/api-docs/openAPIResponseBuilders.js +89 -0
  5. package/dist/server/api-docs/openAPIResponseBuilders.js.map +1 -0
  6. package/dist/server/api-docs/openAPIRouter.js +6505 -0
  7. package/dist/server/api-docs/openAPIRouter.js.map +1 -0
  8. package/dist/server/api-docs/serviceResponse.js +39 -0
  9. package/dist/server/api-docs/serviceResponse.js.map +1 -0
  10. package/dist/server/app.js +6751 -0
  11. package/dist/server/app.js.map +1 -0
  12. package/dist/server/config.js +1055 -0
  13. package/dist/server/config.js.map +1 -0
  14. package/dist/server/controllers/app.controller.js +1949 -0
  15. package/dist/server/controllers/app.controller.js.map +1 -0
  16. package/dist/server/controllers/auth.controller.js +2079 -0
  17. package/dist/server/controllers/auth.controller.js.map +1 -0
  18. package/dist/server/controllers/baseline.controller.js +1976 -0
  19. package/dist/server/controllers/baseline.controller.js.map +1 -0
  20. package/dist/server/controllers/check.controller.js +2289 -0
  21. package/dist/server/controllers/check.controller.js.map +1 -0
  22. package/dist/server/controllers/client.controller.js +2994 -0
  23. package/dist/server/controllers/client.controller.js.map +1 -0
  24. package/dist/server/controllers/index.js +4289 -0
  25. package/dist/server/controllers/index.js.map +1 -0
  26. package/dist/server/controllers/logs.controller.js +1954 -0
  27. package/dist/server/controllers/logs.controller.js.map +1 -0
  28. package/dist/server/controllers/runs.controller.js +2293 -0
  29. package/dist/server/controllers/runs.controller.js.map +1 -0
  30. package/dist/server/controllers/settings.controller.js +843 -0
  31. package/dist/server/controllers/settings.controller.js.map +1 -0
  32. package/dist/server/controllers/snapshots.controller.js +1953 -0
  33. package/dist/server/controllers/snapshots.controller.js.map +1 -0
  34. package/dist/server/controllers/suite.controller.js +2288 -0
  35. package/dist/server/controllers/suite.controller.js.map +1 -0
  36. package/dist/server/controllers/tasks.controller.js +2378 -0
  37. package/dist/server/controllers/tasks.controller.js.map +1 -0
  38. package/dist/server/controllers/test.controller.js +2312 -0
  39. package/dist/server/controllers/test.controller.js.map +1 -0
  40. package/dist/server/controllers/users.controller.js +2056 -0
  41. package/dist/server/controllers/users.controller.js.map +1 -0
  42. package/dist/server/envConfig.js +70 -0
  43. package/dist/server/envConfig.js.map +1 -0
  44. package/dist/server/lib/AppSettings/AppSettings.js +814 -0
  45. package/dist/server/lib/AppSettings/AppSettings.js.map +1 -0
  46. package/dist/server/lib/AppSettings/index.js +814 -0
  47. package/dist/server/lib/AppSettings/index.js.map +1 -0
  48. package/dist/server/lib/connectDb.js +1873 -0
  49. package/dist/server/lib/connectDb.js.map +1 -0
  50. package/dist/server/lib/dbItems/createAppIfNotExist.js +1878 -0
  51. package/dist/server/lib/dbItems/createAppIfNotExist.js.map +1 -0
  52. package/dist/server/lib/dbItems/createItemIfNotExist.js +1883 -0
  53. package/dist/server/lib/dbItems/createItemIfNotExist.js.map +1 -0
  54. package/dist/server/lib/dbItems/createItemProm.js +1877 -0
  55. package/dist/server/lib/dbItems/createItemProm.js.map +1 -0
  56. package/dist/server/lib/dbItems/createRunIfNotExist.js +1898 -0
  57. package/dist/server/lib/dbItems/createRunIfNotExist.js.map +1 -0
  58. package/dist/server/lib/dbItems/createSuiteIfNotExist.js +1878 -0
  59. package/dist/server/lib/dbItems/createSuiteIfNotExist.js.map +1 -0
  60. package/dist/server/lib/dbItems/createTest.js +1884 -0
  61. package/dist/server/lib/dbItems/createTest.js.map +1 -0
  62. package/dist/server/lib/dbItems/createUser.js +1884 -0
  63. package/dist/server/lib/dbItems/createUser.js.map +1 -0
  64. package/dist/server/lib/dbItems/index.js +2043 -0
  65. package/dist/server/lib/dbItems/index.js.map +1 -0
  66. package/dist/server/lib/dbItems/updateItem.js +1873 -0
  67. package/dist/server/lib/dbItems/updateItem.js.map +1 -0
  68. package/dist/server/lib/dbItems/updateItemDate.js +1872 -0
  69. package/dist/server/lib/dbItems/updateItemDate.js.map +1 -0
  70. package/dist/server/lib/httpLogger.js +1066 -0
  71. package/dist/server/lib/httpLogger.js.map +1 -0
  72. package/dist/server/lib/logger.js +1852 -0
  73. package/dist/server/lib/logger.js.map +1 -0
  74. package/dist/server/lib/startup/createBasicUsers.js +1901 -0
  75. package/dist/server/lib/startup/createBasicUsers.js.map +1 -0
  76. package/dist/server/lib/startup/createInitialSettings.js +820 -0
  77. package/dist/server/lib/startup/createInitialSettings.js.map +1 -0
  78. package/dist/server/lib/startup/createTempDir.js +1066 -0
  79. package/dist/server/lib/startup/createTempDir.js.map +1 -0
  80. package/dist/server/lib/startup/createTestsUsers.js +1916 -0
  81. package/dist/server/lib/startup/createTestsUsers.js.map +1 -0
  82. package/dist/server/lib/startup/index.js +2071 -0
  83. package/dist/server/lib/startup/index.js.map +1 -0
  84. package/dist/server/lib//321/201omparison/comparator.js +1955 -0
  85. package/dist/server/lib//321/201omparison/comparator.js.map +1 -0
  86. package/dist/server/lib//321/201omparison/compareImagesNode.js +91 -0
  87. package/dist/server/lib//321/201omparison/compareImagesNode.js.map +1 -0
  88. package/dist/server/lib//321/201omparison/index.js +1955 -0
  89. package/dist/server/lib//321/201omparison/index.js.map +1 -0
  90. package/dist/server/middlewares/authorization.js +1994 -0
  91. package/dist/server/middlewares/authorization.js.map +1 -0
  92. package/dist/server/middlewares/compressionFilter.js +47 -0
  93. package/dist/server/middlewares/compressionFilter.js.map +1 -0
  94. package/dist/server/middlewares/disableCors.js +1073 -0
  95. package/dist/server/middlewares/disableCors.js.map +1 -0
  96. package/dist/server/middlewares/ensureLogin/ensureLoggedIn.js +2103 -0
  97. package/dist/server/middlewares/ensureLogin/ensureLoggedIn.js.map +1 -0
  98. package/dist/server/middlewares/ensureLogin/index.js +2087 -0
  99. package/dist/server/middlewares/ensureLogin/index.js.map +1 -0
  100. package/dist/server/middlewares/errorHandler.js +1886 -0
  101. package/dist/server/middlewares/errorHandler.js.map +1 -0
  102. package/dist/server/middlewares/index.js +2025 -0
  103. package/dist/server/middlewares/index.js.map +1 -0
  104. package/dist/server/models/App.model.js +145 -0
  105. package/dist/server/models/App.model.js.map +1 -0
  106. package/dist/server/models/AppSettings.model.js +105 -0
  107. package/dist/server/models/AppSettings.model.js.map +1 -0
  108. package/dist/server/models/Baseline.model.js +187 -0
  109. package/dist/server/models/Baseline.model.js.map +1 -0
  110. package/dist/server/models/Check.model.js +241 -0
  111. package/dist/server/models/Check.model.js.map +1 -0
  112. package/dist/server/models/Log.model.js +139 -0
  113. package/dist/server/models/Log.model.js.map +1 -0
  114. package/dist/server/models/Run.model.js +154 -0
  115. package/dist/server/models/Run.model.js.map +1 -0
  116. package/dist/server/models/Snapshot.model.js +148 -0
  117. package/dist/server/models/Snapshot.model.js.map +1 -0
  118. package/dist/server/models/Suite.model.js +151 -0
  119. package/dist/server/models/Suite.model.js.map +1 -0
  120. package/dist/server/models/Test.model.js +248 -0
  121. package/dist/server/models/Test.model.js.map +1 -0
  122. package/dist/server/models/User.model.js +169 -0
  123. package/dist/server/models/User.model.js.map +1 -0
  124. package/dist/server/models/index.js +720 -0
  125. package/dist/server/models/index.js.map +1 -0
  126. package/dist/server/models/plugins/index.js +159 -0
  127. package/dist/server/models/plugins/index.js.map +1 -0
  128. package/dist/server/models/plugins/paginate.plugin.js +68 -0
  129. package/dist/server/models/plugins/paginate.plugin.js.map +1 -0
  130. package/dist/server/models/plugins/paginateDistinct.plugin.js +73 -0
  131. package/dist/server/models/plugins/paginateDistinct.plugin.js.map +1 -0
  132. package/dist/server/models/plugins/toJSON.plugin.js +56 -0
  133. package/dist/server/models/plugins/toJSON.plugin.js.map +1 -0
  134. package/dist/server/models/plugins/utils.js +19 -0
  135. package/dist/server/models/plugins/utils.js.map +1 -0
  136. package/dist/server/routes/ui/admin.js +2082 -0
  137. package/dist/server/routes/ui/admin.js.map +1 -0
  138. package/dist/server/routes/ui/auth.js +711 -0
  139. package/dist/server/routes/ui/auth.js.map +1 -0
  140. package/dist/server/routes/ui/index.js +2036 -0
  141. package/dist/server/routes/ui/index.js.map +1 -0
  142. package/dist/server/routes/v1/app.route.js +4372 -0
  143. package/dist/server/routes/v1/app.route.js.map +1 -0
  144. package/dist/server/routes/v1/auth.route.js +2325 -0
  145. package/dist/server/routes/v1/auth.route.js.map +1 -0
  146. package/dist/server/routes/v1/baselines.route.js +2487 -0
  147. package/dist/server/routes/v1/baselines.route.js.map +1 -0
  148. package/dist/server/routes/v1/checks.route.js +2840 -0
  149. package/dist/server/routes/v1/checks.route.js.map +1 -0
  150. package/dist/server/routes/v1/client.route.js +3764 -0
  151. package/dist/server/routes/v1/client.route.js.map +1 -0
  152. package/dist/server/routes/v1/index.route.js +6536 -0
  153. package/dist/server/routes/v1/index.route.js.map +1 -0
  154. package/dist/server/routes/v1/logs.route.js +2426 -0
  155. package/dist/server/routes/v1/logs.route.js.map +1 -0
  156. package/dist/server/routes/v1/runs.route.js +2771 -0
  157. package/dist/server/routes/v1/runs.route.js.map +1 -0
  158. package/dist/server/routes/v1/settings.route.js +2349 -0
  159. package/dist/server/routes/v1/settings.route.js.map +1 -0
  160. package/dist/server/routes/v1/snapshots.route.js +2361 -0
  161. package/dist/server/routes/v1/snapshots.route.js.map +1 -0
  162. package/dist/server/routes/v1/suites.route.js +2713 -0
  163. package/dist/server/routes/v1/suites.route.js.map +1 -0
  164. package/dist/server/routes/v1/tasks.route.js +2761 -0
  165. package/dist/server/routes/v1/tasks.route.js.map +1 -0
  166. package/dist/server/routes/v1/test_distinct.route.js +2714 -0
  167. package/dist/server/routes/v1/test_distinct.route.js.map +1 -0
  168. package/dist/server/routes/v1/tests.route.js +2895 -0
  169. package/dist/server/routes/v1/tests.route.js.map +1 -0
  170. package/dist/server/routes/v1/users.route.js +4619 -0
  171. package/dist/server/routes/v1/users.route.js.map +1 -0
  172. package/dist/server/schemas/App.schema.js +102 -0
  173. package/dist/server/schemas/App.schema.js.map +1 -0
  174. package/dist/server/schemas/Auth.schema.js +116 -0
  175. package/dist/server/schemas/Auth.schema.js.map +1 -0
  176. package/dist/server/schemas/Baseline.schema.js +183 -0
  177. package/dist/server/schemas/Baseline.schema.js.map +1 -0
  178. package/dist/server/schemas/Check.schema.js +198 -0
  179. package/dist/server/schemas/Check.schema.js.map +1 -0
  180. package/dist/server/schemas/Client.schema.js +455 -0
  181. package/dist/server/schemas/Client.schema.js.map +1 -0
  182. package/dist/server/schemas/CreateCheck.shema.js +47 -0
  183. package/dist/server/schemas/CreateCheck.shema.js.map +1 -0
  184. package/dist/server/schemas/GetBaseline.shema.js +56 -0
  185. package/dist/server/schemas/GetBaseline.shema.js.map +1 -0
  186. package/dist/server/schemas/Logs.schema.js +140 -0
  187. package/dist/server/schemas/Logs.schema.js.map +1 -0
  188. package/dist/server/schemas/Runs.schema.js +128 -0
  189. package/dist/server/schemas/Runs.schema.js.map +1 -0
  190. package/dist/server/schemas/Settings.schema.js +156 -0
  191. package/dist/server/schemas/Settings.schema.js.map +1 -0
  192. package/dist/server/schemas/SkipValid.schema.js +32 -0
  193. package/dist/server/schemas/SkipValid.schema.js.map +1 -0
  194. package/dist/server/schemas/SnapshotDiff.schema.js +44 -0
  195. package/dist/server/schemas/SnapshotDiff.schema.js.map +1 -0
  196. package/dist/server/schemas/Snapshots.schema.js +115 -0
  197. package/dist/server/schemas/Snapshots.schema.js.map +1 -0
  198. package/dist/server/schemas/Suite.schema.js +114 -0
  199. package/dist/server/schemas/Suite.schema.js.map +1 -0
  200. package/dist/server/schemas/Test.schema.js +204 -0
  201. package/dist/server/schemas/Test.schema.js.map +1 -0
  202. package/dist/server/schemas/TestDistinct.schema.js +63 -0
  203. package/dist/server/schemas/TestDistinct.schema.js.map +1 -0
  204. package/dist/server/schemas/User.schema.js +139 -0
  205. package/dist/server/schemas/User.schema.js.map +1 -0
  206. package/dist/server/schemas/common/ApiError.schema.js +51 -0
  207. package/dist/server/schemas/common/ApiError.schema.js.map +1 -0
  208. package/dist/server/schemas/common/Error.schema.js +47 -0
  209. package/dist/server/schemas/common/Error.schema.js.map +1 -0
  210. package/dist/server/schemas/common/RequestPagination.schema.js +121 -0
  211. package/dist/server/schemas/common/RequestPagination.schema.js.map +1 -0
  212. package/dist/server/schemas/common/Version.schema.js +36 -0
  213. package/dist/server/schemas/common/Version.schema.js.map +1 -0
  214. package/dist/server/schemas/common/requestQueryFilterSchema.schema.js +53 -0
  215. package/dist/server/schemas/common/requestQueryFilterSchema.schema.js.map +1 -0
  216. package/dist/server/schemas/index.js +155 -0
  217. package/dist/server/schemas/index.js.map +1 -0
  218. package/dist/server/schemas/utils/commonValidations.js +82 -0
  219. package/dist/server/schemas/utils/commonValidations.js.map +1 -0
  220. package/dist/server/schemas/utils/createRequestBodySchema.js +32 -0
  221. package/dist/server/schemas/utils/createRequestBodySchema.js.map +1 -0
  222. package/dist/server/schemas/utils/createRequestOpenApiBodySchema.js +35 -0
  223. package/dist/server/schemas/utils/createRequestOpenApiBodySchema.js.map +1 -0
  224. package/dist/server/schemas/utils/createRequestParamsSchema.js +93 -0
  225. package/dist/server/schemas/utils/createRequestParamsSchema.js.map +1 -0
  226. package/dist/server/schemas/utils/createRequestQuerySchema.js +32 -0
  227. package/dist/server/schemas/utils/createRequestQuerySchema.js.map +1 -0
  228. package/dist/server/schemas/utils/index.js +84 -0
  229. package/dist/server/schemas/utils/index.js.map +1 -0
  230. package/dist/server/server.js +6921 -0
  231. package/dist/server/server.js.map +1 -0
  232. package/dist/server/server_old.js +7284 -0
  233. package/dist/server/server_old.js.map +1 -0
  234. package/dist/server/services/app.service.js +696 -0
  235. package/dist/server/services/app.service.js.map +1 -0
  236. package/dist/server/services/auth.service.js +2025 -0
  237. package/dist/server/services/auth.service.js.map +1 -0
  238. package/dist/server/services/check.service.js +2149 -0
  239. package/dist/server/services/check.service.js.map +1 -0
  240. package/dist/server/services/client.service.js +2648 -0
  241. package/dist/server/services/client.service.js.map +1 -0
  242. package/dist/server/services/generic.service.js +1888 -0
  243. package/dist/server/services/generic.service.js.map +1 -0
  244. package/dist/server/services/index.js +3548 -0
  245. package/dist/server/services/index.js.map +1 -0
  246. package/dist/server/services/logs.service.js +1875 -0
  247. package/dist/server/services/logs.service.js.map +1 -0
  248. package/dist/server/services/run.service.js +2221 -0
  249. package/dist/server/services/run.service.js.map +1 -0
  250. package/dist/server/services/snapshot.service.js +1921 -0
  251. package/dist/server/services/snapshot.service.js.map +1 -0
  252. package/dist/server/services/suite.service.js +2218 -0
  253. package/dist/server/services/suite.service.js.map +1 -0
  254. package/dist/server/services/tasks.service.js +2288 -0
  255. package/dist/server/services/tasks.service.js.map +1 -0
  256. package/dist/server/services/test.service.js +2230 -0
  257. package/dist/server/services/test.service.js.map +1 -0
  258. package/dist/server/services/user.service.js +1925 -0
  259. package/dist/server/services/user.service.js.map +1 -0
  260. package/dist/server/utils/ApiError.js +39 -0
  261. package/dist/server/utils/ApiError.js.map +1 -0
  262. package/dist/server/utils/ProgressBar.js +54 -0
  263. package/dist/server/utils/ProgressBar.js.map +1 -0
  264. package/dist/server/utils/ServiceResponse.js +45 -0
  265. package/dist/server/utils/ServiceResponse.js.map +1 -0
  266. package/dist/server/utils/buildIdentObject.js +52 -0
  267. package/dist/server/utils/buildIdentObject.js.map +1 -0
  268. package/dist/server/utils/calculateAcceptedStatus.js +710 -0
  269. package/dist/server/utils/calculateAcceptedStatus.js.map +1 -0
  270. package/dist/server/utils/catchAsync.js +32 -0
  271. package/dist/server/utils/catchAsync.js.map +1 -0
  272. package/dist/server/utils/checkIdent.js +36 -0
  273. package/dist/server/utils/checkIdent.js.map +1 -0
  274. package/dist/server/utils/dateToISO8601.js +30 -0
  275. package/dist/server/utils/dateToISO8601.js.map +1 -0
  276. package/dist/server/utils/deserializeIfJSON.js +706 -0
  277. package/dist/server/utils/deserializeIfJSON.js.map +1 -0
  278. package/dist/server/utils/errMsg.js +33 -0
  279. package/dist/server/utils/errMsg.js.map +1 -0
  280. package/dist/server/utils/formatISOToDateTime.js +31 -0
  281. package/dist/server/utils/formatISOToDateTime.js.map +1 -0
  282. package/dist/server/utils/ident.js +31 -0
  283. package/dist/server/utils/ident.js.map +1 -0
  284. package/dist/server/utils/index.js +910 -0
  285. package/dist/server/utils/index.js.map +1 -0
  286. package/dist/server/utils/isJSON.js +34 -0
  287. package/dist/server/utils/isJSON.js.map +1 -0
  288. package/dist/server/utils/paramsGuard.js +45 -0
  289. package/dist/server/utils/paramsGuard.js.map +1 -0
  290. package/dist/server/utils/pick.js +35 -0
  291. package/dist/server/utils/pick.js.map +1 -0
  292. package/dist/server/utils/prettyCheckParams.js +37 -0
  293. package/dist/server/utils/prettyCheckParams.js.map +1 -0
  294. package/dist/server/utils/removeEmptyProperties.js +34 -0
  295. package/dist/server/utils/removeEmptyProperties.js.map +1 -0
  296. package/dist/server/utils/subDays.js +32 -0
  297. package/dist/server/utils/subDays.js.map +1 -0
  298. package/dist/server/utils/validateRequest.js +1922 -0
  299. package/dist/server/utils/validateRequest.js.map +1 -0
  300. package/dist/server/utils/waitUntil.js +43 -0
  301. package/dist/server/utils/waitUntil.js.map +1 -0
  302. package/dist/tasks/backup.js +1085 -0
  303. package/dist/tasks/backup.js.map +1 -0
  304. package/dist/tasks/lib/index.js +717 -0
  305. package/dist/tasks/lib/index.js.map +1 -0
  306. package/dist/tasks/lib/utils.js +1070 -0
  307. package/dist/tasks/lib/utils.js.map +1 -0
  308. package/dist/tasks/migrations/2.0.migration.js +908 -0
  309. package/dist/tasks/migrations/2.0.migration.js.map +1 -0
  310. package/dist/tasks/reindex.js +1742 -0
  311. package/dist/tasks/reindex.js.map +1 -0
  312. package/dist/tasks/restore.js +1097 -0
  313. package/dist/tasks/restore.js.map +1 -0
  314. package/docker-compose.yml +3 -3
  315. package/mvc/views/react/admin/index.html +4 -4
  316. package/mvc/views/react/assets/{LogicalGroup.6c0a9f4a.js → LogicalGroup.80e37bbf.js} +1 -22
  317. package/mvc/views/react/assets/{PasswordInput.b97a4ef7.js → PasswordInput.eb05d2ed.js} +1 -1
  318. package/mvc/views/react/assets/{admin.6d843d1b.js → admin.d6aa02f7.js} +3 -3
  319. package/mvc/views/react/assets/{auth.ecf25364.js → auth.e49d0968.js} +3 -2
  320. package/mvc/views/react/assets/{root.25abcc85.js → root.b071750f.js} +7 -9
  321. package/mvc/views/react/assets/{use-form.10003abf.js → use-form.c4a2cf47.js} +203 -151
  322. package/mvc/views/react/auth/index.html +3 -3
  323. package/mvc/views/react/index2/index.html +3 -3
  324. package/package.json +45 -14
  325. package/src/seeds/testAdmin.json +10 -0
  326. package/src/server/api-docs/openAPIDocumentGenerator.ts +48 -0
  327. package/src/server/api-docs/openAPIResponseBuilders.ts +38 -0
  328. package/src/server/api-docs/openAPIRouter.ts +18 -0
  329. package/src/server/api-docs/serviceResponse.ts +11 -0
  330. package/src/server/app.ts +77 -0
  331. package/src/server/config.ts +57 -0
  332. package/src/server/controllers/app.controller.ts +23 -0
  333. package/src/server/controllers/auth.controller.ts +149 -0
  334. package/src/server/controllers/baseline.controller.ts +32 -0
  335. package/src/server/controllers/{check.controller.js → check.controller.ts} +17 -14
  336. package/src/server/controllers/client.controller.ts +134 -0
  337. package/src/server/controllers/index.ts +27 -0
  338. package/src/server/controllers/logs.controller.ts +36 -0
  339. package/src/server/controllers/runs.controller.ts +32 -0
  340. package/src/server/controllers/settings.controller.ts +28 -0
  341. package/src/server/controllers/snapshots.controller.ts +24 -0
  342. package/src/server/controllers/suite.controller.ts +30 -0
  343. package/src/server/controllers/tasks.controller.ts +47 -0
  344. package/src/server/controllers/test.controller.ts +62 -0
  345. package/src/server/controllers/users.controller.ts +89 -0
  346. package/src/server/envConfig.ts +36 -0
  347. package/src/server/lib/AppSettings/AppSettings.ts +88 -0
  348. package/src/server/lib/AppSettings/index.ts +1 -0
  349. package/src/server/lib/connectDb.ts +18 -0
  350. package/src/server/lib/dbItems/createAppIfNotExist.ts +26 -0
  351. package/src/server/lib/dbItems/createItemIfNotExist.ts +29 -0
  352. package/src/server/lib/dbItems/createItemProm.ts +22 -0
  353. package/src/server/lib/dbItems/createRunIfNotExist.ts +44 -0
  354. package/src/server/lib/dbItems/createSuiteIfNotExist.ts +26 -0
  355. package/src/server/lib/dbItems/createTest.ts +7 -0
  356. package/src/server/lib/dbItems/createUser.ts +7 -0
  357. package/src/server/lib/dbItems/index.ts +12 -0
  358. package/src/server/lib/dbItems/updateItem.ts +17 -0
  359. package/src/server/lib/dbItems/updateItemDate.ts +18 -0
  360. package/src/server/lib/httpLogger.ts +14 -0
  361. package/src/server/lib/logger.ts +147 -0
  362. package/src/server/lib/startup/createBasicUsers.ts +25 -0
  363. package/src/server/lib/startup/createInitialSettings.ts +8 -0
  364. package/src/server/lib/startup/createTempDir.ts +9 -0
  365. package/src/server/lib/startup/createTestsUsers.ts +17 -0
  366. package/src/server/lib/startup/index.ts +4 -0
  367. package/src/server/lib//321/201omparison/comparator.ts +49 -0
  368. package/src/server/lib//321/201omparison/compareImagesNode.ts +61 -0
  369. package/src/server/lib//321/201omparison/index.ts +1 -0
  370. package/src/server/middlewares/{authorization.js → authorization.ts} +23 -14
  371. package/src/server/middlewares/compressionFilter.ts +9 -0
  372. package/src/server/middlewares/disableCors.ts +32 -0
  373. package/src/server/{lib/ensureLogin/ensureLoggedIn.js → middlewares/ensureLogin/ensureLoggedIn.ts} +60 -63
  374. package/src/server/middlewares/ensureLogin/index.ts +2 -0
  375. package/src/server/middlewares/errorHandler.ts +42 -0
  376. package/src/server/middlewares/index.ts +4 -0
  377. package/src/server/models/App.model.ts +42 -0
  378. package/src/server/models/AppSettings.model.ts +48 -0
  379. package/src/server/models/Baseline.model.ts +98 -0
  380. package/src/server/models/Check.model.ts +166 -0
  381. package/src/server/models/Log.model.ts +36 -0
  382. package/src/server/models/Run.model.ts +55 -0
  383. package/src/server/models/Snapshot.model.ts +47 -0
  384. package/src/server/models/Suite.model.ts +50 -0
  385. package/src/server/models/Test.model.ts +117 -0
  386. package/src/server/models/User.model.ts +77 -0
  387. package/src/server/models/index.ts +11 -0
  388. package/src/server/models/plugins/index.ts +3 -0
  389. package/src/server/models/plugins/paginate.plugin.ts +74 -0
  390. package/src/server/models/plugins/paginateDistinct.plugin.ts +90 -0
  391. package/src/server/models/plugins/toJSON.plugin.ts +41 -0
  392. package/src/server/models/plugins/utils.ts +34 -0
  393. package/src/server/routes/ui/admin.ts +29 -0
  394. package/src/server/routes/ui/auth.ts +22 -0
  395. package/src/server/routes/ui/index.ts +25 -0
  396. package/src/server/routes/v1/app.route.ts +48 -0
  397. package/src/server/routes/v1/auth.route.ts +88 -0
  398. package/src/server/routes/v1/baselines.route.ts +52 -0
  399. package/src/server/routes/v1/checks.route.ts +85 -0
  400. package/src/server/routes/v1/client.route.ts +123 -0
  401. package/src/server/routes/v1/{index.js → index.route.ts} +16 -16
  402. package/src/server/routes/v1/logs.route.ts +65 -0
  403. package/src/server/routes/v1/runs.route.ts +55 -0
  404. package/src/server/routes/v1/settings.route.ts +54 -0
  405. package/src/server/routes/v1/snapshots.route.ts +32 -0
  406. package/src/server/routes/v1/suites.route.ts +52 -0
  407. package/src/server/routes/v1/tasks.route.ts +121 -0
  408. package/src/server/routes/v1/test_distinct.route.ts +32 -0
  409. package/src/server/routes/v1/tests.route.ts +90 -0
  410. package/src/server/routes/v1/users.route.ts +115 -0
  411. package/src/server/schemas/App.schema.ts +19 -0
  412. package/src/server/schemas/Auth.schema.ts +27 -0
  413. package/src/server/schemas/Baseline.schema.ts +106 -0
  414. package/src/server/schemas/Check.schema.ts +117 -0
  415. package/src/server/schemas/Client.schema.ts +380 -0
  416. package/src/server/schemas/GetBaseline.shema.ts +34 -0
  417. package/src/server/schemas/Logs.schema.ts +61 -0
  418. package/src/server/schemas/Runs.schema.ts +45 -0
  419. package/src/server/schemas/Settings.schema.ts +71 -0
  420. package/src/server/schemas/SkipValid.schema.ts +2 -0
  421. package/src/server/schemas/SnapshotDiff.schema.ts +18 -0
  422. package/src/server/schemas/Snapshots.schema.ts +42 -0
  423. package/src/server/schemas/Suite.schema.ts +34 -0
  424. package/src/server/schemas/Test.schema.ts +126 -0
  425. package/src/server/schemas/TestDistinct.schema.ts +36 -0
  426. package/src/server/schemas/User.schema.ts +59 -0
  427. package/src/server/schemas/common/ApiError.schema.ts +23 -0
  428. package/src/server/schemas/common/Error.schema.ts +19 -0
  429. package/src/server/schemas/common/RequestPagination.schema.ts +16 -0
  430. package/src/server/schemas/common/Version.schema.ts +14 -0
  431. package/src/server/schemas/common/requestQueryFilterSchema.schema.ts +32 -0
  432. package/src/server/schemas/index.ts +4 -0
  433. package/src/server/schemas/utils/commonValidations.ts +51 -0
  434. package/src/server/schemas/utils/createRequestBodySchema.ts +2 -0
  435. package/src/server/schemas/utils/createRequestOpenApiBodySchema.ts +6 -0
  436. package/src/server/schemas/utils/createRequestParamsSchema.ts +7 -0
  437. package/src/server/schemas/utils/createRequestQuerySchema.ts +2 -0
  438. package/src/server/schemas/utils/index.ts +3 -0
  439. package/src/server/server.ts +54 -0
  440. package/src/server/server_old.ts +185 -0
  441. package/src/server/services/app.service.ts +9 -0
  442. package/src/server/services/auth.service.ts +94 -0
  443. package/src/server/services/check.service.ts +241 -0
  444. package/src/server/services/client.service.ts +691 -0
  445. package/src/server/services/generic.service.ts +37 -0
  446. package/src/server/services/index.ts +24 -0
  447. package/src/server/services/logs.service.ts +27 -0
  448. package/src/server/services/run.service.ts +32 -0
  449. package/src/server/services/snapshot.service.ts +78 -0
  450. package/src/server/services/suite.service.ts +30 -0
  451. package/src/server/services/{tasks.service.js → tasks.service.ts} +157 -228
  452. package/src/server/services/test.service.ts +65 -0
  453. package/src/server/services/user.service.ts +90 -0
  454. package/src/server/utils/{ApiError.js → ApiError.ts} +5 -2
  455. package/src/server/utils/ProgressBar.ts +35 -0
  456. package/src/server/utils/ServiceResponse.ts +18 -0
  457. package/src/server/utils/buildIdentObject.ts +34 -0
  458. package/src/server/utils/calculateAcceptedStatus.ts +22 -0
  459. package/src/server/utils/catchAsync.ts +11 -0
  460. package/src/server/utils/checkIdent.ts +4 -0
  461. package/src/server/utils/dateToISO8601.ts +5 -0
  462. package/src/server/utils/deserializeIfJSON.ts +9 -0
  463. package/src/server/utils/errMsg.ts +3 -0
  464. package/src/server/utils/{formatISOToDateTime.js → formatISOToDateTime.ts} +2 -2
  465. package/src/server/utils/ident.ts +1 -0
  466. package/src/server/utils/index.ts +24 -0
  467. package/src/server/utils/isJSON.ts +14 -0
  468. package/src/server/utils/paramsGuard.ts +7 -6
  469. package/src/server/utils/pick.ts +17 -0
  470. package/src/server/utils/prettyCheckParams.ts +18 -0
  471. package/src/server/utils/removeEmptyProperties.ts +5 -0
  472. package/src/server/utils/{subDays.js → subDays.ts} +2 -2
  473. package/src/server/utils/validateRequest.ts +56 -0
  474. package/src/server/utils/waitUntil.ts +14 -0
  475. package/src/tasks/backup.ts +1 -1
  476. package/src/tasks/lib/index.ts +13 -0
  477. package/src/tasks/lib/utils.ts +14 -0
  478. package/src/tasks/migrations/2.0.migration.ts +2 -2
  479. package/src/tasks/reindex.ts +34 -0
  480. package/src/tasks/restore.ts +1 -1
  481. package/src/types/ExtRequest.ts +10 -0
  482. package/src/types/LogOpts.ts +20 -0
  483. package/src/types/Midleware.ts +3 -0
  484. package/src/types/RequestUser.ts +14 -0
  485. package/src/types/index.ts +4 -0
  486. package/src/ui-app/README.md +2 -2
  487. package/src/ui-app/auth/components/ChangePasswordForm.tsx +1 -1
  488. package/src/ui-app/index2/components/Tests/Table/Checks/CheckDetails/Canvas/mainView.ts +3 -3
  489. package/src/ui-app/index2/components/Tests/Table/Checks/Checks.tsx +30 -2
  490. package/src/ui-app/package-lock.json +10 -16
  491. package/src/ui-app/package.json +2 -2
  492. package/src/ui-app/shared/services/checks.service.ts +1 -1
  493. package/src/ui-app/shared/services/generic.service.ts +0 -28
  494. package/src/ui-app/tsconfig.json +3 -2
  495. package/config.js +0 -17
  496. package/dist/config.js +0 -16
  497. package/dist/src/server/models/index.js +0 -508
  498. package/dist/src/server/models/plugins/index.js +0 -4
  499. package/dist/src/server/models/plugins/paginate.plugin.js +0 -76
  500. package/dist/src/server/models/plugins/paginateDistinct.plugin.js +0 -76
  501. package/dist/src/server/models/plugins/toJSON.plugin.js +0 -39
  502. package/dist/src/server/schemas/createCheck.shema.js +0 -17
  503. package/dist/src/server/schemas/getBaseline.shema.js +0 -12
  504. package/dist/src/server/utils/paramsGuard.js +0 -18
  505. package/dist/src/tasks/backup.js +0 -68
  506. package/dist/src/tasks/lib/common.js +0 -14
  507. package/dist/src/tasks/lib/utils.js +0 -14
  508. package/dist/src/tasks/migrations/2.0.migration.js +0 -86
  509. package/dist/src/tasks/migrations/2.0.migration_mql.js +0 -57
  510. package/dist/src/tasks/reindex.js +0 -28
  511. package/dist/src/tasks/restore.js +0 -86
  512. package/dist/tsconfig.tsbuildinfo +0 -1
  513. package/mvc/views/react/index.html +0 -19
  514. package/server.js +0 -166
  515. package/src/server/controllers/app.controller.js +0 -21
  516. package/src/server/controllers/auth.controller.js +0 -156
  517. package/src/server/controllers/baseline.controller.js +0 -24
  518. package/src/server/controllers/client.controller.js +0 -173
  519. package/src/server/controllers/index.js +0 -12
  520. package/src/server/controllers/logs.controller.js +0 -30
  521. package/src/server/controllers/runs.controller.js +0 -25
  522. package/src/server/controllers/settings.controller.js +0 -23
  523. package/src/server/controllers/snapshots.controller.js +0 -17
  524. package/src/server/controllers/suite.controller.js +0 -24
  525. package/src/server/controllers/tasks.controller.js +0 -47
  526. package/src/server/controllers/test.controller.js +0 -70
  527. package/src/server/controllers/users.controller.js +0 -79
  528. package/src/server/data/custom_devices.json +0 -8
  529. package/src/server/lib/AppSettings.js +0 -56
  530. package/src/server/lib/comparator.js +0 -147
  531. package/src/server/lib/compareImagesNode.js +0 -60
  532. package/src/server/lib/dbItems.js +0 -215
  533. package/src/server/lib/ensureLogin/ensureLoggedOut.js +0 -44
  534. package/src/server/lib/getElementsByPixPositionsFromDump.js +0 -72
  535. package/src/server/lib/logger.js +0 -95
  536. package/src/server/lib/onStart.js +0 -53
  537. package/src/server/lib/parseDiff.js.bak +0 -72
  538. package/src/server/middlewares/disableCors.js +0 -19
  539. package/src/server/models/index.js +0 -534
  540. package/src/server/models/plugins/index.js +0 -3
  541. package/src/server/models/plugins/paginate.plugin.js +0 -83
  542. package/src/server/models/plugins/paginateDistinct.plugin.js +0 -80
  543. package/src/server/models/plugins/toJSON.plugin.js +0 -44
  544. package/src/server/routes/ui/admin.js +0 -20
  545. package/src/server/routes/ui/auth.js +0 -15
  546. package/src/server/routes/ui/index.js +0 -19
  547. package/src/server/routes/v1/app.route.js +0 -9
  548. package/src/server/routes/v1/auth.route.js +0 -12
  549. package/src/server/routes/v1/baselines.route.js +0 -14
  550. package/src/server/routes/v1/checks.route.js +0 -25
  551. package/src/server/routes/v1/client.route.js +0 -39
  552. package/src/server/routes/v1/logs.route.js +0 -16
  553. package/src/server/routes/v1/runs.route.js +0 -15
  554. package/src/server/routes/v1/settings.route.js +0 -23
  555. package/src/server/routes/v1/snapshots.route.js +0 -11
  556. package/src/server/routes/v1/suites.route.js +0 -15
  557. package/src/server/routes/v1/tasks.route.js +0 -59
  558. package/src/server/routes/v1/test.route.js +0 -20
  559. package/src/server/routes/v1/test_distinct.route.js +0 -14
  560. package/src/server/routes/v1/users.route.js +0 -36
  561. package/src/server/schemas/getBaseline.shema.ts +0 -12
  562. package/src/server/services/app.service.js +0 -23
  563. package/src/server/services/check.service.js +0 -178
  564. package/src/server/services/client.service.js +0 -648
  565. package/src/server/services/generic.service.js +0 -51
  566. package/src/server/services/index.js +0 -12
  567. package/src/server/services/logs.service.js +0 -38
  568. package/src/server/services/run.service.js +0 -40
  569. package/src/server/services/suite.service.js +0 -39
  570. package/src/server/services/test.service.js +0 -72
  571. package/src/server/services/user.service.js +0 -128
  572. package/src/server/utils/catchAsync.js +0 -8
  573. package/src/server/utils/check.js +0 -58
  574. package/src/server/utils/dateToISO8601.js +0 -2
  575. package/src/server/utils/deserializeIfJSON.js +0 -9
  576. package/src/server/utils/index.js +0 -10
  577. package/src/server/utils/isJSON.js +0 -6
  578. package/src/server/utils/pick.js +0 -15
  579. package/src/server/utils/prettyCheckParams.js +0 -13
  580. package/src/server/utils/snapshots.js +0 -73
  581. package/src/server/utils/tests.js +0 -36
  582. package/src/server/utils/utils.js +0 -146
  583. package/src/tasks/backup.js.bak +0 -84
  584. package/src/tasks/lib/common.js +0 -24
  585. package/src/tasks/lib/utils.js +0 -15
  586. package/src/tasks/reindex.js +0 -36
  587. package/src/tasks/restore.js.bak +0 -100
  588. package/src/ui-app/tsconfig.node.json +0 -12
  589. package/static/js/canvasjs.min.js.bak +0 -957
  590. package/static/js/chart.js.bak +0 -92
  591. package/static/js/jquery-3.3.1.slim.js.bak +0 -8269
  592. package/static/js/jquery-3.3.1.slim.min.js.bak +0 -2
  593. package/static/js/moment.min.js.bak +0 -2
  594. /package/src/{server/lib → seeds}/admin.json +0 -0
  595. /package/src/{server/lib → seeds}/guest.json +0 -0
  596. /package/src/{server/lib → seeds}/initialAppSettings.json +0 -0
  597. /package/src/{server/lib/testAdmin.json → seeds/testAdmin copy.json} +0 -0
  598. /package/src/{server/lib → seeds}/testUsers.json +0 -0
  599. /package/src/server/schemas/{createCheck.shema.ts → CreateCheck.shema.ts} +0 -0
  600. /package/{static → src/server/static/static}/A.png +0 -0
  601. /package/{static → src/server/static/static}/B.png +0 -0
  602. /package/{static → src/server/static/static}/affected.html +0 -0
  603. /package/{static → src/server/static/static}/affected_2.html +0 -0
  604. /package/{static → src/server/static/static}/data/custom_devices.json +0 -0
  605. /package/{static → src/server/static/static}/grids/desktop-higher.html +0 -0
  606. /package/{static → src/server/static/static}/grids/desktop-wider.html +0 -0
  607. /package/{static → src/server/static/static}/grids/desktop.html +0 -0
  608. /package/{static → src/server/static/static}/grids/fit-in-view.html +0 -0
  609. /package/{static → src/server/static/static}/low_diff_0.png +0 -0
  610. /package/{static → src/server/static/static}/low_diff_1.png +0 -0
  611. /package/{static → src/server/static/static}/vShift.png +0 -0
  612. /package/{static → src/server/static/static}/vShift_bottom.png +0 -0
  613. /package/{static → src/server/static/static}/vShift_top.png +0 -0
@@ -0,0 +1,1925 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/server/services/user.service.ts
31
+ var user_service_exports = {};
32
+ __export(user_service_exports, {
33
+ createUser: () => createUser,
34
+ deleteUserById: () => deleteUserById,
35
+ getUserByEmail: () => getUserByEmail,
36
+ getUserById: () => getUserById,
37
+ queryUsers: () => queryUsers,
38
+ updateUserById: () => updateUserById
39
+ });
40
+ module.exports = __toCommonJS(user_service_exports);
41
+ var import_http_status = __toESM(require("http-status"));
42
+
43
+ // src/server/models/Check.model.ts
44
+ var import_mongoose = __toESM(require("mongoose"));
45
+
46
+ // src/server/models/plugins/paginate.plugin.ts
47
+ var paginate = (schema) => {
48
+ schema.statics.paginate = async function(filter, options) {
49
+ let sort;
50
+ if (options.sortBy) {
51
+ const sortingCriteria = [];
52
+ options.sortBy.split(",").forEach((sortOption) => {
53
+ const [key, order] = sortOption.split(":");
54
+ sortingCriteria.push((order === "desc" ? "-" : "") + key);
55
+ });
56
+ sort = sortingCriteria.join(" ");
57
+ } else {
58
+ sort = { _id: -1 };
59
+ }
60
+ const limit = options.limit && parseInt(options.limit.toString(), 10) >= 0 ? parseInt(options.limit.toString(), 10) : 10;
61
+ const page = options.page && parseInt(options.page.toString(), 10) > 0 ? parseInt(options.page.toString(), 10) : 1;
62
+ const skip = (page - 1) * limit;
63
+ const countPromise = this.countDocuments(filter).exec();
64
+ let docsPromise = this.find(filter).sort(sort).skip(skip).limit(limit);
65
+ if (options.populate) {
66
+ options.populate.split(",").forEach((populateOption) => {
67
+ docsPromise = docsPromise.populate(
68
+ populateOption.split(".").reverse().reduce((a, b) => ({ path: b, populate: a }))
69
+ );
70
+ });
71
+ }
72
+ docsPromise = docsPromise.exec();
73
+ return Promise.all([countPromise, docsPromise]).then((values) => {
74
+ const [totalResults, results] = values;
75
+ const totalPages = Math.ceil(totalResults / limit);
76
+ const result = {
77
+ results,
78
+ page,
79
+ limit,
80
+ totalPages,
81
+ totalResults,
82
+ timestamp: Number(Date.now() + String(process.hrtime()[1]).slice(3, 6))
83
+ };
84
+ return Promise.resolve(result);
85
+ });
86
+ };
87
+ };
88
+ var paginate_plugin_default = paginate;
89
+
90
+ // src/server/models/plugins/toJSON.plugin.ts
91
+ var deleteAtPath = (obj, path3, index) => {
92
+ if (index === path3.length - 1) {
93
+ delete obj[path3[index]];
94
+ return;
95
+ }
96
+ deleteAtPath(obj[path3[index]], path3, index + 1);
97
+ };
98
+ var toJSON = (schema) => {
99
+ let transform;
100
+ if (schema.options.toJSON && schema.options.toJSON.transform) {
101
+ transform = schema.options.toJSON.transform;
102
+ }
103
+ schema.options.toJSON = Object.assign(schema.options.toJSON || {}, {
104
+ transform(doc, ret, options) {
105
+ Object.keys(schema.paths).forEach((path3) => {
106
+ if (schema.paths[path3].options && schema.paths[path3].options.private) {
107
+ deleteAtPath(ret, path3.split("."), 0);
108
+ }
109
+ });
110
+ ret.id = ret._id.toString();
111
+ delete ret.__v;
112
+ delete ret.createdAt;
113
+ delete ret.updatedAt;
114
+ if (transform) {
115
+ return transform(doc, ret, options);
116
+ }
117
+ }
118
+ });
119
+ };
120
+ var toJSON_plugin_default = toJSON;
121
+
122
+ // src/server/models/plugins/paginateDistinct.plugin.ts
123
+ var import_bson = require("bson");
124
+ var paginateDistinct = (schema) => {
125
+ schema.statics.paginateDistinct = async function(filter, options) {
126
+ let sort;
127
+ if (options.sortBy) {
128
+ options.sortBy.split(",").forEach((sortOption) => {
129
+ const [key, order] = sortOption.split(":");
130
+ sort[key] = order === "desc" ? -1 : 1;
131
+ });
132
+ } else {
133
+ sort = { _id: -1 };
134
+ }
135
+ let limit = options.limit && parseInt(options.limit.toString(), 10) >= 0 ? parseInt(options.limit.toString(), 10) : 10;
136
+ limit = limit === 0 ? 9007199254740991 : limit;
137
+ const page = options.page && parseInt(options.page.toString(), 10) > 0 ? parseInt(options.page.toString(), 10) : 1;
138
+ const skip = (page - 1) * limit;
139
+ const groupAggregateObj = { $group: { _id: `$${options.field}` } };
140
+ const documentsCount = (await this.aggregate([groupAggregateObj]).exec()).length;
141
+ const aggregateArr = [
142
+ { $match: import_bson.EJSON.parse(filter.filter || "{}") },
143
+ groupAggregateObj,
144
+ { $sort: sort },
145
+ { $skip: skip },
146
+ { $limit: limit }
147
+ ];
148
+ const aggregatedDocs = (await this.aggregate(aggregateArr)).filter((x) => x._id).map((x) => {
149
+ if (x[options.field]) {
150
+ return x[options.field][0];
151
+ }
152
+ return { name: x._id };
153
+ });
154
+ return Promise.all([documentsCount, aggregatedDocs]).then((values) => {
155
+ const [totalResults, results] = values;
156
+ const totalPages = Math.ceil(totalResults / limit);
157
+ const result = {
158
+ results,
159
+ page,
160
+ limit,
161
+ totalPages,
162
+ totalResults,
163
+ timestamp: (/* @__PURE__ */ new Date()).getTime()
164
+ };
165
+ return Promise.resolve(result);
166
+ });
167
+ };
168
+ };
169
+ var paginateDistinct_plugin_default = paginateDistinct;
170
+
171
+ // src/server/models/Check.model.ts
172
+ var CheckSchema = new import_mongoose.Schema({
173
+ name: {
174
+ type: String,
175
+ required: [true, 'CheckSchema: The "name" field must be required']
176
+ },
177
+ test: {
178
+ type: import_mongoose.Schema.Types.ObjectId,
179
+ ref: "VRSTest",
180
+ required: [true, 'CheckSchema: The "test" field must be required']
181
+ },
182
+ suite: {
183
+ type: import_mongoose.Schema.Types.ObjectId,
184
+ ref: "VRSSuite",
185
+ required: [true, 'CheckSchema: The "suite" field must be required']
186
+ },
187
+ app: {
188
+ type: import_mongoose.Schema.Types.ObjectId,
189
+ ref: "VRSApp",
190
+ required: [true, 'CheckSchema: The "app" field must be required']
191
+ },
192
+ branch: {
193
+ type: String
194
+ },
195
+ realBaselineId: {
196
+ type: import_mongoose.Schema.Types.ObjectId,
197
+ ref: "VRSBaseline"
198
+ },
199
+ baselineId: {
200
+ type: import_mongoose.Schema.Types.ObjectId,
201
+ ref: "VRSSnapshot"
202
+ },
203
+ actualSnapshotId: {
204
+ type: import_mongoose.Schema.Types.ObjectId,
205
+ ref: "VRSSnapshot"
206
+ },
207
+ diffId: {
208
+ type: import_mongoose.Schema.Types.ObjectId,
209
+ ref: "VRSSnapshot"
210
+ },
211
+ createdDate: {
212
+ type: Date,
213
+ required: true,
214
+ default: Date.now
215
+ },
216
+ updatedDate: {
217
+ type: Date
218
+ },
219
+ status: {
220
+ type: [{
221
+ type: String,
222
+ enum: {
223
+ values: ["new", "pending", "approved", "running", "passed", "failed", "aborted"],
224
+ message: "status is required"
225
+ }
226
+ }],
227
+ default: ["new"]
228
+ },
229
+ browserName: {
230
+ type: String
231
+ },
232
+ browserVersion: {
233
+ type: String
234
+ },
235
+ browserFullVersion: {
236
+ type: String
237
+ },
238
+ viewport: {
239
+ type: String
240
+ },
241
+ os: {
242
+ type: String
243
+ },
244
+ domDump: {
245
+ type: String
246
+ },
247
+ result: {
248
+ type: String,
249
+ default: "{}"
250
+ },
251
+ run: {
252
+ type: import_mongoose.Schema.Types.ObjectId
253
+ },
254
+ markedAs: {
255
+ type: String,
256
+ enum: ["bug", "accepted"]
257
+ },
258
+ markedDate: {
259
+ type: Date
260
+ },
261
+ markedById: {
262
+ type: import_mongoose.Schema.Types.ObjectId,
263
+ ref: "VRSUser"
264
+ },
265
+ markedByUsername: {
266
+ type: String
267
+ },
268
+ markedBugComment: {
269
+ type: String
270
+ },
271
+ creatorId: {
272
+ type: import_mongoose.Schema.Types.ObjectId,
273
+ ref: "VRSUser"
274
+ },
275
+ creatorUsername: {
276
+ type: String
277
+ },
278
+ failReasons: {
279
+ type: [String]
280
+ },
281
+ vOffset: {
282
+ type: String
283
+ },
284
+ topStablePixels: {
285
+ type: String
286
+ },
287
+ meta: {
288
+ type: Object
289
+ }
290
+ });
291
+ CheckSchema.plugin(toJSON_plugin_default);
292
+ CheckSchema.plugin(paginate_plugin_default);
293
+ var Check = import_mongoose.default.model("VRSCheck", CheckSchema);
294
+
295
+ // src/server/models/Log.model.ts
296
+ var import_mongoose2 = __toESM(require("mongoose"));
297
+ var LogSchema = new import_mongoose2.Schema({
298
+ timestamp: {
299
+ type: Date
300
+ },
301
+ level: {
302
+ type: String
303
+ },
304
+ message: {
305
+ type: String
306
+ },
307
+ meta: {
308
+ type: Object
309
+ },
310
+ hostname: {
311
+ type: Object
312
+ }
313
+ });
314
+ LogSchema.plugin(toJSON_plugin_default);
315
+ LogSchema.plugin(paginate_plugin_default);
316
+ var Log = import_mongoose2.default.model("VRSLog", LogSchema);
317
+
318
+ // src/server/models/App.model.ts
319
+ var import_mongoose3 = __toESM(require("mongoose"));
320
+ var AppSchema = new import_mongoose3.Schema({
321
+ name: {
322
+ type: String,
323
+ default: "Others",
324
+ unique: true,
325
+ required: [true, 'AppSchema: The "name" field must be required']
326
+ },
327
+ description: {
328
+ type: String
329
+ },
330
+ version: {
331
+ type: String
332
+ },
333
+ updatedDate: {
334
+ type: Date
335
+ },
336
+ createdDate: {
337
+ type: Date
338
+ },
339
+ meta: {
340
+ type: Object
341
+ }
342
+ });
343
+ AppSchema.plugin(paginate_plugin_default);
344
+ AppSchema.plugin(toJSON_plugin_default);
345
+ var App = import_mongoose3.default.model("VRSApp", AppSchema);
346
+
347
+ // src/server/models/Snapshot.model.ts
348
+ var import_mongoose4 = __toESM(require("mongoose"));
349
+ var SnapshotSchema = new import_mongoose4.Schema({
350
+ name: {
351
+ type: String,
352
+ required: [true, 'SnapshotSchema: The "name" field must be required']
353
+ },
354
+ path: {
355
+ type: String
356
+ },
357
+ filename: {
358
+ type: String
359
+ },
360
+ imghash: {
361
+ type: String,
362
+ required: [true, 'SnapshotSchema: The "imghash" field must be required']
363
+ },
364
+ createdDate: {
365
+ type: Date,
366
+ default: Date.now
367
+ },
368
+ vOffset: {
369
+ type: Number
370
+ },
371
+ hOffset: {
372
+ type: Number
373
+ }
374
+ });
375
+ SnapshotSchema.plugin(toJSON_plugin_default);
376
+ SnapshotSchema.plugin(paginate_plugin_default);
377
+ var Snapshot = import_mongoose4.default.model("VRSSnapshot", SnapshotSchema);
378
+
379
+ // src/server/models/AppSettings.model.ts
380
+ var import_mongoose5 = __toESM(require("mongoose"));
381
+ var AppSettingsSchema = new import_mongoose5.Schema({
382
+ name: {
383
+ type: String,
384
+ unique: true,
385
+ required: [true, 'AppSettingsSchema: The "name" field must be required']
386
+ },
387
+ label: {
388
+ type: String,
389
+ required: [true, 'AppSettingsSchema: The "label" field must be required']
390
+ },
391
+ description: {
392
+ type: String
393
+ },
394
+ type: {
395
+ type: String,
396
+ required: [true, 'AppSettingsSchema: The "type" field must be required']
397
+ },
398
+ value: {
399
+ type: import_mongoose5.Schema.Types.Mixed,
400
+ required: [true, 'AppSettingsSchema: The "value" field must be required']
401
+ },
402
+ env_variable: {
403
+ type: String
404
+ },
405
+ enabled: {
406
+ type: Boolean
407
+ }
408
+ });
409
+ AppSettingsSchema.plugin(toJSON_plugin_default);
410
+ var AppSettings = import_mongoose5.default.model("VRSAppSettings", AppSettingsSchema);
411
+
412
+ // src/server/models/Suite.model.ts
413
+ var import_mongoose6 = __toESM(require("mongoose"));
414
+ var SuiteSchema = new import_mongoose6.Schema({
415
+ name: {
416
+ type: String,
417
+ default: "Others",
418
+ unique: true,
419
+ required: [true, 'SuiteSchema: The "name" field must be required']
420
+ },
421
+ tags: {
422
+ type: [String]
423
+ },
424
+ app: {
425
+ type: import_mongoose6.Schema.Types.ObjectId,
426
+ ref: "VRSApp",
427
+ required: [true, 'SuiteSchema: The "app" field must be required']
428
+ },
429
+ description: {
430
+ type: String
431
+ },
432
+ updatedDate: {
433
+ type: Date,
434
+ default: Date.now
435
+ },
436
+ createdDate: {
437
+ type: Date
438
+ },
439
+ meta: {
440
+ type: Object
441
+ }
442
+ });
443
+ SuiteSchema.plugin(paginate_plugin_default);
444
+ SuiteSchema.plugin(toJSON_plugin_default);
445
+ var Suite = import_mongoose6.default.model("VRSSuite", SuiteSchema);
446
+
447
+ // src/server/models/Run.model.ts
448
+ var import_mongoose7 = __toESM(require("mongoose"));
449
+ var RunSchema = new import_mongoose7.Schema({
450
+ name: {
451
+ type: String,
452
+ required: [true, 'RunSchema: The "name" field must be required']
453
+ },
454
+ app: {
455
+ type: import_mongoose7.Schema.Types.ObjectId,
456
+ ref: "VRSApp",
457
+ required: [true, 'RunSchema: The "app" field must be required']
458
+ },
459
+ ident: {
460
+ type: String,
461
+ unique: true,
462
+ required: [true, 'RunSchema: The "ident" field must be required']
463
+ },
464
+ description: {
465
+ type: String
466
+ },
467
+ updatedDate: {
468
+ type: Date,
469
+ default: Date.now
470
+ },
471
+ createdDate: {
472
+ type: Date
473
+ },
474
+ parameters: {
475
+ type: [String]
476
+ },
477
+ meta: {
478
+ type: Object
479
+ }
480
+ });
481
+ RunSchema.plugin(paginate_plugin_default);
482
+ RunSchema.plugin(toJSON_plugin_default);
483
+ var Run = import_mongoose7.default.model("VRSRun", RunSchema);
484
+
485
+ // src/server/models/User.model.ts
486
+ var import_mongoose8 = __toESM(require("mongoose"));
487
+ var import_passport_local_mongoose = __toESM(require("passport-local-mongoose"));
488
+ var UserSchema = new import_mongoose8.Schema({
489
+ username: {
490
+ type: String,
491
+ unique: true,
492
+ required: [true, 'UserSchema: The "username" field must be required']
493
+ },
494
+ firstName: {
495
+ type: String,
496
+ required: [true, 'UserSchema: The "firstName" field must be required']
497
+ },
498
+ lastName: {
499
+ type: String,
500
+ required: [true, 'UserSchema: The "lastName" field must be required']
501
+ },
502
+ role: {
503
+ type: String,
504
+ enum: ["admin", "reviewer", "user"],
505
+ required: [true, 'UserSchema: The "role" field must be required']
506
+ },
507
+ password: {
508
+ type: String
509
+ },
510
+ token: {
511
+ type: String
512
+ },
513
+ apiKey: {
514
+ type: String
515
+ },
516
+ createdDate: {
517
+ type: Date
518
+ },
519
+ updatedDate: {
520
+ type: Date
521
+ },
522
+ expiration: {
523
+ type: Date
524
+ },
525
+ meta: {
526
+ type: Object
527
+ }
528
+ });
529
+ UserSchema.statics.isEmailTaken = async function(username, excludeUserId) {
530
+ const user = await this.findOne({ username, _id: { $ne: excludeUserId } });
531
+ return !!user;
532
+ };
533
+ UserSchema.plugin(toJSON_plugin_default);
534
+ UserSchema.plugin(paginate_plugin_default);
535
+ UserSchema.plugin(import_passport_local_mongoose.default, { hashField: "password" });
536
+ var User = import_mongoose8.default.model("VRSUser", UserSchema);
537
+ var User_model_default = User;
538
+
539
+ // src/server/models/Baseline.model.ts
540
+ var import_mongoose9 = __toESM(require("mongoose"));
541
+ var BaselineSchema = new import_mongoose9.Schema({
542
+ snapshootId: {
543
+ type: import_mongoose9.Schema.Types.ObjectId
544
+ },
545
+ name: {
546
+ type: String,
547
+ required: [true, 'VRSBaselineSchema: The "name" field must be required']
548
+ },
549
+ app: {
550
+ type: import_mongoose9.Schema.Types.ObjectId,
551
+ ref: "VRSApp",
552
+ required: [true, 'VRSBaselineSchema: The "app" field must be required']
553
+ },
554
+ branch: {
555
+ type: String
556
+ },
557
+ browserName: {
558
+ type: String
559
+ },
560
+ browserVersion: {
561
+ type: String
562
+ },
563
+ browserFullVersion: {
564
+ type: String
565
+ },
566
+ viewport: {
567
+ type: String
568
+ },
569
+ os: {
570
+ type: String
571
+ },
572
+ markedAs: {
573
+ type: String,
574
+ enum: ["bug", "accepted"]
575
+ },
576
+ lastMarkedDate: {
577
+ type: Date
578
+ },
579
+ createdDate: {
580
+ type: Date
581
+ },
582
+ updatedDate: {
583
+ type: Date
584
+ },
585
+ markedById: {
586
+ type: import_mongoose9.Schema.Types.ObjectId,
587
+ ref: "VRSUser"
588
+ },
589
+ markedByUsername: {
590
+ type: String
591
+ },
592
+ ignoreRegions: {
593
+ type: String
594
+ },
595
+ boundRegions: {
596
+ type: String
597
+ },
598
+ matchType: {
599
+ type: String,
600
+ enum: ["antialiasing", "nothing", "colors"]
601
+ },
602
+ meta: {
603
+ type: Object
604
+ }
605
+ });
606
+ BaselineSchema.plugin(toJSON_plugin_default);
607
+ BaselineSchema.plugin(paginate_plugin_default);
608
+ var Baseline = import_mongoose9.default.model("VRSBaseline", BaselineSchema);
609
+
610
+ // src/server/models/Test.model.ts
611
+ var import_mongoose10 = __toESM(require("mongoose"));
612
+ var TestSchema = new import_mongoose10.Schema(
613
+ {
614
+ name: {
615
+ type: String,
616
+ required: "TestSchema: the test name is empty"
617
+ },
618
+ description: {
619
+ type: String
620
+ },
621
+ status: {
622
+ type: String
623
+ },
624
+ browserName: {
625
+ type: String
626
+ },
627
+ browserVersion: {
628
+ type: String
629
+ },
630
+ branch: {
631
+ type: String
632
+ },
633
+ tags: {
634
+ type: [String]
635
+ },
636
+ viewport: {
637
+ type: String
638
+ },
639
+ calculatedViewport: {
640
+ type: String
641
+ },
642
+ os: {
643
+ type: String
644
+ },
645
+ app: {
646
+ type: import_mongoose10.Schema.Types.ObjectId,
647
+ ref: "VRSApp",
648
+ required: [true, 'TestSchema: The "app" field must be required']
649
+ },
650
+ blinking: {
651
+ type: Number,
652
+ default: 0
653
+ },
654
+ updatedDate: {
655
+ type: Date
656
+ },
657
+ startDate: {
658
+ type: Date
659
+ },
660
+ checks: [
661
+ {
662
+ type: import_mongoose10.default.Schema.Types.ObjectId,
663
+ ref: "VRSCheck"
664
+ }
665
+ ],
666
+ suite: {
667
+ type: import_mongoose10.Schema.Types.ObjectId,
668
+ ref: "VRSSuite"
669
+ },
670
+ run: {
671
+ type: import_mongoose10.Schema.Types.ObjectId,
672
+ ref: "VRSRun"
673
+ },
674
+ markedAs: {
675
+ type: String,
676
+ enum: ["Bug", "Accepted", "Unaccepted", "Partially"]
677
+ },
678
+ creatorId: {
679
+ type: import_mongoose10.Schema.Types.ObjectId,
680
+ ref: "VRSUser"
681
+ },
682
+ creatorUsername: {
683
+ type: String
684
+ },
685
+ meta: {
686
+ type: Object
687
+ }
688
+ },
689
+ { strictQuery: true }
690
+ );
691
+ TestSchema.plugin(toJSON_plugin_default);
692
+ TestSchema.plugin(paginate_plugin_default);
693
+ TestSchema.plugin(paginateDistinct_plugin_default);
694
+ var Test = import_mongoose10.default.model("VRSTest", TestSchema);
695
+
696
+ // src/server/utils/ApiError.ts
697
+ var ApiError = class extends Error {
698
+ constructor(statusCode, message, isOperational = true, stack = "") {
699
+ super(message);
700
+ this.statusCode = statusCode;
701
+ this.isOperational = isOperational;
702
+ if (stack) {
703
+ this.stack = stack;
704
+ } else {
705
+ Error.captureStackTrace(this, this.constructor);
706
+ }
707
+ }
708
+ };
709
+ var ApiError_default = ApiError;
710
+
711
+ // src/server/utils/deserializeIfJSON.ts
712
+ var import_bson2 = require("bson");
713
+
714
+ // src/server/lib/logger.ts
715
+ var import_winston = __toESM(require("winston"));
716
+ var import_winston_mongodb = require("winston-mongodb");
717
+ var import_chalk = require("chalk");
718
+
719
+ // src/server/utils/formatISOToDateTime.ts
720
+ function formatISOToDateTime(isoDateString) {
721
+ const date = new Date(isoDateString);
722
+ return `${date.toISOString().slice(0, 10)} ${date.toTimeString().slice(0, 8)}`;
723
+ }
724
+ var formatISOToDateTime_default = formatISOToDateTime;
725
+
726
+ // src/server/config.ts
727
+ var import_fs = __toESM(require("fs"));
728
+ var import_dotenv2 = __toESM(require("dotenv"));
729
+
730
+ // package.json
731
+ var version = "2.2.3";
732
+
733
+ // src/server/config.ts
734
+ var import_crypto2 = __toESM(require("crypto"));
735
+
736
+ // src/server/envConfig.ts
737
+ var import_envalid = require("envalid");
738
+ var import_crypto = __toESM(require("crypto"));
739
+ var import_path = __toESM(require("path"));
740
+ var import_dotenv = __toESM(require("dotenv"));
741
+ import_dotenv.default.config();
742
+ var env = (0, import_envalid.cleanEnv)(process.env, {
743
+ NODE_ENV: (0, import_envalid.str)({ choices: ["development", "production", "test"] }),
744
+ SYNGRISI_DB_URI: (0, import_envalid.str)({ devDefault: "mongodb://127.0.0.1:27017/SyngrisiDb" }),
745
+ SYNGRISI_APP_PORT: (0, import_envalid.port)({ devDefault: 3e3 }),
746
+ SYNGRISI_IMAGES_PATH: (0, import_envalid.str)({ devDefault: "./.snapshots-images/" }),
747
+ SYNGRISI_TMP_DIR: (0, import_envalid.str)({ default: import_path.default.join(process.cwd(), ".tmp") }),
748
+ SYNGRISI_HTTP_LOG: (0, import_envalid.bool)({ devDefault: false }),
749
+ SYNGRISI_COVERAGE: (0, import_envalid.bool)({ devDefault: false }),
750
+ SYNGRISI_HOSTNAME: (0, import_envalid.host)({ devDefault: "localhost" }),
751
+ SYNGRISI_AUTH: (0, import_envalid.bool)({ default: true }),
752
+ SYNGRISI_TEST_MODE: (0, import_envalid.bool)({ default: false }),
753
+ SYNGRISI_DISABLE_FIRST_RUN: (0, import_envalid.bool)({ default: false }),
754
+ MONGODB_ROOT_USERNAME: (0, import_envalid.str)({ default: "" }),
755
+ MONGODB_ROOT_PASSWORD: (0, import_envalid.str)({ default: "" }),
756
+ LOGLEVEL: (0, import_envalid.str)({ choices: ["error", "warn", "info", "verbose", "debug", "silly"], default: "debug" }),
757
+ SYNGRISI_PAGINATION_SIZE: (0, import_envalid.num)({ default: 50 }),
758
+ SYNGRISI_DISABLE_DEV_CORS: (0, import_envalid.bool)({ default: false, devDefault: true }),
759
+ SYNGRISI_SESSION_STORE_KEY: (0, import_envalid.str)({ default: import_crypto.default.randomBytes(64).toString("hex") }),
760
+ SYNGRISI_LOG_LEVEL: (0, import_envalid.str)({ default: "debug" }),
761
+ // trunk features
762
+ SYNGRISI_TRUNK_FEATURE_AI_SEVERITY: (0, import_envalid.bool)({ default: false }),
763
+ SYNGRISI_AI_KEY: (0, import_envalid.str)({ default: "" }),
764
+ OPENAI_API_BASE_URL: (0, import_envalid.str)({ default: "https://api.openai.com/v1" }),
765
+ OPENAI_API_KEY: (0, import_envalid.str)({ default: "" })
766
+ });
767
+
768
+ // src/server/data/devices.json
769
+ var devices_default = [
770
+ {
771
+ os: "ios",
772
+ os_version: "16",
773
+ device: "iPhone 14 Pro Max",
774
+ realMobile: true
775
+ },
776
+ {
777
+ os: "ios",
778
+ os_version: "16",
779
+ device: "iPhone 14 Pro",
780
+ realMobile: true
781
+ },
782
+ {
783
+ os: "ios",
784
+ os_version: "16",
785
+ device: "iPhone 14 Plus",
786
+ realMobile: true
787
+ },
788
+ {
789
+ os: "ios",
790
+ os_version: "16",
791
+ device: "iPhone 14",
792
+ realMobile: true
793
+ },
794
+ {
795
+ os: "ios",
796
+ os_version: "16",
797
+ device: "iPhone 12 Pro Max",
798
+ realMobile: true
799
+ },
800
+ {
801
+ os: "ios",
802
+ os_version: "16",
803
+ device: "iPhone 12 Pro",
804
+ realMobile: true
805
+ },
806
+ {
807
+ os: "ios",
808
+ os_version: "16",
809
+ device: "iPhone 12 Mini",
810
+ realMobile: true
811
+ },
812
+ {
813
+ os: "ios",
814
+ os_version: "16",
815
+ device: "iPhone 11 Pro Max",
816
+ realMobile: true
817
+ },
818
+ {
819
+ os: "ios",
820
+ os_version: "15",
821
+ device: "iPhone XS",
822
+ realMobile: true
823
+ },
824
+ {
825
+ os: "ios",
826
+ os_version: "15",
827
+ device: "iPhone 13 Pro Max",
828
+ realMobile: true
829
+ },
830
+ {
831
+ os: "ios",
832
+ os_version: "15",
833
+ device: "iPhone 13 Pro",
834
+ realMobile: true
835
+ },
836
+ {
837
+ os: "ios",
838
+ os_version: "15",
839
+ device: "iPhone 13 Mini",
840
+ realMobile: true
841
+ },
842
+ {
843
+ os: "ios",
844
+ os_version: "15",
845
+ device: "iPhone 13",
846
+ realMobile: true
847
+ },
848
+ {
849
+ os: "ios",
850
+ os_version: "15",
851
+ device: "iPhone 11 Pro",
852
+ realMobile: true
853
+ },
854
+ {
855
+ os: "ios",
856
+ os_version: "15",
857
+ device: "iPhone 11",
858
+ realMobile: true
859
+ },
860
+ {
861
+ os: "ios",
862
+ os_version: "14",
863
+ device: "iPhone XS",
864
+ realMobile: true
865
+ },
866
+ {
867
+ os: "ios",
868
+ os_version: "14",
869
+ device: "iPhone 12 Pro Max",
870
+ realMobile: true
871
+ },
872
+ {
873
+ os: "ios",
874
+ os_version: "14",
875
+ device: "iPhone 12 Pro",
876
+ realMobile: true
877
+ },
878
+ {
879
+ os: "ios",
880
+ os_version: "14",
881
+ device: "iPhone 12 Mini",
882
+ realMobile: true
883
+ },
884
+ {
885
+ os: "ios",
886
+ os_version: "14",
887
+ device: "iPhone 12",
888
+ realMobile: true
889
+ },
890
+ {
891
+ os: "ios",
892
+ os_version: "14",
893
+ device: "iPhone 11 Pro Max",
894
+ realMobile: true
895
+ },
896
+ {
897
+ os: "ios",
898
+ os_version: "14",
899
+ device: "iPhone 11",
900
+ realMobile: true
901
+ },
902
+ {
903
+ os: "ios",
904
+ os_version: "13",
905
+ device: "iPhone XS",
906
+ realMobile: true
907
+ },
908
+ {
909
+ os: "ios",
910
+ os_version: "13",
911
+ device: "iPhone 11 Pro Max",
912
+ realMobile: true
913
+ },
914
+ {
915
+ os: "ios",
916
+ os_version: "13",
917
+ device: "iPhone 11 Pro",
918
+ realMobile: true
919
+ },
920
+ {
921
+ os: "ios",
922
+ os_version: "13",
923
+ device: "iPhone 11",
924
+ realMobile: true
925
+ },
926
+ {
927
+ os: "ios",
928
+ os_version: "12",
929
+ device: "iPhone XS",
930
+ realMobile: true
931
+ },
932
+ {
933
+ os: "ios",
934
+ os_version: "12",
935
+ device: "iPhone XS Max",
936
+ realMobile: true
937
+ },
938
+ {
939
+ os: "ios",
940
+ os_version: "15",
941
+ device: "iPhone XR",
942
+ realMobile: true
943
+ },
944
+ {
945
+ os: "ios",
946
+ os_version: "12",
947
+ device: "iPhone XR",
948
+ realMobile: true
949
+ },
950
+ {
951
+ os: "ios",
952
+ os_version: "11",
953
+ device: "iPhone X",
954
+ realMobile: true
955
+ },
956
+ {
957
+ os: "ios",
958
+ os_version: "15",
959
+ device: "iPhone 8",
960
+ realMobile: true
961
+ },
962
+ {
963
+ os: "ios",
964
+ os_version: "13",
965
+ device: "iPhone 8",
966
+ realMobile: true
967
+ },
968
+ {
969
+ os: "ios",
970
+ os_version: "12",
971
+ device: "iPhone 8",
972
+ realMobile: true
973
+ },
974
+ {
975
+ os: "ios",
976
+ os_version: "11",
977
+ device: "iPhone 8",
978
+ realMobile: true
979
+ },
980
+ {
981
+ os: "ios",
982
+ os_version: "12",
983
+ device: "iPhone 8 Plus",
984
+ realMobile: true
985
+ },
986
+ {
987
+ os: "ios",
988
+ os_version: "11",
989
+ device: "iPhone 8 Plus",
990
+ realMobile: true
991
+ },
992
+ {
993
+ os: "ios",
994
+ os_version: "12",
995
+ device: "iPhone 7",
996
+ realMobile: true
997
+ },
998
+ {
999
+ os: "ios",
1000
+ os_version: "10",
1001
+ device: "iPhone 7",
1002
+ realMobile: true
1003
+ },
1004
+ {
1005
+ os: "ios",
1006
+ os_version: "12",
1007
+ device: "iPhone 6S",
1008
+ realMobile: true
1009
+ },
1010
+ {
1011
+ os: "ios",
1012
+ os_version: "11",
1013
+ device: "iPhone 6S",
1014
+ realMobile: true
1015
+ },
1016
+ {
1017
+ os: "ios",
1018
+ os_version: "11",
1019
+ device: "iPhone 6S Plus",
1020
+ realMobile: true
1021
+ },
1022
+ {
1023
+ os: "ios",
1024
+ os_version: "11",
1025
+ device: "iPhone 6",
1026
+ realMobile: true
1027
+ },
1028
+ {
1029
+ os: "ios",
1030
+ os_version: "15",
1031
+ device: "iPhone SE 2022",
1032
+ realMobile: true
1033
+ },
1034
+ {
1035
+ os: "ios",
1036
+ os_version: "13",
1037
+ device: "iPhone SE 2020",
1038
+ realMobile: true
1039
+ },
1040
+ {
1041
+ os: "ios",
1042
+ os_version: "11",
1043
+ device: "iPhone SE",
1044
+ realMobile: true
1045
+ },
1046
+ {
1047
+ os: "ios",
1048
+ os_version: "14",
1049
+ device: "iPad Air 4",
1050
+ realMobile: true
1051
+ },
1052
+ {
1053
+ os: "ios",
1054
+ os_version: "15",
1055
+ device: "iPad 9th",
1056
+ realMobile: true
1057
+ },
1058
+ {
1059
+ os: "ios",
1060
+ os_version: "16",
1061
+ device: "iPad Pro 12.9 2022",
1062
+ realMobile: true
1063
+ },
1064
+ {
1065
+ os: "ios",
1066
+ os_version: "16",
1067
+ device: "iPad Pro 12.9 2020",
1068
+ realMobile: true
1069
+ },
1070
+ {
1071
+ os: "ios",
1072
+ os_version: "16",
1073
+ device: "iPad Pro 11 2022",
1074
+ realMobile: true
1075
+ },
1076
+ {
1077
+ os: "ios",
1078
+ os_version: "16",
1079
+ device: "iPad 10th",
1080
+ realMobile: true
1081
+ },
1082
+ {
1083
+ os: "ios",
1084
+ os_version: "15",
1085
+ device: "iPad Air 5",
1086
+ realMobile: true
1087
+ },
1088
+ {
1089
+ os: "ios",
1090
+ os_version: "14",
1091
+ device: "iPad Pro 12.9 2021",
1092
+ realMobile: true
1093
+ },
1094
+ {
1095
+ os: "ios",
1096
+ os_version: "14",
1097
+ device: "iPad Pro 12.9 2020",
1098
+ realMobile: true
1099
+ },
1100
+ {
1101
+ os: "ios",
1102
+ os_version: "14",
1103
+ device: "iPad Pro 11 2021",
1104
+ realMobile: true
1105
+ },
1106
+ {
1107
+ os: "ios",
1108
+ os_version: "13",
1109
+ device: "iPad Pro 12.9 2020",
1110
+ realMobile: true
1111
+ },
1112
+ {
1113
+ os: "ios",
1114
+ os_version: "16",
1115
+ device: "iPad 8th",
1116
+ realMobile: true
1117
+ },
1118
+ {
1119
+ os: "ios",
1120
+ os_version: "15",
1121
+ device: "iPad Pro 12.9 2018",
1122
+ realMobile: true
1123
+ },
1124
+ {
1125
+ os: "ios",
1126
+ os_version: "15",
1127
+ device: "iPad Mini 2021",
1128
+ realMobile: true
1129
+ },
1130
+ {
1131
+ os: "ios",
1132
+ os_version: "14",
1133
+ device: "iPad 8th",
1134
+ realMobile: true
1135
+ },
1136
+ {
1137
+ os: "ios",
1138
+ os_version: "13",
1139
+ device: "iPad Pro 12.9 2018",
1140
+ realMobile: true
1141
+ },
1142
+ {
1143
+ os: "ios",
1144
+ os_version: "13",
1145
+ device: "iPad Pro 11 2020",
1146
+ realMobile: true
1147
+ },
1148
+ {
1149
+ os: "ios",
1150
+ os_version: "13",
1151
+ device: "iPad Mini 2019",
1152
+ realMobile: true
1153
+ },
1154
+ {
1155
+ os: "ios",
1156
+ os_version: "13",
1157
+ device: "iPad Air 2019",
1158
+ realMobile: true
1159
+ },
1160
+ {
1161
+ os: "ios",
1162
+ os_version: "13",
1163
+ device: "iPad 7th",
1164
+ realMobile: true
1165
+ },
1166
+ {
1167
+ os: "ios",
1168
+ os_version: "12",
1169
+ device: "iPad Pro 12.9 2018",
1170
+ realMobile: true
1171
+ },
1172
+ {
1173
+ os: "ios",
1174
+ os_version: "12",
1175
+ device: "iPad Pro 11 2018",
1176
+ realMobile: true
1177
+ },
1178
+ {
1179
+ os: "ios",
1180
+ os_version: "12",
1181
+ device: "iPad Mini 2019",
1182
+ realMobile: true
1183
+ },
1184
+ {
1185
+ os: "ios",
1186
+ os_version: "12",
1187
+ device: "iPad Air 2019",
1188
+ realMobile: true
1189
+ },
1190
+ {
1191
+ os: "ios",
1192
+ os_version: "11",
1193
+ device: "iPad Pro 9.7 2016",
1194
+ realMobile: true
1195
+ },
1196
+ {
1197
+ os: "ios",
1198
+ os_version: "11",
1199
+ device: "iPad Pro 12.9 2017",
1200
+ realMobile: true
1201
+ },
1202
+ {
1203
+ os: "ios",
1204
+ os_version: "11",
1205
+ device: "iPad Mini 4",
1206
+ realMobile: true
1207
+ },
1208
+ {
1209
+ os: "ios",
1210
+ os_version: "11",
1211
+ device: "iPad 6th",
1212
+ realMobile: true
1213
+ },
1214
+ {
1215
+ os: "ios",
1216
+ os_version: "11",
1217
+ device: "iPad 5th",
1218
+ realMobile: true
1219
+ },
1220
+ {
1221
+ os: "android",
1222
+ os_version: "12.0",
1223
+ device: "Samsung Galaxy S22 Ultra",
1224
+ realMobile: true
1225
+ },
1226
+ {
1227
+ os: "android",
1228
+ os_version: "12.0",
1229
+ device: "Samsung Galaxy S22 Plus",
1230
+ realMobile: true
1231
+ },
1232
+ {
1233
+ os: "android",
1234
+ os_version: "12.0",
1235
+ device: "Samsung Galaxy S22",
1236
+ realMobile: true
1237
+ },
1238
+ {
1239
+ os: "android",
1240
+ os_version: "12.0",
1241
+ device: "Samsung Galaxy S21",
1242
+ realMobile: true
1243
+ },
1244
+ {
1245
+ os: "android",
1246
+ os_version: "11.0",
1247
+ device: "Samsung Galaxy S21 Ultra",
1248
+ realMobile: true
1249
+ },
1250
+ {
1251
+ os: "android",
1252
+ os_version: "11.0",
1253
+ device: "Samsung Galaxy S21",
1254
+ realMobile: true
1255
+ },
1256
+ {
1257
+ os: "android",
1258
+ os_version: "11.0",
1259
+ device: "Samsung Galaxy S21 Plus",
1260
+ realMobile: true
1261
+ },
1262
+ {
1263
+ os: "android",
1264
+ os_version: "10.0",
1265
+ device: "Samsung Galaxy S20",
1266
+ realMobile: true
1267
+ },
1268
+ {
1269
+ os: "android",
1270
+ os_version: "10.0",
1271
+ device: "Samsung Galaxy S20 Plus",
1272
+ realMobile: true
1273
+ },
1274
+ {
1275
+ os: "android",
1276
+ os_version: "10.0",
1277
+ device: "Samsung Galaxy S20 Ultra",
1278
+ realMobile: true
1279
+ },
1280
+ {
1281
+ os: "android",
1282
+ os_version: "11.0",
1283
+ device: "Samsung Galaxy M52",
1284
+ realMobile: true
1285
+ },
1286
+ {
1287
+ os: "android",
1288
+ os_version: "11.0",
1289
+ device: "Samsung Galaxy M32",
1290
+ realMobile: true
1291
+ },
1292
+ {
1293
+ os: "android",
1294
+ os_version: "11.0",
1295
+ device: "Samsung Galaxy A52",
1296
+ realMobile: true
1297
+ },
1298
+ {
1299
+ os: "android",
1300
+ os_version: "10.0",
1301
+ device: "Samsung Galaxy Note 20 Ultra",
1302
+ realMobile: true
1303
+ },
1304
+ {
1305
+ os: "android",
1306
+ os_version: "10.0",
1307
+ device: "Samsung Galaxy Note 20",
1308
+ realMobile: true
1309
+ },
1310
+ {
1311
+ os: "android",
1312
+ os_version: "10.0",
1313
+ device: "Samsung Galaxy A51",
1314
+ realMobile: true
1315
+ },
1316
+ {
1317
+ os: "android",
1318
+ os_version: "10.0",
1319
+ device: "Samsung Galaxy A11",
1320
+ realMobile: true
1321
+ },
1322
+ {
1323
+ os: "android",
1324
+ os_version: "9.0",
1325
+ device: "Samsung Galaxy S9 Plus",
1326
+ realMobile: true
1327
+ },
1328
+ {
1329
+ os: "android",
1330
+ os_version: "9.0",
1331
+ device: "Samsung Galaxy S10e",
1332
+ realMobile: true
1333
+ },
1334
+ {
1335
+ os: "android",
1336
+ os_version: "9.0",
1337
+ device: "Samsung Galaxy S10 Plus",
1338
+ realMobile: true
1339
+ },
1340
+ {
1341
+ os: "android",
1342
+ os_version: "9.0",
1343
+ device: "Samsung Galaxy S10",
1344
+ realMobile: true
1345
+ },
1346
+ {
1347
+ os: "android",
1348
+ os_version: "9.0",
1349
+ device: "Samsung Galaxy Note 10 Plus",
1350
+ realMobile: true
1351
+ },
1352
+ {
1353
+ os: "android",
1354
+ os_version: "9.0",
1355
+ device: "Samsung Galaxy Note 10",
1356
+ realMobile: true
1357
+ },
1358
+ {
1359
+ os: "android",
1360
+ os_version: "9.0",
1361
+ device: "Samsung Galaxy A10",
1362
+ realMobile: true
1363
+ },
1364
+ {
1365
+ os: "android",
1366
+ os_version: "8.1",
1367
+ device: "Samsung Galaxy Note 9",
1368
+ realMobile: true
1369
+ },
1370
+ {
1371
+ os: "android",
1372
+ os_version: "8.1",
1373
+ device: "Samsung Galaxy J7 Prime",
1374
+ realMobile: true
1375
+ },
1376
+ {
1377
+ os: "android",
1378
+ os_version: "8.0",
1379
+ device: "Samsung Galaxy S9 Plus",
1380
+ realMobile: true
1381
+ },
1382
+ {
1383
+ os: "android",
1384
+ os_version: "8.0",
1385
+ device: "Samsung Galaxy S9",
1386
+ realMobile: true
1387
+ },
1388
+ {
1389
+ os: "android",
1390
+ os_version: "7.1",
1391
+ device: "Samsung Galaxy Note 8",
1392
+ realMobile: true
1393
+ },
1394
+ {
1395
+ os: "android",
1396
+ os_version: "7.1",
1397
+ device: "Samsung Galaxy A8",
1398
+ realMobile: true
1399
+ },
1400
+ {
1401
+ os: "android",
1402
+ os_version: "7.0",
1403
+ device: "Samsung Galaxy S8 Plus",
1404
+ realMobile: true
1405
+ },
1406
+ {
1407
+ os: "android",
1408
+ os_version: "7.0",
1409
+ device: "Samsung Galaxy S8",
1410
+ realMobile: true
1411
+ },
1412
+ {
1413
+ os: "android",
1414
+ os_version: "6.0",
1415
+ device: "Samsung Galaxy S7",
1416
+ realMobile: true
1417
+ },
1418
+ {
1419
+ os: "android",
1420
+ os_version: "5.0",
1421
+ device: "Samsung Galaxy S6",
1422
+ realMobile: true
1423
+ },
1424
+ {
1425
+ os: "android",
1426
+ os_version: "13.0",
1427
+ device: "Google Pixel 7 Pro",
1428
+ realMobile: true
1429
+ },
1430
+ {
1431
+ os: "android",
1432
+ os_version: "13.0",
1433
+ device: "Google Pixel 7",
1434
+ realMobile: true
1435
+ },
1436
+ {
1437
+ os: "android",
1438
+ os_version: "13.0",
1439
+ device: "Google Pixel 6 Pro",
1440
+ realMobile: true
1441
+ },
1442
+ {
1443
+ os: "android",
1444
+ os_version: "12.0",
1445
+ device: "Google Pixel 6 Pro",
1446
+ realMobile: true
1447
+ },
1448
+ {
1449
+ os: "android",
1450
+ os_version: "12.0",
1451
+ device: "Google Pixel 6",
1452
+ realMobile: true
1453
+ },
1454
+ {
1455
+ os: "android",
1456
+ os_version: "12.0",
1457
+ device: "Google Pixel 5",
1458
+ realMobile: true
1459
+ },
1460
+ {
1461
+ os: "android",
1462
+ os_version: "11.0",
1463
+ device: "Google Pixel 5",
1464
+ realMobile: true
1465
+ },
1466
+ {
1467
+ os: "android",
1468
+ os_version: "11.0",
1469
+ device: "Google Pixel 4",
1470
+ realMobile: true
1471
+ },
1472
+ {
1473
+ os: "android",
1474
+ os_version: "10.0",
1475
+ device: "Google Pixel 4 XL",
1476
+ realMobile: true
1477
+ },
1478
+ {
1479
+ os: "android",
1480
+ os_version: "10.0",
1481
+ device: "Google Pixel 4",
1482
+ realMobile: true
1483
+ },
1484
+ {
1485
+ os: "android",
1486
+ os_version: "10.0",
1487
+ device: "Google Pixel 3",
1488
+ realMobile: true
1489
+ },
1490
+ {
1491
+ os: "android",
1492
+ os_version: "9.0",
1493
+ device: "Google Pixel 3a XL",
1494
+ realMobile: true
1495
+ },
1496
+ {
1497
+ os: "android",
1498
+ os_version: "9.0",
1499
+ device: "Google Pixel 3a",
1500
+ realMobile: true
1501
+ },
1502
+ {
1503
+ os: "android",
1504
+ os_version: "9.0",
1505
+ device: "Google Pixel 3 XL",
1506
+ realMobile: true
1507
+ },
1508
+ {
1509
+ os: "android",
1510
+ os_version: "9.0",
1511
+ device: "Google Pixel 3",
1512
+ realMobile: true
1513
+ },
1514
+ {
1515
+ os: "android",
1516
+ os_version: "9.0",
1517
+ device: "Google Pixel 2",
1518
+ realMobile: true
1519
+ },
1520
+ {
1521
+ os: "android",
1522
+ os_version: "8.0",
1523
+ device: "Google Pixel 2",
1524
+ realMobile: true
1525
+ },
1526
+ {
1527
+ os: "android",
1528
+ os_version: "7.1",
1529
+ device: "Google Pixel",
1530
+ realMobile: true
1531
+ },
1532
+ {
1533
+ os: "android",
1534
+ os_version: "6.0",
1535
+ device: "Google Nexus 6",
1536
+ realMobile: true
1537
+ },
1538
+ {
1539
+ os: "android",
1540
+ os_version: "4.4",
1541
+ device: "Google Nexus 5",
1542
+ realMobile: true
1543
+ },
1544
+ {
1545
+ os: "android",
1546
+ os_version: "11.0",
1547
+ device: "OnePlus 9",
1548
+ realMobile: true
1549
+ },
1550
+ {
1551
+ os: "android",
1552
+ os_version: "10.0",
1553
+ device: "OnePlus 8",
1554
+ realMobile: true
1555
+ },
1556
+ {
1557
+ os: "android",
1558
+ os_version: "10.0",
1559
+ device: "OnePlus 7T",
1560
+ realMobile: true
1561
+ },
1562
+ {
1563
+ os: "android",
1564
+ os_version: "9.0",
1565
+ device: "OnePlus 7",
1566
+ realMobile: true
1567
+ },
1568
+ {
1569
+ os: "android",
1570
+ os_version: "9.0",
1571
+ device: "OnePlus 6T",
1572
+ realMobile: true
1573
+ },
1574
+ {
1575
+ os: "android",
1576
+ os_version: "11.0",
1577
+ device: "Xiaomi Redmi Note 11",
1578
+ realMobile: true
1579
+ },
1580
+ {
1581
+ os: "android",
1582
+ os_version: "10.0",
1583
+ device: "Xiaomi Redmi Note 9",
1584
+ realMobile: true
1585
+ },
1586
+ {
1587
+ os: "android",
1588
+ os_version: "9.0",
1589
+ device: "Xiaomi Redmi Note 8",
1590
+ realMobile: true
1591
+ },
1592
+ {
1593
+ os: "android",
1594
+ os_version: "9.0",
1595
+ device: "Xiaomi Redmi Note 7",
1596
+ realMobile: true
1597
+ },
1598
+ {
1599
+ os: "android",
1600
+ os_version: "11.0",
1601
+ device: "Vivo Y21",
1602
+ realMobile: true
1603
+ },
1604
+ {
1605
+ os: "android",
1606
+ os_version: "11.0",
1607
+ device: "Vivo V21",
1608
+ realMobile: true
1609
+ },
1610
+ {
1611
+ os: "android",
1612
+ os_version: "10.0",
1613
+ device: "Vivo Y50",
1614
+ realMobile: true
1615
+ },
1616
+ {
1617
+ os: "android",
1618
+ os_version: "11.0",
1619
+ device: "Oppo Reno 6",
1620
+ realMobile: true
1621
+ },
1622
+ {
1623
+ os: "android",
1624
+ os_version: "11.0",
1625
+ device: "Oppo A96",
1626
+ realMobile: true
1627
+ },
1628
+ {
1629
+ os: "android",
1630
+ os_version: "10.0",
1631
+ device: "Oppo Reno 3 Pro",
1632
+ realMobile: true
1633
+ },
1634
+ {
1635
+ os: "android",
1636
+ os_version: "11.0",
1637
+ device: "Motorola Moto G71 5G",
1638
+ realMobile: true
1639
+ },
1640
+ {
1641
+ os: "android",
1642
+ os_version: "10.0",
1643
+ device: "Motorola Moto G9 Play",
1644
+ realMobile: true
1645
+ },
1646
+ {
1647
+ os: "android",
1648
+ os_version: "9.0",
1649
+ device: "Motorola Moto G7 Play",
1650
+ realMobile: true
1651
+ },
1652
+ {
1653
+ os: "android",
1654
+ os_version: "9.0",
1655
+ device: "Huawei P30",
1656
+ realMobile: true
1657
+ },
1658
+ {
1659
+ os: "android",
1660
+ os_version: "12.0",
1661
+ device: "Samsung Galaxy Tab S8",
1662
+ realMobile: true
1663
+ },
1664
+ {
1665
+ os: "android",
1666
+ os_version: "11.0",
1667
+ device: "Samsung Galaxy Tab S7",
1668
+ realMobile: true
1669
+ },
1670
+ {
1671
+ os: "android",
1672
+ os_version: "10.0",
1673
+ device: "Samsung Galaxy Tab S7",
1674
+ realMobile: true
1675
+ },
1676
+ {
1677
+ os: "android",
1678
+ os_version: "9.0",
1679
+ device: "Samsung Galaxy Tab S6",
1680
+ realMobile: true
1681
+ },
1682
+ {
1683
+ os: "android",
1684
+ os_version: "9.0",
1685
+ device: "Samsung Galaxy Tab S5e",
1686
+ realMobile: true
1687
+ },
1688
+ {
1689
+ os: "android",
1690
+ os_version: "8.1",
1691
+ device: "Samsung Galaxy Tab S4",
1692
+ realMobile: true
1693
+ }
1694
+ ];
1695
+
1696
+ // src/server/config.ts
1697
+ var customDevicesPath = "./server/data/custom_devices.json";
1698
+ var logsFolder = "./logs";
1699
+ import_dotenv2.default.config();
1700
+ var config = {
1701
+ version,
1702
+ // this isn't used
1703
+ getDevices: async () => {
1704
+ if (import_fs.default.existsSync(customDevicesPath)) {
1705
+ return [...devices_default, ...(await import(customDevicesPath)).default];
1706
+ }
1707
+ return devices_default;
1708
+ },
1709
+ defaultImagesPath: env.SYNGRISI_IMAGES_PATH,
1710
+ connectionString: env.SYNGRISI_DB_URI || "mongodb://127.0.0.1:27017/SyngrisiDb",
1711
+ host: env.SYNGRISI_HOSTNAME,
1712
+ port: env.SYNGRISI_APP_PORT || 3e3,
1713
+ backupsFolder: "./backups",
1714
+ enableHttpLogger: env.SYNGRISI_HTTP_LOG,
1715
+ httpLoggerFilePath: `${logsFolder}/http.log`,
1716
+ storeSessionKey: env.SYNGRISI_SESSION_STORE_KEY || import_crypto2.default.randomBytes(64).toString("hex"),
1717
+ codeCoverage: env.SYNGRISI_COVERAGE,
1718
+ disableCors: env.SYNGRISI_DISABLE_DEV_CORS,
1719
+ fileUploadMaxSize: 50 * 1024 * 1024,
1720
+ testMode: env.SYNGRISI_TEST_MODE,
1721
+ jsonLimit: "50mb",
1722
+ tmpDir: env.SYNGRISI_TMP_DIR,
1723
+ helmet: {
1724
+ crossOriginEmbedderPolicy: !env.SYNGRISI_DISABLE_DEV_CORS,
1725
+ crossOriginResourcePolicy: !env.SYNGRISI_DISABLE_DEV_CORS,
1726
+ contentSecurityPolicy: {
1727
+ directives: {
1728
+ frameAncestors: ["'self'", "vscode-webview:", "vscode-resource:", "https:", "http:"],
1729
+ frameSrc: ["'self'", "vscode-webview:", "https:", "http:"],
1730
+ scriptSrc: ["'self'", "'unsafe-inline'"],
1731
+ styleSrc: ["'self'", "'unsafe-inline'"]
1732
+ }
1733
+ }
1734
+ }
1735
+ };
1736
+ if (!import_fs.default.existsSync(config.defaultImagesPath)) {
1737
+ import_fs.default.mkdirSync(config.defaultImagesPath, { recursive: true });
1738
+ }
1739
+ if (!import_fs.default.existsSync(logsFolder)) {
1740
+ import_fs.default.mkdirSync(logsFolder, { recursive: true });
1741
+ }
1742
+
1743
+ // src/server/lib/logger.ts
1744
+ var import_path2 = __toESM(require("path"));
1745
+ var logLevel = env.SYNGRISI_LOG_LEVEL;
1746
+ function getScriptLine() {
1747
+ const stack = new Error().stack;
1748
+ if (stack) {
1749
+ const stackLines = stack.split("\n");
1750
+ let loggerLineIndex = -1;
1751
+ for (let i = 0; i < stackLines.length; i++) {
1752
+ if (stackLines[i].includes("lib/logger")) {
1753
+ loggerLineIndex = i;
1754
+ }
1755
+ }
1756
+ const targetLineIndex = loggerLineIndex + 1;
1757
+ if (targetLineIndex >= 0 && targetLineIndex < stackLines.length) {
1758
+ const targetLine = stackLines[targetLineIndex];
1759
+ const match = targetLine.match(/at\s+(?:.+\s+\()?(.+):(\d+):(\d+)\)?/);
1760
+ if (match) {
1761
+ const scriptPath = match[1];
1762
+ const relativePath = import_path2.default.relative(process.cwd(), scriptPath);
1763
+ const lineNumber = match[2];
1764
+ return `${relativePath}:${lineNumber}`;
1765
+ }
1766
+ }
1767
+ }
1768
+ return "unknown";
1769
+ }
1770
+ function createWinstonLogger(opts) {
1771
+ return import_winston.default.createLogger({
1772
+ transports: [
1773
+ new import_winston.default.transports.Console({
1774
+ level: logLevel || "silly",
1775
+ format: import_winston.default.format.combine(
1776
+ import_winston.default.format.colorize(),
1777
+ import_winston.default.format.timestamp(),
1778
+ import_winston.default.format.ms(),
1779
+ import_winston.default.format.metadata(),
1780
+ import_winston.default.format.printf((info) => {
1781
+ const user = info.metadata.user ? (0, import_chalk.blue)(` <${info.metadata.user}>`) : "";
1782
+ const ref = info.metadata.ref ? (0, import_chalk.gray)(` ${info.metadata.ref}`) : "";
1783
+ const msgType = info.metadata.msgType ? ` ${info.metadata.msgType}` : "";
1784
+ const itemType = info.metadata.itemType ? (0, import_chalk.magenta)(` ${info.metadata.itemType}`) : "";
1785
+ const scope = info.metadata.scope ? (0, import_chalk.magenta)(` [${info.metadata.scope}] `) : (0, import_chalk.magenta)(` [${getScriptLine()}] `);
1786
+ const msg = typeof info.message === "object" ? `
1787
+ ${JSON.stringify(info.message, null, 2)}` : info.message;
1788
+ return `${info.level} ${scope}${formatISOToDateTime_default(info.metadata.timestamp)} ${info.metadata.ms}${user}${ref}${msgType}${itemType} '${msg}'`;
1789
+ }),
1790
+ import_winston.default.format.padLevels()
1791
+ )
1792
+ }),
1793
+ new import_winston.default.transports.MongoDB({
1794
+ level: logLevel || "debug",
1795
+ format: import_winston.default.format.combine(
1796
+ import_winston.default.format.timestamp(),
1797
+ import_winston.default.format.json(),
1798
+ import_winston.default.format.metadata()
1799
+ ),
1800
+ options: {
1801
+ useUnifiedTopology: true
1802
+ },
1803
+ db: opts.dbConnectionString,
1804
+ collection: "vrslogs"
1805
+ })
1806
+ ]
1807
+ });
1808
+ }
1809
+ var Logger = class _Logger {
1810
+ constructor(opts = { dbConnectionString: config.connectionString }) {
1811
+ this.winstonLogger = createWinstonLogger(opts);
1812
+ }
1813
+ static mergeMeta(objects) {
1814
+ return objects.reduce((acc, obj) => {
1815
+ return { ...acc, ...obj };
1816
+ }, {});
1817
+ }
1818
+ log(severity, msg, meta) {
1819
+ const mergedMeta = _Logger.mergeMeta(meta);
1820
+ if (!mergedMeta.scope) {
1821
+ mergedMeta.scope = getScriptLine();
1822
+ }
1823
+ const formattedMsg = typeof msg === "object" ? JSON.stringify(msg, null, 2) : msg;
1824
+ this.winstonLogger.log(severity, formattedMsg, mergedMeta);
1825
+ }
1826
+ error(msg, ...meta) {
1827
+ let message = String(msg);
1828
+ let code = 0;
1829
+ if (msg instanceof Object) {
1830
+ message = JSON.stringify(msg);
1831
+ }
1832
+ if (msg instanceof Error) {
1833
+ message = msg.stack;
1834
+ }
1835
+ if (msg instanceof ApiError_default) {
1836
+ code = msg.statusCode;
1837
+ }
1838
+ this.log("error", `${code !== 0 ? "[" + code + "]" : ""}${message}
1839
+ stacktrace: ${new Error().stack}`, meta);
1840
+ }
1841
+ warn(msg, ...meta) {
1842
+ this.log("warn", `${msg}
1843
+ stacktrace: ${new Error().stack}`, meta);
1844
+ }
1845
+ info(msg, ...meta) {
1846
+ this.log("info", msg, meta);
1847
+ }
1848
+ verbose(msg, ...meta) {
1849
+ this.log("verbose", msg, meta);
1850
+ }
1851
+ debug(msg, ...meta) {
1852
+ this.log("debug", msg, meta);
1853
+ }
1854
+ silly(msg, ...meta) {
1855
+ this.log("silly", msg, meta);
1856
+ }
1857
+ };
1858
+ var logger_default = new Logger();
1859
+
1860
+ // src/server/services/user.service.ts
1861
+ var createUser = async (userBody) => {
1862
+ if (await User_model_default.isEmailTaken(userBody.username)) {
1863
+ throw new ApiError_default(import_http_status.default.BAD_REQUEST, "Email already taken");
1864
+ }
1865
+ const logOpts = {
1866
+ msgType: "CREATE",
1867
+ itemType: "user",
1868
+ ref: userBody.username,
1869
+ scope: "createUser"
1870
+ };
1871
+ logger_default.debug(`create the user with name '${userBody.username}', params: '${JSON.stringify(userBody)}'`, logOpts);
1872
+ const user = await User_model_default.create({ ...userBody, createdDate: Date.now() });
1873
+ const updatedUser = await user.setPassword(userBody.password);
1874
+ await updatedUser.save();
1875
+ logger_default.debug(`password for user: '${userBody.username}' set successfully`, logOpts);
1876
+ const userWithSelectedFields = await User_model_default.findById(updatedUser._id).select("username firstName lastName role createdDate updatedDate createdDate").exec();
1877
+ return userWithSelectedFields;
1878
+ };
1879
+ var queryUsers = async (filter, options) => {
1880
+ const users = await User_model_default.paginate(filter, options);
1881
+ return users;
1882
+ };
1883
+ var getUserById = async (id) => User_model_default.findById(id).select("username firstName lastName role createdDate updatedDate createdDate").exec();
1884
+ var getUserByEmail = async (email) => User_model_default.findOne({ email });
1885
+ var updateUserById = async (userId, updateBody) => {
1886
+ const logOpts = {
1887
+ msgType: "UPDATE",
1888
+ itemType: "user",
1889
+ scope: "updateUserById",
1890
+ ref: userId
1891
+ };
1892
+ logger_default.info(`update user with id: '${userId}' name '${updateBody.username}', params: '${JSON.stringify(updateBody)}'`, logOpts);
1893
+ const user = await getUserById(userId);
1894
+ if (!user) {
1895
+ throw new ApiError_default(import_http_status.default.NOT_FOUND, "User not found");
1896
+ }
1897
+ if (updateBody.email && await User_model_default.isEmailTaken(updateBody.email, userId)) {
1898
+ throw new ApiError_default(import_http_status.default.BAD_REQUEST, "Email already taken");
1899
+ }
1900
+ if (updateBody.password) {
1901
+ logger_default.debug(`update password for '${updateBody.username}'`, logOpts);
1902
+ await user.setPassword(updateBody.password);
1903
+ await user.save();
1904
+ logger_default.debug(`password for '${updateBody.username}' was updated`, logOpts);
1905
+ }
1906
+ logger_default.debug(`user '${updateBody.username}' was updated successfully`, logOpts);
1907
+ const { password, ...newupdateBody } = updateBody;
1908
+ Object.assign(user, {
1909
+ ...newupdateBody,
1910
+ updatedDate: Date.now()
1911
+ });
1912
+ await user.save();
1913
+ return user;
1914
+ };
1915
+ var deleteUserById = async (userId) => User_model_default.findByIdAndDelete(userId).exec();
1916
+ // Annotate the CommonJS export names for ESM import in node:
1917
+ 0 && (module.exports = {
1918
+ createUser,
1919
+ deleteUserById,
1920
+ getUserByEmail,
1921
+ getUserById,
1922
+ queryUsers,
1923
+ updateUserById
1924
+ });
1925
+ //# sourceMappingURL=user.service.js.map