UNPKG

@amplitude/ampli

Version:

Amplitude CLI

48 lines (47 loc) 2.58 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const lodash_1 = require("lodash"); const base_1 = require("../base"); const string_1 = require("../../util/string"); const strip_1 = require("../../parser/strip"); const swift_1 = require("../../parser/swift"); const rowColumnInfo_1 = require("../../parser/rowColumnInfo"); class SwiftVerifierV1 extends base_1.Verifier { constructor(ampliInstanceNames = ['Itly.instance', 'itly'], fileExtensionPattern = 'swift') { super(fileExtensionPattern, ampliInstanceNames.map(name => `${name}.`), null); this.ampliInstanceNames = ampliInstanceNames; this.includeEventClassConstructorsInVerifierResults = () => false; } async doVerify(eventNames, workingDirs) { const eventClassNames = eventNames.map(e => string_1.upperCamelCase(e)); return this.verifyEach((filePath, fileContent, addReference) => { const content = strip_1.default(new swift_1.default(fileContent)); const rowColumnInfo = new rowColumnInfo_1.default(content); this.ampliInstanceNames.forEach(instanceName => { eventNames.forEach(eventName => { const referenceName = this.getReferenceName(eventName); const instanceNameRegexp = lodash_1.escapeRegExp(`${instanceName}.`) .replace(/\\\./g, '\\s*\\.'); const trackRegExp = new RegExp(`\\b${instanceNameRegexp}${referenceName}\\s*\\(`, 'gu'); let match; while ((match = trackRegExp.exec(content)) !== null) { const { row, column } = rowColumnInfo.atIndex(match.index); addReference({ filePath, row, column, name: referenceName }); } }); }); if (this.includeEventClassConstructorsInVerifierResults()) { eventNames.forEach((eventName, eventIndex) => { const eventClassName = eventClassNames[eventIndex]; const eventConstructorRegExp = new RegExp(`\\b${eventClassName}\\s*\\(`, 'gu'); let match; while ((match = eventConstructorRegExp.exec(content)) !== null) { const { row, column } = rowColumnInfo.atIndex(match.index); addReference({ filePath, row, column, name: this.getReferenceName(eventName) }); } }); } }, workingDirs); } } exports.default = SwiftVerifierV1;