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

optional-chain

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

optional-chain - npm Package Compare versions

Comparing version 0.1.1 to 0.1.2

2

dist/index.d.ts

@@ -5,3 +5,3 @@ export declare enum OptionType {

}
export declare const optional: <T>(value: T) => Option<T>;
export declare const optional: <T>(value: T) => Option<Diff<T, null | undefined>>;
export declare type Diff<T, U> = T extends U ? never : T;

@@ -8,0 +8,0 @@ export declare type NonNullable<T> = Diff<T, null | undefined>;

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

})(OptionType = exports.OptionType || (exports.OptionType = {}));
// Use NonNullable type to avoid returning "never type" when accessing optional properties
exports.optional = function (value) {

@@ -47,2 +48,2 @@ return new Option(value);

};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDcEIsMkNBQUksQ0FBQTtJQUNKLDJDQUFJLENBQUE7QUFDTixDQUFDLEVBSFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFHckI7QUFFWSxRQUFBLFFBQVEsR0FBRyxVQUFJLEtBQVE7SUFDbEMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMzQixDQUFDLENBQUM7QUFLRjtJQUdFLGdCQUFZLEtBQVE7UUFDbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDbkIsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksRUFBRTtZQUNuRCxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7U0FDN0I7YUFBTTtZQUNMLElBQUksQ0FBQyxJQUFJLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQztTQUM3QjtJQUNILENBQUM7SUFDTSxrQkFBQyxHQUFSLFVBQTRCLEdBQU07UUFDaEMsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLEVBQUU7WUFDakMsT0FBTyxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQVEsQ0FBQztTQUNyQztRQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBUSxDQUFDO0lBQzVDLENBQUM7SUFNTSxvQkFBRyxHQUFWO1FBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFDTSxzQkFBSyxHQUFaLFVBQWEsRUFNWjtZQUxDLGNBQUksRUFDSixjQUFJO1FBS0osT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDN0UsQ0FBQztJQUNNLDBCQUFTLEdBQWhCLFVBQWlCLEtBQVE7UUFDdkIsT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RCxDQUFDO0lBQ0gsYUFBQztBQUFELENBQUMsQUFyQ0QsSUFxQ0M7QUFyQ1ksd0JBQU07QUF1Q25CLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxHQUFHLFVBQVksS0FBYTtJQUM1QyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQ25DLE9BQU8sSUFBSSxNQUFNLENBQUMsU0FBZ0IsQ0FBQyxDQUFDO0tBQ3JDO0lBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDIn0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFZLFVBR1g7QUFIRCxXQUFZLFVBQVU7SUFDcEIsMkNBQUksQ0FBQTtJQUNKLDJDQUFJLENBQUE7QUFDTixDQUFDLEVBSFcsVUFBVSxHQUFWLGtCQUFVLEtBQVYsa0JBQVUsUUFHckI7QUFFRCwwRkFBMEY7QUFDN0UsUUFBQSxRQUFRLEdBQUcsVUFBSSxLQUFRO0lBQ2xDLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFRLENBQUM7QUFDbEMsQ0FBQyxDQUFDO0FBS0Y7SUFHRSxnQkFBWSxLQUFRO1FBQ2xCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7WUFDbkQsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDO1NBQzdCO2FBQU07WUFDTCxJQUFJLENBQUMsSUFBSSxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBQ00sa0JBQUMsR0FBUixVQUE0QixHQUFNO1FBQ2hDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxFQUFFO1lBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFRLENBQUM7U0FDckM7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQVEsQ0FBQztJQUM1QyxDQUFDO0lBTU0sb0JBQUcsR0FBVjtRQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNwQixDQUFDO0lBQ00sc0JBQUssR0FBWixVQUFhLEVBTVo7WUFMQyxjQUFJLEVBQ0osY0FBSTtRQUtKLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdFLENBQUM7SUFDTSwwQkFBUyxHQUFoQixVQUFpQixLQUFRO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDNUQsQ0FBQztJQUNILGFBQUM7QUFBRCxDQUFDLEFBckNELElBcUNDO0FBckNZLHdCQUFNO0FBdUNuQixNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxVQUFZLEtBQWE7SUFDNUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLFNBQVMsRUFBRTtRQUNuQyxPQUFPLElBQUksTUFBTSxDQUFDLFNBQWdCLENBQUMsQ0FBQztLQUNyQztJQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQyJ9

@@ -21,1 +21,11 @@ import { optional } from "../../src";

.get();
type Foo = {
bar?: {
str: string;
};
};
const foo: Foo = {};
const optionalFoo = optional(foo.bar);
optionalFoo.k("str");
{
"name": "optional-chain",
"version": "0.1.1",
"version": "0.1.2",
"description": "",

@@ -5,0 +5,0 @@ "main": "dist/index.js",

@@ -6,2 +6,6 @@ # optional-chain [![travis-ci](https://travis-ci.org/yayoc/optional-chain.svg?branch=master)](https://travis-ci.org/yayoc/optional-chain)

## Requirement
This library requires TS 2.8+ version to use [conditional type](https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html)
## Install

@@ -18,3 +22,3 @@

type User {
type User = {
name?: {

@@ -21,0 +25,0 @@ first: string

@@ -6,4 +6,5 @@ export enum OptionType {

export const optional = <T>(value: T): Option<T> => {
return new Option(value);
// Use NonNullable type to avoid returning "never type" when accessing optional properties
export const optional = <T>(value: T): Option<NonNullable<T>> => {
return new Option(value) as any;
};

@@ -10,0 +11,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