This project creates autogenerated TypeScript types and fetch bindings for TAPIS v3 from its OpenAPI specifications.
The @tapis/tapis-typescript roll up package.
An example project that uses @tapis/tapis-typescript from npm.
OpenAPI yml files from https://tapis-project.github.io/live-docs/
Output directory of tapis-typescript npm package
Transformation scripts
utils.js: Utility functions for working with yml files
Transformation script output files
Generation script that accepts the name of the service as a parameter and runs the entire workflow. All files must match the service name. For example, running ./generate.sh systems will:
- Run
transforms/systems.js, which should readtapis_openapi/systems.ymland output the transformed results totransformed_openapi/systems.yml - Run the
openapi-generator-cliand pass itconfigs/systems.jsonwith an output directory ofgen/systems
[There's lots of great information in the wiki how to create services and various transformations of the data.]https://github.com/tapis-project/tapis-typescript/wiki/Publishing-New-Services-to-@tapis-tapis-typescript
The @tapis/typescript top level package locally references all of the services in the ./gen folder. These services must be built, and then the top level package can be built. To do so, do the following:
cd tapis-typescriptnpm installnpm run build-servicesnpm run build
Then you can run npm run test
This library contains some dependencies which makes configuring your environment somewhat complicated. To alleviate this, there is a provided Docker environment to work in.
cd <your_path>/tapis-typescriptdocker build -t tapis-typescript-environment .docker run -it -v $(pwd):/src --entrypoint=bash tapis-typescript-environment(also seen inrun.sh)- You might need to leave out the volume mount to run npm install due to user permissions.
- This should mount your host's repo folder to the container's
/src. Meaning all changes in the container should persists on your host. - Now you should be able to run npm commands and
./generate.shscript ./generate.sh pods