{"_id":"@amplication/java-ast","_rev":"5-e215ec21534a08cefb794d34f6663154","name":"@amplication/java-ast","dist-tags":{"latest":"0.0.2","beta":"0.0.1-beta.3"},"versions":{"0.0.1":{"name":"@amplication/java-ast","version":"0.0.1","_id":"@amplication/java-ast@0.0.1","maintainers":[{"name":"mulygottlieb","email":"muly@amplication.com"},{"name":"amplication-bot","email":"engineering@amplication.com"},{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},{"name":"morhag","email":"mor@amplication.com"},{"name":"levivannoort","email":"vanNoort.levi@protonmail.com"}],"dist":{"shasum":"55d6bfff934399df818eb1c5146f8b6ef9060b34","tarball":"https://registry.npmjs.org/@amplication/java-ast/-/java-ast-0.0.1.tgz","fileCount":59,"integrity":"sha512-wLB/CiGu3E8EQIfDfXg6PpUrqcndnFkCtlDrNWfWHyT4lfRowGsTFh5KSRzEKBW93tMebZDhit+ohVAJd5Ihdw==","signatures":[{"sig":"MEUCIQCvPKAp2gOhnTVyuYU8S4ulKWmKM5+erd83RtWqwmHxDAIgDUZdAbJL+BQXQLk4GTn0nDiJHmN4NEa9AluGe8BIH7g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117250},"main":"./src/index.js","type":"commonjs","gitHead":"ffef543e9eed7d0fd8a9cf2c004515c4c93ef553","typings":"./src/index.d.ts","_npmUser":{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},"_npmVersion":"9.6.7","description":"A library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.","directories":{},"_nodeVersion":"18.17.0","dependencies":{"tslib":"^2.3.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/java-ast_0.0.1_1742459060601_0.5465663711081281","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.1":{"name":"@amplication/java-ast","version":"0.0.1-beta.1","_id":"@amplication/java-ast@0.0.1-beta.1","maintainers":[{"name":"mulygottlieb","email":"muly@amplication.com"},{"name":"amplication-bot","email":"engineering@amplication.com"},{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},{"name":"morhag","email":"mor@amplication.com"},{"name":"levivannoort","email":"vanNoort.levi@protonmail.com"}],"dist":{"shasum":"67a978d031287e5c98608d02f2f87b6e8a49bcaf","tarball":"https://registry.npmjs.org/@amplication/java-ast/-/java-ast-0.0.1-beta.1.tgz","fileCount":59,"integrity":"sha512-m9dTpArrTWkmFKCjr16GVAFF7QteCPQfWpme3u/Qn3EIMlXA+gvawx3Bge5yFciEzIOQgNuWYxgoFsy5Ghsuzg==","signatures":[{"sig":"MEUCIHYN54MlDtv8K6jtpl3NMFuC2EZPh6TVJVCZLkSVqJRfAiEAmtASjgeaMYDsxmhfDIYIcoxeF6EbqnANA2YpmUKAu/Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116911},"main":"./src/index.js","type":"commonjs","gitHead":"1b3512b23785cd0c29878eebcd12bda3a9726e92","typings":"./src/index.d.ts","_npmUser":{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},"_npmVersion":"9.6.7","description":"A library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.","directories":{},"_nodeVersion":"18.17.0","dependencies":{"tslib":"^2.3.0","@amplication/ast-types":"*"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/java-ast_0.0.1-beta.1_1742464386603_0.6248700752649781","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.2":{"name":"@amplication/java-ast","version":"0.0.1-beta.2","_id":"@amplication/java-ast@0.0.1-beta.2","maintainers":[{"name":"mulygottlieb","email":"muly@amplication.com"},{"name":"amplication-bot","email":"engineering@amplication.com"},{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},{"name":"morhag","email":"mor@amplication.com"},{"name":"levivannoort","email":"vanNoort.levi@protonmail.com"}],"dist":{"shasum":"b5d7f1f6f6efdba63736adc09d743673917e7fb9","tarball":"https://registry.npmjs.org/@amplication/java-ast/-/java-ast-0.0.1-beta.2.tgz","fileCount":59,"integrity":"sha512-T1W8lL7MkJH4inv5ZgIWGVdLQSXLrXxx4gV9Cs2+ZfxveGh0+zyzsBa2SbcPp91nOLPyiTprd/cu+hTtQlalJA==","signatures":[{"sig":"MEYCIQDiJ9rKV5yb3FqW1LeHPO1KhhkTZoNF0sRqIYOHbdpowAIhALKTA09iJ//JNIIOq331egpIiBSLmKPjZ5WOdjnrr3zi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116915},"main":"./src/index.js","type":"commonjs","gitHead":"1b3512b23785cd0c29878eebcd12bda3a9726e92","typings":"./src/index.d.ts","_npmUser":{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},"_npmVersion":"9.6.7","description":"A library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.","directories":{},"_nodeVersion":"18.17.0","dependencies":{"tslib":"^2.3.0","@amplication/ast-types":"0.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/java-ast_0.0.1-beta.2_1742464718694_0.16282112036230267","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta.3":{"name":"@amplication/java-ast","version":"0.0.1-beta.3","_id":"@amplication/java-ast@0.0.1-beta.3","maintainers":[{"name":"mulygottlieb","email":"muly@amplication.com"},{"name":"amplication-bot","email":"engineering@amplication.com"},{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},{"name":"morhag","email":"mor@amplication.com"},{"name":"levivannoort","email":"vanNoort.levi@protonmail.com"}],"dist":{"shasum":"9b89ab7216475c036e9e654a1a920437a1745489","tarball":"https://registry.npmjs.org/@amplication/java-ast/-/java-ast-0.0.1-beta.3.tgz","fileCount":59,"integrity":"sha512-2id45NzAi7pBn0tpuNYEOcNbCr0vrbvwKE7Xk7uOXwgsCThJW6b9Ws/3y8kiSvpWLjq7/YbxH4srKRZ+fJRK0Q==","signatures":[{"sig":"MEUCIQDBSZ8pfRULGEodIuQwtaeBV7y5amuz191lg+RHOZQAmQIgER8Nml6/YQN7XHcRtKQuQciVfHyB2F8Kqp3TlV5Z2jA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":117308},"main":"./src/index.js","type":"commonjs","gitHead":"1b3512b23785cd0c29878eebcd12bda3a9726e92","typings":"./src/index.d.ts","_npmUser":{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},"_npmVersion":"9.6.7","description":"A library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.","directories":{},"_nodeVersion":"18.17.0","dependencies":{"tslib":"^2.3.0","@amplication/ast-types":"0.0.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","_npmOperationalInternal":{"tmp":"tmp/java-ast_0.0.1-beta.3_1742470545308_0.10961153720328842","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@amplication/java-ast","version":"0.0.2","dependencies":{"tslib":"^2.3.0","@amplication/ast-types":"0.0.2"},"type":"commonjs","main":"./src/index.js","typings":"./src/index.d.ts","gitHead":"1b3512b23785cd0c29878eebcd12bda3a9726e92","description":"A library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.","_id":"@amplication/java-ast@0.0.2","_nodeVersion":"18.17.0","_npmVersion":"9.6.7","dist":{"integrity":"sha512-gpMfC1CHVn2dwzIHvbABSDLALVFqgKPa56o/ui9z7SIM8GPVKPnT2Gkd5ja9V3lmQCnM9bekw11bPZUVFLb+yg==","shasum":"1f4008db6d453b14601218b53c639003366802e8","tarball":"https://registry.npmjs.org/@amplication/java-ast/-/java-ast-0.0.2.tgz","fileCount":59,"unpackedSize":117579,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDrhkL3OxRRVFs24fXT3V1ZFfj9QCSQmORnopspn4nRHQIhALFew3NQV7J/+i1ScdM4aKCykPT5tjGTY1R1iTSCHXnt"}]},"_npmUser":{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},"directories":{},"maintainers":[{"name":"mulygottlieb","email":"muly@amplication.com"},{"name":"amplication-bot","email":"engineering@amplication.com"},{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},{"name":"morhag","email":"mor@amplication.com"},{"name":"levivannoort","email":"vanNoort.levi@protonmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/java-ast_0.0.2_1742471177558_0.5510164449130677"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-20T08:24:20.488Z","modified":"2025-03-20T11:46:17.914Z","0.0.1":"2025-03-20T08:24:20.773Z","0.0.1-beta.1":"2025-03-20T09:53:06.807Z","0.0.1-beta.2":"2025-03-20T09:58:38.906Z","0.0.1-beta.3":"2025-03-20T11:35:45.564Z","0.0.2":"2025-03-20T11:46:17.713Z"},"description":"A library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.","maintainers":[{"name":"mulygottlieb","email":"muly@amplication.com"},{"name":"amplication-bot","email":"engineering@amplication.com"},{"name":"yuvalhazaz","email":"hazaz.yuval@gmail.com"},{"name":"morhag","email":"mor@amplication.com"},{"name":"levivannoort","email":"vanNoort.levi@protonmail.com"}],"readme":"# @amplication/java-ast\n\nA library for generating Java code through an abstract syntax tree (AST) approach. This library allows you to programmatically generate Java code in a type-safe manner.\n\n## Installation\n\n```sh\nnpm install @amplication/java-ast\n```\n\n## Building\n\nRun `nx build java-ast` to build the library.\n\n## Running unit tests\n\nRun `nx test java-ast` to execute the unit tests via [Jest](https://jestjs.io).\n\n\n## Publish to npm\n\nIn order to publish to npm `@amplication/java-ast` :\n\n1. Make sure to update the version in the package.json. \n2. Run the following:\n\n\n```sh\n# From the monorepo root folder\nnpm i\n\nnpx nx build java-ast\n\ncd ./dist/libs/java-ast\n\n```\n\nTo publish the package as \"beta\" run:\n\n```\nnpm publish --access public --tag beta\n```\n\nTo publish the package as \"latest\" run:\n\n```sh\n\nnpm publish --access public\n    \n```\n\n\n## Features\n\n- Type-safe Java code generation\n- Support for all core Java constructs (classes, interfaces, enums, methods, fields, etc.)\n- Automatic import management\n- JavaDoc generation\n- Proper code formatting\n\n## Basic Usage\n\n```typescript\nimport {\n  Class,\n  Field,\n  Method,\n  Parameter,\n  Type,\n  Access,\n  Annotation,\n  ClassReference,\n  CodeBlock,\n  Writer\n} from '@amplication/java-ast';\n\n// Create a class\nconst userClass = new Class({\n  name: 'User',\n  packageName: 'com.example.model',\n  access: Access.Public,\n  annotations: [\n    new Annotation({\n      reference: new ClassReference({\n        name: 'Entity',\n        packageName: 'javax.persistence'\n      })\n    })\n  ]\n});\n\n// Add fields\nuserClass.addField(new Field({\n  name: 'id',\n  type: Type.long(),\n  access: Access.Private,\n  annotations: [\n    new Annotation({\n      reference: new ClassReference({\n        name: 'Id',\n        packageName: 'javax.persistence'\n      })\n    }),\n    new Annotation({\n      reference: new ClassReference({\n        name: 'GeneratedValue',\n        packageName: 'javax.persistence'\n      }),\n      namedArguments: new Map([\n        ['strategy', 'GenerationType.IDENTITY']\n      ])\n    })\n  ]\n}));\n\nuserClass.addField(new Field({\n  name: 'username',\n  type: Type.string(),\n  access: Access.Private,\n  javadoc: 'The username of the user.'\n}));\n\n// Add a constructor\nuserClass.addConstructor({\n  access: Access.Public,\n  parameters: [\n    new Parameter({\n      name: 'username',\n      type: Type.string()\n    })\n  ],\n  body: new CodeBlock({\n    code: 'this.username = username;'\n  })\n});\n\n// Add a method\nuserClass.addMethod(new Method({\n  name: 'getUsername',\n  access: Access.Public,\n  parameters: [],\n  returnType: Type.string(),\n  body: new CodeBlock({\n    code: 'return username;'\n  })\n}));\n\n// Generate Java code\nconst writer = new Writer({ packageName: 'com.example.model' });\nuserClass.write(writer);\nconst javaCode = writer.toString();\n\nconsole.log(javaCode);\n```\n\nThe output will be:\n\n```java\npackage com.example.model;\n\nimport javax.persistence.Entity;\nimport javax.persistence.GeneratedValue;\nimport javax.persistence.Id;\n\n@Entity\npublic class User {\n\n    @Id\n    @GeneratedValue(strategy = GenerationType.IDENTITY)\n    private long id;\n\n    /**\n     * The username of the user.\n     */\n    private String username;\n\n    public User(String username) {\n        this.username = username;\n    }\n\n    public String getUsername() {\n        return username;\n    }\n}\n```\n\n## Advanced Usage\n\n### Creating Interfaces\n\n```typescript\nimport { Interface, Method, Type, Access } from '@amplication/java-ast';\n\nconst repository = new Interface({\n  name: 'UserRepository',\n  packageName: 'com.example.repository',\n  access: Access.Public,\n  extends_: [\n    new ClassReference({\n      name: 'JpaRepository',\n      packageName: 'org.springframework.data.jpa.repository'\n    })\n  ]\n});\n\n// Add methods to the interface\nrepository.addMethod(new Method({\n  name: 'findByUsername',\n  access: Access.Public,\n  parameters: [\n    new Parameter({\n      name: 'username',\n      type: Type.string()\n    })\n  ],\n  returnType: Type.optional(Type.reference(\n    new ClassReference({ name: 'User', packageName: 'com.example.model' })\n  ))\n}));\n```\n\n### Creating Enums\n\n```typescript\nimport { Enum, Access } from '@amplication/java-ast';\n\nconst roleEnum = new Enum({\n  name: 'Role',\n  packageName: 'com.example.model',\n  access: Access.Public,\n  javadoc: 'User roles in the system.'\n});\n\n// Add enum values\nroleEnum.addValue({ name: 'ADMIN' });\nroleEnum.addValue({ name: 'USER' });\nroleEnum.addValue({ name: 'GUEST' });\n```\n\n## License\n\nMIT ","readmeFilename":"README.md"}