@taiga-ui/cdk
Version:
Base library for creating Angular components and applications using Taiga UI principles regarding of actual visual appearance
77 lines • 3.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.migrateDocI18nTokens = migrateDocI18nTokens;
const ng_morph_1 = require("ng-morph");
const file_globs_1 = require("../../../constants/file-globs");
const add_unique_import_1 = require("../../../utils/add-unique-import");
const colored_log_1 = require("../../../utils/colored-log");
const get_named_import_references_1 = require("../../../utils/get-named-import-references");
const project_root_1 = require("../../../utils/project-root");
const ANGULAR_CORE = '@angular/core';
const SIGNAL = 'signal';
const DOC_I18N_TOKENS = [
'TUI_DOC_DEMO_TEXTS',
'TUI_DOC_PREVIEW_TEXT',
'TUI_DOC_MENU_TEXT',
'TUI_DOC_SEARCH_TEXT',
'TUI_DOC_SEE_ALSO_TEXT',
'TUI_DOC_TOC_TEXT',
'TUI_DOC_SOURCE_CODE_TEXT',
];
/**
* Migrates addon-doc i18n token providers from plain values to signal-wrapped values.
*
* These tokens changed their type from `string`/`[string, string, string]`
* to `Signal<string>` in v5.
*
* Before:
* { provide: TUI_DOC_SOURCE_CODE_TEXT, useValue: 'GitHub' }
*
* After:
* { provide: TUI_DOC_SOURCE_CODE_TEXT, useValue: signal('GitHub') }
*/
function migrateDocI18nTokens(tree, options) {
if (!options['skip-logs']) {
(0, colored_log_1.infoLog)('Migrating addon-doc i18n token providers to signal-based values...');
}
const project = (0, ng_morph_1.createProject)(tree, (0, project_root_1.projectRoot)(), file_globs_1.ALL_TS_FILES);
(0, ng_morph_1.setActiveProject)(project);
for (const tokenName of DOC_I18N_TOKENS) {
const refs = (0, get_named_import_references_1.getNamedImportReferences)(tokenName, '@taiga-ui/addon-doc');
for (const ref of refs) {
if (ref.wasForgotten()) {
continue;
}
const parent = ref.getParent();
if (!parent ||
ng_morph_1.Node.isImportSpecifier(parent) ||
!ng_morph_1.Node.isPropertyAssignment(parent) ||
parent.getName() !== 'provide') {
continue;
}
const objectLiteral = parent.getParent();
if (!objectLiteral || !ng_morph_1.Node.isObjectLiteralExpression(objectLiteral)) {
continue;
}
const useValueProp = objectLiteral.getProperty('useValue');
if (!useValueProp || !ng_morph_1.Node.isPropertyAssignment(useValueProp)) {
continue;
}
const initializer = useValueProp.getInitializer();
if (!initializer) {
continue;
}
const initText = initializer.getText();
if (initText.startsWith(`${SIGNAL}(`)) {
continue;
}
useValueProp.setInitializer(`${SIGNAL}(${initText})`);
(0, add_unique_import_1.addUniqueImport)(ref.getSourceFile().getFilePath(), SIGNAL, ANGULAR_CORE);
}
}
(0, ng_morph_1.saveActiveProject)();
if (!options['skip-logs']) {
(0, colored_log_1.titleLog)('addon-doc i18n token migration completed!');
}
}
//# sourceMappingURL=migrate-doc-i18n-tokens.js.map