Skip to content

Commit

Permalink
Merge pull request #3 from V1RE/feature/publish
Browse files Browse the repository at this point in the history
  • Loading branch information
V1RE authored Feb 22, 2023
2 parents 3197af6 + e68aca5 commit c87bdf8
Show file tree
Hide file tree
Showing 7 changed files with 1,865 additions and 5 deletions.
8 changes: 8 additions & 0 deletions .changeset/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Changesets

Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
with multi-package repos, or single-package repos to help you version and publish your code. You can
find the full documentation for it [in our repository](https://github.com/changesets/changesets)

We have a quick list of common questions to get you started engaging with this project in
[our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
11 changes: 11 additions & 0 deletions .changeset/config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json",
"changelog": "@changesets/cli/changelog",
"commit": false,
"fixed": [],
"linked": [],
"access": "restricted",
"baseBranch": "main",
"updateInternalDependencies": "patch",
"ignore": []
}
121 changes: 121 additions & 0 deletions .changeset/gorgeous-experts-glow.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
---
"propr": major
---

# Initial release

## Installation

To install the package, run:

```sh
pnpm install propr
```

## Usage

To use propr, import the createPreprClient function from the package and call it with the options for your Prepr account:

```typescript
import { createPreprClient } from "propr";

const client = createPreprClient({
token: "your_token_here",
});
```

Once you have created the client, you can use it to fetch data from Prepr:

```typescript
const articles = await client.fetch("/articles");
```

You can also chain various methods to the client to specify additional options:

```typescript
const articles = await client.sort("publishedAt").limit(10).fetch("/articles");
```

The client also supports GraphQL queries:

```typescript
const query = `query ($slug: String!) {
article(slug: $slug) {
id
title
publishedAt
}
}`;

const variables = { slug: "your-article-slug" };

const article = await client
.graphqlQuery(query)
.graphqlVariables(variables)
.fetch();
```

## API

### `createPreprClient(options: PreprClientOptions) => PreprClient`

Creates a new instance of the Prepr client.

#### Options

- token (required): The access token for your Prepr account.
- baseUrl: The base URL for the Prepr API (default: https://cdn.prepr.io).
- timeout: The timeout for API requests, in milliseconds (default: 4000).
- userId: The user ID for A/B testing.

### `PreprClient`

The Prepr client class.

#### Methods

##### `userId(userId: string | number): PreprClient`

Sets the user ID for A/B testing.

##### `timeout(milliseconds: number): PreprClient`

Sets the timeout for API requests, in milliseconds.

##### `sort(field: string): PreprClient`

Sets the field to sort the results by.

##### `limit(limit: number): PreprClient`

Sets the maximum number of results to return.

##### `skip(skip: number): PreprClient`

Sets the number of results to skip.

##### `path(path: string): PreprClient`

Sets the path for the API request.

##### `token(token: string): PreprClient`

Sets the access token for the Prepr account.

##### `graphqlQuery(graphqlQuery: string): PreprClient`

Sets the GraphQL query for the API request.

##### `graphqlVariables(graphqlVariables: object): PreprClient`

Sets the variables for the GraphQL query.

##### `fetch<T = any>(request?: RequestInfo, options?: FetchOptions<"json">): Promise<T>`

Fetches data from the Prepr API.

#### Properties

##### `query: URLSearchParams`

The URL search parameters for the API request.
30 changes: 30 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: Publish
on:
push:
branches:
- "main"

concurrency: ${{ github.workflow }}-${{ github.ref }}

jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 7
- uses: actions/setup-node@v3
with:
node-version: 16.x
cache: "pnpm"

- run: pnpm install --frozen-lockfile
- name: Create Release Pull Request or Publish
id: changesets
uses: changesets/action@v1
with:
publish: pnpm run release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
119 changes: 118 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,119 @@
# propr
A proper way to interface with prepr.io

A proper way to interface with the Prepr API. This package provides an easy-to-use interface for fetching data from Prepr and supports GraphQL queries.

## Installation

To install the package, run:

```sh
pnpm install propr
```

## Usage

To use propr, import the createPreprClient function from the package and call it with the options for your Prepr account:

```typescript
import { createPreprClient } from "propr";

const client = createPreprClient({
token: "your_token_here",
});
```

Once you have created the client, you can use it to fetch data from Prepr:

```typescript
const articles = await client.fetch("/articles");
```

You can also chain various methods to the client to specify additional options:

```typescript
const articles = await client.sort("publishedAt").limit(10).fetch("/articles");
```

The client also supports GraphQL queries:

```typescript
const query = `query ($slug: String!) {
article(slug: $slug) {
id
title
publishedAt
}
}`;

const variables = { slug: "your-article-slug" };

const article = await client
.graphqlQuery(query)
.graphqlVariables(variables)
.fetch();
```

## API

### `createPreprClient(options: PreprClientOptions) => PreprClient`

Creates a new instance of the Prepr client.

#### Options

- token (required): The access token for your Prepr account.
- baseUrl: The base URL for the Prepr API (default: https://cdn.prepr.io).
- timeout: The timeout for API requests, in milliseconds (default: 4000).
- userId: The user ID for A/B testing.

### `PreprClient`

The Prepr client class.

#### Methods

##### `userId(userId: string | number): PreprClient`

Sets the user ID for A/B testing.

##### `timeout(milliseconds: number): PreprClient`

Sets the timeout for API requests, in milliseconds.

##### `sort(field: string): PreprClient`

Sets the field to sort the results by.

##### `limit(limit: number): PreprClient`

Sets the maximum number of results to return.

##### `skip(skip: number): PreprClient`

Sets the number of results to skip.

##### `path(path: string): PreprClient`

Sets the path for the API request.

##### `token(token: string): PreprClient`

Sets the access token for the Prepr account.

##### `graphqlQuery(graphqlQuery: string): PreprClient`

Sets the GraphQL query for the API request.

##### `graphqlVariables(graphqlVariables: object): PreprClient`

Sets the variables for the GraphQL query.

##### `fetch<T = any>(request?: RequestInfo, options?: FetchOptions<"json">): Promise<T>`

Fetches data from the Prepr API.

#### Properties

##### `query: URLSearchParams`

The URL search parameters for the API request.
4 changes: 3 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,11 @@
"scripts": {
"build": "tsup src/index.ts --format cjs,esm --dts",
"lint": "tsc",
"ci": "pnpm run lint && pnpm run build"
"ci": "pnpm run lint && pnpm run build",
"release": "pnpm run lint && pnpm run build && changeset publish"
},
"devDependencies": {
"@changesets/cli": "^2.26.0",
"tsup": "^6.6.3",
"typescript": "^4.9.5"
},
Expand Down
Loading

0 comments on commit c87bdf8

Please sign in to comment.