New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

optimal

Package Overview
Dependencies
Maintainers
1
Versions
68
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

optimal - npm Package Compare versions

Comparing version 5.0.0-alpha.1 to 5.0.0-alpha.2

2

dts/criteria/common.d.ts

@@ -43,3 +43,3 @@ import { Criteria, CriteriaValidator, Schema, SchemaState, ValueComparator } from '../types';

/**
* TODO
* Validate with a specific schema when a condition is met.
*/

@@ -46,0 +46,0 @@ export declare function when<T>(state: SchemaState<T>, condition: T | ValueComparator<T>, pass: Schema<T>, fail?: Schema<T>): Criteria<T>;

@@ -1,2 +0,2 @@

import { AnySchema, ArrayCriterias, CommonCriterias, DefaultValue, InferNullable, InferSchemaType, Schema } from '../types';
import { ArrayCriterias, CommonCriterias, DefaultValue, InferNullable, Schema } from '../types';
export interface ArraySchema<T = unknown[]> extends Schema<T>, ArrayCriterias<ArraySchema<T>>, CommonCriterias<ArraySchema<T>> {

@@ -6,5 +6,5 @@ never: () => ArraySchema<never>;

nullable: () => ArraySchema<T | null>;
of: <V extends AnySchema>(schema: V) => ArraySchema<InferNullable<T, InferSchemaType<V>[]>>;
of: <V>(schema: Schema<V>) => ArraySchema<InferNullable<T, V[]>>;
}
export declare function array<T = unknown>(defaultValue?: DefaultValue<T[]>): ArraySchema<T[]>;
//# sourceMappingURL=array.d.ts.map

@@ -1,3 +0,3 @@

import { CommonCriterias, DateCriterias, DefaultValue, MaybeDate, Schema } from '../types';
export interface DateSchema<T = Date> extends Schema<T, MaybeDate>, DateCriterias<DateSchema<T>>, CommonCriterias<DateSchema<T>> {
import { CommonCriterias, DateCriterias, DefaultValue, Schema } from '../types';
export interface DateSchema<T = Date> extends Schema<T>, DateCriterias<DateSchema<T>>, CommonCriterias<DateSchema<T>> {
never: () => DateSchema<never>;

@@ -4,0 +4,0 @@ notNullable: () => DateSchema<NonNullable<T>>;

@@ -1,3 +0,3 @@

import { CommonCriterias, DefaultValue, Schema, UnknownFunction } from '../types';
export interface FunctionSchema<T = UnknownFunction> extends Schema<T>, CommonCriterias<FunctionSchema<T>> {
import { AnyFunction, CommonCriterias, DefaultValue, Schema } from '../types';
export interface FunctionSchema<T = AnyFunction> extends Schema<T>, CommonCriterias<FunctionSchema<T>> {
never: () => FunctionSchema<never>;

@@ -7,3 +7,3 @@ notNullable: () => FunctionSchema<NonNullable<T>>;

}
export declare function func<T extends (...args: any[]) => any = UnknownFunction>(defaultValue?: DefaultValue<T>): FunctionSchema<T>;
export declare function func<T extends (...args: any[]) => any = AnyFunction>(defaultValue?: DefaultValue<T>): FunctionSchema<T>;
//# sourceMappingURL=func.d.ts.map

@@ -1,2 +0,2 @@

import { AnySchema, CommonCriterias, DefaultValue, InferNullable, InferSchemaType, ObjectCriterias, Options, Schema } from '../types';
import { CommonCriterias, DefaultValue, InferNullable, ObjectCriterias, Options, Schema } from '../types';
import { StringSchema } from './string';

@@ -8,5 +8,5 @@ export interface ObjectSchema<T = object> extends Schema<T>, ObjectCriterias<ObjectSchema<T>>, CommonCriterias<ObjectSchema<T>> {

nullable: () => ObjectSchema<T | null>;
of: <V extends AnySchema, K extends PropertyKey = keyof T>(schema: V) => ObjectSchema<InferNullable<T, Record<K, InferSchemaType<V>>>>;
of: <V, K extends PropertyKey = keyof T>(schema: Schema<V>) => ObjectSchema<InferNullable<T, Record<K, V>>>;
}
export declare function object<V = unknown, K extends PropertyKey = string>(defaultValue?: DefaultValue<Record<K, V>>): ObjectSchema<Record<K, V>>;
//# sourceMappingURL=object.d.ts.map

@@ -1,3 +0,3 @@

import { Blueprint, CommonCriterias, InferNullable, Schema, ShapeCriterias } from '../types';
export interface ShapeSchema<T> extends Schema<T, Partial<T>>, ShapeCriterias<ShapeSchema<T>>, CommonCriterias<ShapeSchema<T>> {
import { Blueprint, CommonCriterias, Schema, ShapeCriterias } from '../types';
export interface ShapeSchema<T> extends Schema<T>, ShapeCriterias<ShapeSchema<T>>, CommonCriterias<ShapeSchema<T>> {
never: () => ShapeSchema<never>;

@@ -7,5 +7,5 @@ notNullable: () => ShapeSchema<NonNullable<T>>;

/** @internal */
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<InferNullable<T, S>>;
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<S>;
}
export declare function shape<T extends object>(blueprint: Blueprint<T>): ShapeSchema<T>;
//# sourceMappingURL=shape.d.ts.map
import { InferTupleItems } from '../criteria/tuples';
import { CommonCriterias, InferNullable, Schema } from '../types';
import { CommonCriterias, Schema } from '../types';
export interface TupleSchema<T> extends Schema<T>, CommonCriterias<TupleSchema<T>> {

@@ -8,5 +8,5 @@ never: () => TupleSchema<never>;

/** @internal */
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<InferNullable<T, I>>;
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<I>;
}
export declare function tuple<T extends unknown[] = unknown[]>(schemas: InferTupleItems<T>): TupleSchema<T>;
//# sourceMappingURL=tuple.d.ts.map

@@ -1,7 +0,6 @@

export declare type UnknownFunction = (...args: unknown[]) => unknown;
export declare type Primitive = bigint | boolean | number | string | symbol | null | undefined;
export declare type Builtin = Date | Error | Function | RegExp;
export declare type UnknownObject = Record<string, unknown>;
export declare type MaybeDate = Date | number | string;
export declare type Constructor<T> = (new (...args: unknown[]) => T) | (Function & {
prototype: T;
});
export declare type Constructor<T> = (abstract new (...args: any[]) => T) | (new (...args: any[]) => T);
export declare type InferNullable<P, N> = P extends null ? N | null : N;

@@ -82,6 +81,6 @@ export declare type DefaultValueInitializer<T> = (path: string, currentObject: UnknownObject, rootObject: UnknownObject) => T;

}
export interface Schema<Output, Input = Output> {
export interface Schema<Output> {
schema: () => string;
type: () => string;
validate: (value: Input | null | undefined, path?: string, options?: SchemaValidateOptions) => Output;
validate: (value: unknown, path?: string, options?: SchemaValidateOptions) => Output;
}

@@ -107,3 +106,2 @@ export interface SchemaState<T> {

export declare type Predicate<T> = (value: T | null | undefined) => boolean;
export declare type AnySchema = Schema<any, any>;
export declare type InferFromObject<T> = {

@@ -113,5 +111,7 @@ [K in keyof T]: Infer<T[K]>;

export declare type Infer<T> = T extends Schema<infer U> ? U : T extends Record<string, AnySchema> ? InferFromObject<T> : T extends AnySchema[] ? InferFromObject<T> : never;
export declare type DeepPartial<T> = T extends Function ? T : T extends (infer U)[] ? DeepPartial<U>[] : T extends Record<string, unknown> ? {
export declare type DeepPartial<T> = T extends Builtin | Primitive ? T : T extends (infer I)[] ? DeepPartial<I>[] : T extends object ? {
[K in keyof T]?: DeepPartial<T[K]>;
} : T | undefined;
} : never;
export declare type AnySchema = Schema<any>;
export declare type AnyFunction = (...args: any[]) => any;
//# sourceMappingURL=types.d.ts.map

@@ -579,3 +579,3 @@ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }

/**
* TODO
* Validate with a specific schema when a condition is met.
*/

@@ -582,0 +582,0 @@

{
"name": "optimal",
"type": "module",
"version": "5.0.0-alpha.1",
"version": "5.0.0-alpha.2",
"description": "A system for building and validating defined object structures with schemas.",

@@ -6,0 +6,0 @@ "main": "./mjs/index.mjs",

@@ -23,3 +23,3 @@ import { invalid, tryAndCollect } from './helpers';

validators: Criteria<T>[],
initialValue: T | null | undefined,
initialValue: unknown,
path: string = '',

@@ -34,3 +34,3 @@ {

let value: T | null | undefined = initialValue;
let value: unknown = initialValue;

@@ -72,3 +72,3 @@ // Handle undefined

() => {
const result = test.validate(value!, path, {
const result = test.validate(value as T, path, {
collectErrors,

@@ -92,3 +92,3 @@ currentObject,

return value!;
return value as T;
}

@@ -95,0 +95,0 @@

@@ -131,3 +131,3 @@ import { invalid, invariant, isSchema, isValidString, pathKey } from '../helpers';

/**
* TODO
* Validate with a specific schema when a condition is met.
*/

@@ -134,0 +134,0 @@ export function when<T>(

import { createSchema } from '../createSchema';
import { arrayCriteria, commonCriteria } from '../criteria';
import { createArray, invalid } from '../helpers';
import {
AnySchema,
ArrayCriterias,
CommonCriterias,
DefaultValue,
InferNullable,
InferSchemaType,
Schema,
} from '../types';
import { ArrayCriterias, CommonCriterias, DefaultValue, InferNullable, Schema } from '../types';

@@ -21,3 +13,3 @@ export interface ArraySchema<T = unknown[]>

nullable: () => ArraySchema<T | null>;
of: <V extends AnySchema>(schema: V) => ArraySchema<InferNullable<T, InferSchemaType<V>[]>>;
of: <V>(schema: Schema<V>) => ArraySchema<InferNullable<T, V[]>>;
}

@@ -24,0 +16,0 @@

import { createSchema } from '../createSchema';
import { commonCriteria, dateCriteria } from '../criteria';
import { createDate, invalid, isValidDate } from '../helpers';
import { CommonCriterias, DateCriterias, DefaultValue, MaybeDate, Schema } from '../types';
import { CommonCriterias, DateCriterias, DefaultValue, Schema } from '../types';
export interface DateSchema<T = Date>
extends Schema<T, MaybeDate>,
extends Schema<T>,
DateCriterias<DateSchema<T>>,

@@ -9,0 +9,0 @@ CommonCriterias<DateSchema<T>> {

import { createSchema } from '../createSchema';
import { commonCriteria } from '../criteria';
import { invalid } from '../helpers';
import { CommonCriterias, DefaultValue, Schema, UnknownFunction } from '../types';
import { AnyFunction,CommonCriterias, DefaultValue, Schema } from '../types';
export interface FunctionSchema<T = UnknownFunction>
export interface FunctionSchema<T = AnyFunction>
extends Schema<T>,

@@ -15,3 +15,3 @@ CommonCriterias<FunctionSchema<T>> {

// eslint-disable-next-line @typescript-eslint/no-explicit-any
export function func<T extends (...args: any[]) => any = UnknownFunction>(
export function func<T extends (...args: any[]) => any = AnyFunction>(
defaultValue?: DefaultValue<T>,

@@ -18,0 +18,0 @@ ) {

@@ -5,7 +5,5 @@ import { createSchema } from '../createSchema';

import {
AnySchema,
CommonCriterias,
DefaultValue,
InferNullable,
InferSchemaType,
ObjectCriterias,

@@ -25,5 +23,5 @@ Options,

nullable: () => ObjectSchema<T | null>;
of: <V extends AnySchema, K extends PropertyKey = keyof T>(
schema: V,
) => ObjectSchema<InferNullable<T, Record<K, InferSchemaType<V>>>>;
of: <V, K extends PropertyKey = keyof T>(
schema: Schema<V>,
) => ObjectSchema<InferNullable<T, Record<K, V>>>;
}

@@ -30,0 +28,0 @@

import { createSchema } from '../createSchema';
import { commonCriteria, shapeCriteria } from '../criteria';
import { createObject, invalid, isObject } from '../helpers';
import { Blueprint, CommonCriterias, InferNullable, Schema, ShapeCriterias } from '../types';
import { Blueprint, CommonCriterias, Schema, ShapeCriterias } from '../types';
export interface ShapeSchema<T>
extends Schema<T, Partial<T>>,
extends Schema<T>,
ShapeCriterias<ShapeSchema<T>>,

@@ -14,3 +14,3 @@ CommonCriterias<ShapeSchema<T>> {

/** @internal */
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<InferNullable<T, S>>;
of: <S extends object>(schema: Blueprint<S>) => ShapeSchema<S>;
}

@@ -17,0 +17,0 @@

@@ -5,3 +5,3 @@ import { createSchema } from '../createSchema';

import { createArray, invalid } from '../helpers';
import { CommonCriterias, InferNullable, Schema } from '../types';
import { CommonCriterias, Schema } from '../types';

@@ -13,3 +13,3 @@ export interface TupleSchema<T> extends Schema<T>, CommonCriterias<TupleSchema<T>> {

/** @internal */
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<InferNullable<T, I>>;
of: <I extends unknown[]>(schemas: InferTupleItems<I>) => TupleSchema<I>;
}

@@ -16,0 +16,0 @@

@@ -1,3 +0,5 @@

export type UnknownFunction = (...args: unknown[]) => unknown;
export type Primitive = bigint | boolean | number | string | symbol | null | undefined;
export type Builtin = Date | Error | Function | RegExp;
export type UnknownObject = Record<string, unknown>;

@@ -7,3 +9,3 @@

export type Constructor<T> = (new (...args: unknown[]) => T) | (Function & { prototype: T });
export type Constructor<T> = (abstract new (...args: any[]) => T) | (new (...args: any[]) => T);

@@ -132,10 +134,6 @@ export type InferNullable<P, N> = P extends null ? N | null : N;

export interface Schema<Output, Input = Output> {
export interface Schema<Output> {
schema: () => string;
type: () => string;
validate: (
value: Input | null | undefined,
path?: string,
options?: SchemaValidateOptions,
) => Output;
validate: (value: unknown, path?: string, options?: SchemaValidateOptions) => Output;
}

@@ -165,8 +163,4 @@

// Any is required for generics to be typed correctly for consumers
// eslint-disable-next-line @typescript-eslint/no-explicit-any
export type AnySchema = Schema<any, any>;
// INFER
// INFERR
export type InferFromObject<T> = { [K in keyof T]: Infer<T[K]> };

@@ -182,8 +176,15 @@

export type DeepPartial<T> = T extends Function
export type DeepPartial<T> = T extends Builtin | Primitive
? T
: T extends (infer U)[]
? DeepPartial<U>[]
: T extends Record<string, unknown>
: T extends (infer I)[]
? DeepPartial<I>[]
: T extends object
? { [K in keyof T]?: DeepPartial<T[K]> }
: T | undefined;
: never;
// Any is required for generics to be typed correctly for consumers
/* eslint-disable @typescript-eslint/no-explicit-any */
export type AnySchema = Schema<any>;
export type AnyFunction = (...args: any[]) => any;

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc