@aomex/core
Advanced tools
Comparing version 1.2.0 to 1.3.0
@@ -6,2 +6,13 @@ # Change Log | ||
# [1.3.0](https://github.com/aomex/aomex/compare/v1.2.0...v1.3.0) (2024-06-28) | ||
### Features | ||
* **core:** 删除中间件链条概念 ([12f42e6](https://github.com/aomex/aomex/commit/12f42e6ba15f3118b98f5ff31832121b1b2b9896)) | ||
# [1.2.0](https://github.com/aomex/aomex/compare/v1.1.0...v1.2.0) (2024-06-27) | ||
@@ -8,0 +19,0 @@ |
@@ -199,2 +199,3 @@ import { OpenAPIV3 } from 'openapi-types'; | ||
type Fn<Ctx = any> = (ctx: Ctx, next: Next) => any; | ||
type CollectArrayType<T> = T extends Middleware<infer R> ? R : unknown; | ||
} | ||
@@ -243,52 +244,2 @@ /** | ||
type MiddleWareToken<P extends object = object> = MiddlewareChain<P> | Middleware<P>; | ||
interface MiddlewareChainPlatform { | ||
} | ||
declare namespace MiddlewareChain { | ||
type Infer<T> = T extends MiddlewareChain<infer R> ? R : never; | ||
} | ||
declare abstract class MiddlewareChain<Props extends object = object> { | ||
protected readonly middlewareList: Middleware[]; | ||
protected _: Props; | ||
protected static autoIncrementID: number; | ||
/** | ||
* 注册链条 | ||
*/ | ||
static register(platform: keyof MiddlewareChainPlatform, SubClass: new (...args: any[]) => MiddlewareChain): void; | ||
protected createPoint(): string; | ||
/** | ||
* 分割链条成两段,并返回后面那一段 | ||
*/ | ||
protected split(point?: string | string[]): this; | ||
protected readonly SubClass: new (middlewareList?: Middleware[]) => MiddlewareChain; | ||
protected points: Record<string, number>; | ||
constructor(middlewareList?: Middleware[]); | ||
/** | ||
* 挂载中间件和链条,支持传入`null` | ||
*/ | ||
protected mount<P extends object>(token: MiddleWareToken<P> | null): MiddlewareChain<Props & P>; | ||
} | ||
declare const mdchain: MiddlewareChainPlatform; | ||
declare module './middleware-chain' { | ||
interface MiddlewareChainPlatform { | ||
/** | ||
* 没有特定上下文的纯链条,支持所有应用 | ||
*/ | ||
readonly mixin: MixinMiddlewareChain; | ||
} | ||
} | ||
type MixinMiddlewareToken<P extends object = object> = MixinMiddlewareChain<P> | MixinMiddleware<P>; | ||
declare class MixinMiddlewareChain<Props extends object = object> extends MiddlewareChain<Props> { | ||
protected _mixin_chain_: 'mixin-chain'; | ||
mount: { | ||
<P extends object>(token: MixinMiddlewareToken<P> | null): MixinMiddlewareChain<Props & P>; | ||
}; | ||
} | ||
/** | ||
* 拍平中间件和链条,并返回中间件列表 | ||
*/ | ||
declare const flattenMiddlewareToken: (tokens?: MiddleWareToken | null | Array<MiddleWareToken | null>) => Middleware[]; | ||
declare namespace magistrate { | ||
@@ -1067,2 +1018,2 @@ type Result<T> = Ok<T> | Fail; | ||
export { AnyValidator, ArrayValidator, BaseNumberValidator, BaseStringValidator, BigIntValidator, BooleanValidator, BufferValidator, type CombinedServices, type ComposeFn, DateTimeValidator, EmailValidator, EnumValidator, HashValidator, I18n, I18nMessage, IntValidator, IpValidator, type MiddleWareToken, Middleware, MiddlewareChain, type MiddlewareChainPlatform, type MiddlewarePlatform, MixinMiddleware, MixinMiddlewareChain, type MixinMiddlewareToken, type Next, NumberValidator, ObjectValidator, OneOfValidator, Rule, Service, StreamValidator, StringValidator, type TransformedValidator, UlidValidator, UrlValidator, UuidValidator, Validator, ValidatorError, type ValidatorToken, combineServices, compose, flattenMiddlewareToken, i18n, magistrate, mdchain, middleware, rule, toValidator, validate }; | ||
export { AnyValidator, ArrayValidator, BaseNumberValidator, BaseStringValidator, BigIntValidator, BooleanValidator, BufferValidator, type CombinedServices, type ComposeFn, DateTimeValidator, EmailValidator, EnumValidator, HashValidator, I18n, I18nMessage, IntValidator, IpValidator, Middleware, type MiddlewarePlatform, MixinMiddleware, type Next, NumberValidator, ObjectValidator, OneOfValidator, Rule, Service, StreamValidator, StringValidator, type TransformedValidator, UlidValidator, UrlValidator, UuidValidator, Validator, ValidatorError, type ValidatorToken, combineServices, compose, i18n, magistrate, middleware, rule, toValidator, validate }; |
@@ -279,68 +279,2 @@ // src/i18n/i18n-message.ts | ||
// src/middleware/middleware-chain.ts | ||
import { toArray } from "@aomex/internal-tools"; | ||
// src/middleware/flatten-middleware-token.ts | ||
var flattenMiddlewareToken = (tokens) => { | ||
if (Array.isArray(tokens)) { | ||
return tokens.reduce( | ||
(carry, item) => carry.concat(flattenMiddlewareToken(item)), | ||
[] | ||
); | ||
} | ||
return tokens == null ? [] : "middlewareList" in tokens ? tokens["middlewareList"].slice() : [tokens]; | ||
}; | ||
// src/middleware/middleware-chain.ts | ||
var MiddlewareChain = class _MiddlewareChain { | ||
constructor(middlewareList = []) { | ||
this.middlewareList = middlewareList; | ||
this.SubClass = new.target; | ||
} | ||
_; | ||
static autoIncrementID = 0; | ||
/** | ||
* 注册链条 | ||
*/ | ||
static register(platform, SubClass) { | ||
Object.defineProperty(mdchain, platform, { | ||
get() { | ||
return new SubClass(); | ||
} | ||
}); | ||
} | ||
createPoint() { | ||
const point = "point_" + ++_MiddlewareChain.autoIncrementID; | ||
this.points[point] = this.middlewareList.length; | ||
return point; | ||
} | ||
/** | ||
* 分割链条成两段,并返回后面那一段 | ||
*/ | ||
split(point = []) { | ||
const longestLengthOfPoint = toArray(point).map((p) => this.points[p]).filter(Boolean).sort((a, b) => b - a)[0]; | ||
if (!longestLengthOfPoint) return this; | ||
const middlewareList = this.middlewareList.slice(longestLengthOfPoint); | ||
return new this.SubClass(middlewareList); | ||
} | ||
SubClass; | ||
points = {}; | ||
/** | ||
* 挂载中间件和链条,支持传入`null` | ||
*/ | ||
mount(token) { | ||
const chain = new this.SubClass( | ||
this.middlewareList.concat(flattenMiddlewareToken(token)) | ||
); | ||
chain.points = this.points; | ||
return chain; | ||
} | ||
}; | ||
var mdchain = {}; | ||
// src/middleware/mixin-middleware-chain.ts | ||
var MixinMiddlewareChain = class extends MiddlewareChain { | ||
}; | ||
MiddlewareChain.register("mixin", MixinMiddlewareChain); | ||
// src/validator/base/magistrate.ts | ||
@@ -1434,3 +1368,3 @@ var magistrate = { | ||
// src/validator/api/rule.ts | ||
import { toArray as toArray2 } from "@aomex/internal-tools"; | ||
import { toArray } from "@aomex/internal-tools"; | ||
var Rule = class { | ||
@@ -1480,3 +1414,3 @@ static register(name, SubValidator) { | ||
enum(ranges) { | ||
return new EnumValidator(toArray2(ranges, true)); | ||
return new EnumValidator(toArray(ranges, true)); | ||
} | ||
@@ -1500,3 +1434,3 @@ hash(algorithm) { | ||
ip(version) { | ||
return new IpValidator(toArray2(version)); | ||
return new IpValidator(toArray(version)); | ||
} | ||
@@ -1548,3 +1482,3 @@ /** | ||
uuid(versions2) { | ||
return new UuidValidator(toArray2(versions2)); | ||
return new UuidValidator(toArray(versions2)); | ||
} | ||
@@ -1624,5 +1558,3 @@ }; | ||
Middleware, | ||
MiddlewareChain, | ||
MixinMiddleware, | ||
MixinMiddlewareChain, | ||
NumberValidator, | ||
@@ -1643,6 +1575,4 @@ ObjectValidator, | ||
compose, | ||
flattenMiddlewareToken, | ||
i18n, | ||
magistrate, | ||
mdchain, | ||
middleware, | ||
@@ -1649,0 +1579,0 @@ rule, |
{ | ||
"name": "@aomex/core", | ||
"version": "1.2.0", | ||
"version": "1.3.0", | ||
"description": "aomex核心库", | ||
@@ -39,5 +39,5 @@ "type": "module", | ||
"openapi-types": "^12.1.3", | ||
"@aomex/internal-tools": "^1.1.0" | ||
"@aomex/internal-tools": "^1.3.0" | ||
}, | ||
"scripts": {} | ||
} |
@@ -18,12 +18,2 @@ # @aomex/core | ||
## middleware-chain | ||
中间件组,上层应用可扩展 | ||
```typescript | ||
import { mdchain } from '@aomex/core'; | ||
export const box = mdchain.mixin.mount(md); | ||
``` | ||
## validator | ||
@@ -30,0 +20,0 @@ |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
199923
2520
37
Updated@aomex/internal-tools@^1.3.0