UNPKG

@nx-dart/nx-dart

Version:

A Nx plugin, that adds support for developing Dart and Flutter packages in a Nx workspace

63 lines 2.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.inferPackageProjectType = exports.readAnalysisOptions = exports.readFlutterMetadata = exports.readPubspec = void 0; const YAML = require("yaml"); const package_1 = require("../../utils/package"); function readPubspec(tree, packageRoot) { if (tree.exists(`${packageRoot}/pubspec.yaml`)) { return YAML.parse(tree.read(`${packageRoot}/pubspec.yaml`, 'utf-8')); } } exports.readPubspec = readPubspec; function readFlutterMetadata(tree, packageRoot) { if (tree.exists(`${packageRoot}/.metadata`)) { return YAML.parse(tree.read(`${packageRoot}/.metadata`, 'utf-8')); } } exports.readFlutterMetadata = readFlutterMetadata; function readAnalysisOptions(tree, directory = '.') { var _a; if (tree.exists(`${directory}/analysis_options.yaml`)) { return ((_a = YAML.parse(tree.read(`${directory}/analysis_options.yaml`, 'utf-8'))) !== null && _a !== void 0 ? _a : {}); } } exports.readAnalysisOptions = readAnalysisOptions; function inferPackageProjectType(tree, packageRoot) { const pubspec = readPubspec(tree, packageRoot); if (!pubspec) { // This is not a Dart package. return; } if ((0, package_1.isFlutterPackage)(pubspec)) { // This is a Flutter package. const metadata = readFlutterMetadata(tree, packageRoot); if (metadata) { // If we have a .metadata file we use that because it is the most accurate way to determine // the project type. switch (metadata.project_type) { case 'app': return 'application'; case 'package': case 'plugin': case 'plugin_ffi': return 'library'; } } const platformDirs = ['android', 'ios', 'macos', 'linux', 'windows', 'web']; const hasPlatformDir = platformDirs.some((dir) => tree.exists(`${packageRoot}/${dir}`)); const hasMain = tree.exists(`${packageRoot}/lib/main.dart`); if (!(0, package_1.isFlutterPlugin)(pubspec) && (hasPlatformDir || hasMain)) { return 'application'; } return 'library'; } else { // This is a Dart package. if (tree.children(`${packageRoot}/example`).length > 0) { return 'library'; } return 'application'; } } exports.inferPackageProjectType = inferPackageProjectType; //# sourceMappingURL=package.js.map