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