server-act
Advanced tools
Comparing version
import { z } from 'zod'; | ||
declare const unsetMarker: unique symbol; | ||
type UnsetMarker = typeof unsetMarker; | ||
type Prettify<T> = { | ||
[P in keyof T]: T[P]; | ||
} & {}; | ||
declare const unsetMarker: unique symbol; | ||
type UnsetMarker = typeof unsetMarker; | ||
type OptionalizeUndefined<T> = undefined extends T ? [param?: T] : [param: T]; | ||
type InferParserType<TParser, TType extends 'in' | 'out'> = TParser extends UnsetMarker ? undefined : TParser extends z.ZodType ? TParser[TType extends 'in' ? '_input' : '_output'] : never; | ||
type InferParserType<T, TType extends 'in' | 'out'> = T extends z.ZodEffects<infer I, any, any> ? I[TType extends 'in' ? '_input' : '_output'] : T extends z.ZodType ? T[TType extends 'in' ? '_input' : '_output'] : never; | ||
type InferInputType<T, TType extends 'in' | 'out'> = T extends UnsetMarker ? undefined : InferParserType<T, TType>; | ||
type InferContextType<T> = T extends UnsetMarker ? undefined : T; | ||
@@ -35,4 +36,4 @@ interface ActionParams<TInput = unknown, TContext = unknown> { | ||
ctx: InferContextType<TParams['_context']>; | ||
input: InferParserType<TParams['_input'], 'out'>; | ||
}) => Promise<TOutput>) => (...[input]: OptionalizeUndefined<InferParserType<TParams['_input'], 'in'>>) => Promise<TOutput>; | ||
input: InferInputType<TParams['_input'], 'out'>; | ||
}) => Promise<TOutput>) => (...[input]: OptionalizeUndefined<InferInputType<TParams['_input'], 'in'>>) => Promise<TOutput>; | ||
/** | ||
@@ -45,7 +46,7 @@ * Create an action for React `useFormState` | ||
} & ({ | ||
input: InferParserType<TParams['_input'], 'out'>; | ||
input: InferInputType<TParams['_input'], 'out'>; | ||
formErrors?: undefined; | ||
} | { | ||
input?: undefined; | ||
formErrors: z.ZodError<TParams['_input'] extends z.ZodEffects<infer T, unknown, unknown> ? InferParserType<T, 'in'> : InferParserType<TParams['_input'], 'in'>>; | ||
formErrors: z.ZodError<InferInputType<TParams['_input'], 'in'>>; | ||
})>) => Promise<TState>) => (prevState: TState, formData: FormData) => Promise<TState>; | ||
@@ -52,0 +53,0 @@ } |
@@ -1,74 +0,108 @@ | ||
"use strict"; | ||
var __defProp = Object.defineProperty; | ||
var __getOwnPropDesc = Object.getOwnPropertyDescriptor; | ||
var __getOwnPropNames = Object.getOwnPropertyNames; | ||
var __hasOwnProp = Object.prototype.hasOwnProperty; | ||
var __export = (target, all) => { | ||
for (var name in all) | ||
__defProp(target, name, { get: all[name], enumerable: true }); | ||
}; | ||
var __copyProps = (to, from, except, desc) => { | ||
if (from && typeof from === "object" || typeof from === "function") { | ||
for (let key of __getOwnPropNames(from)) | ||
if (!__hasOwnProp.call(to, key) && key !== except) | ||
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); | ||
} | ||
return to; | ||
}; | ||
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); | ||
Object.defineProperty(exports, '__esModule', { value: true }); | ||
// src/index.ts | ||
var src_exports = {}; | ||
__export(src_exports, { | ||
serverAct: () => serverAct | ||
}); | ||
module.exports = __toCommonJS(src_exports); | ||
var unsetMarker = Symbol("unsetMarker"); | ||
var createNewServerActionBuilder = (def) => { | ||
return createServerActionBuilder(def); | ||
/* eslint-disable @typescript-eslint/no-unsafe-assignment */ /* eslint-disable @typescript-eslint/no-explicit-any */ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { | ||
try { | ||
var info = gen[key](arg); | ||
var value = info.value; | ||
} catch (error) { | ||
reject(error); | ||
return; | ||
} | ||
if (info.done) { | ||
resolve(value); | ||
} else { | ||
Promise.resolve(value).then(_next, _throw); | ||
} | ||
} | ||
function _async_to_generator(fn) { | ||
return function() { | ||
var self = this, args = arguments; | ||
return new Promise(function(resolve, reject) { | ||
var gen = fn.apply(self, args); | ||
function _next(value) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); | ||
} | ||
function _throw(err) { | ||
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); | ||
} | ||
_next(undefined); | ||
}); | ||
}; | ||
} | ||
function _extends() { | ||
_extends = Object.assign || function(target) { | ||
for(var i = 1; i < arguments.length; i++){ | ||
var source = arguments[i]; | ||
for(var key in source){ | ||
if (Object.prototype.hasOwnProperty.call(source, key)) { | ||
target[key] = source[key]; | ||
} | ||
} | ||
} | ||
return target; | ||
}; | ||
return _extends.apply(this, arguments); | ||
} | ||
const createNewServerActionBuilder = (def)=>{ | ||
return createServerActionBuilder(def); | ||
}; | ||
var createServerActionBuilder = (initDef = {}) => { | ||
const _def = { | ||
input: void 0, | ||
middleware: void 0, | ||
...initDef | ||
}; | ||
return { | ||
middleware: (middleware) => createServerActionBuilder({ ..._def, middleware }), | ||
input: (input) => createNewServerActionBuilder({ ..._def, input }), | ||
action: (action) => { | ||
return async (input) => { | ||
var _a; | ||
const ctx = await ((_a = _def.middleware) == null ? void 0 : _a.call(_def)); | ||
if (_def.input) { | ||
const result = _def.input.safeParse(input); | ||
if (!result.success) { | ||
console.error("\u274C Input validation error:", result.error.errors); | ||
throw new Error("Input validation error"); | ||
} | ||
const createServerActionBuilder = (initDef = {})=>{ | ||
const _def = _extends({ | ||
input: undefined, | ||
middleware: undefined | ||
}, initDef); | ||
return { | ||
middleware: (middleware)=>createNewServerActionBuilder(_extends({}, _def, { | ||
middleware | ||
})), | ||
input: (input)=>createNewServerActionBuilder(_extends({}, _def, { | ||
input | ||
})), | ||
action: (action)=>{ | ||
return /*#__PURE__*/ _async_to_generator(function*(input) { | ||
const ctx = yield _def.middleware == null ? void 0 : _def.middleware.call(_def); | ||
if (_def.input) { | ||
const result = _def.input.safeParse(input); | ||
if (!result.success) { | ||
console.error('❌ Input validation error:', result.error.errors); | ||
throw new Error('Input validation error'); | ||
} | ||
} | ||
return yield action({ | ||
ctx, | ||
input | ||
}); | ||
}); | ||
}, | ||
formAction: (action)=>{ | ||
return /*#__PURE__*/ _async_to_generator(function*(prevState, formData) { | ||
const ctx = yield _def.middleware == null ? void 0 : _def.middleware.call(_def); | ||
if (_def.input) { | ||
const result = _def.input.safeParse(formData); | ||
if (!result.success) { | ||
return yield action({ | ||
ctx, | ||
prevState, | ||
formErrors: result.error | ||
}); | ||
} | ||
return yield action({ | ||
ctx, | ||
prevState, | ||
input: result.data | ||
}); | ||
} | ||
return yield action({ | ||
ctx, | ||
prevState, | ||
input: undefined | ||
}); | ||
}); | ||
} | ||
return await action({ ctx, input }); | ||
}; | ||
}, | ||
formAction: (action) => { | ||
return async (prevState, formData) => { | ||
var _a; | ||
const ctx = await ((_a = _def.middleware) == null ? void 0 : _a.call(_def)); | ||
if (_def.input) { | ||
const result = _def.input.safeParse(formData); | ||
if (!result.success) { | ||
return await action({ ctx, prevState, formErrors: result.error }); | ||
} | ||
return await action({ ctx, prevState, input: result.data }); | ||
} | ||
return await action({ ctx, prevState, input: void 0 }); | ||
}; | ||
} | ||
}; | ||
}; | ||
}; | ||
var serverAct = createServerActionBuilder(); | ||
// Annotate the CommonJS export names for ESM import in node: | ||
0 && (module.exports = { | ||
serverAct | ||
}); | ||
//# sourceMappingURL=index.js.map | ||
/** | ||
* Server action builder | ||
*/ const serverAct = createServerActionBuilder(); | ||
exports.serverAct = serverAct; |
{ | ||
"name": "server-act", | ||
"version": "1.1.3", | ||
"version": "1.1.4", | ||
"homepage": "https://github.com/chungweileong94/server-act#readme", | ||
@@ -14,11 +14,21 @@ "repository": { | ||
"module": "dist/index.mjs", | ||
"types": "dist/index.d.ts", | ||
"types": "./dist/index.d.ts", | ||
"exports": { | ||
".": { | ||
"types": "./dist/index.d.ts", | ||
"import": "./dist/index.mjs", | ||
"require": "./dist/index.js" | ||
}, | ||
"./package.json": "./package.json" | ||
"import": { | ||
"types": "./dist/index.d.mts", | ||
"default": "./dist/index.mjs" | ||
}, | ||
"require": { | ||
"types": "./dist/index.d.ts", | ||
"default": "./dist/index.js" | ||
} | ||
} | ||
}, | ||
"files": [ | ||
"dist", | ||
"package.json", | ||
"LICENSE", | ||
"README.md" | ||
], | ||
"keywords": [ | ||
@@ -38,6 +48,6 @@ "next", | ||
"devDependencies": { | ||
"bunchee": "^4.3.3", | ||
"eslint": "^8.49.0", | ||
"eslint-config-whiteroom": "^3.3.0", | ||
"prettier": "^3.0.3", | ||
"tsup": "^7.2.0", | ||
"typescript": "^5.2.2", | ||
@@ -57,3 +67,4 @@ "zod": "^3.22.2", | ||
"scripts": { | ||
"build": "tsup", | ||
"build": "bunchee", | ||
"dev": "bunchee -w", | ||
"test": "vitest run", | ||
@@ -60,0 +71,0 @@ "lint": "eslint src --ext .ts" |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
14470
-59.93%6
-62.5%269
-39.55%2
100%0
-100%1
Infinity%