Skip to content

Commit

Permalink
chore: releases
Browse files Browse the repository at this point in the history
  • Loading branch information
Julien-R44 committed May 8, 2024
1 parent c26f1b2 commit ae172d6
Show file tree
Hide file tree
Showing 6 changed files with 186 additions and 93 deletions.
90 changes: 0 additions & 90 deletions .changeset/tasty-pots-worry.md

This file was deleted.

91 changes: 91 additions & 0 deletions packages/client/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,96 @@
# @tuyau/client

## 0.1.0

### Minor Changes

- e26f6b2: Lots of changes here. Tuyau now has a system that's a bit like [Ziggy](https://github.com/tighten/ziggy). Basically, we can use the names of our routes defined in AdonisJS, but in the frontend. Let's start by listing the breaking changes:

## Breaking Changes & Migration

- You will first need to download the latest versions of `@tuyau/utils` `@tuyau/core` and `@tuyau/client` for everything to work correctly.
- The codegen file has changed location. It is now located in `.adonisjs/api.ts`. You will therefore need to change the import path of your client to access this new file.
- To initialise the client, you will now need to do the following:

```ts
/// <reference path="../../adonisrc.ts" />

import { createTuyau } from "@tuyau/client";
import type { api } from "@your-monorepo/server/.adonisjs/api";

export const tuyau = createTuyau({
api,
baseUrl: "http://localhost:3333",
});
```

As you can see, you first need to change the import path and the imported value. Next, you need to pass this `api` object as an argument to the `createTuyau` function.

Remember to re-generate your `.adonisj/api.ts` file via `node ace tuyau:generate`, and you should be fine for the rest.

## Features

### Making Requests using the route name

If you want to use the names of the routes instead of paths, you can use the `$route` method :

```ts
// Backend
router
.get("/posts/:id/generate-invitation", "...")
.as("posts.generateInvitation");
// Client
await tuyau.$route("posts.generateInvitation", { id: 1 }).$get({
query: { limit: 10, page: 1 },
});
```

### Generating URL from route name

If you need to generate the URL of a route using the route name, you can use the `$url` method. This method is pretty similar to [Ziggy](https://github.com/tighten/ziggy) behavior :

```ts
tuyau.$url("users.posts", { id: 1, postId: 2 }); // http://localhost:3333/users/1/posts/2
tuyau.$url("venues.events.show", [1, 2]); // http://localhost:3333/venues/1/events/2
tuyau.$url("users", { query: { page: 1, limit: 10 } }); // http://localhost:3333/users?page=1&limit=10
```

If you are used to Ziggy and prefer to have a `route` method instead of `$url`, you can define a custom method in your client file pretty easily :

```ts
export const tuyau = createTuyau({
api,
baseUrl: "http://localhost:3333",
});
window.route = tuyau.$url.bind(tuyau);
```

Then you can use the `route` method in your frontend code :

```tsx
export function MyComponent() {
return (
<div>
<a href={route("users.posts", { id: 1, postId: 2 })}>Go to post</a>
</div>
);
}
```

### Check if a route exists

If you need to check if a route name exists, you can use the `$has` method. You can also use wildcards in the route name :

```ts
tuyau.$has("users"); // true
tuyau.$has("users.posts"); // true
tuyau.$has("users.*.comments"); // true
tuyau.$has("users.*"); // true
tuyau.$has("non-existent"); // false
```

## 0.0.9

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/client/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@tuyau/client",
"type": "module",
"version": "0.0.11",
"version": "0.1.0",
"description": "e2e client for AdonisJS",
"author": "Julien Ripouteau <[email protected]>",
"license": "ISC",
Expand Down
92 changes: 92 additions & 0 deletions packages/core/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
# @tuyau/core

## 0.1.0

### Minor Changes

- e26f6b2: Lots of changes here. Tuyau now has a system that's a bit like [Ziggy](https://github.com/tighten/ziggy). Basically, we can use the names of our routes defined in AdonisJS, but in the frontend. Let's start by listing the breaking changes:

## Breaking Changes & Migration

- You will first need to download the latest versions of `@tuyau/utils` `@tuyau/core` and `@tuyau/client` for everything to work correctly.
- The codegen file has changed location. It is now located in `.adonisjs/api.ts`. You will therefore need to change the import path of your client to access this new file.
- To initialise the client, you will now need to do the following:

```ts
/// <reference path="../../adonisrc.ts" />

import { createTuyau } from "@tuyau/client";
import type { api } from "@your-monorepo/server/.adonisjs/api";

export const tuyau = createTuyau({
api,
baseUrl: "http://localhost:3333",
});
```

As you can see, you first need to change the import path and the imported value. Next, you need to pass this `api` object as an argument to the `createTuyau` function.

Remember to re-generate your `.adonisj/api.ts` file via `node ace tuyau:generate`, and you should be fine for the rest.

## Features

### Making Requests using the route name

If you want to use the names of the routes instead of paths, you can use the `$route` method :

```ts
// Backend
router
.get("/posts/:id/generate-invitation", "...")
.as("posts.generateInvitation");
// Client
await tuyau.$route("posts.generateInvitation", { id: 1 }).$get({
query: { limit: 10, page: 1 },
});
```

### Generating URL from route name

If you need to generate the URL of a route using the route name, you can use the `$url` method. This method is pretty similar to [Ziggy](https://github.com/tighten/ziggy) behavior :

```ts
tuyau.$url("users.posts", { id: 1, postId: 2 }); // http://localhost:3333/users/1/posts/2
tuyau.$url("venues.events.show", [1, 2]); // http://localhost:3333/venues/1/events/2
tuyau.$url("users", { query: { page: 1, limit: 10 } }); // http://localhost:3333/users?page=1&limit=10
```

If you are used to Ziggy and prefer to have a `route` method instead of `$url`, you can define a custom method in your client file pretty easily :

```ts
export const tuyau = createTuyau({
api,
baseUrl: "http://localhost:3333",
});
window.route = tuyau.$url.bind(tuyau);
```

Then you can use the `route` method in your frontend code :

```tsx
export function MyComponent() {
return (
<div>
<a href={route("users.posts", { id: 1, postId: 2 })}>Go to post</a>
</div>
);
}
```

### Check if a route exists

If you need to check if a route name exists, you can use the `$has` method. You can also use wildcards in the route name :

```ts
tuyau.$has("users"); // true
tuyau.$has("users.posts"); // true
tuyau.$has("users.*.comments"); // true
tuyau.$has("users.*"); // true
tuyau.$has("non-existent"); // false
```
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@tuyau/core",
"type": "module",
"version": "0.0.6",
"version": "0.1.0",
"description": "",
"author": "",
"license": "MIT",
Expand Down
2 changes: 1 addition & 1 deletion packages/utils/package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "@tuyau/utils",
"type": "module",
"version": "0.0.3",
"version": "0.0.4",
"description": "Utilities for Tuyau",
"author": "Julien Ripouteau <[email protected]>",
"license": "ISC",
Expand Down

0 comments on commit ae172d6

Please sign in to comment.