@rickosborne/guard 2024.12.23 → 2024.12.25

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 (39) hide show
  1. package/dist/cjs/ts/assert-defined.js +11 -0
  2. package/dist/cjs/ts/assert-defined.js.map +1 -0
  3. package/dist/cjs/ts/error-from-message.js +26 -0
  4. package/dist/cjs/ts/error-from-message.js.map +1 -0
  5. package/dist/cjs/ts/has-array.js +4 -1
  6. package/dist/cjs/ts/has-array.js.map +1 -1
  7. package/dist/cjs/ts/index.js +3 -0
  8. package/dist/cjs/ts/index.js.map +1 -1
  9. package/dist/cjs/ts/is-int.js +18 -0
  10. package/dist/cjs/ts/is-int.js.map +1 -0
  11. package/dist/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  12. package/dist/esm/ts/assert-defined.js +8 -0
  13. package/dist/esm/ts/assert-defined.js.map +1 -0
  14. package/dist/esm/ts/error-from-message.js +22 -0
  15. package/dist/esm/ts/error-from-message.js.map +1 -0
  16. package/dist/esm/ts/has-array.js +4 -1
  17. package/dist/esm/ts/has-array.js.map +1 -1
  18. package/dist/esm/ts/index.js +3 -0
  19. package/dist/esm/ts/index.js.map +1 -1
  20. package/dist/esm/ts/is-int.js +12 -0
  21. package/dist/esm/ts/is-int.js.map +1 -0
  22. package/dist/esm/tsconfig.module.tsbuildinfo +1 -1
  23. package/dist/types/ts/assert-defined.d.ts +2 -0
  24. package/dist/types/ts/assert-defined.js +11 -0
  25. package/dist/types/ts/assert-defined.js.map +1 -0
  26. package/dist/types/ts/error-from-message.d.ts +9 -0
  27. package/dist/types/ts/error-from-message.js +26 -0
  28. package/dist/types/ts/error-from-message.js.map +1 -0
  29. package/dist/types/ts/has-array.d.ts +8 -0
  30. package/dist/types/ts/has-array.js +4 -1
  31. package/dist/types/ts/has-array.js.map +1 -1
  32. package/dist/types/ts/index.d.ts +3 -0
  33. package/dist/types/ts/index.js +3 -0
  34. package/dist/types/ts/index.js.map +1 -1
  35. package/dist/types/ts/is-int.d.ts +4 -0
  36. package/dist/types/ts/is-int.js +18 -0
  37. package/dist/types/ts/is-int.js.map +1 -0
  38. package/dist/types/tsconfig.types.tsbuildinfo +1 -1
  39. package/package.json +2 -2
@@ -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"}
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasArray = hasArray;
4
4
  const has_own_js_1 = require("./has-own.js");
5
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
+ */
6
9
  function hasArray(obj, name, predicate) {
7
- return (0, has_own_js_1.hasOwn)(obj, name) && (predicate == null || (0, is_list_of_js_1.isListOf)(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));
8
11
  }
9
12
  //# sourceMappingURL=has-array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-array.js","sourceRoot":"","sources":["../../../ts/has-array.ts"],"names":[],"mappings":";;AAKA,4BAEC;AAPD,6CAAsC;AACtC,mDAA2C;AAI3C,SAAgB,QAAQ,CAA4B,GAAY,EAAE,IAAU,EAAE,SAA4E;IACzJ,OAAO,IAAA,mBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAA,wBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACnF,CAAC"}
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"}
@@ -14,9 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./assert-defined.js"), exports);
18
+ __exportStar(require("./error-from-message.js"), exports);
17
19
  __exportStar(require("./has-array.js"), exports);
18
20
  __exportStar(require("./has-number.js"), exports);
19
21
  __exportStar(require("./has-own.js"), exports);
22
+ __exportStar(require("./is-int.js"), exports);
20
23
  __exportStar(require("./is-list-of.js"), exports);
21
24
  __exportStar(require("./is-object.js"), exports);
22
25
  __exportStar(require("./is-predicate.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,0DAAwC;AACxC,iDAA+B;AAC/B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC"}
@@ -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"}
@@ -1 +1 @@
1
- {"root":["../../index.ts","../../ts/has-array.ts","../../ts/has-number.ts","../../ts/has-own.ts","../../ts/index.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
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/index.ts","../../ts/is-int.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
@@ -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"}
@@ -1,6 +1,9 @@
1
1
  import { hasOwn } from "./has-own.js";
2
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
+ */
3
6
  export function hasArray(obj, name, predicate) {
4
- return hasOwn(obj, name) && (predicate == null || isListOf(obj[name], predicate));
7
+ return hasOwn(obj, name) && Array.isArray(obj[name]) && (predicate == null || isListOf(obj[name], predicate));
5
8
  }
6
9
  //# sourceMappingURL=has-array.js.map
@@ -1 +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;AAI3C,MAAM,UAAU,QAAQ,CAA4B,GAAY,EAAE,IAAU,EAAE,SAA4E;IACzJ,OAAO,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACnF,CAAC"}
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"}
@@ -1,6 +1,9 @@
1
+ export * from "./assert-defined.js";
2
+ export * from "./error-from-message.js";
1
3
  export * from "./has-array.js";
2
4
  export * from "./has-number.js";
3
5
  export * from "./has-own.js";
6
+ export * from "./is-int.js";
4
7
  export * from "./is-list-of.js";
5
8
  export * from "./is-object.js";
6
9
  export * from "./is-predicate.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,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"}
@@ -1 +1 @@
1
- {"root":["../../index.ts","../../ts/has-array.ts","../../ts/has-number.ts","../../ts/has-own.ts","../../ts/index.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
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/index.ts","../../ts/is-int.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
@@ -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"}
@@ -1,6 +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
+ */
1
5
  export declare function hasArray<Name extends string>(obj: unknown, name: Name, predicate?: undefined): obj is {
2
6
  [K in Name]: unknown[];
3
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
+ */
4
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 {
5
13
  [K in Name]: Item[];
6
14
  };
@@ -3,7 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hasArray = hasArray;
4
4
  const has_own_js_1 = require("./has-own.js");
5
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
+ */
6
9
  function hasArray(obj, name, predicate) {
7
- return (0, has_own_js_1.hasOwn)(obj, name) && (predicate == null || (0, is_list_of_js_1.isListOf)(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));
8
11
  }
9
12
  //# sourceMappingURL=has-array.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"has-array.js","sourceRoot":"","sources":["../../../ts/has-array.ts"],"names":[],"mappings":";;AAKA,4BAEC;AAPD,6CAAsC;AACtC,mDAA2C;AAI3C,SAAgB,QAAQ,CAA4B,GAAY,EAAE,IAAU,EAAE,SAA4E;IACzJ,OAAO,IAAA,mBAAM,EAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAA,wBAAQ,EAAC,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;AACnF,CAAC"}
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"}
@@ -1,6 +1,9 @@
1
+ export * from "./assert-defined.js";
2
+ export * from "./error-from-message.js";
1
3
  export * from "./has-array.js";
2
4
  export * from "./has-number.js";
3
5
  export * from "./has-own.js";
6
+ export * from "./is-int.js";
4
7
  export * from "./is-list-of.js";
5
8
  export * from "./is-object.js";
6
9
  export * from "./is-predicate.js";
@@ -14,9 +14,12 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./assert-defined.js"), exports);
18
+ __exportStar(require("./error-from-message.js"), exports);
17
19
  __exportStar(require("./has-array.js"), exports);
18
20
  __exportStar(require("./has-number.js"), exports);
19
21
  __exportStar(require("./has-own.js"), exports);
22
+ __exportStar(require("./is-int.js"), exports);
20
23
  __exportStar(require("./is-list-of.js"), exports);
21
24
  __exportStar(require("./is-object.js"), exports);
22
25
  __exportStar(require("./is-predicate.js"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA+B;AAC/B,kDAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../ts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,0DAAwC;AACxC,iDAA+B;AAC/B,kDAAgC;AAChC,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,iDAA+B;AAC/B,oDAAkC"}
@@ -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"}
@@ -1 +1 @@
1
- {"root":["../../index.ts","../../ts/has-array.ts","../../ts/has-number.ts","../../ts/has-own.ts","../../ts/index.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
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/index.ts","../../ts/is-int.ts","../../ts/is-list-of.ts","../../ts/is-object.ts","../../ts/is-predicate.ts"],"version":"5.7.2"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "url": "https://rickosborne.org"
5
5
  },
6
6
  "dependencies": {
7
- "@rickosborne/typical": "*"
7
+ "@rickosborne/typical": "2024.12.26"
8
8
  },
9
9
  "description": "Rick Osborne's collection of type guards.",
10
10
  "engines": {
@@ -52,5 +52,5 @@
52
52
  "type-check": "tsc --noEmit",
53
53
  "upgrade:check": "npm-check-updates"
54
54
  },
55
- "version": "2024.12.23"
55
+ "version": "2024.12.25"
56
56
  }