@angular-material-extensions/google-maps-autocomplete
Version:
Autocomplete input component and directive for google-maps built with angular and material design
85 lines • 4.14 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const schematics_1 = require("@angular-devkit/schematics");
const tasks_1 = require("@angular-devkit/schematics/tasks");
const helpers_1 = require("../helpers");
const config_1 = require("@schematics/angular/utility/config");
const schematics_2 = require("@angular/cdk/schematics");
/** Loads the full version from the given Angular package gracefully. */
function loadPackageVersionGracefully(context) {
try {
context.logger.log('info', `🧟 @angular-material-extensions/google-maps-autocomplete
is using the following version ${require(`../../package.json`).version}`);
return require(`../../package.json`).version;
}
catch (_a) {
return null;
}
}
// You don't have to export the function as default. You can also have more than one rule factory
// per file.
function addPackageJsonDependencies() {
return (host, context) => {
const ngCoreVersionTag = getPackageVersionFromPackageJson(host, '@angular/core');
const dependencies = [
{
type: helpers_1.NodeDependencyType.Default,
version: loadPackageVersionGracefully(context) || 'latest',
name: '@angular-material-extensions/google-maps-autocomplete'
},
{ type: helpers_1.NodeDependencyType.Default, version: '^1.0.0-beta.7', name: '@agm/core' },
{ type: helpers_1.NodeDependencyType.Default, version: '^3.39.2', name: '@types/googlemaps' },
{ type: helpers_1.NodeDependencyType.Default, version: ngCoreVersionTag || '~9.0.0', name: '@angular/animations' },
{ type: helpers_1.NodeDependencyType.Default, version: ngCoreVersionTag || '~9.0.0', name: '@angular/forms' }
];
dependencies.forEach(dependency => {
helpers_1.addPackageJsonDependency(host, dependency);
context.logger.log('info', `✅️ Added "${dependency.name}" into ${dependency.type}`);
});
return host;
};
}
exports.addPackageJsonDependencies = addPackageJsonDependencies;
function installPackageJsonDependencies() {
return (host, context) => {
context.addTask(new tasks_1.NodePackageInstallTask());
context.logger.log('info', `🔍 Installing packages...`);
return host;
};
}
exports.installPackageJsonDependencies = installPackageJsonDependencies;
function addModuleToImports(options) {
return (host, context) => {
const workspace = config_1.getWorkspace(host);
const project = schematics_2.getProjectFromWorkspace(workspace, options.project);
const moduleName = 'MatGoogleMapsAutocompleteModule';
const agmCoreModule = 'AgmCoreModule.forRoot()';
schematics_2.addModuleImportToRootModule(host, moduleName, '@angular-material-extensions/google-maps-autocomplete', project);
schematics_2.addModuleImportToRootModule(host, agmCoreModule, '@agm/core', project);
context.logger.log('info', `✅️ "${moduleName}" is imported`);
return host;
};
}
exports.addModuleToImports = addModuleToImports;
/** Gets the version of the specified package by looking at the package.json in the given tree. */
function getPackageVersionFromPackageJson(tree, name) {
if (!tree.exists('package.json')) {
return null;
}
// tslint:disable-next-line:no-non-null-assertion
const packageJson = JSON.parse(tree.read('package.json').toString('utf8'));
if (packageJson.dependencies && packageJson.dependencies[name]) {
return packageJson.dependencies[name];
}
return null;
}
exports.getPackageVersionFromPackageJson = getPackageVersionFromPackageJson;
function default_1(options) {
return schematics_1.chain([
options && options.skipPackageJson ? schematics_1.noop() : addPackageJsonDependencies(),
options && options.skipPackageJson ? schematics_1.noop() : installPackageJsonDependencies(),
options && options.skipModuleImport ? schematics_1.noop() : addModuleToImports(options),
]);
}
exports.default = default_1;
//# sourceMappingURL=index.js.map