Socket
Socket
Sign inDemoInstall

@effect/schema

Package Overview
Dependencies
Maintainers
3
Versions
328
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@effect/schema - npm Package Compare versions

Comparing version 0.17.5 to 0.18.0

4

Arbitrary.js

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

exports.ArbitraryHookId = ArbitraryHookId;
const to = schema => go(AST.getTo(schema.ast));
const to = schema => go(AST.to(schema.ast));
/**

@@ -39,3 +39,3 @@ * @category arbitrary

exports.to = to;
const from = schema => go(AST.getFrom(schema.ast));
const from = schema => go(AST.from(schema.ast));
exports.from = from;

@@ -42,0 +42,0 @@ const record = (fc, key, value) => fc.array(fc.tuple(key, value), {

@@ -988,11 +988,7 @@ /**

*/
export declare const getTo: (ast: AST) => AST;
export declare const to: (ast: AST) => AST;
/**
* @since 1.0.0
*/
export declare const getFrom: (ast: AST) => AST;
/**
* @since 1.0.0
*/
export declare const reverse: (ast: AST) => AST;
export declare const from: (ast: AST) => AST;
//# sourceMappingURL=AST.d.ts.map

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

});
exports.voidKeyword = exports.unknownKeyword = exports.undefinedKeyword = exports.symbolKeyword = exports.stringKeyword = exports.setAnnotation = exports.reverse = exports.required = exports.pick = exports.partial = exports.omit = exports.objectKeyword = exports.numberKeyword = exports.neverKeyword = exports.mergeAnnotations = exports.keyof = exports.isVoidKeyword = exports.isUnknownKeyword = exports.isUniqueSymbol = exports.isUnion = exports.isUndefinedKeyword = exports.isTypeLiteral = exports.isTuple = exports.isTransform = exports.isTemplateLiteral = exports.isSymbolKeyword = exports.isStringKeyword = exports.isRefinement = exports.isParameter = exports.isObjectKeyword = exports.isNumberKeyword = exports.isNeverKeyword = exports.isLiteral = exports.isLazy = exports.isEnums = exports.isDeclaration = exports.isBooleanKeyword = exports.isBigIntKeyword = exports.isAnyKeyword = exports.getWeight = exports.getTo = exports.getPropertySignatures = exports.getFrom = exports.getCompiler = exports.getCardinality = exports.getAnnotation = exports.createUniqueSymbol = exports.createUnion = exports.createTypeLiteral = exports.createTuple = exports.createTransformByPropertySignatureTransformations = exports.createTransform = exports.createTemplateLiteral = exports.createRefinement = exports.createRecord = exports.createPropertySignatureTransformation = exports.createPropertySignature = exports.createLiteral = exports.createLazy = exports.createIndexSignature = exports.createEnums = exports.createElement = exports.createDeclaration = exports.booleanKeyword = exports.bigIntKeyword = exports.appendRestElement = exports.appendElement = exports.anyKeyword = exports._createTransform = exports.TypeAnnotationId = exports.TitleAnnotationId = exports.MessageAnnotationId = exports.JSONSchemaAnnotationId = exports.IdentifierAnnotationId = exports.ExamplesAnnotationId = exports.DocumentationAnnotationId = exports.DescriptionAnnotationId = exports.BrandAnnotationId = void 0;
exports.voidKeyword = exports.unknownKeyword = exports.undefinedKeyword = exports.to = exports.symbolKeyword = exports.stringKeyword = exports.setAnnotation = exports.required = exports.pick = exports.partial = exports.omit = exports.objectKeyword = exports.numberKeyword = exports.neverKeyword = exports.mergeAnnotations = exports.keyof = exports.isVoidKeyword = exports.isUnknownKeyword = exports.isUniqueSymbol = exports.isUnion = exports.isUndefinedKeyword = exports.isTypeLiteral = exports.isTuple = exports.isTransform = exports.isTemplateLiteral = exports.isSymbolKeyword = exports.isStringKeyword = exports.isRefinement = exports.isParameter = exports.isObjectKeyword = exports.isNumberKeyword = exports.isNeverKeyword = exports.isLiteral = exports.isLazy = exports.isEnums = exports.isDeclaration = exports.isBooleanKeyword = exports.isBigIntKeyword = exports.isAnyKeyword = exports.getWeight = exports.getPropertySignatures = exports.getCompiler = exports.getCardinality = exports.getAnnotation = exports.from = exports.createUniqueSymbol = exports.createUnion = exports.createTypeLiteral = exports.createTuple = exports.createTransformByPropertySignatureTransformations = exports.createTransform = exports.createTemplateLiteral = exports.createRefinement = exports.createRecord = exports.createPropertySignatureTransformation = exports.createPropertySignature = exports.createLiteral = exports.createLazy = exports.createIndexSignature = exports.createEnums = exports.createElement = exports.createDeclaration = exports.booleanKeyword = exports.bigIntKeyword = exports.appendRestElement = exports.appendElement = exports.anyKeyword = exports._createTransform = exports.TypeAnnotationId = exports.TitleAnnotationId = exports.MessageAnnotationId = exports.JSONSchemaAnnotationId = exports.IdentifierAnnotationId = exports.ExamplesAnnotationId = exports.DocumentationAnnotationId = exports.DescriptionAnnotationId = exports.BrandAnnotationId = void 0;
var _Function = /*#__PURE__*/require("@effect/data/Function");

@@ -790,27 +790,18 @@ var Number = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Number"));

exports.getCompiler = getCompiler;
const getTo = ast => {
const to = ast => {
switch (ast._tag) {
case "Declaration":
return createDeclaration(ast.typeParameters.map(getTo), getTo(ast.type), ast.decode, ast.annotations);
return createDeclaration(ast.typeParameters.map(to), to(ast.type), ast.decode, ast.annotations);
case "Tuple":
return createTuple(ast.elements.map(e => ({
...e,
type: getTo(e.type)
})), O.map(ast.rest, RA.mapNonEmpty(getTo)), ast.isReadonly, ast.annotations);
return createTuple(ast.elements.map(e => createElement(to(e.type), e.isOptional)), O.map(ast.rest, RA.mapNonEmpty(to)), ast.isReadonly, ast.annotations);
case "TypeLiteral":
return createTypeLiteral(ast.propertySignatures.map(p => ({
...p,
type: getTo(p.type)
})), ast.indexSignatures.map(is => ({
...is,
type: getTo(is.type)
})), ast.annotations);
return createTypeLiteral(ast.propertySignatures.map(p => createPropertySignature(p.name, to(p.type), p.isOptional, p.isReadonly, p.annotations)), ast.indexSignatures.map(is => createIndexSignature(is.parameter, to(is.type), is.isReadonly)), ast.annotations);
case "Union":
return createUnion(ast.types.map(getTo), ast.annotations);
return createUnion(ast.types.map(to), ast.annotations);
case "Lazy":
return createLazy(() => getTo(ast.f()), ast.annotations);
return createLazy(() => to(ast.f()), ast.annotations);
case "Refinement":
return createRefinement(getTo(ast.from), ast.decode, false, ast.annotations);
return createRefinement(to(ast.from), ast.decode, false, ast.annotations);
case "Transform":
return getTo(ast.to);
return to(ast.to);
}

@@ -822,55 +813,23 @@ return ast;

*/
exports.getTo = getTo;
const getFrom = ast => {
exports.to = to;
const from = ast => {
switch (ast._tag) {
case "Declaration":
return createDeclaration(ast.typeParameters.map(getFrom), getFrom(ast.type), ast.decode, ast.annotations);
return createDeclaration(ast.typeParameters.map(from), from(ast.type), ast.decode, ast.annotations);
case "Tuple":
return createTuple(ast.elements.map(e => ({
...e,
type: getFrom(e.type)
})), O.map(ast.rest, RA.mapNonEmpty(getFrom)), ast.isReadonly);
return createTuple(ast.elements.map(e => createElement(from(e.type), e.isOptional)), O.map(ast.rest, RA.mapNonEmpty(from)), ast.isReadonly);
case "TypeLiteral":
return createTypeLiteral(ast.propertySignatures.map(p => ({
...p,
type: getFrom(p.type)
})), ast.indexSignatures.map(is => ({
...is,
type: getFrom(is.type)
})));
return createTypeLiteral(ast.propertySignatures.map(p => createPropertySignature(p.name, from(p.type), p.isOptional, p.isReadonly)), ast.indexSignatures.map(is => createIndexSignature(is.parameter, from(is.type), is.isReadonly)));
case "Union":
return createUnion(ast.types.map(getFrom));
return createUnion(ast.types.map(from));
case "Lazy":
return createLazy(() => getFrom(ast.f()));
return createLazy(() => from(ast.f()));
case "Refinement":
case "Transform":
return getFrom(ast.from);
return from(ast.from);
}
return ast;
};
/**
* @since 1.0.0
*/
exports.getFrom = getFrom;
const reverse = ast => {
switch (ast._tag) {
case "Declaration":
return createDeclaration(ast.typeParameters.map(reverse), ast.type, ast.decode, ast.annotations);
case "Tuple":
return createTuple(ast.elements.map(e => createElement(reverse(e.type), e.isOptional)), O.map(ast.rest, RA.mapNonEmpty(reverse)), ast.isReadonly);
case "TypeLiteral":
return createTypeLiteral(ast.propertySignatures.map(ps => createPropertySignature(ps.name, reverse(ps.type), ps.isOptional, ps.isReadonly, ps.annotations)), ast.indexSignatures.map(is => createIndexSignature(is.parameter, reverse(is.type), is.isReadonly)));
case "Union":
return createUnion(ast.types.map(reverse));
case "Lazy":
return createLazy(() => reverse(ast.f()));
case "Refinement":
return createRefinement(ast.from, ast.decode, !ast.isReversed, ast.annotations);
case "Transform":
return _createTransform(reverse(ast.to), reverse(ast.from), ast.encode, ast.decode, ast.propertySignatureTransformations.map(t => createPropertySignatureTransformation(t.to, t.from, t.encode, t.decode)));
}
return ast;
};
/** @internal */
exports.reverse = reverse;
exports.from = from;
const getCardinality = ast => {

@@ -877,0 +836,0 @@ switch (ast._tag) {

{
"name": "@effect/schema",
"version": "0.17.5",
"version": "0.18.0",
"license": "MIT",

@@ -5,0 +5,0 @@ "repository": {

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

});
exports.validateResult = exports.validatePromise = exports.validateOption = exports.validateEither = exports.validateEffect = exports.validate = exports.parseResult = exports.parsePromise = exports.parseOption = exports.parseEither = exports.parseEffect = exports.parse = exports.is = exports.encodeResult = exports.encodePromise = exports.encodeOption = exports.encodeEither = exports.encodeEffect = exports.encode = exports.decodeResult = exports.decodePromise = exports.decodeOption = exports.decodeEither = exports.decodeEffect = exports.decode = exports.asserts = exports._getSearchTree = exports._getLiterals = void 0;
exports.validateResult = exports.validatePromise = exports.validateOption = exports.validateEither = exports.validateEffect = exports.validate = exports.reverse = exports.parseResult = exports.parsePromise = exports.parseOption = exports.parseEither = exports.parseEffect = exports.parse = exports.is = exports.encodeResult = exports.encodePromise = exports.encodeOption = exports.encodeEither = exports.encodeEffect = exports.encode = exports.decodeResult = exports.decodePromise = exports.decodeOption = exports.decodeEither = exports.decodeEffect = exports.decode = exports.asserts = exports._getSearchTree = exports._getLiterals = void 0;
var _Debug = /*#__PURE__*/require("@effect/data/Debug");

@@ -135,3 +135,3 @@ var E = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@effect/data/Either"));

exports.decodeEffect = decodeEffect;
const validate = schema => get(AST.getTo(schema.ast));
const validate = schema => get(AST.to(schema.ast));
/**

@@ -142,3 +142,3 @@ * @category validation

exports.validate = validate;
const validateOption = schema => getOption(AST.getTo(schema.ast));
const validateOption = schema => getOption(AST.to(schema.ast));
/**

@@ -149,3 +149,3 @@ * @category validation

exports.validateOption = validateOption;
const validateEither = schema => getEither(AST.getTo(schema.ast));
const validateEither = schema => getEither(AST.to(schema.ast));
/**

@@ -156,3 +156,3 @@ * @category validation

exports.validateEither = validateEither;
const validateResult = schema => go(AST.getTo(schema.ast));
const validateResult = schema => go(AST.to(schema.ast));
/**

@@ -163,3 +163,3 @@ * @category validation

exports.validateResult = validateResult;
const validatePromise = schema => getPromise(AST.getTo(schema.ast));
const validatePromise = schema => getPromise(AST.to(schema.ast));
/**

@@ -170,3 +170,3 @@ * @category validation

exports.validatePromise = validatePromise;
const validateEffect = schema => getEffect(AST.getTo(schema.ast));
const validateEffect = schema => getEffect(AST.to(schema.ast));
/**

@@ -197,3 +197,3 @@ * @category validation

exports.asserts = asserts;
const encode = schema => get(AST.reverse(schema.ast));
const encode = schema => get(reverse(schema.ast));
/**

@@ -204,3 +204,3 @@ * @category encoding

exports.encode = encode;
const encodeOption = schema => getOption(AST.reverse(schema.ast));
const encodeOption = schema => getOption(reverse(schema.ast));
/**

@@ -211,3 +211,3 @@ * @category encoding

exports.encodeOption = encodeOption;
const encodeEither = schema => getEither(AST.reverse(schema.ast));
const encodeEither = schema => getEither(reverse(schema.ast));
/**

@@ -218,3 +218,3 @@ * @category encoding

exports.encodeEither = encodeEither;
const encodeResult = schema => go(AST.reverse(schema.ast));
const encodeResult = schema => go(reverse(schema.ast));
/**

@@ -225,3 +225,3 @@ * @category encoding

exports.encodeResult = encodeResult;
const encodePromise = schema => getPromise(AST.reverse(schema.ast));
const encodePromise = schema => getPromise(reverse(schema.ast));
/**

@@ -232,3 +232,3 @@ * @category encoding

exports.encodePromise = encodePromise;
const encodeEffect = schema => getEffect(AST.reverse(schema.ast));
const encodeEffect = schema => getEffect(reverse(schema.ast));
exports.encodeEffect = encodeEffect;

@@ -240,4 +240,4 @@ const go = /*#__PURE__*/(0, _Debug.untracedMethod)(() => (ast, isBoundary = true) => {

if (ast.isReversed) {
const from = go(AST.getTo(ast), isBoundary);
const to = go(AST.reverse(dropRightRefinement(ast.from)), false);
const from = go(AST.to(ast), isBoundary);
const to = go(reverse(dropRightRefinement(ast.from)), false);
return (i, options) => handleForbidden(PR.flatMap(from(i, options), a => to(a, options)), options);

@@ -820,3 +820,3 @@ } else {

const propertySignature = ast.propertySignatures[i];
const type = AST.getFrom(propertySignature.type);
const type = AST.from(propertySignature.type);
if (AST.isLiteral(type) && !propertySignature.isOptional) {

@@ -917,2 +917,23 @@ out.push([propertySignature.name, type]);

}
/** @internal */
const reverse = ast => {
switch (ast._tag) {
case "Declaration":
return AST.createDeclaration(ast.typeParameters.map(reverse), ast.type, ast.decode, ast.annotations);
case "Tuple":
return AST.createTuple(ast.elements.map(e => AST.createElement(reverse(e.type), e.isOptional)), O.map(ast.rest, RA.mapNonEmpty(reverse)), ast.isReadonly);
case "TypeLiteral":
return AST.createTypeLiteral(ast.propertySignatures.map(ps => AST.createPropertySignature(ps.name, reverse(ps.type), ps.isOptional, ps.isReadonly, ps.annotations)), ast.indexSignatures.map(is => AST.createIndexSignature(is.parameter, reverse(is.type), is.isReadonly)));
case "Union":
return AST.createUnion(ast.types.map(reverse));
case "Lazy":
return AST.createLazy(() => reverse(ast.f()));
case "Refinement":
return AST.createRefinement(ast.from, ast.decode, !ast.isReversed, ast.annotations);
case "Transform":
return AST._createTransform(reverse(ast.to), reverse(ast.from), ast.encode, ast.decode, ast.propertySignatureTransformations.map(t => AST.createPropertySignatureTransformation(t.to, t.from, t.encode, t.decode)));
}
return ast;
};
exports.reverse = reverse;
//# sourceMappingURL=Parser.js.map

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

exports.to = to;
const from = schema => compile(AST.getFrom(schema.ast));
const from = schema => compile(AST.from(schema.ast));
exports.from = from;

@@ -39,0 +39,0 @@ const getHook = /*#__PURE__*/AST.getAnnotation(PrettyHookId);

@@ -45,6 +45,2 @@ /**

export declare const to: <I, A>(schema: Schema<I, A>) => Schema<A, A>;
/**
* @since 1.0.0
*/
export declare const reverse: <I, A>(schema: Schema<I, A>) => Schema<A, I>;
export {

@@ -322,27 +318,2 @@ /**

/**
* Returns an object containing all property signatures of a given schema.
*
* ```
* Schema<A> -> { [K in keyof A]: Schema<A[K]> }
* ```
*
* @param schema - The schema to extract property signatures from.
*
* @example
* import * as S from "@effect/schema/Schema"
*
* const Person = S.struct({
* name: S.string,
* age: S.number
* })
*
* const shape = S.getPropertySignatures(Person)
*
* assert.deepStrictEqual(shape.name, S.string)
* assert.deepStrictEqual(shape.age, S.number)
*
* @since 1.0.0
*/
export declare const getPropertySignatures: <I extends { [K in keyof A]: any; }, A>(schema: Schema<I, A>) => { [K_1 in keyof A]: Schema<I[K_1], A[K_1]>; };
/**
* @category model

@@ -349,0 +320,0 @@ * @since 1.0.0

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

exports.filter = filter;
exports.int = exports.instanceOf = exports.includes = exports.identifier = exports.greaterThanOrEqualToBigint = exports.greaterThanOrEqualTo = exports.greaterThanBigint = exports.greaterThan = exports.getPropertySignatures = exports.fromBrand = exports.from = exports.finite = void 0;
exports.int = exports.instanceOf = exports.includes = exports.identifier = exports.greaterThanOrEqualToBigint = exports.greaterThanOrEqualTo = exports.greaterThanBigint = exports.greaterThan = exports.fromBrand = exports.from = exports.finite = void 0;
Object.defineProperty(exports, "is", {

@@ -97,4 +97,4 @@ enumerable: true,

});
exports.length = exports.lazy = exports.keyof = exports.json = exports.itemsCount = void 0;
exports.optionalElement = exports.optional = exports.optionFromSelf = exports.optionFromNullable = exports.option = exports.omit = exports.object = exports.numberFromString = exports.number = exports.nullable = exports.null = exports.not = exports.nonPositiveBigint = exports.nonPositive = exports.nonNegativeBigint = exports.nonNegative = exports.nonNaN = exports.nonEmptyArray = exports.nonEmpty = exports.never = exports.negativeBigint = exports.negative = exports.multipleOf = exports.minLength = exports.minItems = exports.message = exports.maxLength = exports.maxItems = exports.make = exports.literal = exports.lessThanOrEqualToBigint = exports.lessThanOrEqualTo = exports.lessThanBigint = exports.lessThan = void 0;
exports.lessThan = exports.length = exports.lazy = exports.keyof = exports.json = exports.itemsCount = void 0;
exports.optionalElement = exports.optional = exports.optionFromSelf = exports.optionFromNullable = exports.option = exports.omit = exports.object = exports.numberFromString = exports.number = exports.nullable = exports.null = exports.not = exports.nonPositiveBigint = exports.nonPositive = exports.nonNegativeBigint = exports.nonNegative = exports.nonNaN = exports.nonEmptyArray = exports.nonEmpty = exports.never = exports.negativeBigint = exports.negative = exports.multipleOf = exports.minLength = exports.minItems = exports.message = exports.maxLength = exports.maxItems = exports.make = exports.literal = exports.lessThanOrEqualToBigint = exports.lessThanOrEqualTo = exports.lessThanBigint = void 0;
Object.defineProperty(exports, "parse", {

@@ -136,3 +136,3 @@ enumerable: true,

});
exports.validDate = exports.unknown = exports.uniqueSymbol = exports.union = exports.undefined = exports.tuple = exports.trimmed = exports.trim = exports.transformResult = exports.transform = exports.to = exports.title = exports.templateLiteral = exports.symbol = exports.struct = exports.string = exports.startsWith = exports.reverse = exports.rest = exports.required = exports.record = exports.readonlySetFromSelf = exports.readonlySet = exports.readonlyMapFromSelf = exports.readonlyMap = exports.propertySignature = exports.positiveBigint = exports.positive = exports.pick = exports.pattern = exports.partial = void 0;
exports.validDate = exports.unknown = exports.uniqueSymbol = exports.union = exports.undefined = exports.tuple = exports.trimmed = exports.trim = exports.transformResult = exports.transform = exports.to = exports.title = exports.templateLiteral = exports.symbol = exports.struct = exports.string = exports.startsWith = exports.rest = exports.required = exports.record = exports.readonlySetFromSelf = exports.readonlySet = exports.readonlyMapFromSelf = exports.readonlyMap = exports.propertySignature = exports.positiveBigint = exports.positive = exports.pick = exports.pattern = exports.partial = void 0;
Object.defineProperty(exports, "validate", {

@@ -201,3 +201,3 @@ enumerable: true,

*/
const from = schema => make(AST.getFrom(schema.ast));
const from = schema => make(AST.from(schema.ast));
/**

@@ -207,10 +207,5 @@ * @since 1.0.0

exports.from = from;
const to = schema => make(AST.getTo(schema.ast));
/**
* @since 1.0.0
*/
const to = schema => make(AST.to(schema.ast));
/* c8 ignore start */
exports.to = to;
const reverse = schema => make(AST.reverse(schema.ast));
/* c8 ignore start */
exports.reverse = reverse;
/* c8 ignore end */

@@ -437,3 +432,3 @@ // ---------------------------------------------

fromPropertySignatures.push(AST.createPropertySignature(key, field._from, true, true));
toPropertySignatures.push(AST.createPropertySignature(key, AST.getTo(field._from), true, true, field._annotations));
toPropertySignatures.push(AST.createPropertySignature(key, AST.to(field._from), true, true, field._annotations));
break;

@@ -444,3 +439,3 @@ }

fromPropertySignatures.push(AST.createPropertySignature(key, field._from, true, true));
toPropertySignatures.push(AST.createPropertySignature(key, AST.getTo(field._from), false, true, field._annotations));
toPropertySignatures.push(AST.createPropertySignature(key, AST.to(field._from), false, true, field._annotations));
propertySignatureTransformations.push(AST.createPropertySignatureTransformation(key, key, O.orElse(() => O.some(optional.value())), _Function.identity));

@@ -452,3 +447,3 @@ break;

fromPropertySignatures.push(AST.createPropertySignature(key, field._from, true, true));
toPropertySignatures.push(AST.createPropertySignature(key, optionFromSelf(make(AST.getTo(field._from))).ast, false, true, field._annotations));
toPropertySignatures.push(AST.createPropertySignature(key, optionFromSelf(make(AST.to(field._from))).ast, false, true, field._annotations));
propertySignatureTransformations.push(AST.createPropertySignatureTransformation(key, key, O.some, O.flatten));

@@ -461,3 +456,3 @@ break;

fromPropertySignatures.push(AST.createPropertySignature(key, field._from, false, true));
toPropertySignatures.push(AST.createPropertySignature(key, AST.getTo(field._from), false, true, field._annotations));
toPropertySignatures.push(AST.createPropertySignature(key, AST.to(field._from), false, true, field._annotations));
}

@@ -467,3 +462,3 @@ } else {

fromPropertySignatures.push(AST.createPropertySignature(key, field.ast, false, true));
toPropertySignatures.push(AST.createPropertySignature(key, AST.getTo(field.ast), false, true));
toPropertySignatures.push(AST.createPropertySignature(key, AST.to(field.ast), false, true));
}

@@ -502,36 +497,2 @@ }

/**
* Returns an object containing all property signatures of a given schema.
*
* ```
* Schema<A> -> { [K in keyof A]: Schema<A[K]> }
* ```
*
* @param schema - The schema to extract property signatures from.
*
* @example
* import * as S from "@effect/schema/Schema"
*
* const Person = S.struct({
* name: S.string,
* age: S.number
* })
*
* const shape = S.getPropertySignatures(Person)
*
* assert.deepStrictEqual(shape.name, S.string)
* assert.deepStrictEqual(shape.age, S.number)
*
* @since 1.0.0
*/
exports.omit = omit;
const getPropertySignatures = schema => {
const out = {};
const propertySignatures = AST.getPropertySignatures(schema.ast);
for (let i = 0; i < propertySignatures.length; i++) {
const propertySignature = propertySignatures[i];
out[propertySignature.name] = make(propertySignature.type);
}
return out;
};
/**
* Returns a nominal branded schema by applying a brand to a given schema.

@@ -556,3 +517,3 @@ *

*/
exports.getPropertySignatures = getPropertySignatures;
exports.omit = omit;
const brand = (brand, options) => self => {

@@ -559,0 +520,0 @@ const annotations = toAnnotations(options);

@@ -36,3 +36,3 @@ /**

schema: S.Schema<I, A>
): (fc: typeof FastCheck) => FastCheck.Arbitrary<A> => go(AST.getTo(schema.ast))
): (fc: typeof FastCheck) => FastCheck.Arbitrary<A> => go(AST.to(schema.ast))

@@ -45,3 +45,3 @@ /**

schema: S.Schema<I, A>
): (fc: typeof FastCheck) => FastCheck.Arbitrary<I> => go(AST.getFrom(schema.ast))
): (fc: typeof FastCheck) => FastCheck.Arbitrary<I> => go(AST.from(schema.ast))

@@ -48,0 +48,0 @@ const record = <K extends PropertyKey, V>(

@@ -1279,8 +1279,8 @@ /**

*/
export const getTo = (ast: AST): AST => {
export const to = (ast: AST): AST => {
switch (ast._tag) {
case "Declaration":
return createDeclaration(
ast.typeParameters.map(getTo),
getTo(ast.type),
ast.typeParameters.map(to),
to(ast.type),
ast.decode,

@@ -1291,4 +1291,4 @@ ast.annotations

return createTuple(
ast.elements.map((e) => ({ ...e, type: getTo(e.type) })),
O.map(ast.rest, RA.mapNonEmpty(getTo)),
ast.elements.map((e) => createElement(to(e.type), e.isOptional)),
O.map(ast.rest, RA.mapNonEmpty(to)),
ast.isReadonly,

@@ -1299,14 +1299,18 @@ ast.annotations

return createTypeLiteral(
ast.propertySignatures.map((p) => ({ ...p, type: getTo(p.type) })),
ast.indexSignatures.map((is) => ({ ...is, type: getTo(is.type) })),
ast.propertySignatures.map((p) =>
createPropertySignature(p.name, to(p.type), p.isOptional, p.isReadonly, p.annotations)
),
ast.indexSignatures.map((is) =>
createIndexSignature(is.parameter, to(is.type), is.isReadonly)
),
ast.annotations
)
case "Union":
return createUnion(ast.types.map(getTo), ast.annotations)
return createUnion(ast.types.map(to), ast.annotations)
case "Lazy":
return createLazy(() => getTo(ast.f()), ast.annotations)
return createLazy(() => to(ast.f()), ast.annotations)
case "Refinement":
return createRefinement(getTo(ast.from), ast.decode, false, ast.annotations)
return createRefinement(to(ast.from), ast.decode, false, ast.annotations)
case "Transform":
return getTo(ast.to)
return to(ast.to)
}

@@ -1319,8 +1323,8 @@ return ast

*/
export const getFrom = (ast: AST): AST => {
export const from = (ast: AST): AST => {
switch (ast._tag) {
case "Declaration":
return createDeclaration(
ast.typeParameters.map(getFrom),
getFrom(ast.type),
ast.typeParameters.map(from),
from(ast.type),
ast.decode,

@@ -1331,4 +1335,4 @@ ast.annotations

return createTuple(
ast.elements.map((e) => ({ ...e, type: getFrom(e.type) })),
O.map(ast.rest, RA.mapNonEmpty(getFrom)),
ast.elements.map((e) => createElement(from(e.type), e.isOptional)),
O.map(ast.rest, RA.mapNonEmpty(from)),
ast.isReadonly

@@ -1338,65 +1342,16 @@ )

return createTypeLiteral(
ast.propertySignatures.map((p) => ({ ...p, type: getFrom(p.type) })),
ast.indexSignatures.map((is) => ({ ...is, type: getFrom(is.type) }))
)
case "Union":
return createUnion(ast.types.map(getFrom))
case "Lazy":
return createLazy(() => getFrom(ast.f()))
case "Refinement":
case "Transform":
return getFrom(ast.from)
}
return ast
}
/**
* @since 1.0.0
*/
export const reverse = (ast: AST): AST => {
switch (ast._tag) {
case "Declaration":
return createDeclaration(
ast.typeParameters.map(reverse),
ast.type,
ast.decode,
ast.annotations
)
case "Tuple":
return createTuple(
ast.elements.map((e) => createElement(reverse(e.type), e.isOptional)),
O.map(ast.rest, RA.mapNonEmpty(reverse)),
ast.isReadonly
)
case "TypeLiteral":
return createTypeLiteral(
ast.propertySignatures.map((ps) =>
createPropertySignature(
ps.name,
reverse(ps.type),
ps.isOptional,
ps.isReadonly,
ps.annotations
)
ast.propertySignatures.map((p) =>
createPropertySignature(p.name, from(p.type), p.isOptional, p.isReadonly)
),
ast.indexSignatures.map((is) =>
createIndexSignature(is.parameter, reverse(is.type), is.isReadonly)
createIndexSignature(is.parameter, from(is.type), is.isReadonly)
)
)
case "Union":
return createUnion(ast.types.map(reverse))
return createUnion(ast.types.map(from))
case "Lazy":
return createLazy(() => reverse(ast.f()))
return createLazy(() => from(ast.f()))
case "Refinement":
return createRefinement(ast.from, ast.decode, !ast.isReversed, ast.annotations)
case "Transform":
return _createTransform(
reverse(ast.to),
reverse(ast.from),
ast.encode,
ast.decode,
ast.propertySignatureTransformations.map((t) =>
createPropertySignatureTransformation(t.to, t.from, t.encode, t.decode)
)
)
return from(ast.from)
}

@@ -1403,0 +1358,0 @@ return ast

@@ -159,3 +159,3 @@ /**

schema: Schema<_, A>
): (a: unknown, options?: ParseOptions) => A => get(AST.getTo(schema.ast))
): (a: unknown, options?: ParseOptions) => A => get(AST.to(schema.ast))

@@ -168,3 +168,3 @@ /**

schema: Schema<_, A>
): (a: unknown, options?: ParseOptions) => Option<A> => getOption(AST.getTo(schema.ast))
): (a: unknown, options?: ParseOptions) => Option<A> => getOption(AST.to(schema.ast))

@@ -178,3 +178,3 @@ /**

): (a: unknown, options?: ParseOptions) => E.Either<PR.ParseError, A> =>
getEither(AST.getTo(schema.ast))
getEither(AST.to(schema.ast))

@@ -187,3 +187,3 @@ /**

schema: Schema<_, A>
): (a: unknown, options?: ParseOptions) => PR.ParseResult<A> => go(AST.getTo(schema.ast))
): (a: unknown, options?: ParseOptions) => PR.ParseResult<A> => go(AST.to(schema.ast))

@@ -196,3 +196,3 @@ /**

schema: Schema<_, A>
): (i: unknown, options?: ParseOptions) => Promise<A> => getPromise(AST.getTo(schema.ast))
): (i: unknown, options?: ParseOptions) => Promise<A> => getPromise(AST.to(schema.ast))

@@ -206,3 +206,3 @@ /**

): (a: unknown, options?: ParseOptions) => Effect.Effect<never, PR.ParseError, A> =>
getEffect(AST.getTo(schema.ast))
getEffect(AST.to(schema.ast))

@@ -242,3 +242,3 @@ /**

export const encode = <I, A>(schema: Schema<I, A>): (a: A, options?: ParseOptions) => I =>
get(AST.reverse(schema.ast))
get(reverse(schema.ast))

@@ -251,3 +251,3 @@ /**

schema: Schema<I, A>
): (input: A, options?: ParseOptions) => Option<I> => getOption(AST.reverse(schema.ast))
): (input: A, options?: ParseOptions) => Option<I> => getOption(reverse(schema.ast))

@@ -260,4 +260,3 @@ /**

schema: Schema<I, A>
): (a: A, options?: ParseOptions) => E.Either<PR.ParseError, I> =>
getEither(AST.reverse(schema.ast))
): (a: A, options?: ParseOptions) => E.Either<PR.ParseError, I> => getEither(reverse(schema.ast))

@@ -270,3 +269,3 @@ /**

schema: Schema<I, A>
): (a: A, options?: ParseOptions) => PR.ParseResult<I> => go(AST.reverse(schema.ast))
): (a: A, options?: ParseOptions) => PR.ParseResult<I> => go(reverse(schema.ast))

@@ -279,3 +278,3 @@ /**

schema: Schema<I, A>
): (a: A, options?: ParseOptions) => Promise<I> => getPromise(AST.reverse(schema.ast))
): (a: A, options?: ParseOptions) => Promise<I> => getPromise(reverse(schema.ast))

@@ -289,3 +288,3 @@ /**

): (a: A, options?: ParseOptions) => Effect.Effect<never, PR.ParseError, I> =>
getEffect(AST.reverse(schema.ast))
getEffect(reverse(schema.ast))

@@ -305,4 +304,4 @@ interface ParseEffectOptions extends ParseOptions {

if (ast.isReversed) {
const from = go(AST.getTo(ast), isBoundary)
const to = go(AST.reverse(dropRightRefinement(ast.from)), false)
const from = go(AST.to(ast), isBoundary)
const to = go(reverse(dropRightRefinement(ast.from)), false)
return (i, options) =>

@@ -958,3 +957,3 @@ handleForbidden(PR.flatMap(from(i, options), (a) => to(a, options)), options)

const propertySignature = ast.propertySignatures[i]
const type = AST.getFrom(propertySignature.type)
const type = AST.from(propertySignature.type)
if (AST.isLiteral(type) && !propertySignature.isOptional) {

@@ -1079,1 +1078,52 @@ out.push([propertySignature.name, type])

}
/** @internal */
export const reverse = (ast: AST.AST): AST.AST => {
switch (ast._tag) {
case "Declaration":
return AST.createDeclaration(
ast.typeParameters.map(reverse),
ast.type,
ast.decode,
ast.annotations
)
case "Tuple":
return AST.createTuple(
ast.elements.map((e) => AST.createElement(reverse(e.type), e.isOptional)),
O.map(ast.rest, RA.mapNonEmpty(reverse)),
ast.isReadonly
)
case "TypeLiteral":
return AST.createTypeLiteral(
ast.propertySignatures.map((ps) =>
AST.createPropertySignature(
ps.name,
reverse(ps.type),
ps.isOptional,
ps.isReadonly,
ps.annotations
)
),
ast.indexSignatures.map((is) =>
AST.createIndexSignature(is.parameter, reverse(is.type), is.isReadonly)
)
)
case "Union":
return AST.createUnion(ast.types.map(reverse))
case "Lazy":
return AST.createLazy(() => reverse(ast.f()))
case "Refinement":
return AST.createRefinement(ast.from, ast.decode, !ast.isReversed, ast.annotations)
case "Transform":
return AST._createTransform(
reverse(ast.to),
reverse(ast.from),
ast.encode,
ast.decode,
ast.propertySignatureTransformations.map((t) =>
AST.createPropertySignatureTransformation(t.to, t.from, t.encode, t.decode)
)
)
}
return ast
}

@@ -37,4 +37,3 @@ /**

*/
export const from = <I, A>(schema: Schema<I, A>): (i: I) => string =>
compile(AST.getFrom(schema.ast))
export const from = <I, A>(schema: Schema<I, A>): (i: I) => string => compile(AST.from(schema.ast))

@@ -41,0 +40,0 @@ const getHook = AST.getAnnotation<(...args: ReadonlyArray<Pretty<any>>) => Pretty<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

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

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

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

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

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

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 too big to display

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