Socket
Socket
Sign inDemoInstall

@orion-js/schema

Package Overview
Dependencies
Maintainers
2
Versions
110
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@orion-js/schema - npm Package Compare versions

Comparing version 3.0.0-alpha.12 to 3.0.0-alpha.13

lib/types/types.test.d.ts

4

lib/clean/cleanType.d.ts

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

import { CurrentNodeInfo, SchemaMetaFieldType, SchemaNode, SchemaNodeType } from '../types/schema';
import { CurrentNodeInfo, SchemaMetaFieldType, SchemaNode } from '../types/schema';
import { FieldValidatorType } from '../types/fieldValidators';
export default function cleanType<T extends SchemaNodeType>(type: SchemaMetaFieldType<T> | FieldValidatorType, fieldSchema: Partial<SchemaNode<T>>, value: T, info: CurrentNodeInfo<any>, ...args: any[]): Promise<T>;
export default function cleanType(type: SchemaMetaFieldType | FieldValidatorType, fieldSchema: Partial<SchemaNode>, value: any, info: CurrentNodeInfo, ...args: any[]): Promise<any>;

@@ -16,3 +16,3 @@ "use strict";

if (rootFieldClean && !(0, isNil_1.default)(value)) {
value = (await rootFieldClean(value, info, ...args));
value = await rootFieldClean(value, info, ...args);
}

@@ -46,3 +46,3 @@ let needReClean = false;

if (needReClean && rootFieldClean && !(0, isNil_1.default)(value)) {
value = (await rootFieldClean(value, info, ...args));
value = await rootFieldClean(value, info, ...args);
}

@@ -49,0 +49,0 @@ return value;

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

import { SchemaNode, SchemaNodeType } from '../types/schema';
export default function getObjectNode<T extends SchemaNodeType>(schema: Partial<SchemaNode<T>>, value: T | T[]): SchemaNode<object> | void;
import { SchemaNode } from '../types/schema';
export default function getObjectNode(schema: Partial<SchemaNode>, value: any): SchemaNode | void;

@@ -6,3 +6,2 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const schema_1 = require("../types/schema");
const index_1 = __importDefault(require("./index"));

@@ -129,3 +128,3 @@ test('autoconverts values', async () => {

const schema = {
texts: (0, schema_1.asSchemaNode)({
texts: {
type: [String],

@@ -135,3 +134,3 @@ autoValue(values) {

}
})
}
};

@@ -319,3 +318,3 @@ const doc = {

const item = {
name: (0, schema_1.asSchemaNode)({
name: {
type: String,

@@ -326,6 +325,6 @@ async autoValue(name, { currentDoc }) {

}
})
}
};
const schema = {
items: (0, schema_1.asSchemaNode)({
items: {
type: [item],

@@ -336,3 +335,3 @@ async autoValue(items, { currentDoc }) {

}
})
}
};

@@ -348,3 +347,5 @@ expect.assertions(2);

},
__clean() { }
__clean() {
return undefined;
}
};

@@ -351,0 +352,0 @@ const schema = {

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

import { CurrentNodeInfo, SchemaNodeType } from '../types/schema';
declare const clean: <T extends SchemaNodeType>(info: CurrentNodeInfo<T, any>) => Promise<T>;
import { CurrentNodeInfo } from '../types/schema';
declare const clean: (info: CurrentNodeInfo) => Promise<any>;
export default clean;

@@ -1,13 +0,13 @@

import { CleanFunction, SchemaNodeType, ValidateFunction } from './types/schema';
export interface FieldTypeOpts<T extends SchemaNodeType> {
import { CleanFunction, ValidateFunction } from './types/schema';
export interface FieldTypeOpts {
name: string;
validate?: ValidateFunction<T>;
clean?: CleanFunction<T>;
validate?: ValidateFunction;
clean?: CleanFunction;
}
export interface FieldType<T extends SchemaNodeType> {
export interface FieldType {
name: string;
validate: ValidateFunction<T>;
clean: CleanFunction<T>;
validate: ValidateFunction;
clean: CleanFunction;
_isFieldType: boolean;
}
export default function fieldType<T extends SchemaNodeType>(opts: FieldTypeOpts<T>): FieldType<T>;
export default function fieldType(opts: FieldTypeOpts): FieldType;

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

import { SchemaNodeType } from '../types/schema';
declare const _default: import("../fieldType").FieldType<SchemaNodeType>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<import("..").SchemaNodeType>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<import("..").SchemaNodeType>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<import("..").SchemaNodeType>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<string>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<string>;
declare const _default: import("../fieldType").FieldType;
export default _default;
declare const _default: {
array: import("../fieldType").FieldType<import("..").SchemaNodeType>;
plainObject: import("../fieldType").FieldType<object>;
string: import("../fieldType").FieldType<string>;
date: import("../fieldType").FieldType<import("..").SchemaNodeType>;
integer: import("../fieldType").FieldType<number>;
number: import("../fieldType").FieldType<number>;
ID: import("../fieldType").FieldType<string>;
boolean: import("../fieldType").FieldType<import("..").SchemaNodeType>;
email: import("../fieldType").FieldType<string>;
blackbox: import("../fieldType").FieldType<import("..").SchemaNodeType>;
array: import("../fieldType").FieldType;
plainObject: import("../fieldType").FieldType;
string: import("../fieldType").FieldType;
date: import("../fieldType").FieldType;
integer: import("../fieldType").FieldType;
number: import("../fieldType").FieldType;
ID: import("../fieldType").FieldType;
boolean: import("../fieldType").FieldType;
email: import("../fieldType").FieldType;
blackbox: import("../fieldType").FieldType;
};
export default _default;

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

declare const _default: import("../fieldType").FieldType<number>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<number>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<object>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

declare const _default: import("../fieldType").FieldType<string>;
declare const _default: import("../fieldType").FieldType;
export default _default;

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

import { CurrentNodeInfo, SchemaNodeType } from '../types/schema';
export default function doValidation<T extends SchemaNodeType>(params: CurrentNodeInfo<T>): Promise<void>;
import { CurrentNodeInfo } from '../types/schema';
export default function doValidation(params: CurrentNodeInfo): Promise<void>;

@@ -27,4 +27,5 @@ "use strict";

if ((0, isPlainObject_1.default)(currentSchema.type)) {
if (typeof currentSchema.type?.__skipChildValidation === 'function') {
if (await currentSchema.type?.__skipChildValidation(value, info)) {
const type = currentSchema.type;
if (typeof type?.__skipChildValidation === 'function') {
if (await type?.__skipChildValidation(value, info)) {
return;

@@ -60,3 +61,3 @@ }

const keyItemKeys = (0, clone_1.default)(keys);
keyItemKeys.push(i);
keyItemKeys.push(i.toString());
await doValidation({

@@ -63,0 +64,0 @@ ...info,

@@ -1,4 +0,4 @@

import { SchemaMetaFieldType, SchemaNodeType } from '../../types/schema';
import { SchemaMetaFieldType } from '../../types/schema';
import { FieldValidatorType } from '../../types/fieldValidators';
import { FieldType } from '../../fieldType';
export default function getFieldType<T extends SchemaNodeType>(type: SchemaMetaFieldType<T> | FieldValidatorType | any): FieldType<T>;
export default function getFieldType(type: SchemaMetaFieldType | FieldValidatorType | any): FieldType;

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

import { CurrentNodeInfo, SchemaNodeType } from '../../types/schema';
export default function getValidationErrors<T extends SchemaNodeType>(params: CurrentNodeInfo<T>): Promise<object | string | void>;
import { CurrentNodeInfo } from '../../types/schema';
export default function getValidationErrors(params: CurrentNodeInfo): Promise<object | string | void>;

@@ -35,4 +35,5 @@ "use strict";

}
if (currentSchema.type.__validate) {
const typeError = await currentSchema.type.__validate(value, info, ...args);
const type = currentSchema.type;
if (type.__validate) {
const typeError = await type.__validate(value, info, ...args);
if (typeError) {

@@ -39,0 +40,0 @@ return typeError;

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

import { Schema, SchemaNodeType } from '../types/schema';
export default function getValidationErrors<T extends SchemaNodeType>(schema: Schema, doc: T, passedOptions?: {}, ...args: any[]): Promise<any>;
import { Schema } from '../types/schema';
export default function getValidationErrors(schema: Schema, doc: any, passedOptions?: {}, ...args: any[]): Promise<any>;

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

import { Schema, SchemaNodeType } from './types/schema';
export default function isValid<T extends SchemaNodeType>(schema: Schema, doc: T, passedOptions?: {}, ...args: any[]): Promise<boolean>;
import { Schema } from './types/schema';
export default function isValid(schema: Schema, doc: any, passedOptions?: {}, ...args: any[]): Promise<boolean>;

@@ -0,30 +1,23 @@

import { FieldType } from '../fieldType';
export declare type Constructor<T> = new (...args: any[]) => T;
export declare type SpecialSchemaString = 'ID' | 'email' | 'string';
export declare type SpecialSchemaNumber = 'integer' | 'number';
export declare type SpecialSchemaObject = 'blackbox';
export declare type FieldTypesList = 'string' | 'date' | 'integer' | 'number' | 'ID' | 'boolean' | 'email' | 'blackbox';
export declare type ConstructorsTypesList = Constructor<String> | Constructor<Number> | Constructor<Boolean> | Constructor<Date>;
export declare type SchemaRecursiveNodeTypeExtras = {
__clean?: CleanFunction<any>;
__validate?: ValidateFunction<any>;
__clean?: CleanFunction;
__validate?: ValidateFunction;
__skipChildValidation?: (value: any, info: CurrentNodeInfo) => Promise<boolean>;
};
export declare type SchemaRecursiveType = {
[key: string]: SchemaNode<SchemaNodeType> | Function;
};
export declare type SchemaRecursiveNodeType = SchemaRecursiveType & SchemaRecursiveNodeTypeExtras;
export declare type SchemaNodeType = string | Date | number | boolean | object | SchemaNodeArrayType;
export declare type SchemaNodeArrayType = Array<string> | Array<Date> | Array<number> | Array<boolean> | Array<object>;
/**
* Converts the SchemaNodeType to its abstraction.
* E.g. if the Node has type string, it will return the String constructor.
*/
export declare type StringAllowedTypeValues = SpecialSchemaString | Constructor<String>;
export declare type NumberAllowedTypeValues = SpecialSchemaNumber | Constructor<Number>;
export declare type ObjectAllowedTypeValues = SpecialSchemaObject | SchemaRecursiveNodeType;
export declare type SchemaMetaFieldType<T> = T extends string ? StringAllowedTypeValues : T extends number ? NumberAllowedTypeValues : T extends boolean ? Constructor<Boolean> : T extends Date ? Constructor<Date> : T extends Array<infer U> ? Array<SchemaMetaFieldType<U>> : T extends object ? ObjectAllowedTypeValues : T;
export declare type ValidateFunction<T extends SchemaNodeType> = (value: T, info?: Partial<CurrentNodeInfo<T>>, ...args: any[]) => object | string | void | Promise<object | string | void>;
export declare type CleanFunction<T extends SchemaNodeType> = (value: T, info?: Partial<CurrentNodeInfo<T>>, ...args: any[]) => T | Promise<T>;
export interface SchemaNode<T extends SchemaNodeType = SchemaNodeType> {
export interface Schema {
[key: string]: SchemaNode | Function;
}
export declare type SchemaRecursiveNodeType = Schema & SchemaRecursiveNodeTypeExtras;
export declare type SchemaMetaFieldTypeSingle = FieldTypesList | ConstructorsTypesList | SchemaRecursiveNodeType | FieldType;
export declare type SchemaMetaFieldType = SchemaMetaFieldTypeSingle | [SchemaMetaFieldTypeSingle];
export declare type ValidateFunction = (value: any, info?: Partial<CurrentNodeInfo>, ...args: any[]) => object | string | void | Promise<object | string | void>;
export declare type CleanFunction = (value: any, info?: Partial<CurrentNodeInfo>, ...args: any[]) => any | Promise<any>;
export interface SchemaNode {
/**
* The type of the field. Used for type validations. Can also contain a subschema.
*/
type: SchemaMetaFieldType<T>;
type: SchemaMetaFieldType;
/**

@@ -34,13 +27,13 @@ * Defaults to false

optional?: boolean;
allowedValues?: Array<T>;
defaultValue?: T | ((info: CurrentNodeInfo<T>, ...args: any[]) => T | Promise<T>);
allowedValues?: Array<any>;
defaultValue?: ((info: CurrentNodeInfo, ...args: any[]) => any | Promise<any>) | any;
/**
* Function that takes a value and returns an error message if there are any errors. Must return null or undefined otherwise.
*/
validate?: ValidateFunction<T>;
validate?: ValidateFunction;
/**
* Function that preprocesses a value before it is set.
*/
clean?: CleanFunction<T>;
autoValue?: (value: T, info: CurrentNodeInfo<T>, ...args: any[]) => T | Promise<T>;
clean?: CleanFunction;
autoValue?: (value: any, info: CurrentNodeInfo, ...args: any[]) => any | Promise<any>;
/**

@@ -61,9 +54,4 @@ * The minimum value if it's a number, the minimum length if it's a string or array.

*/
custom?: ValidateFunction<T>;
custom?: ValidateFunction;
}
/**
* It's the same as defining the object directly, but works better with TypeScript for type inference.
*/
export declare const asSchemaNode: <T extends SchemaNodeType>(schemaNode: SchemaNode<T>) => SchemaNode<T>;
export declare type Schema = SchemaRecursiveType;
export interface CurrentNodeInfoOptions {

@@ -77,3 +65,3 @@ autoConvert?: boolean;

}
export interface CurrentNodeInfo<T extends SchemaNodeType, S extends SchemaNodeType = any> {
export interface CurrentNodeInfo {
/**

@@ -83,15 +71,15 @@ * The global schema, prefaced by {type: {...}} to be compatible with subschemas

*/
schema?: SchemaNode<T> | Schema;
schema?: SchemaNode | Schema;
/**
* The current node subschema
*/
currentSchema?: Partial<SchemaNode<S>>;
value: T;
doc?: T;
currentDoc?: T;
currentSchema?: Partial<SchemaNode>;
value: any;
doc?: any;
currentDoc?: any;
options?: CurrentNodeInfoOptions;
args?: any[];
type?: SchemaMetaFieldType<T>;
type?: SchemaMetaFieldType;
keys?: string[];
addError?: (keys: string[], code: string | object) => void;
}
"use strict";
/* eslint-disable @typescript-eslint/ban-types */
Object.defineProperty(exports, "__esModule", { value: true });
exports.asSchemaNode = void 0;
/**
* It's the same as defining the object directly, but works better with TypeScript for type inference.
*/
const asSchemaNode = (schemaNode) => schemaNode;
exports.asSchemaNode = asSchemaNode;

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

import { Schema, SchemaNodeType } from './types/schema';
export default function validate<T extends SchemaNodeType>(schema: Schema, doc: T, passedOptions?: {}, ...args: any[]): Promise<void>;
import { Schema } from './types/schema';
export default function validate(schema: Schema, doc: any, passedOptions?: {}, ...args: any[]): Promise<void>;

@@ -6,24 +6,26 @@ "use strict";

Object.defineProperty(exports, "__esModule", { value: true });
const __1 = require("..");
const dotGetSchema_1 = __importDefault(require("./dotGetSchema"));
const tag = {
name: (0, __1.asSchemaNode)({
name: {
type: String
})
},
other: {
type: 'string'
}
};
const car = {
brand: (0, __1.asSchemaNode)({
brand: {
type: String
}),
tags: (0, __1.asSchemaNode)({
},
tags: {
type: [tag]
})
}
};
const schema = {
name: (0, __1.asSchemaNode)({
name: {
type: String
}),
car: (0, __1.asSchemaNode)({
},
car: {
type: car
})
}
};

@@ -57,5 +59,5 @@ test('handle deep schemas', async () => {

const schema = {
services: (0, __1.asSchemaNode)({
services: {
type: 'blackbox'
})
}
};

@@ -62,0 +64,0 @@ expect((0, dotGetSchema_1.default)(schema, 'services')).toBe(schema.services);

@@ -20,3 +20,3 @@ "use strict";

name: {
type: String
type: 'string'
}

@@ -26,3 +26,3 @@ };

brand: {
type: String
type: 'string'
},

@@ -35,3 +35,3 @@ tags: {

name: {
type: String
type: 'string'
},

@@ -38,0 +38,0 @@ car: {

{
"name": "@orion-js/schema",
"version": "3.0.0-alpha.12",
"version": "3.0.0-alpha.13",
"main": "lib/index.js",

@@ -13,4 +13,5 @@ "types": "lib/index.d.ts",

"prepare": "yarn run build",
"build": "tsc",
"watch": "tsc -w",
"clean": "rm -rf ./lib",
"build": "yarn run clean && tsc",
"watch": "yarn run clean && tsc -w",
"test": "jest --config jest.config.js"

@@ -30,2 +31,3 @@ },

"@types/jest": "27.0.2",
"@types/lodash": "4.14.176",
"@types/node": "16.11.1",

@@ -43,3 +45,3 @@ "@typescript-eslint/eslint-plugin": "5.1.0",

},
"gitHead": "57034d6f442e89a9c8f5dfc076e1ab366d401110"
"gitHead": "82c882da5213349bbec68e8692e18895aeb56e07"
}
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