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