jsii-rosetta

5.9.39 · active · verified Tue Apr 21

The `jsii-rosetta` library, currently at version 5.9.39, is an essential tool within the `jsii` ecosystem, developed by AWS. Its core purpose is to translate code snippets written in one `jsii`-supported language (primarily TypeScript) into other target languages such as Python, Java, C#, and Go. This functionality is crucial for projects like the AWS Cloud Development Kit (CDK), enabling documentation to display examples across various programming languages from a single source. `jsii-rosetta` maintains a rapid and continuous release cadence, frequently updating its internal `jsii` and TypeScript dependencies to ensure compatibility and leverage the latest `jsii` features. Its key differentiator is its specialized focus on `jsii`-compliant code translation, providing robust tools for syntax analysis, type resolution, and idiomatic translation across multiple language runtimes.

Common errors

Warnings

Install

Imports

Quickstart

This example demonstrates how to initialize the `Rosetta` translator and translate a TypeScript AWS CDK code snippet into Python and Java, handling potential translation failures.

import { Rosetta, TargetLanguage } from 'jsii-rosetta';

async function translateCode() {
  const rosetta = new Rosetta();
  const tsSnippet = `
    import * as cdk from 'aws-cdk-lib';
    import * as ec2 from 'aws-cdk-lib/aws-ec2';

    const app = new cdk.App();
    const stack = new cdk.Stack(app, 'MyStack');

    new ec2.Vpc(stack, 'MyVpc', {
      maxAzs: 2,
      natGateways: 1,
    });

    app.synth();
  `;

  // Translate to Python
  const pythonTranslation = await rosetta.translateTypeScript(tsSnippet, {
    language: TargetLanguage.PYTHON,
    trimLeadingEmptyLines: true,
    indentation: 4,
  });

  if (pythonTranslation.translation) {
    console.log('Python Code:\n', pythonTranslation.translation.source);
  } else if (pythonTranslation.didFail) {
    console.error('Python translation failed:', pythonTranslation.failure);
  }

  // Translate to Java
  const javaTranslation = await rosetta.translateTypeScript(tsSnippet, {
    language: TargetLanguage.JAVA,
    trimLeadingEmptyLines: true,
    indentation: 4,
  });

  if (javaTranslation.translation) {
    console.log('\nJava Code:\n', javaTranslation.translation.source);
  } else if (javaTranslation.didFail) {
    console.error('Java translation failed:', javaTranslation.failure);
  }
}

translateCode().catch(console.error);

view raw JSON →