checkly 3.1.1 → 4.0.1

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 (233) hide show
  1. package/README.md +42 -110
  2. package/bin/dev +17 -0
  3. package/bin/run +5 -0
  4. package/bin/run.cmd +3 -0
  5. package/constructs.d.ts +1 -0
  6. package/constructs.js +1 -0
  7. package/dist/auth/index.d.ts +15 -0
  8. package/dist/auth/index.js +228 -0
  9. package/dist/auth/index.js.map +1 -0
  10. package/dist/commands/authCommand.d.ts +5 -0
  11. package/dist/commands/authCommand.js +14 -0
  12. package/dist/commands/authCommand.js.map +1 -0
  13. package/dist/commands/baseCommand.d.ts +9 -0
  14. package/dist/commands/baseCommand.js +21 -0
  15. package/dist/commands/baseCommand.js.map +1 -0
  16. package/dist/commands/deploy.d.ts +13 -0
  17. package/dist/commands/deploy.js +171 -0
  18. package/dist/commands/deploy.js.map +1 -0
  19. package/dist/commands/destroy.d.ts +10 -0
  20. package/dist/commands/destroy.js +47 -0
  21. package/dist/commands/destroy.js.map +1 -0
  22. package/dist/commands/env/add.d.ts +13 -0
  23. package/dist/commands/env/add.js +54 -0
  24. package/dist/commands/env/add.js.map +1 -0
  25. package/dist/commands/env/ls.d.ts +6 -0
  26. package/dist/commands/env/ls.js +21 -0
  27. package/dist/commands/env/ls.js.map +1 -0
  28. package/dist/commands/env/pull.d.ts +12 -0
  29. package/dist/commands/env/pull.js +63 -0
  30. package/dist/commands/env/pull.js.map +1 -0
  31. package/dist/commands/env/rm.d.ts +12 -0
  32. package/dist/commands/env/rm.js +56 -0
  33. package/dist/commands/env/rm.js.map +1 -0
  34. package/dist/commands/env/update.d.ts +13 -0
  35. package/dist/commands/env/update.js +54 -0
  36. package/dist/commands/env/update.js.map +1 -0
  37. package/dist/commands/login.d.ts +13 -0
  38. package/dist/commands/login.js +129 -0
  39. package/dist/commands/login.js.map +1 -0
  40. package/dist/commands/logout.d.ts +9 -0
  41. package/dist/commands/logout.js +40 -0
  42. package/dist/commands/logout.js.map +1 -0
  43. package/dist/commands/runtimes.d.ts +6 -0
  44. package/dist/commands/runtimes.js +26 -0
  45. package/dist/commands/runtimes.js.map +1 -0
  46. package/dist/commands/switch.d.ts +9 -0
  47. package/dist/commands/switch.js +59 -0
  48. package/dist/commands/switch.js.map +1 -0
  49. package/dist/commands/test.d.ts +36 -0
  50. package/dist/commands/test.js +237 -0
  51. package/dist/commands/test.js.map +1 -0
  52. package/dist/commands/trigger.d.ts +32 -0
  53. package/dist/commands/trigger.js +173 -0
  54. package/dist/commands/trigger.js.map +1 -0
  55. package/dist/commands/whoami.d.ts +6 -0
  56. package/dist/commands/whoami.js +16 -0
  57. package/dist/commands/whoami.js.map +1 -0
  58. package/dist/config.d.ts +31 -0
  59. package/dist/config.js +8 -0
  60. package/dist/config.js.map +1 -0
  61. package/dist/constructs/alert-channel-subscription.d.ts +44 -0
  62. package/dist/constructs/alert-channel-subscription.js +39 -0
  63. package/dist/constructs/alert-channel-subscription.js.map +1 -0
  64. package/dist/constructs/alert-channel.d.ts +53 -0
  65. package/dist/constructs/alert-channel.js +55 -0
  66. package/dist/constructs/alert-channel.js.map +1 -0
  67. package/dist/constructs/api-check.d.ts +179 -0
  68. package/dist/constructs/api-check.js +248 -0
  69. package/dist/constructs/api-check.js.map +1 -0
  70. package/dist/constructs/browser-check.d.ts +59 -0
  71. package/dist/constructs/browser-check.js +102 -0
  72. package/dist/constructs/browser-check.js.map +1 -0
  73. package/dist/constructs/check-group.d.ts +116 -0
  74. package/dist/constructs/check-group.js +113 -0
  75. package/dist/constructs/check-group.js.map +1 -0
  76. package/dist/constructs/check.d.ts +111 -0
  77. package/dist/constructs/check.js +88 -0
  78. package/dist/constructs/check.js.map +1 -0
  79. package/dist/constructs/construct.d.ts +17 -0
  80. package/dist/constructs/construct.js +22 -0
  81. package/dist/constructs/construct.js.map +1 -0
  82. package/dist/constructs/email-alert-channel.d.ts +26 -0
  83. package/dist/constructs/email-alert-channel.js +37 -0
  84. package/dist/constructs/email-alert-channel.js.map +1 -0
  85. package/dist/constructs/environment-variable.d.ts +2 -0
  86. package/dist/constructs/environment-variable.js +3 -0
  87. package/dist/constructs/environment-variable.js.map +1 -0
  88. package/dist/constructs/frequency.d.ts +20 -0
  89. package/dist/constructs/frequency.js +26 -0
  90. package/dist/constructs/frequency.js.map +1 -0
  91. package/dist/constructs/http-header.d.ts +2 -0
  92. package/dist/constructs/http-header.js +3 -0
  93. package/dist/constructs/http-header.js.map +1 -0
  94. package/dist/constructs/index.d.ts +15 -0
  95. package/dist/constructs/index.js +32 -0
  96. package/dist/constructs/index.js.map +1 -0
  97. package/dist/constructs/key-value-pair.d.ts +5 -0
  98. package/dist/constructs/key-value-pair.js +3 -0
  99. package/dist/constructs/key-value-pair.js.map +1 -0
  100. package/dist/constructs/opsgenie-alert-channel.d.ts +45 -0
  101. package/dist/constructs/opsgenie-alert-channel.js +44 -0
  102. package/dist/constructs/opsgenie-alert-channel.js.map +1 -0
  103. package/dist/constructs/pagerduty-alert-channel.d.ts +39 -0
  104. package/dist/constructs/pagerduty-alert-channel.js +42 -0
  105. package/dist/constructs/pagerduty-alert-channel.js.map +1 -0
  106. package/dist/constructs/project.d.ts +57 -0
  107. package/dist/constructs/project.js +100 -0
  108. package/dist/constructs/project.js.map +1 -0
  109. package/dist/constructs/query-param.d.ts +2 -0
  110. package/dist/constructs/query-param.js +3 -0
  111. package/dist/constructs/query-param.js.map +1 -0
  112. package/dist/constructs/ref.d.ts +5 -0
  113. package/dist/constructs/ref.js +13 -0
  114. package/dist/constructs/ref.js.map +1 -0
  115. package/dist/constructs/slack-alert-channel.d.ts +26 -0
  116. package/dist/constructs/slack-alert-channel.js +40 -0
  117. package/dist/constructs/slack-alert-channel.js.map +1 -0
  118. package/dist/constructs/sms-alert-channel.d.ts +27 -0
  119. package/dist/constructs/sms-alert-channel.js +38 -0
  120. package/dist/constructs/sms-alert-channel.js.map +1 -0
  121. package/dist/constructs/validator-error.d.ts +2 -0
  122. package/dist/constructs/validator-error.js +7 -0
  123. package/dist/constructs/validator-error.js.map +1 -0
  124. package/dist/constructs/webhook-alert-channel.d.ts +59 -0
  125. package/dist/constructs/webhook-alert-channel.js +50 -0
  126. package/dist/constructs/webhook-alert-channel.js.map +1 -0
  127. package/dist/help/examples.d.ts +6 -0
  128. package/dist/help/examples.js +22 -0
  129. package/dist/help/examples.js.map +1 -0
  130. package/dist/help/help-extension.d.ts +4 -0
  131. package/dist/help/help-extension.js +41 -0
  132. package/dist/help/help-extension.js.map +1 -0
  133. package/dist/index.d.ts +3 -0
  134. package/dist/index.js +7 -0
  135. package/dist/index.js.map +1 -0
  136. package/dist/messages/common-messages.d.ts +5 -0
  137. package/dist/messages/common-messages.js +9 -0
  138. package/dist/messages/common-messages.js.map +1 -0
  139. package/dist/reporters/abstract-list.d.ts +34 -0
  140. package/dist/reporters/abstract-list.js +128 -0
  141. package/dist/reporters/abstract-list.js.map +1 -0
  142. package/dist/reporters/ci.d.ts +12 -0
  143. package/dist/reporters/ci.js +29 -0
  144. package/dist/reporters/ci.js.map +1 -0
  145. package/dist/reporters/dot.d.ts +12 -0
  146. package/dist/reporters/dot.js +28 -0
  147. package/dist/reporters/dot.js.map +1 -0
  148. package/dist/reporters/github.d.ts +34 -0
  149. package/dist/reporters/github.js +103 -0
  150. package/dist/reporters/github.js.map +1 -0
  151. package/dist/reporters/list.d.ts +13 -0
  152. package/dist/reporters/list.js +57 -0
  153. package/dist/reporters/list.js.map +1 -0
  154. package/dist/reporters/reporter.d.ts +14 -0
  155. package/dist/reporters/reporter.js +23 -0
  156. package/dist/reporters/reporter.js.map +1 -0
  157. package/dist/reporters/util.d.ts +15 -0
  158. package/dist/reporters/util.js +283 -0
  159. package/dist/reporters/util.js.map +1 -0
  160. package/dist/rest/accounts.d.ts +12 -0
  161. package/dist/rest/accounts.js +15 -0
  162. package/dist/rest/accounts.js.map +1 -0
  163. package/dist/rest/api.d.ts +27 -0
  164. package/dist/rest/api.js +90 -0
  165. package/dist/rest/api.js.map +1 -0
  166. package/dist/rest/assets.d.ts +13 -0
  167. package/dist/rest/assets.js +30 -0
  168. package/dist/rest/assets.js.map +1 -0
  169. package/dist/rest/environment-variables.d.ts +16 -0
  170. package/dist/rest/environment-variables.js +25 -0
  171. package/dist/rest/environment-variables.js.map +1 -0
  172. package/dist/rest/locations.d.ts +11 -0
  173. package/dist/rest/locations.js +12 -0
  174. package/dist/rest/locations.js.map +1 -0
  175. package/dist/rest/private-locations.d.ts +11 -0
  176. package/dist/rest/private-locations.js +12 -0
  177. package/dist/rest/private-locations.js.map +1 -0
  178. package/dist/rest/projects.d.ts +43 -0
  179. package/dist/rest/projects.js +24 -0
  180. package/dist/rest/projects.js.map +1 -0
  181. package/dist/rest/runtimes.d.ts +15 -0
  182. package/dist/rest/runtimes.js +15 -0
  183. package/dist/rest/runtimes.js.map +1 -0
  184. package/dist/rest/test-sessions.d.ts +47 -0
  185. package/dist/rest/test-sessions.js +15 -0
  186. package/dist/rest/test-sessions.js.map +1 -0
  187. package/dist/rest/users.d.ts +12 -0
  188. package/dist/rest/users.js +12 -0
  189. package/dist/rest/users.js.map +1 -0
  190. package/dist/services/abstract-check-runner.d.ts +50 -0
  191. package/dist/services/abstract-check-runner.js +151 -0
  192. package/dist/services/abstract-check-runner.js.map +1 -0
  193. package/dist/services/check-parser/collector.d.ts +33 -0
  194. package/dist/services/check-parser/collector.js +48 -0
  195. package/dist/services/check-parser/collector.js.map +1 -0
  196. package/dist/services/check-parser/errors.d.ts +8 -0
  197. package/dist/services/check-parser/errors.js +45 -0
  198. package/dist/services/check-parser/errors.js.map +1 -0
  199. package/dist/services/check-parser/parser.d.ts +39 -0
  200. package/dist/services/check-parser/parser.js +296 -0
  201. package/dist/services/check-parser/parser.js.map +1 -0
  202. package/dist/services/checkly-config-loader.d.ts +54 -0
  203. package/dist/services/checkly-config-loader.js +55 -0
  204. package/dist/services/checkly-config-loader.js.map +1 -0
  205. package/dist/services/config.d.ts +24 -0
  206. package/dist/services/config.js +75 -0
  207. package/dist/services/config.js.map +1 -0
  208. package/dist/services/project-parser.d.ts +19 -0
  209. package/dist/services/project-parser.js +87 -0
  210. package/dist/services/project-parser.js.map +1 -0
  211. package/dist/services/socket-client.d.ts +4 -0
  212. package/dist/services/socket-client.js +20 -0
  213. package/dist/services/socket-client.js.map +1 -0
  214. package/dist/services/test-filters.d.ts +2 -0
  215. package/dist/services/test-filters.js +16 -0
  216. package/dist/services/test-filters.js.map +1 -0
  217. package/dist/services/test-runner.d.ts +21 -0
  218. package/dist/services/test-runner.js +50 -0
  219. package/dist/services/test-runner.js.map +1 -0
  220. package/dist/services/trigger-runner.d.ts +26 -0
  221. package/dist/services/trigger-runner.js +47 -0
  222. package/dist/services/trigger-runner.js.map +1 -0
  223. package/dist/services/util.d.ts +30 -0
  224. package/dist/services/util.js +157 -0
  225. package/dist/services/util.js.map +1 -0
  226. package/dist/tsconfig.tsbuildinfo +1 -0
  227. package/oclif.manifest.json +527 -0
  228. package/package.json +163 -18
  229. package/LICENSE +0 -121
  230. package/dist/checkly.min.js +0 -1
  231. package/index.js +0 -285
  232. package/logo.png +0 -0
  233. package/test.js +0 -183
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SocketClient = void 0;
4
+ const mqtt = require("async-mqtt");
5
+ const config_1 = require("../services/config");
6
+ class SocketClient {
7
+ static connect() {
8
+ const url = config_1.default.getMqttUrl();
9
+ const accountId = config_1.default.getAccountId();
10
+ const apiKey = config_1.default.getApiKey();
11
+ const options = {
12
+ reconnectPeriod: 0,
13
+ username: accountId,
14
+ password: apiKey,
15
+ };
16
+ return mqtt.connectAsync(`${url}?authenticationScheme=userApiKey`, options, false);
17
+ }
18
+ }
19
+ exports.SocketClient = SocketClient;
20
+ //# 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,mCAAkC;AAClC,+CAAuC;AAEvC,MAAa,YAAY;IACvB,MAAM,CAAC,OAAO;QACZ,MAAM,GAAG,GAAG,gBAAM,CAAC,UAAU,EAAG,CAAA;QAChC,MAAM,SAAS,GAAG,gBAAM,CAAC,YAAY,EAAG,CAAA;QACxC,MAAM,MAAM,GAAG,gBAAM,CAAC,SAAS,EAAG,CAAA;QAClC,MAAM,OAAO,GAAG;YACd,eAAe,EAAE,CAAC;YAClB,QAAQ,EAAE,SAAS;YACnB,QAAQ,EAAE,MAAM;SACjB,CAAA;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,kCAAkC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;IACpF,CAAC;CACF;AAZD,oCAYC"}
@@ -0,0 +1,2 @@
1
+ export declare function filterByCheckNamePattern(checkNamePattern: string | undefined, checkName: string): boolean;
2
+ export declare function filterByFileNamePattern(filePatterns: string[] | undefined, path: string | undefined): boolean;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ 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
+ //# 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"}
@@ -0,0 +1,21 @@
1
+ import AbstractCheckRunner, { RunLocation, CheckRunId } from './abstract-check-runner';
2
+ import { GitInformation } from './util';
3
+ import { Check } from '../constructs/check';
4
+ import { 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
+ constructor(accountId: string, project: Project, checks: Check[], location: RunLocation, timeout: number, verbose: boolean, shouldRecord: boolean, repoInfo: GitInformation | null, environment: string | null);
13
+ scheduleChecks(checkRunSuiteId: string): Promise<{
14
+ testSessionId?: string;
15
+ checks: Array<{
16
+ check: any;
17
+ checkRunId: CheckRunId;
18
+ testSessionId?: string;
19
+ }>;
20
+ }>;
21
+ }
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const api_1 = require("../rest/api");
4
+ const abstract_check_runner_1 = require("./abstract-check-runner");
5
+ const uuid = require("uuid");
6
+ class TestRunner extends abstract_check_runner_1.default {
7
+ constructor(accountId, project, checks, location, timeout, verbose, shouldRecord, repoInfo, environment) {
8
+ super(accountId, timeout, verbose);
9
+ this.project = project;
10
+ this.checkConstructs = checks;
11
+ this.location = location;
12
+ this.shouldRecord = shouldRecord;
13
+ this.repoInfo = repoInfo;
14
+ this.environment = environment;
15
+ }
16
+ async scheduleChecks(checkRunSuiteId) {
17
+ var _a, _b, _c;
18
+ const checkRunIdMap = new Map(this.checkConstructs.map((check) => [uuid.v4(), check]));
19
+ const checkRunJobs = Array.from(checkRunIdMap.entries()).map(([checkRunId, check]) => ({
20
+ ...check.synthesize(),
21
+ group: check.groupId ? this.project.data['check-group'][check.groupId.ref].synthesize() : undefined,
22
+ groupId: undefined,
23
+ sourceInfo: { checkRunSuiteId, checkRunId },
24
+ logicalId: check.logicalId,
25
+ }));
26
+ try {
27
+ if (!checkRunJobs.length) {
28
+ throw new Error('Unable to find checks to run.');
29
+ }
30
+ const { data } = await api_1.testSessions.run({
31
+ name: this.project.name,
32
+ checkRunJobs,
33
+ project: { logicalId: this.project.logicalId },
34
+ runLocation: this.location,
35
+ repoInfo: this.repoInfo,
36
+ environment: this.environment,
37
+ shouldRecord: this.shouldRecord,
38
+ });
39
+ const { testSessionId, testResultIds } = data;
40
+ const checks = Array.from(checkRunIdMap.entries())
41
+ .map(([checkRunId, check]) => ({ check, checkRunId, testResultId: testResultIds === null || testResultIds === void 0 ? void 0 : testResultIds[check.logicalId] }));
42
+ return { testSessionId, checks };
43
+ }
44
+ catch (err) {
45
+ throw new Error((_c = (_b = (_a = err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) !== null && _c !== void 0 ? _c : err.message);
46
+ }
47
+ }
48
+ }
49
+ exports.default = TestRunner;
50
+ //# sourceMappingURL=test-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test-runner.js","sourceRoot":"","sources":["../../src/services/test-runner.ts"],"names":[],"mappings":";;AAAA,qCAA0C;AAC1C,mEAAsF;AAKtF,6BAA4B;AAE5B,MAAqB,UAAW,SAAQ,+BAAmB;IAOzD,YACE,SAAiB,EACjB,OAAgB,EAChB,MAAe,EACf,QAAqB,EACrB,OAAe,EACf,OAAgB,EAChB,YAAqB,EACrB,QAA+B,EAC/B,WAA0B;QAE1B,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,eAAe,GAAG,MAAM,CAAA;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,eAAuB;;QAKvB,MAAM,aAAa,GAAG,IAAI,GAAG,CAC3B,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC,CACxD,CAAA;QACD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACrF,GAAG,KAAK,CAAC,UAAU,EAAE;YACrB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;YACnG,OAAO,EAAE,SAAS;YAClB,UAAU,EAAE,EAAE,eAAe,EAAE,UAAU,EAAE;YAC3C,SAAS,EAAE,KAAK,CAAC,SAAS;SAC3B,CAAC,CAAC,CAAA;QACH,IAAI;YACF,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;aACjD;YACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAY,CAAC,GAAG,CAAC;gBACtC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;gBACvB,YAAY;gBACZ,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;gBAC9C,WAAW,EAAE,IAAI,CAAC,QAAQ;gBAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC,CAAA;YACF,MAAM,EAAE,aAAa,EAAE,aAAa,EAAE,GAAG,IAAI,CAAA;YAC7C,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;iBAC/C,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAA;YACxG,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;SACjC;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,MAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,mCAAI,GAAG,CAAC,OAAO,CAAC,CAAA;SAC5D;IACH,CAAC;CACF;AAhED,6BAgEC"}
@@ -0,0 +1,26 @@
1
+ import AbstractCheckRunner, { RunLocation, CheckRunId } from './abstract-check-runner';
2
+ import { GitInformation } from './util';
3
+ export default class TriggerRunner extends AbstractCheckRunner {
4
+ shouldRecord: boolean;
5
+ location: RunLocation;
6
+ targetTags: string[][];
7
+ envVars: Array<{
8
+ key: string;
9
+ value: string;
10
+ }>;
11
+ repoInfo: GitInformation | null;
12
+ environment: string | null;
13
+ testSessionName: string | undefined;
14
+ constructor(accountId: string, timeout: number, verbose: boolean, shouldRecord: boolean, location: RunLocation, targetTags: string[][], envVars: Array<{
15
+ key: string;
16
+ value: string;
17
+ }>, repoInfo: GitInformation | null, environment: string | null, testSessionName: string | undefined);
18
+ scheduleChecks(checkRunSuiteId: string): Promise<{
19
+ testSessionId?: string;
20
+ checks: Array<{
21
+ check: any;
22
+ checkRunId: CheckRunId;
23
+ testSessionId?: string;
24
+ }>;
25
+ }>;
26
+ }
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const api_1 = require("../rest/api");
4
+ const abstract_check_runner_1 = require("./abstract-check-runner");
5
+ class TriggerRunner extends abstract_check_runner_1.default {
6
+ constructor(accountId, timeout, verbose, shouldRecord, location, targetTags, envVars, repoInfo, environment, testSessionName) {
7
+ super(accountId, timeout, verbose);
8
+ this.shouldRecord = shouldRecord;
9
+ this.location = location;
10
+ this.targetTags = targetTags;
11
+ this.envVars = envVars;
12
+ this.repoInfo = repoInfo;
13
+ this.environment = environment;
14
+ this.testSessionName = testSessionName;
15
+ }
16
+ async scheduleChecks(checkRunSuiteId) {
17
+ var _a, _b, _c, _d;
18
+ try {
19
+ const { data } = await api_1.testSessions.trigger({
20
+ name: (_a = this.testSessionName) !== null && _a !== void 0 ? _a : 'Triggered Session',
21
+ shouldRecord: this.shouldRecord,
22
+ runLocation: this.location,
23
+ checkRunSuiteId,
24
+ targetTags: this.targetTags,
25
+ environmentVariables: this.envVars,
26
+ repoInfo: this.repoInfo,
27
+ environment: this.environment,
28
+ });
29
+ const { checks, checkRunIds, testSessionId, testResultIds, } = data;
30
+ const checksMap = checks.reduce((acc, check) => {
31
+ acc[check.id] = check;
32
+ return acc;
33
+ }, {});
34
+ const augmentedChecks = Object.entries(checkRunIds).map(([checkId, checkRunId]) => ({
35
+ checkRunId,
36
+ check: checksMap[checkId],
37
+ testResultId: testResultIds === null || testResultIds === void 0 ? void 0 : testResultIds[checkId],
38
+ }));
39
+ return { checks: augmentedChecks, testSessionId };
40
+ }
41
+ catch (err) {
42
+ throw new Error((_d = (_c = (_b = err.response) === null || _b === void 0 ? void 0 : _b.data) === null || _c === void 0 ? void 0 : _c.message) !== null && _d !== void 0 ? _d : err.message);
43
+ }
44
+ }
45
+ }
46
+ exports.default = TriggerRunner;
47
+ //# sourceMappingURL=trigger-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger-runner.js","sourceRoot":"","sources":["../../src/services/trigger-runner.ts"],"names":[],"mappings":";;AAAA,qCAA0C;AAC1C,mEAAsF;AAGtF,MAAqB,aAAc,SAAQ,+BAAmB;IAS5D,YACE,SAAiB,EACjB,OAAe,EACf,OAAgB,EAChB,YAAqB,EACrB,QAAqB,EACrB,UAAsB,EACtB,OAA8C,EAC9C,QAA+B,EAC/B,WAA0B,EAC1B,eAAmC;QAEnC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAA;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAA;QAC9B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAA;IACxC,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,eAAuB;;QAKvB,IAAI;YACF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,kBAAY,CAAC,OAAO,CAAC;gBAC1C,IAAI,EAAE,MAAA,IAAI,CAAC,eAAe,mCAAI,mBAAmB;gBACjD,YAAY,EAAE,IAAI,CAAC,YAAY;gBAC/B,WAAW,EAAE,IAAI,CAAC,QAAQ;gBAC1B,eAAe;gBACf,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,oBAAoB,EAAE,IAAI,CAAC,OAAO;gBAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAA;YACF,MAAM,EACJ,MAAM,EACN,WAAW,EACX,aAAa,EACb,aAAa,GACd,GAKG,IAAI,CAAA;YACR,MAAM,SAAS,GAAwB,MAAM,CAAC,MAAM,CAAC,CAAC,GAAwB,EAAE,KAAU,EAAE,EAAE;gBAC5F,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAA;gBACrB,OAAO,GAAG,CAAA;YACZ,CAAC,EAAE,EAAE,CAAC,CAAA;YACN,MAAM,eAAe,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;gBAClF,UAAU;gBACV,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;gBACzB,YAAY,EAAE,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAG,OAAO,CAAC;aACvC,CAAC,CAAC,CAAA;YACH,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,aAAa,EAAE,CAAA;SAClD;QAAC,OAAO,GAAQ,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,MAAA,MAAA,MAAA,GAAG,CAAC,QAAQ,0CAAE,IAAI,0CAAE,OAAO,mCAAI,GAAG,CAAC,OAAO,CAAC,CAAA;SAC5D;IACH,CAAC;CACF;AAzED,gCAyEC"}
@@ -0,0 +1,30 @@
1
+ export interface GitInformation {
2
+ commitId: string;
3
+ repoUrl?: string | null;
4
+ branchName?: string | null;
5
+ commitOwner?: string | null;
6
+ commitMessage?: string | null;
7
+ }
8
+ export interface CiInformation {
9
+ environment: string | null;
10
+ }
11
+ export declare function walkDirectory(directory: string, ignoreDirectories: Set<string>, callback: (filepath: string) => Promise<void>): Promise<void>;
12
+ export declare function loadJsFile(filepath: string): Promise<any>;
13
+ export declare function loadTsFile(filepath: string): Promise<any>;
14
+ /**
15
+ * @param relPath the path to be converted
16
+ * @param separator this is for testing purposes only so we can reliably replace the separator on Linux / Darwin
17
+ */
18
+ export declare function pathToPosix(relPath: string, separator?: string): string;
19
+ export declare function splitConfigFilePath(configFile?: string): {
20
+ configDirectory: string;
21
+ configFilenames?: string[];
22
+ };
23
+ export declare function isFileSync(path: string): boolean;
24
+ /**
25
+ * @param repoUrl default repoURL the user can set in their project config.
26
+ */
27
+ export declare function getGitInformation(repoUrl?: string): GitInformation | null;
28
+ export declare function getCiInformation(): CiInformation;
29
+ export declare function escapeValue(value: string | undefined): string;
30
+ export declare function getEnvs(envFile: string | undefined, envArgs: Array<string>): Promise<import("dotenv").DotenvParseOutput>;
@@ -0,0 +1,157 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getEnvs = exports.escapeValue = exports.getCiInformation = exports.getGitInformation = exports.isFileSync = exports.splitConfigFilePath = exports.pathToPosix = exports.loadTsFile = exports.loadJsFile = exports.walkDirectory = void 0;
4
+ const path = require("path");
5
+ const fs = require("fs/promises");
6
+ const fsSync = require("fs");
7
+ const gitRepoInfo = require("git-repo-info");
8
+ const dotenv_1 = require("dotenv");
9
+ // TODO: Remove this in favor of glob? It's unused.
10
+ async function walkDirectory(directory, ignoreDirectories, callback) {
11
+ const files = await fs.readdir(directory);
12
+ for (const file of files.sort()) {
13
+ const filepath = path.join(directory, file);
14
+ const stats = await fs.stat(filepath);
15
+ if (stats.isDirectory() && !ignoreDirectories.has(file)) {
16
+ await walkDirectory(filepath, ignoreDirectories, callback);
17
+ }
18
+ else {
19
+ await callback(filepath);
20
+ }
21
+ }
22
+ }
23
+ exports.walkDirectory = walkDirectory;
24
+ async function loadJsFile(filepath) {
25
+ try {
26
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
27
+ let exported = require(filepath);
28
+ if (exported instanceof Function) {
29
+ exported = await exported();
30
+ }
31
+ return exported;
32
+ }
33
+ catch (err) {
34
+ throw new Error(`Error loading file ${filepath}\n${err.stack}`);
35
+ }
36
+ }
37
+ exports.loadJsFile = loadJsFile;
38
+ async function loadTsFile(filepath) {
39
+ try {
40
+ const tsCompiler = await getTsCompiler();
41
+ tsCompiler.enabled(true);
42
+ // eslint-disable-next-line @typescript-eslint/no-var-requires
43
+ let { default: exported } = require(filepath);
44
+ if (exported instanceof Function) {
45
+ exported = await exported();
46
+ }
47
+ tsCompiler.enabled(false); // Re-disable the TS compiler
48
+ return exported;
49
+ }
50
+ catch (err) {
51
+ throw new Error(`Error loading file ${filepath}\n${err.stack}`);
52
+ }
53
+ }
54
+ exports.loadTsFile = loadTsFile;
55
+ // To avoid a dependency on typescript for users with no TS checks, we need to dynamically import ts-node
56
+ let tsCompiler;
57
+ async function getTsCompiler() {
58
+ if (tsCompiler)
59
+ return tsCompiler;
60
+ try {
61
+ const tsNode = await Promise.resolve().then(() => require('ts-node'));
62
+ tsCompiler = tsNode.register({
63
+ compilerOptions: {
64
+ module: 'CommonJS',
65
+ },
66
+ });
67
+ }
68
+ catch (err) {
69
+ if (err.code === 'ERR_MODULE_NOT_FOUND' || err.code === 'MODULE_NOT_FOUND') {
70
+ throw new Error('Please install "ts-node" and "typescript" to use TypeScript configuration files');
71
+ }
72
+ throw err;
73
+ }
74
+ return tsCompiler;
75
+ }
76
+ /**
77
+ * @param relPath the path to be converted
78
+ * @param separator this is for testing purposes only so we can reliably replace the separator on Linux / Darwin
79
+ */
80
+ function pathToPosix(relPath, separator) {
81
+ // Windows uses \ rather than / as a path separator.
82
+ // It's important that logical ID's are consistent across platforms, though.
83
+ // Otherwise, checks will be deleted and recreated when `npx checkly deploy` is run on different machines.
84
+ return path.normalize(relPath).split(separator !== null && separator !== void 0 ? separator : path.sep).join(path.posix.sep).replace(/^C:/, '');
85
+ }
86
+ exports.pathToPosix = pathToPosix;
87
+ function splitConfigFilePath(configFile) {
88
+ if (configFile) {
89
+ const cwd = path.resolve(path.dirname(configFile));
90
+ return {
91
+ configDirectory: cwd,
92
+ configFilenames: [path.basename(configFile)],
93
+ };
94
+ }
95
+ return {
96
+ configDirectory: process.cwd(),
97
+ configFilenames: undefined,
98
+ };
99
+ }
100
+ exports.splitConfigFilePath = splitConfigFilePath;
101
+ function isFileSync(path) {
102
+ // This helper is useful to test paths inside constructors which cannot be async.
103
+ let result;
104
+ try {
105
+ result = fsSync.existsSync(path);
106
+ }
107
+ catch (err) {
108
+ throw new Error(`Error parsing the file path: ${path}`);
109
+ }
110
+ return result;
111
+ }
112
+ exports.isFileSync = isFileSync;
113
+ /**
114
+ * @param repoUrl default repoURL the user can set in their project config.
115
+ */
116
+ function getGitInformation(repoUrl) {
117
+ var _a, _b, _c, _d, _e, _f, _g;
118
+ const repositoryInfo = gitRepoInfo();
119
+ if (!process.env.CHECKLY_TEST_REPO_SHA && !repositoryInfo.sha) {
120
+ return null;
121
+ }
122
+ // safe way to remove the email address
123
+ const committer = (_b = (((_a = repositoryInfo.committer) === null || _a === void 0 ? void 0 : _a.match(/([^<]+)/)) || [])[1]) === null || _b === void 0 ? void 0 : _b.trim();
124
+ return {
125
+ commitId: (_c = process.env.CHECKLY_TEST_REPO_SHA) !== null && _c !== void 0 ? _c : repositoryInfo.sha,
126
+ repoUrl: (_d = process.env.CHECKLY_TEST_REPO_URL) !== null && _d !== void 0 ? _d : repoUrl,
127
+ branchName: (_e = process.env.CHECKLY_TEST_REPO_BRANCH) !== null && _e !== void 0 ? _e : repositoryInfo.branch,
128
+ commitOwner: (_f = process.env.CHECKLY_TEST_REPO_COMMIT_OWNER) !== null && _f !== void 0 ? _f : committer,
129
+ commitMessage: (_g = process.env.CHECKLY_TEST_REPO_COMMIT_MESSAGE) !== null && _g !== void 0 ? _g : repositoryInfo.commitMessage,
130
+ };
131
+ }
132
+ exports.getGitInformation = getGitInformation;
133
+ function getCiInformation() {
134
+ var _a;
135
+ return {
136
+ environment: (_a = process.env.CHECKLY_TEST_ENVIRONMENT) !== null && _a !== void 0 ? _a : null,
137
+ };
138
+ }
139
+ exports.getCiInformation = getCiInformation;
140
+ function escapeValue(value) {
141
+ return value
142
+ ? value
143
+ .replace(/\n/g, '\\n') // combine newlines (unix) into one line
144
+ .replace(/\r/g, '\\r') // combine newlines (windows) into one line
145
+ : '';
146
+ }
147
+ exports.escapeValue = escapeValue;
148
+ async function getEnvs(envFile, envArgs) {
149
+ if (envFile) {
150
+ const envsString = await fs.readFile(envFile, { encoding: 'utf8' });
151
+ return (0, dotenv_1.parse)(envsString);
152
+ }
153
+ const envsString = `${envArgs.join('\n')}`;
154
+ return (0, dotenv_1.parse)(envsString);
155
+ }
156
+ exports.getEnvs = getEnvs;
157
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/services/util.ts"],"names":[],"mappings":"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"}