@rickosborne/guard 2024.12.27 → 2024.12.28

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 (91) hide show
  1. package/README.md +23 -0
  2. package/cjs/index.js +26 -0
  3. package/cjs/index.js.map +1 -0
  4. package/cjs/package.json +6 -0
  5. package/cjs/ts/assert-defined.js +11 -0
  6. package/cjs/ts/assert-defined.js.map +1 -0
  7. package/cjs/ts/error-from-message.js +26 -0
  8. package/cjs/ts/error-from-message.js.map +1 -0
  9. package/cjs/ts/has-array.js +12 -0
  10. package/cjs/ts/has-array.js.map +1 -0
  11. package/cjs/ts/has-number.js +9 -0
  12. package/cjs/ts/has-number.js.map +1 -0
  13. package/cjs/ts/has-own.js +11 -0
  14. package/cjs/ts/has-own.js.map +1 -0
  15. package/cjs/ts/is-int.js +18 -0
  16. package/cjs/ts/is-int.js.map +1 -0
  17. package/cjs/ts/is-list-of.js +8 -0
  18. package/cjs/ts/is-list-of.js.map +1 -0
  19. package/cjs/ts/is-object.js +16 -0
  20. package/cjs/ts/is-object.js.map +1 -0
  21. package/cjs/ts/is-predicate.js +14 -0
  22. package/cjs/ts/is-predicate.js.map +1 -0
  23. package/cjs/tsconfig.cjs.tsbuildinfo +1 -0
  24. package/esm/index.js +10 -0
  25. package/esm/index.js.map +1 -0
  26. package/esm/package.json +6 -0
  27. package/esm/ts/assert-defined.js +8 -0
  28. package/esm/ts/assert-defined.js.map +1 -0
  29. package/esm/ts/error-from-message.js +22 -0
  30. package/esm/ts/error-from-message.js.map +1 -0
  31. package/esm/ts/has-array.js +9 -0
  32. package/esm/ts/has-array.js.map +1 -0
  33. package/esm/ts/has-number.js +5 -0
  34. package/esm/ts/has-number.js.map +1 -0
  35. package/esm/ts/has-own.js +8 -0
  36. package/esm/ts/has-own.js.map +1 -0
  37. package/esm/ts/is-int.js +12 -0
  38. package/esm/ts/is-int.js.map +1 -0
  39. package/esm/ts/is-list-of.js +4 -0
  40. package/esm/ts/is-list-of.js.map +1 -0
  41. package/esm/ts/is-object.js +11 -0
  42. package/esm/ts/is-object.js.map +1 -0
  43. package/esm/ts/is-predicate.js +10 -0
  44. package/esm/ts/is-predicate.js.map +1 -0
  45. package/esm/tsconfig.module.tsbuildinfo +1 -0
  46. package/{dist/functions → functions}/assertDefined.md +2 -2
  47. package/{dist/functions → functions}/assertInt.md +2 -2
  48. package/{dist/functions → functions}/errorFromMessageOrError.md +2 -2
  49. package/{dist/functions → functions}/expectInt.md +2 -2
  50. package/{dist/functions → functions}/hasArray.md +3 -3
  51. package/{dist/functions → functions}/hasNumber.md +2 -2
  52. package/{dist/functions → functions}/hasOwn.md +3 -3
  53. package/{dist/functions → functions}/isInt.md +2 -2
  54. package/{dist/functions → functions}/isListOf.md +2 -2
  55. package/{dist/functions → functions}/isObject.md +2 -2
  56. package/{dist/functions → functions}/isPlainObject.md +2 -2
  57. package/{dist/functions → functions}/isUnaryPredicate.md +2 -2
  58. package/package.json +7 -31
  59. package/{dist/type-aliases → type-aliases}/MessageOrError.md +2 -2
  60. package/types/index.d.ts +9 -0
  61. package/types/index.js +26 -0
  62. package/types/index.js.map +1 -0
  63. package/types/ts/assert-defined.d.ts +2 -0
  64. package/types/ts/assert-defined.js +11 -0
  65. package/types/ts/assert-defined.js.map +1 -0
  66. package/types/ts/error-from-message.d.ts +9 -0
  67. package/types/ts/error-from-message.js +26 -0
  68. package/types/ts/error-from-message.js.map +1 -0
  69. package/types/ts/has-array.d.ts +14 -0
  70. package/types/ts/has-array.js +12 -0
  71. package/types/ts/has-array.js.map +1 -0
  72. package/types/ts/has-number.d.ts +1 -0
  73. package/types/ts/has-number.js +9 -0
  74. package/types/ts/has-number.js.map +1 -0
  75. package/types/ts/has-own.d.ts +6 -0
  76. package/types/ts/has-own.js +11 -0
  77. package/types/ts/has-own.js.map +1 -0
  78. package/types/ts/is-int.d.ts +4 -0
  79. package/types/ts/is-int.js +18 -0
  80. package/types/ts/is-int.js.map +1 -0
  81. package/types/ts/is-list-of.d.ts +1 -0
  82. package/types/ts/is-list-of.js +8 -0
  83. package/types/ts/is-list-of.js.map +1 -0
  84. package/types/ts/is-object.d.ts +2 -0
  85. package/types/ts/is-object.js +16 -0
  86. package/types/ts/is-object.js.map +1 -0
  87. package/types/ts/is-predicate.d.ts +8 -0
  88. package/types/ts/is-predicate.js +14 -0
  89. package/types/ts/is-predicate.js.map +1 -0
  90. package/types/tsconfig.types.tsbuildinfo +1 -0
  91. package/dist/README.md +0 -26
package/README.md CHANGED
@@ -1,3 +1,26 @@
1
+ **@rickosborne/guard v2024.12.28**
2
+
3
+ ***
4
+
1
5
  # @rickosborne/guard
2
6
 
3
7
  Basic type guards building on [@rickosborne/typical](https://www.npmjs.com/package/@rickosborne/typical).
8
+
9
+ ## Type Aliases
10
+
11
+ - [MessageOrError](type-aliases/MessageOrError.md)
12
+
13
+ ## Functions
14
+
15
+ - [assertDefined](functions/assertDefined.md)
16
+ - [assertInt](functions/assertInt.md)
17
+ - [errorFromMessageOrError](functions/errorFromMessageOrError.md)
18
+ - [expectInt](functions/expectInt.md)
19
+ - [hasArray](functions/hasArray.md)
20
+ - [hasNumber](functions/hasNumber.md)
21
+ - [hasOwn](functions/hasOwn.md)
22
+ - [isInt](functions/isInt.md)
23
+ - [isListOf](functions/isListOf.md)
24
+ - [isObject](functions/isObject.md)
25
+ - [isPlainObject](functions/isPlainObject.md)
26
+ - [isUnaryPredicate](functions/isUnaryPredicate.md)
package/cjs/index.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ts/assert-defined.js"), exports);
18
+ __exportStar(require("./ts/error-from-message.js"), exports);
19
+ __exportStar(require("./ts/has-array.js"), exports);
20
+ __exportStar(require("./ts/has-number.js"), exports);
21
+ __exportStar(require("./ts/has-own.js"), exports);
22
+ __exportStar(require("./ts/is-int.js"), exports);
23
+ __exportStar(require("./ts/is-list-of.js"), exports);
24
+ __exportStar(require("./ts/is-object.js"), exports);
25
+ __exportStar(require("./ts/is-predicate.js"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,6DAA2C;AAC3C,oDAAkC;AAClC,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "engines": {
3
+ "node": ">=14"
4
+ },
5
+ "type": "commonjs"
6
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertDefined = assertDefined;
4
+ const error_from_message_js_1 = require("./error-from-message.js");
5
+ function assertDefined(value, messageOrError) {
6
+ if (value != null) {
7
+ return;
8
+ }
9
+ throw (0, error_from_message_js_1.errorFromMessageOrError)(messageOrError, RangeError);
10
+ }
11
+ //# sourceMappingURL=assert-defined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-defined.js","sourceRoot":"","sources":["../../../ts/assert-defined.ts"],"names":[],"mappings":";;AAEA,sCAQC;AAVD,mEAAuF;AAEvF,SAAgB,aAAa,CAC5B,KAAQ,EACR,cAA8B;IAE9B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO;IACR,CAAC;IACD,MAAM,IAAA,+CAAuB,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorFromMessageOrError = void 0;
4
+ /**
5
+ * Helper for guards which expect text or an error, or
6
+ * can generate one when needed.
7
+ */
8
+ const errorFromMessageOrError = (messageOrError, defaultConstructor = Error) => {
9
+ let stringOrError;
10
+ if (typeof messageOrError === "function") {
11
+ stringOrError = messageOrError();
12
+ }
13
+ else {
14
+ stringOrError = messageOrError;
15
+ }
16
+ let error;
17
+ if (typeof stringOrError === "string") {
18
+ error = new defaultConstructor(`Missing: ${stringOrError}`);
19
+ }
20
+ else {
21
+ error = stringOrError;
22
+ }
23
+ return error;
24
+ };
25
+ exports.errorFromMessageOrError = errorFromMessageOrError;
26
+ //# sourceMappingURL=error-from-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-from-message.js","sourceRoot":"","sources":["../../../ts/error-from-message.ts"],"names":[],"mappings":";;;AAKA;;;GAGG;AACI,MAAM,uBAAuB,GAAG,CACtC,cAA8B,EAC9B,qBAAuD,KAAK,EACpD,EAAE;IACV,IAAI,aAA6B,CAAC;IAClC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QAC1C,aAAa,GAAG,cAAc,EAAE,CAAC;IAClC,CAAC;SAAM,CAAC;QACP,aAAa,GAAG,cAAc,CAAC;IAChC,CAAC;IACD,IAAI,KAAY,CAAC;IACjB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,GAAG,IAAI,kBAAkB,CAAC,YAAa,aAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACP,KAAK,GAAG,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAjBW,QAAA,uBAAuB,2BAiBlC"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasArray = hasArray;
4
+ const has_own_js_1 = require("./has-own.js");
5
+ const is_list_of_js_1 = require("./is-list-of.js");
6
+ /**
7
+ * Guard for whether the given value is an object which has a property with its own array value.
8
+ */
9
+ function hasArray(obj, name, predicate) {
10
+ return (0, has_own_js_1.hasOwn)(obj, name) && Array.isArray(obj[name]) && (predicate == null || (0, is_list_of_js_1.isListOf)(obj[name], predicate));
11
+ }
12
+ //# sourceMappingURL=has-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-array.js","sourceRoot":"","sources":["../../../ts/has-array.ts"],"names":[],"mappings":";;AAgBA,4BAEC;AAlBD,6CAAsC;AACtC,mDAA2C;AAY3C;;GAEG;AACH,SAAgB,QAAQ,CAA4B,GAAY,EAAE,IAAU,EAAE,SAA4E;IACzJ,OAAO,IAAA,mBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAA,wBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/G,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasNumber = void 0;
4
+ const has_own_js_1 = require("./has-own.js");
5
+ const hasNumber = (obj, name) => {
6
+ return (0, has_own_js_1.hasOwn)(obj, name) && typeof obj[name] === "number";
7
+ };
8
+ exports.hasNumber = hasNumber;
9
+ //# sourceMappingURL=has-number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-number.js","sourceRoot":"","sources":["../../../ts/has-number.ts"],"names":[],"mappings":";;;AAAA,6CAAsC;AAE/B,MAAM,SAAS,GAAG,CAAsB,GAAY,EAAE,IAAU,EAAgC,EAAE;IACxG,OAAO,IAAA,mBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasOwn = hasOwn;
4
+ const is_object_js_1 = require("./is-object.js");
5
+ function hasOwn(obj, name, predicate) {
6
+ if (!(0, is_object_js_1.isObject)(obj) || !Object.hasOwn(obj, name)) {
7
+ return false;
8
+ }
9
+ return predicate == null || predicate(obj[name]);
10
+ }
11
+ //# sourceMappingURL=has-own.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-own.js","sourceRoot":"","sources":["../../../ts/has-own.ts"],"names":[],"mappings":";;AAIA,wBAKC;AATD,iDAA0C;AAI1C,SAAgB,MAAM,CAAyB,GAAY,EAAE,IAAU,EAAE,SAA0C;IAClH,IAAI,CAAC,IAAA,uBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expectInt = exports.isInt = void 0;
4
+ exports.assertInt = assertInt;
5
+ const error_from_message_js_1 = require("./error-from-message.js");
6
+ const isInt = (obj) => typeof obj === "number" && !isNaN(obj) && Math.trunc(obj) === obj && obj !== Infinity && obj !== -Infinity;
7
+ exports.isInt = isInt;
8
+ function assertInt(value, messageOrError) {
9
+ if (!(0, exports.isInt)(value)) {
10
+ throw (0, error_from_message_js_1.errorFromMessageOrError)(messageOrError, TypeError);
11
+ }
12
+ }
13
+ const expectInt = (obj, messageOrError) => {
14
+ assertInt(obj, messageOrError);
15
+ return obj;
16
+ };
17
+ exports.expectInt = expectInt;
18
+ //# sourceMappingURL=is-int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-int.js","sourceRoot":"","sources":["../../../ts/is-int.ts"],"names":[],"mappings":";;;AAIA,8BAIC;AARD,mEAAuF;AAEhF,MAAM,KAAK,GAAG,CAAC,GAAY,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;AAApJ,QAAA,KAAK,SAA+I;AAEjK,SAAgB,SAAS,CAAC,KAAc,EAAE,cAA8B;IACvE,IAAI,CAAC,IAAA,aAAK,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAA,+CAAuB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;AACF,CAAC;AAEM,MAAM,SAAS,GAAG,CACxB,GAAY,EACZ,cAA8B,EACrB,EAAE;IACX,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isListOf = void 0;
4
+ const isListOf = (list, predicate) => {
5
+ return Array.isArray(list) && list.every(predicate);
6
+ };
7
+ exports.isListOf = isListOf;
8
+ //# sourceMappingURL=is-list-of.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-list-of.js","sourceRoot":"","sources":["../../../ts/is-list-of.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CACvB,IAAa,EACb,SAAwE,EAC1D,EAAE;IAChB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC,CAAC;AALW,QAAA,QAAQ,YAKnB"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPlainObject = exports.isObject = void 0;
4
+ const isObject = (obj) => {
5
+ return obj != null && typeof obj === "object";
6
+ };
7
+ exports.isObject = isObject;
8
+ const isPlainObject = (obj) => {
9
+ if (!(0, exports.isObject)(obj)) {
10
+ return false;
11
+ }
12
+ const proto = Reflect.getPrototypeOf(obj);
13
+ return proto == null || proto === Object.prototype;
14
+ };
15
+ exports.isPlainObject = isPlainObject;
16
+ //# sourceMappingURL=is-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../ts/is-object.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAC,GAAY,EAA8B,EAAE;IACpE,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEK,MAAM,aAAa,GAAG,CAAC,GAAY,EAA8B,EAAE;IACzE,IAAI,CAAC,IAAA,gBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC;AACpD,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnaryPredicate = void 0;
4
+ /**
5
+ * Tests whether the given object is a function and takes at
6
+ * least one parameter, and could maybe act as a unary predicate.
7
+ * Warning! Since no type information is available at runtime,
8
+ * it may not actually act as a predicate!
9
+ */
10
+ const isUnaryPredicate = (obj) => {
11
+ return typeof obj === "function" && obj.length >= 1;
12
+ };
13
+ exports.isUnaryPredicate = isUnaryPredicate;
14
+ //# sourceMappingURL=is-predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-predicate.js","sourceRoot":"","sources":["../../../ts/is-predicate.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAkC,EAAE;IAChF,OAAO,OAAO,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
@@ -0,0 +1 @@
1
+ {"root":["../../index.ts","../../ts/assert-defined.ts","../../ts/error-from-message.ts","../../ts/has-array.ts","../../ts/has-number.ts","../../ts/has-own.ts","../../ts/is-int.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
package/esm/index.js ADDED
@@ -0,0 +1,10 @@
1
+ export * from "./ts/assert-defined.js";
2
+ export * from "./ts/error-from-message.js";
3
+ export * from "./ts/has-array.js";
4
+ export * from "./ts/has-number.js";
5
+ export * from "./ts/has-own.js";
6
+ export * from "./ts/is-int.js";
7
+ export * from "./ts/is-list-of.js";
8
+ export * from "./ts/is-object.js";
9
+ export * from "./ts/is-predicate.js";
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,6 @@
1
+ {
2
+ "engines": {
3
+ "node": ">=16"
4
+ },
5
+ "type": "module"
6
+ }
@@ -0,0 +1,8 @@
1
+ import { errorFromMessageOrError } from "./error-from-message.js";
2
+ export function assertDefined(value, messageOrError) {
3
+ if (value != null) {
4
+ return;
5
+ }
6
+ throw errorFromMessageOrError(messageOrError, RangeError);
7
+ }
8
+ //# sourceMappingURL=assert-defined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-defined.js","sourceRoot":"","sources":["../../../ts/assert-defined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,UAAU,aAAa,CAC5B,KAAQ,EACR,cAA8B;IAE9B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO;IACR,CAAC;IACD,MAAM,uBAAuB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Helper for guards which expect text or an error, or
3
+ * can generate one when needed.
4
+ */
5
+ export const errorFromMessageOrError = (messageOrError, defaultConstructor = Error) => {
6
+ let stringOrError;
7
+ if (typeof messageOrError === "function") {
8
+ stringOrError = messageOrError();
9
+ }
10
+ else {
11
+ stringOrError = messageOrError;
12
+ }
13
+ let error;
14
+ if (typeof stringOrError === "string") {
15
+ error = new defaultConstructor(`Missing: ${stringOrError}`);
16
+ }
17
+ else {
18
+ error = stringOrError;
19
+ }
20
+ return error;
21
+ };
22
+ //# sourceMappingURL=error-from-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-from-message.js","sourceRoot":"","sources":["../../../ts/error-from-message.ts"],"names":[],"mappings":"AAKA;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CACtC,cAA8B,EAC9B,qBAAuD,KAAK,EACpD,EAAE;IACV,IAAI,aAA6B,CAAC;IAClC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QAC1C,aAAa,GAAG,cAAc,EAAE,CAAC;IAClC,CAAC;SAAM,CAAC;QACP,aAAa,GAAG,cAAc,CAAC;IAChC,CAAC;IACD,IAAI,KAAY,CAAC;IACjB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,GAAG,IAAI,kBAAkB,CAAC,YAAa,aAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACP,KAAK,GAAG,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { hasOwn } from "./has-own.js";
2
+ import { isListOf } from "./is-list-of.js";
3
+ /**
4
+ * Guard for whether the given value is an object which has a property with its own array value.
5
+ */
6
+ export function hasArray(obj, name, predicate) {
7
+ return hasOwn(obj, name) && Array.isArray(obj[name]) && (predicate == null || isListOf(obj[name], predicate));
8
+ }
9
+ //# sourceMappingURL=has-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-array.js","sourceRoot":"","sources":["../../../ts/has-array.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAY3C;;GAEG;AACH,MAAM,UAAU,QAAQ,CAA4B,GAAY,EAAE,IAAU,EAAE,SAA4E;IACzJ,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/G,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { hasOwn } from "./has-own.js";
2
+ export const hasNumber = (obj, name) => {
3
+ return hasOwn(obj, name) && typeof obj[name] === "number";
4
+ };
5
+ //# sourceMappingURL=has-number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-number.js","sourceRoot":"","sources":["../../../ts/has-number.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAsB,GAAY,EAAE,IAAU,EAAgC,EAAE;IACxG,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AAC3D,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { isObject } from "./is-object.js";
2
+ export function hasOwn(obj, name, predicate) {
3
+ if (!isObject(obj) || !Object.hasOwn(obj, name)) {
4
+ return false;
5
+ }
6
+ return predicate == null || predicate(obj[name]);
7
+ }
8
+ //# sourceMappingURL=has-own.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-own.js","sourceRoot":"","sources":["../../../ts/has-own.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI1C,MAAM,UAAU,MAAM,CAAyB,GAAY,EAAE,IAAU,EAAE,SAA0C;IAClH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { errorFromMessageOrError } from "./error-from-message.js";
2
+ export const isInt = (obj) => typeof obj === "number" && !isNaN(obj) && Math.trunc(obj) === obj && obj !== Infinity && obj !== -Infinity;
3
+ export function assertInt(value, messageOrError) {
4
+ if (!isInt(value)) {
5
+ throw errorFromMessageOrError(messageOrError, TypeError);
6
+ }
7
+ }
8
+ export const expectInt = (obj, messageOrError) => {
9
+ assertInt(obj, messageOrError);
10
+ return obj;
11
+ };
12
+ //# sourceMappingURL=is-int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-int.js","sourceRoot":"","sources":["../../../ts/is-int.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,GAAY,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;AAEjK,MAAM,UAAU,SAAS,CAAC,KAAc,EAAE,cAA8B;IACvE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,uBAAuB,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;AACF,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,CACxB,GAAY,EACZ,cAA8B,EACrB,EAAE;IACX,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export const isListOf = (list, predicate) => {
2
+ return Array.isArray(list) && list.every(predicate);
3
+ };
4
+ //# sourceMappingURL=is-list-of.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-list-of.js","sourceRoot":"","sources":["../../../ts/is-list-of.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CACvB,IAAa,EACb,SAAwE,EAC1D,EAAE;IAChB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ export const isObject = (obj) => {
2
+ return obj != null && typeof obj === "object";
3
+ };
4
+ export const isPlainObject = (obj) => {
5
+ if (!isObject(obj)) {
6
+ return false;
7
+ }
8
+ const proto = Reflect.getPrototypeOf(obj);
9
+ return proto == null || proto === Object.prototype;
10
+ };
11
+ //# sourceMappingURL=is-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../ts/is-object.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,GAAY,EAA8B,EAAE;IACpE,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAY,EAA8B,EAAE;IACzE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC;AACpD,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Tests whether the given object is a function and takes at
3
+ * least one parameter, and could maybe act as a unary predicate.
4
+ * Warning! Since no type information is available at runtime,
5
+ * it may not actually act as a predicate!
6
+ */
7
+ export const isUnaryPredicate = (obj) => {
8
+ return typeof obj === "function" && obj.length >= 1;
9
+ };
10
+ //# sourceMappingURL=is-predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-predicate.js","sourceRoot":"","sources":["../../../ts/is-predicate.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAkC,EAAE;IAChF,OAAO,OAAO,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC"}
@@ -0,0 +1 @@
1
+ {"root":["../../index.ts","../../ts/assert-defined.ts","../../ts/error-from-message.ts","../../ts/has-array.ts","../../ts/has-number.ts","../../ts/has-own.ts","../../ts/is-int.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -28,4 +28,4 @@
28
28
 
29
29
  ## Defined in
30
30
 
31
- [assert-defined.ts:3](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/assert-defined.ts#L3)
31
+ [assert-defined.ts:3](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/assert-defined.ts#L3)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -24,4 +24,4 @@
24
24
 
25
25
  ## Defined in
26
26
 
27
- [is-int.ts:5](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-int.ts#L5)
27
+ [is-int.ts:5](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-int.ts#L5)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -27,4 +27,4 @@ can generate one when needed.
27
27
 
28
28
  ## Defined in
29
29
 
30
- [error-from-message.ts:10](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/error-from-message.ts#L10)
30
+ [error-from-message.ts:10](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/error-from-message.ts#L10)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -24,4 +24,4 @@
24
24
 
25
25
  ## Defined in
26
26
 
27
- [is-int.ts:11](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-int.ts#L11)
27
+ [is-int.ts:11](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-int.ts#L11)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -39,7 +39,7 @@ This variant does not exhaustively check the items of the array.
39
39
 
40
40
  ### Defined in
41
41
 
42
- [has-array.ts:8](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/has-array.ts#L8)
42
+ [has-array.ts:8](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/has-array.ts#L8)
43
43
 
44
44
  ## Call Signature
45
45
 
@@ -74,4 +74,4 @@ This variant exhaustively checks the items of the array against the given predic
74
74
 
75
75
  ### Defined in
76
76
 
77
- [has-array.ts:13](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/has-array.ts#L13)
77
+ [has-array.ts:13](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/has-array.ts#L13)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -28,4 +28,4 @@
28
28
 
29
29
  ## Defined in
30
30
 
31
- [has-number.ts:3](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/has-number.ts#L3)
31
+ [has-number.ts:3](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/has-number.ts#L3)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -30,7 +30,7 @@
30
30
 
31
31
  ### Defined in
32
32
 
33
- [has-own.ts:3](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/has-own.ts#L3)
33
+ [has-own.ts:3](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/has-own.ts#L3)
34
34
 
35
35
  ## Call Signature
36
36
 
@@ -62,4 +62,4 @@
62
62
 
63
63
  ### Defined in
64
64
 
65
- [has-own.ts:4](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/has-own.ts#L4)
65
+ [has-own.ts:4](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/has-own.ts#L4)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -20,4 +20,4 @@
20
20
 
21
21
  ## Defined in
22
22
 
23
- [is-int.ts:3](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-int.ts#L3)
23
+ [is-int.ts:3](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-int.ts#L3)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -28,4 +28,4 @@
28
28
 
29
29
  ## Defined in
30
30
 
31
- [is-list-of.ts:1](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-list-of.ts#L1)
31
+ [is-list-of.ts:1](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-list-of.ts#L1)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -20,4 +20,4 @@
20
20
 
21
21
  ## Defined in
22
22
 
23
- [is-object.ts:1](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-object.ts#L1)
23
+ [is-object.ts:1](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-object.ts#L1)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -20,4 +20,4 @@
20
20
 
21
21
  ## Defined in
22
22
 
23
- [is-object.ts:5](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-object.ts#L5)
23
+ [is-object.ts:5](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-object.ts#L5)
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -25,4 +25,4 @@ it may not actually act as a predicate!
25
25
 
26
26
  ## Defined in
27
27
 
28
- [is-predicate.ts:9](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/is-predicate.ts#L9)
28
+ [is-predicate.ts:9](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/is-predicate.ts#L9)
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "url": "https://rickosborne.org"
5
5
  },
6
6
  "dependencies": {
7
- "@rickosborne/typical": "2024.12.27"
7
+ "@rickosborne/typical": "2024.12.28"
8
8
  },
9
9
  "description": "Rick Osborne's collection of type guards.",
10
10
  "engines": {
@@ -12,18 +12,15 @@
12
12
  },
13
13
  "exports": {
14
14
  ".": {
15
- "types": "./dist/types/index.d.ts",
16
- "import": "./dist/esm/index.js",
17
- "require": "./dist/cjs/index.js",
18
- "default": "./dist/esm/index.js"
15
+ "types": "./types/index.d.ts",
16
+ "import": "./esm/index.js",
17
+ "require": "./cjs/index.js",
18
+ "default": "./esm/index.js"
19
19
  }
20
20
  },
21
- "files": [
22
- "dist"
23
- ],
24
21
  "homepage": "https://github.com/rickosborne/es-js-ts",
25
22
  "license": "CC-BY-NC-SA-4.0",
26
- "main": "dist/cjs/index.js",
23
+ "main": "cjs/index.js",
27
24
  "name": "@rickosborne/guard",
28
25
  "private": false,
29
26
  "publishConfig": {
@@ -33,26 +30,5 @@
33
30
  "type": "git",
34
31
  "url": "git+https://github.com/rickosborne/es-js-ts.git"
35
32
  },
36
- "scripts": {
37
- "build": "tsc -b tsconfig.cjs.json tsconfig.module.json tsconfig.types.json && cp ../static/esm-package.json dist/esm/package.json && cp ../static/cjs-package.json dist/cjs/package.json",
38
- "check-exports": "tsx ../scripts/check-exports.ts guard",
39
- "clean": "rm -rf ./dist",
40
- "doc": "typedoc",
41
- "lint": "eslint .",
42
- "lint:fix": "eslint --fix .",
43
- "postbuild": "npm run doc",
44
- "prebuild": "npm run clean && npm run type-check",
45
- "prepub": "npm run prepublish",
46
- "prepub:dry-run": "npm run prepublish",
47
- "prepublish": "npm run build && npm run lint && npm run check-exports",
48
- "pub": "npm publish",
49
- "pub:dry-run": "npm publish --dry-run",
50
- "reinstall": "rm -rf ./node_modules && npm ci",
51
- "reinstall:full": "rm -rf ./node_modules package-lock.json && npm install",
52
- "test": "mocha",
53
- "test:coverage": "nyc mocha",
54
- "type-check": "tsc --noEmit",
55
- "upgrade:check": "npm-check-updates"
56
- },
57
- "version": "2024.12.27"
33
+ "version": "2024.12.28"
58
34
  }
@@ -1,4 +1,4 @@
1
- [**@rickosborne/guard v2024.12.27**](../README.md)
1
+ [**@rickosborne/guard v2024.12.28**](../README.md)
2
2
 
3
3
  ***
4
4
 
@@ -12,4 +12,4 @@ A message, an error, or something which can generate one of those.
12
12
 
13
13
  ## Defined in
14
14
 
15
- [error-from-message.ts:4](https://github.com/rickosborne/es-js-ts/blob/78a07c48a8ee66acad83b938575d051189c41326/guard/ts/error-from-message.ts#L4)
15
+ [error-from-message.ts:4](https://github.com/rickosborne/es-js-ts/blob/b9df3c6eb00a5aca153cd4895e7af44eeb074ddb/guard/ts/error-from-message.ts#L4)
@@ -0,0 +1,9 @@
1
+ export * from "./ts/assert-defined.js";
2
+ export * from "./ts/error-from-message.js";
3
+ export * from "./ts/has-array.js";
4
+ export * from "./ts/has-number.js";
5
+ export * from "./ts/has-own.js";
6
+ export * from "./ts/is-int.js";
7
+ export * from "./ts/is-list-of.js";
8
+ export * from "./ts/is-object.js";
9
+ export * from "./ts/is-predicate.js";
package/types/index.js ADDED
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./ts/assert-defined.js"), exports);
18
+ __exportStar(require("./ts/error-from-message.js"), exports);
19
+ __exportStar(require("./ts/has-array.js"), exports);
20
+ __exportStar(require("./ts/has-number.js"), exports);
21
+ __exportStar(require("./ts/has-own.js"), exports);
22
+ __exportStar(require("./ts/is-int.js"), exports);
23
+ __exportStar(require("./ts/is-list-of.js"), exports);
24
+ __exportStar(require("./ts/is-object.js"), exports);
25
+ __exportStar(require("./ts/is-predicate.js"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yDAAuC;AACvC,6DAA2C;AAC3C,oDAAkC;AAClC,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,qDAAmC;AACnC,oDAAkC;AAClC,uDAAqC"}
@@ -0,0 +1,2 @@
1
+ import { type MessageOrError } from "./error-from-message.js";
2
+ export declare function assertDefined<T>(value: T, messageOrError: MessageOrError): asserts value is NonNullable<T>;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.assertDefined = assertDefined;
4
+ const error_from_message_js_1 = require("./error-from-message.js");
5
+ function assertDefined(value, messageOrError) {
6
+ if (value != null) {
7
+ return;
8
+ }
9
+ throw (0, error_from_message_js_1.errorFromMessageOrError)(messageOrError, RangeError);
10
+ }
11
+ //# sourceMappingURL=assert-defined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert-defined.js","sourceRoot":"","sources":["../../../ts/assert-defined.ts"],"names":[],"mappings":";;AAEA,sCAQC;AAVD,mEAAuF;AAEvF,SAAgB,aAAa,CAC5B,KAAQ,EACR,cAA8B;IAE9B,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO;IACR,CAAC;IACD,MAAM,IAAA,+CAAuB,EAAC,cAAc,EAAE,UAAU,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * A message, an error, or something which can generate one of those.
3
+ */
4
+ export type MessageOrError = string | Error | (() => (string | Error));
5
+ /**
6
+ * Helper for guards which expect text or an error, or
7
+ * can generate one when needed.
8
+ */
9
+ export declare const errorFromMessageOrError: (messageOrError: MessageOrError, defaultConstructor?: (new (message: string) => Error)) => Error;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.errorFromMessageOrError = void 0;
4
+ /**
5
+ * Helper for guards which expect text or an error, or
6
+ * can generate one when needed.
7
+ */
8
+ const errorFromMessageOrError = (messageOrError, defaultConstructor = Error) => {
9
+ let stringOrError;
10
+ if (typeof messageOrError === "function") {
11
+ stringOrError = messageOrError();
12
+ }
13
+ else {
14
+ stringOrError = messageOrError;
15
+ }
16
+ let error;
17
+ if (typeof stringOrError === "string") {
18
+ error = new defaultConstructor(`Missing: ${stringOrError}`);
19
+ }
20
+ else {
21
+ error = stringOrError;
22
+ }
23
+ return error;
24
+ };
25
+ exports.errorFromMessageOrError = errorFromMessageOrError;
26
+ //# sourceMappingURL=error-from-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-from-message.js","sourceRoot":"","sources":["../../../ts/error-from-message.ts"],"names":[],"mappings":";;;AAKA;;;GAGG;AACI,MAAM,uBAAuB,GAAG,CACtC,cAA8B,EAC9B,qBAAuD,KAAK,EACpD,EAAE;IACV,IAAI,aAA6B,CAAC;IAClC,IAAI,OAAO,cAAc,KAAK,UAAU,EAAE,CAAC;QAC1C,aAAa,GAAG,cAAc,EAAE,CAAC;IAClC,CAAC;SAAM,CAAC;QACP,aAAa,GAAG,cAAc,CAAC;IAChC,CAAC;IACD,IAAI,KAAY,CAAC;IACjB,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;QACvC,KAAK,GAAG,IAAI,kBAAkB,CAAC,YAAa,aAAc,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACP,KAAK,GAAG,aAAa,CAAC;IACvB,CAAC;IACD,OAAO,KAAK,CAAC;AACd,CAAC,CAAC;AAjBW,QAAA,uBAAuB,2BAiBlC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Guard for whether the given value is an object which has a property with its own array value.
3
+ * This variant does not exhaustively check the items of the array.
4
+ */
5
+ export declare function hasArray<Name extends string>(obj: unknown, name: Name, predicate?: undefined): obj is {
6
+ [K in Name]: unknown[];
7
+ };
8
+ /**
9
+ * Guard for whether the given value is an object which has a property with its own array value.
10
+ * This variant exhaustively checks the items of the array against the given predicate.
11
+ */
12
+ export declare function hasArray<Name extends string, Item>(obj: unknown, name: Name, predicate?: (item: unknown, index: number, items: unknown[]) => item is Item): obj is {
13
+ [K in Name]: Item[];
14
+ };
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasArray = hasArray;
4
+ const has_own_js_1 = require("./has-own.js");
5
+ const is_list_of_js_1 = require("./is-list-of.js");
6
+ /**
7
+ * Guard for whether the given value is an object which has a property with its own array value.
8
+ */
9
+ function hasArray(obj, name, predicate) {
10
+ return (0, has_own_js_1.hasOwn)(obj, name) && Array.isArray(obj[name]) && (predicate == null || (0, is_list_of_js_1.isListOf)(obj[name], predicate));
11
+ }
12
+ //# sourceMappingURL=has-array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-array.js","sourceRoot":"","sources":["../../../ts/has-array.ts"],"names":[],"mappings":";;AAgBA,4BAEC;AAlBD,6CAAsC;AACtC,mDAA2C;AAY3C;;GAEG;AACH,SAAgB,QAAQ,CAA4B,GAAY,EAAE,IAAU,EAAE,SAA4E;IACzJ,OAAO,IAAA,mBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAA,wBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/G,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const hasNumber: <Name extends string>(obj: unknown, name: Name) => obj is { [k in Name]: string; };
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasNumber = void 0;
4
+ const has_own_js_1 = require("./has-own.js");
5
+ const hasNumber = (obj, name) => {
6
+ return (0, has_own_js_1.hasOwn)(obj, name) && typeof obj[name] === "number";
7
+ };
8
+ exports.hasNumber = hasNumber;
9
+ //# sourceMappingURL=has-number.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-number.js","sourceRoot":"","sources":["../../../ts/has-number.ts"],"names":[],"mappings":";;;AAAA,6CAAsC;AAE/B,MAAM,SAAS,GAAG,CAAsB,GAAY,EAAE,IAAU,EAAgC,EAAE;IACxG,OAAO,IAAA,mBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC;AAC3D,CAAC,CAAC;AAFW,QAAA,SAAS,aAEpB"}
@@ -0,0 +1,6 @@
1
+ export declare function hasOwn<Name extends string>(obj: unknown, name: Name): obj is {
2
+ [K in Name]: unknown;
3
+ };
4
+ export declare function hasOwn<Name extends string, T>(obj: unknown, name: Name, predicate: (value: unknown) => value is T): obj is {
5
+ [K in Name]: T;
6
+ };
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hasOwn = hasOwn;
4
+ const is_object_js_1 = require("./is-object.js");
5
+ function hasOwn(obj, name, predicate) {
6
+ if (!(0, is_object_js_1.isObject)(obj) || !Object.hasOwn(obj, name)) {
7
+ return false;
8
+ }
9
+ return predicate == null || predicate(obj[name]);
10
+ }
11
+ //# sourceMappingURL=has-own.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-own.js","sourceRoot":"","sources":["../../../ts/has-own.ts"],"names":[],"mappings":";;AAIA,wBAKC;AATD,iDAA0C;AAI1C,SAAgB,MAAM,CAAyB,GAAY,EAAE,IAAU,EAAE,SAA0C;IAClH,IAAI,CAAC,IAAA,uBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,KAAK,CAAC;IACd,CAAC;IACD,OAAO,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,GAAG,CAAC,IAAwB,CAAC,CAAC,CAAC;AACtE,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { type MessageOrError } from "./error-from-message.js";
2
+ export declare const isInt: (obj: unknown) => obj is number;
3
+ export declare function assertInt(value: unknown, messageOrError: MessageOrError): asserts value is number;
4
+ export declare const expectInt: (obj: unknown, messageOrError: MessageOrError) => number;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.expectInt = exports.isInt = void 0;
4
+ exports.assertInt = assertInt;
5
+ const error_from_message_js_1 = require("./error-from-message.js");
6
+ const isInt = (obj) => typeof obj === "number" && !isNaN(obj) && Math.trunc(obj) === obj && obj !== Infinity && obj !== -Infinity;
7
+ exports.isInt = isInt;
8
+ function assertInt(value, messageOrError) {
9
+ if (!(0, exports.isInt)(value)) {
10
+ throw (0, error_from_message_js_1.errorFromMessageOrError)(messageOrError, TypeError);
11
+ }
12
+ }
13
+ const expectInt = (obj, messageOrError) => {
14
+ assertInt(obj, messageOrError);
15
+ return obj;
16
+ };
17
+ exports.expectInt = expectInt;
18
+ //# sourceMappingURL=is-int.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-int.js","sourceRoot":"","sources":["../../../ts/is-int.ts"],"names":[],"mappings":";;;AAIA,8BAIC;AARD,mEAAuF;AAEhF,MAAM,KAAK,GAAG,CAAC,GAAY,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC;AAApJ,QAAA,KAAK,SAA+I;AAEjK,SAAgB,SAAS,CAAC,KAAc,EAAE,cAA8B;IACvE,IAAI,CAAC,IAAA,aAAK,EAAC,KAAK,CAAC,EAAE,CAAC;QACnB,MAAM,IAAA,+CAAuB,EAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;AACF,CAAC;AAEM,MAAM,SAAS,GAAG,CACxB,GAAY,EACZ,cAA8B,EACrB,EAAE;IACX,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACZ,CAAC,CAAC;AANW,QAAA,SAAS,aAMpB"}
@@ -0,0 +1 @@
1
+ export declare const isListOf: <T>(list: unknown, predicate: (item: unknown, index: number, items: unknown[]) => item is T) => list is T[];
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isListOf = void 0;
4
+ const isListOf = (list, predicate) => {
5
+ return Array.isArray(list) && list.every(predicate);
6
+ };
7
+ exports.isListOf = isListOf;
8
+ //# sourceMappingURL=is-list-of.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-list-of.js","sourceRoot":"","sources":["../../../ts/is-list-of.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CACvB,IAAa,EACb,SAAwE,EAC1D,EAAE;IAChB,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACrD,CAAC,CAAC;AALW,QAAA,QAAQ,YAKnB"}
@@ -0,0 +1,2 @@
1
+ export declare const isObject: (obj: unknown) => obj is NonNullable<object>;
2
+ export declare const isPlainObject: (obj: unknown) => obj is Record<never, never>;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isPlainObject = exports.isObject = void 0;
4
+ const isObject = (obj) => {
5
+ return obj != null && typeof obj === "object";
6
+ };
7
+ exports.isObject = isObject;
8
+ const isPlainObject = (obj) => {
9
+ if (!(0, exports.isObject)(obj)) {
10
+ return false;
11
+ }
12
+ const proto = Reflect.getPrototypeOf(obj);
13
+ return proto == null || proto === Object.prototype;
14
+ };
15
+ exports.isPlainObject = isPlainObject;
16
+ //# sourceMappingURL=is-object.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-object.js","sourceRoot":"","sources":["../../../ts/is-object.ts"],"names":[],"mappings":";;;AAAO,MAAM,QAAQ,GAAG,CAAC,GAAY,EAA8B,EAAE;IACpE,OAAO,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC;AAC/C,CAAC,CAAC;AAFW,QAAA,QAAQ,YAEnB;AAEK,MAAM,aAAa,GAAG,CAAC,GAAY,EAA8B,EAAE;IACzE,IAAI,CAAC,IAAA,gBAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,MAAM,CAAC,SAAS,CAAC;AACpD,CAAC,CAAC;AANW,QAAA,aAAa,iBAMxB"}
@@ -0,0 +1,8 @@
1
+ import { UnaryPredicate } from "@rickosborne/typical";
2
+ /**
3
+ * Tests whether the given object is a function and takes at
4
+ * least one parameter, and could maybe act as a unary predicate.
5
+ * Warning! Since no type information is available at runtime,
6
+ * it may not actually act as a predicate!
7
+ */
8
+ export declare const isUnaryPredicate: (obj: unknown) => obj is UnaryPredicate<unknown>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isUnaryPredicate = void 0;
4
+ /**
5
+ * Tests whether the given object is a function and takes at
6
+ * least one parameter, and could maybe act as a unary predicate.
7
+ * Warning! Since no type information is available at runtime,
8
+ * it may not actually act as a predicate!
9
+ */
10
+ const isUnaryPredicate = (obj) => {
11
+ return typeof obj === "function" && obj.length >= 1;
12
+ };
13
+ exports.isUnaryPredicate = isUnaryPredicate;
14
+ //# sourceMappingURL=is-predicate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"is-predicate.js","sourceRoot":"","sources":["../../../ts/is-predicate.ts"],"names":[],"mappings":";;;AAEA;;;;;GAKG;AACI,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAkC,EAAE;IAChF,OAAO,OAAO,GAAG,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACrD,CAAC,CAAC;AAFW,QAAA,gBAAgB,oBAE3B"}
@@ -0,0 +1 @@
1
+ {"root":["../../index.ts","../../ts/assert-defined.ts","../../ts/error-from-message.ts","../../ts/has-array.ts","../../ts/has-number.ts","../../ts/has-own.ts","../../ts/is-int.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
package/dist/README.md DELETED
@@ -1,26 +0,0 @@
1
- **@rickosborne/guard v2024.12.27**
2
-
3
- ***
4
-
5
- # @rickosborne/guard
6
-
7
- Basic type guards building on [@rickosborne/typical](https://www.npmjs.com/package/@rickosborne/typical).
8
-
9
- ## Type Aliases
10
-
11
- - [MessageOrError](type-aliases/MessageOrError.md)
12
-
13
- ## Functions
14
-
15
- - [assertDefined](functions/assertDefined.md)
16
- - [assertInt](functions/assertInt.md)
17
- - [errorFromMessageOrError](functions/errorFromMessageOrError.md)
18
- - [expectInt](functions/expectInt.md)
19
- - [hasArray](functions/hasArray.md)
20
- - [hasNumber](functions/hasNumber.md)
21
- - [hasOwn](functions/hasOwn.md)
22
- - [isInt](functions/isInt.md)
23
- - [isListOf](functions/isListOf.md)
24
- - [isObject](functions/isObject.md)
25
- - [isPlainObject](functions/isPlainObject.md)
26
- - [isUnaryPredicate](functions/isUnaryPredicate.md)