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