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