UNPKG

@assylman/riverpod-cli

Version:

nodejs cli for creating well structured flutter riverpod folders and files needed to work with Riverpod plugin

76 lines (75 loc) 2.88 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateProvider = generateProvider; const fs_1 = __importDefault(require("fs")); const utils_1 = require("../utils"); const providersDart = '/providers.dart'; function generateProvider(name, options, command) { const target = options.target; const libDir = target != null ? '.' + target : './lib/features'; const featureDirectory = libDir + '/' + name; const dir = featureDirectory + providersDart; if (command.includes(utils_1.Commands.feature)) { if (!fs_1.default.existsSync(dir)) { fs_1.default.writeFileSync(dir, generateProvidersForFeature(name, options), { flag: "w" }); } } } function generateProvidersForFeature(name, options) { const content = []; // Import services const importServiceName = options.i ? 'services.dart' : name + '_service.dart'; content.push(...[ `import 'package:flutter_riverpod/flutter_riverpod.dart';`, ``, `import './services/${importServiceName}';`, ]); // Import repositories const importRepositoryName = options.i ? 'repositories.dart' : name + '_repository.dart'; content.push(...[ `import './repositories/${importRepositoryName}';`, ]); // Import managers const importManagerName = options.i ? 'managers.dart' : name + '_manager.dart'; content.push(...[ `import './managers/${importManagerName}';`, ``, ]); // Declare managers const managerName = (0, utils_1.toPascalCase)(name) + 'Manager'; content.push(...[ `final ${name}ManagerProvider = Provider<${managerName}>((ref) {`, /// add repository ` return ${managerName}();`, `});`, ``, ]); // Declare repositories const repositoryName = (0, utils_1.toPascalCase)(name) + 'Repository'; content.push(...[ `final ${name}RepositoryProvider = Provider<${repositoryName}>((ref) {`, /// add local service /// add remote service ` return ${repositoryName}Impl();`, `});`, ``, ]); // Declare services const serviceName = (0, utils_1.toPascalCase)(name) + 'Service'; const serviceLocalName = (0, utils_1.toPascalCase)(name) + 'LocalService'; const serviceRemoteName = (0, utils_1.toPascalCase)(name) + 'RemoteService'; content.push(...[ `final ${name}LocalServiceProvider = Provider<${serviceName}>((ref) {`, ` return ${serviceLocalName}();`, `});`, ``, `final ${name}RemoteServiceProvider = Provider<${serviceName}>((ref) {`, ` return ${serviceRemoteName}();`, `});`, ``, ]); return content.join('\n'); }