@ngrx/schematics
Version:
NgRx Schematics for Angular
71 lines • 3.35 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.exportPushModule = exports.importPushModule = exports.migrateToNgrxPush = void 0;
var ts = require("typescript");
var schematics_1 = require("@angular-devkit/schematics");
var schematics_core_1 = require("../../schematics-core");
var ASYNC_REGEXP = /\| {0,}async/g;
var PUSH_MODULE = 'PushModule';
var COMPONENT_MODULE = '@ngrx/component';
var pushModuleToFind = function (node) {
return ts.isIdentifier(node) && node.text === PUSH_MODULE;
};
var ngModulesToFind = function (node) {
return ts.isIdentifier(node) &&
(node.text === 'CommonModule' || node.text === 'BrowserModule');
};
function migrateToNgrxPush() {
return function (host) {
return (0, schematics_core_1.visitTemplates)(host, function (template) {
var match;
var changes = [];
while ((match = ASYNC_REGEXP.exec(template.content)) !== null) {
var m = match.toString();
changes.push(new schematics_core_1.ReplaceChange(template.fileName,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
template.start + match.index, m, m.replace('async', 'ngrxPush')));
}
return (0, schematics_core_1.commitChanges)(host, template.fileName, changes);
});
};
}
exports.migrateToNgrxPush = migrateToNgrxPush;
function importPushModule() {
return function (host) {
(0, schematics_core_1.visitTSSourceFiles)(host, function (sourceFile) {
var hasCommonModuleOrBrowserModule = false;
var hasPushModule = false;
(0, schematics_core_1.visitNgModuleImports)(sourceFile, function (_, importNodes) {
hasCommonModuleOrBrowserModule = importNodes.some(ngModulesToFind);
hasPushModule = importNodes.some(pushModuleToFind);
});
if (hasCommonModuleOrBrowserModule && !hasPushModule) {
var changes = (0, schematics_core_1.addImportToModule)(sourceFile, sourceFile.fileName, PUSH_MODULE, COMPONENT_MODULE);
(0, schematics_core_1.commitChanges)(host, sourceFile.fileName, changes);
}
});
};
}
exports.importPushModule = importPushModule;
function exportPushModule() {
return function (host) {
(0, schematics_core_1.visitTSSourceFiles)(host, function (sourceFile) {
var hasCommonModuleOrBrowserModule = false;
var hasPushModule = false;
(0, schematics_core_1.visitNgModuleExports)(sourceFile, function (_, exportNodes) {
hasCommonModuleOrBrowserModule = exportNodes.some(ngModulesToFind);
hasPushModule = exportNodes.some(pushModuleToFind);
});
if (hasCommonModuleOrBrowserModule && !hasPushModule) {
var changes = (0, schematics_core_1.addExportToModule)(sourceFile, sourceFile.fileName, PUSH_MODULE, COMPONENT_MODULE);
(0, schematics_core_1.commitChanges)(host, sourceFile.fileName, changes);
}
});
};
}
exports.exportPushModule = exportPushModule;
function default_1() {
return (0, schematics_1.chain)([migrateToNgrxPush(), importPushModule(), exportPushModule()]);
}
exports.default = default_1;
//# sourceMappingURL=index.js.map
;