@dereekb/util 2.1.0 → 4.0.1

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 (245) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/package.json +13 -5
  3. package/src/index.d.ts +0 -1
  4. package/src/index.js +1 -2
  5. package/src/index.js.map +1 -1
  6. package/src/lib/array/array.boolean.d.ts +2 -2
  7. package/src/lib/array/array.boolean.js +1 -1
  8. package/src/lib/array/array.boolean.js.map +1 -1
  9. package/src/lib/array/array.d.ts +24 -2
  10. package/src/lib/array/array.index.d.ts +1 -1
  11. package/src/lib/array/array.js +37 -2
  12. package/src/lib/array/array.js.map +1 -1
  13. package/src/lib/array/array.limit.d.ts +1 -1
  14. package/src/lib/array/array.make.d.ts +1 -1
  15. package/src/lib/array/array.make.js +2 -2
  16. package/src/lib/array/array.make.js.map +1 -1
  17. package/src/lib/array/array.map.d.ts +1 -1
  18. package/src/lib/array/array.set.d.ts +2 -16
  19. package/src/lib/array/array.set.js +21 -55
  20. package/src/lib/array/array.set.js.map +1 -1
  21. package/src/lib/array/array.string.d.ts +7 -5
  22. package/src/lib/array/array.string.js +14 -4
  23. package/src/lib/array/array.string.js.map +1 -1
  24. package/src/lib/array/array.unique.d.ts +1 -1
  25. package/src/lib/array/array.value.d.ts +15 -1
  26. package/src/lib/array/array.value.js +21 -1
  27. package/src/lib/array/array.value.js.map +1 -1
  28. package/src/lib/array/index.js +12 -12
  29. package/src/lib/array/index.js.map +1 -1
  30. package/src/lib/assertion/index.js +5 -5
  31. package/src/lib/assertion/index.js.map +1 -1
  32. package/src/lib/auth/auth.role.claims.d.ts +98 -0
  33. package/src/lib/auth/auth.role.claims.js +93 -0
  34. package/src/lib/auth/auth.role.claims.js.map +1 -0
  35. package/src/lib/auth/auth.role.d.ts +22 -0
  36. package/src/lib/auth/auth.role.js +17 -0
  37. package/src/lib/auth/auth.role.js.map +1 -0
  38. package/src/lib/auth/index.d.ts +2 -0
  39. package/src/lib/auth/index.js +6 -0
  40. package/src/lib/auth/index.js.map +1 -0
  41. package/src/lib/contact/index.js +3 -3
  42. package/src/lib/contact/index.js.map +1 -1
  43. package/src/lib/date/date.d.ts +1 -1
  44. package/src/lib/date/date.time.d.ts +1 -1
  45. package/src/lib/date/index.js +2 -2
  46. package/src/lib/date/index.js.map +1 -1
  47. package/src/lib/error/error.d.ts +6 -1
  48. package/src/lib/error/error.js +8 -1
  49. package/src/lib/error/error.js.map +1 -1
  50. package/src/lib/error/error.server.d.ts +5 -12
  51. package/src/lib/error/error.server.js.map +1 -1
  52. package/src/lib/error/index.js +2 -2
  53. package/src/lib/error/index.js.map +1 -1
  54. package/src/lib/filter/index.js +1 -1
  55. package/src/lib/filter/index.js.map +1 -1
  56. package/src/lib/function/function.forward.d.ts +9 -0
  57. package/src/lib/function/function.forward.js +18 -0
  58. package/src/lib/function/function.forward.js.map +1 -0
  59. package/src/lib/function/index.d.ts +1 -0
  60. package/src/lib/function/index.js +5 -0
  61. package/src/lib/function/index.js.map +1 -0
  62. package/src/lib/getter/getter.cache.d.ts +38 -0
  63. package/src/lib/getter/getter.cache.js +23 -0
  64. package/src/lib/getter/getter.cache.js.map +1 -0
  65. package/src/lib/getter/getter.d.ts +61 -0
  66. package/src/lib/getter/getter.js +48 -0
  67. package/src/lib/getter/getter.js.map +1 -0
  68. package/src/lib/getter/getter.map.d.ts +15 -0
  69. package/src/lib/getter/getter.map.js +24 -0
  70. package/src/lib/getter/getter.map.js.map +1 -0
  71. package/src/lib/getter/index.d.ts +3 -0
  72. package/src/lib/getter/index.js +7 -0
  73. package/src/lib/getter/index.js.map +1 -0
  74. package/src/lib/grouping.d.ts +4 -4
  75. package/src/lib/index.d.ts +9 -5
  76. package/src/lib/index.js +31 -28
  77. package/src/lib/index.js.map +1 -1
  78. package/src/lib/iterable/index.d.ts +2 -0
  79. package/src/lib/iterable/index.js +6 -0
  80. package/src/lib/iterable/index.js.map +1 -0
  81. package/src/lib/iterable/iterable.d.ts +53 -0
  82. package/src/lib/iterable/iterable.js +113 -0
  83. package/src/lib/iterable/iterable.js.map +1 -0
  84. package/src/lib/iterable/iterable.map.d.ts +8 -0
  85. package/src/lib/iterable/iterable.map.js +18 -0
  86. package/src/lib/iterable/iterable.map.js.map +1 -0
  87. package/src/lib/iterate.js +1 -1
  88. package/src/lib/key.d.ts +1 -1
  89. package/src/lib/map/index.d.ts +2 -0
  90. package/src/lib/map/index.js +6 -0
  91. package/src/lib/map/index.js.map +1 -0
  92. package/src/lib/map/map.d.ts +9 -0
  93. package/src/lib/map/map.intersection.d.ts +15 -0
  94. package/src/lib/map/map.intersection.js +24 -0
  95. package/src/lib/map/map.intersection.js.map +1 -0
  96. package/src/lib/map/map.js +17 -0
  97. package/src/lib/map/map.js.map +1 -0
  98. package/src/lib/misc/host.d.ts +5 -0
  99. package/src/lib/misc/host.js +13 -0
  100. package/src/lib/misc/host.js.map +1 -0
  101. package/src/lib/misc/index.d.ts +1 -0
  102. package/src/lib/misc/index.js +5 -0
  103. package/src/lib/misc/index.js.map +1 -0
  104. package/src/lib/model/index.d.ts +3 -0
  105. package/src/lib/model/index.js +7 -0
  106. package/src/lib/model/index.js.map +1 -0
  107. package/src/lib/model/model.conversion.d.ts +63 -0
  108. package/src/lib/model/model.conversion.js +66 -0
  109. package/src/lib/model/model.conversion.js.map +1 -0
  110. package/src/lib/model/model.copy.d.ts +16 -0
  111. package/src/lib/model/model.copy.js +20 -0
  112. package/src/lib/model/model.copy.js.map +1 -0
  113. package/src/lib/{model.d.ts → model/model.d.ts} +2 -2
  114. package/src/lib/{model.js → model/model.js} +3 -3
  115. package/src/lib/model/model.js.map +1 -0
  116. package/src/lib/number/factory.d.ts +22 -0
  117. package/src/lib/number/factory.js +22 -0
  118. package/src/lib/number/factory.js.map +1 -0
  119. package/src/lib/number/index.d.ts +3 -0
  120. package/src/lib/number/index.js +7 -0
  121. package/src/lib/number/index.js.map +1 -0
  122. package/src/lib/number/random.d.ts +13 -0
  123. package/src/lib/number/random.js +22 -0
  124. package/src/lib/number/random.js.map +1 -0
  125. package/src/lib/{number.d.ts → number/round.d.ts} +0 -13
  126. package/src/lib/{number.js → number/round.js} +2 -20
  127. package/src/lib/number/round.js.map +1 -0
  128. package/src/lib/object/index.d.ts +1 -0
  129. package/src/lib/object/index.js +4 -3
  130. package/src/lib/object/index.js.map +1 -1
  131. package/src/lib/object/object.d.ts +69 -8
  132. package/src/lib/object/object.equal.d.ts +1 -1
  133. package/src/lib/object/object.equal.js +3 -3
  134. package/src/lib/object/object.equal.js.map +1 -1
  135. package/src/lib/object/object.js +117 -11
  136. package/src/lib/object/object.js.map +1 -1
  137. package/src/lib/object/object.map.d.ts +35 -0
  138. package/src/lib/object/object.map.js +40 -0
  139. package/src/lib/object/object.map.js.map +1 -0
  140. package/src/lib/page/index.js +3 -3
  141. package/src/lib/page/index.js.map +1 -1
  142. package/src/lib/page/page.d.ts +1 -1
  143. package/src/lib/page/page.filter.js +1 -1
  144. package/src/lib/promise/index.d.ts +3 -0
  145. package/src/lib/promise/index.js +7 -4
  146. package/src/lib/promise/index.js.map +1 -1
  147. package/src/lib/promise/is.d.ts +7 -0
  148. package/src/lib/promise/is.js +15 -0
  149. package/src/lib/promise/is.js.map +1 -0
  150. package/src/lib/promise/map.d.ts +10 -0
  151. package/src/lib/promise/map.js +14 -0
  152. package/src/lib/promise/map.js.map +1 -0
  153. package/src/lib/promise/promise.d.ts +13 -1
  154. package/src/lib/promise/promise.js +26 -8
  155. package/src/lib/promise/promise.js.map +1 -1
  156. package/src/lib/promise/promise.loop.d.ts +18 -3
  157. package/src/lib/promise/promise.loop.js +18 -2
  158. package/src/lib/promise/promise.loop.js.map +1 -1
  159. package/src/lib/promise/promise.ref.d.ts +10 -0
  160. package/src/lib/promise/promise.ref.js +19 -0
  161. package/src/lib/promise/promise.ref.js.map +1 -0
  162. package/src/lib/promise/wait.js +2 -2
  163. package/src/lib/promise/wait.js.map +1 -1
  164. package/src/lib/relation/index.js +1 -1
  165. package/src/lib/relation/index.js.map +1 -1
  166. package/src/lib/relation/relation.js +2 -2
  167. package/src/lib/set/index.d.ts +4 -0
  168. package/src/lib/set/index.js +8 -0
  169. package/src/lib/set/index.js.map +1 -0
  170. package/src/lib/set/set.allowed.d.ts +23 -0
  171. package/src/lib/set/set.allowed.js +29 -0
  172. package/src/lib/set/set.allowed.js.map +1 -0
  173. package/src/lib/set/set.d.ts +53 -0
  174. package/src/lib/{set.hashset.d.ts → set/set.hashset.d.ts} +2 -2
  175. package/src/lib/{set.hashset.js → set/set.hashset.js} +0 -0
  176. package/src/lib/set/set.hashset.js.map +1 -0
  177. package/src/lib/set/set.js +114 -0
  178. package/src/lib/set/set.js.map +1 -0
  179. package/src/lib/set/set.maybe.d.ts +11 -0
  180. package/src/lib/set/set.maybe.js +22 -0
  181. package/src/lib/set/set.maybe.js.map +1 -0
  182. package/src/lib/sort.d.ts +1 -4
  183. package/src/lib/sort.js +3 -8
  184. package/src/lib/sort.js.map +1 -1
  185. package/src/lib/storage/index.js +4 -4
  186. package/src/lib/storage/index.js.map +1 -1
  187. package/src/lib/storage/storage.memory.d.ts +1 -1
  188. package/src/lib/storage/storage.object.d.ts +1 -1
  189. package/src/lib/string.d.ts +9 -2
  190. package/src/lib/string.js +11 -1
  191. package/src/lib/string.js.map +1 -1
  192. package/src/lib/tree/index.js +4 -4
  193. package/src/lib/tree/index.js.map +1 -1
  194. package/src/lib/tree/tree.expand.d.ts +1 -1
  195. package/src/lib/type.d.ts +17 -1
  196. package/src/lib/value/equal.d.ts +41 -0
  197. package/src/lib/value/equal.js +56 -0
  198. package/src/lib/value/equal.js.map +1 -0
  199. package/src/lib/value/index.d.ts +4 -0
  200. package/src/lib/value/index.js +8 -0
  201. package/src/lib/value/index.js.map +1 -0
  202. package/src/lib/value/map.d.ts +13 -0
  203. package/src/lib/{map.js → value/map.js} +0 -0
  204. package/src/lib/value/map.js.map +1 -0
  205. package/src/lib/{value.d.ts → value/maybe.d.ts} +33 -4
  206. package/src/lib/{value.js → value/maybe.js} +35 -5
  207. package/src/lib/value/maybe.js.map +1 -0
  208. package/src/lib/value/modifier.d.ts +58 -0
  209. package/src/lib/value/modifier.js +69 -0
  210. package/src/lib/value/modifier.js.map +1 -0
  211. package/test/CHANGELOG.md +9 -0
  212. package/test/README.md +11 -0
  213. package/test/package.json +14 -0
  214. package/test/src/index.d.ts +1 -0
  215. package/test/src/index.js +5 -0
  216. package/test/src/index.js.map +1 -0
  217. package/{src/test → test/src/lib}/index.d.ts +1 -0
  218. package/test/src/lib/index.js +7 -0
  219. package/test/src/lib/index.js.map +1 -0
  220. package/{src/test → test/src/lib}/jest.d.ts +21 -1
  221. package/test/src/lib/jest.function.d.ts +9 -0
  222. package/test/src/lib/jest.function.js +14 -0
  223. package/test/src/lib/jest.function.js.map +1 -0
  224. package/test/src/lib/jest.js +108 -0
  225. package/test/src/lib/jest.js.map +1 -0
  226. package/{src/test → test/src/lib}/jest.wrap.d.ts +0 -0
  227. package/{src/test → test/src/lib}/jest.wrap.js +5 -5
  228. package/test/src/lib/jest.wrap.js.map +1 -0
  229. package/src/lib/getter.d.ts +0 -26
  230. package/src/lib/getter.js +0 -13
  231. package/src/lib/getter.js.map +0 -1
  232. package/src/lib/map.d.ts +0 -2
  233. package/src/lib/map.js.map +0 -1
  234. package/src/lib/model.js.map +0 -1
  235. package/src/lib/number.js.map +0 -1
  236. package/src/lib/set.d.ts +0 -0
  237. package/src/lib/set.hashset.js.map +0 -1
  238. package/src/lib/set.js +0 -2
  239. package/src/lib/set.js.map +0 -1
  240. package/src/lib/value.js.map +0 -1
  241. package/src/test/index.js +0 -6
  242. package/src/test/index.js.map +0 -1
  243. package/src/test/jest.js +0 -80
  244. package/src/test/jest.js.map +0 -1
  245. package/src/test/jest.wrap.js.map +0 -1
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./assert.error"), exports);
5
- (0, tslib_1.__exportStar)(require("./assert"), exports);
6
- (0, tslib_1.__exportStar)(require("./assertion.generic"), exports);
7
- (0, tslib_1.__exportStar)(require("./assertion.number"), exports);
8
- (0, tslib_1.__exportStar)(require("./assertion"), exports);
4
+ tslib_1.__exportStar(require("./assert.error"), exports);
5
+ tslib_1.__exportStar(require("./assert"), exports);
6
+ tslib_1.__exportStar(require("./assertion.generic"), exports);
7
+ tslib_1.__exportStar(require("./assertion.number"), exports);
8
+ tslib_1.__exportStar(require("./assertion"), exports);
9
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/assertion/index.ts"],"names":[],"mappings":";;;AAAA,8DAA+B;AAC/B,wDAAyB;AACzB,mEAAoC;AACpC,kEAAmC;AACnC,2DAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/assertion/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,mDAAyB;AACzB,8DAAoC;AACpC,6DAAmC;AACnC,sDAA4B"}
@@ -0,0 +1,98 @@
1
+ import { AuthRole, AuthRoleSet } from "./auth.role";
2
+ import { ArrayOrValue } from '../array/array';
3
+ /**
4
+ * Key in the claims.
5
+ */
6
+ export declare type AuthClaimKey = string;
7
+ /**
8
+ * Value in claims.
9
+ */
10
+ export declare type ClearAuthClaimValue = null;
11
+ /**
12
+ * Value in claims.
13
+ */
14
+ export declare type SimpleAuthClaimValue = string | number;
15
+ /**
16
+ * Value in claims.
17
+ */
18
+ export declare type AuthClaimValue = SimpleAuthClaimValue | object;
19
+ /**
20
+ * An object that contains "claims" in the context of a JSON Web Token (JWT).
21
+ *
22
+ * It is keyed by the claims key.
23
+ */
24
+ export declare type AuthClaims<T = any> = {
25
+ [K in keyof T]: AuthClaimValue;
26
+ };
27
+ /**
28
+ * A claims update.
29
+ */
30
+ export declare type AuthClaimsUpdate<T = any> = {
31
+ [K in keyof Partial<T>]: AuthClaimValue | ClearAuthClaimValue;
32
+ };
33
+ /**
34
+ * Configuration for a claims key.
35
+ */
36
+ export declare type AuthRoleClaimsFactoryConfigEntry = AuthRoleClaimsFactoryConfigEntrySimpleOptions | AuthRoleClaimsFactoryConfigEntryEncodeOptions;
37
+ /**
38
+ *
39
+ */
40
+ export interface AuthRoleClaimsFactoryConfigEntrySimpleOptions {
41
+ /**
42
+ * The roles to add when this claims is encountered.
43
+ */
44
+ roles: ArrayOrValue<AuthRole>;
45
+ /**
46
+ * (Optional) claim value. Overrides the default claim value.
47
+ */
48
+ value?: SimpleAuthClaimValue;
49
+ }
50
+ /**
51
+ * A more configurable configuration for a single claims value.
52
+ */
53
+ export interface AuthRoleClaimsFactoryConfigEntryEncodeOptions {
54
+ /**
55
+ * (Optional) function of retrieving the value associated with this entry given the input claims.
56
+ *
57
+ * If not defined, will defer to role for finding matches and pull from value.
58
+ */
59
+ encodeValueFromRoles: (roles: AuthRoleSet) => AuthClaimValue | undefined;
60
+ /**
61
+ * (Optional) Auth roles associated with this claims. If not defined, the claims key is used.
62
+ */
63
+ decodeRolesFromValue: (value: AuthClaimValue) => AuthRole[] | undefined;
64
+ }
65
+ export declare type AuthRoleClaimsFactoryConfig = {
66
+ [key: string]: AuthRoleClaimsFactoryConfigEntry;
67
+ };
68
+ export interface AuthRoleClaimsFactoryDefaults {
69
+ /**
70
+ * Default value to use for claims that have no value present.
71
+ */
72
+ claimValue?: any;
73
+ /**
74
+ * Default value for claims that are not defined.
75
+ */
76
+ emptyValue?: any;
77
+ }
78
+ export declare type AuthRoleClaimsToRolesFunction<T extends AuthRoleClaimsFactoryConfig = any> = (roles: AuthRoleSet) => AuthClaims<T>;
79
+ export declare type AuthRoleRolesToClaimsFunction<T extends AuthRoleClaimsFactoryConfig = any> = (claims: AuthClaims<T>) => AuthRoleSet;
80
+ /**
81
+ * Service used for converting claims to/from a roles set.
82
+ */
83
+ export interface AuthRoleClaimsService<T extends AuthRoleClaimsFactoryConfig = any> {
84
+ readonly toClaims: AuthRoleClaimsToRolesFunction<T>;
85
+ readonly toRoles: AuthRoleRolesToClaimsFunction<T>;
86
+ readonly defaultClaimValue: any;
87
+ readonly defaultEmptyValue: any;
88
+ }
89
+ export declare const AUTH_ROLE_CLAIMS_DEFAULT_EMPTY_VALUE: null;
90
+ export declare const AUTH_ROLE_CLAIMS_DEFAULT_CLAIM_VALUE = 1;
91
+ /**
92
+ * Creates a AuthRoleClaimsService using the input configuration.
93
+ *
94
+ * @param config
95
+ * @param defaults
96
+ * @returns
97
+ */
98
+ export declare function authRoleClaimsService<T extends AuthRoleClaimsFactoryConfig>(config: T, defaults?: AuthRoleClaimsFactoryDefaults): AuthRoleClaimsService<T>;
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authRoleClaimsService = exports.AUTH_ROLE_CLAIMS_DEFAULT_CLAIM_VALUE = exports.AUTH_ROLE_CLAIMS_DEFAULT_EMPTY_VALUE = void 0;
4
+ const object_1 = require("../object/object");
5
+ const object_map_1 = require("../object/object.map");
6
+ const array_1 = require("../array/array");
7
+ const set_1 = require("../set");
8
+ exports.AUTH_ROLE_CLAIMS_DEFAULT_EMPTY_VALUE = null;
9
+ exports.AUTH_ROLE_CLAIMS_DEFAULT_CLAIM_VALUE = 1;
10
+ /**
11
+ * Creates a AuthRoleClaimsService using the input configuration.
12
+ *
13
+ * @param config
14
+ * @param defaults
15
+ * @returns
16
+ */
17
+ function authRoleClaimsService(config, defaults = {}) {
18
+ const defaultClaimValue = (0, object_1.objectHasKey)(defaults, 'claimValue') ? defaults === null || defaults === void 0 ? void 0 : defaults.claimValue : exports.AUTH_ROLE_CLAIMS_DEFAULT_CLAIM_VALUE;
19
+ const defaultEmptyValue = (0, object_1.objectHasKey)(defaults, 'emptyValue') ? defaults === null || defaults === void 0 ? void 0 : defaults.emptyValue : exports.AUTH_ROLE_CLAIMS_DEFAULT_EMPTY_VALUE;
20
+ function isSimpleOptions(entry) {
21
+ return entry.roles != null;
22
+ }
23
+ const tuples = (0, object_map_1.objectToTuples)(config).map((x) => {
24
+ var _a;
25
+ const inputEntry = x[1];
26
+ let entry;
27
+ if (isSimpleOptions(inputEntry)) {
28
+ const expectedValue = (_a = inputEntry.value) !== null && _a !== void 0 ? _a : defaultClaimValue;
29
+ const claimRoles = (0, array_1.asArray)(inputEntry.roles);
30
+ // since checking uses equivalence, the objects will never match equivalence via the === properly.
31
+ // AuthRoleClaimsFactoryConfigEntryEncodeOptions is likely to be used for these cases anyways, but this will help avoid unexpected errors.
32
+ if (typeof expectedValue === 'object') {
33
+ throw new Error(`failed decoding claims. Expected value to be a string or number. Object isn't supported with simple claims.`);
34
+ }
35
+ entry = {
36
+ encodeValueFromRoles: (roles) => {
37
+ var _a;
38
+ let claimsValue;
39
+ // only set the claims value if all values are present in the claims.
40
+ if ((0, set_1.setContainsAllValues)(roles, claimRoles)) {
41
+ claimsValue = (_a = inputEntry.value) !== null && _a !== void 0 ? _a : defaultClaimValue;
42
+ }
43
+ return claimsValue;
44
+ },
45
+ decodeRolesFromValue: (value) => {
46
+ if (value === expectedValue) {
47
+ return claimRoles;
48
+ }
49
+ else {
50
+ return [];
51
+ }
52
+ }
53
+ };
54
+ }
55
+ else {
56
+ entry = inputEntry;
57
+ }
58
+ entry.claimKey = x[0];
59
+ return [x[0], entry];
60
+ });
61
+ const authRolesMap = new Map(tuples.map(x => [(x[0]).toLowerCase(), x[1]]));
62
+ const toClaims = (roles) => {
63
+ const claims = {};
64
+ // iterate by each claim value to build the claims.
65
+ tuples.forEach(([claimsKey, entry]) => {
66
+ var _a;
67
+ let claimsValue = (_a = entry.encodeValueFromRoles(roles)) !== null && _a !== void 0 ? _a : defaultEmptyValue;
68
+ claims[claimsKey] = claimsValue;
69
+ });
70
+ return claims;
71
+ };
72
+ const toRoles = (claims) => {
73
+ const roles = new Set();
74
+ (0, object_1.forEachKeyValue)(claims, {
75
+ forEach: ([claimsKey, value]) => {
76
+ const entry = authRolesMap.get(claimsKey);
77
+ if (entry != null) {
78
+ const decodedRoles = entry.decodeRolesFromValue(value);
79
+ (0, set_1.addToSet)(roles, decodedRoles);
80
+ }
81
+ }
82
+ });
83
+ return roles;
84
+ };
85
+ return {
86
+ toClaims,
87
+ toRoles,
88
+ defaultClaimValue,
89
+ defaultEmptyValue
90
+ };
91
+ }
92
+ exports.authRoleClaimsService = authRoleClaimsService;
93
+ //# sourceMappingURL=auth.role.claims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.role.claims.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/auth/auth.role.claims.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { Maybe } from "../value/maybe";
2
+ /**
3
+ * An application role.
4
+ *
5
+ * Is used in the client to decide which content a user can view.
6
+ *
7
+ * Roles should always be lowercase.
8
+ */
9
+ export declare type AuthRole = string;
10
+ /**
11
+ * A set of auth roles for a user.
12
+ */
13
+ export declare type AuthRoleSet = Set<AuthRole>;
14
+ /**
15
+ * Auth role for a full admin. Is allowed into all sections of the app.
16
+ */
17
+ export declare const AUTH_ADMIN_ROLE = "admin";
18
+ /**
19
+ * Auth role for a general user. Is allowed into the app and is logged in.
20
+ */
21
+ export declare const AUTH_USER_ROLE = "user";
22
+ export declare function authRolesSetHasRoles(authRolesSet: AuthRoleSet, roles: Maybe<Iterable<AuthRole>>): boolean;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.authRolesSetHasRoles = exports.AUTH_USER_ROLE = exports.AUTH_ADMIN_ROLE = void 0;
4
+ const set_1 = require("../set/set");
5
+ /**
6
+ * Auth role for a full admin. Is allowed into all sections of the app.
7
+ */
8
+ exports.AUTH_ADMIN_ROLE = 'admin';
9
+ /**
10
+ * Auth role for a general user. Is allowed into the app and is logged in.
11
+ */
12
+ exports.AUTH_USER_ROLE = 'user';
13
+ function authRolesSetHasRoles(authRolesSet, roles) {
14
+ return (0, set_1.setContainsAllValues)(authRolesSet, roles !== null && roles !== void 0 ? roles : []);
15
+ }
16
+ exports.authRolesSetHasRoles = authRolesSetHasRoles;
17
+ //# sourceMappingURL=auth.role.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.role.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/auth/auth.role.ts"],"names":[],"mappings":";;;AAAA,oCAAkD;AAiBlD;;GAEG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC;AAEvC;;GAEG;AACU,QAAA,cAAc,GAAG,MAAM,CAAC;AAErC,SAAgB,oBAAoB,CAAC,YAAyB,EAAE,KAAgC;IAC9F,OAAO,IAAA,0BAAoB,EAAC,YAAY,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE,CAAC,CAAA;AACxD,CAAC;AAFD,oDAEC"}
@@ -0,0 +1,2 @@
1
+ export * from './auth.role';
2
+ export * from './auth.role.claims';
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./auth.role"), exports);
5
+ tslib_1.__exportStar(require("./auth.role.claims"), exports);
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/auth/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,6DAAmC"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./domain"), exports);
5
- (0, tslib_1.__exportStar)(require("./email"), exports);
6
- (0, tslib_1.__exportStar)(require("./phone"), exports);
4
+ tslib_1.__exportStar(require("./domain"), exports);
5
+ tslib_1.__exportStar(require("./email"), exports);
6
+ tslib_1.__exportStar(require("./phone"), exports);
7
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/contact/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB;AACzB,uDAAwB;AACxB,uDAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/contact/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB;AACzB,kDAAwB;AACxB,kDAAwB"}
@@ -1,4 +1,4 @@
1
- import { Maybe } from "../value";
1
+ import { Maybe } from "../value/maybe";
2
2
  /**
3
3
  * A valid ISO8601 formatted date string.
4
4
  */
@@ -1,4 +1,4 @@
1
- import { Maybe } from "../value";
1
+ import { Maybe } from "../value/maybe";
2
2
  /**
3
3
  * Represents a string for a time. This may be human-input, and
4
4
  * can be interpreted in various ways depending on the input.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./date"), exports);
5
- (0, tslib_1.__exportStar)(require("./date.time"), exports);
4
+ tslib_1.__exportStar(require("./date"), exports);
5
+ tslib_1.__exportStar(require("./date.time"), exports);
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/date/index.ts"],"names":[],"mappings":";;;AAAA,sDAAuB;AACvB,2DAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/date/index.ts"],"names":[],"mappings":";;;AAAA,iDAAuB;AACvB,sDAA4B"}
@@ -1,3 +1,4 @@
1
+ import { Maybe } from '../value/maybe';
1
2
  /**
2
3
  * A unique identifier for a specific error.
3
4
  */
@@ -12,8 +13,12 @@ export interface CodedError {
12
13
  * An error with a human-readable message.
13
14
  */
14
15
  export interface ReadableError extends Partial<CodedError> {
15
- message: string;
16
+ message?: Maybe<string>;
16
17
  }
18
+ export declare function readableError(code: StringErrorCode, message?: string): {
19
+ code: string;
20
+ message: string | undefined;
21
+ };
17
22
  export interface ReadableDataError<T = any> extends ReadableError {
18
23
  data?: T;
19
24
  }
@@ -1,7 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertToReadableError = void 0;
3
+ exports.convertToReadableError = exports.readableError = void 0;
4
4
  const make_error_1 = require("make-error");
5
+ function readableError(code, message) {
6
+ return {
7
+ code,
8
+ message
9
+ };
10
+ }
11
+ exports.readableError = readableError;
5
12
  /**
6
13
  * Converts the input error content to a ReadableError or CodedError.
7
14
  *
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/error/error.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAgCvC;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,UAAkC;IACvE,IAAI,KAA6C,CAAC;IAElD,IAAI,UAAU,EAAE;QACd,IAAK,UAAyB,CAAC,IAAI,EAAE;YACnC,KAAK,GAAG,UAA2B,CAAC;SACrC;aAAM,IAAK,UAA2B,CAAC,IAAI,EAAE;YAC5C,KAAK,GAAI,UAA2B,CAAC,IAAqB,CAAC;SAC5D;aAAM,IAAI,UAAU,YAAY,sBAAS,EAAE;YAC1C,KAAK,GAAG;gBACN,IAAI,EAAG,UAAkB,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;gBACjD,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC;SACH;aAAM;YACL,KAAK,GAAG;gBACN,IAAI,EAAE,OAAO;gBACb,OAAO,EAAG,UAAkB,CAAC,OAAO,IAAI,EAAE;aAC3C,CAAC;SACH;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,wDAsBC"}
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/error/error.ts"],"names":[],"mappings":";;;AAAA,2CAAuC;AAsBvC,SAAgB,aAAa,CAAC,IAAqB,EAAE,OAAgB;IACnE,OAAO;QACL,IAAI;QACJ,OAAO;KACR,CAAC;AACJ,CAAC;AALD,sCAKC;AAYD;;;;;GAKG;AACH,SAAgB,sBAAsB,CAAC,UAAkC;IACvE,IAAI,KAA6C,CAAC;IAElD,IAAI,UAAU,EAAE;QACd,IAAK,UAAyB,CAAC,IAAI,EAAE;YACnC,KAAK,GAAG,UAA2B,CAAC;SACrC;aAAM,IAAK,UAA2B,CAAC,IAAI,EAAE;YAC5C,KAAK,GAAI,UAA2B,CAAC,IAAqB,CAAC;SAC5D;aAAM,IAAI,UAAU,YAAY,sBAAS,EAAE;YAC1C,KAAK,GAAG;gBACN,IAAI,EAAG,UAAkB,CAAC,IAAI,IAAI,UAAU,CAAC,IAAI;gBACjD,OAAO,EAAE,UAAU,CAAC,OAAO;aAC5B,CAAC;SACH;aAAM;YACL,KAAK,GAAG;gBACN,IAAI,EAAE,OAAO;gBACb,OAAO,EAAG,UAAkB,CAAC,OAAO,IAAI,EAAE;aAC3C,CAAC;SACH;KACF;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAtBD,wDAsBC"}
@@ -1,16 +1,9 @@
1
- import { StringErrorCode, ReadableDataError } from './error';
1
+ import { Maybe } from '../value/maybe';
2
+ import { ReadableError, ReadableDataError, StringErrorCode } from './error';
2
3
  /**
3
4
  * The expected error object returned from the server.
4
5
  */
5
- export interface ServerErrorResponseData {
6
- /**
7
- * Unique identifier of the error returned, if available.
8
- */
9
- code?: StringErrorCode;
10
- /**
11
- * User-readable message of the error returned.
12
- */
13
- message?: string;
6
+ export interface ServerErrorResponseData extends ReadableError {
14
7
  /**
15
8
  * Additional keys/data returned in the error data.
16
9
  */
@@ -26,9 +19,9 @@ export interface ServerError<T = any> extends ReadableDataError<T> {
26
19
  * Base server-error class.
27
20
  */
28
21
  export declare class ServerErrorResponse<T extends ServerErrorResponseData = ServerErrorResponseData> implements ServerError<T> {
29
- readonly code?: string;
22
+ readonly code?: StringErrorCode;
30
23
  readonly status: number;
31
- readonly message: string;
24
+ readonly message: Maybe<string>;
32
25
  readonly data?: T;
33
26
  constructor({ code, status, data, message }: ServerError<T>);
34
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"error.server.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/error/error.server.ts"],"names":[],"mappings":";;;AA2BA;;GAEG;AACH,MAAa,mBAAmB;IAO9B,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAkB;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CAEF;AAdD,kDAcC;AAED,MAAa,+BAAgC,SAAQ,mBAAmB;IAEtE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAwB;QACvD,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;CAEF;AAND,0EAMC"}
1
+ {"version":3,"file":"error.server.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/error/error.server.ts"],"names":[],"mappings":";;;AAoBA;;GAEG;AACH,MAAa,mBAAmB;IAO9B,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAkB;QACzD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CAEF;AAdD,kDAcC;AAED,MAAa,+BAAgC,SAAQ,mBAAmB;IAEtE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAwB;QACvD,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,aAAP,OAAO,cAAP,OAAO,GAAI,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IACzE,CAAC;CAEF;AAND,0EAMC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./error.server"), exports);
5
- (0, tslib_1.__exportStar)(require("./error"), exports);
4
+ tslib_1.__exportStar(require("./error.server"), exports);
5
+ tslib_1.__exportStar(require("./error"), exports);
6
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/error/index.ts"],"names":[],"mappings":";;;AAAA,8DAA+B;AAC/B,uDAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/error/index.ts"],"names":[],"mappings":";;;AAAA,yDAA+B;AAC/B,kDAAwB"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
- (0, tslib_1.__exportStar)(require("./filter"), exports);
4
+ tslib_1.__exportStar(require("./filter"), exports);
5
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/filter/index.ts"],"names":[],"mappings":";;;AAAA,wDAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/filter/index.ts"],"names":[],"mappings":";;;AAAA,mDAAyB"}
@@ -0,0 +1,9 @@
1
+ import { Getter } from "../getter/getter";
2
+ export declare type ForwardFunction<I extends (...args: any[]) => O, O = any> = I;
3
+ /**
4
+ * Wraps a Getter that returns a function. When the function is invoked, the getter retrieves the function then calls it with the input arguments.
5
+ *
6
+ * @param getter
7
+ * @returns
8
+ */
9
+ export declare function forwardFunction<I extends (...args: any[]) => O, O = any>(getter: Getter<I>): ForwardFunction<I>;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.forwardFunction = void 0;
4
+ /**
5
+ * Wraps a Getter that returns a function. When the function is invoked, the getter retrieves the function then calls it with the input arguments.
6
+ *
7
+ * @param getter
8
+ * @returns
9
+ */
10
+ function forwardFunction(getter) {
11
+ const fn = ((...args) => {
12
+ const forwardFn = getter();
13
+ return forwardFn(...args);
14
+ });
15
+ return fn;
16
+ }
17
+ exports.forwardFunction = forwardFunction;
18
+ //# sourceMappingURL=function.forward.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"function.forward.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/function/function.forward.ts"],"names":[],"mappings":";;;AAKA;;;;;GAKG;AACH,SAAgB,eAAe,CAA2C,MAAiB;IACzF,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAW,EAAE,EAAE;QAC7B,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,CAAC,CAA0B,CAAC;IAE5B,OAAO,EAAE,CAAC;AACZ,CAAC;AAPD,0CAOC"}
@@ -0,0 +1 @@
1
+ export * from './function.forward';
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./function.forward"), exports);
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/function/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC"}
@@ -0,0 +1,38 @@
1
+ import { FactoryWithInput, Getter } from "./getter";
2
+ /**
3
+ * Getter that returns a cached value.
4
+ */
5
+ export declare type CachedGetter<T> = Getter<T> & {
6
+ /**
7
+ * Sets the value in the cache.
8
+ *
9
+ * @param value
10
+ */
11
+ set(value: T): void;
12
+ /**
13
+ * Resets/clears the cache.
14
+ */
15
+ reset(): void;
16
+ /**
17
+ * Re-initializes the getter and reloads the value from the source.
18
+ */
19
+ init(): void;
20
+ };
21
+ export declare type CachedFactoryWithInput<T, A = any> = CachedGetter<T> & FactoryWithInput<T, A> & {
22
+ /**
23
+ * Re-initializes the cache using the factory function.
24
+ *
25
+ * @param input
26
+ */
27
+ init(input?: A): void;
28
+ };
29
+ /**
30
+ * Creates a CachedGetter from the input Getter.
31
+ *
32
+ * The value will be retrieved once, then cached permenantly by this function.
33
+ *
34
+ * @param getter
35
+ * @returns
36
+ */
37
+ export declare function cachedGetter<T>(getter: Getter<T>): CachedFactoryWithInput<T>;
38
+ export declare function cachedGetter<T, A = any>(factory: FactoryWithInput<T, A>): CachedFactoryWithInput<T, A>;
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cachedGetter = void 0;
4
+ function cachedGetter(factory) {
5
+ let loaded;
6
+ const init = (input) => {
7
+ loaded = {
8
+ value: factory(input)
9
+ };
10
+ };
11
+ const result = ((input) => {
12
+ if (!loaded) {
13
+ init(input);
14
+ }
15
+ return loaded.value;
16
+ });
17
+ result.set = (value) => loaded = { value };
18
+ result.reset = () => loaded = undefined;
19
+ result.init = init;
20
+ return result;
21
+ }
22
+ exports.cachedGetter = cachedGetter;
23
+ //# sourceMappingURL=getter.cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getter.cache.js","sourceRoot":"","sources":["../../../../../../packages/util/src/lib/getter/getter.cache.ts"],"names":[],"mappings":";;;AA8CA,SAAgB,YAAY,CAAa,OAA+B;IACtE,IAAI,MAA2B,CAAC;IAEhC,MAAM,IAAI,GAAG,CAAC,KAAS,EAAE,EAAE;QACzB,MAAM,GAAG;YACP,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC;SACtB,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAS,EAAE,EAAE;QAC5B,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,KAAK,CAAC,CAAC;SACb;QAED,OAAO,MAAO,CAAC,KAAK,CAAC;IACvB,CAAC,CAAiC,CAAC;IAEnC,MAAM,CAAC,GAAG,GAAG,CAAC,KAAQ,EAAE,EAAE,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC;IAC9C,MAAM,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC;IACxC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;IAEnB,OAAO,MAAM,CAAC;AAChB,CAAC;AAtBD,oCAsBC"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Function that returns a value.
3
+ */
4
+ export declare type Getter<T> = () => T;
5
+ /**
6
+ * Getter with the design of returning a new value each time.
7
+ */
8
+ export declare type Factory<T> = Getter<T>;
9
+ /**
10
+ * Function that returns a value with an optional single argument.
11
+ */
12
+ export declare type FactoryWithInput<T, A> = (args?: A) => T;
13
+ /**
14
+ * Function that returns a value with a single argument.
15
+ */
16
+ export declare type FactoryWithRequiredInput<T, A> = (args: A) => T;
17
+ /**
18
+ * Either a Getter, or an instance of the item.
19
+ */
20
+ export declare type GetterOrValue<T> = T | Getter<T>;
21
+ /**
22
+ * Either a GetterWithInput, or a Getter.
23
+ */
24
+ export declare type GetterOrFactoryWithInput<T, A> = Getter<T> | FactoryWithInput<T, A>;
25
+ /**
26
+ * Either a GetterOrValue, or a FactoryWithInput.
27
+ */
28
+ export declare type GetterOrValueWithInput<T extends string | number | object | symbol, A> = GetterOrValue<T> | FactoryWithInput<T, A>;
29
+ export declare type StringOrGetter = GetterOrValue<string>;
30
+ /**
31
+ * Returns true if the input object looks like a Getter (is a function).
32
+ *
33
+ * @param value
34
+ * @returns
35
+ */
36
+ export declare function isGetter<T = any>(value: any): value is Getter<T>;
37
+ /**
38
+ * If the input is a function, it is executed. Otherwise, the value is returned.
39
+ *
40
+ * @param input
41
+ * @returns
42
+ */
43
+ export declare function getValueFromGetter<T>(input: GetterOrValue<T>): T;
44
+ export declare function getValueFromGetter<T>(this: any, input: GetterOrValue<T>): T;
45
+ export declare function getValueFromGetter<T>(this: any, input: GetterOrValue<T>, inputArgs?: any): T;
46
+ export declare function getValueFromGetter<T, A>(this: any, input: GetterOrFactoryWithInput<T, A>, args?: A): T;
47
+ export declare function getValueFromGetter<T extends string | number | object | symbol, A>(this: any, input: GetterOrValueWithInput<T, A>, args?: A): T;
48
+ /**
49
+ * Returns the input as a getter.
50
+ *
51
+ * @param input
52
+ * @returns
53
+ */
54
+ export declare function asGetter<T>(input: GetterOrValue<T>): Getter<T>;
55
+ /**
56
+ * Wraps the input and returns a Getter for that value.
57
+ *
58
+ * @param input
59
+ * @returns
60
+ */
61
+ export declare function makeGetter<T>(input: T): Getter<T>;