35 lines
1.0 KiB
TypeScript
35 lines
1.0 KiB
TypeScript
const ts = require('typescript');
|
|
const Module = require('module');
|
|
|
|
const existingRequire = Module.prototype.require;
|
|
|
|
const recordedRequires: string[] = [];
|
|
|
|
function recordingRequire(path: string) {
|
|
recordedRequires.push(path);
|
|
return existingRequire.call(this, path);
|
|
}
|
|
|
|
Module.prototype.require = recordingRequire;
|
|
|
|
try {
|
|
const lsf = require('@angular/language-service');
|
|
const ls = lsf({typescript: ts});
|
|
|
|
// Assert that the only module that should have been required are '@angular/language-service', 'fs', and 'path'
|
|
|
|
const allowedLoads = new Set(["@angular/language-service", "fs", "path"]);
|
|
|
|
const invalidModules = recordedRequires.filter(m => !allowedLoads.has(m));
|
|
|
|
if (invalidModules.length > 0) {
|
|
console.error(`FAILED: Loading the language service required: ${invalidModules.join(', ')}`);
|
|
process.exit(1);
|
|
}
|
|
} catch (e) {
|
|
console.error(`FAILED: Loading the language service caused the following exception: ${e.stack || e}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
console.log('SUCCESS: Loading passed')
|
|
process.exit(0); |