checkly 4.16.0 → 4.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/baseCommand.d.ts +1 -0
- package/dist/commands/baseCommand.js +7 -0
- package/dist/commands/baseCommand.js.map +1 -1
- package/dist/commands/deploy.js +6 -2
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/sync-playwright.js +9 -3
- package/dist/commands/sync-playwright.js.map +1 -1
- package/dist/commands/test.js +6 -2
- package/dist/commands/test.js.map +1 -1
- package/dist/constructs/api-check.js +1 -5
- package/dist/constructs/api-check.js.map +1 -1
- package/dist/constructs/browser-check.js +1 -5
- package/dist/constructs/browser-check.js.map +1 -1
- package/dist/constructs/multi-step-check.js +1 -5
- package/dist/constructs/multi-step-check.js.map +1 -1
- package/dist/constructs/project.d.ts +3 -0
- package/dist/constructs/project.js +14 -0
- package/dist/constructs/project.js.map +1 -1
- package/dist/services/check-parser/package-files/extension.d.ts +28 -0
- package/dist/services/check-parser/package-files/extension.js +56 -0
- package/dist/services/check-parser/package-files/extension.js.map +1 -0
- package/dist/services/check-parser/package-files/jsconfig-json-file.d.ts +17 -0
- package/dist/services/check-parser/package-files/jsconfig-json-file.js +46 -0
- package/dist/services/check-parser/package-files/jsconfig-json-file.js.map +1 -0
- package/dist/services/check-parser/package-files/json-source-file.d.ts +10 -0
- package/dist/services/check-parser/package-files/json-source-file.js +38 -0
- package/dist/services/check-parser/package-files/json-source-file.js.map +1 -0
- package/dist/services/check-parser/package-files/loader.d.ts +7 -0
- package/dist/services/check-parser/package-files/loader.js +19 -0
- package/dist/services/check-parser/package-files/loader.js.map +1 -0
- package/dist/services/check-parser/package-files/lookup.d.ts +12 -0
- package/dist/services/check-parser/package-files/lookup.js +70 -0
- package/dist/services/check-parser/package-files/lookup.js.map +1 -0
- package/dist/services/check-parser/package-files/package-json-file.d.ts +19 -0
- package/dist/services/check-parser/package-files/package-json-file.js +45 -0
- package/dist/services/check-parser/package-files/package-json-file.js.map +1 -0
- package/dist/services/check-parser/package-files/paths.d.ts +80 -0
- package/dist/services/check-parser/package-files/paths.js +164 -0
- package/dist/services/check-parser/package-files/paths.js.map +1 -0
- package/dist/services/check-parser/package-files/resolver.d.ts +66 -0
- package/dist/services/check-parser/package-files/resolver.js +277 -0
- package/dist/services/check-parser/package-files/resolver.js.map +1 -0
- package/dist/services/check-parser/package-files/source-file.d.ts +15 -0
- package/dist/services/check-parser/package-files/source-file.js +54 -0
- package/dist/services/check-parser/package-files/source-file.js.map +1 -0
- package/dist/services/check-parser/package-files/tsconfig-json-file.d.ts +66 -0
- package/dist/services/check-parser/package-files/tsconfig-json-file.js +95 -0
- package/dist/services/check-parser/package-files/tsconfig-json-file.js.map +1 -0
- package/dist/services/check-parser/parser.d.ts +12 -16
- package/dist/services/check-parser/parser.js +75 -96
- package/dist/services/check-parser/parser.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/oclif.manifest.json +1 -1
- package/package.json +1 -1
|
@@ -30,31 +30,27 @@ const acorn = __importStar(require("acorn"));
|
|
|
30
30
|
const walk = __importStar(require("acorn-walk"));
|
|
31
31
|
const collector_1 = require("./collector");
|
|
32
32
|
const errors_1 = require("./errors");
|
|
33
|
+
const resolver_1 = require("./package-files/resolver");
|
|
33
34
|
// Our custom configuration to handle walking errors
|
|
34
35
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
35
36
|
const ignore = (_node, _st, _c) => { };
|
|
36
37
|
const PACKAGE_EXTENSION = `${path.sep}package.json`;
|
|
37
|
-
const JS_RESOLVE_ORDER = [
|
|
38
|
-
'.js',
|
|
39
|
-
'.mjs',
|
|
40
|
-
PACKAGE_EXTENSION,
|
|
41
|
-
`${path.sep}index.js`,
|
|
42
|
-
// TODO: Check the module type in package.json to figure out the esm and common js file extensions
|
|
43
|
-
`${path.sep}index.mjs`,
|
|
44
|
-
];
|
|
45
|
-
const TS_RESOLVE_ORDER = [
|
|
46
|
-
'.ts',
|
|
47
|
-
'.js',
|
|
48
|
-
'.mjs',
|
|
49
|
-
PACKAGE_EXTENSION,
|
|
50
|
-
`${path.sep}index.ts`,
|
|
51
|
-
`${path.sep}index.js`,
|
|
52
|
-
// TODO: Check the module type in package.json to figure out the esm and common js file extensions
|
|
53
|
-
`${path.sep}index.mjs`,
|
|
54
|
-
];
|
|
55
38
|
const supportedBuiltinModules = [
|
|
56
|
-
'assert',
|
|
57
|
-
'
|
|
39
|
+
'node:assert',
|
|
40
|
+
'node:buffer',
|
|
41
|
+
'node:crypto',
|
|
42
|
+
'node:dns',
|
|
43
|
+
'node:fs',
|
|
44
|
+
'node:path',
|
|
45
|
+
'node:querystring',
|
|
46
|
+
'node:readline',
|
|
47
|
+
'node:stream',
|
|
48
|
+
'node:string_decoder',
|
|
49
|
+
'node:timers',
|
|
50
|
+
'node:tls',
|
|
51
|
+
'node:url',
|
|
52
|
+
'node:util',
|
|
53
|
+
'node:zlib',
|
|
58
54
|
];
|
|
59
55
|
function validateEntrypoint(entrypoint) {
|
|
60
56
|
const extension = path.extname(entrypoint);
|
|
@@ -101,11 +97,23 @@ class Parser {
|
|
|
101
97
|
// Maybe pass a cache so we don't have to fetch files separately all the time
|
|
102
98
|
constructor(options) {
|
|
103
99
|
var _a, _b;
|
|
100
|
+
this.resolver = new resolver_1.PackageFilesResolver();
|
|
101
|
+
this.cache = new Map();
|
|
104
102
|
this.supportedModules = new Set(supportedBuiltinModules.concat((_a = options.supportedNpmModules) !== null && _a !== void 0 ? _a : []));
|
|
105
103
|
this.checkUnsupportedModules = (_b = options.checkUnsupportedModules) !== null && _b !== void 0 ? _b : true;
|
|
106
104
|
}
|
|
105
|
+
supportsModule(importPath) {
|
|
106
|
+
if (this.supportedModules.has(importPath)) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
if (this.supportedModules.has('node:' + importPath)) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
107
114
|
parse(entrypoint) {
|
|
108
|
-
|
|
115
|
+
var _a;
|
|
116
|
+
const { content } = validateEntrypoint(entrypoint);
|
|
109
117
|
/*
|
|
110
118
|
* The importing of files forms a directed graph.
|
|
111
119
|
* Vertices are source files and edges are from importing other files.
|
|
@@ -123,77 +131,50 @@ class Parser {
|
|
|
123
131
|
// Holds info about the main file and doesn't need to be parsed
|
|
124
132
|
continue;
|
|
125
133
|
}
|
|
126
|
-
|
|
134
|
+
// This cache is only useful when there are multiple entrypoints with
|
|
135
|
+
// common files, as we make sure to not add the same file twice to
|
|
136
|
+
// bfsQueue.
|
|
137
|
+
const cache = this.cache.get(item.filePath);
|
|
138
|
+
const { module, error } = cache !== undefined
|
|
139
|
+
? cache
|
|
140
|
+
: Parser.parseDependencies(item.filePath, item.content);
|
|
127
141
|
if (error) {
|
|
142
|
+
this.cache.set(item.filePath, { module, error });
|
|
128
143
|
collector.addParsingError(item.filePath, error.message);
|
|
129
144
|
continue;
|
|
130
145
|
}
|
|
146
|
+
const resolvedDependencies = (_a = cache === null || cache === void 0 ? void 0 : cache.resolvedDependencies) !== null && _a !== void 0 ? _a : this.resolver.resolveDependenciesForFilePath(item.filePath, module.dependencies);
|
|
147
|
+
this.cache.set(item.filePath, { module, resolvedDependencies });
|
|
131
148
|
if (this.checkUnsupportedModules) {
|
|
132
|
-
const unsupportedDependencies =
|
|
149
|
+
const unsupportedDependencies = resolvedDependencies.external.flatMap(dep => {
|
|
150
|
+
if (!this.supportsModule(dep.importPath)) {
|
|
151
|
+
return [dep.importPath];
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
return [];
|
|
155
|
+
}
|
|
156
|
+
});
|
|
133
157
|
if (unsupportedDependencies.length) {
|
|
134
158
|
collector.addUnsupportedNpmDependencies(item.filePath, unsupportedDependencies);
|
|
135
159
|
}
|
|
136
160
|
}
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
localDependenciesResolvedPaths.push(...deps);
|
|
143
|
-
}
|
|
144
|
-
catch (err) {
|
|
145
|
-
collector.addMissingFile(filePath);
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
localDependenciesResolvedPaths.forEach(({ filePath, content }) => {
|
|
161
|
+
for (const dep of resolvedDependencies.missing) {
|
|
162
|
+
collector.addMissingFile(dep.filePath);
|
|
163
|
+
}
|
|
164
|
+
for (const dep of resolvedDependencies.local) {
|
|
165
|
+
const filePath = dep.sourceFile.meta.filePath;
|
|
149
166
|
if (collector.hasDependency(filePath)) {
|
|
150
|
-
|
|
167
|
+
continue;
|
|
151
168
|
}
|
|
152
|
-
collector.addDependency(filePath,
|
|
153
|
-
bfsQueue.push({ filePath, content });
|
|
154
|
-
}
|
|
169
|
+
collector.addDependency(filePath, dep.sourceFile.contents);
|
|
170
|
+
bfsQueue.push({ filePath, content: dep.sourceFile.contents });
|
|
171
|
+
}
|
|
155
172
|
}
|
|
156
173
|
collector.validate();
|
|
157
174
|
return collector.getItems();
|
|
158
175
|
}
|
|
159
|
-
static readDependency(filePath, preferedExtenstion) {
|
|
160
|
-
// Read the specific file if it has an extension
|
|
161
|
-
if (preferedExtenstion === '.js') {
|
|
162
|
-
return Parser.tryReadFileExt(filePath, JS_RESOLVE_ORDER);
|
|
163
|
-
}
|
|
164
|
-
else {
|
|
165
|
-
return Parser.tryReadFileExt(filePath, TS_RESOLVE_ORDER);
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
static tryReadFileExt(filePath, exts) {
|
|
169
|
-
for (const extension of ['', ...exts]) {
|
|
170
|
-
try {
|
|
171
|
-
const deps = [];
|
|
172
|
-
const fullPath = filePath + extension;
|
|
173
|
-
const content = fs.readFileSync(fullPath, { encoding: 'utf-8' });
|
|
174
|
-
deps.push({ filePath: fullPath, content });
|
|
175
|
-
if (extension === PACKAGE_EXTENSION) {
|
|
176
|
-
const { main } = JSON.parse(content);
|
|
177
|
-
// TODO: Check the module type to figure out the esm and common js file extensions
|
|
178
|
-
// It might be different than js and mjs
|
|
179
|
-
if (!main || !main.length) {
|
|
180
|
-
// No main is defined. This means package.json doesn't have a specific entry
|
|
181
|
-
continue;
|
|
182
|
-
}
|
|
183
|
-
const mainFile = path.join(filePath, main);
|
|
184
|
-
deps.push({
|
|
185
|
-
filePath: mainFile, content: fs.readFileSync(mainFile, { encoding: 'utf-8' }),
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
return deps;
|
|
189
|
-
}
|
|
190
|
-
catch (err) { }
|
|
191
|
-
}
|
|
192
|
-
throw new Error(`Cannot find file ${filePath}`);
|
|
193
|
-
}
|
|
194
176
|
static parseDependencies(filePath, contents) {
|
|
195
|
-
const
|
|
196
|
-
const npmDependencies = new Set();
|
|
177
|
+
const dependencies = new Set();
|
|
197
178
|
const extension = path.extname(filePath);
|
|
198
179
|
try {
|
|
199
180
|
if (extension === '.js' || extension === '.mjs') {
|
|
@@ -203,7 +184,7 @@ class Parser {
|
|
|
203
184
|
allowImportExportEverywhere: true,
|
|
204
185
|
allowAwaitOutsideFunction: true,
|
|
205
186
|
});
|
|
206
|
-
walk.simple(ast, Parser.jsNodeVisitor(
|
|
187
|
+
walk.simple(ast, Parser.jsNodeVisitor(dependencies));
|
|
207
188
|
}
|
|
208
189
|
else if (extension === '.ts') {
|
|
209
190
|
const tsParser = getTsParser();
|
|
@@ -211,7 +192,10 @@ class Parser {
|
|
|
211
192
|
// The AST from typescript-estree is slightly different from the type used by acorn-walk.
|
|
212
193
|
// This doesn't actually cause problems (both are "ESTree's"), but we need to ignore type errors here.
|
|
213
194
|
// @ts-ignore
|
|
214
|
-
walk.simple(ast, Parser.tsNodeVisitor(tsParser,
|
|
195
|
+
walk.simple(ast, Parser.tsNodeVisitor(tsParser, dependencies));
|
|
196
|
+
}
|
|
197
|
+
else if (extension === '.json') {
|
|
198
|
+
// No dependencies to check.
|
|
215
199
|
}
|
|
216
200
|
else {
|
|
217
201
|
throw new Error(`Unsupported file extension for ${filePath}`);
|
|
@@ -220,55 +204,53 @@ class Parser {
|
|
|
220
204
|
catch (err) {
|
|
221
205
|
return {
|
|
222
206
|
module: {
|
|
223
|
-
|
|
224
|
-
npmDependencies: Array.from(npmDependencies),
|
|
207
|
+
dependencies: Array.from(dependencies),
|
|
225
208
|
},
|
|
226
209
|
error: err,
|
|
227
210
|
};
|
|
228
211
|
}
|
|
229
212
|
return {
|
|
230
213
|
module: {
|
|
231
|
-
|
|
232
|
-
npmDependencies: Array.from(npmDependencies),
|
|
214
|
+
dependencies: Array.from(dependencies),
|
|
233
215
|
},
|
|
234
216
|
};
|
|
235
217
|
}
|
|
236
|
-
static jsNodeVisitor(
|
|
218
|
+
static jsNodeVisitor(dependencies) {
|
|
237
219
|
return {
|
|
238
220
|
CallExpression(node) {
|
|
239
221
|
if (!Parser.isRequireExpression(node))
|
|
240
222
|
return;
|
|
241
223
|
const requireStringArg = Parser.getRequireStringArg(node);
|
|
242
|
-
Parser.registerDependency(requireStringArg,
|
|
224
|
+
Parser.registerDependency(requireStringArg, dependencies);
|
|
243
225
|
},
|
|
244
226
|
ImportDeclaration(node) {
|
|
245
227
|
if (node.source.type !== 'Literal')
|
|
246
228
|
return;
|
|
247
|
-
Parser.registerDependency(node.source.value,
|
|
229
|
+
Parser.registerDependency(node.source.value, dependencies);
|
|
248
230
|
},
|
|
249
231
|
ExportNamedDeclaration(node) {
|
|
250
232
|
if (node.source === null)
|
|
251
233
|
return;
|
|
252
234
|
if (node.source.type !== 'Literal')
|
|
253
235
|
return;
|
|
254
|
-
Parser.registerDependency(node.source.value,
|
|
236
|
+
Parser.registerDependency(node.source.value, dependencies);
|
|
255
237
|
},
|
|
256
238
|
ExportAllDeclaration(node) {
|
|
257
239
|
if (node.source === null)
|
|
258
240
|
return;
|
|
259
241
|
if (node.source.type !== 'Literal')
|
|
260
242
|
return;
|
|
261
|
-
Parser.registerDependency(node.source.value,
|
|
243
|
+
Parser.registerDependency(node.source.value, dependencies);
|
|
262
244
|
},
|
|
263
245
|
};
|
|
264
246
|
}
|
|
265
|
-
static tsNodeVisitor(tsParser,
|
|
247
|
+
static tsNodeVisitor(tsParser, dependencies) {
|
|
266
248
|
return {
|
|
267
249
|
ImportDeclaration(node) {
|
|
268
250
|
// For now, we only support literal strings in the import statement
|
|
269
251
|
if (node.source.type !== tsParser.TSESTree.AST_NODE_TYPES.Literal)
|
|
270
252
|
return;
|
|
271
|
-
Parser.registerDependency(node.source.value,
|
|
253
|
+
Parser.registerDependency(node.source.value, dependencies);
|
|
272
254
|
},
|
|
273
255
|
ExportNamedDeclaration(node) {
|
|
274
256
|
// The statement isn't importing another dependency
|
|
@@ -277,7 +259,7 @@ class Parser {
|
|
|
277
259
|
// For now, we only support literal strings in the export statement
|
|
278
260
|
if (node.source.type !== tsParser.TSESTree.AST_NODE_TYPES.Literal)
|
|
279
261
|
return;
|
|
280
|
-
Parser.registerDependency(node.source.value,
|
|
262
|
+
Parser.registerDependency(node.source.value, dependencies);
|
|
281
263
|
},
|
|
282
264
|
ExportAllDeclaration(node) {
|
|
283
265
|
if (node.source === null)
|
|
@@ -285,7 +267,7 @@ class Parser {
|
|
|
285
267
|
// For now, we only support literal strings in the export statement
|
|
286
268
|
if (node.source.type !== tsParser.TSESTree.AST_NODE_TYPES.Literal)
|
|
287
269
|
return;
|
|
288
|
-
Parser.registerDependency(node.source.value,
|
|
270
|
+
Parser.registerDependency(node.source.value, dependencies);
|
|
289
271
|
},
|
|
290
272
|
};
|
|
291
273
|
}
|
|
@@ -330,16 +312,13 @@ class Parser {
|
|
|
330
312
|
return null;
|
|
331
313
|
}
|
|
332
314
|
}
|
|
333
|
-
static registerDependency(importArg,
|
|
315
|
+
static registerDependency(importArg, dependencies) {
|
|
334
316
|
// TODO: We currently don't support import path aliases, f.ex: `import { Something } from '@services/my-service'`
|
|
335
317
|
if (!importArg) {
|
|
336
318
|
// If there's no importArg, don't register a dependency
|
|
337
319
|
}
|
|
338
|
-
else if (importArg.startsWith('/') || importArg.startsWith('./') || importArg.startsWith('../')) {
|
|
339
|
-
localDependencies.add(importArg);
|
|
340
|
-
}
|
|
341
320
|
else {
|
|
342
|
-
|
|
321
|
+
dependencies.add(importArg);
|
|
343
322
|
}
|
|
344
323
|
}
|
|
345
324
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/services/check-parser/parser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAA4B;AAC5B,uCAAwB;AACxB,6CAA8B;AAC9B,iDAAkC;AAClC,2CAAuC;AACvC,qCAA+C;
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../src/services/check-parser/parser.ts"],"names":[],"mappings":"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"}
|