@ngserveio/ws
Version:
This library was generated with [Nx](https://nx.dev).
62 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const tslib_1 = require("tslib");
const devkit_1 = require("@nx/devkit");
const path_1 = require("path");
const utilities_1 = require("../utilities");
function createBarrelFile(tree, projectPath) {
const barrelPath = (0, path_1.join)(projectPath, 'index.ts');
if (!tree.exists(barrelPath)) {
tree.write(barrelPath, '');
}
return barrelPath;
}
function commonModelGenerator(tree, schema) {
var _a, _b;
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const modelNames = (0, devkit_1.names)(schema.name);
const commonProject = (0, utilities_1.getCommonProjectByDomain)(tree, schema.domain);
const commonProjectSrcPath = (0, path_1.join)(commonProject.sourceRoot, 'lib');
// Model file already exists in common
const filesExist = tree.exists(`${commonProjectSrcPath}/models/${modelNames.fileName}.model.ts`) &&
tree.exists(`${commonProjectSrcPath}/validators/${modelNames.fileName}.validator.ts`);
if (filesExist) {
return;
}
const commonProjectModelsBarrelPath = createBarrelFile(tree, (0, path_1.join)(commonProjectSrcPath, 'models'));
const commonProjectValidatorPath = createBarrelFile(tree, (0, path_1.join)(commonProjectSrcPath, 'validators'));
const commonProjectBarrelPath = createBarrelFile(tree, commonProjectSrcPath);
// Add the model to the common project
yield (0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, './files'), commonProjectSrcPath, Object.assign(Object.assign({}, modelNames), { template: '', formControls: ((_b = (_a = schema.inputs) === null || _a === void 0 ? void 0 : _a.trim()) === null || _b === void 0 ? void 0 : _b.length) > 0 ? (0, utilities_1.parseControls)(schema.inputs) : [] }));
const fileUpdates = {
[commonProjectModelsBarrelPath]: (sourceFile) => {
const moduleSpecifier = `./${modelNames.fileName}.model`;
if ((0, utilities_1.containsExport)(sourceFile, moduleSpecifier)) {
return;
}
sourceFile.addExportDeclaration({ moduleSpecifier });
},
[commonProjectValidatorPath]: (sourceFile) => {
const moduleSpecifier = `./${modelNames.fileName}.validator`;
if ((0, utilities_1.containsExport)(sourceFile, moduleSpecifier)) {
return;
}
sourceFile.addExportDeclaration({ moduleSpecifier });
},
[commonProjectBarrelPath]: (sourceFile) => {
const moduleSpecifiers = [`./models`, `./validators`];
const hasSpecifiers = moduleSpecifiers.some((p) => (0, utilities_1.containsExport)(sourceFile, p));
if (!hasSpecifiers) {
sourceFile.addExportDeclarations([
{ moduleSpecifier: moduleSpecifiers[0] },
{ moduleSpecifier: moduleSpecifiers[1] },
]);
}
},
};
(0, utilities_1.updateSourceFiles)(tree, fileUpdates);
yield (0, devkit_1.formatFiles)(tree);
});
}
exports.default = commonModelGenerator;
//# sourceMappingURL=index.js.map