checkly 0.0.0-pr.1006.2fb1ffc

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 (317) hide show
  1. package/README.md +102 -0
  2. package/bin/run +5 -0
  3. package/bin/run.cmd +3 -0
  4. package/constructs.d.ts +1 -0
  5. package/constructs.js +2 -0
  6. package/dist/auth/index.d.ts +15 -0
  7. package/dist/auth/index.js +262 -0
  8. package/dist/auth/index.js.map +1 -0
  9. package/dist/commands/authCommand.d.ts +5 -0
  10. package/dist/commands/authCommand.js +37 -0
  11. package/dist/commands/authCommand.js.map +1 -0
  12. package/dist/commands/baseCommand.d.ts +13 -0
  13. package/dist/commands/baseCommand.js +48 -0
  14. package/dist/commands/baseCommand.js.map +1 -0
  15. package/dist/commands/deploy.d.ts +18 -0
  16. package/dist/commands/deploy.js +289 -0
  17. package/dist/commands/deploy.js.map +1 -0
  18. package/dist/commands/destroy.d.ts +10 -0
  19. package/dist/commands/destroy.js +84 -0
  20. package/dist/commands/destroy.js.map +1 -0
  21. package/dist/commands/env/add.d.ts +14 -0
  22. package/dist/commands/env/add.js +85 -0
  23. package/dist/commands/env/add.js.map +1 -0
  24. package/dist/commands/env/ls.d.ts +6 -0
  25. package/dist/commands/env/ls.js +44 -0
  26. package/dist/commands/env/ls.js.map +1 -0
  27. package/dist/commands/env/pull.d.ts +12 -0
  28. package/dist/commands/env/pull.js +99 -0
  29. package/dist/commands/env/pull.js.map +1 -0
  30. package/dist/commands/env/rm.d.ts +12 -0
  31. package/dist/commands/env/rm.js +82 -0
  32. package/dist/commands/env/rm.js.map +1 -0
  33. package/dist/commands/env/update.d.ts +14 -0
  34. package/dist/commands/env/update.js +88 -0
  35. package/dist/commands/env/update.js.map +1 -0
  36. package/dist/commands/help.d.ts +6 -0
  37. package/dist/commands/help.js +17 -0
  38. package/dist/commands/help.js.map +1 -0
  39. package/dist/commands/login.d.ts +13 -0
  40. package/dist/commands/login.js +134 -0
  41. package/dist/commands/login.js.map +1 -0
  42. package/dist/commands/logout.d.ts +9 -0
  43. package/dist/commands/logout.js +43 -0
  44. package/dist/commands/logout.js.map +1 -0
  45. package/dist/commands/runtimes.d.ts +6 -0
  46. package/dist/commands/runtimes.js +49 -0
  47. package/dist/commands/runtimes.js.map +1 -0
  48. package/dist/commands/switch.d.ts +9 -0
  49. package/dist/commands/switch.js +81 -0
  50. package/dist/commands/switch.js.map +1 -0
  51. package/dist/commands/sync-playwright.d.ts +10 -0
  52. package/dist/commands/sync-playwright.js +98 -0
  53. package/dist/commands/sync-playwright.js.map +1 -0
  54. package/dist/commands/test.d.ts +45 -0
  55. package/dist/commands/test.js +366 -0
  56. package/dist/commands/test.js.map +1 -0
  57. package/dist/commands/trigger.d.ts +37 -0
  58. package/dist/commands/trigger.js +242 -0
  59. package/dist/commands/trigger.js.map +1 -0
  60. package/dist/commands/whoami.d.ts +6 -0
  61. package/dist/commands/whoami.js +42 -0
  62. package/dist/commands/whoami.js.map +1 -0
  63. package/dist/config.d.ts +31 -0
  64. package/dist/config.js +8 -0
  65. package/dist/config.js.map +1 -0
  66. package/dist/constants.d.ts +7 -0
  67. package/dist/constants.js +10 -0
  68. package/dist/constants.js.map +1 -0
  69. package/dist/constructs/alert-channel-subscription.d.ts +44 -0
  70. package/dist/constructs/alert-channel-subscription.js +39 -0
  71. package/dist/constructs/alert-channel-subscription.js.map +1 -0
  72. package/dist/constructs/alert-channel.d.ts +53 -0
  73. package/dist/constructs/alert-channel.js +55 -0
  74. package/dist/constructs/alert-channel.js.map +1 -0
  75. package/dist/constructs/alert-escalation-policy.d.ts +34 -0
  76. package/dist/constructs/alert-escalation-policy.js +47 -0
  77. package/dist/constructs/alert-escalation-policy.js.map +1 -0
  78. package/dist/constructs/api-check.d.ts +187 -0
  79. package/dist/constructs/api-check.js +279 -0
  80. package/dist/constructs/api-check.js.map +1 -0
  81. package/dist/constructs/browser-check.d.ts +90 -0
  82. package/dist/constructs/browser-check.js +151 -0
  83. package/dist/constructs/browser-check.js.map +1 -0
  84. package/dist/constructs/check-group.d.ts +162 -0
  85. package/dist/constructs/check-group.js +208 -0
  86. package/dist/constructs/check-group.js.map +1 -0
  87. package/dist/constructs/check.d.ts +144 -0
  88. package/dist/constructs/check.js +133 -0
  89. package/dist/constructs/check.js.map +1 -0
  90. package/dist/constructs/construct.d.ts +17 -0
  91. package/dist/constructs/construct.js +22 -0
  92. package/dist/constructs/construct.js.map +1 -0
  93. package/dist/constructs/dashboard.d.ts +138 -0
  94. package/dist/constructs/dashboard.js +126 -0
  95. package/dist/constructs/dashboard.js.map +1 -0
  96. package/dist/constructs/email-alert-channel.d.ts +26 -0
  97. package/dist/constructs/email-alert-channel.js +37 -0
  98. package/dist/constructs/email-alert-channel.js.map +1 -0
  99. package/dist/constructs/environment-variable.d.ts +2 -0
  100. package/dist/constructs/environment-variable.js +3 -0
  101. package/dist/constructs/environment-variable.js.map +1 -0
  102. package/dist/constructs/frequency.d.ts +20 -0
  103. package/dist/constructs/frequency.js +26 -0
  104. package/dist/constructs/frequency.js.map +1 -0
  105. package/dist/constructs/heartbeat-check.d.ts +43 -0
  106. package/dist/constructs/heartbeat-check.js +61 -0
  107. package/dist/constructs/heartbeat-check.js.map +1 -0
  108. package/dist/constructs/http-header.d.ts +2 -0
  109. package/dist/constructs/http-header.js +3 -0
  110. package/dist/constructs/http-header.js.map +1 -0
  111. package/dist/constructs/index.d.ts +27 -0
  112. package/dist/constructs/index.js +44 -0
  113. package/dist/constructs/index.js.map +1 -0
  114. package/dist/constructs/key-value-pair.d.ts +6 -0
  115. package/dist/constructs/key-value-pair.js +3 -0
  116. package/dist/constructs/key-value-pair.js.map +1 -0
  117. package/dist/constructs/maintenance-window.d.ts +61 -0
  118. package/dist/constructs/maintenance-window.js +47 -0
  119. package/dist/constructs/maintenance-window.js.map +1 -0
  120. package/dist/constructs/multi-step-check.d.ts +65 -0
  121. package/dist/constructs/multi-step-check.js +153 -0
  122. package/dist/constructs/multi-step-check.js.map +1 -0
  123. package/dist/constructs/opsgenie-alert-channel.d.ts +45 -0
  124. package/dist/constructs/opsgenie-alert-channel.js +44 -0
  125. package/dist/constructs/opsgenie-alert-channel.js.map +1 -0
  126. package/dist/constructs/pagerduty-alert-channel.d.ts +39 -0
  127. package/dist/constructs/pagerduty-alert-channel.js +42 -0
  128. package/dist/constructs/pagerduty-alert-channel.js.map +1 -0
  129. package/dist/constructs/phone-call-alert-channel.d.ts +34 -0
  130. package/dist/constructs/phone-call-alert-channel.js +42 -0
  131. package/dist/constructs/phone-call-alert-channel.js.map +1 -0
  132. package/dist/constructs/playwright-config.d.ts +52 -0
  133. package/dist/constructs/playwright-config.js +3 -0
  134. package/dist/constructs/playwright-config.js.map +1 -0
  135. package/dist/constructs/private-location-check-assignment.d.ts +29 -0
  136. package/dist/constructs/private-location-check-assignment.js +35 -0
  137. package/dist/constructs/private-location-check-assignment.js.map +1 -0
  138. package/dist/constructs/private-location-group-assignment.d.ts +29 -0
  139. package/dist/constructs/private-location-group-assignment.js +35 -0
  140. package/dist/constructs/private-location-group-assignment.js.map +1 -0
  141. package/dist/constructs/private-location.d.ts +51 -0
  142. package/dist/constructs/private-location.js +61 -0
  143. package/dist/constructs/private-location.js.map +1 -0
  144. package/dist/constructs/project.d.ts +66 -0
  145. package/dist/constructs/project.js +155 -0
  146. package/dist/constructs/project.js.map +1 -0
  147. package/dist/constructs/query-param.d.ts +2 -0
  148. package/dist/constructs/query-param.js +3 -0
  149. package/dist/constructs/query-param.js.map +1 -0
  150. package/dist/constructs/ref.d.ts +5 -0
  151. package/dist/constructs/ref.js +13 -0
  152. package/dist/constructs/ref.js.map +1 -0
  153. package/dist/constructs/retry-strategy.d.ts +50 -0
  154. package/dist/constructs/retry-strategy.js +51 -0
  155. package/dist/constructs/retry-strategy.js.map +1 -0
  156. package/dist/constructs/slack-alert-channel.d.ts +26 -0
  157. package/dist/constructs/slack-alert-channel.js +40 -0
  158. package/dist/constructs/slack-alert-channel.js.map +1 -0
  159. package/dist/constructs/sms-alert-channel.d.ts +32 -0
  160. package/dist/constructs/sms-alert-channel.js +40 -0
  161. package/dist/constructs/sms-alert-channel.js.map +1 -0
  162. package/dist/constructs/validator-error.d.ts +2 -0
  163. package/dist/constructs/validator-error.js +7 -0
  164. package/dist/constructs/validator-error.js.map +1 -0
  165. package/dist/constructs/webhook-alert-channel.d.ts +67 -0
  166. package/dist/constructs/webhook-alert-channel.js +52 -0
  167. package/dist/constructs/webhook-alert-channel.js.map +1 -0
  168. package/dist/help/examples.d.ts +6 -0
  169. package/dist/help/examples.js +22 -0
  170. package/dist/help/examples.js.map +1 -0
  171. package/dist/help/help-extension.d.ts +7 -0
  172. package/dist/help/help-extension.js +59 -0
  173. package/dist/help/help-extension.js.map +1 -0
  174. package/dist/index.d.ts +3 -0
  175. package/dist/index.js +30 -0
  176. package/dist/index.js.map +1 -0
  177. package/dist/messages/common-messages.d.ts +5 -0
  178. package/dist/messages/common-messages.js +9 -0
  179. package/dist/messages/common-messages.js.map +1 -0
  180. package/dist/playwright/playwright-config-loader.d.ts +1 -0
  181. package/dist/playwright/playwright-config-loader.js +26 -0
  182. package/dist/playwright/playwright-config-loader.js.map +1 -0
  183. package/dist/playwright/playwright-config-template.d.ts +8 -0
  184. package/dist/playwright/playwright-config-template.js +78 -0
  185. package/dist/playwright/playwright-config-template.js.map +1 -0
  186. package/dist/reporters/abstract-list.d.ts +41 -0
  187. package/dist/reporters/abstract-list.js +171 -0
  188. package/dist/reporters/abstract-list.js.map +1 -0
  189. package/dist/reporters/ci.d.ts +12 -0
  190. package/dist/reporters/ci.js +34 -0
  191. package/dist/reporters/ci.js.map +1 -0
  192. package/dist/reporters/dot.d.ts +10 -0
  193. package/dist/reporters/dot.js +29 -0
  194. package/dist/reporters/dot.js.map +1 -0
  195. package/dist/reporters/github.d.ts +32 -0
  196. package/dist/reporters/github.js +119 -0
  197. package/dist/reporters/github.js.map +1 -0
  198. package/dist/reporters/json.d.ts +26 -0
  199. package/dist/reporters/json.js +101 -0
  200. package/dist/reporters/json.js.map +1 -0
  201. package/dist/reporters/list.d.ts +15 -0
  202. package/dist/reporters/list.js +85 -0
  203. package/dist/reporters/list.js.map +1 -0
  204. package/dist/reporters/reporter.d.ts +16 -0
  205. package/dist/reporters/reporter.js +29 -0
  206. package/dist/reporters/reporter.js.map +1 -0
  207. package/dist/reporters/util.d.ts +18 -0
  208. package/dist/reporters/util.js +325 -0
  209. package/dist/reporters/util.js.map +1 -0
  210. package/dist/rest/accounts.d.ts +12 -0
  211. package/dist/rest/accounts.js +15 -0
  212. package/dist/rest/accounts.js.map +1 -0
  213. package/dist/rest/api.d.ts +33 -0
  214. package/dist/rest/api.js +98 -0
  215. package/dist/rest/api.js.map +1 -0
  216. package/dist/rest/assets.d.ts +13 -0
  217. package/dist/rest/assets.js +30 -0
  218. package/dist/rest/assets.js.map +1 -0
  219. package/dist/rest/checkly-storage.d.ts +12 -0
  220. package/dist/rest/checkly-storage.js +15 -0
  221. package/dist/rest/checkly-storage.js.map +1 -0
  222. package/dist/rest/environment-variables.d.ts +17 -0
  223. package/dist/rest/environment-variables.js +25 -0
  224. package/dist/rest/environment-variables.js.map +1 -0
  225. package/dist/rest/heartbeat-checks.d.ts +11 -0
  226. package/dist/rest/heartbeat-checks.js +17 -0
  227. package/dist/rest/heartbeat-checks.js.map +1 -0
  228. package/dist/rest/locations.d.ts +11 -0
  229. package/dist/rest/locations.js +12 -0
  230. package/dist/rest/locations.js.map +1 -0
  231. package/dist/rest/private-locations.d.ts +10 -0
  232. package/dist/rest/private-locations.js +12 -0
  233. package/dist/rest/private-locations.js.map +1 -0
  234. package/dist/rest/projects.d.ts +46 -0
  235. package/dist/rest/projects.js +25 -0
  236. package/dist/rest/projects.js.map +1 -0
  237. package/dist/rest/runtimes.d.ts +16 -0
  238. package/dist/rest/runtimes.js +15 -0
  239. package/dist/rest/runtimes.js.map +1 -0
  240. package/dist/rest/test-sessions.d.ts +59 -0
  241. package/dist/rest/test-sessions.js +24 -0
  242. package/dist/rest/test-sessions.js.map +1 -0
  243. package/dist/rest/users.d.ts +12 -0
  244. package/dist/rest/users.js +12 -0
  245. package/dist/rest/users.js.map +1 -0
  246. package/dist/rest/util.d.ts +4 -0
  247. package/dist/rest/util.js +17 -0
  248. package/dist/rest/util.js.map +1 -0
  249. package/dist/services/abstract-check-runner.d.ts +60 -0
  250. package/dist/services/abstract-check-runner.js +225 -0
  251. package/dist/services/abstract-check-runner.js.map +1 -0
  252. package/dist/services/check-parser/collector.d.ts +33 -0
  253. package/dist/services/check-parser/collector.js +48 -0
  254. package/dist/services/check-parser/collector.js.map +1 -0
  255. package/dist/services/check-parser/errors.d.ts +8 -0
  256. package/dist/services/check-parser/errors.js +45 -0
  257. package/dist/services/check-parser/errors.js.map +1 -0
  258. package/dist/services/check-parser/package-files/index.d.ts +1 -0
  259. package/dist/services/check-parser/package-files/index.js +6 -0
  260. package/dist/services/check-parser/package-files/index.js.map +1 -0
  261. package/dist/services/check-parser/package-files/jsconfig-json-file.d.ts +17 -0
  262. package/dist/services/check-parser/package-files/jsconfig-json-file.js +46 -0
  263. package/dist/services/check-parser/package-files/jsconfig-json-file.js.map +1 -0
  264. package/dist/services/check-parser/package-files/json-source-file.d.ts +10 -0
  265. package/dist/services/check-parser/package-files/json-source-file.js +38 -0
  266. package/dist/services/check-parser/package-files/json-source-file.js.map +1 -0
  267. package/dist/services/check-parser/package-files/loader.d.ts +7 -0
  268. package/dist/services/check-parser/package-files/loader.js +19 -0
  269. package/dist/services/check-parser/package-files/loader.js.map +1 -0
  270. package/dist/services/check-parser/package-files/package-json-file.d.ts +20 -0
  271. package/dist/services/check-parser/package-files/package-json-file.js +48 -0
  272. package/dist/services/check-parser/package-files/package-json-file.js.map +1 -0
  273. package/dist/services/check-parser/package-files/paths.d.ts +80 -0
  274. package/dist/services/check-parser/package-files/paths.js +177 -0
  275. package/dist/services/check-parser/package-files/paths.js.map +1 -0
  276. package/dist/services/check-parser/package-files/resolver.d.ts +70 -0
  277. package/dist/services/check-parser/package-files/resolver.js +290 -0
  278. package/dist/services/check-parser/package-files/resolver.js.map +1 -0
  279. package/dist/services/check-parser/package-files/source-file.d.ts +15 -0
  280. package/dist/services/check-parser/package-files/source-file.js +54 -0
  281. package/dist/services/check-parser/package-files/source-file.js.map +1 -0
  282. package/dist/services/check-parser/package-files/tsconfig-json-file.d.ts +68 -0
  283. package/dist/services/check-parser/package-files/tsconfig-json-file.js +127 -0
  284. package/dist/services/check-parser/package-files/tsconfig-json-file.js.map +1 -0
  285. package/dist/services/check-parser/parser.d.ts +32 -0
  286. package/dist/services/check-parser/parser.js +313 -0
  287. package/dist/services/check-parser/parser.js.map +1 -0
  288. package/dist/services/checkly-config-loader.d.ts +72 -0
  289. package/dist/services/checkly-config-loader.js +103 -0
  290. package/dist/services/checkly-config-loader.js.map +1 -0
  291. package/dist/services/config.d.ts +28 -0
  292. package/dist/services/config.js +99 -0
  293. package/dist/services/config.js.map +1 -0
  294. package/dist/services/project-parser.d.ts +21 -0
  295. package/dist/services/project-parser.js +192 -0
  296. package/dist/services/project-parser.js.map +1 -0
  297. package/dist/services/snapshot-service.d.ts +13 -0
  298. package/dist/services/snapshot-service.js +85 -0
  299. package/dist/services/snapshot-service.js.map +1 -0
  300. package/dist/services/socket-client.d.ts +4 -0
  301. package/dist/services/socket-client.js +88 -0
  302. package/dist/services/socket-client.js.map +1 -0
  303. package/dist/services/test-filters.d.ts +3 -0
  304. package/dist/services/test-filters.js +27 -0
  305. package/dist/services/test-filters.js.map +1 -0
  306. package/dist/services/test-runner.d.ts +24 -0
  307. package/dist/services/test-runner.js +91 -0
  308. package/dist/services/test-runner.js.map +1 -0
  309. package/dist/services/trigger-runner.d.ts +29 -0
  310. package/dist/services/trigger-runner.js +59 -0
  311. package/dist/services/trigger-runner.js.map +1 -0
  312. package/dist/services/util.d.ts +32 -0
  313. package/dist/services/util.js +244 -0
  314. package/dist/services/util.js.map +1 -0
  315. package/dist/tsconfig.tsbuildinfo +1 -0
  316. package/oclif.manifest.json +635 -0
  317. package/package.json +151 -0
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ var _a;
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ const conf_1 = __importDefault(require("conf"));
8
+ const dataSchema = {
9
+ accountId: { type: 'string' },
10
+ accountName: { type: 'string' },
11
+ };
12
+ const authSchema = {
13
+ apiKey: { type: 'string' },
14
+ };
15
+ const projectSuffix = (_a = process.env.CHECKLY_ENV) !== null && _a !== void 0 ? _a : '';
16
+ // eslint-disable-next-line no-restricted-syntax
17
+ var Env;
18
+ (function (Env) {
19
+ Env["production"] = "production";
20
+ Env["staging"] = "staging";
21
+ Env["development"] = "development";
22
+ Env["local"] = "local";
23
+ })(Env || (Env = {}));
24
+ class ChecklyConfig {
25
+ // Accessing auth or data will cause a config file to be created.
26
+ // We should avoid doing this unless absolutely necessary, since this operation can fail due to file permissions.
27
+ get auth() {
28
+ var _a;
29
+ // Create this._auth lazily
30
+ return (_a = this._auth) !== null && _a !== void 0 ? _a : (this._auth = new conf_1.default({
31
+ projectName: '@checkly/cli',
32
+ configName: 'auth',
33
+ projectSuffix,
34
+ // @ts-ignore
35
+ schema: authSchema,
36
+ }));
37
+ }
38
+ get data() {
39
+ var _a;
40
+ // Create this._data lazily
41
+ return (_a = this._data) !== null && _a !== void 0 ? _a : (this._data = new conf_1.default({
42
+ projectName: '@checkly/cli',
43
+ configName: 'config',
44
+ projectSuffix,
45
+ // @ts-ignore
46
+ schema: dataSchema,
47
+ }));
48
+ }
49
+ clear() {
50
+ this.auth.clear();
51
+ this.data.clear();
52
+ }
53
+ getEnv() {
54
+ const environments = ['production', 'development', 'staging', 'local'];
55
+ const env = process.env.CHECKLY_ENV || environments[0];
56
+ if (!(env in Env)) {
57
+ throw new Error('Invalid CHECKLY_ENV');
58
+ }
59
+ return env;
60
+ }
61
+ getApiKey() {
62
+ return process.env.CHECKLY_API_KEY || this.auth.get('apiKey') || '';
63
+ }
64
+ getAccountId() {
65
+ return process.env.CHECKLY_ACCOUNT_ID || this.data.get('accountId') || '';
66
+ }
67
+ hasEnvVarsConfigured() {
68
+ const apiKey = process.env.CHECKLY_API_KEY || '';
69
+ const accoundId = process.env.CHECKLY_ACCOUNT_ID || '';
70
+ return apiKey !== '' || accoundId !== '';
71
+ }
72
+ getApiUrl() {
73
+ const environments = {
74
+ local: 'http://127.0.0.1:3000',
75
+ development: 'https://api-dev.checklyhq.com',
76
+ staging: 'https://api-test.checklyhq.com',
77
+ production: 'https://api.checklyhq.com',
78
+ };
79
+ return environments[this.getEnv()];
80
+ }
81
+ getMqttUrl() {
82
+ const environments = {
83
+ local: 'wss://events-local.checklyhq.com',
84
+ development: 'wss://events-dev.checklyhq.com',
85
+ staging: 'wss://events-test.checklyhq.com',
86
+ production: 'wss://events.checklyhq.com',
87
+ };
88
+ return environments[this.getEnv()];
89
+ }
90
+ hasValidCredentials() {
91
+ if (this.getApiKey() !== '' && this.getAccountId() !== '') {
92
+ return true;
93
+ }
94
+ return false;
95
+ }
96
+ }
97
+ const config = new ChecklyConfig();
98
+ exports.default = config;
99
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { Project } from '../constructs';
2
+ import { CheckConfigDefaults } from './checkly-config-loader';
3
+ import type { Runtime } from '../rest/runtimes';
4
+ import type { Construct } from '../constructs/construct';
5
+ type ProjectParseOpts = {
6
+ directory: string;
7
+ projectLogicalId: string;
8
+ projectName: string;
9
+ repoUrl?: string;
10
+ checkMatch?: string | string[];
11
+ browserCheckMatch?: string | string[];
12
+ multiStepCheckMatch?: string | string[];
13
+ ignoreDirectoriesMatch?: string[];
14
+ checkDefaults?: CheckConfigDefaults;
15
+ browserCheckDefaults?: CheckConfigDefaults;
16
+ availableRuntimes: Record<string, Runtime>;
17
+ verifyRuntimeDependencies?: boolean;
18
+ checklyConfigConstructs?: Construct[];
19
+ };
20
+ export declare function parseProject(opts: ProjectParseOpts): Promise<Project>;
21
+ export {};
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.parseProject = void 0;
27
+ const glob_1 = require("glob");
28
+ const path = __importStar(require("path"));
29
+ const util_1 = require("./util");
30
+ const constructs_1 = require("../constructs");
31
+ const ref_1 = require("../constructs/ref");
32
+ const BASE_CHECK_DEFAULTS = {
33
+ runtimeId: '2024.02',
34
+ };
35
+ async function parseProject(opts) {
36
+ const { directory, checkMatch = '**/*.check.{js,ts}', browserCheckMatch, multiStepCheckMatch, projectLogicalId, projectName, repoUrl, ignoreDirectoriesMatch = [], checkDefaults = {}, browserCheckDefaults = {}, availableRuntimes, verifyRuntimeDependencies, checklyConfigConstructs, } = opts;
37
+ const project = new constructs_1.Project(projectLogicalId, {
38
+ name: projectName,
39
+ repoUrl,
40
+ });
41
+ checklyConfigConstructs === null || checklyConfigConstructs === void 0 ? void 0 : checklyConfigConstructs.forEach((construct) => project.addResource(construct.type, construct.logicalId, construct));
42
+ constructs_1.Session.project = project;
43
+ constructs_1.Session.basePath = directory;
44
+ constructs_1.Session.checkDefaults = Object.assign({}, BASE_CHECK_DEFAULTS, checkDefaults);
45
+ constructs_1.Session.browserCheckDefaults = browserCheckDefaults;
46
+ constructs_1.Session.availableRuntimes = availableRuntimes;
47
+ constructs_1.Session.verifyRuntimeDependencies = verifyRuntimeDependencies !== null && verifyRuntimeDependencies !== void 0 ? verifyRuntimeDependencies : true;
48
+ // TODO: Do we really need all of the ** globs, or could we just put node_modules?
49
+ const ignoreDirectories = ['**/node_modules/**', '**/.git/**', ...ignoreDirectoriesMatch];
50
+ await loadAllCheckFiles(directory, checkMatch, ignoreDirectories);
51
+ await loadAllBrowserChecks(directory, browserCheckMatch, ignoreDirectories, project);
52
+ await loadAllMultiStepChecks(directory, multiStepCheckMatch, ignoreDirectories, project);
53
+ // private-location must be processed after all checks and groups are loaded.
54
+ await loadAllPrivateLocationsSlugNames(project);
55
+ return project;
56
+ }
57
+ exports.parseProject = parseProject;
58
+ async function loadAllCheckFiles(directory, checkFilePattern, ignorePattern) {
59
+ const checkFiles = await findFilesWithPattern(directory, checkFilePattern, ignorePattern);
60
+ for (const checkFile of checkFiles) {
61
+ // setting the checkFilePath is used for filtering by file name on the command line
62
+ constructs_1.Session.checkFileAbsolutePath = checkFile;
63
+ constructs_1.Session.checkFilePath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
64
+ if (checkFile.endsWith('.js')) {
65
+ await (0, util_1.loadJsFile)(checkFile);
66
+ }
67
+ else if (checkFile.endsWith('.mjs')) {
68
+ await (0, util_1.loadJsFile)(checkFile);
69
+ }
70
+ else if (checkFile.endsWith('.ts')) {
71
+ await (0, util_1.loadTsFile)(checkFile);
72
+ }
73
+ else {
74
+ throw new Error('Unable to load check configuration file with unsupported extension. ' +
75
+ `Please use a .js, .msj or .ts file instead.\n${checkFile}`);
76
+ }
77
+ constructs_1.Session.checkFilePath = undefined;
78
+ constructs_1.Session.checkFileAbsolutePath = undefined;
79
+ }
80
+ }
81
+ async function loadAllBrowserChecks(directory, browserCheckFilePattern, ignorePattern, project) {
82
+ if (!browserCheckFilePattern) {
83
+ return;
84
+ }
85
+ const checkFiles = await findFilesWithPattern(directory, browserCheckFilePattern, ignorePattern);
86
+ const preexistingCheckFiles = new Set();
87
+ Object.values(project.data.check).forEach((check) => {
88
+ if ((check instanceof constructs_1.BrowserCheck || check instanceof constructs_1.MultiStepCheck) && check.scriptPath) {
89
+ preexistingCheckFiles.add(check.scriptPath);
90
+ }
91
+ });
92
+ for (const checkFile of checkFiles) {
93
+ const relPath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
94
+ // Don't create an additional check if the checkFile was already added to a check in loadAllCheckFiles.
95
+ if (preexistingCheckFiles.has(relPath)) {
96
+ continue;
97
+ }
98
+ const browserCheck = new constructs_1.BrowserCheck((0, util_1.pathToPosix)(relPath), {
99
+ name: path.basename(checkFile),
100
+ code: {
101
+ entrypoint: checkFile,
102
+ },
103
+ });
104
+ }
105
+ }
106
+ async function loadAllMultiStepChecks(directory, multiStepCheckFilePattern, ignorePattern, project) {
107
+ if (!multiStepCheckFilePattern) {
108
+ return;
109
+ }
110
+ const checkFiles = await findFilesWithPattern(directory, multiStepCheckFilePattern, ignorePattern);
111
+ const preexistingCheckFiles = new Set();
112
+ Object.values(project.data.check).forEach((check) => {
113
+ if ((check instanceof constructs_1.MultiStepCheck || check instanceof constructs_1.BrowserCheck) && check.scriptPath) {
114
+ preexistingCheckFiles.add(check.scriptPath);
115
+ }
116
+ });
117
+ for (const checkFile of checkFiles) {
118
+ const relPath = (0, util_1.pathToPosix)(path.relative(directory, checkFile));
119
+ // Don't create an additional check if the checkFile was already added to a check in loadAllCheckFiles.
120
+ if (preexistingCheckFiles.has(relPath)) {
121
+ continue;
122
+ }
123
+ const multistepCheck = new constructs_1.MultiStepCheck((0, util_1.pathToPosix)(relPath), {
124
+ name: path.basename(checkFile),
125
+ code: {
126
+ entrypoint: checkFile,
127
+ },
128
+ });
129
+ }
130
+ }
131
+ // TODO: create a function to process slug names for check or check-group to reduce duplicated code.
132
+ async function loadAllPrivateLocationsSlugNames(project) {
133
+ /**
134
+ * Search for slug names in all Checks and CheckGroups privateLocations properties. Then, create non-member
135
+ * private-locations and assigments if needed.
136
+ * This logic allow as to get the private-location id searching by slug names and make use
137
+ * of PrivateLocation.fromId() under the hood.
138
+ */
139
+ const resourcesWithSlugNames = [...Object.values(project.data.check), ...Object.values(project.data['check-group'])]
140
+ .filter(g => { var _a; return (_a = g.privateLocations) === null || _a === void 0 ? void 0 : _a.some(pl => typeof pl === 'string'); });
141
+ if (!resourcesWithSlugNames.length) {
142
+ return;
143
+ }
144
+ const privateLocations = await constructs_1.Session.getPrivateLocations();
145
+ resourcesWithSlugNames.forEach(resource => {
146
+ var _a, _b;
147
+ // only slug names strings are processed here, the instances referenced are handle by the resource class
148
+ const resourceSlugNames = (_b = (_a = resource.privateLocations) === null || _a === void 0 ? void 0 : _a.filter(pl => typeof pl === 'string')) !== null && _b !== void 0 ? _b : [];
149
+ resourceSlugNames.forEach(sn => {
150
+ // check if the slug name could be replaced by the instance within the project
151
+ const isSlugNameFromProjectPrivateLocation = Object.values(project.data['private-location']).find(pl => pl.slugName === sn);
152
+ if (isSlugNameFromProjectPrivateLocation) {
153
+ throw new Error(`${resource.constructor.name} '${resource.logicalId}' is using a slug name '${sn}' to reference project private-location. Please, replace the slug name with the instance.`);
154
+ }
155
+ const privateLocation = privateLocations.find(pl => pl.slugName === sn);
156
+ if (!privateLocation) {
157
+ throw new Error(`${resource.constructor.name} '${resource.logicalId}' is using a private-location '${sn}' not found in your account. Please, review your configuration and try again.`);
158
+ }
159
+ // only create the non member private-location if it wasn't already added
160
+ const privateLocationAlreadyCreated = Object.values(project.data['private-location']).find(pl => pl.physicalId === privateLocation.id);
161
+ let privateLocationLogicalId = '';
162
+ if (!privateLocationAlreadyCreated) {
163
+ const nonMemberPrivateLocation = constructs_1.PrivateLocation.fromId(privateLocation.id);
164
+ privateLocationLogicalId = nonMemberPrivateLocation.logicalId;
165
+ }
166
+ else {
167
+ privateLocationLogicalId = privateLocationAlreadyCreated.logicalId;
168
+ }
169
+ // create the private-location/check assignment
170
+ const assignment = resource instanceof constructs_1.Check
171
+ ? new constructs_1.PrivateLocationCheckAssignment(`private-location-check-assignment#${resource.logicalId}#${privateLocationLogicalId}`, {
172
+ privateLocationId: ref_1.Ref.from(privateLocationLogicalId),
173
+ checkId: ref_1.Ref.from(resource.logicalId),
174
+ })
175
+ : new constructs_1.PrivateLocationGroupAssignment(`private-location-group-assignment#${resource.logicalId}#${privateLocationLogicalId}`, {
176
+ privateLocationId: ref_1.Ref.from(privateLocationLogicalId),
177
+ groupId: ref_1.Ref.from(resource.logicalId),
178
+ });
179
+ });
180
+ });
181
+ }
182
+ async function findFilesWithPattern(directory, pattern, ignorePattern) {
183
+ // The files are sorted to make sure that the processing order is deterministic.
184
+ const files = await (0, glob_1.glob)(pattern, {
185
+ nodir: true,
186
+ cwd: directory,
187
+ ignore: ignorePattern,
188
+ absolute: true,
189
+ });
190
+ return files.sort();
191
+ }
192
+ //# sourceMappingURL=project-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-parser.js","sourceRoot":"","sources":["../../src/services/project-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface Snapshot {
2
+ key: string;
3
+ path: string;
4
+ }
5
+ export declare function pullSnapshots(basePath: string, snapshots?: Snapshot[] | null): Promise<void>;
6
+ export declare function detectSnapshots(projectBasePath: string, scriptFilePath: string): {
7
+ absolutePath: string;
8
+ path: string;
9
+ }[];
10
+ export declare function uploadSnapshots(rawSnapshots?: Array<{
11
+ absolutePath: string;
12
+ path: string;
13
+ }>): Promise<Snapshot[]>;
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.uploadSnapshots = exports.detectSnapshots = exports.pullSnapshots = void 0;
27
+ const fsAsync = __importStar(require("node:fs/promises"));
28
+ const fs = __importStar(require("node:fs"));
29
+ const path = __importStar(require("node:path"));
30
+ const stream = __importStar(require("node:stream/promises"));
31
+ const api_1 = require("../rest/api");
32
+ const util_1 = require("./util");
33
+ async function pullSnapshots(basePath, snapshots) {
34
+ if (!(snapshots === null || snapshots === void 0 ? void 0 : snapshots.length)) {
35
+ return;
36
+ }
37
+ try {
38
+ for (const snapshot of snapshots) {
39
+ const fullPath = path.resolve(basePath, snapshot.path);
40
+ if (!fullPath.startsWith(basePath)) {
41
+ // The snapshot file should always be within the project, but we validate this just in case.
42
+ throw new Error(`Detected invalid snapshot file ${fullPath}`);
43
+ }
44
+ await fsAsync.mkdir(path.dirname(fullPath), { recursive: true });
45
+ const fileStream = fs.createWriteStream(fullPath);
46
+ const { data: contentStream } = await api_1.checklyStorage.download(snapshot.key);
47
+ contentStream.pipe(fileStream);
48
+ await stream.finished(contentStream);
49
+ }
50
+ }
51
+ catch (err) {
52
+ throw new Error(`Error downloading snapshots: ${err.message}`);
53
+ }
54
+ }
55
+ exports.pullSnapshots = pullSnapshots;
56
+ function detectSnapshots(projectBasePath, scriptFilePath) {
57
+ // By default, PWT will store snapshots in the `script.spec.js-snapshots` directory.
58
+ // Other paths can be configured, though, and we should add support for those as well.
59
+ // https://playwright.dev/docs/api/class-testconfig#test-config-snapshot-path-template
60
+ const snapshotFiles = (0, util_1.findFilesRecursively)(`${scriptFilePath}-snapshots`);
61
+ return snapshotFiles.map(absolutePath => ({
62
+ absolutePath,
63
+ path: (0, util_1.pathToPosix)(path.relative(projectBasePath, absolutePath)),
64
+ }));
65
+ }
66
+ exports.detectSnapshots = detectSnapshots;
67
+ async function uploadSnapshots(rawSnapshots) {
68
+ if (!(rawSnapshots === null || rawSnapshots === void 0 ? void 0 : rawSnapshots.length)) {
69
+ return [];
70
+ }
71
+ try {
72
+ const snapshots = [];
73
+ for (const rawSnapshot of rawSnapshots) {
74
+ const snapshotStream = fs.createReadStream(rawSnapshot.absolutePath);
75
+ const { data: { key } } = await api_1.checklyStorage.upload(snapshotStream);
76
+ snapshots.push({ key, path: rawSnapshot.path });
77
+ }
78
+ return snapshots;
79
+ }
80
+ catch (err) {
81
+ throw new Error(`Error uploading snapshots: ${err.message}`);
82
+ }
83
+ }
84
+ exports.uploadSnapshots = uploadSnapshots;
85
+ //# sourceMappingURL=snapshot-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-service.js","sourceRoot":"","sources":["../../src/services/snapshot-service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA2C;AAC3C,4CAA6B;AAC7B,gDAAiC;AACjC,6DAA8C;AAE9C,qCAA4C;AAC5C,iCAA0D;AAOnD,KAAK,UAAU,aAAa,CAAE,QAAgB,EAAE,SAA6B;IAClF,IAAI,CAAC,CAAA,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAE,MAAM,CAAA,EAAE,CAAC;QACvB,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;YACtD,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,4FAA4F;gBAC5F,MAAM,IAAI,KAAK,CAAC,kCAAkC,QAAQ,EAAE,CAAC,CAAA;YAC/D,CAAC;YACD,MAAM,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;YAChE,MAAM,UAAU,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAA;YACjD,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,MAAM,oBAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;YAC3E,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC9B,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;QACtC,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAChE,CAAC;AACH,CAAC;AArBD,sCAqBC;AAED,SAAgB,eAAe,CAAE,eAAuB,EAAE,cAAsB;IAC9E,oFAAoF;IACpF,sFAAsF;IACtF,sFAAsF;IACtF,MAAM,aAAa,GAAG,IAAA,2BAAoB,EAAC,GAAG,cAAc,YAAY,CAAC,CAAA;IACzE,OAAO,aAAa,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxC,YAAY;QACZ,IAAI,EAAE,IAAA,kBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;KAChE,CAAC,CAAC,CAAA;AACL,CAAC;AATD,0CASC;AAEM,KAAK,UAAU,eAAe,CAAE,YAA4D;IACjG,IAAI,CAAC,CAAA,YAAY,aAAZ,YAAY,uBAAZ,YAAY,CAAE,MAAM,CAAA,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GAAoB,EAAE,CAAA;QACrC,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,MAAM,cAAc,GAAG,EAAE,CAAC,gBAAgB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAA;YACpE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,MAAM,oBAAc,CAAC,MAAM,CAAC,cAAc,CAAC,CAAA;YACrE,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC,CAAA;QACjD,CAAC;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9D,CAAC;AACH,CAAC;AAhBD,0CAgBC"}
@@ -0,0 +1,4 @@
1
+ import * as mqtt from 'mqtt';
2
+ export declare class SocketClient {
3
+ static connect(): Promise<mqtt.MqttClient>;
4
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.SocketClient = void 0;
30
+ const mqtt = __importStar(require("mqtt"));
31
+ const config_1 = __importDefault(require("../services/config"));
32
+ // @ts-ignore
33
+ const proxy_from_env_1 = require("proxy-from-env");
34
+ const tunnel_1 = require("tunnel");
35
+ const isHttps = (protocol) => protocol.startsWith('https');
36
+ const wait = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
37
+ async function backOffConnect(url, options, retryCount = 0) {
38
+ try {
39
+ return mqtt.connectAsync(url, options, false);
40
+ }
41
+ catch (error) {
42
+ if (retryCount > 3) {
43
+ throw error;
44
+ }
45
+ retryCount += 1;
46
+ await wait(100 * retryCount);
47
+ return backOffConnect(url, options, retryCount);
48
+ }
49
+ }
50
+ class SocketClient {
51
+ static connect() {
52
+ const url = config_1.default.getMqttUrl();
53
+ const accountId = config_1.default.getAccountId();
54
+ const apiKey = config_1.default.getApiKey();
55
+ const options = {
56
+ reconnectPeriod: 100,
57
+ username: accountId,
58
+ password: apiKey,
59
+ };
60
+ // Replace wss with https so the get proxy url thing the env path
61
+ const proxyUrlEnv = (0, proxy_from_env_1.getProxyForUrl)(url.replace('wss', 'https'));
62
+ if (proxyUrlEnv) {
63
+ const parsedProxyUrl = new URL(proxyUrlEnv);
64
+ const isProxyHttps = isHttps(parsedProxyUrl.protocol);
65
+ const proxy = {
66
+ host: parsedProxyUrl.hostname,
67
+ port: parsedProxyUrl.port,
68
+ protocol: parsedProxyUrl.protocol,
69
+ };
70
+ if (parsedProxyUrl.username && parsedProxyUrl.password) {
71
+ proxy.proxyAuth = `${parsedProxyUrl.username}:${parsedProxyUrl.password}`;
72
+ }
73
+ if (isProxyHttps) {
74
+ options.wsOptions = {
75
+ agent: (0, tunnel_1.httpsOverHttps)({ proxy }),
76
+ };
77
+ }
78
+ else {
79
+ options.wsOptions = {
80
+ agent: (0, tunnel_1.httpsOverHttp)({ proxy }),
81
+ };
82
+ }
83
+ }
84
+ return backOffConnect(`${url}?authenticationScheme=userApiKey`, options, 0);
85
+ }
86
+ }
87
+ exports.SocketClient = SocketClient;
88
+ //# sourceMappingURL=socket-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"socket-client.js","sourceRoot":"","sources":["../../src/services/socket-client.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,gEAAuC;AACvC,aAAa;AACb,mDAA+C;AAC/C,mCAAsD;AAEtD,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAElE,MAAM,IAAI,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;AAE9E,KAAK,UAAU,cAAc,CAAE,GAAW,EAAE,OAA4B,EAAE,UAAU,GAAG,CAAC;IAEtF,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,KAAK,CAAA;QACb,CAAC;QACD,UAAU,IAAI,CAAC,CAAA;QACf,MAAM,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,CAAA;QAC5B,OAAO,cAAc,CAAC,GAAG,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IACjD,CAAC;AACH,CAAC;AAED,MAAa,YAAY;IACvB,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,gBAAM,CAAC,UAAU,EAAE,CAAA;QAC/B,MAAM,SAAS,GAAG,gBAAM,CAAC,YAAY,EAAE,CAAA;QACvC,MAAM,MAAM,GAAG,gBAAM,CAAC,SAAS,EAAE,CAAA;QACjC,MAAM,OAAO,GAAwB;YACnC,eAAe,EAAE,GAAG;YACpB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,MAAM;SACjB,CAAA;QAED,iEAAiE;QACjE,MAAM,WAAW,GAAG,IAAA,+BAAc,EAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;QAC/D,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAA;YAC3C,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAA;YACrD,MAAM,KAAK,GAAQ;gBACjB,IAAI,EAAE,cAAc,CAAC,QAAQ;gBAC7B,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,QAAQ,EAAE,cAAc,CAAC,QAAQ;aAClC,CAAA;YACD,IAAI,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAC;gBACvD,KAAK,CAAC,SAAS,GAAG,GAAG,cAAc,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,EAAE,CAAA;YAC3E,CAAC;YACD,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,SAAS,GAAG;oBAClB,KAAK,EAAE,IAAA,uBAAc,EAAC,EAAE,KAAK,EAAE,CAAC;iBACjC,CAAA;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,SAAS,GAAG;oBAClB,KAAK,EAAE,IAAA,sBAAa,EAAC,EAAE,KAAK,EAAE,CAAC;iBAChC,CAAA;YACH,CAAC;QACH,CAAC;QACD,OAAO,cAAc,CAAC,GAAG,GAAG,kCAAkC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;IAC7E,CAAC;CACF;AApCD,oCAoCC"}
@@ -0,0 +1,3 @@
1
+ export declare function filterByCheckNamePattern(checkNamePattern: string | undefined, checkName: string): boolean;
2
+ export declare function filterByFileNamePattern(filePatterns: string[] | undefined, path: string | undefined): boolean;
3
+ export declare function filterByTags(targetTags: string[][], tags: string[] | undefined): boolean;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.filterByTags = exports.filterByFileNamePattern = exports.filterByCheckNamePattern = void 0;
4
+ function filterByCheckNamePattern(checkNamePattern = '', checkName) {
5
+ const re = new RegExp(checkNamePattern);
6
+ return re.test(checkName);
7
+ }
8
+ exports.filterByCheckNamePattern = filterByCheckNamePattern;
9
+ function filterByFileNamePattern(filePatterns = [], path) {
10
+ return !!filePatterns.find(filePattern => {
11
+ const re = new RegExp(filePattern);
12
+ return re.test(path);
13
+ });
14
+ }
15
+ exports.filterByFileNamePattern = filterByFileNamePattern;
16
+ function filterByTags(targetTags, tags) {
17
+ if ((targetTags === null || targetTags === void 0 ? void 0 : targetTags.length) > 0 && tags) {
18
+ return targetTags.some(targetTagSet => {
19
+ return targetTagSet.every(tag => tags.includes(tag));
20
+ });
21
+ }
22
+ else {
23
+ return true;
24
+ }
25
+ }
26
+ exports.filterByTags = filterByTags;
27
+ //# sourceMappingURL=test-filters.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-filters.js","sourceRoot":"","sources":["../../src/services/test-filters.ts"],"names":[],"mappings":";;;AAAA,SAAgB,wBAAwB,CAAE,gBAAgB,GAAG,EAAE,EAAE,SAAiB;IAChF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACvC,OAAO,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;AAC3B,CAAC;AAHD,4DAGC;AAED,SAAgB,uBAAuB,CAAE,eAA8B,EAAE,EAAE,IAAsB;IAC/F,OAAO,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE;QACvC,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,CAAA;QAClC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAW,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;AACJ,CAAC;AALD,0DAKC;AAED,SAAgB,YAAY,CAAE,UAAsB,EAAE,IAAwB;IAC5E,IAAI,CAAA,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,MAAM,IAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QACnC,OAAO,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACpC,OAAO,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QACtD,CAAC,CAAC,CAAA;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AARD,oCAQC"}
@@ -0,0 +1,24 @@
1
+ import AbstractCheckRunner, { RunLocation, SequenceId } from './abstract-check-runner';
2
+ import { GitInformation } from './util';
3
+ import { Check } from '../constructs/check';
4
+ import { RetryStrategy, Project } from '../constructs';
5
+ export default class TestRunner extends AbstractCheckRunner {
6
+ project: Project;
7
+ checkConstructs: Check[];
8
+ location: RunLocation;
9
+ shouldRecord: boolean;
10
+ repoInfo: GitInformation | null;
11
+ environment: string | null;
12
+ updateSnapshots: boolean;
13
+ baseDirectory: string;
14
+ testRetryStrategy: RetryStrategy | null;
15
+ constructor(accountId: string, project: Project, checks: Check[], location: RunLocation, timeout: number, verbose: boolean, shouldRecord: boolean, repoInfo: GitInformation | null, environment: string | null, updateSnapshots: boolean, baseDirectory: string, testRetryStrategy: RetryStrategy | null);
16
+ scheduleChecks(checkRunSuiteId: string): Promise<{
17
+ testSessionId?: string;
18
+ checks: Array<{
19
+ check: any;
20
+ sequenceId: SequenceId;
21
+ }>;
22
+ }>;
23
+ processCheckResult(result: any): Promise<void>;
24
+ }