Socket
Socket
Sign inDemoInstall

assert-never

Package Overview
Dependencies
Maintainers
1
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

assert-never - npm Package Compare versions

Comparing version 1.2.1 to 1.3.0

27

index.d.ts

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

/**
* Helper function for exhaustive checks of discriminated unions.
* https://basarat.gitbooks.io/typescript/docs/types/discriminated-unions.html
*
* @example
*
* type A = {type: 'a'};
* type B = {type: 'b'};
* type Union = A | B;
*
* function doSomething(arg: Union) {
* if (arg.type === 'a') {
* return something;
* }
*
* if (arg.type === 'b') {
* return somethingElse;
* }
*
* // TS will error if there are other types in the union
* // Will throw an Error when called at runtime.
* // Use `assertNever(arg, true)` instead to fail silently.
* return assertNever(arg);
* }
*/
export declare function assertNever(value: never, errorMessage?: string): never;
export declare function assertNever(value: never, getErrorMessage?: (value: unknown) => string): never;
export declare function assertNever(value: never, noThrow?: boolean): never;
export default assertNever;

14

index.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.assertNever = assertNever;
/**

@@ -28,9 +29,14 @@ * Helper function for exhaustive checks of discriminated unions.

*/
function assertNever(value, noThrow) {
if (noThrow) {
function assertNever(value, errorMessageOrNoThrow) {
if (typeof errorMessageOrNoThrow === 'string') {
throw new Error(errorMessageOrNoThrow);
}
if (typeof errorMessageOrNoThrow === 'function') {
throw new Error(errorMessageOrNoThrow(value));
}
if (errorMessageOrNoThrow) {
return value;
}
throw new Error("Unhandled discriminated union member: " + JSON.stringify(value));
throw new Error("Unhandled discriminated union member: ".concat(JSON.stringify(value)));
}
exports.assertNever = assertNever;
exports.default = assertNever;

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

export function assertNever(value: never, errorMessage?: string): never
export function assertNever(value: never, getErrorMessage?: (value: unknown) => string): never
export function assertNever(value: never, noThrow?: boolean): never
/**

@@ -26,4 +30,12 @@ * Helper function for exhaustive checks of discriminated unions.

*/
export function assertNever(value: never, noThrow?: boolean): never {
if (noThrow) {
export function assertNever(value: never, errorMessageOrNoThrow?: string | ((value: unknown) => string) | boolean): never {
if (typeof errorMessageOrNoThrow === 'string') {
throw new Error(errorMessageOrNoThrow)
}
if (typeof errorMessageOrNoThrow === 'function') {
throw new Error(errorMessageOrNoThrow(value))
}
if (errorMessageOrNoThrow) {
return value

@@ -30,0 +42,0 @@ }

{
"name": "assert-never",
"version": "1.2.1",
"version": "1.3.0",
"description": "Helper function for exhaustive checks of discriminated unions in TypeScript",

@@ -14,3 +14,4 @@ "main": "index.js",

"build": "tsc",
"prepublish": "npm run build"
"prepublish": "npm run build && npm test",
"test": "jest"
},

@@ -27,4 +28,11 @@ "keywords": [

"devDependencies": {
"typescript": "^2.2.1"
"@babel/core": "^7.24.7",
"@babel/preset-env": "^7.24.7",
"@babel/preset-typescript": "^7.24.7",
"@types/jest": "^29.5.12",
"babel-jest": "^29.7.0",
"jest": "^29.7.0",
"type-assertions": "^1.1.0",
"typescript": "^5.5.3"
}
}

@@ -39,2 +39,2 @@ # Assert Never [![npm version][npm-image]][npm-url]

[npm-url]: https://badge.fury.io/js/assert-never
[exhaustive-checks]: https://basarat.gitbooks.io/typescript/docs/types/discriminated-unions.html#exhaustive-checks
[exhaustive-checks]: https://basarat.gitbook.io/typescript/type-system/discriminated-unions#exhaustive-checks
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