ZoneGFX, uma plataforma multi-mídia para apps nativos, utiliza a API do compilador TypeScript para implementar o scripting da plataforma.
A bagagem do TypeScript está escondida sob o nome de EZMAScript.
Status
Status
Não lançei a SDK para uso ainda. Falta:
- Dependências do Git/registro
- ESDoc
- Várias APIs do EZMAScript
- Language server
- Runtime ZoneGFX
- Processo de enpacotamento de app (como msi, apk, aab, deb, AppImage, Snap, e por aí vai)
- Alguns comandos da SDK
Implementei build scripts no geral, mas eles não rodam ainda devido a falta do runtime ZoneGFX.
Também tem a habilidade de build scripts copiar um .so/.dll nos artefatos de build e a habilidade de um manifesto ZoneGFX copiá-lo para o diretório do programa de build principal.
Começando
- Rode esse Bash:
zgfx new com.example.hello-world
- Edite
src/Main.es
- Adicione
src/enum/JointType.es
//
export type JointType =
| "a"
| "b";
- Agora, rode esse Bash:
cd com.example.hello-world
zgfx new --lib secondary
- Agora, edite
secondary/zonegfx.toml(apenas para mudar o ID do pacote)
[package]
id = "com.example.secondary"
version = "0.1.0"
authors = ["Sweax Izone <sweaxizone@gmail.com>"]
[compiler-options]
- Agora edite
secondary/src/__mod__.es:
//
export const A = 10;
- Agora edite o
zonegfx.tomldo pacotecom.example.hello-worldpara depender nocom.example.secondary.
cd .. # com.example.hello-world/
zonegfx.toml:
[workspace]
members = ["secondary"]
[package]
id = "com.example.hello-world"
version = "0.1.0"
authors = ["Sweax Izone <sweaxizone@gmail.com>"]
[dependencies]
"com.example.secondary" = { path = "secondary" }
[compiler-options]
main-component = "src/Main.es"
[application]
framerate = 60
background = "#fff"
- Agora, vamos verificar/checar a tipagem dos EZMAScript (isso é, instalar dependências e compilar declarações):
zgfx check
Resultado:
Árvore:
com.example.hello-world
├── secondary
│ ├── src
│ │ └── __mod__.es
│ └── zonegfx.toml
├── src
│ ├── enum
│ │ └── JointType.es
│ └── Main.es
├── target
│ │ # artefatos de build. aqui também teria .js,
│ │ # mas são emitidos em outros comandos apenas.
│ │ # o .es que se vê em target/ são .d.ts (similares aos
│ │ # module headers do C++20 auto-gerados)
│ └── pkg
│ └── dist
│ └── local
│ ├── com.example.hello-world
│ │ ├── last-build.conf
│ │ └── src
│ │ ├── enum
│ │ │ └── JointType.es
│ │ └── Main.es
│ ├── com.example.secondary
│ │ ├── last-build.conf
│ │ └── src
│ │ └── __mod__.es
│ └── mocha
│ └── src
│ └── __mod__.es
├── zonegfx.lock
└── zonegfx.toml