diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..374594c --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,76 @@ +name: CI + +on: + push: + branches: [main] + pull_request: + branches: [main] + +jobs: + test: + if: "!contains(github.event.head_commit.message, 'skip-ci')" + + strategy: + matrix: + os: [ubuntu-latest] + node-version: [18.x, 20.x, 22.x] + + runs-on: ${{ matrix.os }} + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + - uses: actions/checkout@v3 + + - uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + + - name: Cache ~/.pnpm-store + uses: actions/cache@v2 + env: + cache-name: cache-pnpm-store + with: + path: ~/.pnpm-store + key: ${{ runner.os }}-${{ matrix.node-version }}-test-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.node-version }}-test-${{ env.cache-name }}- + ${{ runner.os }}-${{ matrix.node-version }}-test- + ${{ runner.os }}- + + - name: Install pnpm + run: npm i -g pnpm + + - name: Install deps + run: pnpm i + + # Runs a set of commands using the runners shell + - name: Build and Test + run: pnpm test + + release: + runs-on: ubuntu-latest + needs: ["test"] + if: "!contains(github.event.head_commit.message, 'skip-release') && !contains(github.event.head_commit.message, 'skip-ci') && github.event_name != 'pull_request'" + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + with: + node-version: 18.x + - name: Cache ~/.pnpm-store + uses: actions/cache@v2 + env: + cache-name: cache-pnpm-store + with: + path: ~/.pnpm-store + key: ${{ runner.os }}-${{ matrix.node-version }}-release-${{ env.cache-name }}-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-${{ matrix.node-version }}-release-${{ env.cache-name }}- + ${{ runner.os }}-${{ matrix.node-version }}-release- + ${{ runner.os }}- + - run: npm i -g pnpm + - run: pnpm i + - run: pnpm dlx semantic-release@20 --branches main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 61886a2..0000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,49 +0,0 @@ -name: Execute Tests - -on: - push: - branches: ["main"] - pull_request: - branches: ["main"] - -jobs: - test: - runs-on: ubuntu-latest - - strategy: - matrix: - node-version: [18.x, 20.x, 22.x] - - steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Install Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node-version }} - - - uses: pnpm/action-setup@v2 - name: Install pnpm - with: - version: 8 - run_install: false - - - name: Get pnpm store directory - shell: bash - run: | - echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - - - uses: actions/cache@v3 - name: Setup pnpm cache - with: - path: ${{ env.STORE_PATH }} - key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} - restore-keys: | - ${{ runner.os }}-pnpm-store- - - - name: Install dependencies - run: pnpm install - - - run: pnpm build - - run: pnpm test diff --git a/README.md b/README.md index eb1518d..e3a9396 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,34 @@ -### Cosmo-TS +# @teamreflex/cosmo-ts -TypeScript package for interfacing with the Cosmo API. +[![npm version](https://badgen.net/npm/v/@teamreflex/cosmo-ts)](https://npm.im/@teamreflex/cosmo-ts) [![npm downloads](https://badgen.net/npm/dm/@teamreflex/cosmo-ts)](https://npm.im/@teamreflex/cosmo-ts) + +Unofficial TypeScript package for interfacing with [MODHAUS](https://www.mod-haus.com/)' **[Cosmo: the Gate](https://play.google.com/store/apps/details?id=com.modhaus.cosmo)** mobile application API. + +## Install + +```bash +npm install @teamreflex/cosmo-ts +pnpm install @teamreflex/cosmo-ts +bun install @teamreflex/cosmo-ts +``` + +## Usage + +```ts +import { createClient } from "@teamreflex/cosmo-ts"; + +const client = createClient({ + accessToken: "your-access-token", +}); + +const artist = await client.artists.get("ARTMS"); +console.log(artist.members.length); // 5 +``` + +## Note + +Many endpoints are not implemented yet and many endpoints require authentication. Tokens can be obtained by intercepting app traffic or by accessing Ramper endpoints. + +## License + +MIT © [Reflex](https://github.com/teamreflex) diff --git a/package.json b/package.json index 2bd37d6..e190635 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { - "name": "cosmo-ts", - "version": "1.0.0", - "description": "TypeScript library for interfacing with the Cosmo app API.", + "name": "@teamreflex/cosmo-ts", + "version": "0.0.1", + "description": "Unofficial TypeScript library for interfacing with the COSMO app API.", "scripts": { "dev": "tsup --watch --clean=false", "build": "tsup", @@ -48,6 +48,9 @@ } } }, + "publishConfig": { + "access": "public" + }, "files": [ "dist", "README.md"