checkly 5.6.0 → 6.0.0-prerelease-541d8e1

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 (113) hide show
  1. package/dist/commands/baseCommand.d.ts +1 -1
  2. package/dist/commands/baseCommand.js +3 -3
  3. package/dist/commands/baseCommand.js.map +1 -1
  4. package/dist/commands/deploy.js +37 -18
  5. package/dist/commands/deploy.js.map +1 -1
  6. package/dist/commands/import/plan.js +54 -27
  7. package/dist/commands/import/plan.js.map +1 -1
  8. package/dist/commands/test.js +84 -53
  9. package/dist/commands/test.js.map +1 -1
  10. package/dist/commands/trigger.d.ts +0 -1
  11. package/dist/commands/trigger.js +4 -6
  12. package/dist/commands/trigger.js.map +1 -1
  13. package/dist/constructs/api-check-bundle.d.ts +57 -0
  14. package/dist/constructs/api-check-bundle.js +34 -0
  15. package/dist/constructs/api-check-bundle.js.map +1 -0
  16. package/dist/constructs/api-check.d.ts +14 -20
  17. package/dist/constructs/api-check.js +86 -83
  18. package/dist/constructs/api-check.js.map +1 -1
  19. package/dist/constructs/browser-check-bundle.d.ts +58 -0
  20. package/dist/constructs/browser-check-bundle.js +31 -0
  21. package/dist/constructs/browser-check-bundle.js.map +1 -0
  22. package/dist/constructs/browser-check.d.ts +10 -22
  23. package/dist/constructs/browser-check.js +54 -67
  24. package/dist/constructs/browser-check.js.map +1 -1
  25. package/dist/constructs/check-group-codegen.d.ts +6 -5
  26. package/dist/constructs/check-group-codegen.js +14 -7
  27. package/dist/constructs/check-group-codegen.js.map +1 -1
  28. package/dist/constructs/check-group-ref.d.ts +14 -0
  29. package/dist/constructs/check-group-ref.js +37 -0
  30. package/dist/constructs/check-group-ref.js.map +1 -0
  31. package/dist/constructs/check-group-v1.d.ts +294 -0
  32. package/dist/constructs/check-group-v1.js +271 -0
  33. package/dist/constructs/check-group-v1.js.map +1 -0
  34. package/dist/constructs/check-group-v2.d.ts +120 -0
  35. package/dist/constructs/check-group-v2.js +87 -0
  36. package/dist/constructs/check-group-v2.js.map +1 -0
  37. package/dist/constructs/check-group.d.ts +4 -175
  38. package/dist/constructs/check-group.js +8 -246
  39. package/dist/constructs/check-group.js.map +1 -1
  40. package/dist/constructs/check.d.ts +2 -2
  41. package/dist/constructs/construct-diagnostics.d.ts +33 -0
  42. package/dist/constructs/construct-diagnostics.js +101 -0
  43. package/dist/constructs/construct-diagnostics.js.map +1 -0
  44. package/dist/constructs/construct.d.ts +35 -1
  45. package/dist/constructs/construct.js +48 -1
  46. package/dist/constructs/construct.js.map +1 -1
  47. package/dist/constructs/dashboard-bundle.d.ts +11 -0
  48. package/dist/constructs/dashboard-bundle.js +19 -0
  49. package/dist/constructs/dashboard-bundle.js.map +1 -0
  50. package/dist/constructs/dashboard.d.ts +26 -22
  51. package/dist/constructs/dashboard.js +39 -46
  52. package/dist/constructs/dashboard.js.map +1 -1
  53. package/dist/constructs/diagnostics.d.ts +36 -0
  54. package/dist/constructs/diagnostics.js +69 -0
  55. package/dist/constructs/diagnostics.js.map +1 -0
  56. package/dist/constructs/index.d.ts +1 -0
  57. package/dist/constructs/index.js +1 -0
  58. package/dist/constructs/index.js.map +1 -1
  59. package/dist/constructs/multi-step-check-bundle.d.ts +46 -0
  60. package/dist/constructs/multi-step-check-bundle.js +25 -0
  61. package/dist/constructs/multi-step-check-bundle.js.map +1 -0
  62. package/dist/constructs/multi-step-check.d.ts +9 -11
  63. package/dist/constructs/multi-step-check.js +50 -65
  64. package/dist/constructs/multi-step-check.js.map +1 -1
  65. package/dist/constructs/playwright-check-bundle.d.ts +49 -0
  66. package/dist/constructs/playwright-check-bundle.js +28 -0
  67. package/dist/constructs/playwright-check-bundle.js.map +1 -0
  68. package/dist/constructs/playwright-check.d.ts +9 -15
  69. package/dist/constructs/playwright-check.js +37 -33
  70. package/dist/constructs/playwright-check.js.map +1 -1
  71. package/dist/constructs/private-location.d.ts +2 -0
  72. package/dist/constructs/private-location.js +7 -5
  73. package/dist/constructs/private-location.js.map +1 -1
  74. package/dist/constructs/project-bundle.d.ts +30 -0
  75. package/dist/constructs/project-bundle.js +44 -0
  76. package/dist/constructs/project-bundle.js.map +1 -0
  77. package/dist/constructs/project.d.ts +41 -18
  78. package/dist/constructs/project.js +72 -31
  79. package/dist/constructs/project.js.map +1 -1
  80. package/dist/reporters/util.d.ts +0 -1
  81. package/dist/reporters/util.js +1 -5
  82. package/dist/reporters/util.js.map +1 -1
  83. package/dist/rest/projects.d.ts +2 -0
  84. package/dist/rest/projects.js.map +1 -1
  85. package/dist/rest/test-sessions.d.ts +2 -1
  86. package/dist/rest/test-sessions.js.map +1 -1
  87. package/dist/services/check-parser/package-files/json-source-file.js +2 -1
  88. package/dist/services/check-parser/package-files/json-source-file.js.map +1 -1
  89. package/dist/services/check-parser/package-files/loader.d.ts +2 -2
  90. package/dist/services/check-parser/package-files/loader.js +2 -2
  91. package/dist/services/check-parser/package-files/loader.js.map +1 -1
  92. package/dist/services/check-parser/package-files/resolver.d.ts +8 -8
  93. package/dist/services/check-parser/package-files/resolver.js +34 -32
  94. package/dist/services/check-parser/package-files/resolver.js.map +1 -1
  95. package/dist/services/check-parser/package-files/source-file.d.ts +1 -1
  96. package/dist/services/check-parser/package-files/source-file.js +5 -4
  97. package/dist/services/check-parser/package-files/source-file.js.map +1 -1
  98. package/dist/services/check-parser/parser.d.ts +3 -3
  99. package/dist/services/check-parser/parser.js +22 -23
  100. package/dist/services/check-parser/parser.js.map +1 -1
  101. package/dist/services/checkly-config-codegen.js +0 -3
  102. package/dist/services/checkly-config-codegen.js.map +1 -1
  103. package/dist/services/checkly-config-loader.d.ts +0 -1
  104. package/dist/services/checkly-config-loader.js.map +1 -1
  105. package/dist/services/project-parser.d.ts +4 -2
  106. package/dist/services/project-parser.js +109 -67
  107. package/dist/services/project-parser.js.map +1 -1
  108. package/dist/services/test-runner.d.ts +6 -4
  109. package/dist/services/test-runner.js +33 -22
  110. package/dist/services/test-runner.js.map +1 -1
  111. package/dist/tsconfig.tsbuildinfo +1 -1
  112. package/oclif.manifest.json +3 -3
  113. package/package.json +1 -1
@@ -1,4 +1,6 @@
1
1
  import { Construct, Content, Entrypoint } from './construct';
2
+ import { Diagnostics } from './diagnostics';
3
+ import { DashboardBundle } from './dashboard-bundle';
2
4
  export interface DashboardProps {
3
5
  /**
4
6
  * A list of one or more tags that filter what checks will be shown in the dashboard.
@@ -102,28 +104,28 @@ export interface DashboardProps {
102
104
  * This class make use of the Dashboard endpoints.
103
105
  */
104
106
  export declare class Dashboard extends Construct {
105
- tags?: Array<string>;
106
- customUrl?: string;
107
- customDomain?: string;
108
- logo?: string;
109
- favicon?: string;
110
- link?: string;
111
- header?: string;
112
- description?: string;
113
- width?: 'FULL' | '960PX';
114
- refreshRate?: 60 | 300 | 600;
115
- paginate?: boolean;
116
- paginationRate?: 30 | 60 | 300;
117
- checksPerPage?: number;
118
- useTagsAndOperator?: boolean;
119
- hideTags?: boolean;
120
- enableIncidents?: boolean;
121
- expandChecks?: boolean;
122
- showHeader?: boolean;
123
- customCSS?: string;
124
- isPrivate?: boolean;
125
- showP95?: boolean;
126
- showP99?: boolean;
107
+ readonly tags?: Array<string>;
108
+ readonly customUrl?: string;
109
+ readonly customDomain?: string;
110
+ readonly logo?: string;
111
+ readonly favicon?: string;
112
+ readonly link?: string;
113
+ readonly header?: string;
114
+ readonly description?: string;
115
+ readonly width?: 'FULL' | '960PX';
116
+ readonly refreshRate?: 60 | 300 | 600;
117
+ readonly paginate?: boolean;
118
+ readonly paginationRate?: 30 | 60 | 300;
119
+ readonly checksPerPage?: number;
120
+ readonly useTagsAndOperator?: boolean;
121
+ readonly hideTags?: boolean;
122
+ readonly enableIncidents?: boolean;
123
+ readonly expandChecks?: boolean;
124
+ readonly showHeader?: boolean;
125
+ readonly customCSS?: Content | Entrypoint;
126
+ readonly isPrivate?: boolean;
127
+ readonly showP95?: boolean;
128
+ readonly showP99?: boolean;
127
129
  static readonly __checklyType = "dashboard";
128
130
  /**
129
131
  * Constructs the Dashboard instance
@@ -134,5 +136,7 @@ export declare class Dashboard extends Construct {
134
136
  * {@link https://checklyhq.com/docs/cli/constructs-reference/#dashboard Read more in the docs}
135
137
  */
136
138
  constructor(logicalId: string, props: DashboardProps);
139
+ validate(diagnostics: Diagnostics): Promise<void>;
140
+ bundle(): Promise<DashboardBundle>;
137
141
  synthesize(): any | null;
138
142
  }
@@ -1,33 +1,14 @@
1
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;
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
5
  Object.defineProperty(exports, "__esModule", { value: true });
26
6
  exports.Dashboard = void 0;
27
- const fs = __importStar(require("fs"));
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
28
8
  const construct_1 = require("./construct");
29
9
  const project_1 = require("./project");
30
- const path = __importStar(require("path"));
10
+ const construct_diagnostics_1 = require("./construct-diagnostics");
11
+ const dashboard_bundle_1 = require("./dashboard-bundle");
31
12
  /**
32
13
  * Creates a Dashboard
33
14
  *
@@ -90,32 +71,45 @@ class Dashboard extends construct_1.Construct {
90
71
  this.isPrivate = props.isPrivate;
91
72
  this.showP95 = props.showP95;
92
73
  this.showP99 = props.showP99;
93
- if (!props.customUrl && !props.customDomain) {
94
- throw new Error('Either a "customUrl" or "customDomain" must be specified.');
74
+ project_1.Session.registerConstruct(this);
75
+ }
76
+ async validate(diagnostics) {
77
+ if (!this.customUrl && !this.customDomain) {
78
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('customUrl', new Error(`Required unless "customDomain" is set.`)));
79
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('customDomain', new Error(`Required unless "customUrl" is set.`)));
95
80
  }
96
- if (props.customCSS) {
97
- if ('entrypoint' in props.customCSS) {
98
- const entrypoint = props.customCSS.entrypoint;
99
- let absoluteEntrypoint = null;
100
- if (path.isAbsolute(entrypoint)) {
101
- absoluteEntrypoint = entrypoint;
102
- }
103
- else {
104
- if (!project_1.Session.checkFileAbsolutePath) {
105
- throw new Error('You cannot use relative paths without the checkFileAbsolutePath in session');
106
- }
107
- absoluteEntrypoint = path.join(path.dirname(project_1.Session.checkFileAbsolutePath), entrypoint);
81
+ if (this.customCSS) {
82
+ if (!(0, construct_1.isEntrypoint)(this.customCSS) && !(0, construct_1.isContent)(this.customCSS)) {
83
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('customCSS', new Error(`Either "entrypoint" or "content" is required.`)));
84
+ }
85
+ else if ((0, construct_1.isEntrypoint)(this.customCSS) && (0, construct_1.isContent)(this.customCSS)) {
86
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('customCSS', new Error(`Provide exactly one of "entrypoint" or "content", but not both.`)));
87
+ }
88
+ else if ((0, construct_1.isEntrypoint)(this.customCSS)) {
89
+ const entrypoint = this.resolveContentFilePath(this.customCSS.entrypoint);
90
+ try {
91
+ await promises_1.default.access(entrypoint, promises_1.default.constants.R_OK);
108
92
  }
109
- if (!fs.existsSync(absoluteEntrypoint)) {
110
- throw new Error(`Unrecognized CSS code or file not found for 'customCSS' property in dashboard '${logicalId}'.`);
93
+ catch (err) {
94
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('customCSS', new Error(`Unable to access file "${entrypoint}": ${err.message}`, { cause: err })));
111
95
  }
112
- this.customCSS = String(fs.readFileSync(absoluteEntrypoint));
113
- }
114
- else if ('content' in props.customCSS) {
115
- this.customCSS = props.customCSS.content;
116
96
  }
117
97
  }
118
- project_1.Session.registerConstruct(this);
98
+ }
99
+ async bundle() {
100
+ const customCSS = await (async () => {
101
+ if (this.customCSS) {
102
+ if ((0, construct_1.isEntrypoint)(this.customCSS)) {
103
+ const entrypoint = this.resolveContentFilePath(this.customCSS.entrypoint);
104
+ const content = await promises_1.default.readFile(entrypoint);
105
+ return content.toString('utf8');
106
+ }
107
+ return this.customCSS.content;
108
+ }
109
+ })();
110
+ return new dashboard_bundle_1.DashboardBundle(this, {
111
+ customCSS,
112
+ });
119
113
  }
120
114
  synthesize() {
121
115
  return {
@@ -137,7 +131,6 @@ class Dashboard extends construct_1.Construct {
137
131
  enableIncidents: this.enableIncidents,
138
132
  expandChecks: this.expandChecks,
139
133
  showHeader: this.showHeader,
140
- customCSS: this.customCSS,
141
134
  isPrivate: this.isPrivate,
142
135
  showP95: this.showP95,
143
136
  showP99: this.showP99,
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/constructs/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/constructs/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ export interface DiagnosticOptions {
2
+ title: string;
3
+ message: string;
4
+ }
5
+ export declare abstract class Diagnostic {
6
+ title: string;
7
+ message: string;
8
+ constructor(options: DiagnosticOptions);
9
+ abstract isFatal(): boolean;
10
+ abstract isBenign(): boolean;
11
+ }
12
+ export interface ErrorDiagnosticOptions extends DiagnosticOptions {
13
+ error: any;
14
+ }
15
+ export declare class ErrorDiagnostic extends Diagnostic {
16
+ error: any;
17
+ constructor(options: ErrorDiagnosticOptions);
18
+ isFatal(): boolean;
19
+ isBenign(): boolean;
20
+ }
21
+ export declare class WarningDiagnostic extends Diagnostic {
22
+ isFatal(): boolean;
23
+ isBenign(): boolean;
24
+ }
25
+ export declare class NoticeDiagnostic extends Diagnostic {
26
+ isFatal(): boolean;
27
+ isBenign(): boolean;
28
+ }
29
+ export declare class Diagnostics {
30
+ #private;
31
+ observations: Diagnostic[];
32
+ isFatal(): boolean;
33
+ isBenign(): boolean;
34
+ add(diagnostic: Diagnostic): void;
35
+ extend(...diagnostics: Diagnostics[]): void;
36
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Diagnostics = exports.NoticeDiagnostic = exports.WarningDiagnostic = exports.ErrorDiagnostic = exports.Diagnostic = void 0;
4
+ class Diagnostic {
5
+ title;
6
+ message;
7
+ constructor(options) {
8
+ this.title = options.title;
9
+ this.message = options.message;
10
+ }
11
+ }
12
+ exports.Diagnostic = Diagnostic;
13
+ class ErrorDiagnostic extends Diagnostic {
14
+ error;
15
+ constructor(options) {
16
+ super(options);
17
+ this.error = options.error;
18
+ }
19
+ isFatal() {
20
+ return true;
21
+ }
22
+ isBenign() {
23
+ return false;
24
+ }
25
+ }
26
+ exports.ErrorDiagnostic = ErrorDiagnostic;
27
+ class WarningDiagnostic extends Diagnostic {
28
+ isFatal() {
29
+ return false;
30
+ }
31
+ isBenign() {
32
+ return false;
33
+ }
34
+ }
35
+ exports.WarningDiagnostic = WarningDiagnostic;
36
+ class NoticeDiagnostic extends Diagnostic {
37
+ isFatal() {
38
+ return false;
39
+ }
40
+ isBenign() {
41
+ return true;
42
+ }
43
+ }
44
+ exports.NoticeDiagnostic = NoticeDiagnostic;
45
+ class Diagnostics {
46
+ observations = [];
47
+ #fatal = false;
48
+ #benign = true;
49
+ isFatal() {
50
+ return this.#fatal;
51
+ }
52
+ isBenign() {
53
+ return this.#benign;
54
+ }
55
+ add(diagnostic) {
56
+ this.observations.push(diagnostic);
57
+ this.#fatal ||= diagnostic.isFatal();
58
+ this.#benign &&= diagnostic.isBenign();
59
+ }
60
+ extend(...diagnostics) {
61
+ for (const diags of diagnostics) {
62
+ for (const observation of diags.observations) {
63
+ this.add(observation);
64
+ }
65
+ }
66
+ }
67
+ }
68
+ exports.Diagnostics = Diagnostics;
69
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/constructs/diagnostics.ts"],"names":[],"mappings":";;;AAKA,MAAsB,UAAU;IAC9B,KAAK,CAAQ;IACb,OAAO,CAAQ;IAEf,YAAa,OAA0B;QACrC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAChC,CAAC;CAIF;AAXD,gCAWC;AAMD,MAAa,eAAgB,SAAQ,UAAU;IAC7C,KAAK,CAAK;IAEV,YAAa,OAA+B;QAC1C,KAAK,CAAC,OAAO,CAAC,CAAA;QACd,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC5B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,CAAA;IACb,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAfD,0CAeC;AAED,MAAa,iBAAkB,SAAQ,UAAU;IAC/C,OAAO;QACL,OAAO,KAAK,CAAA;IACd,CAAC;IAED,QAAQ;QACN,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AARD,8CAQC;AAED,MAAa,gBAAiB,SAAQ,UAAU;IAC9C,OAAO;QACL,OAAO,KAAK,CAAA;IACd,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AARD,4CAQC;AAED,MAAa,WAAW;IACtB,YAAY,GAAiB,EAAE,CAAA;IAC/B,MAAM,GAAG,KAAK,CAAA;IACd,OAAO,GAAG,IAAI,CAAA;IAEd,OAAO;QACL,OAAO,IAAI,CAAC,MAAM,CAAA;IACpB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED,GAAG,CAAE,UAAsB;QACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAClC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC,OAAO,EAAE,CAAA;QACpC,IAAI,CAAC,OAAO,KAAK,UAAU,CAAC,QAAQ,EAAE,CAAA;IACxC,CAAC;IAED,MAAM,CAAE,GAAG,WAA0B;QACnC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC7C,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;YACvB,CAAC;QACH,CAAC;IACH,CAAC;CACF;AA1BD,kCA0BC"}
@@ -33,3 +33,4 @@ export * from './status-page';
33
33
  export * from './status-page-service';
34
34
  export * from './incident';
35
35
  export * from './playwright-check';
36
+ export * from './diagnostics';
@@ -49,4 +49,5 @@ __exportStar(require("./status-page"), exports);
49
49
  __exportStar(require("./status-page-service"), exports);
50
50
  __exportStar(require("./incident"), exports);
51
51
  __exportStar(require("./playwright-check"), exports);
52
+ __exportStar(require("./diagnostics"), exports);
52
53
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constructs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,sDAAmC;AACnC,wDAAqC;AACrC,wDAAqC;AACrC,2DAAwC;AACxC,4DAAyC;AACzC,0DAAuC;AACvC,8CAA2B;AAC3B,kDAA+B;AAC/B,oDAAiC;AACjC,gDAA6B;AAC7B,+DAA4C;AAC5C,yDAAsC;AACtC,gDAA6B;AAC7B,gDAA6B;AAC7B,8CAA2B;AAC3B,uDAAoC;AACpC,kDAA+B;AAC/B,qDAAkC;AAClC,sEAAmD;AACnD,sEAAmD;AACnD,0CAAuB;AACvB,8CAA2B;AAC3B,6DAA0C;AAC1C,mDAAgC;AAChC,qDAAkC;AAClC,4DAAyC;AACzC,8CAA2B;AAC3B,6DAA0C;AAC1C,0DAAuC;AACvC,2DAAwC;AACxC,gDAA6B;AAC7B,wDAAqC;AACrC,6CAA0B;AAC1B,qDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constructs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,sDAAmC;AACnC,wDAAqC;AACrC,wDAAqC;AACrC,2DAAwC;AACxC,4DAAyC;AACzC,0DAAuC;AACvC,8CAA2B;AAC3B,kDAA+B;AAC/B,oDAAiC;AACjC,gDAA6B;AAC7B,+DAA4C;AAC5C,yDAAsC;AACtC,gDAA6B;AAC7B,gDAA6B;AAC7B,8CAA2B;AAC3B,uDAAoC;AACpC,kDAA+B;AAC/B,qDAAkC;AAClC,sEAAmD;AACnD,sEAAmD;AACnD,0CAAuB;AACvB,8CAA2B;AAC3B,6DAA0C;AAC1C,mDAAgC;AAChC,qDAAkC;AAClC,4DAAyC;AACzC,8CAA2B;AAC3B,6DAA0C;AAC1C,0DAAuC;AACvC,2DAAwC;AACxC,gDAA6B;AAC7B,wDAAqC;AACrC,6CAA0B;AAC1B,qDAAkC;AAClC,gDAA6B"}
@@ -0,0 +1,46 @@
1
+ import { Bundle } from './construct';
2
+ import { MultiStepCheck } from './multi-step-check';
3
+ import { SharedFileRef } from './project';
4
+ export interface MultiStepCheckBundleProps {
5
+ script: string;
6
+ scriptPath?: string;
7
+ dependencies?: SharedFileRef[];
8
+ }
9
+ export declare class MultiStepCheckBundle implements Bundle {
10
+ multiStepCheck: MultiStepCheck;
11
+ script: string;
12
+ scriptPath?: string;
13
+ dependencies?: SharedFileRef[];
14
+ constructor(multiStepCheck: MultiStepCheck, props: MultiStepCheckBundleProps);
15
+ synthesize(): {
16
+ script: string;
17
+ scriptPath: string | undefined;
18
+ dependencies: number[] | undefined;
19
+ checkType: string;
20
+ playwrightConfig: import("./playwright-config").PlaywrightConfig | undefined;
21
+ name: string;
22
+ activated: boolean | undefined;
23
+ muted: boolean | undefined;
24
+ shouldFail: boolean | undefined;
25
+ runtimeId: string | undefined;
26
+ locations: (keyof import("..").Region)[] | undefined;
27
+ privateLocations: undefined;
28
+ tags: string[] | undefined;
29
+ frequency: number | undefined;
30
+ frequencyOffset: number | undefined;
31
+ groupId: import("./ref").Ref | undefined;
32
+ environmentVariables: import("./key-value-pair").default[] | undefined;
33
+ retryStrategy: import("./retry-strategy").RetryStrategy | null | undefined;
34
+ doubleCheck: boolean | undefined;
35
+ alertSettings: import("./alert-escalation-policy").AlertEscalation | undefined;
36
+ useGlobalAlertSettings: boolean | undefined;
37
+ runParallel: boolean | undefined;
38
+ triggerIncident: {
39
+ serviceId: import("./ref").Ref;
40
+ severity: "MINOR" | "MEDIUM" | "MAJOR" | "CRITICAL";
41
+ name: string;
42
+ description: string;
43
+ notifySubscribers: boolean;
44
+ } | undefined;
45
+ };
46
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MultiStepCheckBundle = void 0;
4
+ class MultiStepCheckBundle {
5
+ multiStepCheck;
6
+ script;
7
+ scriptPath;
8
+ dependencies;
9
+ constructor(multiStepCheck, props) {
10
+ this.multiStepCheck = multiStepCheck;
11
+ this.script = props.script;
12
+ this.scriptPath = props.scriptPath;
13
+ this.dependencies = props.dependencies;
14
+ }
15
+ synthesize() {
16
+ return {
17
+ ...this.multiStepCheck.synthesize(),
18
+ script: this.script,
19
+ scriptPath: this.scriptPath,
20
+ dependencies: this.dependencies,
21
+ };
22
+ }
23
+ }
24
+ exports.MultiStepCheckBundle = MultiStepCheckBundle;
25
+ //# sourceMappingURL=multi-step-check-bundle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-step-check-bundle.js","sourceRoot":"","sources":["../../src/constructs/multi-step-check-bundle.ts"],"names":[],"mappings":";;;AAUA,MAAa,oBAAoB;IAC/B,cAAc,CAAgB;IAC9B,MAAM,CAAQ;IACd,UAAU,CAAS;IACnB,YAAY,CAAkB;IAE9B,YAAa,cAA8B,EAAE,KAAgC;QAC3E,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;QACpC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC1B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAA;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;IACxC,CAAC;IAED,UAAU;QACR,OAAO;YACL,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;YACnC,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;SAChC,CAAA;IACH,CAAC;CACF;AArBD,oDAqBC"}
@@ -1,7 +1,8 @@
1
1
  import { Check, CheckProps } from './check';
2
2
  import { Content, Entrypoint } from './construct';
3
- import { CheckDependency } from './browser-check';
4
3
  import { PlaywrightConfig } from './playwright-config';
4
+ import { Diagnostics } from './diagnostics';
5
+ import { MultiStepCheckBundle } from './multi-step-check-bundle';
5
6
  export interface MultiStepCheckProps extends CheckProps {
6
7
  /**
7
8
  * A valid piece of Node.js javascript code describing a multi-step interaction
@@ -18,10 +19,8 @@ export interface MultiStepCheckProps extends CheckProps {
18
19
  * This class make use of the multi-step checks endpoints.
19
20
  */
20
21
  export declare class MultiStepCheck extends Check {
21
- script: string;
22
- scriptPath?: string;
23
- dependencies?: Array<CheckDependency>;
24
- playwrightConfig?: PlaywrightConfig;
22
+ readonly code: Content | Entrypoint;
23
+ readonly playwrightConfig?: PlaywrightConfig;
25
24
  /**
26
25
  * Constructs the multi-step instance
27
26
  *
@@ -30,19 +29,18 @@ export declare class MultiStepCheck extends Check {
30
29
  * {@link https://checklyhq.com/docs/cli/constructs-reference/#multistepcheck Read more in the docs}
31
30
  */
32
31
  constructor(logicalId: string, props: MultiStepCheckProps);
32
+ validate(diagnostics: Diagnostics): Promise<void>;
33
33
  private static applyDefaultMultiStepCheckGroupConfig;
34
34
  private static applyDefaultMultiStepCheckConfig;
35
- static bundle(entry: string, runtimeId?: string): {
35
+ static bundle(entry: string, runtimeId?: string): Promise<{
36
36
  script: string;
37
37
  scriptPath: string;
38
- dependencies: CheckDependency[];
39
- };
38
+ dependencies: number[];
39
+ }>;
40
40
  getSourceFile(): string | undefined;
41
+ bundle(): Promise<MultiStepCheckBundle>;
41
42
  synthesize(): {
42
43
  checkType: string;
43
- script: string;
44
- scriptPath: string | undefined;
45
- dependencies: CheckDependency[] | undefined;
46
44
  playwrightConfig: PlaywrightConfig | undefined;
47
45
  name: string;
48
46
  activated: boolean | undefined;
@@ -1,37 +1,16 @@
1
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
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
6
  exports.MultiStepCheck = void 0;
30
- const path = __importStar(require("path"));
7
+ const promises_1 = __importDefault(require("node:fs/promises"));
31
8
  const check_1 = require("./check");
32
9
  const project_1 = require("./project");
33
- const util_1 = require("../services/util");
10
+ const construct_1 = require("./construct");
34
11
  const constants_1 = __importDefault(require("../constants"));
12
+ const construct_diagnostics_1 = require("./construct-diagnostics");
13
+ const multi_step_check_bundle_1 = require("./multi-step-check-bundle");
35
14
  /**
36
15
  * Creates a multi-step Check
37
16
  *
@@ -40,9 +19,7 @@ const constants_1 = __importDefault(require("../constants"));
40
19
  * This class make use of the multi-step checks endpoints.
41
20
  */
42
21
  class MultiStepCheck extends check_1.Check {
43
- script;
44
- scriptPath;
45
- dependencies;
22
+ code;
46
23
  playwrightConfig;
47
24
  /**
48
25
  * Constructs the multi-step instance
@@ -57,41 +34,37 @@ class MultiStepCheck extends check_1.Check {
57
34
  }
58
35
  MultiStepCheck.applyDefaultMultiStepCheckConfig(props);
59
36
  super(logicalId, props);
37
+ this.code = props.code;
60
38
  this.playwrightConfig = props.playwrightConfig;
61
- if (!project_1.Session.getRuntime(this.runtimeId)?.multiStepSupport) {
62
- throw new Error('This runtime does not support multi step checks.');
39
+ project_1.Session.registerConstruct(this);
40
+ this.addSubscriptions();
41
+ this.addPrivateLocationCheckAssignments();
42
+ }
43
+ async validate(diagnostics) {
44
+ if (!(0, construct_1.isEntrypoint)(this.code) && !(0, construct_1.isContent)(this.code)) {
45
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('code', new Error(`Either "entrypoint" or "content" is required.`)));
63
46
  }
64
- if ('content' in props.code) {
65
- const script = props.code.content;
66
- this.script = script;
47
+ else if ((0, construct_1.isEntrypoint)(this.code) && (0, construct_1.isContent)(this.code)) {
48
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('code', new Error(`Provide exactly one of "entrypoint" or "content", but not both.`)));
67
49
  }
68
- else if ('entrypoint' in props.code) {
69
- const entrypoint = props.code.entrypoint;
70
- let absoluteEntrypoint = null;
71
- if (path.isAbsolute(entrypoint)) {
72
- absoluteEntrypoint = entrypoint;
73
- }
74
- else {
75
- if (!project_1.Session.checkFileAbsolutePath) {
76
- throw new Error('You cannot use relative paths without the checkFileAbsolutePath in session');
50
+ else if ((0, construct_1.isEntrypoint)(this.code)) {
51
+ const entrypoint = this.resolveContentFilePath(this.code.entrypoint);
52
+ try {
53
+ const stats = await promises_1.default.stat(entrypoint);
54
+ if (stats.size === 0) {
55
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('code', new Error(`The entrypoint file "${entrypoint}" must not be empty.`)));
77
56
  }
78
- absoluteEntrypoint = path.join(path.dirname(project_1.Session.checkFileAbsolutePath), entrypoint);
79
57
  }
80
- // runtimeId will always be set by check or multi-step check defaults so it is safe to use ! operator
81
- const bundle = MultiStepCheck.bundle(absoluteEntrypoint, this.runtimeId);
82
- if (!bundle.script) {
83
- throw new Error(`Multi-Step check "${logicalId}" is not allowed to be empty`);
58
+ catch (err) {
59
+ diagnostics.add(new construct_diagnostics_1.InvalidPropertyValueDiagnostic('code', new Error(`Unable to access entrypoint file "${entrypoint}": ${err.message}`, { cause: err })));
84
60
  }
85
- this.script = bundle.script;
86
- this.scriptPath = bundle.scriptPath;
87
- this.dependencies = bundle.dependencies;
88
61
  }
89
- else {
90
- throw new Error('Unrecognized type for the "code" property. The "code" property should be a string of JS/TS code.');
62
+ const runtime = project_1.Session.getRuntime(this.runtimeId);
63
+ if (runtime) {
64
+ if (!runtime.multiStepSupport) {
65
+ diagnostics.add(new construct_diagnostics_1.UnsupportedRuntimeFeatureDiagnostic(runtime.name, new Error(`Multi-Step Checks are not supported.`)));
66
+ }
91
67
  }
92
- project_1.Session.registerConstruct(this);
93
- this.addSubscriptions();
94
- this.addPrivateLocationCheckAssignments();
95
68
  }
96
69
  static applyDefaultMultiStepCheckGroupConfig(props, groupProps) {
97
70
  let configKey;
@@ -110,37 +83,49 @@ class MultiStepCheck extends check_1.Check {
110
83
  props[configKey] = newVal;
111
84
  }
112
85
  }
113
- static bundle(entry, runtimeId) {
86
+ static async bundle(entry, runtimeId) {
114
87
  const runtime = project_1.Session.getRuntime(runtimeId);
115
88
  if (!runtime) {
116
89
  throw new Error(`${runtimeId} is not supported`);
117
90
  }
118
91
  const parser = project_1.Session.getParser(runtime);
119
- const parsed = parser.parse(entry);
92
+ const parsed = await parser.parse(entry);
120
93
  // Maybe we can get the parsed deps with the content immediately
121
94
  const deps = [];
122
95
  for (const { filePath, content } of parsed.dependencies) {
123
- deps.push({
124
- path: (0, util_1.pathToPosix)(path.relative(project_1.Session.basePath, filePath)),
96
+ deps.push(project_1.Session.registerSharedFile({
97
+ path: project_1.Session.relativePosixPath(filePath),
125
98
  content,
126
- });
99
+ }));
127
100
  }
128
101
  return {
129
102
  script: parsed.entrypoint.content,
130
- scriptPath: (0, util_1.pathToPosix)(path.relative(project_1.Session.basePath, parsed.entrypoint.filePath)),
103
+ scriptPath: project_1.Session.relativePosixPath(parsed.entrypoint.filePath),
131
104
  dependencies: deps,
132
105
  };
133
106
  }
134
107
  getSourceFile() {
135
- return this.__checkFilePath ?? this.scriptPath;
108
+ return this.__checkFilePath;
109
+ }
110
+ async bundle() {
111
+ return new multi_step_check_bundle_1.MultiStepCheckBundle(this, await (async () => {
112
+ if ((0, construct_1.isEntrypoint)(this.code)) {
113
+ const bundle = await MultiStepCheck.bundle(this.resolveContentFilePath(this.code.entrypoint), this.runtimeId);
114
+ if (!bundle.script) {
115
+ throw new Error(`The "code" property must not point to an empty file.`);
116
+ }
117
+ return bundle;
118
+ }
119
+ const script = this.code.content;
120
+ return {
121
+ script,
122
+ };
123
+ })());
136
124
  }
137
125
  synthesize() {
138
126
  return {
139
127
  ...super.synthesize(),
140
128
  checkType: constants_1.default.MULTI_STEP,
141
- script: this.script,
142
- scriptPath: this.scriptPath,
143
- dependencies: this.dependencies,
144
129
  playwrightConfig: this.playwrightConfig,
145
130
  };
146
131
  }