@goldenratio/type-transform
v0.1.17
Published
Convert TypeScript types to Swift/Kotlin types
Downloads
14
Readme
@goldenratio/type-transform
Convert TypeScript types to Swift and Kotlin types
Install
npm i --save-dev @goldenratio/type-transform
https://www.npmjs.com/package/@goldenratio/type-transform
Usage
type-transform <SRC> --out <OUT>Arguments:
<SRC> Input file name
Options:
--out <OUT> The output file. Target language is inferred from file extension
--banner <BANNER> A banner to be added to the generated file, this can be a package path for "kotlin", a custom auto code generated message or a comment block such as a license for the code
--footer <FOOTER> A footer to be added to the generated file, this can be something like a comment block for a license or just a fun easter egg
-h, --help Print help
-V, --version Print versionExample:
type-transform hello-world.ts --out HelloWorld.swiftExample Usage of a Banner:
#!/usr/bin/env bash
set -e
DATE=$(date +%Y-%m-%dT%H:%M:%S%z)
type-transform ts-files/hello-world.ts --out gen/HelloWorld.kt --banner "// Hello World\n// This code was auto generated at ${DATE} \npackage com.github.goldenratio\n"
Supported Target Languages
- Swift (.swift)
- Kotlin (.kt)
Example
// hello-world.ts
export interface Contract {
readonly currency: Promise<Currency>;
getFoo(): Currency;
}
enum Currency {
USD = 10.2,
EUR = 42.5
}will be converted to,
// HelloWorld.swift
public protocol Contract {
var currency: Currency { get async throws }
func getFoo() -> Currency
}
enum Currency: Double, CaseIterable {
case USD = 10.2
case EUR = 42.5
}// HelloWorld.kt
package com.github.goldenratio
import kotlinx.coroutines.Deferred
interface Contract {
val currency: Deferred<Currency>
fun getFoo(): Currency
}
enum class Currency(val value: Double) {
USD(10.2)
EUR(42.5)
}Node API Usage
import { transform } from '@goldenratio/type-transform';
const { success } = await transform('./ts-files/hello-world.ts', './gen/HelloWorld.swift');
console.log(success);NPX Usage
npx @goldenratio/type-transform@latest ./ts-files/hello-world.ts --out ./gen/HelloWorld.swiftReleasing NPM Package(s)
Run
./build-dependencies.js- This will build OS specific npm packagesRun
./publish.sh- This will publish all OS specific binaries and main package to NPM.
