@rhombus-toolkit/type-guards 1.1.0

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.
Files changed (112) hide show
  1. package/.heft/build-cache/heft-jest-data.json +7 -0
  2. package/.rush/temp/package-deps_build.json +24 -0
  3. package/.rush/temp/shrinkwrap-deps.json +873 -0
  4. package/config/rig.json +6 -0
  5. package/lib/assert-never.d.ts +2 -0
  6. package/lib/assert-never.d.ts.map +1 -0
  7. package/lib/assert-never.js +4 -0
  8. package/lib/assert-never.js.map +1 -0
  9. package/lib/index.d.ts +8 -0
  10. package/lib/index.d.ts.map +1 -0
  11. package/lib/index.js +8 -0
  12. package/lib/index.js.map +1 -0
  13. package/lib/is-array.d.ts +2 -0
  14. package/lib/is-array.d.ts.map +1 -0
  15. package/lib/is-array.js +4 -0
  16. package/lib/is-array.js.map +1 -0
  17. package/lib/is-defined.d.ts +3 -0
  18. package/lib/is-defined.d.ts.map +1 -0
  19. package/lib/is-defined.js +7 -0
  20. package/lib/is-defined.js.map +1 -0
  21. package/lib/is-function.d.ts +2 -0
  22. package/lib/is-function.d.ts.map +1 -0
  23. package/lib/is-function.js +4 -0
  24. package/lib/is-function.js.map +1 -0
  25. package/lib/is-promise.d.ts +2 -0
  26. package/lib/is-promise.d.ts.map +1 -0
  27. package/lib/is-promise.js +7 -0
  28. package/lib/is-promise.js.map +1 -0
  29. package/lib/is-url.d.ts +2 -0
  30. package/lib/is-url.d.ts.map +1 -0
  31. package/lib/is-url.js +4 -0
  32. package/lib/is-url.js.map +1 -0
  33. package/lib/iterables/_isIterator.d.ts +2 -0
  34. package/lib/iterables/_isIterator.d.ts.map +1 -0
  35. package/lib/iterables/_isIterator.js +9 -0
  36. package/lib/iterables/_isIterator.js.map +1 -0
  37. package/lib/iterables/index.d.ts +7 -0
  38. package/lib/iterables/index.d.ts.map +1 -0
  39. package/lib/iterables/index.js +7 -0
  40. package/lib/iterables/index.js.map +1 -0
  41. package/lib/iterables/is-async-generator.d.ts +2 -0
  42. package/lib/iterables/is-async-generator.d.ts.map +1 -0
  43. package/lib/iterables/is-async-generator.js +10 -0
  44. package/lib/iterables/is-async-generator.js.map +1 -0
  45. package/lib/iterables/is-async-iterable.d.ts +2 -0
  46. package/lib/iterables/is-async-iterable.d.ts.map +1 -0
  47. package/lib/iterables/is-async-iterable.js +4 -0
  48. package/lib/iterables/is-async-iterable.js.map +1 -0
  49. package/lib/iterables/is-async-iterator.d.ts +2 -0
  50. package/lib/iterables/is-async-iterator.d.ts.map +1 -0
  51. package/lib/iterables/is-async-iterator.js +6 -0
  52. package/lib/iterables/is-async-iterator.js.map +1 -0
  53. package/lib/iterables/is-generator.d.ts +2 -0
  54. package/lib/iterables/is-generator.d.ts.map +1 -0
  55. package/lib/iterables/is-generator.js +10 -0
  56. package/lib/iterables/is-generator.js.map +1 -0
  57. package/lib/iterables/is-iterable.d.ts +2 -0
  58. package/lib/iterables/is-iterable.d.ts.map +1 -0
  59. package/lib/iterables/is-iterable.js +4 -0
  60. package/lib/iterables/is-iterable.js.map +1 -0
  61. package/lib/iterables/is-iterator.d.ts +2 -0
  62. package/lib/iterables/is-iterator.d.ts.map +1 -0
  63. package/lib/iterables/is-iterator.js +6 -0
  64. package/lib/iterables/is-iterator.js.map +1 -0
  65. package/lib-commonjs/assert-never.js +8 -0
  66. package/lib-commonjs/assert-never.js.map +1 -0
  67. package/lib-commonjs/index.js +11 -0
  68. package/lib-commonjs/index.js.map +1 -0
  69. package/lib-commonjs/is-array.js +8 -0
  70. package/lib-commonjs/is-array.js.map +1 -0
  71. package/lib-commonjs/is-defined.js +12 -0
  72. package/lib-commonjs/is-defined.js.map +1 -0
  73. package/lib-commonjs/is-function.js +8 -0
  74. package/lib-commonjs/is-function.js.map +1 -0
  75. package/lib-commonjs/is-promise.js +11 -0
  76. package/lib-commonjs/is-promise.js.map +1 -0
  77. package/lib-commonjs/is-url.js +8 -0
  78. package/lib-commonjs/is-url.js.map +1 -0
  79. package/lib-commonjs/iterables/_isIterator.js +13 -0
  80. package/lib-commonjs/iterables/_isIterator.js.map +1 -0
  81. package/lib-commonjs/iterables/index.js +10 -0
  82. package/lib-commonjs/iterables/index.js.map +1 -0
  83. package/lib-commonjs/iterables/is-async-generator.js +14 -0
  84. package/lib-commonjs/iterables/is-async-generator.js.map +1 -0
  85. package/lib-commonjs/iterables/is-async-iterable.js +8 -0
  86. package/lib-commonjs/iterables/is-async-iterable.js.map +1 -0
  87. package/lib-commonjs/iterables/is-async-iterator.js +10 -0
  88. package/lib-commonjs/iterables/is-async-iterator.js.map +1 -0
  89. package/lib-commonjs/iterables/is-generator.js +14 -0
  90. package/lib-commonjs/iterables/is-generator.js.map +1 -0
  91. package/lib-commonjs/iterables/is-iterable.js +8 -0
  92. package/lib-commonjs/iterables/is-iterable.js.map +1 -0
  93. package/lib-commonjs/iterables/is-iterator.js +10 -0
  94. package/lib-commonjs/iterables/is-iterator.js.map +1 -0
  95. package/package.json +27 -0
  96. package/src/assert-never.ts +3 -0
  97. package/src/index.ts +7 -0
  98. package/src/is-array.ts +3 -0
  99. package/src/is-defined.ts +8 -0
  100. package/src/is-function.ts +3 -0
  101. package/src/is-promise.ts +7 -0
  102. package/src/is-url.ts +4 -0
  103. package/src/iterables/_isIterator.ts +11 -0
  104. package/src/iterables/index.ts +6 -0
  105. package/src/iterables/is-async-generator.ts +10 -0
  106. package/src/iterables/is-async-iterable.ts +4 -0
  107. package/src/iterables/is-async-iterator.ts +6 -0
  108. package/src/iterables/is-generator.ts +10 -0
  109. package/src/iterables/is-iterable.ts +3 -0
  110. package/src/iterables/is-iterator.ts +6 -0
  111. package/tsconfig.json +4 -0
  112. package/type-guards.build.log +21 -0
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@rhombus-toolkit/type-guards",
3
+ "version": "1.1.0",
4
+ "description": "",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/rhombus-toolkit/ts.git",
8
+ "directory": "libraries/type-guards"
9
+ },
10
+ "main": "lib/index.js",
11
+ "sideEffects": false,
12
+ "scripts": {
13
+ "test": "heft test --clean",
14
+ "build": "heft build --clean",
15
+ "build:watch": "heft build"
16
+ },
17
+ "keywords": [],
18
+ "author": "Thomas Butler",
19
+ "dependencies": {
20
+ "@rhombus-toolkit/func": "1.1.0"
21
+ },
22
+ "devDependencies": {
23
+ "@rushstack/heft-web-rig": "^0.10.24",
24
+
25
+ "@rushstack/heft": "^0.46.6"
26
+ }
27
+ }
@@ -0,0 +1,3 @@
1
+ export function assertNever(x: never): never {
2
+ throw new Error("Unexpected object: " + x);
3
+ }
package/src/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './assert-never';
2
+ export * from './is-array';
3
+ export * from './is-defined';
4
+ export * from './is-function';
5
+ export * from './is-promise';
6
+ export * from './is-url';
7
+ export * from './iterables';
@@ -0,0 +1,3 @@
1
+ export function isArray(value: any): value is Array<any>{
2
+ return Array.isArray(value);
3
+ }
@@ -0,0 +1,8 @@
1
+
2
+ export function isDefined<T>(p: T | null | undefined): p is T {
3
+ return p !== undefined && p !== null;
4
+ }
5
+
6
+ export function isNotDefined<T>(p: T | null | undefined): p is undefined | null {
7
+ return p === undefined || p === null;
8
+ }
@@ -0,0 +1,3 @@
1
+ export function isFunction(value: any): value is (...args:any[])=>any {
2
+ return typeof (value) === 'function';
3
+ }
@@ -0,0 +1,7 @@
1
+ import { isFunction } from './is-function';
2
+
3
+ export function isPromiseLike(value: any): value is PromiseLike<any> {
4
+ return value instanceof Promise
5
+ || /\bPromise\b/.test(Object.prototype.toString.call(value))
6
+ || 'then' in value && isFunction(value?.then);
7
+ }
package/src/is-url.ts ADDED
@@ -0,0 +1,4 @@
1
+
2
+ export function isUrl(url: any): url is URL {
3
+ return url instanceof URL;
4
+ }
@@ -0,0 +1,11 @@
1
+ import { isFunction } from '../is-function';
2
+
3
+ export function _isIterator(value: any): value is Iterator<any> {
4
+ if (value?.[Symbol.toStringTag]?.split(/\s+/)?.includes('Iterator'))
5
+ return true;
6
+
7
+ if (/\bIterator\b/.test(Object.prototype.toString.call(value)))
8
+ return true;
9
+
10
+ return isFunction(value?.next);
11
+ }
@@ -0,0 +1,6 @@
1
+ export * from './is-async-generator';
2
+ export * from './is-async-iterable';
3
+ export * from './is-async-iterator';
4
+ export * from './is-generator';
5
+ export * from './is-iterable';
6
+ export * from './is-iterator';
@@ -0,0 +1,10 @@
1
+ import { isAsyncIterator } from "./is-async-iterator";
2
+
3
+ const AsyncGeneratorFunction = (async function* () { }()).constructor as AsyncGeneratorFunction;
4
+ export function isAsyncGenerator(value: any): value is AsyncGenerator<any, any, any> {
5
+ if (value?.constructor === AsyncGeneratorFunction)
6
+ return true;
7
+ if (/\bAsyncGenerator\b/.test(Object.prototype.toString.call(value)))
8
+ return true;
9
+ return isAsyncIterator(value) && value?.next?.length === 1;
10
+ }
@@ -0,0 +1,4 @@
1
+ export function isAsyncIterable(value: any): value is AsyncIterable<any> {
2
+ return Symbol.asyncIterator in value;
3
+ }
4
+
@@ -0,0 +1,6 @@
1
+ import { _isIterator } from './_isIterator';
2
+ import { isAsyncIterable } from "./is-async-iterable";
3
+
4
+ export function isAsyncIterator(value: any): value is AsyncIterableIterator<any> {
5
+ return isAsyncIterable(value) && _isIterator(value);
6
+ }
@@ -0,0 +1,10 @@
1
+ import { isIterator } from "./is-iterator";
2
+ const GeneratorFunction = (function* () { }()).constructor as GeneratorFunction;
3
+
4
+ export function isGenerator(value: any): value is Generator<any, any, any> {
5
+ if (value?.constructor === GeneratorFunction)
6
+ return true;
7
+ if (/\bGenerator\b/.test(Object.prototype.toString.call(value)))
8
+ return true;
9
+ return isIterator(value) && value?.next?.length === 1;
10
+ }
@@ -0,0 +1,3 @@
1
+ export function isIterable(value: any): value is Iterable<any> {
2
+ return Symbol.iterator in value;
3
+ }
@@ -0,0 +1,6 @@
1
+ import { isIterable } from './is-iterable';
2
+ import { _isIterator } from './_isIterator';
3
+
4
+ export function isIterator(value: any): value is IterableIterator<any> {
5
+ return isIterable(value) && _isIterator(value);
6
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,4 @@
1
+ {
2
+ "extends": "@rushstack/heft-web-rig/profiles/library/tsconfig-base.json",
3
+ "compilerOptions": { "target": "ESNext", "lib": ["ESNext", "DOM"] }
4
+ }
@@ -0,0 +1,21 @@
1
+ Invoking: heft build --clean
2
+ Using local Heft from /home/tom/src/rhombus-toolkit/ts/libraries/type-guards/node_modules/@rushstack/heft
3
+
4
+ Project build folder is "/home/tom/src/rhombus-toolkit/ts/libraries/type-guards"
5
+ Using rig configuration from ./node_modules/@rushstack/heft-web-rig/profiles/library
6
+ Starting build
7
+ ---- Clean started ----
8
+ ---- Clean finished (4ms) ----
9
+ ---- Pre-compile started ----
10
+ ---- Pre-compile finished (41ms) ----
11
+ ---- Compile started ----
12
+ [typescript] Using TypeScript version 4.6.4
13
+ ---- Compile finished (9412ms) ----
14
+ ---- Bundle started ----
15
+ ---- Bundle finished (3ms) ----
16
+ ---- Post-build started ----
17
+ ---- Post-build finished (35ms) ----
18
+ -------------------- Finished (11.261s) --------------------
19
+ Project: @rhombus-toolkit/type-guards@1.1.0
20
+ Heft version: 0.46.6
21
+ Node version: v16.16.0