@bemedev/typings 1.1.5 → 1.1.6

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.
Files changed (2) hide show
  1. package/lib/types.d.ts +20 -12
  2. package/package.json +3 -2
package/lib/types.d.ts CHANGED
@@ -85,18 +85,17 @@ type ReduceTupleU<T extends AnyArray> = T extends [
85
85
  infer First,
86
86
  ...infer Rest extends AnyArray
87
87
  ] ? [Undefiny<First>, ...ReduceTupleU<Rest>] : T[number] extends never ? [] : T['length'] extends 0 ? [] : number extends T['length'] ? T : Undefiny<T[number]>[];
88
- type EmptyObject = {};
88
+ export type EmptyObject = Record<string, never>;
89
89
  type __TransformUnion<T extends UnionCustom> = T extends UnionCustom<infer TCustom> ? Omit<T, typeof UNION> extends infer Ot ? Equals<Ot, EmptyObject> extends true ? TransformT<TCustom[number]> : TransformT<TCustom[number]> & TransformT<Ot> : never : never;
90
- type HasUndefined<T> = unknown extends T ? false : EmptyObject extends T ? false : OptionalHelperClass extends T ? true : false;
91
- type UndefinyObject<T extends object> = {
90
+ type HasUndefined<T> = unknown extends T ? false : Equals<EmptyObject, T> extends true ? false : OptionalHelperClass extends T ? true : false;
91
+ type _UndefinyObject<T extends object> = {
92
92
  [K in keyof T as HasUndefined<T[K]> extends true ? never : K]: Undefiny<T[K]>;
93
93
  } & {
94
94
  [K in keyof T as HasUndefined<T[K]> extends true ? K : never]?: Undefiny<T[K]>;
95
- } extends infer O ? {
96
- [K in keyof O]: O[K];
97
- } : never;
95
+ };
96
+ type UndefinyObject<T extends object> = _UndefinyObject<T>;
98
97
  type Undefiny<T, U = Exclude<T, OptionalHelperClass>> = U extends AnyArray ? ReduceTupleU<U> : U extends TrueObject ? UndefinyObject<U> : U;
99
- type TransformT<T> = EmptyObject extends T ? EmptyObject : Equals<ObjectMapS, T> extends true ? object : T extends Types ? TransformTypes<T> : T extends ArrayCustom<infer A> ? TransformT<A>[] : T extends UnionCustom ? __TransformUnion<T> : T extends SoRaCustom<infer TSoA> ? SoRa<TransformT<TSoA>> : T extends SoaCustom<infer TSoA> ? SoA<TransformT<TSoA>> : T extends Custom<infer TCustom> ? TCustom : T extends AnyArray<ObjectT> ? ReduceTuple2<T> : T extends PartialCustom<infer TPartial> ? Partial<TransformT<TPartial>> : T extends Optional<infer TOptional> ? TransformT<TOptional> | OptionalHelperClass : Undefiny<{
98
+ type TransformT<T> = Equals<EmptyObject, T> extends true ? EmptyObject : Equals<ObjectMapS, T> extends true ? object : PrimitiveObjectT extends T ? PrimitiveObject : T extends Types ? TransformTypes<T> : T extends ArrayCustom<infer A> ? TransformT<A>[] : T extends UnionCustom ? __TransformUnion<T> : T extends SoRaCustom<infer TSoA> ? SoRa<TransformT<TSoA>> : T extends SoaCustom<infer TSoA> ? SoA<TransformT<TSoA>> : T extends Custom<infer TCustom> ? TCustom : T extends AnyArray<ObjectT> ? ReduceTuple2<T> : T extends PartialCustom<infer TPartial> ? Partial<TransformT<TPartial>> : T extends Optional<infer TOptional> ? TransformT<TOptional> | OptionalHelperClass : Undefiny<{
100
99
  [K in keyof T]: TransformT<T[K]>;
101
100
  }>;
102
101
  export type StandardHelper<T1 = any, T2 = any> = {
@@ -116,17 +115,26 @@ export type PrimitiveObject = SoRa<Primitive | PrimitiveObjectMap>;
116
115
  export interface PrimitiveObjectMap {
117
116
  [key: Keys]: PrimitiveObject;
118
117
  }
119
- export type inferO<T extends ObjectT = ObjectT> = EmptyObject extends T ? EmptyObject : PrimitiveObjectT extends T ? PrimitiveObject : T extends Optional<infer U> ? TransformT<U> | undefined : TransformT<T>;
118
+ type _inferO<T extends ObjectT = ObjectT> = ObjectT extends T ? unknown : T extends Optional<infer U> ? TransformT<U> | undefined : TransformT<T>;
119
+ type ReduceArraySimple<T extends any[]> = T extends [
120
+ infer First,
121
+ ...infer Rest extends any[]
122
+ ] ? [Simplify<First>, ...ReduceArraySimple<Rest>] : number extends T['length'] ? Simplify<T[number]>[] : T;
123
+ export type Simplify<T> = unknown extends T ? T : T extends Primitive ? T : T extends any[] ? ReduceArraySimple<T> : T extends TrueObject ? {
124
+ [K in keyof T]: Simplify<T[K]>;
125
+ } : T & {};
126
+ export type inferO<T extends POS> = Simplify<_inferO<T>>;
120
127
  export type inferSh<T extends ObjectT = ObjectT> = _Sh<T, inferO<T>>;
121
- export type inferT<T extends StandardOutput = StandardOutput> = Exclude<T[typeof STANDARD_KEY]['types'], undefined>['output'];
128
+ type _inferT<T extends StandardOutput = StandardOutput> = Exclude<T[typeof STANDARD_KEY]['types'], undefined>['output'];
129
+ export type inferT<T extends StandardOutput = StandardOutput> = _inferT<T>;
122
130
  export type ProduceObject<T extends ObjectT = ObjectT> = T;
123
131
  export type FnBasic<Main extends Fn, Tr extends object> = Tr & Main;
124
132
  type ReduceTupleSafePre<T extends ReadonlyArray<ObjectT>> = T extends readonly [
125
133
  infer First extends ObjectT,
126
134
  ...infer Rest extends ReadonlyArray<ObjectT>
127
135
  ] ? readonly [SafePre<First>, ...ReduceTupleSafePre<Rest>] : [];
128
- type _SafePre<T extends ObjectT> = PrimitiveObjectT extends T ? PrimitiveObjectT : PrimitiveT extends T ? PrimitiveT : T extends Types ? T : T extends PartialCustom<infer TPartial> ? Partial<SafePre<TPartial>> : T extends ArrayCustom<infer A> ? SafePre<A>[] : T extends Optional<infer TOptional> ? SafePre<TOptional> | undefined : T extends SoRaCustom<infer TSoRa> ? SoRa<SafePre<TSoRa>> : T extends SoaCustom<infer TSoA> ? SoA<SafePre<TSoA>> : T extends Custom ? T : T extends AnyArray<ObjectT> ? ReduceTupleSafePre<T> : PrimitiveObjectMapS extends T ? PrimitiveObjectMapS : ObjectMapS extends T ? ObjectMapS : T extends ObjectMapS ? {
129
- [K in keyof T]: SafePre<T[K]>;
130
- } : T;
136
+ type _SafePre<T extends ObjectT> = PrimitiveObjectT extends T ? PrimitiveObjectT : PrimitiveT extends T ? PrimitiveT : T extends Types ? T : T extends PartialCustom<infer TPartial> ? Partial<_SafePre<TPartial>> : T extends ArrayCustom<infer A> ? _SafePre<A>[] : T extends Optional<infer TOptional> ? _SafePre<TOptional> | undefined : T extends SoRaCustom<infer TSoRa> ? SoRa<_SafePre<TSoRa>> : T extends SoaCustom<infer TSoA> ? SoA<_SafePre<TSoA>> : T extends Custom ? T : T extends AnyArray<ObjectT> ? ReduceTupleSafePre<T> : PrimitiveObjectMapS extends T ? PrimitiveObjectMapS : ObjectMapS extends T ? ObjectMapS : {
137
+ [K in keyof T]: T[K] extends infer Tk extends ObjectT ? _SafePre<Tk> : T[K];
138
+ };
131
139
  export type SafePre<T extends ObjectT> = Extract<_SafePre<T>, ObjectT>;
132
140
  export * from './standard.types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bemedev/typings",
3
- "version": "1.1.5",
3
+ "version": "1.1.6",
4
4
  "description": "Typings by variables",
5
5
  "author": {
6
6
  "email": "bri_lvi@icloud.com",
@@ -68,10 +68,11 @@
68
68
  "node": ">=24"
69
69
  },
70
70
  "scripts": {
71
+ "prune": "pnpm store prune",
71
72
  "build": "pnpm rm:lib && pnpm run rolldown",
72
73
  "_ci": "pnpm clean --lockfile && pnpm run config:off && pnpm run lint && pnpm run test",
73
74
  "ci": "CI_START=$(date +%s) && pnpm run _ci && pnpm run p-q && echo \"\n✅ CI takes $(($(date +%s) - CI_START))s\n\"",
74
- "ci:admin": "CI_START=$(date +%s) && pnpm run rm && pnpm run upgrade:fast && pnpm run _ci && echo \"\n✅ Admin CI takes $(($(date +%s) - CI_START))s\n\"",
75
+ "ci:admin": "CI_START=$(date +%s) && pnpm run prune && pnpm run rm && pnpm run upgrade:fast && pnpm run _ci && echo \"\n✅ Admin CI takes $(($(date +%s) - CI_START))s\n\"",
75
76
  "clean": "pnpm run rm && pnpm run config",
76
77
  "config": "pnpm install",
77
78
  "config:off": "pnpm run config --offline",