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,296 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Parser = void 0;
4
+ const path = require("path");
5
+ const fs = require("fs");
6
+ const acorn = require("acorn");
7
+ const walk = require("acorn-walk");
8
+ const collector_1 = require("./collector");
9
+ const errors_1 = require("./errors");
10
+ // Our custom configuration to handle walking errors
11
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
12
+ const ignore = (_node, _st, _c) => { };
13
+ const PACKAGE_EXTENSION = `${path.sep}package.json`;
14
+ const JS_RESOLVE_ORDER = [
15
+ '.js',
16
+ PACKAGE_EXTENSION,
17
+ `${path.sep}index.js`,
18
+ ];
19
+ const TS_RESOLVE_ORDER = [
20
+ '.ts',
21
+ '.js',
22
+ PACKAGE_EXTENSION,
23
+ `${path.sep}index.ts`,
24
+ `${path.sep}index.js`,
25
+ ];
26
+ const supportedBuiltinModules = [
27
+ 'assert', 'buffer', 'crypto', 'dns', 'fs', 'path', 'querystring', 'readline ', 'stream', 'string_decoder',
28
+ 'timers', 'tls', 'url', 'util', 'zlib',
29
+ ];
30
+ function validateEntrypoint(entrypoint) {
31
+ const extension = path.extname(entrypoint);
32
+ if (extension !== '.js' && extension !== '.ts') {
33
+ throw new Error(`Unsupported file extension for ${entrypoint}`);
34
+ }
35
+ try {
36
+ const content = fs.readFileSync(entrypoint, { encoding: 'utf-8' });
37
+ return { extension, content };
38
+ }
39
+ catch (err) {
40
+ throw new errors_1.DependencyParseError(entrypoint, [entrypoint], [], []);
41
+ }
42
+ }
43
+ let tsParser;
44
+ function getTsParser() {
45
+ if (tsParser) {
46
+ return tsParser;
47
+ }
48
+ try {
49
+ tsParser = require('@typescript-eslint/typescript-estree');
50
+ const AST_NODE_TYPES = tsParser.AST_NODE_TYPES;
51
+ // Our custom configuration to handle walking errors
52
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
53
+ Object.values(AST_NODE_TYPES).forEach((astType) => {
54
+ var _a;
55
+ // Only handle the TS specific ones
56
+ if (!astType.startsWith('TS')) {
57
+ return;
58
+ }
59
+ walk.base[astType] = (_a = walk.base[astType]) !== null && _a !== void 0 ? _a : ignore;
60
+ });
61
+ return tsParser;
62
+ }
63
+ catch (err) {
64
+ if (err.code === 'ERR_MODULE_NOT_FOUND' || err.code === 'MODULE_NOT_FOUND') {
65
+ throw new Error('Please install "typescript" to use TypeScript-code in check files');
66
+ }
67
+ throw err;
68
+ }
69
+ }
70
+ class Parser {
71
+ // TODO: pass a npm matrix of supported npm modules
72
+ // Maybe pass a cache so we don't have to fetch files separately all the time
73
+ constructor(supportedNpmModules) {
74
+ this.supportedModules = new Set([...supportedBuiltinModules, ...supportedNpmModules]);
75
+ }
76
+ parse(entrypoint) {
77
+ const { extension, content } = validateEntrypoint(entrypoint);
78
+ /*
79
+ * The importing of files forms a directed graph.
80
+ * Vertices are source files and edges are from importing other files.
81
+ * We can find all of the files we need to run the check by traversing this graph.
82
+ * In this implementation, we use breadth first search.
83
+ */
84
+ const collector = new collector_1.Collector(entrypoint, content);
85
+ const bfsQueue = [{ filePath: entrypoint, content }];
86
+ while (bfsQueue.length > 0) {
87
+ // Since we just checked the length, shift() will never return undefined.
88
+ // We can add a not-null assertion operator (!).
89
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
90
+ const item = bfsQueue.shift();
91
+ if (item.filePath.endsWith(PACKAGE_EXTENSION)) {
92
+ // Holds info about the main file and doesn't need to be parsed
93
+ continue;
94
+ }
95
+ const { module, error } = Parser.parseDependencies(item.filePath, item.content);
96
+ if (error) {
97
+ collector.addParsingError(item.filePath, error.message);
98
+ continue;
99
+ }
100
+ const unsupportedDependencies = module.npmDependencies.filter((dep) => !this.supportedModules.has(dep));
101
+ if (unsupportedDependencies.length) {
102
+ collector.addUnsupportedNpmDependencies(item.filePath, unsupportedDependencies);
103
+ }
104
+ const localDependenciesResolvedPaths = [];
105
+ module.localDependencies.forEach((localDependency) => {
106
+ const filePath = path.join(path.dirname(item.filePath), localDependency);
107
+ try {
108
+ const deps = Parser.readDependency(filePath, extension);
109
+ localDependenciesResolvedPaths.push(...deps);
110
+ }
111
+ catch (err) {
112
+ collector.addMissingFile(filePath);
113
+ }
114
+ });
115
+ localDependenciesResolvedPaths.forEach(({ filePath, content }) => {
116
+ if (collector.hasDependency(filePath)) {
117
+ return;
118
+ }
119
+ collector.addDependency(filePath, content);
120
+ bfsQueue.push({ filePath, content });
121
+ });
122
+ }
123
+ collector.validate();
124
+ return collector.getItems();
125
+ }
126
+ static readDependency(filePath, preferedExtenstion) {
127
+ // Read the specific file if it has an extension
128
+ if (preferedExtenstion === '.js') {
129
+ return Parser.tryReadFileExt(filePath, JS_RESOLVE_ORDER);
130
+ }
131
+ else {
132
+ return Parser.tryReadFileExt(filePath, TS_RESOLVE_ORDER);
133
+ }
134
+ }
135
+ static tryReadFileExt(filePath, exts) {
136
+ for (const extension of ['', ...exts]) {
137
+ try {
138
+ const deps = [];
139
+ const fullPath = filePath + extension;
140
+ const content = fs.readFileSync(fullPath, { encoding: 'utf-8' });
141
+ deps.push({ filePath: fullPath, content });
142
+ if (extension === PACKAGE_EXTENSION) {
143
+ const { main } = JSON.parse(content);
144
+ if (!main || !main.length) {
145
+ // No main is defined. This means package.json doesn't have a specific entry
146
+ continue;
147
+ }
148
+ const mainFile = path.join(filePath, main);
149
+ deps.push({
150
+ filePath: mainFile, content: fs.readFileSync(mainFile, { encoding: 'utf-8' }),
151
+ });
152
+ }
153
+ return deps;
154
+ }
155
+ catch (err) { }
156
+ }
157
+ throw new Error(`Cannot find file ${filePath}`);
158
+ }
159
+ static parseDependencies(filePath, contents) {
160
+ const localDependencies = new Set();
161
+ const npmDependencies = new Set();
162
+ const extension = path.extname(filePath);
163
+ try {
164
+ if (extension === '.js') {
165
+ const ast = acorn.parse(contents, {
166
+ allowReturnOutsideFunction: true,
167
+ ecmaVersion: 'latest',
168
+ allowImportExportEverywhere: true,
169
+ });
170
+ walk.simple(ast, Parser.jsNodeVisitor(localDependencies, npmDependencies));
171
+ }
172
+ else if (extension === '.ts') {
173
+ const tsParser = getTsParser();
174
+ const ast = tsParser.parse(contents, {});
175
+ // The AST from typescript-estree is slightly different from the type used by acorn-walk.
176
+ // This doesn't actually cause problems (both are "ESTree's"), but we need to ignore type errors here.
177
+ // @ts-ignore
178
+ walk.simple(ast, Parser.tsNodeVisitor(tsParser, localDependencies, npmDependencies));
179
+ }
180
+ else {
181
+ throw new Error(`Unsupported file extension for ${filePath}`);
182
+ }
183
+ }
184
+ catch (err) {
185
+ return {
186
+ module: {
187
+ localDependencies: Array.from(localDependencies),
188
+ npmDependencies: Array.from(npmDependencies),
189
+ },
190
+ error: err,
191
+ };
192
+ }
193
+ return {
194
+ module: {
195
+ localDependencies: Array.from(localDependencies),
196
+ npmDependencies: Array.from(npmDependencies),
197
+ },
198
+ };
199
+ }
200
+ static jsNodeVisitor(localDependencies, npmDependencies) {
201
+ return {
202
+ CallExpression(node) {
203
+ if (!Parser.isRequireExpression(node))
204
+ return;
205
+ const requireStringArg = Parser.getRequireStringArg(node);
206
+ Parser.registerDependency(requireStringArg, localDependencies, npmDependencies);
207
+ },
208
+ ImportDeclaration(node) {
209
+ if (node.source.type !== 'Literal')
210
+ return;
211
+ Parser.registerDependency(node.source.value, localDependencies, npmDependencies);
212
+ },
213
+ ExportNamedDeclaration(node) {
214
+ if (node.source === null)
215
+ return;
216
+ if (node.source.type !== 'Literal')
217
+ return;
218
+ Parser.registerDependency(node.source.value, localDependencies, npmDependencies);
219
+ },
220
+ };
221
+ }
222
+ static tsNodeVisitor(tsParser, localDependencies, npmDependencies) {
223
+ return {
224
+ ImportDeclaration(node) {
225
+ // For now, we only support literal strings in the import statement
226
+ if (node.source.type !== tsParser.TSESTree.AST_NODE_TYPES.Literal)
227
+ return;
228
+ Parser.registerDependency(node.source.value, localDependencies, npmDependencies);
229
+ },
230
+ ExportNamedDeclaration(node) {
231
+ // The statement isn't importing another dependency
232
+ if (node.source === null)
233
+ return;
234
+ // For now, we only support literal strings in the import statement
235
+ if (node.source.type !== tsParser.TSESTree.AST_NODE_TYPES.Literal)
236
+ return;
237
+ Parser.registerDependency(node.source.value, localDependencies, npmDependencies);
238
+ },
239
+ };
240
+ }
241
+ static isRequireExpression(node) {
242
+ if (node.type !== 'CallExpression') {
243
+ // Ignore AST nodes that aren't call expressions
244
+ return false;
245
+ }
246
+ else if (node.arguments.length === 0) {
247
+ // Weird case of `require()` or `module.require()` without arguments
248
+ return false;
249
+ }
250
+ else if (node.callee.type === 'Identifier') {
251
+ // Handle the case of a simple call to `require('dependency')`
252
+ return node.callee.name === 'require';
253
+ }
254
+ else if (node.callee.type === 'MemberExpression') {
255
+ // Handle calls to `module.require('dependency')`
256
+ const { object, property } = node.callee;
257
+ return object.type === 'Identifier' &&
258
+ object.name === 'module' &&
259
+ property.type === 'Identifier' &&
260
+ property.name === 'require';
261
+ }
262
+ else {
263
+ return false;
264
+ }
265
+ }
266
+ static getRequireStringArg(node) {
267
+ if (node.arguments[0].type === 'Literal') {
268
+ return node.arguments[0].value;
269
+ }
270
+ else if (node.arguments[0].type === 'TemplateLiteral') {
271
+ return node.arguments[0].quasis[0].value.cooked;
272
+ }
273
+ else {
274
+ /*
275
+ * It might be that `require` is called with a variable - `require(myPackage)`.
276
+ * Unfortunately supporting that case would be complicated.
277
+ * We just skip the dependency and hope that the check still works.
278
+ */
279
+ return null;
280
+ }
281
+ }
282
+ static registerDependency(importArg, localDependencies, npmDependencies) {
283
+ // TODO: We currently don't support import path aliases, f.ex: `import { Something } from '@services/my-service'`
284
+ if (!importArg) {
285
+ // If there's no importArg, don't register a dependency
286
+ }
287
+ else if (importArg.startsWith('/') || importArg.startsWith('./') || importArg.startsWith('../')) {
288
+ localDependencies.add(importArg);
289
+ }
290
+ else {
291
+ npmDependencies.add(importArg);
292
+ }
293
+ }
294
+ }
295
+ exports.Parser = Parser;
296
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/services/check-parser/parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { CheckProps } from '../constructs/check';
2
+ import { Construct } from '../constructs/construct';
3
+ import type { Region } from '..';
4
+ import { ReporterType } from '../reporters/reporter';
5
+ export type CheckConfigDefaults = Pick<CheckProps, 'activated' | 'muted' | 'doubleCheck' | 'shouldFail' | 'runtimeId' | 'locations' | 'tags' | 'frequency' | 'environmentVariables' | 'alertChannels' | 'privateLocations'>;
6
+ export type ChecklyConfig = {
7
+ /**
8
+ * Friendly name for your project.
9
+ */
10
+ projectName: string;
11
+ /**
12
+ * Unique project identifier.
13
+ */
14
+ logicalId: string;
15
+ /**
16
+ * Git repository URL.
17
+ */
18
+ repoUrl?: string;
19
+ /**
20
+ * Checks default configuration properties.
21
+ */
22
+ checks?: CheckConfigDefaults & {
23
+ /**
24
+ * Glob pattern where the CLI looks for files containing Check constructs, i.e. all `.checks.ts` files
25
+ */
26
+ checkMatch?: string;
27
+ /**
28
+ * List of glob patterns with directories to ignore.
29
+ */
30
+ ignoreDirectoriesMatch?: string[];
31
+ /**
32
+ * Browser checks default configuration properties.
33
+ */
34
+ browserChecks?: CheckConfigDefaults & {
35
+ /**
36
+ * Glob pattern where the CLI looks for Playwright test files, i.e. all `.spec.ts` files
37
+ */
38
+ testMatch?: string;
39
+ };
40
+ };
41
+ /**
42
+ * CLI default configuration properties.
43
+ */
44
+ cli?: {
45
+ runLocation?: keyof Region;
46
+ privateRunLocation?: string;
47
+ verbose?: boolean;
48
+ reporters?: ReporterType[];
49
+ };
50
+ };
51
+ export declare function loadChecklyConfig(dir: string, filenames?: string[]): Promise<{
52
+ config: ChecklyConfig;
53
+ constructs: Construct[];
54
+ }>;
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadChecklyConfig = void 0;
4
+ const path = require("path");
5
+ const fs_1 = require("fs");
6
+ const util_1 = require("./util");
7
+ const constructs_1 = require("../constructs");
8
+ // eslint-disable-next-line no-restricted-syntax
9
+ var Extension;
10
+ (function (Extension) {
11
+ Extension["JS"] = ".js";
12
+ Extension["TS"] = ".ts";
13
+ })(Extension || (Extension = {}));
14
+ function loadFile(file) {
15
+ if (!(0, fs_1.existsSync)(file)) {
16
+ return Promise.resolve(null);
17
+ }
18
+ switch (path.extname(file)) {
19
+ case Extension.JS:
20
+ return (0, util_1.loadJsFile)(file);
21
+ case Extension.TS:
22
+ return (0, util_1.loadTsFile)(file);
23
+ default:
24
+ throw new Error(`Unsupported file extension ${file} for the config file`);
25
+ }
26
+ }
27
+ function isString(obj) {
28
+ return (Object.prototype.toString.call(obj) === '[object String]');
29
+ }
30
+ async function loadChecklyConfig(dir, filenames = ['checkly.config.ts', 'checkly.config.js']) {
31
+ let config;
32
+ constructs_1.Session.loadingChecklyConfigFile = true;
33
+ constructs_1.Session.checklyConfigFileConstructs = [];
34
+ for (const filename of filenames) {
35
+ config = await loadFile(path.join(dir, filename));
36
+ if (config) {
37
+ break;
38
+ }
39
+ }
40
+ if (!config) {
41
+ throw new Error(`Unable to locate a config at ${dir} with ${filenames.join(', ')}.`);
42
+ }
43
+ for (const field of ['logicalId', 'projectName']) {
44
+ const requiredField = config === null || config === void 0 ? void 0 : config[field];
45
+ if (!requiredField || !(isString(requiredField))) {
46
+ throw new Error(`Config object missing a ${field} as type string`);
47
+ }
48
+ }
49
+ const constructs = constructs_1.Session.checklyConfigFileConstructs;
50
+ constructs_1.Session.loadingChecklyConfigFile = false;
51
+ constructs_1.Session.checklyConfigFileConstructs = [];
52
+ return { config, constructs };
53
+ }
54
+ exports.loadChecklyConfig = loadChecklyConfig;
55
+ //# sourceMappingURL=checkly-config-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkly-config-loader.js","sourceRoot":"","sources":["../../src/services/checkly-config-loader.ts"],"names":[],"mappings":";;;AAAA,6BAA4B;AAC5B,2BAA+B;AAC/B,iCAA+C;AAE/C,8CAAuC;AAuDvC,gDAAgD;AAChD,IAAK,SAGJ;AAHD,WAAK,SAAS;IACZ,uBAAU,CAAA;IACV,uBAAU,CAAA;AACZ,CAAC,EAHI,SAAS,KAAT,SAAS,QAGb;AAED,SAAS,QAAQ,CAAE,IAAY;IAC7B,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC,EAAE;QACrB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;KAC7B;IACD,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC1B,KAAK,SAAS,CAAC,EAAE;YACf,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,CAAA;QACzB,KAAK,SAAS,CAAC,EAAE;YACf,OAAO,IAAA,iBAAU,EAAC,IAAI,CAAC,CAAA;QACzB;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,sBAAsB,CAAC,CAAA;KAC5E;AACH,CAAC;AAED,SAAS,QAAQ,CAAE,GAAQ;IACzB,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB,CAAC,CAAA;AACpE,CAAC;AAEM,KAAK,UAAU,iBAAiB,CAAE,GAAW,EAAE,SAAS,GAAG,CAAC,mBAAmB,EAAE,mBAAmB,CAAC;IAC1G,IAAI,MAAM,CAAA;IACV,oBAAO,CAAC,wBAAwB,GAAG,IAAI,CAAA;IACvC,oBAAO,CAAC,2BAA2B,GAAG,EAAE,CAAA;IACxC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE;QAChC,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAA;QACjD,IAAI,MAAM,EAAE;YACV,MAAK;SACN;KACF;IAED,IAAI,CAAC,MAAM,EAAE;QACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,SAAS,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;KACrF;IAED,KAAK,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE;QAChD,MAAM,aAAa,GAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAG,KAAK,CAAC,CAAA;QACrC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,EAAE;YAChD,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,iBAAiB,CAAC,CAAA;SACnE;KACF;IAED,MAAM,UAAU,GAAG,oBAAO,CAAC,2BAA2B,CAAA;IACtD,oBAAO,CAAC,wBAAwB,GAAG,KAAK,CAAA;IACxC,oBAAO,CAAC,2BAA2B,GAAG,EAAE,CAAA;IACxC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC/B,CAAC;AA1BD,8CA0BC"}
@@ -0,0 +1,24 @@
1
+ import Conf from 'conf';
2
+ declare enum Env {
3
+ production = "production",
4
+ staging = "staging",
5
+ development = "development",
6
+ test = "test"
7
+ }
8
+ declare const config: {
9
+ auth: Conf<{
10
+ apiKey: unknown;
11
+ }>;
12
+ data: Conf<{
13
+ accountId: unknown;
14
+ accountName: unknown;
15
+ }>;
16
+ clear(): void;
17
+ getEnv(): Env;
18
+ getApiKey(): string;
19
+ getAccountId(): string;
20
+ hasEnvVarsConfigured(): boolean;
21
+ getMqttUrl(): string | null | undefined;
22
+ hasValidCredentials(): boolean;
23
+ };
24
+ export default config;
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const conf_1 = require("conf");
4
+ const dataSchema = {
5
+ accountId: { type: 'string' },
6
+ accountName: { type: 'string' },
7
+ };
8
+ const authSchema = {
9
+ apiKey: { type: 'string' },
10
+ };
11
+ const projectSuffix = process.env.NODE_ENV === 'test' ? 'test' : '';
12
+ // eslint-disable-next-line no-restricted-syntax
13
+ var Env;
14
+ (function (Env) {
15
+ Env["production"] = "production";
16
+ Env["staging"] = "staging";
17
+ Env["development"] = "development";
18
+ Env["test"] = "test";
19
+ })(Env || (Env = {}));
20
+ const config = {
21
+ auth: new conf_1.default({
22
+ projectName: '@checkly/cli',
23
+ configName: 'auth',
24
+ projectSuffix,
25
+ // @ts-ignore
26
+ schema: authSchema,
27
+ }),
28
+ data: new conf_1.default({
29
+ projectName: '@checkly/cli',
30
+ configName: 'config',
31
+ projectSuffix,
32
+ // @ts-ignore
33
+ schema: dataSchema,
34
+ }),
35
+ clear() {
36
+ this.auth.clear();
37
+ this.data.clear();
38
+ },
39
+ getEnv() {
40
+ const environments = ['production', 'staging', 'development', 'test'];
41
+ const env = process.env.NODE_ENV || environments[0];
42
+ if (!(env in Env)) {
43
+ throw new Error('Invalid NODE_ENV');
44
+ }
45
+ return env;
46
+ },
47
+ getApiKey() {
48
+ return process.env.CHECKLY_API_KEY || this.auth.get('apiKey') || '';
49
+ },
50
+ getAccountId() {
51
+ return process.env.CHECKLY_ACCOUNT_ID || this.data.get('accountId') || '';
52
+ },
53
+ hasEnvVarsConfigured() {
54
+ const apiKey = process.env.CHECKLY_API_KEY || '';
55
+ const accoundId = process.env.CHECKLY_ACCOUNT_ID || '';
56
+ return apiKey !== '' || accoundId !== '';
57
+ },
58
+ getMqttUrl() {
59
+ const environments = {
60
+ development: 'wss://events-local.checklyhq.com',
61
+ test: 'wss://events-test.checklyhq.com',
62
+ staging: 'wss://events-test.checklyhq.com',
63
+ production: 'wss://events.checklyhq.com',
64
+ };
65
+ return environments[this.getEnv()];
66
+ },
67
+ hasValidCredentials() {
68
+ if (this.getApiKey() !== '' && this.getAccountId() !== '') {
69
+ return true;
70
+ }
71
+ return false;
72
+ },
73
+ };
74
+ exports.default = config;
75
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/services/config.ts"],"names":[],"mappings":";;AAAA,+BAAuB;AAEvB,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAChC,CAAA;AAED,MAAM,UAAU,GAAG;IACjB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;CAC3B,CAAA;AAED,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;AAEnE,gDAAgD;AAChD,IAAK,GAKJ;AALD,WAAK,GAAG;IACN,gCAAyB,CAAA;IACzB,0BAAmB,CAAA;IACnB,kCAA2B,CAAA;IAC3B,oBAAa,CAAA;AACf,CAAC,EALI,GAAG,KAAH,GAAG,QAKP;AAED,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,IAAI,cAAI,CAAC;QACb,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,MAAM;QAClB,aAAa;QACb,aAAa;QACb,MAAM,EAAE,UAAU;KACnB,CAAC;IACF,IAAI,EAAE,IAAI,cAAI,CAAC;QACb,WAAW,EAAE,cAAc;QAC3B,UAAU,EAAE,QAAQ;QACpB,aAAa;QACb,aAAa;QACb,MAAM,EAAE,UAAU;KACnB,CAAC;IAEF,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;IACnB,CAAC;IAED,MAAM;QACJ,MAAM,YAAY,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,CAAA;QACrE,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,QAAkB,IAAI,YAAY,CAAC,CAAC,CAAW,CAAA;QAEvE,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAA;SACpC;QAED,OAAO,GAAU,CAAA;IACnB,CAAC;IAED,SAAS;QACP,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,QAAQ,CAAW,IAAI,EAAE,CAAA;IACvF,CAAC;IAED,YAAY;QACV,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,WAAW,CAAW,IAAI,EAAE,CAAA;IAC7F,CAAC;IAED,oBAAoB;QAClB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAA;QAChD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,EAAE,CAAA;QACtD,OAAO,MAAM,KAAK,EAAE,IAAI,SAAS,KAAK,EAAE,CAAA;IAC1C,CAAC;IAED,UAAU;QACR,MAAM,YAAY,GAAG;YACnB,WAAW,EAAE,kCAAkC;YAC/C,IAAI,EAAE,iCAAiC;YACvC,OAAO,EAAE,iCAAiC;YAC1C,UAAU,EAAE,4BAA4B;SACzC,CAAA;QACD,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACpC,CAAC;IAED,mBAAmB;QACjB,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE;YACzD,OAAO,IAAI,CAAA;SACZ;QACD,OAAO,KAAK,CAAA;IACd,CAAC;CACF,CAAA;AAED,kBAAe,MAAM,CAAA"}
@@ -0,0 +1,19 @@
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;
11
+ browserCheckMatch?: string;
12
+ ignoreDirectoriesMatch?: string[];
13
+ checkDefaults?: CheckConfigDefaults;
14
+ browserCheckDefaults?: CheckConfigDefaults;
15
+ availableRuntimes: Record<string, Runtime>;
16
+ checklyConfigConstructs?: Construct[];
17
+ };
18
+ export declare function parseProject(opts: ProjectParseOpts): Promise<Project>;
19
+ export {};
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseProject = void 0;
4
+ const constructs_1 = require("../constructs");
5
+ const util_1 = require("util");
6
+ const glob = require("glob");
7
+ const util_2 = require("./util");
8
+ const path = require("path");
9
+ const globPromise = (0, util_1.promisify)(glob);
10
+ const BASE_CHECK_DEFAULTS = {
11
+ runtimeId: '2022.10',
12
+ };
13
+ async function parseProject(opts) {
14
+ const { directory, checkMatch = '**/*.check.{js,ts}', browserCheckMatch, projectLogicalId, projectName, repoUrl, ignoreDirectoriesMatch = [], checkDefaults = {}, browserCheckDefaults = {}, availableRuntimes, checklyConfigConstructs, } = opts;
15
+ const project = new constructs_1.Project(projectLogicalId, {
16
+ name: projectName,
17
+ repoUrl,
18
+ });
19
+ checklyConfigConstructs === null || checklyConfigConstructs === void 0 ? void 0 : checklyConfigConstructs.forEach((construct) => project.addResource(construct.type, construct.logicalId, construct));
20
+ constructs_1.Session.project = project;
21
+ constructs_1.Session.basePath = directory;
22
+ constructs_1.Session.checkDefaults = Object.assign({}, BASE_CHECK_DEFAULTS, checkDefaults);
23
+ constructs_1.Session.browserCheckDefaults = browserCheckDefaults;
24
+ constructs_1.Session.availableRuntimes = availableRuntimes;
25
+ // TODO: Do we really need all of the ** globs, or could we just put node_modules?
26
+ const ignoreDirectories = ['**/node_modules/**', '**/.git/**', ...ignoreDirectoriesMatch];
27
+ await loadAllCheckFiles(directory, checkMatch, ignoreDirectories);
28
+ await loadAllBrowserChecks(directory, browserCheckMatch, ignoreDirectories, project);
29
+ return project;
30
+ }
31
+ exports.parseProject = parseProject;
32
+ async function loadAllCheckFiles(directory, checkFilePattern, ignorePattern) {
33
+ const checkFiles = await findFilesWithPattern(directory, checkFilePattern, ignorePattern);
34
+ for (const checkFile of checkFiles) {
35
+ // setting the checkFilePath is used for filtering by file name on the command line
36
+ constructs_1.Session.checkFileAbsolutePath = checkFile;
37
+ constructs_1.Session.checkFilePath = (0, util_2.pathToPosix)(path.relative(directory, checkFile));
38
+ if (checkFile.endsWith('.js')) {
39
+ await (0, util_2.loadJsFile)(checkFile);
40
+ }
41
+ else if (checkFile.endsWith('.ts')) {
42
+ await (0, util_2.loadTsFile)(checkFile);
43
+ }
44
+ else {
45
+ throw new Error('Unable to load check configuration file with unsupported extension. ' +
46
+ `Please use a .js or .ts file instead.\n${checkFile}`);
47
+ }
48
+ constructs_1.Session.checkFilePath = undefined;
49
+ constructs_1.Session.checkFileAbsolutePath = undefined;
50
+ }
51
+ }
52
+ async function loadAllBrowserChecks(directory, browserCheckFilePattern, ignorePattern, project) {
53
+ if (!browserCheckFilePattern) {
54
+ return;
55
+ }
56
+ const checkFiles = await findFilesWithPattern(directory, browserCheckFilePattern, ignorePattern);
57
+ const preexistingCheckFiles = new Set();
58
+ Object.values(project.data.check).forEach((check) => {
59
+ if (check instanceof constructs_1.BrowserCheck && check.scriptPath) {
60
+ preexistingCheckFiles.add(check.scriptPath);
61
+ }
62
+ });
63
+ for (const checkFile of checkFiles) {
64
+ const relPath = (0, util_2.pathToPosix)(path.relative(directory, checkFile));
65
+ // Don't create an additional check if the checkFile was already added to a check in loadAllCheckFiles.
66
+ if (preexistingCheckFiles.has(relPath)) {
67
+ continue;
68
+ }
69
+ const browserCheck = new constructs_1.BrowserCheck((0, util_2.pathToPosix)(relPath), {
70
+ name: path.basename(checkFile),
71
+ code: {
72
+ entrypoint: checkFile,
73
+ },
74
+ });
75
+ }
76
+ }
77
+ async function findFilesWithPattern(directory, pattern, ignorePattern) {
78
+ // The files are sorted to make sure that the processing order is deterministic.
79
+ const files = await globPromise(pattern, {
80
+ nodir: true,
81
+ cwd: directory,
82
+ ignore: ignorePattern,
83
+ absolute: true,
84
+ });
85
+ return files.sort();
86
+ }
87
+ //# sourceMappingURL=project-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"project-parser.js","sourceRoot":"","sources":["../../src/services/project-parser.ts"],"names":[],"mappings":";;;AAAA,8CAA8D;AAC9D,+BAAgC;AAChC,6BAA4B;AAC5B,iCAA4D;AAC5D,6BAA4B;AAM5B,MAAM,WAAW,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAA;AAgBnC,MAAM,mBAAmB,GAAG;IAC1B,SAAS,EAAE,SAAS;CACrB,CAAA;AAEM,KAAK,UAAU,YAAY,CAAE,IAAsB;IACxD,MAAM,EACJ,SAAS,EACT,UAAU,GAAG,oBAAoB,EACjC,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,sBAAsB,GAAG,EAAE,EAC3B,aAAa,GAAG,EAAE,EAClB,oBAAoB,GAAG,EAAE,EACzB,iBAAiB,EACjB,uBAAuB,GACxB,GAAG,IAAI,CAAA;IACR,MAAM,OAAO,GAAG,IAAI,oBAAO,CAAC,gBAAgB,EAAE;QAC5C,IAAI,EAAE,WAAW;QACjB,OAAO;KACR,CAAC,CAAA;IACF,uBAAuB,aAAvB,uBAAuB,uBAAvB,uBAAuB,CAAE,OAAO,CAC9B,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE,SAAS,CAAC,CACnF,CAAA;IACD,oBAAO,CAAC,OAAO,GAAG,OAAO,CAAA;IACzB,oBAAO,CAAC,QAAQ,GAAG,SAAS,CAAA;IAC5B,oBAAO,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAA;IAC7E,oBAAO,CAAC,oBAAoB,GAAG,oBAAoB,CAAA;IACnD,oBAAO,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;IAE7C,kFAAkF;IAClF,MAAM,iBAAiB,GAAG,CAAC,oBAAoB,EAAE,YAAY,EAAE,GAAG,sBAAsB,CAAC,CAAA;IACzF,MAAM,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAAA;IACjE,MAAM,oBAAoB,CAAC,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAA;IAEpF,OAAO,OAAO,CAAA;AAChB,CAAC;AAjCD,oCAiCC;AAED,KAAK,UAAU,iBAAiB,CAC9B,SAAiB,EACjB,gBAAwB,EACxB,aAAuB;IAEvB,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAA;IACzF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,mFAAmF;QACnF,oBAAO,CAAC,qBAAqB,GAAG,SAAS,CAAA;QACzC,oBAAO,CAAC,aAAa,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QACxE,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC7B,MAAM,IAAA,iBAAU,EAAC,SAAS,CAAC,CAAA;SAC5B;aAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACpC,MAAM,IAAA,iBAAU,EAAC,SAAS,CAAC,CAAA;SAC5B;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,sEAAsE;gBACtF,0CAA0C,SAAS,EAAE,CAAC,CAAA;SACvD;QACD,oBAAO,CAAC,aAAa,GAAG,SAAS,CAAA;QACjC,oBAAO,CAAC,qBAAqB,GAAG,SAAS,CAAA;KAC1C;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,uBAA2C,EAC3C,aAAuB,EACvB,OAAgB;IAEhB,IAAI,CAAC,uBAAuB,EAAE;QAC5B,OAAM;KACP;IACD,MAAM,UAAU,GAAG,MAAM,oBAAoB,CAAC,SAAS,EAAE,uBAAuB,EAAE,aAAa,CAAC,CAAA;IAChG,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAA;IAC/C,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAClD,IAAI,KAAK,YAAY,yBAAY,IAAI,KAAK,CAAC,UAAU,EAAE;YACrD,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;SAC5C;IACH,CAAC,CAAC,CAAA;IAEF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE;QAClC,MAAM,OAAO,GAAG,IAAA,kBAAW,EAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;QAChE,uGAAuG;QACvG,IAAI,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACtC,SAAQ;SACT;QACD,MAAM,YAAY,GAAG,IAAI,yBAAY,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,EAAE;YAC1D,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;YAC9B,IAAI,EAAE;gBACJ,UAAU,EAAE,SAAS;aACtB;SACF,CAAC,CAAA;KACH;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,SAAiB,EACjB,OAAe,EACf,aAAuB;IAEvB,gFAAgF;IAChF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE;QACvC,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,aAAa;QACrB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAA;IACF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAA;AACrB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import * as mqtt from 'async-mqtt';
2
+ export declare class SocketClient {
3
+ static connect(): Promise<mqtt.AsyncMqttClient>;
4
+ }