UNPKG

@ngserveio/ws

Version:

This library was generated with [Nx](https://nx.dev).

108 lines 5.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const devkit_1 = require("@nx/devkit"); const path = require("path"); const ts_morph_1 = require("ts-morph"); const common_model_1 = require("../common-model"); const utilities_1 = require("../utilities"); // https://nx.dev/generators/modifying-files#ast-manipulation function firebaseNgrxGenerator(tree, schema) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const domainNames = (0, devkit_1.names)(schema.domain); const project = (0, utilities_1.getProject)(tree, `${domainNames.fileName}-ui-data-access`); const collectionNames = (0, devkit_1.names)(schema.collection); const storeFilePath = path.join(project.sourceRoot, 'lib'); console.log('Creating Store files for ', schema.collection); yield (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, './files/store'), storeFilePath, Object.assign(Object.assign({}, collectionNames), { template: '', domain: domainNames.fileName, domainProject: `${domainNames.fileName}/common` })); console.log('Creating Model for ', schema.collection); yield (0, common_model_1.default)(tree, { name: schema.collection, domain: schema.domain, inputs: '', }); const firebaseConfigPath = path.join(storeFilePath, `firebase-config.interface.ts`); if (!tree.exists(firebaseConfigPath)) { yield (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, './files/data-access-module/config'), storeFilePath, Object.assign(Object.assign({}, domainNames), { template: '' })); } const storeModuleFilePath = path.join(storeFilePath, `${domainNames.fileName}-ui-data-access.module.ts`); console.log('UPDATE ', storeModuleFilePath); const updates = { [storeModuleFilePath]: (sourceFile) => { utilities_1.ModuleGeneratorUtil.addToModuleDecorator(sourceFile, { imports: { [`./${collectionNames.fileName}-store`]: [ `${collectionNames.className}StoreModule`, ], [`@angular/fire/compat`]: ['AngularFireModule'], [`@angular/fire/compat/firestore`]: [ { moduleName: 'AngularFirestoreModule', importText: 'AngularFirestoreModule.enablePersistence()', }, ], [`@ngrx/store-devtools`]: [ { moduleName: 'StoreDevtoolsModule', importText: 'StoreDevtoolsModule.instrument({})', }, ], [`@ngrx/store`]: [ { moduleName: 'StoreModule', importText: 'StoreModule.forRoot({})', }, ], [`@ngrx/effects`]: [ { moduleName: `EffectsModule`, importText: 'EffectsModule.forRoot([])', }, ], }, }); (0, utilities_1.createImportClassDeclaration)(sourceFile, `@angular/fire/compat`, [ 'FIREBASE_APP_NAME', 'FIREBASE_OPTIONS', ]); (0, utilities_1.createImportClassDeclaration)(sourceFile, '@angular/core', [ 'ModuleWithProviders', ]); const ngClassDeclaration = utilities_1.ModuleGeneratorUtil.findModuleClass(sourceFile); let methodDeclaration = ngClassDeclaration.getFirstDescendantByKind(ts_morph_1.ts.SyntaxKind.MethodDeclaration); if ((methodDeclaration === null || methodDeclaration === void 0 ? void 0 : methodDeclaration.getName()) !== 'forRoot') { // Import the configuration sourceFile.addImportDeclaration({ moduleSpecifier: './firebase-config.interface', namedImports: [`I${domainNames.className}DataAccessConfig`], }); methodDeclaration = ngClassDeclaration.addMethod({ isStatic: true, name: 'forRoot', returnType: `ModuleWithProviders<${domainNames.className}UiDataAccessModule>`, parameters: [ { type: `I${domainNames.className}DataAccessConfig`, name: 'config', }, ], }); // Add a forRoot method to the module for configuration of Firebase methodDeclaration.setBodyText(` return { ngModule: ${domainNames.className}UiDataAccessModule, providers: [ { provide: FIREBASE_APP_NAME, useValue: config.appName }, { provide: FIREBASE_OPTIONS, useValue: config.firebaseConfig }, ], }; `); } }, }; (0, utilities_1.updateSourceFiles)(tree, updates); yield (0, devkit_1.formatFiles)(tree); }); } exports.default = firebaseNgrxGenerator; //# sourceMappingURL=index.js.map