
Security News
Critical Security Vulnerability in React Server Components
React disclosed a CVSS 10.0 RCE in React Server Components and is advising users to upgrade affected packages and frameworks to patched versions now.
@teleporthq/teleport-code-generators
Advanced tools
This is a WIP prototype containing all of our project and component generators, as well as the UIDL schemas and validators. While we have some working examples, it shouldn't be considered production ready by any means! Don't hesitate to give us feedback and feel free to contribute in any way!
The code generators are a part of the teleportHQ ecosystem, which we're actively building in an effort to streamline the creation of web and mobile applications. You can read more about our inception in this article.
The code generators are used by our online visual editor (coming soon), a platform that lets you build applications via a familiar design tool interface. The glue between our platform and the code generators is the [UIDL Standard](link coming soon). The UIDL allows us to define user interfaces in an abstract way, independent of any framework or even the web platform itself, which then allows us to convert that abstraction into different flavors of coding (e.g. React, Vue, etc.).
Our philosophy behind the code generators is:
React, can also be built with Vue or on top of the Web Components standard - we support multiple targetsYou can also read more on our [decision to open source our code generators](link coming soon).
Read more about the [UIDL Standard](link coming soon).
While this will probably remain a monorepo, we'll publish different npm packages for various parts of our code generation ecosystem. For now, there's a single package published under @teleporthq/teleport-code-generators. So, let's integrate that into your project:
npm install @teleporthq/teleport-code-generators
import { createReactComponentGenerator } from '@teleporthq/teleport-code-generators'
// instantiate a react generator
const reactGenerator = createReactComponentGenerator()
// define a UIDL representation
const componentUIDL = {
"name": "MyComponent",
"node": {
"type": "element",
"content": {
"elementType": "text", // equivalent of the span
"children": [{
"type": "static", // equivalent of the text node inside
"content": "Teleport World!"
}]
}
}
}
// get the code
reactGenerator
.generateComponent(componentUIDL)
.then(result => {
console.log(result.code)
})
.catch(err => {
console.log(err)
})
The code output from this snippet would be
import React from "react"
const MyComponent = props => {
return <span>Teleport World!</span>
}
export default MyComponent
You can find more advanced UIDL samples to play with here.
This repo contains multiple modules that will soon be available as individual npm packages. There are two types of generators available: component and project generators. Component generators take a simple ComponentUIDL input and return the code according to the specific generator flavors (e.g. React + StyledJSX, Vue, etc.). Project generators operate on ProjectUIDLs and will return a complete structure of folders and files which then can be written to disk or sent to servers for deployment. The aim of the project generators is to output a working application.
We have official component generators for React and Vue, but we also plan on supporting other frameworks and standards as soon as possible. Also, React Native is definitely on our minds, since we've designed the UIDL in such a way that it's agnostic of the web platform.
There are two factory functions exported from our main module, for the React and Vue generators.
import { createReactComponentGenerator } from '@teleporthq/teleport-code-generators'
// define a UIDL representation
const componentUIDL = {
"name": "MyComponent",
"node": {
"type": "element",
"content": {
"elementType": "text",
"children": [{
"type": "static",
"content": "Teleport World!"
}]
}
}
}
// instantiate a generator, selecting the styled-jsx plugin for handling styles (other options: CSSModules, JSS, InlineStyles)
const reactGenerator = createReactComponentGenerator({ variation: 'StyledJSX' })
// get the code
reactGenerator
.generateComponent(componentUIDL)
.then(result => {
console.log(result.code)
})
.catch(err => {
console.log(err)
})
Read more about [the API of the component generator](link coming soon).
Read more about [mappings and resolvers](link coming soon).
import { createVueComponentGenerator } from '@teleporthq/teleport-code-generators'
// define a UIDL representation
const componentUIDL = {
"name": "MyComponent",
"node": {
"type": "element",
"content": {
"elementType": "text", // equivalent of the span
"children": [{
"type": "static", // equivalent of the text node inside
"content": "Teleport World!"
}]
}
}
}
// instantiate a vue generator
const vueGenerator = createVueComponentGenerator()
// get the code
vueGenerator
.generateComponent(componentUIDL)
.then(result => {
console.log(result.code)
})
.catch(err => {
console.log(err)
})
Here's a list of functionalities that the UIDL and the component generators are supporting at the moment, besides the obvious presentational layer:
We have official project generators for the two different frameworks we're supporting so far. For React, we can generate a project based on a React and React-Router template, or we can generate a project on top of Next.js. For Vue, we have a standard Vue app, build with the vue-cli and a generator for Nuxt.
Project generators rely on the component generators and on the structure of the ProjectUIDL to figure out how many files to create and where to create them. Each project generator has its own strategy, based on the particularities of that specific framework/tool.
Coming soon
Coming soon
Coming soon
Coming soon
Besides the regular files and folders generated at the end of the process, project generators are also taking care of:
package.jsonindex.html or something that is framework specific)Full documentation coming soon.
A few useful links to get you up to speed with the entire teleport ecosystem:
This project is writen with TypeScript and has a pretty standard setup. In order to give it a spin locally, you have to:
npm install
Project generators are running locally in the /examples folder, where you'll find a number of UIDL samples as well as the code that writes the files and folders to disk.
To generate the projects locally, you can try one of these four examples:
npm run create-react-basic
npm run create-react-next
npm run create-vue-basic
npm run create-vue-nuxt
Files and folders for each template are generated after you run the corresponding npm task in /examples/projects-exporters/<project-template>.
Running the test suite:
npm run test
npm run test:coverage
Please open an issue for any irregularity, potential bug that you find while running the codebase, or if you simply have any questions or curiosities about this project.
It's not just our code that's open source, we're also planning the development of the code generators on GitHub. We already have a number of issues opened and we expect further contributions on this.
We're especially interested in opening discussions around the issues tagged with the proposal label.
We also have a couple of milestone down the line:
We plan on releasing this around mid May 2019. Most of the issues tackled during this milestone can be found here.
Our official release will be a switch to version 1.0. ETA for this is around mid June/July 2019. Hopefully, by then, we'll have more people contributing to the code generators.
We'd be super happy to have community involvement around this project. We strongly believe in the power of open source, so we're planning on building the best possible code generators, together with the entire development community.
We envision different types of involvement from this point on:
Thanks goes to these wonderful people (emoji key):
Alex Moldovan 💻 📖 🤔 | Vlad Nicula 💻 🤔 | Paul BRIE 🐛 📖 🤔 | mihaitaba 🎨 📖 | Mihai Serban 💻 | Jaya Krishna Namburu 💻 🐛 | Anamaria Oros 💻 |
ovidiuionut94 💻 | alexpausan 💻 | Mihai Sampaleanu 💻 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Reach out to us on any of these channels:
v0.6.0 (2019-04-09)
FAQs
Code generators and UIDL definition library
We found that @teleporthq/teleport-code-generators demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 4 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
React disclosed a CVSS 10.0 RCE in React Server Components and is advising users to upgrade affected packages and frameworks to patched versions now.

Research
/Security News
We spotted a wave of auto-generated “elf-*” npm packages published every two minutes from new accounts, with simple malware variants and early takedowns underway.

Security News
TypeScript 6.0 will be the last JavaScript-based major release, as the project shifts to the TypeScript 7 native toolchain with major build speedups.