Skip to content

Commit 1daa376

Browse files
committed
release: v0.19.1
Improve error handling with Hono HttpException in adapters.
1 parent 2dcf901 commit 1daa376

File tree

16 files changed

+127
-50
lines changed

16 files changed

+127
-50
lines changed

.github/workflows/publish.yml

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@ on:
66
tags:
77
- "*"
88

9+
permissions:
10+
contents: write
11+
912
jobs:
1013
publish-all:
1114
name: Publish all packages
@@ -24,19 +27,29 @@ jobs:
2427
cache: "yarn"
2528

2629
- name: Setup Turbo
30+
id: setup
2731
run: |
28-
npx -y turbo prune \
29-
@storybooker/core \
30-
@storybooker/aws \
31-
@storybooker/azure \
32-
@storybooker/gcp \
33-
@storybooker/ui \
34-
@storybooker/redis \
35-
storybooker
32+
pkgNames=()
33+
pkgDirs=($(ls -d ./packages/*/))
34+
for i in "${pkgDirs[@]}"; do
35+
dirname=$(basename "$i")
36+
if [ "$dirname" == "cli" ]; then
37+
continue
38+
else
39+
pkgNames+=("@storybooker/$dirname")
40+
fi
41+
done
42+
43+
npx -y turbo prune storybooker ${pkgNames[@]}
3644
cp tsconfig.base.json out/tsconfig.base.json
3745
cp .oxlintrc.json out/.oxlintrc.json
3846
cp -R scripts out/scripts
3947
48+
GIT_TAG_MESSAGE=$(git tag -l --format='%(contents)' "${GITHUB_REF_NAME}")
49+
echo "GIT_TAG_MESSAGE=$GIT_TAG_MESSAGE" >> $GITHUB_OUTPUT
50+
env:
51+
GITHUB_REF_NAME: ${{ github.ref_name }}
52+
4053
- name: Install dependencies
4154
working-directory: ./out
4255
run: yarn install --immutable
@@ -57,3 +70,11 @@ jobs:
5770
run: yarn publish:npm
5871
env:
5972
NPM_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
73+
74+
- name: Create GitHub Release
75+
if: github.ref_type == 'tag'
76+
uses: softprops/action-gh-release@v2
77+
with:
78+
body: ${{ steps.setup.outputs.GIT_TAG_MESSAGE }}
79+
env:
80+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
},
3333
"devDependencies": {
3434
"@ianvs/prettier-plugin-sort-imports": "^4.4.1",
35+
"@octokit/request": "^10.0.7",
3536
"prettier": "^3.6.2",
3637
"turbo": "^2.5.6"
3738
},

packages/aws/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybooker/aws",
3-
"version": "0.19.0",
3+
"version": "0.19.1",
44
"type": "module",
55
"description": "StoryBooker Adapter for interacting with AWS services.",
66
"author": {

packages/azure/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybooker/azure",
3-
"version": "0.19.0",
3+
"version": "0.19.1",
44
"type": "module",
55
"description": "StoryBooker Adapter for interacting with Azure services.",
66
"author": {

packages/cli/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "storybooker",
3-
"version": "0.19.0",
3+
"version": "0.19.1",
44
"type": "module",
55
"bin": "./dist/index.js",
66
"description": "Storybooker CLI for uploading builds and files.",

packages/core/deno.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://raw.githubusercontent.com/denoland/deno/main/cli/schemas/config-file.v1.json",
33
"name": "@storybooker/core",
4-
"version": "0.19.0",
4+
"version": "0.19.1",
55
"license": "MIT",
66
"publish": {
77
"include": [

packages/core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@storybooker/core",
3-
"version": "0.19.0",
3+
"version": "0.19.1",
44
"type": "module",
55
"description": "Storybooker platform agnostic router core.",
66
"author": {

packages/core/src/types.ts

Lines changed: 5 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,24 @@ import type {
77
StoryBookerUser,
88
UIAdapter,
99
} from "./adapters";
10+
import type { ErrorParser } from "./utils/error";
1011

1112
export type { StoryBookerUser } from "./adapters/auth";
1213
export type * from "./models/builds-schema";
1314
export type * from "./models/projects-schema";
1415
export type * from "./models/tags-schema";
16+
export type { ErrorParser, ParsedError } from "./utils/error";
1517

1618
/**
17-
* Options for creating a request handler.
19+
* Options for creating a router.
1820
*/
1921
export interface RouterOptions<User extends StoryBookerUser> {
2022
/** Adapter for Auth service. Provides authentication to the service. */
2123
auth?: AuthAdapter<User>;
2224
/** Adapter for Database service. Provides access to storing data to the service. */
2325
database: DatabaseAdapter;
2426
/** Additional options to configure the router. */
25-
config?: RequestHandlerConfigOptions;
27+
config?: RouterConfig;
2628
/** Adapter for Logging service. Provides option to direct the logging of the service. */
2729
logger?: LoggerAdapter;
2830
/** Adapter for Storage service. Provides access to storing files to the service. */
@@ -49,7 +51,7 @@ export interface PurgeHandlerOptions {
4951
}
5052

5153
/** Additional options to configure the router. */
52-
export interface RequestHandlerConfigOptions {
54+
export interface RouterConfig {
5355
/**
5456
* A function for parsing custom errors.
5557
* Return `undefined` from parser if the service should handle the error.
@@ -75,28 +77,3 @@ export interface RequestHandlerConfigOptions {
7577
*/
7678
middlewares?: MiddlewareHandler[];
7779
}
78-
79-
/** Function generated to handle the incoming requests. */
80-
export type RequestHandler = (
81-
request: Request,
82-
overrideOptions?: RequestHandlerOverrideOptions,
83-
) => Promise<Response>;
84-
85-
/** Options to override properties of the request handler. */
86-
export interface RequestHandlerOverrideOptions {
87-
/** A abort signal that can be used to cancel the request handling. */
88-
abortSignal?: AbortSignal;
89-
/** Adapter for Logging service. Provides option to direct the logging of the service. */
90-
logger?: LoggerAdapter;
91-
}
92-
93-
/**
94-
* A function type for parsing custom errors.
95-
* Return `undefined` from parser if the service should handle the error.
96-
*/
97-
export type ErrorParser = (error: unknown) => ParsedError | undefined;
98-
export interface ParsedError {
99-
errorMessage: string;
100-
errorStatus?: number;
101-
errorType: string;
102-
}

packages/core/src/utils/error.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,20 @@ import type { ErrorHandler, MiddlewareHandler } from "hono";
22
import { HTTPException } from "hono/http-exception";
33
import { z } from "zod";
44
import type { LoggerAdapter } from "../adapters";
5-
import type { ErrorParser, ParsedError } from "../types";
65
import { getStoreOrNull } from "../utils/store";
76

7+
/**
8+
* A function type for parsing custom errors.
9+
* Return `undefined` from parser if the service should handle the error.
10+
*/
11+
export type ErrorParser = (error: unknown) => ParsedError | undefined;
12+
/** Parsed error information. */
13+
export interface ParsedError {
14+
errorMessage: string;
15+
errorStatus?: number;
16+
errorType: string;
17+
}
18+
819
export function parseErrorMessage(
920
error: unknown,
1021
errorParser?: ErrorParser,

packages/core/src/utils/store.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import { SuperHeaders } from "@remix-run/headers";
33
import type { MiddlewareHandler } from "hono";
44
import { endTime, startTime } from "hono/timing";
55
import type { AuthAdapter, LoggerAdapter } from "../adapters";
6-
import type { ErrorParser, RouterOptions, StoryBookerUser } from "../types";
6+
import type { RouterOptions, StoryBookerUser } from "../types";
7+
import type { ErrorParser } from "../utils/error";
78
import { DEFAULT_LOCALE } from "./constants";
89

910
export interface Store extends RouterOptions<StoryBookerUser> {

0 commit comments

Comments
 (0)