Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
.filter((stm) => !!stm.declarationList)
.map((stm) => {
const { declarations, } = stm.declarationList;
const variable = declarations.find((decl) => decl.kind === ts.SyntaxKind.VariableDeclaration);
const type = variable ? variable.type : {};
return { initializer: variable.initializer, type };
})
.find(({ type }) => type.typeName.text === 'ActionReducerMap');
if (!actionReducerMap || !actionReducerMap.initializer) {
return new change_1.NoopChange();
}
let node = actionReducerMap.initializer;
const state = options.plural
? stringUtils.pluralize(options.name)
: stringUtils.camelize(options.name);
const keyInsert = state + ': from' + stringUtils.classify(options.name) + '.reducer,';
const expr = node;
let position;
let toInsert;
if (expr.properties.length === 0) {
position = expr.getEnd() - 1;
toInsert = ` ${keyInsert}\n`;
}
else {
node = expr.properties[expr.properties.length - 1];
position = node.getEnd() + 1;
// Get the indentation of the last element, if any.
const text = node.getFullText(source);
const matches = text.match(/^\r?\n+(\s*)/);
if (matches.length > 0) {
toInsert = `\n${matches[1]}${keyInsert}`;
}
if (text === null) {
throw new schematics_1.SchematicsException(`File ${modulePath} does not exist.`);
}
const sourceText = text.toString('utf-8');
const source = ts.createSourceFile(modulePath, sourceText, ts.ScriptTarget.Latest, true);
const commonImports = [
ast_utils_1.insertImport(source, modulePath, 'StoreModule', '@ngrx/store'),
];
const reducerPath = `/${options.path}/` +
(options.flat ? '' : stringUtils.dasherize(options.name) + '/') +
(options.group ? 'reducers/' : '') +
stringUtils.dasherize(options.name) +
'.reducer';
const relativePath = find_module_1.buildRelativePath(modulePath, reducerPath);
const reducerImport = ast_utils_1.insertImport(source, modulePath, `* as from${stringUtils.classify(options.name)}`, relativePath, true);
const [storeNgModuleImport] = ast_utils_1.addImportToModule(source, modulePath, `StoreModule.forFeature('${stringUtils.camelize(options.name)}', from${stringUtils.classify(options.name)}.reducer)`, relativePath);
const changes = [...commonImports, reducerImport, storeNgModuleImport];
const recorder = host.beginUpdate(modulePath);
for (const change of changes) {
if (change instanceof change_1.InsertChange) {
recorder.insertLeft(change.pos, change.toAdd);
}
}
host.commitUpdate(recorder);
return host;
};
}