@amplitude/ampli
Version:
Amplitude CLI
40 lines (39 loc) • 1.98 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const base_1 = require("../base");
const JavaScriptVerifier_1 = require("../javascript/JavaScriptVerifier");
const TypeScriptVerifier_1 = require("../typescript/TypeScriptVerifier");
const SvelteParser_1 = require("./SvelteParser");
class SvelteVerifier extends base_1.Verifier {
constructor(ampliInstanceNames = ['itly']) {
super('svelte', ampliInstanceNames.map(name => `${name}.`), null, ['node_modules']);
this.ampliInstanceNames = ampliInstanceNames;
}
async doVerify(eventNames, workingDirs) {
const { jsVerifier, tsVerifier } = this.createInnerVerifiers();
return this.verifyEach((filePath, fileContents, addReference) => {
const scripts = SvelteParser_1.parseSvelte(fileContents);
const addScriptReference = (script, rowDelta) => (ref) => addReference(Object.assign(Object.assign({}, ref), { row: ref.row + script.startRow + rowDelta - 1 }));
scripts.filter(script => script.code).forEach(script => {
const scriptCode = script.code;
let rowDelta = 0;
if (script.lang === 'js' || script.lang === undefined) {
jsVerifier.verifyFile(filePath, scriptCode, addScriptReference(script, rowDelta));
}
else if (script.lang === 'ts') {
if (scriptCode.substr(0, 2) === '\r\n' || scriptCode.substr(0, 1) === '\n') {
rowDelta = 1;
}
tsVerifier.verifyFile(filePath, scriptCode, addScriptReference(script, rowDelta));
}
});
}, workingDirs);
}
createInnerVerifiers() {
return {
jsVerifier: new JavaScriptVerifier_1.default(this.ampliInstanceNames),
tsVerifier: new TypeScriptVerifier_1.default(this.ampliInstanceNames),
};
}
}
exports.default = SvelteVerifier;