UNPKG

grunt-generate-view-model

Version:
106 lines 5.22 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.saveInfoAboutTransformer = void 0; const fs = __importStar(require("fs")); const path = __importStar(require("path")); const ts_file_parser_1 = require("ts-file-parser"); const enums_1 = require("./enums"); const primitiveTypes_1 = require("../../tasks/constants/primitiveTypes"); const saveInfoAboutTransformer = (direction, func, imports, cm) => { var _a; if (!direction) { return; } const isTransformFunctionExist = !!((_a = func[direction]) === null || _a === void 0 ? void 0 : _a.function); if (!isTransformFunctionExist) { return; } const importFunctionName = func[direction].function; const moduleImport = imports.find(possibleImport => possibleImport.clauses.indexOf(importFunctionName) > -1); if (moduleImport) { let fileContentInString = ''; let pathFromFile = moduleImport.absPathNode.join('/'); const getContentFrom = (from) => { fileContentInString = fs.readFileSync(path.resolve(pathFromFile + from)).toString(); pathFromFile = `${pathFromFile}${from}`; }; try { getContentFrom('.ts'); } catch (e) { getContentFrom('/index.ts'); } const jsonStructure = ts_file_parser_1.parseStruct(fileContentInString, {}, pathFromFile); const { functions } = jsonStructure; const targetFuncs = functions.find(func => func.name === importFunctionName); func[direction].isAsync = targetFuncs.isAsync; const asyncDirect = enums_1.asyncDirection[direction]; if (!cm[asyncDirect]) { cm[asyncDirect] = targetFuncs.isAsync; } func[direction].isPrimitive = false; const contextObject = targetFuncs.params[1]; const contextTypeOfTransformer = (contextObject === null || contextObject === void 0 ? void 0 : contextObject.type) || null; const contextMandatoryOfType = (contextObject === null || contextObject === void 0 ? void 0 : contextObject.mandatory) || false; const directionValueInfo = cm.contextType[direction]; if (!contextTypeOfTransformer) { return; } if (!directionValueInfo.value || directionValueInfo.value === contextTypeOfTransformer || contextTypeOfTransformer === 'any') { directionValueInfo.value = contextTypeOfTransformer; directionValueInfo.mandatory = contextMandatoryOfType || directionValueInfo.mandatory; const fieldsWithContext = cm.fields.filter(f => { var _a; return !!((_a = f.fieldConvertFunction) === null || _a === void 0 ? void 0 : _a[direction]); }); fieldsWithContext.forEach(f => { const funcToRecognize = functions.find(func => func.name === f.fieldConvertFunction[direction].function); const isFuncsWithParams = !!(funcToRecognize === null || funcToRecognize === void 0 ? void 0 : funcToRecognize.params[1]); if (!isFuncsWithParams) { return; } cm.contextTypeFields[direction].push(f.name); }); } else { throw new Error('Context for one-side mapper should be of one type or any'); } const isPrimitiveType = !!primitiveTypes_1.primitiveTypes.find(type => type === directionValueInfo.value); if (isPrimitiveType) { return; } const contextTypeImport = jsonStructure._imports.find(imp => !!imp.clauses.find(clause => directionValueInfo.value === clause)); imports.push({ clauses: [directionValueInfo.value], absPathNode: contextTypeImport.absPathNode, absPathString: contextTypeImport.absPathNode.join('/'), isNodeModule: false }); return; } func[direction].isPrimitive = true; if (func[direction].function !== 'null' && func[direction].function !== 'undefined') { func[direction].isPrimitiveString = isNaN(+func[direction].function); } else { func[direction].isPrimitiveString = false; } }; exports.saveInfoAboutTransformer = saveInfoAboutTransformer; //# sourceMappingURL=transformer.js.map