UNPKG

@rxap/nest-socket-io-client

Version:

This package provides a NestJS module for integrating a Socket.IO client. It offers a client proxy service and a provider for managing the Socket.IO client connection, allowing NestJS applications to easily interact with Socket.IO servers.

98 lines (97 loc) 4.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initGenerator = initGenerator; const devkit_1 = require("@nx/devkit"); const path_1 = require("path"); async function initGenerator(tree, options) { const packageJsonFilePath = (0, path_1.relative)(tree.root, (0, path_1.join)(__dirname, '..', '..', '..', 'package.json')); if (!tree.exists(packageJsonFilePath)) { console.error('package.json not found in: ' + packageJsonFilePath); return; } const { peerDependencies, name: packageName } = JSON.parse(tree.read(packageJsonFilePath, 'utf-8')); console.log(`Coerce peer dependencies for package: ${packageName}`); if (!peerDependencies || !Object.keys(peerDependencies).length) { console.log('No peer dependencies found'); return; } console.log(`Peer dependencies: ${Object.keys(peerDependencies).join(', ')}`); const rootPackageJson = JSON.parse(tree.read('package.json', 'utf-8')); let isDevDependency = !!rootPackageJson.devDependencies?.[packageName]; if (isDevDependency && [/^@rxap\/ngx/, /^@rxap\/nest/].some((rx) => rx.test(packageName))) { rootPackageJson.dependencies ??= {}; rootPackageJson.dependencies[packageName] = rootPackageJson.devDependencies[packageName]; delete rootPackageJson.devDependencies[packageName]; isDevDependency = false; tree.write('package.json', JSON.stringify(rootPackageJson, null, 2)); } if (!isDevDependency && [ /^@rxap\/plugin/, /^@rxap\/workspace/, /@rxap\/schematic/, ]) { rootPackageJson.devDependencies ??= {}; rootPackageJson.devDependencies[packageName] = rootPackageJson.dependencies[packageName]; delete rootPackageJson.dependencies[packageName]; isDevDependency = true; tree.write('package.json', JSON.stringify(rootPackageJson, null, 2)); } const missingPeerDependencies = Object.entries(peerDependencies) .filter(([dep]) => !rootPackageJson.dependencies?.[dep] && !rootPackageJson.devDependencies?.[dep]) .reduce((acc, [dep, version]) => ({ ...acc, [dep]: version }), {}); if (!Object.keys(missingPeerDependencies).length) { console.log('No missing peer dependencies'); return; } if (isDevDependency) { (0, devkit_1.addDependenciesToPackageJson)(tree, {}, missingPeerDependencies); } else { (0, devkit_1.addDependenciesToPackageJson)(tree, missingPeerDependencies, {}); } await (0, devkit_1.formatFiles)(tree); (0, devkit_1.installPackagesTask)(tree); for (const peer of Object.keys(missingPeerDependencies)) { console.log(`Peer dependency ${peer} added to package.json`); const peerPackageJsonFilePath = (0, path_1.join)('node_modules', ...peer.split('/'), 'package.json'); if (!tree.exists(peerPackageJsonFilePath)) { console.log(`Peer dependency ${peer} has no package.json`); continue; } const { generators, schematics } = JSON.parse(tree.read(peerPackageJsonFilePath, 'utf-8')); if (!generators && !schematics) { console.log(`Peer dependency ${peer} has no generators or schematics`); continue; } const configFile = generators || schematics; if (!tree.exists((0, path_1.join)('node_modules', ...peer.split('/'), configFile))) { console.log(`Peer dependency ${peer} has no generators or schematics file`); continue; } const config = JSON.parse(tree.read((0, path_1.join)('node_modules', ...peer.split('/'), configFile), 'utf-8')); if (!config.generators?.init) { console.log(`Peer dependency ${peer} has no init generator`); continue; } const initGeneratorFilePath = config.generators.init.factory; const fullInitGeneratorFilePath = (0, path_1.join)('node_modules', ...peer.split('/'), initGeneratorFilePath) + '.js'; if (!tree.exists(fullInitGeneratorFilePath)) { console.log(`Peer dependency ${peer} has no init generator file: ` + fullInitGeneratorFilePath); continue; } // eslint-disable-next-line @typescript-eslint/no-var-requires const initGenerator = require((0, path_1.join)('node_modules', ...peer.split('/'), initGeneratorFilePath))?.default; if (typeof initGenerator !== 'function') { console.log(`Peer dependency ${peer} has no init generator function`); continue; } console.log(`Run init generator for peer dependency ${peer}`); await initGenerator(tree, options); } } exports.default = initGenerator;