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