@zayne-labs/toolkit-type-helpers 0.8.27 → 0.8.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,7 @@ type PrettyOmit<TObject, Key extends keyof TObject> = Prettify<Omit<TObject, Key
8
8
  type PrettyPick<TObject, Key extends keyof TObject> = Prettify<Pick<TObject, Key>>;
9
9
  type CallbackFn<in TParams, out TResult = void> = (...params: TParams[]) => TResult;
10
10
  type SelectorFn<TStore, TResult> = (state: TStore) => TResult;
11
+ type ExtractUnion<TEnum extends Record<string, unknown> | unknown[]> = TEnum extends unknown[] ? TEnum[number] : TEnum[keyof TEnum];
11
12
  type WriteableLevel = "deep" | "shallow";
12
13
  type Writeable<TObject, TType extends WriteableLevel = "shallow"> = {
13
14
  -readonly [key in keyof TObject]: TType extends "shallow" ? TObject[key] : TType extends "deep" ? TObject[key] extends object ? Writeable<TObject[key], TType> : TObject[key] : never;
@@ -32,6 +33,7 @@ type AnyNumber = number & Record<never, never>;
32
33
  type LiteralUnion<TUnion extends TBase, TBase = string> = TUnion | (TBase & Record<never, never>);
33
34
 
34
35
  declare const isString: (value: unknown) => value is string;
36
+ declare const isNumber: (value: unknown) => value is number;
35
37
  declare const isBoolean: (value: unknown) => value is boolean;
36
38
  declare const isArray: <TArray>(value: unknown) => value is TArray[];
37
39
  declare const isFormData: (value: unknown) => value is FormData;
@@ -60,4 +62,4 @@ declare const assert: AssertFn;
60
62
 
61
63
  declare const defineEnum: <const TValue, TWriteableLevel extends WriteableLevel = "shallow">(value: TValue) => Prettify<Writeable<TValue, TWriteableLevel>>;
62
64
 
63
- export { type AnyAsyncFunction, type AnyFunction, type AnyNumber, type AnyObject, type AnyString, AssertionError, type CallbackFn, type InferEnum, type LiteralUnion, type NonEmptyArray, type Prettify, type PrettyOmit, type PrettyPick, type SelectorFn, type UnmaskType, type Writeable, type WriteableLevel, assert, assertDefined, assertENV, defineEnum, isArray, isAsyncFunction, isBoolean, isFile, isFormData, isFunction, isIterable, isObject, isObjectAndNotArray, isPlainObject, isString };
65
+ export { type AnyAsyncFunction, type AnyFunction, type AnyNumber, type AnyObject, type AnyString, AssertionError, type CallbackFn, type ExtractUnion, type InferEnum, type LiteralUnion, type NonEmptyArray, type Prettify, type PrettyOmit, type PrettyPick, type SelectorFn, type UnmaskType, type Writeable, type WriteableLevel, assert, assertDefined, assertENV, defineEnum, isArray, isAsyncFunction, isBoolean, isFile, isFormData, isFunction, isIterable, isNumber, isObject, isObjectAndNotArray, isPlainObject, isString };
package/dist/esm/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/guard.ts
2
2
  var isString = (value) => typeof value === "string";
3
+ var isNumber = (value) => typeof value === "number";
3
4
  var isBoolean = (value) => typeof value === "boolean";
4
5
  var isArray = (value) => Array.isArray(value);
5
6
  var isFormData = (value) => value instanceof FormData;
@@ -53,6 +54,6 @@ var assert = (input, messageOrOptions) => {
53
54
  // src/common.ts
54
55
  var defineEnum = (value) => value;
55
56
 
56
- export { AssertionError, assert, assertDefined, assertENV, defineEnum, isArray, isAsyncFunction, isBoolean, isFile, isFormData, isFunction, isIterable, isObject, isObjectAndNotArray, isPlainObject, isString };
57
+ export { AssertionError, assert, assertDefined, assertENV, defineEnum, isArray, isAsyncFunction, isBoolean, isFile, isFormData, isFunction, isIterable, isNumber, isObject, isObjectAndNotArray, isPlainObject, isString };
57
58
  //# sourceMappingURL=index.js.map
58
59
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/guard.ts","../../src/assert.ts","../../src/common.ts"],"names":[],"mappings":";AAEO,IAAM,QAAW,GAAA,CAAC,KAAoC,KAAA,OAAO,KAAU,KAAA;AAEvE,IAAM,SAAY,GAAA,CAAC,KAAmB,KAAA,OAAO,KAAU,KAAA;AAEvD,IAAM,OAAU,GAAA,CAAS,KAAsC,KAAA,KAAA,CAAM,QAAQ,KAAK;AAE5E,IAAA,UAAA,GAAa,CAAC,KAAA,KAAmB,KAAiB,YAAA;AAExD,IAAM,WAAW,CAAC,KAAA,KAAmB,OAAO,KAAA,KAAU,YAAY,KAAU,KAAA;AAEtE,IAAA,mBAAA,GAAsB,CAClC,KACsB,KAAA;AACtB,EAAA,OAAO,QAAS,CAAA,KAAK,CAAK,IAAA,CAAC,QAAQ,KAAK,CAAA;AACzC;AAEa,IAAA,aAAA,GAAgB,CAA4B,KAAqC,KAAA;AAC7F,EAAI,IAAA,CAAC,QAAS,CAAA,KAAK,CAAG,EAAA;AACrB,IAAO,OAAA,KAAA;AAAA;AAGR,EAAM,MAAA,SAAA,GAAY,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA;AAG7C,EAAA,OAAA,CACE,SAAa,IAAA,IAAA,IAAQ,SAAc,KAAA,MAAA,CAAO,SAAa,IAAA,MAAA,CAAO,cAAe,CAAA,SAAS,CAAM,KAAA,IAAA,KAC7F,EAAE,MAAA,CAAO,WAAe,IAAA,KAAA,CAAA;AAE1B;AAEa,IAAA,UAAA,GAAa,CAAgC,KAAuC,KAAA;AAChG,EAAA,OAAO,OAAO,KAAU,KAAA,UAAA;AACzB;AAEa,IAAA,eAAA,GAAkB,CAC9B,KAC6B,KAAA;AAC7B,EAAA,OAAO,UAAW,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,YAAY,IAAS,KAAA,eAAA;AACxD;AAEa,IAAA,MAAA,GAAS,CAAC,KAAA,KAAkC,KAAiB,YAAA;AAEnE,IAAM,UAAa,GAAA,CAAY,GAA4C,KAAA,MAAA,CAAO,QAAY,IAAA;;;AC1CxF,IAAA,cAAA,GAAN,cAA6B,KAAM,CAAA;AAAA,EAChC,IAAO,GAAA,gBAAA;AAAA,EAEhB,YAAY,OAAkB,EAAA;AAC7B,IAAA,MAAM,MAAS,GAAA,kBAAA;AAEf,IAAA,KAAA,CAAM,UAAU,CAAG,EAAA,MAAM,CAAK,EAAA,EAAA,OAAO,KAAK,OAAO,CAAA;AAAA;AAEnD;AAEa,IAAA,aAAA,GAAgB,CAAS,KAAkB,KAAA;AACvD,EAAA,IAAI,SAAS,IAAM,EAAA;AAClB,IAAA,MAAM,IAAI,cAAA,CAAe,CAAwB,qBAAA,EAAA,KAAyB,CAAI,EAAA,CAAA,CAAA;AAAA;AAG/E,EAAO,OAAA,KAAA;AACR;AAEa,IAAA,SAAA,GAAY,CAAC,QAAA,EAA8B,OAAqB,KAAA;AAC5E,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC3B,IAAM,MAAA,IAAI,eAAe,OAAO,CAAA;AAAA;AAGjC,EAAO,OAAA,QAAA;AACR;AAea,IAAA,MAAA,GAAmB,CAAC,KAAA,EAAgB,gBAA8C,KAAA;AAC9F,EAAI,IAAA,KAAA,KAAU,KAAS,IAAA,KAAA,IAAS,IAAM,EAAA;AACrC,IAAA,MAAM,OAAU,GAAA,QAAA,CAAS,gBAAgB,CAAA,GAAI,mBAAmB,gBAAkB,EAAA,OAAA;AAElF,IAAM,MAAA,IAAI,eAAe,OAAO,CAAA;AAAA;AAElC;;;AC7Ca,IAAA,UAAA,GAAa,CACzB,KACI,KAAA","file":"index.js","sourcesContent":["import type { AnyAsyncFunction, AnyFunction, AnyObject } from \"./type-utils\";\n\nexport const isString = (value: unknown): value is string => typeof value === \"string\";\n\nexport const isBoolean = (value: unknown) => typeof value === \"boolean\";\n\nexport const isArray = <TArray>(value: unknown): value is TArray[] => Array.isArray(value);\n\nexport const isFormData = (value: unknown) => value instanceof FormData;\n\nexport const isObject = (value: unknown) => typeof value === \"object\" && value !== null;\n\nexport const isObjectAndNotArray = <TObject = Record<string, unknown>>(\n\tvalue: unknown\n): value is TObject => {\n\treturn isObject(value) && !isArray(value);\n};\n\nexport const isPlainObject = <TObject extends AnyObject>(value: unknown): value is TObject => {\n\tif (!isObject(value)) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value) as unknown;\n\n\t// == Check if it's a plain object\n\treturn (\n\t\t(prototype == null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) &&\n\t\t!(Symbol.toStringTag in value)\n\t);\n};\n\nexport const isFunction = <TFunction extends AnyFunction>(value: unknown): value is TFunction => {\n\treturn typeof value === \"function\";\n};\n\nexport const isAsyncFunction = <TAsyncFunction extends AnyAsyncFunction>(\n\tvalue: unknown\n): value is TAsyncFunction => {\n\treturn isFunction(value) && value.constructor.name === \"AsyncFunction\";\n};\n\nexport const isFile = (value: unknown): value is File => value instanceof File;\n\nexport const isIterable = <TIterable>(obj: object): obj is Iterable<TIterable> => Symbol.iterator in obj;\n","import { isString } from \"./guard\";\n\nexport class AssertionError extends Error {\n\toverride name = \"AssertionError\";\n\n\tconstructor(message?: string) {\n\t\tconst prefix = \"Assertion failed\";\n\n\t\tsuper(message ? `${prefix}: ${message}` : message);\n\t}\n}\n\nexport const assertDefined = <TValue>(value: TValue) => {\n\tif (value == null) {\n\t\tthrow new AssertionError(`The value passed is \"${value as null | undefined}!\"`);\n\t}\n\n\treturn value;\n};\n\nexport const assertENV = (variable: string | undefined, message?: string) => {\n\tif (variable === undefined) {\n\t\tthrow new AssertionError(message);\n\t}\n\n\treturn variable;\n};\n\ntype AssertOptions = {\n\tmessage: string;\n};\n\ntype AssertFn = {\n\t(condition: boolean, messageOrOptions?: string | AssertOptions): asserts condition;\n\n\t<TValue>(\n\t\tvalue: TValue,\n\t\tmessageOrOptions?: string | AssertOptions\n\t): asserts value is NonNullable<TValue>;\n};\n\nexport const assert: AssertFn = (input: unknown, messageOrOptions?: string | AssertOptions) => {\n\tif (input === false || input == null) {\n\t\tconst message = isString(messageOrOptions) ? messageOrOptions : messageOrOptions?.message;\n\n\t\tthrow new AssertionError(message);\n\t}\n};\n","import type { Prettify, Writeable, WriteableLevel } from \"./type-utils\";\n\nexport const defineEnum = <const TValue, TWriteableLevel extends WriteableLevel = \"shallow\">(\n\tvalue: TValue\n) => value as Prettify<Writeable<TValue, TWriteableLevel>>;\n"]}
1
+ {"version":3,"sources":["../../src/guard.ts","../../src/assert.ts","../../src/common.ts"],"names":[],"mappings":";AAEO,IAAM,QAAW,GAAA,CAAC,KAAmB,KAAA,OAAO,KAAU,KAAA;AAEtD,IAAM,QAAW,GAAA,CAAC,KAAmB,KAAA,OAAO,KAAU,KAAA;AAEtD,IAAM,SAAY,GAAA,CAAC,KAAmB,KAAA,OAAO,KAAU,KAAA;AAEvD,IAAM,OAAU,GAAA,CAAS,KAAsC,KAAA,KAAA,CAAM,QAAQ,KAAK;AAE5E,IAAA,UAAA,GAAa,CAAC,KAAA,KAAmB,KAAiB,YAAA;AAExD,IAAM,WAAW,CAAC,KAAA,KAAmB,OAAO,KAAA,KAAU,YAAY,KAAU,KAAA;AAEtE,IAAA,mBAAA,GAAsB,CAClC,KACsB,KAAA;AACtB,EAAA,OAAO,QAAS,CAAA,KAAK,CAAK,IAAA,CAAC,QAAQ,KAAK,CAAA;AACzC;AAEa,IAAA,aAAA,GAAgB,CAA4B,KAAqC,KAAA;AAC7F,EAAI,IAAA,CAAC,QAAS,CAAA,KAAK,CAAG,EAAA;AACrB,IAAO,OAAA,KAAA;AAAA;AAGR,EAAM,MAAA,SAAA,GAAY,MAAO,CAAA,cAAA,CAAe,KAAK,CAAA;AAG7C,EAAA,OAAA,CACE,SAAa,IAAA,IAAA,IAAQ,SAAc,KAAA,MAAA,CAAO,SAAa,IAAA,MAAA,CAAO,cAAe,CAAA,SAAS,CAAM,KAAA,IAAA,KAC7F,EAAE,MAAA,CAAO,WAAe,IAAA,KAAA,CAAA;AAE1B;AAEa,IAAA,UAAA,GAAa,CAAgC,KAAuC,KAAA;AAChG,EAAA,OAAO,OAAO,KAAU,KAAA,UAAA;AACzB;AAEa,IAAA,eAAA,GAAkB,CAC9B,KAC6B,KAAA;AAC7B,EAAA,OAAO,UAAW,CAAA,KAAK,CAAK,IAAA,KAAA,CAAM,YAAY,IAAS,KAAA,eAAA;AACxD;AAEa,IAAA,MAAA,GAAS,CAAC,KAAA,KAAkC,KAAiB,YAAA;AAEnE,IAAM,UAAa,GAAA,CAAY,GAA4C,KAAA,MAAA,CAAO,QAAY,IAAA;;;AC5CxF,IAAA,cAAA,GAAN,cAA6B,KAAM,CAAA;AAAA,EAChC,IAAO,GAAA,gBAAA;AAAA,EAEhB,YAAY,OAAkB,EAAA;AAC7B,IAAA,MAAM,MAAS,GAAA,kBAAA;AAEf,IAAA,KAAA,CAAM,UAAU,CAAG,EAAA,MAAM,CAAK,EAAA,EAAA,OAAO,KAAK,OAAO,CAAA;AAAA;AAEnD;AAEa,IAAA,aAAA,GAAgB,CAAS,KAAkB,KAAA;AACvD,EAAA,IAAI,SAAS,IAAM,EAAA;AAClB,IAAA,MAAM,IAAI,cAAA,CAAe,CAAwB,qBAAA,EAAA,KAAyB,CAAI,EAAA,CAAA,CAAA;AAAA;AAG/E,EAAO,OAAA,KAAA;AACR;AAEa,IAAA,SAAA,GAAY,CAAC,QAAA,EAA8B,OAAqB,KAAA;AAC5E,EAAA,IAAI,aAAa,KAAW,CAAA,EAAA;AAC3B,IAAM,MAAA,IAAI,eAAe,OAAO,CAAA;AAAA;AAGjC,EAAO,OAAA,QAAA;AACR;AAea,IAAA,MAAA,GAAmB,CAAC,KAAA,EAAgB,gBAA8C,KAAA;AAC9F,EAAI,IAAA,KAAA,KAAU,KAAS,IAAA,KAAA,IAAS,IAAM,EAAA;AACrC,IAAA,MAAM,OAAU,GAAA,QAAA,CAAS,gBAAgB,CAAA,GAAI,mBAAmB,gBAAkB,EAAA,OAAA;AAElF,IAAM,MAAA,IAAI,eAAe,OAAO,CAAA;AAAA;AAElC;;;AC7Ca,IAAA,UAAA,GAAa,CACzB,KACI,KAAA","file":"index.js","sourcesContent":["import type { AnyAsyncFunction, AnyFunction, AnyObject } from \"./type-utils\";\n\nexport const isString = (value: unknown) => typeof value === \"string\";\n\nexport const isNumber = (value: unknown) => typeof value === \"number\";\n\nexport const isBoolean = (value: unknown) => typeof value === \"boolean\";\n\nexport const isArray = <TArray>(value: unknown): value is TArray[] => Array.isArray(value);\n\nexport const isFormData = (value: unknown) => value instanceof FormData;\n\nexport const isObject = (value: unknown) => typeof value === \"object\" && value !== null;\n\nexport const isObjectAndNotArray = <TObject = Record<string, unknown>>(\n\tvalue: unknown\n): value is TObject => {\n\treturn isObject(value) && !isArray(value);\n};\n\nexport const isPlainObject = <TObject extends AnyObject>(value: unknown): value is TObject => {\n\tif (!isObject(value)) {\n\t\treturn false;\n\t}\n\n\tconst prototype = Object.getPrototypeOf(value) as unknown;\n\n\t// == Check if it's a plain object\n\treturn (\n\t\t(prototype == null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) &&\n\t\t!(Symbol.toStringTag in value)\n\t);\n};\n\nexport const isFunction = <TFunction extends AnyFunction>(value: unknown): value is TFunction => {\n\treturn typeof value === \"function\";\n};\n\nexport const isAsyncFunction = <TAsyncFunction extends AnyAsyncFunction>(\n\tvalue: unknown\n): value is TAsyncFunction => {\n\treturn isFunction(value) && value.constructor.name === \"AsyncFunction\";\n};\n\nexport const isFile = (value: unknown): value is File => value instanceof File;\n\nexport const isIterable = <TIterable>(obj: object): obj is Iterable<TIterable> => Symbol.iterator in obj;\n","import { isString } from \"./guard\";\n\nexport class AssertionError extends Error {\n\toverride name = \"AssertionError\";\n\n\tconstructor(message?: string) {\n\t\tconst prefix = \"Assertion failed\";\n\n\t\tsuper(message ? `${prefix}: ${message}` : message);\n\t}\n}\n\nexport const assertDefined = <TValue>(value: TValue) => {\n\tif (value == null) {\n\t\tthrow new AssertionError(`The value passed is \"${value as null | undefined}!\"`);\n\t}\n\n\treturn value;\n};\n\nexport const assertENV = (variable: string | undefined, message?: string) => {\n\tif (variable === undefined) {\n\t\tthrow new AssertionError(message);\n\t}\n\n\treturn variable;\n};\n\ntype AssertOptions = {\n\tmessage: string;\n};\n\ntype AssertFn = {\n\t(condition: boolean, messageOrOptions?: string | AssertOptions): asserts condition;\n\n\t<TValue>(\n\t\tvalue: TValue,\n\t\tmessageOrOptions?: string | AssertOptions\n\t): asserts value is NonNullable<TValue>;\n};\n\nexport const assert: AssertFn = (input: unknown, messageOrOptions?: string | AssertOptions) => {\n\tif (input === false || input == null) {\n\t\tconst message = isString(messageOrOptions) ? messageOrOptions : messageOrOptions?.message;\n\n\t\tthrow new AssertionError(message);\n\t}\n};\n","import type { Prettify, Writeable, WriteableLevel } from \"./type-utils\";\n\nexport const defineEnum = <const TValue, TWriteableLevel extends WriteableLevel = \"shallow\">(\n\tvalue: TValue\n) => value as Prettify<Writeable<TValue, TWriteableLevel>>;\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@zayne-labs/toolkit-type-helpers",
3
3
  "type": "module",
4
- "version": "0.8.27",
4
+ "version": "0.8.30",
5
5
  "description": "A collection of utility functions, types and composables used by my other projects. Nothing too fancy but can be useful.",
6
6
  "author": "Ryan Zayne",
7
7
  "license": "MIT",
@@ -42,7 +42,7 @@
42
42
  "clsx": "^2.1.1",
43
43
  "concurrently": "^9.1.2",
44
44
  "cross-env": "^7.0.3",
45
- "publint": "^0.2.12",
45
+ "publint": "^0.3.1",
46
46
  "size-limit": "^11.1.6",
47
47
  "terser": "^5.37.0",
48
48
  "tsup": "^8.3.5",