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.yml
and output the transformed results totransformed_openapi/systems.yml
- Run the
openapi-generator-cli
and pass itconfigs/systems.json
with an output directory ofgen/systems
[There's lots of greate 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-typescript
npm install
npm run build-services
npm 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-typescript
docker 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.sh
script ./generate.sh pods