use-server-action 1.1.3 → 1.1.5

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.
package/dist/server.d.mts CHANGED
@@ -47,7 +47,7 @@ declare function composeMiddleware<P extends unknown[], T>(...middleware: Middle
47
47
  * A Zod-like schema interface for validation.
48
48
  * Works with Zod, Valibot, or any schema library with a compatible safeParse method.
49
49
  */
50
- type ValidationSchema<T> = {
50
+ type ValidationZodSchema<T> = {
51
51
  safeParse(data: unknown): {
52
52
  success: true;
53
53
  data: T;
@@ -61,7 +61,7 @@ type ValidationSchema<T> = {
61
61
  };
62
62
  };
63
63
  };
64
- type WithValidationOptions = {
64
+ type WithZodValidationOptions = {
65
65
  /** Error code to return on validation failure. Defaults to "VALIDATION_ERROR" */
66
66
  code?: string;
67
67
  /** Custom error message formatter */
@@ -94,7 +94,7 @@ type WithValidationOptions = {
94
94
  * );
95
95
  * ```
96
96
  */
97
- declare function withValidation<TInput, T>(schema: ValidationSchema<TInput>, options?: WithValidationOptions): Middleware<[TInput], T>;
97
+ declare function withZodValidation<TInput, T>(schema: ValidationZodSchema<TInput>, options?: WithZodValidationOptions): Middleware<[TInput], T>;
98
98
  /**
99
99
  * Creates a middleware that logs action calls and results.
100
100
  */
@@ -104,4 +104,4 @@ declare function withLogging<P extends unknown[], T>(logger?: {
104
104
  onError?: (message: string, code: string | undefined, params: P) => void;
105
105
  }): Middleware<P, T>;
106
106
 
107
- export { type Middleware, ServerActionResult, type ValidationSchema, type WithValidationOptions, applyMiddleware, composeMiddleware, createMiddleware, withLogging, withValidation };
107
+ export { type Middleware, ServerActionResult, type ValidationZodSchema, type WithZodValidationOptions, applyMiddleware, composeMiddleware, createMiddleware, withLogging, withZodValidation };
package/dist/server.d.ts CHANGED
@@ -47,7 +47,7 @@ declare function composeMiddleware<P extends unknown[], T>(...middleware: Middle
47
47
  * A Zod-like schema interface for validation.
48
48
  * Works with Zod, Valibot, or any schema library with a compatible safeParse method.
49
49
  */
50
- type ValidationSchema<T> = {
50
+ type ValidationZodSchema<T> = {
51
51
  safeParse(data: unknown): {
52
52
  success: true;
53
53
  data: T;
@@ -61,7 +61,7 @@ type ValidationSchema<T> = {
61
61
  };
62
62
  };
63
63
  };
64
- type WithValidationOptions = {
64
+ type WithZodValidationOptions = {
65
65
  /** Error code to return on validation failure. Defaults to "VALIDATION_ERROR" */
66
66
  code?: string;
67
67
  /** Custom error message formatter */
@@ -94,7 +94,7 @@ type WithValidationOptions = {
94
94
  * );
95
95
  * ```
96
96
  */
97
- declare function withValidation<TInput, T>(schema: ValidationSchema<TInput>, options?: WithValidationOptions): Middleware<[TInput], T>;
97
+ declare function withZodValidation<TInput, T>(schema: ValidationZodSchema<TInput>, options?: WithZodValidationOptions): Middleware<[TInput], T>;
98
98
  /**
99
99
  * Creates a middleware that logs action calls and results.
100
100
  */
@@ -104,4 +104,4 @@ declare function withLogging<P extends unknown[], T>(logger?: {
104
104
  onError?: (message: string, code: string | undefined, params: P) => void;
105
105
  }): Middleware<P, T>;
106
106
 
107
- export { type Middleware, ServerActionResult, type ValidationSchema, type WithValidationOptions, applyMiddleware, composeMiddleware, createMiddleware, withLogging, withValidation };
107
+ export { type Middleware, ServerActionResult, type ValidationZodSchema, type WithZodValidationOptions, applyMiddleware, composeMiddleware, createMiddleware, withLogging, withZodValidation };
package/dist/server.js CHANGED
@@ -31,7 +31,7 @@ __export(server_exports, {
31
31
  unwrap: () => unwrap,
32
32
  unwrapOr: () => unwrapOr,
33
33
  withLogging: () => withLogging,
34
- withValidation: () => withValidation
34
+ withZodValidation: () => withZodValidation
35
35
  });
36
36
  module.exports = __toCommonJS(server_exports);
37
37
 
@@ -94,7 +94,7 @@ function composeMiddleware(...middleware) {
94
94
  return chain(...params);
95
95
  };
96
96
  }
97
- function withValidation(schema, options = {}) {
97
+ function withZodValidation(schema, options = {}) {
98
98
  const { code = "VALIDATION_ERROR", formatError } = options;
99
99
  return async (next, input) => {
100
100
  const result = schema.safeParse(input);
@@ -130,6 +130,6 @@ function withLogging(logger = {}) {
130
130
  unwrap,
131
131
  unwrapOr,
132
132
  withLogging,
133
- withValidation
133
+ withZodValidation
134
134
  });
135
135
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/index.ts","../src/server/server-action.ts","../src/server/middleware.ts"],"sourcesContent":["export {\n serverAction,\n success,\n error,\n isSuccess,\n isError,\n unwrap,\n unwrapOr,\n} from \"./server-action\";\nexport type {\n ServerActionResult,\n ServerActionSuccess,\n ServerActionError,\n ServerActionFn,\n} from \"./server-action\";\n\nexport {\n createMiddleware,\n applyMiddleware,\n composeMiddleware,\n withValidation,\n withLogging,\n} from \"./middleware\";\nexport type {\n Middleware,\n ValidationSchema,\n WithValidationOptions,\n} from \"./middleware\";\n","\"use server\";\n\nexport type ServerActionSuccess<T> = {\n ok: true;\n data: T;\n};\n\nexport type ServerActionError = {\n ok: false;\n message: string;\n code?: string;\n};\n\nexport type ServerActionResult<T> = ServerActionSuccess<T> | ServerActionError;\n\nexport function success<T>(data: T): ServerActionSuccess<T> {\n return { ok: true, data };\n}\n\nexport function error(message: string, code?: string): ServerActionError {\n return { ok: false, message, code };\n}\n\nexport type ServerActionFn<P extends unknown[], T> = (\n ...args: P\n) => Promise<ServerActionResult<T>>;\n\ntype ServerActionOptions = {\n onError?: (error: unknown) => void;\n};\n\n/**\n * Wraps an async function to return a standardized ServerActionResult.\n * Catches any thrown errors and converts them to error results.\n */\nexport function serverAction<P extends unknown[], T>(\n fn: (...args: P) => Promise<T>,\n options?: ServerActionOptions,\n): ServerActionFn<P, T> {\n return async (...args: P): Promise<ServerActionResult<T>> => {\n try {\n const data = await fn(...args);\n return success(data);\n } catch (err) {\n options?.onError?.(err);\n\n if (err instanceof Error) {\n return error(err.message, err.name);\n }\n\n return error(\"An unexpected error occurred\", \"UNKNOWN_ERROR\");\n }\n };\n}\n\n/**\n * Type guard to check if a result is successful\n */\nexport function isSuccess<T>(\n result: ServerActionResult<T>,\n): result is ServerActionSuccess<T> {\n return result.ok === true;\n}\n\n/**\n * Type guard to check if a result is an error\n */\nexport function isError<T>(\n result: ServerActionResult<T>,\n): result is ServerActionError {\n return result.ok === false;\n}\n\n/**\n * Unwraps a successful result or throws the error message\n */\nexport function unwrap<T>(result: ServerActionResult<T>): T {\n if (result.ok) {\n return result.data;\n }\n throw new Error(result.message);\n}\n\n/**\n * Unwraps a successful result or returns a default value\n */\nexport function unwrapOr<T>(result: ServerActionResult<T>, defaultValue: T): T {\n if (result.ok) {\n return result.data;\n }\n return defaultValue;\n}\n","\"use server\";\n\nimport type { ServerActionResult } from \"./server-action\";\n\n/**\n * A middleware function that wraps a server action.\n * Receives the next function in the chain and the parameters passed to the action.\n */\nexport type Middleware<P extends unknown[], T> = (\n next: (...params: P) => Promise<ServerActionResult<T>>,\n ...params: P\n) => Promise<ServerActionResult<T>>;\n\n/**\n * Creates a type-safe middleware function.\n *\n * @example\n * ```ts\n * const withLogging = createMiddleware(async (next, ...params) => {\n * console.log(\"Calling action with:\", params);\n * const result = await next(...params);\n * console.log(\"Result:\", result);\n * return result;\n * });\n * ```\n */\nexport function createMiddleware<P extends unknown[], T>(\n handler: Middleware<P, T>,\n): Middleware<P, T> {\n return handler;\n}\n\n/**\n * Applies middleware to a server action.\n * Middleware is executed in order (first middleware wraps second, etc).\n *\n * @example\n * ```ts\n * const protectedAction = applyMiddleware(\n * myServerAction,\n * [withAuth, withLogging, withValidation]\n * );\n * ```\n */\nexport function applyMiddleware<P extends unknown[], T>(\n action: (...params: P) => Promise<ServerActionResult<T>>,\n middleware: Middleware<P, T>[],\n): (...params: P) => Promise<ServerActionResult<T>> {\n return middleware.reduceRight(\n (next, mw) =>\n (...params: P) =>\n mw(next, ...params),\n action,\n );\n}\n\n/**\n * Composes multiple middleware into a single middleware.\n *\n * @example\n * ```ts\n * const combined = composeMiddleware(withAuth, withLogging, withValidation);\n * const protectedAction = applyMiddleware(myAction, [combined]);\n * ```\n */\nexport function composeMiddleware<P extends unknown[], T>(\n ...middleware: Middleware<P, T>[]\n): Middleware<P, T> {\n return (next, ...params) => {\n const chain = middleware.reduceRight(\n (nextFn, mw) =>\n (...p: P) =>\n mw(nextFn, ...p),\n next,\n );\n return chain(...params);\n };\n}\n\n/**\n * A Zod-like schema interface for validation.\n * Works with Zod, Valibot, or any schema library with a compatible safeParse method.\n */\nexport type ValidationSchema<T> = {\n safeParse(data: unknown):\n | { success: true; data: T }\n | { success: false; error: { message?: string; errors?: Array<{ message: string }> } };\n};\n\nexport type WithValidationOptions = {\n /** Error code to return on validation failure. Defaults to \"VALIDATION_ERROR\" */\n code?: string;\n /** Custom error message formatter */\n formatError?: (error: {\n message?: string;\n errors?: Array<{ message: string }>;\n }) => string;\n};\n\n/**\n * Creates a middleware that validates the first parameter against a schema.\n * Works with Zod, Valibot, or any library with a compatible safeParse method.\n *\n * @example\n * ```ts\n * import { z } from \"zod\";\n * import { withValidation, applyMiddleware } from \"use-server-action/server\";\n *\n * const CreateUserSchema = z.object({\n * name: z.string().min(1),\n * email: z.string().email(),\n * });\n *\n * const createUser = applyMiddleware(\n * serverAction(async (input: z.infer<typeof CreateUserSchema>) => {\n * return await db.user.create({ data: input });\n * }),\n * [withValidation(CreateUserSchema)]\n * );\n * ```\n */\nexport function withValidation<TInput, T>(\n schema: ValidationSchema<TInput>,\n options: WithValidationOptions = {},\n): Middleware<[TInput], T> {\n const { code = \"VALIDATION_ERROR\", formatError } = options;\n\n return async (next, input) => {\n const result = schema.safeParse(input);\n\n if (!result.success) {\n const message = formatError\n ? formatError(result.error)\n : result.error.errors?.[0]?.message ??\n result.error.message ??\n \"Validation failed\";\n\n return { ok: false, message, code };\n }\n\n return next(result.data);\n };\n}\n\n/**\n * Creates a middleware that logs action calls and results.\n */\nexport function withLogging<P extends unknown[], T>(\n logger: {\n onCall?: (params: P) => void;\n onSuccess?: (data: T, params: P) => void;\n onError?: (\n message: string,\n code: string | undefined,\n params: P,\n ) => void;\n } = {},\n): Middleware<P, T> {\n return async (next, ...params) => {\n logger.onCall?.(params);\n const result = await next(...params);\n if (result.ok) {\n logger.onSuccess?.(result.data, params);\n } else {\n logger.onError?.(result.message, result.code, params);\n }\n return result;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACeO,SAAS,QAAW,MAAiC;AACxD,SAAO,EAAE,IAAI,MAAM,KAAK;AAC5B;AAEO,SAAS,MAAM,SAAiB,MAAkC;AACrE,SAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AACtC;AAcO,SAAS,aACZ,IACA,SACoB;AACpB,SAAO,UAAU,SAA4C;AACzD,QAAI;AACA,YAAM,OAAO,MAAM,GAAG,GAAG,IAAI;AAC7B,aAAO,QAAQ,IAAI;AAAA,IACvB,SAAS,KAAK;AACV,eAAS,UAAU,GAAG;AAEtB,UAAI,eAAe,OAAO;AACtB,eAAO,MAAM,IAAI,SAAS,IAAI,IAAI;AAAA,MACtC;AAEA,aAAO,MAAM,gCAAgC,eAAe;AAAA,IAChE;AAAA,EACJ;AACJ;AAKO,SAAS,UACZ,QACgC;AAChC,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,QACZ,QAC2B;AAC3B,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,OAAU,QAAkC;AACxD,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,QAAM,IAAI,MAAM,OAAO,OAAO;AAClC;AAKO,SAAS,SAAY,QAA+B,cAAoB;AAC3E,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,SAAO;AACX;;;ACjEO,SAAS,iBACZ,SACgB;AAChB,SAAO;AACX;AAcO,SAAS,gBACZ,QACA,YACgD;AAChD,SAAO,WAAW;AAAA,IACd,CAAC,MAAM,OACH,IAAI,WACA,GAAG,MAAM,GAAG,MAAM;AAAA,IAC1B;AAAA,EACJ;AACJ;AAWO,SAAS,qBACT,YACa;AAChB,SAAO,CAAC,SAAS,WAAW;AACxB,UAAM,QAAQ,WAAW;AAAA,MACrB,CAAC,QAAQ,OACL,IAAI,MACA,GAAG,QAAQ,GAAG,CAAC;AAAA,MACvB;AAAA,IACJ;AACA,WAAO,MAAM,GAAG,MAAM;AAAA,EAC1B;AACJ;AA4CO,SAAS,eACZ,QACA,UAAiC,CAAC,GACX;AACvB,QAAM,EAAE,OAAO,oBAAoB,YAAY,IAAI;AAEnD,SAAO,OAAO,MAAM,UAAU;AAC1B,UAAM,SAAS,OAAO,UAAU,KAAK;AAErC,QAAI,CAAC,OAAO,SAAS;AACjB,YAAM,UAAU,cACV,YAAY,OAAO,KAAK,IACxB,OAAO,MAAM,SAAS,CAAC,GAAG,WAC1B,OAAO,MAAM,WACb;AAEN,aAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AAAA,IACtC;AAEA,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AACJ;AAKO,SAAS,YACZ,SAQI,CAAC,GACW;AAChB,SAAO,OAAO,SAAS,WAAW;AAC9B,WAAO,SAAS,MAAM;AACtB,UAAM,SAAS,MAAM,KAAK,GAAG,MAAM;AACnC,QAAI,OAAO,IAAI;AACX,aAAO,YAAY,OAAO,MAAM,MAAM;AAAA,IAC1C,OAAO;AACH,aAAO,UAAU,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/server/index.ts","../src/server/server-action.ts","../src/server/middleware.ts"],"sourcesContent":["export {\n serverAction,\n success,\n error,\n isSuccess,\n isError,\n unwrap,\n unwrapOr,\n} from \"./server-action\";\nexport type {\n ServerActionResult,\n ServerActionSuccess,\n ServerActionError,\n ServerActionFn,\n} from \"./server-action\";\n\nexport {\n createMiddleware,\n applyMiddleware,\n composeMiddleware,\n withZodValidation,\n withLogging,\n} from \"./middleware\";\nexport type {\n Middleware,\n ValidationZodSchema,\n WithZodValidationOptions,\n} from \"./middleware\";\n","\"use server\";\n\nexport type ServerActionSuccess<T> = {\n ok: true;\n data: T;\n};\n\nexport type ServerActionError = {\n ok: false;\n message: string;\n code?: string;\n};\n\nexport type ServerActionResult<T> = ServerActionSuccess<T> | ServerActionError;\n\nexport function success<T>(data: T): ServerActionSuccess<T> {\n return { ok: true, data };\n}\n\nexport function error(message: string, code?: string): ServerActionError {\n return { ok: false, message, code };\n}\n\nexport type ServerActionFn<P extends unknown[], T> = (\n ...args: P\n) => Promise<ServerActionResult<T>>;\n\ntype ServerActionOptions = {\n onError?: (error: unknown) => void;\n};\n\n/**\n * Wraps an async function to return a standardized ServerActionResult.\n * Catches any thrown errors and converts them to error results.\n */\nexport function serverAction<P extends unknown[], T>(\n fn: (...args: P) => Promise<T>,\n options?: ServerActionOptions,\n): ServerActionFn<P, T> {\n return async (...args: P): Promise<ServerActionResult<T>> => {\n try {\n const data = await fn(...args);\n return success(data);\n } catch (err) {\n options?.onError?.(err);\n\n if (err instanceof Error) {\n return error(err.message, err.name);\n }\n\n return error(\"An unexpected error occurred\", \"UNKNOWN_ERROR\");\n }\n };\n}\n\n/**\n * Type guard to check if a result is successful\n */\nexport function isSuccess<T>(\n result: ServerActionResult<T>,\n): result is ServerActionSuccess<T> {\n return result.ok === true;\n}\n\n/**\n * Type guard to check if a result is an error\n */\nexport function isError<T>(\n result: ServerActionResult<T>,\n): result is ServerActionError {\n return result.ok === false;\n}\n\n/**\n * Unwraps a successful result or throws the error message\n */\nexport function unwrap<T>(result: ServerActionResult<T>): T {\n if (result.ok) {\n return result.data;\n }\n throw new Error(result.message);\n}\n\n/**\n * Unwraps a successful result or returns a default value\n */\nexport function unwrapOr<T>(result: ServerActionResult<T>, defaultValue: T): T {\n if (result.ok) {\n return result.data;\n }\n return defaultValue;\n}\n","\"use server\";\n\nimport type { ServerActionResult } from \"./server-action\";\n\n/**\n * A middleware function that wraps a server action.\n * Receives the next function in the chain and the parameters passed to the action.\n */\nexport type Middleware<P extends unknown[], T> = (\n next: (...params: P) => Promise<ServerActionResult<T>>,\n ...params: P\n) => Promise<ServerActionResult<T>>;\n\n/**\n * Creates a type-safe middleware function.\n *\n * @example\n * ```ts\n * const withLogging = createMiddleware(async (next, ...params) => {\n * console.log(\"Calling action with:\", params);\n * const result = await next(...params);\n * console.log(\"Result:\", result);\n * return result;\n * });\n * ```\n */\nexport function createMiddleware<P extends unknown[], T>(\n handler: Middleware<P, T>,\n): Middleware<P, T> {\n return handler;\n}\n\n/**\n * Applies middleware to a server action.\n * Middleware is executed in order (first middleware wraps second, etc).\n *\n * @example\n * ```ts\n * const protectedAction = applyMiddleware(\n * myServerAction,\n * [withAuth, withLogging, withValidation]\n * );\n * ```\n */\nexport function applyMiddleware<P extends unknown[], T>(\n action: (...params: P) => Promise<ServerActionResult<T>>,\n middleware: Middleware<P, T>[],\n): (...params: P) => Promise<ServerActionResult<T>> {\n return middleware.reduceRight(\n (next, mw) =>\n (...params: P) =>\n mw(next, ...params),\n action,\n );\n}\n\n/**\n * Composes multiple middleware into a single middleware.\n *\n * @example\n * ```ts\n * const combined = composeMiddleware(withAuth, withLogging, withValidation);\n * const protectedAction = applyMiddleware(myAction, [combined]);\n * ```\n */\nexport function composeMiddleware<P extends unknown[], T>(\n ...middleware: Middleware<P, T>[]\n): Middleware<P, T> {\n return (next, ...params) => {\n const chain = middleware.reduceRight(\n (nextFn, mw) =>\n (...p: P) =>\n mw(nextFn, ...p),\n next,\n );\n return chain(...params);\n };\n}\n\n/**\n * A Zod-like schema interface for validation.\n * Works with Zod, Valibot, or any schema library with a compatible safeParse method.\n */\nexport type ValidationZodSchema<T> = {\n safeParse(\n data: unknown,\n ):\n | { success: true; data: T }\n | {\n success: false;\n error: { message?: string; errors?: Array<{ message: string }> };\n };\n};\n\nexport type WithZodValidationOptions = {\n /** Error code to return on validation failure. Defaults to \"VALIDATION_ERROR\" */\n code?: string;\n /** Custom error message formatter */\n formatError?: (error: {\n message?: string;\n errors?: Array<{ message: string }>;\n }) => string;\n};\n\n/**\n * Creates a middleware that validates the first parameter against a schema.\n * Works with Zod, Valibot, or any library with a compatible safeParse method.\n *\n * @example\n * ```ts\n * import { z } from \"zod\";\n * import { withValidation, applyMiddleware } from \"use-server-action/server\";\n *\n * const CreateUserSchema = z.object({\n * name: z.string().min(1),\n * email: z.string().email(),\n * });\n *\n * const createUser = applyMiddleware(\n * serverAction(async (input: z.infer<typeof CreateUserSchema>) => {\n * return await db.user.create({ data: input });\n * }),\n * [withValidation(CreateUserSchema)]\n * );\n * ```\n */\nexport function withZodValidation<TInput, T>(\n schema: ValidationZodSchema<TInput>,\n options: WithZodValidationOptions = {},\n): Middleware<[TInput], T> {\n const { code = \"VALIDATION_ERROR\", formatError } = options;\n\n return async (next, input) => {\n const result = schema.safeParse(input);\n\n if (!result.success) {\n const message = formatError\n ? formatError(result.error)\n : (result.error.errors?.[0]?.message ??\n result.error.message ??\n \"Validation failed\");\n\n return { ok: false, message, code };\n }\n\n return next(result.data);\n };\n}\n\n/**\n * Creates a middleware that logs action calls and results.\n */\nexport function withLogging<P extends unknown[], T>(\n logger: {\n onCall?: (params: P) => void;\n onSuccess?: (data: T, params: P) => void;\n onError?: (\n message: string,\n code: string | undefined,\n params: P,\n ) => void;\n } = {},\n): Middleware<P, T> {\n return async (next, ...params) => {\n logger.onCall?.(params);\n const result = await next(...params);\n if (result.ok) {\n logger.onSuccess?.(result.data, params);\n } else {\n logger.onError?.(result.message, result.code, params);\n }\n return result;\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACeO,SAAS,QAAW,MAAiC;AACxD,SAAO,EAAE,IAAI,MAAM,KAAK;AAC5B;AAEO,SAAS,MAAM,SAAiB,MAAkC;AACrE,SAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AACtC;AAcO,SAAS,aACZ,IACA,SACoB;AACpB,SAAO,UAAU,SAA4C;AACzD,QAAI;AACA,YAAM,OAAO,MAAM,GAAG,GAAG,IAAI;AAC7B,aAAO,QAAQ,IAAI;AAAA,IACvB,SAAS,KAAK;AACV,eAAS,UAAU,GAAG;AAEtB,UAAI,eAAe,OAAO;AACtB,eAAO,MAAM,IAAI,SAAS,IAAI,IAAI;AAAA,MACtC;AAEA,aAAO,MAAM,gCAAgC,eAAe;AAAA,IAChE;AAAA,EACJ;AACJ;AAKO,SAAS,UACZ,QACgC;AAChC,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,QACZ,QAC2B;AAC3B,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,OAAU,QAAkC;AACxD,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,QAAM,IAAI,MAAM,OAAO,OAAO;AAClC;AAKO,SAAS,SAAY,QAA+B,cAAoB;AAC3E,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,SAAO;AACX;;;ACjEO,SAAS,iBACZ,SACgB;AAChB,SAAO;AACX;AAcO,SAAS,gBACZ,QACA,YACgD;AAChD,SAAO,WAAW;AAAA,IACd,CAAC,MAAM,OACH,IAAI,WACA,GAAG,MAAM,GAAG,MAAM;AAAA,IAC1B;AAAA,EACJ;AACJ;AAWO,SAAS,qBACT,YACa;AAChB,SAAO,CAAC,SAAS,WAAW;AACxB,UAAM,QAAQ,WAAW;AAAA,MACrB,CAAC,QAAQ,OACL,IAAI,MACA,GAAG,QAAQ,GAAG,CAAC;AAAA,MACvB;AAAA,IACJ;AACA,WAAO,MAAM,GAAG,MAAM;AAAA,EAC1B;AACJ;AAiDO,SAAS,kBACZ,QACA,UAAoC,CAAC,GACd;AACvB,QAAM,EAAE,OAAO,oBAAoB,YAAY,IAAI;AAEnD,SAAO,OAAO,MAAM,UAAU;AAC1B,UAAM,SAAS,OAAO,UAAU,KAAK;AAErC,QAAI,CAAC,OAAO,SAAS;AACjB,YAAM,UAAU,cACV,YAAY,OAAO,KAAK,IACvB,OAAO,MAAM,SAAS,CAAC,GAAG,WAC3B,OAAO,MAAM,WACb;AAEN,aAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AAAA,IACtC;AAEA,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AACJ;AAKO,SAAS,YACZ,SAQI,CAAC,GACW;AAChB,SAAO,OAAO,SAAS,WAAW;AAC9B,WAAO,SAAS,MAAM;AACtB,UAAM,SAAS,MAAM,KAAK,GAAG,MAAM;AACnC,QAAI,OAAO,IAAI;AACX,aAAO,YAAY,OAAO,MAAM,MAAM;AAAA,IAC1C,OAAO;AACH,aAAO,UAAU,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACJ;","names":[]}
package/dist/server.mjs CHANGED
@@ -57,7 +57,7 @@ function composeMiddleware(...middleware) {
57
57
  return chain(...params);
58
58
  };
59
59
  }
60
- function withValidation(schema, options = {}) {
60
+ function withZodValidation(schema, options = {}) {
61
61
  const { code = "VALIDATION_ERROR", formatError } = options;
62
62
  return async (next, input) => {
63
63
  const result = schema.safeParse(input);
@@ -92,6 +92,6 @@ export {
92
92
  unwrap,
93
93
  unwrapOr,
94
94
  withLogging,
95
- withValidation
95
+ withZodValidation
96
96
  };
97
97
  //# sourceMappingURL=server.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server/server-action.ts","../src/server/middleware.ts"],"sourcesContent":["\"use server\";\n\nexport type ServerActionSuccess<T> = {\n ok: true;\n data: T;\n};\n\nexport type ServerActionError = {\n ok: false;\n message: string;\n code?: string;\n};\n\nexport type ServerActionResult<T> = ServerActionSuccess<T> | ServerActionError;\n\nexport function success<T>(data: T): ServerActionSuccess<T> {\n return { ok: true, data };\n}\n\nexport function error(message: string, code?: string): ServerActionError {\n return { ok: false, message, code };\n}\n\nexport type ServerActionFn<P extends unknown[], T> = (\n ...args: P\n) => Promise<ServerActionResult<T>>;\n\ntype ServerActionOptions = {\n onError?: (error: unknown) => void;\n};\n\n/**\n * Wraps an async function to return a standardized ServerActionResult.\n * Catches any thrown errors and converts them to error results.\n */\nexport function serverAction<P extends unknown[], T>(\n fn: (...args: P) => Promise<T>,\n options?: ServerActionOptions,\n): ServerActionFn<P, T> {\n return async (...args: P): Promise<ServerActionResult<T>> => {\n try {\n const data = await fn(...args);\n return success(data);\n } catch (err) {\n options?.onError?.(err);\n\n if (err instanceof Error) {\n return error(err.message, err.name);\n }\n\n return error(\"An unexpected error occurred\", \"UNKNOWN_ERROR\");\n }\n };\n}\n\n/**\n * Type guard to check if a result is successful\n */\nexport function isSuccess<T>(\n result: ServerActionResult<T>,\n): result is ServerActionSuccess<T> {\n return result.ok === true;\n}\n\n/**\n * Type guard to check if a result is an error\n */\nexport function isError<T>(\n result: ServerActionResult<T>,\n): result is ServerActionError {\n return result.ok === false;\n}\n\n/**\n * Unwraps a successful result or throws the error message\n */\nexport function unwrap<T>(result: ServerActionResult<T>): T {\n if (result.ok) {\n return result.data;\n }\n throw new Error(result.message);\n}\n\n/**\n * Unwraps a successful result or returns a default value\n */\nexport function unwrapOr<T>(result: ServerActionResult<T>, defaultValue: T): T {\n if (result.ok) {\n return result.data;\n }\n return defaultValue;\n}\n","\"use server\";\n\nimport type { ServerActionResult } from \"./server-action\";\n\n/**\n * A middleware function that wraps a server action.\n * Receives the next function in the chain and the parameters passed to the action.\n */\nexport type Middleware<P extends unknown[], T> = (\n next: (...params: P) => Promise<ServerActionResult<T>>,\n ...params: P\n) => Promise<ServerActionResult<T>>;\n\n/**\n * Creates a type-safe middleware function.\n *\n * @example\n * ```ts\n * const withLogging = createMiddleware(async (next, ...params) => {\n * console.log(\"Calling action with:\", params);\n * const result = await next(...params);\n * console.log(\"Result:\", result);\n * return result;\n * });\n * ```\n */\nexport function createMiddleware<P extends unknown[], T>(\n handler: Middleware<P, T>,\n): Middleware<P, T> {\n return handler;\n}\n\n/**\n * Applies middleware to a server action.\n * Middleware is executed in order (first middleware wraps second, etc).\n *\n * @example\n * ```ts\n * const protectedAction = applyMiddleware(\n * myServerAction,\n * [withAuth, withLogging, withValidation]\n * );\n * ```\n */\nexport function applyMiddleware<P extends unknown[], T>(\n action: (...params: P) => Promise<ServerActionResult<T>>,\n middleware: Middleware<P, T>[],\n): (...params: P) => Promise<ServerActionResult<T>> {\n return middleware.reduceRight(\n (next, mw) =>\n (...params: P) =>\n mw(next, ...params),\n action,\n );\n}\n\n/**\n * Composes multiple middleware into a single middleware.\n *\n * @example\n * ```ts\n * const combined = composeMiddleware(withAuth, withLogging, withValidation);\n * const protectedAction = applyMiddleware(myAction, [combined]);\n * ```\n */\nexport function composeMiddleware<P extends unknown[], T>(\n ...middleware: Middleware<P, T>[]\n): Middleware<P, T> {\n return (next, ...params) => {\n const chain = middleware.reduceRight(\n (nextFn, mw) =>\n (...p: P) =>\n mw(nextFn, ...p),\n next,\n );\n return chain(...params);\n };\n}\n\n/**\n * A Zod-like schema interface for validation.\n * Works with Zod, Valibot, or any schema library with a compatible safeParse method.\n */\nexport type ValidationSchema<T> = {\n safeParse(data: unknown):\n | { success: true; data: T }\n | { success: false; error: { message?: string; errors?: Array<{ message: string }> } };\n};\n\nexport type WithValidationOptions = {\n /** Error code to return on validation failure. Defaults to \"VALIDATION_ERROR\" */\n code?: string;\n /** Custom error message formatter */\n formatError?: (error: {\n message?: string;\n errors?: Array<{ message: string }>;\n }) => string;\n};\n\n/**\n * Creates a middleware that validates the first parameter against a schema.\n * Works with Zod, Valibot, or any library with a compatible safeParse method.\n *\n * @example\n * ```ts\n * import { z } from \"zod\";\n * import { withValidation, applyMiddleware } from \"use-server-action/server\";\n *\n * const CreateUserSchema = z.object({\n * name: z.string().min(1),\n * email: z.string().email(),\n * });\n *\n * const createUser = applyMiddleware(\n * serverAction(async (input: z.infer<typeof CreateUserSchema>) => {\n * return await db.user.create({ data: input });\n * }),\n * [withValidation(CreateUserSchema)]\n * );\n * ```\n */\nexport function withValidation<TInput, T>(\n schema: ValidationSchema<TInput>,\n options: WithValidationOptions = {},\n): Middleware<[TInput], T> {\n const { code = \"VALIDATION_ERROR\", formatError } = options;\n\n return async (next, input) => {\n const result = schema.safeParse(input);\n\n if (!result.success) {\n const message = formatError\n ? formatError(result.error)\n : result.error.errors?.[0]?.message ??\n result.error.message ??\n \"Validation failed\";\n\n return { ok: false, message, code };\n }\n\n return next(result.data);\n };\n}\n\n/**\n * Creates a middleware that logs action calls and results.\n */\nexport function withLogging<P extends unknown[], T>(\n logger: {\n onCall?: (params: P) => void;\n onSuccess?: (data: T, params: P) => void;\n onError?: (\n message: string,\n code: string | undefined,\n params: P,\n ) => void;\n } = {},\n): Middleware<P, T> {\n return async (next, ...params) => {\n logger.onCall?.(params);\n const result = await next(...params);\n if (result.ok) {\n logger.onSuccess?.(result.data, params);\n } else {\n logger.onError?.(result.message, result.code, params);\n }\n return result;\n };\n}\n"],"mappings":";AAeO,SAAS,QAAW,MAAiC;AACxD,SAAO,EAAE,IAAI,MAAM,KAAK;AAC5B;AAEO,SAAS,MAAM,SAAiB,MAAkC;AACrE,SAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AACtC;AAcO,SAAS,aACZ,IACA,SACoB;AACpB,SAAO,UAAU,SAA4C;AACzD,QAAI;AACA,YAAM,OAAO,MAAM,GAAG,GAAG,IAAI;AAC7B,aAAO,QAAQ,IAAI;AAAA,IACvB,SAAS,KAAK;AACV,eAAS,UAAU,GAAG;AAEtB,UAAI,eAAe,OAAO;AACtB,eAAO,MAAM,IAAI,SAAS,IAAI,IAAI;AAAA,MACtC;AAEA,aAAO,MAAM,gCAAgC,eAAe;AAAA,IAChE;AAAA,EACJ;AACJ;AAKO,SAAS,UACZ,QACgC;AAChC,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,QACZ,QAC2B;AAC3B,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,OAAU,QAAkC;AACxD,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,QAAM,IAAI,MAAM,OAAO,OAAO;AAClC;AAKO,SAAS,SAAY,QAA+B,cAAoB;AAC3E,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,SAAO;AACX;;;ACjEO,SAAS,iBACZ,SACgB;AAChB,SAAO;AACX;AAcO,SAAS,gBACZ,QACA,YACgD;AAChD,SAAO,WAAW;AAAA,IACd,CAAC,MAAM,OACH,IAAI,WACA,GAAG,MAAM,GAAG,MAAM;AAAA,IAC1B;AAAA,EACJ;AACJ;AAWO,SAAS,qBACT,YACa;AAChB,SAAO,CAAC,SAAS,WAAW;AACxB,UAAM,QAAQ,WAAW;AAAA,MACrB,CAAC,QAAQ,OACL,IAAI,MACA,GAAG,QAAQ,GAAG,CAAC;AAAA,MACvB;AAAA,IACJ;AACA,WAAO,MAAM,GAAG,MAAM;AAAA,EAC1B;AACJ;AA4CO,SAAS,eACZ,QACA,UAAiC,CAAC,GACX;AACvB,QAAM,EAAE,OAAO,oBAAoB,YAAY,IAAI;AAEnD,SAAO,OAAO,MAAM,UAAU;AAC1B,UAAM,SAAS,OAAO,UAAU,KAAK;AAErC,QAAI,CAAC,OAAO,SAAS;AACjB,YAAM,UAAU,cACV,YAAY,OAAO,KAAK,IACxB,OAAO,MAAM,SAAS,CAAC,GAAG,WAC1B,OAAO,MAAM,WACb;AAEN,aAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AAAA,IACtC;AAEA,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AACJ;AAKO,SAAS,YACZ,SAQI,CAAC,GACW;AAChB,SAAO,OAAO,SAAS,WAAW;AAC9B,WAAO,SAAS,MAAM;AACtB,UAAM,SAAS,MAAM,KAAK,GAAG,MAAM;AACnC,QAAI,OAAO,IAAI;AACX,aAAO,YAAY,OAAO,MAAM,MAAM;AAAA,IAC1C,OAAO;AACH,aAAO,UAAU,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACJ;","names":[]}
1
+ {"version":3,"sources":["../src/server/server-action.ts","../src/server/middleware.ts"],"sourcesContent":["\"use server\";\n\nexport type ServerActionSuccess<T> = {\n ok: true;\n data: T;\n};\n\nexport type ServerActionError = {\n ok: false;\n message: string;\n code?: string;\n};\n\nexport type ServerActionResult<T> = ServerActionSuccess<T> | ServerActionError;\n\nexport function success<T>(data: T): ServerActionSuccess<T> {\n return { ok: true, data };\n}\n\nexport function error(message: string, code?: string): ServerActionError {\n return { ok: false, message, code };\n}\n\nexport type ServerActionFn<P extends unknown[], T> = (\n ...args: P\n) => Promise<ServerActionResult<T>>;\n\ntype ServerActionOptions = {\n onError?: (error: unknown) => void;\n};\n\n/**\n * Wraps an async function to return a standardized ServerActionResult.\n * Catches any thrown errors and converts them to error results.\n */\nexport function serverAction<P extends unknown[], T>(\n fn: (...args: P) => Promise<T>,\n options?: ServerActionOptions,\n): ServerActionFn<P, T> {\n return async (...args: P): Promise<ServerActionResult<T>> => {\n try {\n const data = await fn(...args);\n return success(data);\n } catch (err) {\n options?.onError?.(err);\n\n if (err instanceof Error) {\n return error(err.message, err.name);\n }\n\n return error(\"An unexpected error occurred\", \"UNKNOWN_ERROR\");\n }\n };\n}\n\n/**\n * Type guard to check if a result is successful\n */\nexport function isSuccess<T>(\n result: ServerActionResult<T>,\n): result is ServerActionSuccess<T> {\n return result.ok === true;\n}\n\n/**\n * Type guard to check if a result is an error\n */\nexport function isError<T>(\n result: ServerActionResult<T>,\n): result is ServerActionError {\n return result.ok === false;\n}\n\n/**\n * Unwraps a successful result or throws the error message\n */\nexport function unwrap<T>(result: ServerActionResult<T>): T {\n if (result.ok) {\n return result.data;\n }\n throw new Error(result.message);\n}\n\n/**\n * Unwraps a successful result or returns a default value\n */\nexport function unwrapOr<T>(result: ServerActionResult<T>, defaultValue: T): T {\n if (result.ok) {\n return result.data;\n }\n return defaultValue;\n}\n","\"use server\";\n\nimport type { ServerActionResult } from \"./server-action\";\n\n/**\n * A middleware function that wraps a server action.\n * Receives the next function in the chain and the parameters passed to the action.\n */\nexport type Middleware<P extends unknown[], T> = (\n next: (...params: P) => Promise<ServerActionResult<T>>,\n ...params: P\n) => Promise<ServerActionResult<T>>;\n\n/**\n * Creates a type-safe middleware function.\n *\n * @example\n * ```ts\n * const withLogging = createMiddleware(async (next, ...params) => {\n * console.log(\"Calling action with:\", params);\n * const result = await next(...params);\n * console.log(\"Result:\", result);\n * return result;\n * });\n * ```\n */\nexport function createMiddleware<P extends unknown[], T>(\n handler: Middleware<P, T>,\n): Middleware<P, T> {\n return handler;\n}\n\n/**\n * Applies middleware to a server action.\n * Middleware is executed in order (first middleware wraps second, etc).\n *\n * @example\n * ```ts\n * const protectedAction = applyMiddleware(\n * myServerAction,\n * [withAuth, withLogging, withValidation]\n * );\n * ```\n */\nexport function applyMiddleware<P extends unknown[], T>(\n action: (...params: P) => Promise<ServerActionResult<T>>,\n middleware: Middleware<P, T>[],\n): (...params: P) => Promise<ServerActionResult<T>> {\n return middleware.reduceRight(\n (next, mw) =>\n (...params: P) =>\n mw(next, ...params),\n action,\n );\n}\n\n/**\n * Composes multiple middleware into a single middleware.\n *\n * @example\n * ```ts\n * const combined = composeMiddleware(withAuth, withLogging, withValidation);\n * const protectedAction = applyMiddleware(myAction, [combined]);\n * ```\n */\nexport function composeMiddleware<P extends unknown[], T>(\n ...middleware: Middleware<P, T>[]\n): Middleware<P, T> {\n return (next, ...params) => {\n const chain = middleware.reduceRight(\n (nextFn, mw) =>\n (...p: P) =>\n mw(nextFn, ...p),\n next,\n );\n return chain(...params);\n };\n}\n\n/**\n * A Zod-like schema interface for validation.\n * Works with Zod, Valibot, or any schema library with a compatible safeParse method.\n */\nexport type ValidationZodSchema<T> = {\n safeParse(\n data: unknown,\n ):\n | { success: true; data: T }\n | {\n success: false;\n error: { message?: string; errors?: Array<{ message: string }> };\n };\n};\n\nexport type WithZodValidationOptions = {\n /** Error code to return on validation failure. Defaults to \"VALIDATION_ERROR\" */\n code?: string;\n /** Custom error message formatter */\n formatError?: (error: {\n message?: string;\n errors?: Array<{ message: string }>;\n }) => string;\n};\n\n/**\n * Creates a middleware that validates the first parameter against a schema.\n * Works with Zod, Valibot, or any library with a compatible safeParse method.\n *\n * @example\n * ```ts\n * import { z } from \"zod\";\n * import { withValidation, applyMiddleware } from \"use-server-action/server\";\n *\n * const CreateUserSchema = z.object({\n * name: z.string().min(1),\n * email: z.string().email(),\n * });\n *\n * const createUser = applyMiddleware(\n * serverAction(async (input: z.infer<typeof CreateUserSchema>) => {\n * return await db.user.create({ data: input });\n * }),\n * [withValidation(CreateUserSchema)]\n * );\n * ```\n */\nexport function withZodValidation<TInput, T>(\n schema: ValidationZodSchema<TInput>,\n options: WithZodValidationOptions = {},\n): Middleware<[TInput], T> {\n const { code = \"VALIDATION_ERROR\", formatError } = options;\n\n return async (next, input) => {\n const result = schema.safeParse(input);\n\n if (!result.success) {\n const message = formatError\n ? formatError(result.error)\n : (result.error.errors?.[0]?.message ??\n result.error.message ??\n \"Validation failed\");\n\n return { ok: false, message, code };\n }\n\n return next(result.data);\n };\n}\n\n/**\n * Creates a middleware that logs action calls and results.\n */\nexport function withLogging<P extends unknown[], T>(\n logger: {\n onCall?: (params: P) => void;\n onSuccess?: (data: T, params: P) => void;\n onError?: (\n message: string,\n code: string | undefined,\n params: P,\n ) => void;\n } = {},\n): Middleware<P, T> {\n return async (next, ...params) => {\n logger.onCall?.(params);\n const result = await next(...params);\n if (result.ok) {\n logger.onSuccess?.(result.data, params);\n } else {\n logger.onError?.(result.message, result.code, params);\n }\n return result;\n };\n}\n"],"mappings":";AAeO,SAAS,QAAW,MAAiC;AACxD,SAAO,EAAE,IAAI,MAAM,KAAK;AAC5B;AAEO,SAAS,MAAM,SAAiB,MAAkC;AACrE,SAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AACtC;AAcO,SAAS,aACZ,IACA,SACoB;AACpB,SAAO,UAAU,SAA4C;AACzD,QAAI;AACA,YAAM,OAAO,MAAM,GAAG,GAAG,IAAI;AAC7B,aAAO,QAAQ,IAAI;AAAA,IACvB,SAAS,KAAK;AACV,eAAS,UAAU,GAAG;AAEtB,UAAI,eAAe,OAAO;AACtB,eAAO,MAAM,IAAI,SAAS,IAAI,IAAI;AAAA,MACtC;AAEA,aAAO,MAAM,gCAAgC,eAAe;AAAA,IAChE;AAAA,EACJ;AACJ;AAKO,SAAS,UACZ,QACgC;AAChC,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,QACZ,QAC2B;AAC3B,SAAO,OAAO,OAAO;AACzB;AAKO,SAAS,OAAU,QAAkC;AACxD,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,QAAM,IAAI,MAAM,OAAO,OAAO;AAClC;AAKO,SAAS,SAAY,QAA+B,cAAoB;AAC3E,MAAI,OAAO,IAAI;AACX,WAAO,OAAO;AAAA,EAClB;AACA,SAAO;AACX;;;ACjEO,SAAS,iBACZ,SACgB;AAChB,SAAO;AACX;AAcO,SAAS,gBACZ,QACA,YACgD;AAChD,SAAO,WAAW;AAAA,IACd,CAAC,MAAM,OACH,IAAI,WACA,GAAG,MAAM,GAAG,MAAM;AAAA,IAC1B;AAAA,EACJ;AACJ;AAWO,SAAS,qBACT,YACa;AAChB,SAAO,CAAC,SAAS,WAAW;AACxB,UAAM,QAAQ,WAAW;AAAA,MACrB,CAAC,QAAQ,OACL,IAAI,MACA,GAAG,QAAQ,GAAG,CAAC;AAAA,MACvB;AAAA,IACJ;AACA,WAAO,MAAM,GAAG,MAAM;AAAA,EAC1B;AACJ;AAiDO,SAAS,kBACZ,QACA,UAAoC,CAAC,GACd;AACvB,QAAM,EAAE,OAAO,oBAAoB,YAAY,IAAI;AAEnD,SAAO,OAAO,MAAM,UAAU;AAC1B,UAAM,SAAS,OAAO,UAAU,KAAK;AAErC,QAAI,CAAC,OAAO,SAAS;AACjB,YAAM,UAAU,cACV,YAAY,OAAO,KAAK,IACvB,OAAO,MAAM,SAAS,CAAC,GAAG,WAC3B,OAAO,MAAM,WACb;AAEN,aAAO,EAAE,IAAI,OAAO,SAAS,KAAK;AAAA,IACtC;AAEA,WAAO,KAAK,OAAO,IAAI;AAAA,EAC3B;AACJ;AAKO,SAAS,YACZ,SAQI,CAAC,GACW;AAChB,SAAO,OAAO,SAAS,WAAW;AAC9B,WAAO,SAAS,MAAM;AACtB,UAAM,SAAS,MAAM,KAAK,GAAG,MAAM;AACnC,QAAI,OAAO,IAAI;AACX,aAAO,YAAY,OAAO,MAAM,MAAM;AAAA,IAC1C,OAAO;AACH,aAAO,UAAU,OAAO,SAAS,OAAO,MAAM,MAAM;AAAA,IACxD;AACA,WAAO;AAAA,EACX;AACJ;","names":[]}
package/package.json CHANGED
@@ -1,10 +1,14 @@
1
1
  {
2
2
  "name": "use-server-action",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "A React hook for working with Next.js server actions",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
7
7
  "types": "./dist/index.d.ts",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/jackh-sh/use-server-action.git"
11
+ },
8
12
  "exports": {
9
13
  ".": {
10
14
  "import": {