@snapdm/preconditions
Version:
General purpose preconditions for typesafe Typescript libraries
1 lines • 7.28 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":["../../../packages/preconditions/src/lib/conditions.ts","../../../packages/preconditions/src/lib/assertions.ts","../../../packages/preconditions/src/lib/checks.ts"],"sourcesContent":["import { Type } from \"./type\";\n\n/**\n * A Predicate is a function that takes a value, with some optional other values,\n * and determines whether the given value satifies a type predicate.\n */\nexport type Predicate<T> = (value: unknown, ...others: unknown[]) => value is T;\n\n/**\n * This condition checks the whether the given value is defined or not.\n * @param value Value to check is defined.\n */\nexport function isDefined<T>(value: T | null | undefined): value is T {\n return value !== null && value !== undefined;\n}\n\nexport function isTruthy<T>(\n value: T | \"\" | null | undefined | 0 | 0n | false\n): value is T {\n return !!value;\n}\n\nexport function isFalsy<T>(\n value: T | \"\" | null | undefined | 0 | 0n | false\n): value is \"\" | null | undefined | 0 | 0n | false {\n return !value;\n}\n\nexport function isUndefined(value: unknown): value is undefined {\n return value === undefined;\n}\n\nexport function isNull(value: unknown): value is null {\n return value === null;\n}\n\nexport function isBoolean(value: unknown): value is boolean {\n return typeof value === \"boolean\";\n}\n\nexport function isString(value: unknown): value is string {\n return typeof value === \"string\";\n}\n\nexport function isNumber(value: unknown): value is number {\n return typeof value === \"number\";\n}\n\nexport function isBigInt(value: unknown): value is bigint {\n return typeof value === \"bigint\";\n}\n\nexport function isFunction(value: unknown): value is Function {\n return typeof value === \"function\";\n}\n\nexport function isObject(value: unknown): value is object {\n return typeof value === \"object\";\n}\n\nexport function isType<T>(value: unknown, type: Type<T>): value is T {\n return value instanceof type;\n}\n","import {\n Predicate,\n isBigInt,\n isBoolean,\n isDefined,\n isFunction,\n isNull,\n isNumber,\n isObject,\n isString,\n isType,\n isUndefined,\n} from \"./conditions\";\nimport { Type } from \"./type\";\n\n/**\n * PreconditionFailedError is an error to throw when a precondition fails.\n */\nexport class PreconditionFailedError extends Error {\n constructor(message?: string) {\n super(message);\n this.name = \"PreconditionFailedError\";\n }\n}\n\nexport function assert<T extends boolean>(\n condition: T,\n message?: string\n): asserts condition {\n if (!condition) {\n throw new PreconditionFailedError(message);\n }\n}\n\nexport function assertPredicate<T>(\n condition: Predicate<T>,\n value: unknown,\n message?: string\n): asserts value is T {\n assert(condition(value), message);\n}\n\nexport function assertIsDefined<T>(\n value: T | null | undefined,\n message?: string\n): asserts value is T {\n assertPredicate(isDefined, value, message);\n}\n\nexport function assertIsUndefined(\n value: unknown,\n message?: string\n): asserts value is undefined {\n assertPredicate(isUndefined, value, message);\n}\n\nexport function assertIsNull(\n value: unknown,\n message?: string\n): asserts value is null {\n assertPredicate(isNull, value, message);\n}\n\nexport function assertIsBoolean(\n value: unknown,\n message?: string\n): asserts value is boolean {\n assertPredicate(isBoolean, value, message);\n}\n\nexport function assertIsString(\n value: unknown,\n message?: string\n): asserts value is string {\n assertPredicate(isString, value, message);\n}\n\nexport function assertIsNumber(\n value: unknown,\n message?: string\n): asserts value is number {\n assertPredicate(isNumber, value, message);\n}\n\nexport function assertIsBigInt(\n value: unknown,\n message?: string\n): asserts value is bigint {\n assertPredicate(isBigInt, value, message);\n}\n\nexport function assertIsFunction(\n value: unknown,\n message?: string\n): asserts value is Function {\n assertPredicate(isFunction, value, message);\n}\n\nexport function assertIsObject(\n value: unknown,\n message?: string\n): asserts value is object {\n assertPredicate(isObject, value, message);\n}\n\nexport function assertIsType<T>(\n value: unknown,\n type: Type<T>,\n message?: string\n): asserts value is T {\n assert(isType(value, type), message);\n}\n","import { assertIsDefined } from \"./assertions\";\n\nexport function checkIsDefined<T>(\n value: T | null | undefined,\n message?: string\n): T {\n assertIsDefined(value, message);\n return value;\n}\n"],"names":[],"mappings":"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"}