@yimingliao/cms 0.0.24 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,7 +5,8 @@ import Keyv from 'keyv';
5
5
  import { Logger } from 'logry';
6
6
  import { e as AdminRole, v as SingleItem, B as BaseTranslation, a as Admin, c as AdminFull, f as AdminSafe, D as DeviceInfo, d as AdminRefreshToken, k as File, m as FileFull, o as FileType, p as Folder, F as FolderFull, u as PostType, M as MultiItems, E as ExternalLink, j as Faq, T as TocItem, q as Post, s as PostListCard, t as PostTranslation, r as PostFull, S as SeoMetadata, g as AdminTranslation, n as FileTranslation, h as Alternate } from '../base-DbGnfZr6.js';
7
7
  import { BaseTranslator, LocaleMessages } from 'intor';
8
- import { S as SuccessResult, R as Result, E as ErrorDetail } from '../types-DHlRoJwv.js';
8
+ import { S as SuccessResult, R as Result } from '../types-DHlRoJwv.js';
9
+ import { NextResponse } from 'next/server';
9
10
 
10
11
  interface CreateJwtServiceOptions {
11
12
  defaultSecret: string;
@@ -601,7 +602,7 @@ declare const POST_ORDER_BY: ({
601
602
  type Action<D> = (translator: BaseTranslator<LocaleMessages>) => Promise<Omit<SuccessResult<D>, "success"> & {
602
603
  i18nKey?: string;
603
604
  }>;
604
- interface CreateServerActionOptions {
605
+ interface CreateExecuteActionOptions {
605
606
  initI18n: () => Promise<BaseTranslator<LocaleMessages>>;
606
607
  cacheResult: <T>({ key, ttl, load }: CacheResultOptions<T>) => Promise<T>;
607
608
  cache: Keyv<unknown>;
@@ -612,14 +613,14 @@ interface ServerActionOptions {
612
613
  key?: RawCacheKey;
613
614
  ttl?: number;
614
615
  }
615
- declare function createExecuteAction({ initI18n, cacheResult, cache, logger, }: CreateServerActionOptions): <D = void>(fn: Action<D>, options?: ServerActionOptions) => Promise<Result<D>>;
616
+ declare function createExecuteAction({ initI18n, cacheResult, cache, logger, }: CreateExecuteActionOptions): <D = void>(fn: Action<D>, options?: ServerActionOptions) => Promise<Result<D>>;
616
617
 
617
- declare const normalizeError: (error: unknown, translator: BaseTranslator<LocaleMessages>) => {
618
- message: string;
619
- errors?: ErrorDetail[];
620
- statusCode: number;
621
- isInternal?: boolean;
622
- };
618
+ type Api = (translator: BaseTranslator<LocaleMessages>) => Promise<NextResponse<unknown>>;
619
+ interface CreateExecuteApiOptions {
620
+ initI18n: () => Promise<BaseTranslator<LocaleMessages>>;
621
+ logger: Logger;
622
+ }
623
+ declare function createExecuteApi({ initI18n, logger, }: CreateExecuteApiOptions): (fn: Api) => Promise<NextResponse<unknown>>;
623
624
 
624
625
  declare class ServerError extends Error {
625
626
  readonly i18nKey?: string;
@@ -639,4 +640,4 @@ declare class ServerError extends Error {
639
640
  static internalServerError(): ServerError;
640
641
  }
641
642
 
642
- export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, type RawCacheKey, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, normalizeCacheKey, normalizeError };
643
+ export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, type RawCacheKey, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, normalizeCacheKey };
@@ -8,6 +8,7 @@ import KeyvRedis from '@keyv/redis';
8
8
  import Keyv from 'keyv';
9
9
  import { ulid } from 'ulid';
10
10
  import { ZodError } from 'zod';
11
+ import { NextResponse } from 'next/server';
11
12
 
12
13
  function createJwtService({
13
14
  defaultSecret,
@@ -1457,7 +1458,7 @@ var ServerError = class _ServerError extends Error {
1457
1458
  }
1458
1459
  };
1459
1460
 
1460
- // src/server/interfaces/execute-action/normalize-error.ts
1461
+ // src/server/interfaces/normalize-error.ts
1461
1462
  var normalizeError = (error, translator) => {
1462
1463
  if (error instanceof ZodError) {
1463
1464
  const errors = error.issues.map((issue) => {
@@ -1520,5 +1521,29 @@ function createExecuteAction({
1520
1521
  }
1521
1522
  };
1522
1523
  }
1524
+ function createExecuteApi({
1525
+ initI18n,
1526
+ logger
1527
+ }) {
1528
+ return async function serverApi(fn) {
1529
+ const translator = await initI18n();
1530
+ try {
1531
+ return await fn(translator);
1532
+ } catch (error) {
1533
+ const { message, errors, statusCode, isInternal } = normalizeError(
1534
+ error,
1535
+ translator
1536
+ );
1537
+ logger.error({ message, errors });
1538
+ return NextResponse.json(
1539
+ result.error({
1540
+ message: isInternal ? "Internal server error" : message,
1541
+ ...errors ? { errors } : {}
1542
+ }),
1543
+ { status: statusCode }
1544
+ );
1545
+ }
1546
+ };
1547
+ }
1523
1548
 
1524
- export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, normalizeCacheKey, normalizeError };
1549
+ export { ADMIN_ORDER_BY, ORDER_BY, POST_ORDER_BY, ServerError, createAdminCommandRepository, createAdminQueryRepository, createAdminRefreshTokenCommandRepository, createAdminRefreshTokenQueryRepository, createArgon2Service, createCache, createCacheResult, createCookieService, createCryptoService, createExecuteAction, createExecuteApi, createFileCommandRepository, createFileQueryRepository, createFolderCommandRepository, createFolderQueryRepository, createIpRateLimiter, createJwtService, createPostCommandRepository, createPostQueryRepository, createSeoMetadataCommandRepository, normalizeCacheKey };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yimingliao/cms",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "author": "Yiming Liao",
5
5
  "license": "MIT",
6
6
  "type": "module",