type-plus 4.18.1 → 5.0.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.
@@ -1,3 +1,18 @@
1
1
  import type { AnyConstructor } from './AnyConstructor.js';
2
+ /**
3
+ * Is the subject a constructor function.
4
+ *
5
+ * @deprecated this is not a failsafe test,
6
+ * it will return true for any function that can be called with `new`.
7
+ *
8
+ * If the subject is an arrow function,
9
+ * it can still return true after compilation.
10
+ *
11
+ * Thus this function is not safe to use.
12
+ */
2
13
  export declare function isConstructor(subject: unknown): subject is AnyConstructor;
14
+ /**
15
+ * instanceof type guard for unknown value.
16
+ */
17
+ export declare function isInstanceof<T extends AnyConstructor>(subject: unknown, constructor: T): subject is InstanceType<T>;
3
18
  //# sourceMappingURL=isConstructor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isConstructor.d.ts","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAWzE"}
1
+ {"version":3,"file":"isConstructor.d.ts","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAWzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAEnH"}
@@ -1,6 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isConstructor = void 0;
3
+ exports.isInstanceof = exports.isConstructor = void 0;
4
+ /**
5
+ * Is the subject a constructor function.
6
+ *
7
+ * @deprecated this is not a failsafe test,
8
+ * it will return true for any function that can be called with `new`.
9
+ *
10
+ * If the subject is an arrow function,
11
+ * it can still return true after compilation.
12
+ *
13
+ * Thus this function is not safe to use.
14
+ */
4
15
  function isConstructor(subject) {
5
16
  try {
6
17
  new subject();
@@ -14,4 +25,11 @@ function isConstructor(subject) {
14
25
  return true;
15
26
  }
16
27
  exports.isConstructor = isConstructor;
28
+ /**
29
+ * instanceof type guard for unknown value.
30
+ */
31
+ function isInstanceof(subject, constructor) {
32
+ return subject instanceof constructor;
33
+ }
34
+ exports.isInstanceof = isInstanceof;
17
35
  //# sourceMappingURL=isConstructor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isConstructor.js","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":";;;AAEA,SAAgB,aAAa,CAAC,OAAgB;IAC5C,IAAI;QACF,IAAK,OAA0B,EAAE,CAAA;KAClC;IACD,OAAO,GAAQ,EAAE;QACf,IAAM,GAAG,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAA6B,CAAA;QAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;YACnD,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAXD,sCAWC"}
1
+ {"version":3,"file":"isConstructor.js","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":";;;AAEA;;;;;;;;;;GAUG;AACH,SAAgB,aAAa,CAAC,OAAgB;IAC5C,IAAI;QACF,IAAK,OAA0B,EAAE,CAAA;KAClC;IACD,OAAO,GAAQ,EAAE;QACf,IAAM,GAAG,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAA6B,CAAA;QAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;YACnD,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAXD,sCAWC;AAED;;GAEG;AACH,SAAgB,YAAY,CAA2B,OAAgB,EAAE,WAAc;IACrF,OAAO,OAAO,YAAY,WAAW,CAAA;AACvC,CAAC;AAFD,oCAEC"}
@@ -53,4 +53,31 @@ test('class with params returns true', function () {
53
53
  }());
54
54
  expect((0, index_js_1.isConstructor)(Boo)).toBe(true);
55
55
  });
56
+ describe('isInstanceof()', function () {
57
+ test('Class as validator', function () {
58
+ var s = new Error();
59
+ if ((0, index_js_1.isInstanceof)(s, Error))
60
+ (0, index_js_1.assertType)(s);
61
+ });
62
+ test('Class as validator fails', function () {
63
+ var Foo = /** @class */ (function () {
64
+ function Foo() {
65
+ }
66
+ Object.defineProperty(Foo.prototype, "a", {
67
+ enumerable: false,
68
+ configurable: true,
69
+ writable: true,
70
+ value: function () { }
71
+ });
72
+ return Foo;
73
+ }());
74
+ var s = 1;
75
+ if ((0, index_js_1.isInstanceof)(s, Foo)) {
76
+ (0, index_js_1.assertType)(s);
77
+ }
78
+ else {
79
+ (0, index_js_1.assertType)(s);
80
+ }
81
+ });
82
+ });
56
83
  //# sourceMappingURL=isConstructor.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isConstructor.spec.js","sourceRoot":"","sources":["../../ts/class/isConstructor.spec.ts"],"names":[],"mappings":";;AAAA,wCAAuE;AAEvE,IAAI,CAAC,mBAAmB,EAAE;IACxB,IAAM,CAAC,GAAY,KAAK,CAAA;IACxB,IAAI,IAAA,wBAAa,EAAC,CAAC,CAAC;QAClB,IAAA,qBAAU,EAAiB,CAAC,CAAC,CAAA;AACjC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uBAAuB,EAAE;IAC5B,MAAM,CAAC,IAAA,wBAAa,EAAC,cAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sBAAsB,EAAE;IAC3B,MAAM,CAAC,IAAA,wBAAa,EAAC,cAAQ,MAAM,IAAI,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,0CAA0C,EAAE;IAC/C;QAAY;YAAgB,MAAM,IAAI,KAAK,EAAE,CAAA;QAAC,CAAC;QAAC,UAAC;IAAD,CAAC,AAAjD,IAAiD;IACjD,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE;IACrC;QAAY;YAAgB,MAAM,KAAK,CAAA;QAAC,CAAC;QAAC,UAAC;IAAD,CAAC,AAA3C,IAA2C;IAC3C,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE;IACrC;QAAY;YAAgB,MAAM,SAAS,CAAA;QAAC,CAAC;QAAC,UAAC;IAAD,CAAC,AAA/C,IAA+C;IAC/C,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE;IACrC;QAAY,aAAmB,CAAS;;;;;uBAAT;;QAAa,CAAC;QAAC,UAAC;IAAD,CAAC,AAA/C,IAA+C;IAC/C,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"isConstructor.spec.js","sourceRoot":"","sources":["../../ts/class/isConstructor.spec.ts"],"names":[],"mappings":";;AAAA,wCAAqF;AAErF,IAAI,CAAC,mBAAmB,EAAE;IACxB,IAAM,CAAC,GAAY,KAAK,CAAA;IACxB,IAAI,IAAA,wBAAa,EAAC,CAAC,CAAC;QAClB,IAAA,qBAAU,EAAiB,CAAC,CAAC,CAAA;AACjC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uBAAuB,EAAE;IAC5B,MAAM,CAAC,IAAA,wBAAa,EAAC,cAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sBAAsB,EAAE;IAC3B,MAAM,CAAC,IAAA,wBAAa,EAAC,cAAQ,MAAM,IAAI,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,0CAA0C,EAAE;IAC/C;QAAY;YAAgB,MAAM,IAAI,KAAK,EAAE,CAAA;QAAC,CAAC;QAAC,UAAC;IAAD,CAAC,AAAjD,IAAiD;IACjD,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE;IACrC;QAAY;YAAgB,MAAM,KAAK,CAAA;QAAC,CAAC;QAAC,UAAC;IAAD,CAAC,AAA3C,IAA2C;IAC3C,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE;IACrC;QAAY;YAAgB,MAAM,SAAS,CAAA;QAAC,CAAC;QAAC,UAAC;IAAD,CAAC,AAA/C,IAA+C;IAC/C,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE;IACrC;QAAY,aAAmB,CAAS;;;;;uBAAT;;QAAa,CAAC;QAAC,UAAC;IAAD,CAAC,AAA/C,IAA+C;IAC/C,MAAM,CAAC,IAAA,wBAAa,EAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE;IACzB,IAAI,CAAC,oBAAoB,EAAE;QACzB,IAAM,CAAC,GAAY,IAAI,KAAK,EAAE,CAAA;QAC9B,IAAI,IAAA,uBAAY,EAAC,CAAC,EAAE,KAAK,CAAC;YACxB,IAAA,qBAAU,EAAQ,CAAC,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,0BAA0B,EAAE;QAC/B;YAAA;YAAoB,CAAC;;;;;uBAAT,cAAM,CAAC;;YAAC,UAAC;QAAD,CAAC,AAArB,IAAqB;QACrB,IAAM,CAAC,GAAiB,CAAC,CAAA;QACzB,IAAI,IAAA,uBAAY,EAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACxB,IAAA,qBAAU,EAAM,CAAC,CAAC,CAAA;SACnB;aACI;YACH,IAAA,qBAAU,EAAS,CAAC,CAAC,CAAA;SACtB;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,13 +1,8 @@
1
- import { AnyConstructor } from '../class/index.js';
2
1
  import type { Equal } from './Equal.js';
3
2
  /**
4
3
  * Is the subject of type T
5
4
  */
6
5
  export declare function isType<T>(subject: T): subject is T;
7
- /**
8
- * Is the subject a class of T
9
- */
10
- export declare function isType<T extends AnyConstructor>(subject: unknown, constructor: T): subject is InstanceType<T>;
11
6
  /**
12
7
  * Is the subject of type T, satisfying the supplied validator
13
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,mBAAmB,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACnD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;AAC9G;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,IAAI,CAAC,CAAA;yBAAvE,MAAM"}
1
+ {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACnD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,IAAI,CAAC,CAAA;yBAAvE,MAAM"}
@@ -1,15 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isType = void 0;
4
- var index_js_1 = require("../class/index.js");
5
4
  function isType(subject, validator) {
6
- if (validator) {
7
- if ((0, index_js_1.isConstructor)(validator))
8
- return subject instanceof validator;
9
- else
10
- return !!validator(subject);
11
- }
12
- return true;
5
+ return validator ? !!validator(subject) : true;
13
6
  }
14
7
  exports.isType = isType;
15
8
  isType.t = function (subject) {
@@ -1 +1 @@
1
- {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":";;;AAAA,8CAAiE;AAejE,SAAgB,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,IAAA,wBAAa,EAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;KAC9B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AARD,wBAQC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
1
+ {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":";;;AAUA,SAAgB,MAAM,CAAC,OAAgB,EAAE,SAAmC;IAC1E,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChD,CAAC;AAFD,wBAEC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
@@ -45,33 +45,6 @@ describe('isType()', function () {
45
45
  (0, index_js_1.assertType)(s);
46
46
  }
47
47
  });
48
- });
49
- describe('with class', function () {
50
- test('Class as validator', function () {
51
- var s = new Error();
52
- if ((0, index_js_1.isType)(s, Error))
53
- (0, index_js_1.assertType)(s);
54
- });
55
- test('Class as validator fails', function () {
56
- var Foo = /** @class */ (function () {
57
- function Foo() {
58
- }
59
- Object.defineProperty(Foo.prototype, "a", {
60
- enumerable: false,
61
- configurable: true,
62
- writable: true,
63
- value: function () { }
64
- });
65
- return Foo;
66
- }());
67
- var s = 1;
68
- if ((0, index_js_1.isType)(s, Foo)) {
69
- (0, index_js_1.assertType)(s);
70
- }
71
- else {
72
- (0, index_js_1.assertType)(s);
73
- }
74
- });
75
48
  test('subject can be type any', function () {
76
49
  var s = false;
77
50
  if ((0, index_js_1.isType)(s, function (s) { return typeof s === 'boolean'; }))
@@ -1 +1 @@
1
- {"version":3,"file":"isType.spec.js","sourceRoot":"","sources":["../../ts/predicates/isType.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isType.spec.js","sourceRoot":"","sources":["../../ts/predicates/isType.spec.ts"],"names":[],"mappings":";;AAAA,wCAAuD;AAEvD,QAAQ,CAAC,UAAU,EAAE;IACnB,QAAQ,CAAC,mBAAmB,EAAE;QAC5B,IAAI,CAAC,yCAAyC,EAAE;YAC9C,IAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAW,CAAA;YACvC,IAAI,IAAA,iBAAM,EAAW,OAAO,CAAC,EAAE;gBAC7B,IAAA,qBAAU,EAAW,OAAO,CAAC,CAAA;aAC9B;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,4CAA4C,EAAE;YACjD,IAAM,CAAC,GAAG,EAAE,CAAA;YACZ,IAAI,IAAA,iBAAM,EAAK,CAAC,CAAC,EAAE;gBACjB,IAAA,qBAAU,EAAK,CAAC,CAAC,CAAA;aAClB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,yBAAyB,EAAE;QAClC,IAAI,CAAC,oCAAoC,EAAE;YACzC,IAAM,CAAC,GAAY,KAAK,CAAA;YACxB,IAAI,IAAA,iBAAM,EAAC,CAAC,EAAE,UAAC,CAAU,IAAK,OAAA,OAAO,CAAC,KAAK,SAAS,EAAtB,CAAsB,CAAC;gBACnD,IAAA,qBAAU,EAAU,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,+BAA+B,EAAE;YACpC,IAAM,CAAC,GAAY,KAAK,CAAA;YACxB,IAAI,IAAA,iBAAM,EAAU,CAAC,EAAE,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,SAAS,EAAtB,CAAsB,CAAC;gBACjD,IAAA,qBAAU,EAAU,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,kCAAkC,EAAE;YACvC,IAAM,CAAC,GAAoB,CAAC,CAAA;YAC5B,IAAI,IAAA,iBAAM,EAAS,CAAC,EAAE,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,QAAQ,EAArB,CAAqB,CAAC,EAAE;gBACjD,IAAA,qBAAU,EAAS,CAAC,CAAC,CAAA;aACtB;iBACI;gBACH,IAAA,qBAAU,EAAS,CAAC,CAAC,CAAA;aACtB;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE;YAC/B,IAAM,CAAC,GAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;YACvB,IAAI,IAAA,iBAAM,EAAgB,CAAC,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,EAAH,CAAG,CAAC,EAAE;gBACtC,IAAA,qBAAU,EAAgB,CAAC,CAAC,CAAA;aAC7B;iBACI;gBACH,IAAA,qBAAU,EAAS,CAAC,CAAC,CAAA;aACtB;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,yBAAyB,EAAE;YAC9B,IAAM,CAAC,GAAQ,KAAK,CAAA;YACpB,IAAI,IAAA,iBAAM,EAAU,CAAC,EAAE,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,KAAK,SAAS,EAAtB,CAAsB,CAAC;gBACjD,IAAA,qBAAU,EAAU,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE;IACrB,IAAI,CAAC,2CAA2C,EAAE;QAChD,MAAM,CAAC,iBAAM,CAAC,CAAC,EAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,iBAAM,CAAC,CAAC,EAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,cAAc;QACd,oBAAoB;QACpB,sBAAsB;IACxB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sDAAsD,EAAE;QAC3D,MAAM,CAAC,iBAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjC,cAAc;QACd,kBAAkB;QAClB,oBAAoB;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE;IACrB,IAAI,CAAC,2CAA2C,EAAE;QAChD,MAAM,CAAC,iBAAM,CAAC,CAAC,EAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,iBAAM,CAAC,CAAC,EAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,cAAc;QACd,mBAAmB;QACnB,sBAAsB;IACxB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sDAAsD,EAAE;QAC3D,MAAM,CAAC,iBAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElC,cAAc;QACd,iBAAiB;QACjB,oBAAoB;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE;IACzB,IAAI,CAAC,WAAW,EAAE;QAChB,iBAAM,CAAC,KAAK,EAAc,CAAA;IAC5B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,YAAY,EAAE;QACjB,iBAAM,CAAC,KAAK,EAAiB,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,3 +1,18 @@
1
1
  import type { AnyConstructor } from './AnyConstructor.js';
2
+ /**
3
+ * Is the subject a constructor function.
4
+ *
5
+ * @deprecated this is not a failsafe test,
6
+ * it will return true for any function that can be called with `new`.
7
+ *
8
+ * If the subject is an arrow function,
9
+ * it can still return true after compilation.
10
+ *
11
+ * Thus this function is not safe to use.
12
+ */
2
13
  export declare function isConstructor(subject: unknown): subject is AnyConstructor;
14
+ /**
15
+ * instanceof type guard for unknown value.
16
+ */
17
+ export declare function isInstanceof<T extends AnyConstructor>(subject: unknown, constructor: T): subject is InstanceType<T>;
3
18
  //# sourceMappingURL=isConstructor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"isConstructor.d.ts","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAWzE"}
1
+ {"version":3,"file":"isConstructor.d.ts","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAWzE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAEnH"}
@@ -1,3 +1,14 @@
1
+ /**
2
+ * Is the subject a constructor function.
3
+ *
4
+ * @deprecated this is not a failsafe test,
5
+ * it will return true for any function that can be called with `new`.
6
+ *
7
+ * If the subject is an arrow function,
8
+ * it can still return true after compilation.
9
+ *
10
+ * Thus this function is not safe to use.
11
+ */
1
12
  export function isConstructor(subject) {
2
13
  try {
3
14
  new subject();
@@ -10,4 +21,10 @@ export function isConstructor(subject) {
10
21
  }
11
22
  return true;
12
23
  }
24
+ /**
25
+ * instanceof type guard for unknown value.
26
+ */
27
+ export function isInstanceof(subject, constructor) {
28
+ return subject instanceof constructor;
29
+ }
13
30
  //# sourceMappingURL=isConstructor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isConstructor.js","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI;QACF,IAAK,OAA0B,EAAE,CAAA;KAClC;IACD,OAAO,GAAQ,EAAE;QACf,MAAM,GAAG,GAAG,GAAG,EAAE,OAA6B,CAAA;QAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;YACnD,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"isConstructor.js","sourceRoot":"","sources":["../../ts/class/isConstructor.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,UAAU,aAAa,CAAC,OAAgB;IAC5C,IAAI;QACF,IAAK,OAA0B,EAAE,CAAA;KAClC;IACD,OAAO,GAAQ,EAAE;QACf,MAAM,GAAG,GAAG,GAAG,EAAE,OAA6B,CAAA;QAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE;YACnD,OAAO,KAAK,CAAA;SACb;KACF;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAA2B,OAAgB,EAAE,WAAc;IACrF,OAAO,OAAO,YAAY,WAAW,CAAA;AACvC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { assertType, isConstructor } from '../index.js';
1
+ import { assertType, isConstructor, isInstanceof } from '../index.js';
2
2
  test('check constructor', () => {
3
3
  const x = Error;
4
4
  if (isConstructor(x))
@@ -41,4 +41,23 @@ test('class with params returns true', () => {
41
41
  }
42
42
  expect(isConstructor(Boo)).toBe(true);
43
43
  });
44
+ describe('isInstanceof()', () => {
45
+ test('Class as validator', () => {
46
+ const s = new Error();
47
+ if (isInstanceof(s, Error))
48
+ assertType(s);
49
+ });
50
+ test('Class as validator fails', () => {
51
+ class Foo {
52
+ a() { }
53
+ }
54
+ const s = 1;
55
+ if (isInstanceof(s, Foo)) {
56
+ assertType(s);
57
+ }
58
+ else {
59
+ assertType(s);
60
+ }
61
+ });
62
+ });
44
63
  //# sourceMappingURL=isConstructor.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"isConstructor.spec.js","sourceRoot":"","sources":["../../ts/class/isConstructor.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEvE,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC7B,MAAM,CAAC,GAAY,KAAK,CAAA;IACxB,IAAI,aAAa,CAAC,CAAC,CAAC;QAClB,UAAU,CAAiB,CAAC,CAAC,CAAA;AACjC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACpD,MAAM,GAAG;QAAG,gBAAgB,MAAM,IAAI,KAAK,EAAE,CAAA,CAAC,CAAC;KAAE;IACjD,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,GAAG;QAAG,gBAAgB,MAAM,KAAK,CAAA,CAAC,CAAC;KAAE;IAC3C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,GAAG;QAAG,gBAAgB,MAAM,SAAS,CAAA,CAAC,CAAC;KAAE;IAC/C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,GAAG;QAAG,YAAmB,CAAS;;;;;uBAAT;;QAAa,CAAC;KAAE;IAC/C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"isConstructor.spec.js","sourceRoot":"","sources":["../../ts/class/isConstructor.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAErF,IAAI,CAAC,mBAAmB,EAAE,GAAG,EAAE;IAC7B,MAAM,CAAC,GAAY,KAAK,CAAA;IACxB,IAAI,aAAa,CAAC,CAAC,CAAC;QAClB,UAAU,CAAiB,CAAC,CAAC,CAAA;AACjC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC9C,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE;IAChC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,EAAE,CAAA,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChE,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACpD,MAAM,GAAG;QAAG,gBAAgB,MAAM,IAAI,KAAK,EAAE,CAAA,CAAC,CAAC;KAAE;IACjD,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,GAAG;QAAG,gBAAgB,MAAM,KAAK,CAAA,CAAC,CAAC;KAAE;IAC3C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,GAAG;QAAG,gBAAgB,MAAM,SAAS,CAAA,CAAC,CAAC;KAAE;IAC/C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC1C,MAAM,GAAG;QAAG,YAAmB,CAAS;;;;;uBAAT;;QAAa,CAAC;KAAE;IAC/C,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACvC,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAC9B,MAAM,CAAC,GAAY,IAAI,KAAK,EAAE,CAAA;QAC9B,IAAI,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC;YACxB,UAAU,CAAQ,CAAC,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACpC,MAAM,GAAG;YAAG,CAAC,KAAK,CAAC;SAAE;QACrB,MAAM,CAAC,GAAiB,CAAC,CAAA;QACzB,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACxB,UAAU,CAAM,CAAC,CAAC,CAAA;SACnB;aACI;YACH,UAAU,CAAS,CAAC,CAAC,CAAA;SACtB;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,13 +1,8 @@
1
- import { AnyConstructor } from '../class/index.js';
2
1
  import type { Equal } from './Equal.js';
3
2
  /**
4
3
  * Is the subject of type T
5
4
  */
6
5
  export declare function isType<T>(subject: T): subject is T;
7
- /**
8
- * Is the subject a class of T
9
- */
10
- export declare function isType<T extends AnyConstructor>(subject: unknown, constructor: T): subject is InstanceType<T>;
11
6
  /**
12
7
  * Is the subject of type T, satisfying the supplied validator
13
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAiB,MAAM,mBAAmB,CAAA;AACjE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACnD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,GAAG,OAAO,IAAI,YAAY,CAAC,CAAC,CAAC,CAAA;AAC9G;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,IAAI,CAAC,CAAA;yBAAvE,MAAM"}
1
+ {"version":3,"file":"isType.d.ts","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,CAAA;AACnD;;GAEG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,OAAO,GAAG,OAAO,IAAI,CAAC,CAAA;yBAAvE,MAAM"}
@@ -1,12 +1,5 @@
1
- import { isConstructor } from '../class/index.js';
2
1
  export function isType(subject, validator) {
3
- if (validator) {
4
- if (isConstructor(validator))
5
- return subject instanceof validator;
6
- else
7
- return !!validator(subject);
8
- }
9
- return true;
2
+ return validator ? !!validator(subject) : true;
10
3
  }
11
4
  isType.t = function (subject) {
12
5
  return subject === undefined || subject === true;
@@ -1 +1 @@
1
- {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAejE,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,SAAsD;IAC7F,IAAI,SAAS,EAAE;QACb,IAAI,aAAa,CAAC,SAAS,CAAC;YAC1B,OAAO,OAAO,YAAY,SAAS,CAAA;;YAEnC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;KAC9B;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
1
+ {"version":3,"file":"isType.js","sourceRoot":"","sources":["../../ts/predicates/isType.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,MAAM,CAAC,OAAgB,EAAE,SAAmC;IAC1E,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AAChD,CAAC;AAED,MAAM,CAAC,CAAC,GAAG,UAA0B,OAAW;IAC9C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,CAAA;AAClD,CAAC,CAAA;AACD,MAAM,CAAC,CAAC,GAAG,UAA2B,OAAW;IAC/C,OAAO,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,KAAK,CAAA;AACnD,CAAC,CAAA;AAED;;;;GAIG;AACH,6DAA6D;AAC7D,MAAM,CAAC,KAAK,GAAG,cAA2C,CAAC,CAAA"}
@@ -43,25 +43,6 @@ describe('isType()', () => {
43
43
  assertType(s);
44
44
  }
45
45
  });
46
- });
47
- describe('with class', () => {
48
- test('Class as validator', () => {
49
- const s = new Error();
50
- if (isType(s, Error))
51
- assertType(s);
52
- });
53
- test('Class as validator fails', () => {
54
- class Foo {
55
- a() { }
56
- }
57
- const s = 1;
58
- if (isType(s, Foo)) {
59
- assertType(s);
60
- }
61
- else {
62
- assertType(s);
63
- }
64
- });
65
46
  test('subject can be type any', () => {
66
47
  const s = false;
67
48
  if (isType(s, s => typeof s === 'boolean'))
@@ -1 +1 @@
1
- {"version":3,"file":"isType.spec.js","sourceRoot":"","sources":["../../ts/predicates/isType.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"isType.spec.js","sourceRoot":"","sources":["../../ts/predicates/isType.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAS,MAAM,EAAE,MAAM,aAAa,CAAA;AAEvD,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QACjC,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACnD,MAAM,OAAO,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAW,CAAA;YACvC,IAAI,MAAM,CAAW,OAAO,CAAC,EAAE;gBAC7B,UAAU,CAAW,OAAO,CAAC,CAAA;aAC9B;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,4CAA4C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,GAAG,EAAE,CAAA;YACZ,IAAI,MAAM,CAAK,CAAC,CAAC,EAAE;gBACjB,UAAU,CAAK,CAAC,CAAC,CAAA;aAClB;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACvC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,GAAY,KAAK,CAAA;YACxB,IAAI,MAAM,CAAC,CAAC,EAAE,CAAC,CAAU,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;gBACnD,UAAU,CAAU,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACzC,MAAM,CAAC,GAAY,KAAK,CAAA;YACxB,IAAI,MAAM,CAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;gBACjD,UAAU,CAAU,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,GAAoB,CAAC,CAAA;YAC5B,IAAI,MAAM,CAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE;gBACjD,UAAU,CAAS,CAAC,CAAC,CAAA;aACtB;iBACI;gBACH,UAAU,CAAS,CAAC,CAAC,CAAA;aACtB;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,CAAC,GAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;YACvB,IAAI,MAAM,CAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACtC,UAAU,CAAgB,CAAC,CAAC,CAAA;aAC7B;iBACI;gBACH,UAAU,CAAS,CAAC,CAAC,CAAA;aACtB;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACnC,MAAM,CAAC,GAAQ,KAAK,CAAA;YACpB,IAAI,MAAM,CAAU,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC;gBACjD,UAAU,CAAU,CAAC,CAAC,CAAA;QAC1B,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,cAAc;QACd,oBAAoB;QACpB,sBAAsB;IACxB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAEjC,cAAc;QACd,kBAAkB;QAClB,oBAAoB;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,MAAM,CAAC,CAAC,EAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACpC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAE1C,cAAc;QACd,mBAAmB;QACnB,sBAAsB;IACxB,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAElC,cAAc;QACd,iBAAiB;QACjB,oBAAoB;IACtB,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE;QACrB,MAAM,CAAC,KAAK,EAAc,CAAA;IAC5B,CAAC,CAAC,CAAA;IACF,IAAI,CAAC,YAAY,EAAE,GAAG,EAAE;QACtB,MAAM,CAAC,KAAK,EAAiB,CAAA;IAC/B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "4.18.1",
3
+ "version": "5.0.0",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -31,58 +31,35 @@
31
31
  "!ts/types",
32
32
  "!ts/type-checker"
33
33
  ],
34
- "scripts": {
35
- "build": "run-p build:cjs build:esm build:tslib",
36
- "build:cjs": "tsc -p tsconfig.cjs.json && ncp package.cjs.json cjs/package.json",
37
- "build:esm": "tsc -p tsconfig.esm.json",
38
- "build:tslib": "tsc -p tsconfig.tslib.json && ncp package.cjs.json tslib/package.json",
39
- "build:doc": "typedoc",
40
- "clean": "rimraf cjs coverage esm lib libm tslib",
41
- "coverage": "jest --coverage",
42
- "depcheck": "depcheck",
43
- "lint": "eslint --ext=ts,js .",
44
- "nuke": "pnpm clean && rimraf node_modules",
45
- "_postinstall": "husky install",
46
- "prepack": "pinst --disable",
47
- "postpack": "pinst --enable",
48
- "release": "semantic-release",
49
- "size": "size-limit",
50
- "test": "jest",
51
- "verify": "npm-run-all clean -p build depcheck lint coverage -p size",
52
- "watch": "pnpm test --watch"
53
- },
54
34
  "dependencies": {
55
- "tersify": "^3.10.2",
56
- "unpartial": "^1.0.3"
35
+ "tersify": "^3.11.1",
36
+ "unpartial": "^1.0.4"
57
37
  },
58
38
  "devDependencies": {
39
+ "@changesets/cli": "^2.25.2",
59
40
  "@commitlint/cli": "^17.0.2",
60
41
  "@commitlint/config-conventional": "^17.0.2",
61
- "@repobuddy/jest": "^1.4.0",
62
- "@semantic-release/changelog": "^6.0.1",
63
- "@semantic-release/git": "^10.0.1",
64
- "@semantic-release/github": "^8.0.5",
65
- "@semantic-release/npm": "^9.0.1",
42
+ "@repobuddy/jest": "^2.1.0",
66
43
  "@size-limit/preset-small-lib": "^8.0.0",
67
44
  "@types/jest": "^29.0.0",
68
45
  "@types/node": "^14",
69
46
  "@typescript-eslint/eslint-plugin": "^5.28.0",
70
47
  "@unional/fixture": "^3.0.0",
71
48
  "assertron": "^11.0.1",
49
+ "cross-env": "^7.0.3",
72
50
  "depcheck": "^1.4.3",
73
51
  "eslint": "^8.17.0",
74
52
  "eslint-plugin-harmony": "^7.1.0",
75
53
  "husky": "^8.0.1",
76
54
  "jest": "^29.0.0",
77
55
  "jest-watch-suspend": "^1.1.2",
78
- "jest-watch-toggle-config": "^2.0.1",
56
+ "jest-watch-toggle-config-2": "^2.1.0",
79
57
  "jest-watch-typeahead": "^2.0.0",
80
58
  "ncp": "^2.0.0",
81
59
  "npm-run-all": "^4.1.5",
82
60
  "pinst": "^3.0.0",
83
61
  "rimraf": "^3.0.2",
84
62
  "satisfier": "^5.2.2",
85
- "semantic-release": "^19.0.3",
86
63
  "size-limit": "^8.0.0",
87
64
  "ts-jest": "^29.0.0",
88
65
  "tslib": "^2.4.0",
@@ -104,5 +81,26 @@
104
81
  "path": "./tslib/index.js",
105
82
  "limit": "15 kb"
106
83
  }
107
- ]
108
- }
84
+ ],
85
+ "scripts": {
86
+ "build": "run-p build:cjs build:esm build:tslib",
87
+ "build:cjs": "tsc -p tsconfig.cjs.json && ncp package.cjs.json cjs/package.json",
88
+ "build:esm": "tsc -p tsconfig.esm.json",
89
+ "build:tslib": "tsc -p tsconfig.tslib.json && ncp package.cjs.json tslib/package.json",
90
+ "build:doc": "typedoc",
91
+ "clean": "rimraf cjs coverage esm lib libm tslib",
92
+ "coverage": "cross-env NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest --coverage",
93
+ "cs": "changeset",
94
+ "depcheck": "depcheck",
95
+ "lint": "eslint --ext=ts,js .",
96
+ "nuke": "pnpm clean && rimraf node_modules",
97
+ "_postinstall": "husky install",
98
+ "release": "changeset publish",
99
+ "size": "size-limit",
100
+ "test": "cross-env NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest",
101
+ "test:watch": "cross-env NODE_OPTIONS=--experimental-vm-modules NODE_NO_WARNINGS=1 jest --watch",
102
+ "verify": "npm-run-all clean -p build depcheck lint coverage -p size",
103
+ "version": "changeset version",
104
+ "watch": "jest --watch"
105
+ }
106
+ }
@@ -1,5 +1,16 @@
1
1
  import type { AnyConstructor } from './AnyConstructor.js'
2
2
 
3
+ /**
4
+ * Is the subject a constructor function.
5
+ *
6
+ * @deprecated this is not a failsafe test,
7
+ * it will return true for any function that can be called with `new`.
8
+ *
9
+ * If the subject is an arrow function,
10
+ * it can still return true after compilation.
11
+ *
12
+ * Thus this function is not safe to use.
13
+ */
3
14
  export function isConstructor(subject: unknown): subject is AnyConstructor {
4
15
  try {
5
16
  new (subject as AnyConstructor)()
@@ -12,3 +23,10 @@ export function isConstructor(subject: unknown): subject is AnyConstructor {
12
23
  }
13
24
  return true
14
25
  }
26
+
27
+ /**
28
+ * instanceof type guard for unknown value.
29
+ */
30
+ export function isInstanceof<T extends AnyConstructor>(subject: unknown, constructor: T): subject is InstanceType<T> {
31
+ return subject instanceof constructor
32
+ }
@@ -1,26 +1,15 @@
1
- import { AnyConstructor, isConstructor } from '../class/index.js'
2
1
  import type { Equal } from './Equal.js'
3
2
 
4
3
  /**
5
4
  * Is the subject of type T
6
5
  */
7
6
  export function isType<T>(subject: T): subject is T
8
- /**
9
- * Is the subject a class of T
10
- */
11
- export function isType<T extends AnyConstructor>(subject: unknown, constructor: T): subject is InstanceType<T>
12
7
  /**
13
8
  * Is the subject of type T, satisfying the supplied validator
14
9
  */
15
10
  export function isType<T>(subject: unknown, validator: (s: T) => unknown): subject is T
16
- export function isType(subject: unknown, validator?: AnyConstructor | ((s: unknown) => unknown)) {
17
- if (validator) {
18
- if (isConstructor(validator))
19
- return subject instanceof validator
20
- else
21
- return !!validator(subject)
22
- }
23
- return true
11
+ export function isType(subject: unknown, validator?: (s: unknown) => unknown) {
12
+ return validator ? !!validator(subject) : true
24
13
  }
25
14
 
26
15
  isType.t = function <T extends true>(subject?: T) {