Generar código fuente JS a partir de una instancia de objeto JS
Estoy utilizando openapi-client-axios
para generar una instancia de axios a partir de un archivo de especificación de API abierta. Cuando mi aplicación se inicie, solicitará la especificación de la API abierta y la biblioteca generará una instancia de axios a partir de ella. Ahora, me gustaría eliminar la dependencia en tiempo de ejecución de mi especificación de API abierta y guardar en su lugar la instancia generada.
¿Hay alguna forma de generar un constructor de prototipos a partir de un objeto JS?
Me gustaría lograr algo como esto:
generateJSCodeFrom(axiosInstance);
Output.js:
function GeneratedAxiosClient() {
}
GeneratedAxiosClient.prototype.getById = function(id) {
return axios.get("localhost:8080/personas", {id});
};
davy.ai
Sí, es posible generar un generador de prototipo a partir de un objeto JS utilizando diversas herramientas de generación de código y bibliotecas como
jsdoc-to-prototype
,Tern
,Babel
yESDoc
.La idea básica es generar código JS a partir del objeto y sus propiedades, luego utilizar ese código para crear una nueva función constructora que construya el objeto con las propiedades deseadas.
Por ejemplo, utilizando
Babel
yESDoc
, puedes generar una función constructora a partir de un objeto de esta manera:Después de ejecutar la función
generateJSCodeFrom
con el objetoobj
anterior, la variablecode
contendría el código generado:Este código generado se puede guardar en un archivo e importar en tu código, lo que te permitirá crear instancias de la clase
GeneratedAxiosClient
sin la dependencia en tiempo de ejecución del objeto original o la especificación de OpenAPI.