UNPKG

@nstudio/angular

Version:

Angular Plugin for xplat

157 lines (156 loc) 9.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.XplatAngularHelpers = exports.ComponentHelpers = void 0; const schematics_1 = require("@angular-devkit/schematics"); const xplat_1 = require("@nstudio/xplat"); const xplat_utils_1 = require("@nstudio/xplat-utils"); const generator_1 = require("./generator"); const versions_1 = require("./versions"); var ComponentHelpers; (function (ComponentHelpers) { function platformGenerator(options, platform) { const chains = [(0, xplat_utils_1.prerun)()]; const componentSettings = xplat_1.XplatComponentHelpers.prepare(options); if (options.onlyProject) { for (const fullProjectPath of componentSettings.projectNames) { const projectName = (0, xplat_utils_1.parseProjectNameFromPath)(fullProjectPath); const projectParts = projectName.split('-'); const platPrefix = projectParts[0]; const platSuffix = projectParts.pop(); if (platPrefix === platform || platSuffix === platform) { const appDir = platform === 'web' ? '/app' : ''; const prefixPath = `apps/${fullProjectPath}/src${appDir}`; const featurePath = `${prefixPath}/features/${componentSettings.directory ? componentSettings.directory + '/' : ''}${componentSettings.featureName}`; const featureModulePath = `${featurePath}/${componentSettings.featureName}.module.ts`; const barrelIndex = `${featurePath}/components/index.ts`; // console.log('will adjustProject:', projectName); chains.push((tree, context) => { if (!tree.exists(featureModulePath)) { throw new Error((0, xplat_1.needFeatureModuleError)(featureModulePath, componentSettings.featureName, fullProjectPath, true)); } return (0, generator_1.addToFeature)('', 'component', options, prefixPath, tree)(tree, context); }); chains.push((tree, context) => { return (0, generator_1.adjustBarrelIndex)('component', options, barrelIndex, true)(tree, context); }); chains.push((tree, context) => { return (0, generator_1.addToFeature)('', 'component', options, prefixPath, tree, '_index')(tree, context); }); } } } else { // add component chains.push((tree, context) => { const xplatFolderName = xplat_1.XplatHelpers.getXplatFoldername(platform, 'angular'); return (0, generator_1.addToFeature)(xplatFolderName, 'component', options, `libs/xplat/${xplatFolderName}`, tree, ``, true)(tree, context); }); if (options.subFolder) { // adjust components barrel for subFolder chains.push((tree, context) => { const xplatFolderName = xplat_1.XplatHelpers.getXplatFoldername(platform, 'angular'); return (0, generator_1.adjustBarrelIndex)('component', options, `libs/xplat/${xplatFolderName}/features/src/lib/${componentSettings.directory ? componentSettings.directory + '/' : ''}${componentSettings.featureName}/components/${options.subFolder}/index.ts`, true)(tree, context); }); chains.push((tree, context) => { const xplatFolderName = xplat_1.XplatHelpers.getXplatFoldername(platform, 'angular'); return options.needsIndex ? (0, generator_1.addToFeature)(xplatFolderName, 'component', options, `libs/xplat/${xplatFolderName}`, tree, '_index', true)(tree, context) : (0, schematics_1.noop)()(tree, context); }); } // adjust overall components barrel chains.push((tree, context) => { const xplatFolderName = xplat_1.XplatHelpers.getXplatFoldername(platform, 'angular'); return (0, generator_1.adjustBarrelIndex)('component', options, `libs/xplat/${xplatFolderName}/features/src/lib/${componentSettings.directory ? componentSettings.directory + '/' : ''}${componentSettings.featureName}/components/index.ts`, true, false, true)(tree, context); }); chains.push((tree, context) => { const xplatFolderName = xplat_1.XplatHelpers.getXplatFoldername(platform, 'angular'); return options.needsIndex ? (0, generator_1.addToFeature)(xplatFolderName, 'component', options, `libs/xplat/${xplatFolderName}`, tree, '_index')(tree, context) : (0, schematics_1.noop)()(tree, context); }); } return chains; } ComponentHelpers.platformGenerator = platformGenerator; })(ComponentHelpers || (exports.ComponentHelpers = ComponentHelpers = {})); var XplatAngularHelpers; (function (XplatAngularHelpers) { function updateRootDeps(options) { return (tree, context) => { const dependencies = {}; const devDependencies = {}; const packageJson = (0, xplat_utils_1.getJsonFromFile)(tree, 'package.json'); let ngVersion; if (packageJson.dependencies) { if (packageJson.dependencies['@angular/core']) { // use existing ngVersion = packageJson.dependencies['@angular/core']; } else { ngVersion = versions_1.angularVersion; } dependencies[`@angular/animations`] = ngVersion; dependencies[`@angular/common`] = ngVersion; dependencies[`@angular/compiler`] = ngVersion; dependencies[`@angular/core`] = ngVersion; dependencies[`@angular/forms`] = ngVersion; dependencies[`@angular/platform-browser`] = ngVersion; dependencies[`@angular/platform-browser-dynamic`] = ngVersion; dependencies[`@angular/router`] = ngVersion; if (!dependencies[`rxjs`]) { dependencies[`rxjs`] = versions_1.rxjsVersion; } dependencies[`zone.js`] = versions_1.zonejsVersion; devDependencies[`@angular/compiler-cli`] = ngVersion; devDependencies[`@angular/language-service`] = ngVersion; } if (!packageJson.devDependencies['@nx/angular']) { packageJson.devDependencies['@nx/angular'] = versions_1.nxVersion; } if (!packageJson.devDependencies['@nx/jest']) { packageJson.devDependencies['@nx/jest'] = versions_1.nxVersion; } if (!packageJson.devDependencies['@nstudio/web']) { packageJson.devDependencies['@nstudio/web'] = versions_1.xplatVersion; } dependencies[`@${(0, xplat_utils_1.getNpmScope)()}/xplat-scss`] = 'file:libs/xplat/scss/src'; return xplat_1.XplatHelpers.updatePackageForXplat(options, { dependencies: Object.assign(Object.assign({}, dependencies), { '@ngx-translate/core': versions_1.ngxTranslateVersion, '@ngx-translate/http-loader': versions_1.ngxTranslateHttpVersion }), devDependencies: Object.assign(Object.assign({}, devDependencies), { '@types/jest': versions_1.typesJest }), })(tree, context); }; } XplatAngularHelpers.updateRootDeps = updateRootDeps; function externalChains(options) { const platforms = xplat_1.XplatHelpers.getPlatformsFromOption(options.platforms); const chains = []; for (const platform of platforms) { // console.log('angular externalChains:', `@nstudio/${platform}-angular`) chains.push((0, schematics_1.externalSchematic)(`@nstudio/${platform}-angular`, 'xplat', options, { interactive: false, })); } return chains; } XplatAngularHelpers.externalChains = externalChains; function addLibFiles(options, relativeTo = './', libName) { return (tree, context) => { if (libName === 'scss' && tree.exists(`libs/xplat/${libName}/src/package.json`)) { return (0, schematics_1.noop)()(tree, context); } else if (tree.exists(`libs/xplat/${libName}/src/lib/index.ts`)) { return (0, schematics_1.noop)()(tree, context); } const libSrcFolder = `/${libName}/src${libName === 'scss' ? '' : '/lib'}`; return (0, schematics_1.branchAndMerge)((0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)(`${relativeTo}_files_${libName}`), [ (0, schematics_1.template)(Object.assign(Object.assign({}, options), (0, xplat_1.getDefaultTemplateOptions)())), (0, schematics_1.move)(`libs/xplat/${libSrcFolder}`), ])))(tree, context); }; } XplatAngularHelpers.addLibFiles = addLibFiles; })(XplatAngularHelpers || (exports.XplatAngularHelpers = XplatAngularHelpers = {}));