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