Huge News!Announcing our $40M Series B led by Abstract Ventures.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 3.3.0 to 3.4.0

esm/BooleanBuilder.js

18

CHANGELOG.md

@@ -1,5 +0,21 @@

## 3.3.0
## 3.4.0 - 2019-12-28
#### 🚀 Updates
- Add `never()` for all builders.
- **[bool]** Add `onlyFalse()` and `onlyTrue()` methods.
- **[string]** Add `camelCase()`, `kebabCase()`, `pascalCase()`, and `snakeCase()` methods.
#### ⚙️ Types
- Update `CustomCallback` with a struct generic.
#### 📦 Dependencies
- Update to latest.
## 3.3.0 - 2019-12-02
#### ⚙️ Types
- Refined types and replaced `any` with `unknown`.

@@ -6,0 +22,0 @@

30

esm/Builder.js

@@ -17,2 +17,4 @@ 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; }

_defineProperty(this, "isNever", false);
_defineProperty(this, "isNullable", false);

@@ -189,2 +191,11 @@

_proto.never = function never() {
if ("production" !== process.env.NODE_ENV) {
this.defaultValue = undefined;
this.isNever = true;
}
return this;
};
_proto.notNullable = function notNullable() {

@@ -272,5 +283,13 @@ if ("production" !== process.env.NODE_ENV) {

}
} else if (this.deprecatedMessage) {
} else {
if (this.deprecatedMessage) {
if ("production" !== process.env.NODE_ENV) {
console.info("Field \"" + path + "\" is deprecated. " + this.deprecatedMessage);
}
}
if ("production" !== process.env.NODE_ENV) {
console.info("Field \"" + path + "\" is deprecated. " + this.deprecatedMessage);
if (this.isNever) {
this.invariant(false, 'Field should never be used.', path);
}
}

@@ -335,9 +354,2 @@ }

export { Builder as default };
export function bool(defaultValue) {
if (defaultValue === void 0) {
defaultValue = false;
}
return new Builder('boolean', defaultValue);
}
export function custom(callback, defaultValue) {

@@ -344,0 +356,0 @@ return new Builder('custom', defaultValue).custom(callback);

@@ -6,4 +6,5 @@ /**

import optimal from './optimal';
import Builder, { bool, custom, func } from './Builder';
import Builder, { custom, func } from './Builder';
import ArrayBuilder, { array } from './ArrayBuilder';
import BooleanBuilder, { bool } from './BooleanBuilder';
import InstanceBuilder, { builder, instance, date, regex } from './InstanceBuilder';

@@ -32,4 +33,4 @@ import NumberBuilder, { number } from './NumberBuilder';

export { array, blueprint, bool, builder, custom, date, func, instance, number, object, regex, shape, string, union };
export { Builder, ArrayBuilder, InstanceBuilder, NumberBuilder, ObjectBuilder, ShapeBuilder, StringBuilder, UnionBuilder };
export { Builder, ArrayBuilder, BooleanBuilder, InstanceBuilder, NumberBuilder, ObjectBuilder, ShapeBuilder, StringBuilder, UnionBuilder };
export * from './types';
export default optimal;

@@ -18,2 +18,6 @@ function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }

_proto.camelCase = function camelCase() {
return this.match(/^[a-z][0-9A-Za-z]+$/, 'String must be in camel case.');
};
_proto.contains = function contains(token, index) {

@@ -45,3 +49,11 @@ if (index === void 0) {

_proto.match = function match(pattern) {
_proto.kebabCase = function kebabCase() {
return this.match(/^[a-z][\x2D0-9a-z]+$/, 'String must be in kebab case.');
};
_proto.match = function match(pattern, message) {
if (message === void 0) {
message = '';
}
if ("production" !== process.env.NODE_ENV) {

@@ -51,6 +63,6 @@ this.invariant(pattern instanceof RegExp, 'Match requires a regular expression to match against.');

return this.addCheck(this.checkMatch, pattern);
return this.addCheck(this.checkMatch, pattern, message);
};
_proto.checkMatch = function checkMatch(path, value, pattern) {
_proto.checkMatch = function checkMatch(path, value, pattern, message) {
if ("production" !== process.env.NODE_ENV) {

@@ -61,3 +73,3 @@ if (this.isOptionalDefault(value)) {

this.invariant(!!value.match(pattern), "String does not match pattern \"" + pattern.source + "\".", path);
this.invariant(!!value.match(pattern), (message || 'String does not match.') + " (pattern \"" + pattern.source + "\")", path);
}

@@ -93,2 +105,10 @@ };

_proto.pascalCase = function pascalCase() {
return this.match(/^[A-Z][0-9A-Za-z]+$/, 'String must be in pascal case.');
};
_proto.snakeCase = function snakeCase() {
return this.match(/^[a-z][0-9_a-z]+$/, 'String must be in snake case.');
};
return StringBuilder;

@@ -95,0 +115,0 @@ }(Builder);

@@ -15,2 +15,3 @@ import { SupportedType, CheckerCallback, CustomCallback, OptimalOptions, FuncOf } from './types';

errorMessage: string;
isNever: boolean;
isNullable: boolean;

@@ -41,3 +42,3 @@ isRequired: boolean;

*/
custom(callback: CustomCallback<T>): this;
custom<S = object>(callback: CustomCallback<T, S>): this;
/**

@@ -68,2 +69,6 @@ * Validate the value using a custom callback.

/**
* Field should never be used.
*/
never(): Builder<never>;
/**
* Disallow null values.

@@ -113,4 +118,3 @@ */

}
export declare function bool(defaultValue?: boolean): Builder<boolean>;
export declare function custom<T>(callback: CustomCallback<T>, defaultValue: T): Builder<T>;
export declare function custom<T, S = object>(callback: CustomCallback<T, S>, defaultValue: T): Builder<T>;
export declare function func<T = FuncOf>(defaultValue?: T | null): Builder<T | null>;
"use strict";
exports.__esModule = true;
exports.bool = bool;
exports.custom = custom;

@@ -27,2 +26,4 @@ exports.func = func;

_defineProperty(this, "isNever", false);
_defineProperty(this, "isNullable", false);

@@ -199,2 +200,11 @@

_proto.never = function never() {
if ("production" !== process.env.NODE_ENV) {
this.defaultValue = undefined;
this.isNever = true;
}
return this;
};
_proto.notNullable = function notNullable() {

@@ -282,5 +292,13 @@ if ("production" !== process.env.NODE_ENV) {

}
} else if (this.deprecatedMessage) {
} else {
if (this.deprecatedMessage) {
if ("production" !== process.env.NODE_ENV) {
console.info("Field \"" + path + "\" is deprecated. " + this.deprecatedMessage);
}
}
if ("production" !== process.env.NODE_ENV) {
console.info("Field \"" + path + "\" is deprecated. " + this.deprecatedMessage);
if (this.isNever) {
this.invariant(false, 'Field should never be used.', path);
}
}

@@ -346,10 +364,2 @@ }

function bool(defaultValue) {
if (defaultValue === void 0) {
defaultValue = false;
}
return new Builder('boolean', defaultValue);
}
function custom(callback, defaultValue) {

@@ -356,0 +366,0 @@ return new Builder('custom', defaultValue).custom(callback);

@@ -6,4 +6,5 @@ /**

import optimal from './optimal';
import Builder, { bool, custom, func } from './Builder';
import Builder, { custom, func } from './Builder';
import ArrayBuilder, { array } from './ArrayBuilder';
import BooleanBuilder, { bool } from './BooleanBuilder';
import InstanceBuilder, { builder, instance, date, regex } from './InstanceBuilder';

@@ -32,5 +33,5 @@ import NumberBuilder, { number } from './NumberBuilder';

export { array, blueprint, bool, builder, custom, date, func, instance, number, object, regex, shape, string, union, };
export { Builder, ArrayBuilder, InstanceBuilder, NumberBuilder, ObjectBuilder, ShapeBuilder, StringBuilder, UnionBuilder, };
export { Builder, ArrayBuilder, BooleanBuilder, InstanceBuilder, NumberBuilder, ObjectBuilder, ShapeBuilder, StringBuilder, UnionBuilder, };
export declare type Predicates = typeof predicates;
export * from './types';
export default optimal;

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

Builder: true,
bool: true,
custom: true,

@@ -13,2 +12,4 @@ func: true,

array: true,
BooleanBuilder: true,
bool: true,
InstanceBuilder: true,

@@ -38,3 +39,2 @@ builder: true,

exports.Builder = _Builder.default;
exports.bool = _Builder.bool;
exports.custom = _Builder.custom;

@@ -48,2 +48,7 @@ exports.func = _Builder.func;

var _BooleanBuilder = _interopRequireWildcard(require("./BooleanBuilder"));
exports.BooleanBuilder = _BooleanBuilder.default;
exports.bool = _BooleanBuilder.bool;
var _InstanceBuilder = _interopRequireWildcard(require("./InstanceBuilder"));

@@ -104,3 +109,3 @@

blueprint: _ObjectBuilder.blueprint,
bool: _Builder.bool,
bool: _BooleanBuilder.bool,
builder: _InstanceBuilder.builder,

@@ -107,0 +112,0 @@ custom: _Builder.custom,

import Builder from './Builder';
export default class StringBuilder<T extends string = string> extends Builder<T> {
constructor(defaultValue?: T);
camelCase(): this;
contains(token: string, index?: number): this;
checkContains(path: string, value: T, token: string, index?: number): void;
match(pattern: RegExp): this;
checkMatch(path: string, value: T, pattern: RegExp): void;
kebabCase(): this;
match(pattern: RegExp, message?: string): this;
checkMatch(path: string, value: T, pattern: RegExp, message?: string): void;
notEmpty(): this;

@@ -12,3 +14,5 @@ checkNotEmpty(path: string, value: T): void;

checkOneOf(path: string, value: T, list: T[]): void;
pascalCase(): this;
snakeCase(): this;
}
export declare function string<T extends string = string>(defaultValue?: string): StringBuilder<T>;

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

_proto.camelCase = function camelCase() {
return this.match(/^[a-z][0-9A-Za-z]+$/, 'String must be in camel case.');
};
_proto.contains = function contains(token, index) {

@@ -53,3 +57,11 @@ if (index === void 0) {

_proto.match = function match(pattern) {
_proto.kebabCase = function kebabCase() {
return this.match(/^[a-z][\x2D0-9a-z]+$/, 'String must be in kebab case.');
};
_proto.match = function match(pattern, message) {
if (message === void 0) {
message = '';
}
if ("production" !== process.env.NODE_ENV) {

@@ -59,6 +71,6 @@ this.invariant(pattern instanceof RegExp, 'Match requires a regular expression to match against.');

return this.addCheck(this.checkMatch, pattern);
return this.addCheck(this.checkMatch, pattern, message);
};
_proto.checkMatch = function checkMatch(path, value, pattern) {
_proto.checkMatch = function checkMatch(path, value, pattern, message) {
if ("production" !== process.env.NODE_ENV) {

@@ -69,3 +81,3 @@ if (this.isOptionalDefault(value)) {

this.invariant(!!value.match(pattern), "String does not match pattern \"" + pattern.source + "\".", path);
this.invariant(!!value.match(pattern), (message || 'String does not match.') + " (pattern \"" + pattern.source + "\")", path);
}

@@ -101,2 +113,10 @@ };

_proto.pascalCase = function pascalCase() {
return this.match(/^[A-Z][0-9A-Za-z]+$/, 'String must be in pascal case.');
};
_proto.snakeCase = function snakeCase() {
return this.match(/^[a-z][0-9_a-z]+$/, 'String must be in snake case.');
};
return StringBuilder;

@@ -103,0 +123,0 @@ }(_Builder2.default);

@@ -11,3 +11,3 @@ import Builder from './Builder';

export declare type CheckerCallback = (path: string, value: any, ...args: any[]) => unknown;
export declare type CustomCallback<T> = (value: T, struct: object) => void;
export declare type CustomCallback<T, S = object> = (value: T, struct: S) => void;
export interface OptimalOptions {

@@ -14,0 +14,0 @@ file?: string;

{
"name": "optimal",
"version": "3.3.0",
"version": "3.4.0",
"description": "A system for building and validating defined object structures.",

@@ -47,4 +47,4 @@ "main": "./lib/index.js",

"devDependencies": {
"@milesj/build-tools": "^0.60.5",
"@types/node": "^12.12.14",
"@milesj/build-tools": "^0.61.4",
"@types/node": "^13.1.1",
"conventional-changelog-beemo": "^1.6.0"

@@ -51,0 +51,0 @@ },

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