astx
Version:
super powerful structural search and replace for JavaScript and TypeScript to automate your refactoring
27 lines (24 loc) • 3.89 kB
JavaScript
import compileReplacement from './index.mjs'
import indentDebug from '../compileMatcher/indentDebug.mjs'
export default function compileGenericArrayReplacement(path, compileOptions) {
const { debug } = compileOptions
const paths = path.filter(() => true)
const elemOptions = { ...compileOptions, debug: indentDebug(debug, 2) }
const elemReplacements = paths.map((elemPath) =>
compileReplacement(elemPath, elemOptions)
)
return {
generate: (match) => {
const result = []
for (const elem of elemReplacements) {
const replacement = elem.generate(match)
if (Array.isArray(replacement)) {
replacement.forEach((elem) => result.push(elem))
} else {
result.push(replacement)
}
}
return result
},
}
} //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb21waWxlUmVwbGFjZW1lbnQiLCJpbmRlbnREZWJ1ZyIsImNvbXBpbGVHZW5lcmljQXJyYXlSZXBsYWNlbWVudCIsInBhdGgiLCJjb21waWxlT3B0aW9ucyIsImRlYnVnIiwicGF0aHMiLCJmaWx0ZXIiLCJlbGVtT3B0aW9ucyIsImVsZW1SZXBsYWNlbWVudHMiLCJtYXAiLCJlbGVtUGF0aCIsImdlbmVyYXRlIiwibWF0Y2giLCJyZXN1bHQiLCJlbGVtIiwicmVwbGFjZW1lbnQiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JFYWNoIiwicHVzaCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21waWxlUmVwbGFjZW1lbnQvR2VuZXJpY0FycmF5UmVwbGFjZW1lbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTm9kZVBhdGgsIE5vZGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCBjb21waWxlUmVwbGFjZW1lbnQsIHtcbiAgQ29tcGlsZWRSZXBsYWNlbWVudCxcbiAgQ29tcGlsZVJlcGxhY2VtZW50T3B0aW9ucyxcbiAgUmVwbGFjZWFibGVNYXRjaCxcbn0gZnJvbSAnLi9pbmRleCdcbmltcG9ydCBpbmRlbnREZWJ1ZyBmcm9tICcuLi9jb21waWxlTWF0Y2hlci9pbmRlbnREZWJ1ZydcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcGlsZUdlbmVyaWNBcnJheVJlcGxhY2VtZW50KFxuICBwYXRoOiBOb2RlUGF0aDxOb2RlLCBOb2RlPltdIHwgTm9kZVBhdGg8Tm9kZSwgTm9kZVtdPixcbiAgY29tcGlsZU9wdGlvbnM6IENvbXBpbGVSZXBsYWNlbWVudE9wdGlvbnNcbik6IENvbXBpbGVkUmVwbGFjZW1lbnQge1xuICBjb25zdCB7IGRlYnVnIH0gPSBjb21waWxlT3B0aW9uc1xuICBjb25zdCBwYXRocyA9IHBhdGguZmlsdGVyKCgpID0+IHRydWUpXG5cbiAgY29uc3QgZWxlbU9wdGlvbnMgPSB7XG4gICAgLi4uY29tcGlsZU9wdGlvbnMsXG4gICAgZGVidWc6IGluZGVudERlYnVnKGRlYnVnLCAyKSxcbiAgfVxuICBjb25zdCBlbGVtUmVwbGFjZW1lbnRzID0gcGF0aHMubWFwKChlbGVtUGF0aCkgPT5cbiAgICBjb21waWxlUmVwbGFjZW1lbnQoZWxlbVBhdGgsIGVsZW1PcHRpb25zKVxuICApXG5cbiAgcmV0dXJuIHtcbiAgICBnZW5lcmF0ZTogKG1hdGNoOiBSZXBsYWNlYWJsZU1hdGNoKTogTm9kZSB8IE5vZGVbXSA9PiB7XG4gICAgICBjb25zdCByZXN1bHQ6IE5vZGVbXSA9IFtdXG4gICAgICBmb3IgKGNvbnN0IGVsZW0gb2YgZWxlbVJlcGxhY2VtZW50cykge1xuICAgICAgICBjb25zdCByZXBsYWNlbWVudCA9IGVsZW0uZ2VuZXJhdGUobWF0Y2gpXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlcGxhY2VtZW50KSkge1xuICAgICAgICAgIHJlcGxhY2VtZW50LmZvckVhY2goKGVsZW0pID0+IHJlc3VsdC5wdXNoKGVsZW0pKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc3VsdC5wdXNoKHJlcGxhY2VtZW50KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQ0EsT0FBT0Esa0JBQVA7Ozs7QUFJTyxTQUpQO0FBS0EsT0FBT0MsV0FBUCxNQUF3QiwrQkFBeEI7O0FBRUEsZUFBZSxTQUFTQyw4QkFBVDtBQUNiQyxJQURhO0FBRWJDLGNBRmE7QUFHUTtFQUNyQixNQUFNLEVBQUVDLEtBQUYsS0FBWUQsY0FBbEI7RUFDQSxNQUFNRSxLQUFLLEdBQUdILElBQUksQ0FBQ0ksTUFBTCxDQUFZLE1BQU0sSUFBbEIsQ0FBZDs7RUFFQSxNQUFNQyxXQUFXLEdBQUc7SUFDbEIsR0FBR0osY0FEZTtJQUVsQkMsS0FBSyxFQUFFSixXQUFXLENBQUNJLEtBQUQsRUFBUSxDQUFSLENBRkEsRUFBcEI7O0VBSUEsTUFBTUksZ0JBQWdCLEdBQUdILEtBQUssQ0FBQ0ksR0FBTixDQUFVLENBQUNDLFFBQUQ7RUFDakNYLGtCQUFrQixDQUFDVyxRQUFELEVBQVdILFdBQVgsQ0FESyxDQUF6Qjs7O0VBSUEsT0FBTztJQUNMSSxRQUFRLEVBQUUsQ0FBQ0MsS0FBRCxLQUE0QztNQUNwRCxNQUFNQyxNQUFjLEdBQUcsRUFBdkI7TUFDQSxLQUFLLE1BQU1DLElBQVgsSUFBbUJOLGdCQUFuQixFQUFxQztRQUNuQyxNQUFNTyxXQUFXLEdBQUdELElBQUksQ0FBQ0gsUUFBTCxDQUFjQyxLQUFkLENBQXBCO1FBQ0EsSUFBSUksS0FBSyxDQUFDQyxPQUFOLENBQWNGLFdBQWQsQ0FBSixFQUFnQztVQUM5QkEsV0FBVyxDQUFDRyxPQUFaLENBQW9CLENBQUNKLElBQUQsS0FBVUQsTUFBTSxDQUFDTSxJQUFQLENBQVlMLElBQVosQ0FBOUI7UUFDRCxDQUZELE1BRU87VUFDTEQsTUFBTSxDQUFDTSxJQUFQLENBQVlKLFdBQVo7UUFDRDtNQUNGO01BQ0QsT0FBT0YsTUFBUDtJQUNELENBWkksRUFBUDs7QUFjRCJ9