@wireio/shared 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/lib/guards/applyTypeGuardExtras.d.ts +3 -0
  2. package/lib/guards/applyTypeGuardExtras.d.ts.map +1 -0
  3. package/lib/guards/applyTypeGuardExtras.js +5 -0
  4. package/lib/guards/applyTypeGuardExtras.js.map +1 -0
  5. package/lib/guards/array.d.ts +2 -0
  6. package/lib/guards/array.d.ts.map +1 -0
  7. package/lib/guards/array.js +4 -0
  8. package/lib/guards/array.js.map +1 -0
  9. package/lib/guards/assert.d.ts +19 -0
  10. package/lib/guards/assert.d.ts.map +1 -0
  11. package/lib/guards/assert.js +50 -0
  12. package/lib/guards/assert.js.map +1 -0
  13. package/lib/guards/class.d.ts +27 -0
  14. package/lib/guards/class.d.ts.map +1 -0
  15. package/lib/guards/class.js +34 -0
  16. package/lib/guards/class.js.map +1 -0
  17. package/lib/guards/guard-tools.d.ts +20 -0
  18. package/lib/guards/guard-tools.d.ts.map +1 -0
  19. package/lib/guards/guard-tools.js +50 -0
  20. package/lib/guards/guard-tools.js.map +1 -0
  21. package/lib/guards/index.d.ts +8 -0
  22. package/lib/guards/index.d.ts.map +1 -0
  23. package/lib/guards/index.js +8 -0
  24. package/lib/guards/index.js.map +1 -0
  25. package/lib/guards/primitive.d.ts +26 -0
  26. package/lib/guards/primitive.d.ts.map +1 -0
  27. package/lib/guards/primitive.js +47 -0
  28. package/lib/guards/primitive.js.map +1 -0
  29. package/lib/guards/types.d.ts +10 -0
  30. package/lib/guards/types.d.ts.map +1 -0
  31. package/lib/guards/types.js +2 -0
  32. package/lib/guards/types.js.map +1 -0
  33. package/lib/helpers/Deferred.d.ts +31 -0
  34. package/lib/helpers/Deferred.d.ts.map +1 -0
  35. package/lib/helpers/Deferred.js +111 -0
  36. package/lib/helpers/Deferred.js.map +1 -0
  37. package/lib/helpers/index.d.ts +2 -0
  38. package/lib/helpers/index.d.ts.map +1 -0
  39. package/lib/helpers/index.js +2 -0
  40. package/lib/helpers/index.js.map +1 -0
  41. package/lib/index.d.ts +4 -0
  42. package/lib/index.d.ts.map +1 -0
  43. package/lib/index.js +4 -0
  44. package/lib/index.js.map +1 -0
  45. package/lib/logging/Appender.d.ts +5 -0
  46. package/lib/logging/Appender.d.ts.map +1 -0
  47. package/lib/logging/Appender.js +2 -0
  48. package/lib/logging/Appender.js.map +1 -0
  49. package/lib/logging/Formatter.d.ts +3 -0
  50. package/lib/logging/Formatter.d.ts.map +1 -0
  51. package/lib/logging/Formatter.js +2 -0
  52. package/lib/logging/Formatter.js.map +1 -0
  53. package/lib/logging/InternalLogger.d.ts +2 -0
  54. package/lib/logging/InternalLogger.d.ts.map +1 -0
  55. package/lib/logging/InternalLogger.js +6 -0
  56. package/lib/logging/InternalLogger.js.map +1 -0
  57. package/lib/logging/Level.d.ts +14 -0
  58. package/lib/logging/Level.d.ts.map +1 -0
  59. package/lib/logging/Level.js +13 -0
  60. package/lib/logging/Level.js.map +1 -0
  61. package/lib/logging/LogRecord.d.ts +16 -0
  62. package/lib/logging/LogRecord.d.ts.map +1 -0
  63. package/lib/logging/LogRecord.js +2 -0
  64. package/lib/logging/LogRecord.js.map +1 -0
  65. package/lib/logging/Logger.d.ts +77 -0
  66. package/lib/logging/Logger.d.ts.map +1 -0
  67. package/lib/logging/Logger.js +158 -0
  68. package/lib/logging/Logger.js.map +1 -0
  69. package/lib/logging/LoggingManager.d.ts +128 -0
  70. package/lib/logging/LoggingManager.d.ts.map +1 -0
  71. package/lib/logging/LoggingManager.js +236 -0
  72. package/lib/logging/LoggingManager.js.map +1 -0
  73. package/lib/logging/appenders/ConsoleAppender.d.ts +55 -0
  74. package/lib/logging/appenders/ConsoleAppender.d.ts.map +1 -0
  75. package/lib/logging/appenders/ConsoleAppender.js +72 -0
  76. package/lib/logging/appenders/ConsoleAppender.js.map +1 -0
  77. package/lib/logging/appenders/DebugAppender.d.ts +53 -0
  78. package/lib/logging/appenders/DebugAppender.d.ts.map +1 -0
  79. package/lib/logging/appenders/DebugAppender.js +183 -0
  80. package/lib/logging/appenders/DebugAppender.js.map +1 -0
  81. package/lib/logging/appenders/FileAppender.d.ts +65 -0
  82. package/lib/logging/appenders/FileAppender.d.ts.map +1 -0
  83. package/lib/logging/appenders/FileAppender.js +212 -0
  84. package/lib/logging/appenders/FileAppender.js.map +1 -0
  85. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts +27 -0
  86. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.d.ts.map +1 -0
  87. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.js +135 -0
  88. package/lib/logging/appenders/aws-firehose/AWSFirehoseAppender.js.map +1 -0
  89. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts +27 -0
  90. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.d.ts.map +1 -0
  91. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js +94 -0
  92. package/lib/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.js.map +1 -0
  93. package/lib/logging/appenders/index.d.ts +4 -0
  94. package/lib/logging/appenders/index.d.ts.map +1 -0
  95. package/lib/logging/appenders/index.js +4 -0
  96. package/lib/logging/appenders/index.js.map +1 -0
  97. package/lib/logging/context/LogContext.d.ts +48 -0
  98. package/lib/logging/context/LogContext.d.ts.map +1 -0
  99. package/lib/logging/context/LogContext.js +58 -0
  100. package/lib/logging/context/LogContext.js.map +1 -0
  101. package/lib/logging/context/LogContextContainer.d.ts +9 -0
  102. package/lib/logging/context/LogContextContainer.d.ts.map +1 -0
  103. package/lib/logging/context/LogContextContainer.js +25 -0
  104. package/lib/logging/context/LogContextContainer.js.map +1 -0
  105. package/lib/logging/context/LogContextProvider.d.ts +24 -0
  106. package/lib/logging/context/LogContextProvider.d.ts.map +1 -0
  107. package/lib/logging/context/LogContextProvider.js +18 -0
  108. package/lib/logging/context/LogContextProvider.js.map +1 -0
  109. package/lib/logging/context/index.d.ts +4 -0
  110. package/lib/logging/context/index.d.ts.map +1 -0
  111. package/lib/logging/context/index.js +4 -0
  112. package/lib/logging/context/index.js.map +1 -0
  113. package/lib/logging/context/providers/node/NodeContextProvider.d.ts +2 -0
  114. package/lib/logging/context/providers/node/NodeContextProvider.d.ts.map +1 -0
  115. package/lib/logging/context/providers/node/NodeContextProvider.js +31 -0
  116. package/lib/logging/context/providers/node/NodeContextProvider.js.map +1 -0
  117. package/lib/logging/context/providers/node/index.d.ts +3 -0
  118. package/lib/logging/context/providers/node/index.d.ts.map +1 -0
  119. package/lib/logging/context/providers/node/index.js +2 -0
  120. package/lib/logging/context/providers/node/index.js.map +1 -0
  121. package/lib/logging/examples/example-debug-appender.d.ts +2 -0
  122. package/lib/logging/examples/example-debug-appender.d.ts.map +1 -0
  123. package/lib/logging/examples/example-debug-appender.js +14 -0
  124. package/lib/logging/examples/example-debug-appender.js.map +1 -0
  125. package/lib/logging/examples/example-file-appender.d.ts +2 -0
  126. package/lib/logging/examples/example-file-appender.d.ts.map +1 -0
  127. package/lib/logging/examples/example-file-appender.js +16 -0
  128. package/lib/logging/examples/example-file-appender.js.map +1 -0
  129. package/lib/logging/getLogger.d.ts +3 -0
  130. package/lib/logging/getLogger.d.ts.map +1 -0
  131. package/lib/logging/getLogger.js +5 -0
  132. package/lib/logging/getLogger.js.map +1 -0
  133. package/lib/logging/index-node.d.ts +3 -0
  134. package/lib/logging/index-node.d.ts.map +1 -0
  135. package/lib/logging/index-node.js +3 -0
  136. package/lib/logging/index-node.js.map +1 -0
  137. package/lib/logging/index.d.ts +11 -0
  138. package/lib/logging/index.d.ts.map +1 -0
  139. package/lib/logging/index.js +11 -0
  140. package/lib/logging/index.js.map +1 -0
  141. package/lib/logging/util.d.ts +3 -0
  142. package/lib/logging/util.d.ts.map +1 -0
  143. package/lib/logging/util.js +6 -0
  144. package/lib/logging/util.js.map +1 -0
  145. package/package.json +31 -0
  146. package/src/guards/applyTypeGuardExtras.ts +9 -0
  147. package/src/guards/array.ts +5 -0
  148. package/src/guards/assert.ts +83 -0
  149. package/src/guards/class.ts +56 -0
  150. package/src/guards/guard-tools.ts +78 -0
  151. package/src/guards/index.ts +7 -0
  152. package/src/guards/primitive.ts +77 -0
  153. package/src/guards/types.ts +15 -0
  154. package/src/helpers/Deferred.ts +149 -0
  155. package/src/helpers/index.ts +1 -0
  156. package/src/index.ts +3 -0
  157. package/src/logging/Appender.ts +5 -0
  158. package/src/logging/Formatter.ts +8 -0
  159. package/src/logging/InternalLogger.ts +6 -0
  160. package/src/logging/Level.ts +19 -0
  161. package/src/logging/LogRecord.ts +17 -0
  162. package/src/logging/Logger.ts +222 -0
  163. package/src/logging/LoggingManager.ts +306 -0
  164. package/src/logging/appenders/ConsoleAppender.ts +110 -0
  165. package/src/logging/appenders/DebugAppender.ts +254 -0
  166. package/src/logging/appenders/FileAppender.ts +281 -0
  167. package/src/logging/appenders/aws-firehose/AWSFirehoseAppender.ts +176 -0
  168. package/src/logging/appenders/aws-firehose/AWSFirehoseCredentialManager.ts +132 -0
  169. package/src/logging/appenders/index.ts +3 -0
  170. package/src/logging/context/LogContext.ts +74 -0
  171. package/src/logging/context/LogContextContainer.ts +28 -0
  172. package/src/logging/context/LogContextProvider.ts +43 -0
  173. package/src/logging/context/index.ts +3 -0
  174. package/src/logging/context/providers/node/NodeContextProvider.ts +45 -0
  175. package/src/logging/context/providers/node/index.ts +3 -0
  176. package/src/logging/examples/example-debug-appender.ts +19 -0
  177. package/src/logging/examples/example-file-appender.ts +19 -0
  178. package/src/logging/getLogger.ts +9 -0
  179. package/src/logging/index-node.ts +2 -0
  180. package/src/logging/index.ts +11 -0
  181. package/src/logging/util.ts +6 -0
  182. package/tsconfig.json +9 -0
  183. package/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,3 @@
1
+ import type { TypeGuard, TypeGuardExtras } from "./types";
2
+ export declare function applyTypeGuardExtras<T>(fn: TypeGuard<T>): TypeGuardExtras<T>;
3
+ //# sourceMappingURL=applyTypeGuardExtras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyTypeGuardExtras.d.ts","sourceRoot":"","sources":["../../src/guards/applyTypeGuardExtras.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAGzD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,EAAE,EAAC,SAAS,CAAC,CAAC,CAAC,GAAE,eAAe,CAAC,CAAC,CAAC,CAK1E"}
@@ -0,0 +1,5 @@
1
+ export function applyTypeGuardExtras(fn) {
2
+ fn.lift = (o) => () => fn(o);
3
+ return fn;
4
+ }
5
+ //# sourceMappingURL=applyTypeGuardExtras.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyTypeGuardExtras.js","sourceRoot":"","sources":["../../src/guards/applyTypeGuardExtras.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAAI,EAAe;IAEnD,EACD,CAAC,IAAI,GAAG,CAAC,CAAK,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC/B,OAAO,EAAwB,CAAA;AACjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function isArray(o: unknown): o is Array<typeof o extends Array<infer T> ? T : any>;
2
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.d.ts","sourceRoot":"","sources":["../../src/guards/array.ts"],"names":[],"mappings":"AAAA,wBAAgB,OAAO,CACrB,CAAC,EAAE,OAAO,GACT,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAEvD"}
@@ -0,0 +1,4 @@
1
+ export function isArray(o) {
2
+ return Array.isArray(o);
3
+ }
4
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/guards/array.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,OAAO,CACrB,CAAU;IAEV,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC"}
@@ -0,0 +1,19 @@
1
+ export interface AssertOptions {
2
+ logErrorsToConsole: boolean;
3
+ }
4
+ export declare const DefaultAssertOptions: AssertOptions;
5
+ export declare function getAssertOptions(): {
6
+ logErrorsToConsole: boolean;
7
+ };
8
+ export declare function setGlobalAssertOptions(options: AssertOptions): void;
9
+ export declare class AssertError extends Error {
10
+ readonly cause?: Error;
11
+ constructor(message: string, cause?: Error);
12
+ }
13
+ export type AssertLift = <T>(test: (value: T) => boolean, message: string | ((value: T) => string)) => (nextValue: T) => void | never;
14
+ export interface Assert {
15
+ (test: (() => boolean) | boolean, msg?: null | ((err?: Error) => Error | string) | Error | string | undefined, overrideOptions?: Partial<AssertOptions>): void | never;
16
+ lift: AssertLift;
17
+ }
18
+ export declare const assert: Assert;
19
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../src/guards/assert.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,OAAO,CAAA;CAC5B;AAED,eAAO,MAAM,oBAAoB,EAAC,aAEjC,CAAA;AAID,wBAAgB,gBAAgB;wBATV,OAAO;EAW5B;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,QAE5D;AAED,qBAAa,WAAY,SAAQ,KAAK;aAIU,KAAK,CAAC,EAAE,KAAK;gBAA/C,OAAO,EAAE,MAAM,EAAmB,KAAK,CAAC,EAAE,KAAK;CAG5D;AAaD,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAC,CAAC,KAAK,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,KAC/F,CAAC,SAAS,EAAE,CAAC,KAAK,IAAI,GAAG,KAAK,CAAA;AAEhC,MAAM,WAAW,MAAM;IACrB,CACE,IAAI,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,OAAO,EAC/B,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,KAAK,KAAK,GAAG,MAAM,CAAC,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,EAC3E,eAAe,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GACvC,IAAI,GAAG,KAAK,CAAA;IAEf,IAAI,EAAE,UAAU,CAAA;CACjB;AAGD,eAAO,MAAM,MAAM,EAAE,MA0BnB,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { isFunction, isString } from "./primitive.js";
2
+ export const DefaultAssertOptions = {
3
+ logErrorsToConsole: false
4
+ };
5
+ let assertOptions = { ...DefaultAssertOptions };
6
+ export function getAssertOptions() {
7
+ return { ...assertOptions };
8
+ }
9
+ export function setGlobalAssertOptions(options) {
10
+ assertOptions = { ...assertOptions, ...options };
11
+ }
12
+ export class AssertError extends Error {
13
+ cause;
14
+ constructor(message, cause) {
15
+ super(message);
16
+ this.cause = cause;
17
+ }
18
+ }
19
+ const assertLift = (test, messageProvider) => {
20
+ return (nextValue) => {
21
+ const ok = test(nextValue);
22
+ if (!ok) {
23
+ const message = isFunction(messageProvider) ? messageProvider(nextValue) : messageProvider ?? "no message";
24
+ throw new AssertError(message);
25
+ }
26
+ };
27
+ };
28
+ export const assert = Object.assign((test, msg, overrideOptions = {}) => {
29
+ const options = { ...assertOptions, ...overrideOptions };
30
+ let result = false;
31
+ let error = undefined;
32
+ try {
33
+ result = isFunction(test) ? test() : test;
34
+ }
35
+ catch (err) {
36
+ error = err;
37
+ if (options.logErrorsToConsole) {
38
+ console.error(`Assert failed: "${test}"`, err);
39
+ }
40
+ }
41
+ if (!result || !!error) {
42
+ const errOut = !msg ? (error?.message ?? "unknown") :
43
+ isFunction(msg) ? msg(error) :
44
+ msg;
45
+ throw isString(errOut) ? new AssertError(errOut, error) : errOut;
46
+ }
47
+ }, {
48
+ lift: assertLift
49
+ });
50
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../../src/guards/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAMrD,MAAM,CAAC,MAAM,oBAAoB,GAAiB;IAChD,kBAAkB,EAAE,KAAK;CAC1B,CAAA;AAED,IAAI,aAAa,GAAiB,EAAC,GAAG,oBAAoB,EAAC,CAAA;AAE3D,MAAM,UAAU,gBAAgB;IAC9B,OAAO,EAAC,GAAG,aAAa,EAAC,CAAA;AAC3B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAsB;IAC3D,aAAa,GAAG,EAAC,GAAG,aAAa,EAAE,GAAG,OAAO,EAAC,CAAA;AAChD,CAAC;AAED,MAAM,OAAO,WAAY,SAAQ,KAAK;IAIU;IAA9C,YAAY,OAAe,EAAmB,KAAa;QACzD,KAAK,CAAC,OAAO,CAAC,CAAA;QAD8B,UAAK,GAAL,KAAK,CAAQ;IAE3D,CAAC;CACF;AAGD,MAAM,UAAU,GAAc,CAAI,IAA0B,EAAE,eAAgD,EAAE,EAAE;IAChH,OAAO,CAAC,SAAY,EAAE,EAAE;QACtB,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAA;QAC1B,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,OAAO,GAAG,UAAU,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,IAAI,YAAY,CAAA;YAC1G,MAAM,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;QAChC,CAAC;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAgBD,MAAM,CAAC,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,CAC1C,IAA+B,EAC/B,GAA2E,EAC3E,kBAA0C,EAAE,EAC9B,EAAE;IAChB,MAAM,OAAO,GAAG,EAAC,GAAG,aAAa,EAAE,GAAG,eAAe,EAAC,CAAA;IACtD,IAAI,MAAM,GAAY,KAAK,CAAA;IAC3B,IAAI,KAAK,GAAU,SAAS,CAAA;IAE5B,IAAI,CAAC;QACH,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,GAAG,GAAG,CAAA;QACX,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAC/B,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,GAAG,EAAE,GAAG,CAAC,CAAA;QAChD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC;YACnD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5B,GAAG,CAAA;QACP,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAClE,CAAC;AACH,CAAC,EAAE;IACD,IAAI,EAAE,UAAU;CACjB,CAAC,CAAA"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Is ES6+ class
3
+ *
4
+ * @see https://stackoverflow.com/questions/29093396/how-do-you-check-the-difference-between-an-ecmascript-6-class-and-function/49510834
5
+ *
6
+ * @param {any} value
7
+ * @returns {boolean}
8
+ */
9
+ import type { ClassConstructor, TypeGuard } from "./types";
10
+ export declare function isNativeClass<T = any>(value: any): value is ClassConstructor<T>;
11
+ /**
12
+ * Is Conventional Class
13
+ * Looks for function with capital first letter MyClass
14
+ * First letter is the 9th character
15
+ * If changed, isClass must also be updated
16
+ * @param {any} value
17
+ * @returns {boolean}
18
+ */
19
+ export declare function isConventionalClass<T = any>(value: any): value is ClassConstructor<T>;
20
+ export declare function isClass<T = any>(value: any, includeConventional?: boolean): value is ClassConstructor<T>;
21
+ export declare function createInstanceOfGuard<T, Ctor extends ClassConstructor<T>>(ctor: Ctor): ((o: any) => o is T);
22
+ export declare function instanceOf<T extends {}, Ctor extends ClassConstructor<T>>(ctor: Ctor): (o: any) => o is T;
23
+ export declare function createGenericGuard<T>(tester: (val: any) => val is T): TypeGuard<T>;
24
+ export declare function createGenericGuard<T>(type: {
25
+ new (): T;
26
+ }, tester: (val: any) => val is T): TypeGuard<T>;
27
+ //# sourceMappingURL=class.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.d.ts","sourceRoot":"","sources":["../../src/guards/class.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAE1D,wBAAgB,aAAa,CAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAC,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAE/E;AAOD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAE,CAAC,GAAG,GAAG,EAAE,KAAK,EAAC,GAAG,GAAG,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAIrF;AAGD,wBAAgB,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,mBAAmB,GAAE,OAAc,GAAG,KAAK,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAE9G;AAMD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,IAAI,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAE3G;AAED,wBAAgB,UAAU,CAAC,CAAC,SAAS,EAAE,EAAE,IAAI,SAAS,gBAAgB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,OAJQ,GAAG,KAAK,CAAC,KAAK,CAM1G;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAE,SAAS,CAAC,CAAC,CAAC,CAAA;AACjF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,IAAI,EAAC;IAAC,QAAM,CAAC,CAAA;CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,EAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAE,SAAS,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ export function isNativeClass(value) {
2
+ return typeof value === 'function' && value.toString().indexOf('class') === 0;
3
+ }
4
+ // Character positions
5
+ const INDEX_OF_FUNCTION_NAME = 9; // "function X", X is at index 9
6
+ const FIRST_UPPERCASE_INDEX_IN_ASCII = 65; // A is at index 65 in ASCII
7
+ const LAST_UPPERCASE_INDEX_IN_ASCII = 90; // Z is at index 90 in ASCII
8
+ /**
9
+ * Is Conventional Class
10
+ * Looks for function with capital first letter MyClass
11
+ * First letter is the 9th character
12
+ * If changed, isClass must also be updated
13
+ * @param {any} value
14
+ * @returns {boolean}
15
+ */
16
+ export function isConventionalClass(value) {
17
+ if (typeof value !== 'function')
18
+ return false;
19
+ const c = value.toString().charCodeAt(INDEX_OF_FUNCTION_NAME);
20
+ return c >= FIRST_UPPERCASE_INDEX_IN_ASCII && c <= LAST_UPPERCASE_INDEX_IN_ASCII;
21
+ }
22
+ export function isClass(value, includeConventional = true) {
23
+ return isNativeClass(value) || (includeConventional && isConventionalClass(value));
24
+ }
25
+ export function createInstanceOfGuard(ctor) {
26
+ return (o) => o instanceof ctor;
27
+ }
28
+ export function instanceOf(ctor) {
29
+ return createInstanceOfGuard(ctor);
30
+ }
31
+ export function createGenericGuard(typeOrTest, tester) {
32
+ return tester;
33
+ }
34
+ //# sourceMappingURL=class.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"class.js","sourceRoot":"","sources":["../../src/guards/class.ts"],"names":[],"mappings":"AAUA,MAAM,UAAU,aAAa,CAAW,KAAS;IAC/C,OAAO,OAAO,KAAK,KAAK,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC/E,CAAC;AAED,sBAAsB;AACtB,MAAM,sBAAsB,GAAG,CAAC,CAAA,CAAE,gCAAgC;AAClE,MAAM,8BAA8B,GAAG,EAAE,CAAA,CAAE,4BAA4B;AACvE,MAAM,6BAA6B,GAAG,EAAE,CAAA,CAAG,4BAA4B;AAEvE;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAW,KAAS;IACrD,IAAK,OAAO,KAAK,KAAK,UAAU;QAAI,OAAO,KAAK,CAAA;IAChD,MAAM,CAAC,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,UAAU,CAAC,sBAAsB,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAI,8BAA8B,IAAI,CAAC,IAAI,6BAA6B,CAAA;AAClF,CAAC;AAGD,MAAM,UAAU,OAAO,CAAU,KAAU,EAAE,sBAA+B,IAAI;IAC9E,OAAO,aAAa,CAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAI,KAAK,CAAC,CAAC,CAAA;AAC1F,CAAC;AAMD,MAAM,UAAU,qBAAqB,CAAsC,IAAU;IACnF,OAAO,CAAC,CAAM,EAAU,EAAE,CAAC,CAAC,YAAY,IAAI,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,UAAU,CAAiD,IAAU;IACnF,OAAO,qBAAqB,CAAS,IAAI,CAAC,CAAA;AAC5C,CAAC;AAID,MAAM,UAAU,kBAAkB,CAAI,UAAiD,EAAE,MAA8B;IACrH,OAAO,MAAsB,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { ErrorHandler } from "./types.js";
2
+ export type GuardErrorHandler = (err: Error) => void;
3
+ export declare function setGuardErrorHandler(errorHandler?: GuardErrorHandler | null): void;
4
+ export type ReturnTypeOrAny<Fn extends () => any> = (ReturnType<Fn> extends never ? unknown : ReturnType<Fn>);
5
+ /**
6
+ * Get a value in a guarded fashion
7
+ * ensuring no exception
8
+ *
9
+ * @param fn
10
+ * @param defaultValue
11
+ * @returns {any}
12
+ * @param errorHandler
13
+ */
14
+ export declare function getValue<Fn extends () => any, T extends ReturnType<Fn>>(fn: Fn, defaultValue?: T, errorHandler?: ErrorHandler): T extends Promise<infer T2> ? Promise<T2> : T;
15
+ export type GuardFn = <Fn extends () => any, T extends ReturnType<Fn>>(fn: Fn, localErrorHandler?: GuardErrorHandler | null) => (void | Promise<void>);
16
+ export type GuardTool = GuardFn & {
17
+ lift: <T>(fn: () => T, localErrorHandler?: GuardErrorHandler | null) => ((fn: () => T, localErrorHandler?: GuardErrorHandler | null) => (void | Promise<void>));
18
+ };
19
+ export declare const guard: GuardTool;
20
+ //# sourceMappingURL=guard-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-tools.d.ts","sourceRoot":"","sources":["../../src/guards/guard-tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAE9C,MAAM,MAAM,iBAAiB,GAAG,CAAC,GAAG,EAAC,KAAK,KAAK,IAAI,CAAA;AAInD,wBAAgB,oBAAoB,CAAC,YAAY,GAAC,iBAAiB,GAAG,IAAW,QAEhF;AAED,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,KAAK,GAAG,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;AAG7G;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,EAAE,SAAS,MAAM,GAAG,EAAE,CAAC,SAAS,UAAU,CAAC,EAAE,CAAC,EACtE,EAAE,EAAC,EAAE,EACL,YAAY,GAAE,CAAa,EAC3B,YAAY,GAAE,YAAiC,GAC9C,CAAC,SAAS,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAsB9C;AAGD,MAAM,MAAM,OAAO,GAAG,CAAC,EAAE,SAAS,MAAM,GAAG,EAAE,CAAC,SAAS,UAAU,CAAC,EAAE,CAAC,EAAG,EAAE,EAAC,EAAE,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;AACtJ,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG;IACjC,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,KAAK,CAAC,CAAC,EAAE,EAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;CAC7J,CAAA;AAkBD,eAAO,MAAM,KAAK,EAAE,SAIlB,CAAA"}
@@ -0,0 +1,50 @@
1
+ import { isNil, isPromise } from "./primitive.js";
2
+ let globalErrorHandler;
3
+ export function setGuardErrorHandler(errorHandler = null) {
4
+ globalErrorHandler = errorHandler;
5
+ }
6
+ /**
7
+ * Get a value in a guarded fashion
8
+ * ensuring no exception
9
+ *
10
+ * @param fn
11
+ * @param defaultValue
12
+ * @returns {any}
13
+ * @param errorHandler
14
+ */
15
+ export function getValue(fn, defaultValue = undefined, errorHandler = globalErrorHandler) {
16
+ let result = null;
17
+ try {
18
+ result = fn();
19
+ if (isPromise(result))
20
+ return result
21
+ .catch(err => {
22
+ if (errorHandler)
23
+ errorHandler(err);
24
+ return defaultValue;
25
+ })
26
+ .then(value => isNil(value) ? defaultValue : value);
27
+ }
28
+ catch (err) {
29
+ if (errorHandler)
30
+ errorHandler(err);
31
+ }
32
+ return isNil(result) ?
33
+ defaultValue : result;
34
+ }
35
+ /**
36
+ * Execute a function guarded from exception
37
+ *
38
+ * @param fn
39
+ * @param localErrorHandler
40
+ * @returns {(fn:()=>any)=>(fn:()=>any)=>any}
41
+ */
42
+ const guardFn = (fn, localErrorHandler = null) => {
43
+ const value = getValue(fn, undefined, localErrorHandler);
44
+ if (isPromise(value))
45
+ return value.then(() => undefined);
46
+ };
47
+ export const guard = Object.assign(guardFn, {
48
+ lift: (fn, localErrorHandler) => (fn, localErrorHandler) => guardFn(fn, localErrorHandler)
49
+ });
50
+ //# sourceMappingURL=guard-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard-tools.js","sourceRoot":"","sources":["../../src/guards/guard-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAKjD,IAAI,kBAA2C,CAAA;AAE/C,MAAM,UAAU,oBAAoB,CAAC,eAAwC,IAAI;IAChF,kBAAkB,GAAG,YAAY,CAAA;AAClC,CAAC;AAKD;;;;;;;;GAQG;AACH,MAAM,UAAU,QAAQ,CACvB,EAAK,EACL,eAAkB,SAAS,EAC3B,eAA6B,kBAAkB;IAG/C,IAAI,MAAM,GAAG,IAAI,CAAA;IAEjB,IAAI,CAAC;QACJ,MAAM,GAAG,EAAE,EAAE,CAAA;QACb,IAAI,SAAS,CAAC,MAAM,CAAC;YACpB,OAAO,MAAM;iBACX,KAAK,CAAC,GAAG,CAAC,EAAE;gBACZ,IAAI,YAAY;oBACf,YAAY,CAAC,GAAG,CAAC,CAAA;gBAElB,OAAO,YAAY,CAAA;YACpB,CAAC,CAAC;iBACD,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAQ,CAAA;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAI,YAAY;YACf,YAAY,CAAC,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACpB,YAAoB,CAAC,CAAC,CAAC,MAAM,CAAA;AAChC,CAAC;AAUD;;;;;;GAMG;AACH,MAAM,OAAO,GAAW,CAAkD,EAAK,EAAE,oBAAmD,IAAI,EAAuB,EAAE;IAChK,MAAM,KAAK,GAAG,QAAQ,CAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAA;IAC9D,IAAI,SAAS,CAAC,KAAK,CAAC;QACnB,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAiB,CAAC,CAAA;AAE5C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,KAAK,GAAc,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE;IACtD,IAAI,EAAE,CAAkD,EAAK,EAAE,iBAA4C,EAAE,EAAE,CAC9G,CAAC,EAAK,EAAE,iBAA4C,EAA0B,EAAE,CAC/E,OAAO,CAAO,EAAE,EAAC,iBAAiB,CAAC;CACrC,CAAC,CAAA"}
@@ -0,0 +1,8 @@
1
+ export * from "./class.js";
2
+ export * from "./array.js";
3
+ export * from "./types.js";
4
+ export * from "./primitive.js";
5
+ export * from "./types.js";
6
+ export * from "./assert.js";
7
+ export * from "./guard-tools.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,8 @@
1
+ export * from "./class.js";
2
+ export * from "./array.js";
3
+ export * from "./types.js";
4
+ export * from "./primitive.js";
5
+ export * from "./types.js";
6
+ export * from "./assert.js";
7
+ export * from "./guard-tools.js";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guards/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA;AAC9B,cAAc,YAAY,CAAA;AAC1B,cAAc,aAAa,CAAA;AAC3B,cAAc,kBAAkB,CAAA"}
@@ -0,0 +1,26 @@
1
+ export type UndefinedOrNull = undefined | null;
2
+ export declare function isNil(o: any): o is UndefinedOrNull;
3
+ /**
4
+ * O is a valid object
5
+ *
6
+ * @param o
7
+ */
8
+ export declare function isDefined<T>(o: any): o is Exclude<T, UndefinedOrNull>;
9
+ export declare function isDefined(o: any): o is Exclude<any, UndefinedOrNull>;
10
+ export declare function isObject(o: any): o is Object;
11
+ export declare function isPromise(o: any): o is Promise<any>;
12
+ export declare function isObjectType<T>(o: any, type: {
13
+ new (): T;
14
+ }): o is T;
15
+ export declare function isString(o: any): o is string;
16
+ export declare function isNumber(o: any): o is number;
17
+ export declare const isFunction: import("./types.js").TypeGuardExtras<Function>;
18
+ export declare function isSymbol(o: any): o is Symbol;
19
+ export declare function isBoolean(o: any): o is boolean;
20
+ export declare function isDate(o: any): o is Date;
21
+ export type Primitive = boolean | string | number;
22
+ export type PrimitiveProducer<P extends Primitive = Primitive> = (...args: any[]) => P;
23
+ export declare const PrimitiveProducers: PrimitiveProducer<Primitive>[];
24
+ export declare function isPrimitiveProducer<P extends Primitive = Primitive>(o: any): o is PrimitiveProducer<P>;
25
+ export declare function isPrimitive(o: any): o is Primitive;
26
+ //# sourceMappingURL=primitive.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.d.ts","sourceRoot":"","sources":["../../src/guards/primitive.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,eAAe,GAAG,SAAS,GAAC,IAAI,CAAA;AAI5C,wBAAgB,KAAK,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,eAAe,CAEhD;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,eAAe,CAAC,CAAA;AACpE,wBAAgB,SAAS,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,OAAO,CAAC,GAAG,EAAC,eAAe,CAAC,CAAA;AAKlE,wBAAgB,QAAQ,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,MAAM,CAE1C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAEjD;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAC,GAAG,EAAC,IAAI,EAAC;IAAC,QAAM,CAAC,CAAA;CAAC,GAAE,CAAC,IAAI,CAAC,CAE3D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,MAAM,CAE1C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,MAAM,CAE1C;AAED,eAAO,MAAM,UAAU,gDAErB,CAAA;AAEF,wBAAgB,QAAQ,CAAC,CAAC,EAAC,GAAG,GAAE,CAAC,IAAI,MAAM,CAE1C;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAE9C;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,IAAI,IAAI,CAExC;AAED,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEjD,MAAM,MAAM,iBAAiB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;AAEtF,eAAO,MAAM,kBAAkB,gCAAoD,CAAA;AAEnF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAAE,CAAC,EAAC,GAAG,GAAG,CAAC,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAErG;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAC,GAAG,GAAG,CAAC,IAAI,SAAS,CAEjD"}
@@ -0,0 +1,47 @@
1
+ import _isNil from 'lodash/isNil.js';
2
+ import _isObject from 'lodash/isObject.js';
3
+ import _isString from 'lodash/isString.js';
4
+ import _isNumber from 'lodash/isNumber.js';
5
+ import _isFunction from 'lodash/isFunction.js';
6
+ import { applyTypeGuardExtras } from "./applyTypeGuardExtras.js";
7
+ export function isNil(o) {
8
+ return _isNil(o);
9
+ }
10
+ export function isDefined(o) {
11
+ return !isNil(o);
12
+ }
13
+ export function isObject(o) {
14
+ return !isNil(o) && _isObject(o);
15
+ }
16
+ export function isPromise(o) {
17
+ return !isNil(o) && isObject(o) && (o instanceof Promise || isFunction(o.then));
18
+ }
19
+ export function isObjectType(o, type) {
20
+ return !isNil(o) && (o instanceof type || o.$$clazz === type.name);
21
+ }
22
+ export function isString(o) {
23
+ return !isNil(o) && _isString(o);
24
+ }
25
+ export function isNumber(o) {
26
+ return !isNil(o) && _isNumber(o) && !isNaN(o);
27
+ }
28
+ export const isFunction = applyTypeGuardExtras(function isFunction(o) {
29
+ return !isNil(o) && _isFunction(o);
30
+ });
31
+ export function isSymbol(o) {
32
+ return !isNil(o) && typeof o === 'symbol';
33
+ }
34
+ export function isBoolean(o) {
35
+ return typeof o === "boolean";
36
+ }
37
+ export function isDate(o) {
38
+ return o instanceof Date;
39
+ }
40
+ export const PrimitiveProducers = Array(String, Number, Boolean);
41
+ export function isPrimitiveProducer(o) {
42
+ return PrimitiveProducers.includes(o);
43
+ }
44
+ export function isPrimitive(o) {
45
+ return isBoolean(o) || isString(o) || isNumber(o);
46
+ }
47
+ //# sourceMappingURL=primitive.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive.js","sourceRoot":"","sources":["../../src/guards/primitive.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,iBAAiB,CAAA;AACpC,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAC1C,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAC1C,OAAO,SAAS,MAAM,oBAAoB,CAAA;AAC1C,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAOjE,MAAM,UAAU,KAAK,CAAC,CAAK;IAC1B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AASD,MAAM,UAAU,SAAS,CAAC,CAAK;IAC9B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAK;IAC9B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;AAChF,CAAC;AAGD,MAAM,UAAU,YAAY,CAAI,CAAK,EAAC,IAAc;IACnD,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,IAAI,CAAC,CAAA;AACnE,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAA;AACjC,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,oBAAoB,CAAW,SAAS,UAAU,CAAC,CAAK;IACjF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAA;AACnC,CAAC,CAAC,CAAA;AAEF,MAAM,UAAU,QAAQ,CAAC,CAAK;IAC7B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAA;AAC1C,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,CAAM;IAC/B,OAAO,OAAO,CAAC,KAAK,SAAS,CAAA;AAC9B,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,CAAM;IAC5B,OAAO,CAAC,YAAY,IAAI,CAAA;AACzB,CAAC;AAMD,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAoB,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;AAEnF,MAAM,UAAU,mBAAmB,CAAkC,CAAK;IACzE,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,CAAK;IAChC,OAAO,SAAS,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,10 @@
1
+ export type TypeGuard<T> = (o: any) => o is T;
2
+ export type ClassConstructor<T> = new (...args: any[]) => T;
3
+ export type LiftTypeGuard<T> = () => boolean;
4
+ export type TypeGuardExtras<T> = TypeGuard<T> & {
5
+ lift: (o: any) => LiftTypeGuard<T>;
6
+ };
7
+ export type Optional<T> = T | null | undefined;
8
+ export type ErrorHandler<E extends Error = Error> = (err: E) => void;
9
+ export {};
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guards/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;AAE5C,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAC,GAAG,EAAE,KAAK,CAAC,CAAA;AAE1D,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,MAAM,OAAO,CAAA;AAE5C,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,GAAG;IAC9C,IAAI,EAAE,CAAC,CAAC,EAAC,GAAG,KAAK,aAAa,CAAC,CAAC,CAAC,CAAA;CAClC,CAAA;AAED,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAA;AAE9C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAA;AAEpE,OAAO,EAAE,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/guards/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,31 @@
1
+ export declare enum DeferredStatus {
2
+ PENDING = "PENDING",
3
+ FULFILLED = "FULFILLED",
4
+ REJECTED = "REJECTED",
5
+ CANCELED = "CANCELED"
6
+ }
7
+ /**
8
+ * A deferred promise that can be resolved or rejected
9
+ * externally, ideal for functions like a promise timeout
10
+ */
11
+ export declare class Deferred<T> {
12
+ static delay(millis: number): Promise<void>;
13
+ static resolve<T>(value?: T): Deferred<T>;
14
+ private readonly state;
15
+ readonly promise: Promise<T>;
16
+ constructor(promise?: Promise<T> | undefined);
17
+ isFulfilled(): boolean;
18
+ isRejected(): boolean;
19
+ isSettled(): boolean;
20
+ isCancelled(): boolean;
21
+ status(): DeferredStatus;
22
+ cancel(): void;
23
+ resolve(result?: T): void;
24
+ reject(err: any): void;
25
+ get error(): Error;
26
+ get value(): T;
27
+ getError(): Error | undefined;
28
+ getResult(): T;
29
+ }
30
+ export default Deferred;
31
+ //# sourceMappingURL=Deferred.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deferred.d.ts","sourceRoot":"","sources":["../../src/helpers/Deferred.ts"],"names":[],"mappings":"AAEA,oBAAY,cAAc;IACxB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAgBD;;;GAGG;AACH,qBAAa,QAAQ,CAAC,CAAC;WAGR,KAAK,CAAC,MAAM,EAAC,MAAM;IAMhC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,EAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;IAMxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IAEvC,QAAQ,CAAC,OAAO,EAAC,OAAO,CAAC,CAAC,CAAC,CAAA;gBAGf,OAAO,CAAC,EAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS;IA8B3C,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,OAAO;IAIrB,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,OAAO;IAItB,MAAM,IAAI,cAAc;IAIxB,MAAM,IAAI,IAAI;IAKd,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC,GAAG,IAAI;IAWxB,MAAM,CAAC,GAAG,EAAC,GAAG,GAAG,IAAI;IAcrB,IAAI,KAAK,UAER;IAED,IAAI,KAAK,MAER;IAED,QAAQ,IAAI,KAAK,GAAG,SAAS;IAM7B,SAAS,IAAG,CAAC;CAKd;AAED,eAAe,QAAQ,CAAA"}
@@ -0,0 +1,111 @@
1
+ import { isDefined, isPromise } from "../guards/index.js";
2
+ export var DeferredStatus;
3
+ (function (DeferredStatus) {
4
+ DeferredStatus["PENDING"] = "PENDING";
5
+ DeferredStatus["FULFILLED"] = "FULFILLED";
6
+ DeferredStatus["REJECTED"] = "REJECTED";
7
+ DeferredStatus["CANCELED"] = "CANCELED";
8
+ })(DeferredStatus || (DeferredStatus = {}));
9
+ /**
10
+ * A deferred promise that can be resolved or rejected
11
+ * externally, ideal for functions like a promise timeout
12
+ */
13
+ export class Deferred {
14
+ static async delay(millis) {
15
+ const deferred = new Deferred();
16
+ setTimeout(() => deferred.resolve(), millis);
17
+ await deferred.promise;
18
+ }
19
+ static resolve(value) {
20
+ const deferred = new Deferred();
21
+ deferred.resolve(value);
22
+ return deferred;
23
+ }
24
+ state;
25
+ promise;
26
+ constructor(promise) {
27
+ this.state = {
28
+ resolve: null,
29
+ reject: null,
30
+ isSettled: false,
31
+ isCancelled: false,
32
+ isRejected: false,
33
+ isFulfilled: false,
34
+ result: null,
35
+ err: null
36
+ };
37
+ this.promise = new Promise((resolve, reject) => {
38
+ Object.assign(this.state, {
39
+ resolve,
40
+ reject
41
+ });
42
+ });
43
+ if (isDefined(promise)) {
44
+ if (promise instanceof Promise || isPromise(promise)) {
45
+ promise
46
+ .then(this.state.resolve)
47
+ .catch(this.state.reject);
48
+ }
49
+ else {
50
+ throw Error(`An existing promise was provided to Deferred constructor, but it wasn't a valid promise`);
51
+ }
52
+ }
53
+ }
54
+ isFulfilled() {
55
+ return this.state.isFulfilled;
56
+ }
57
+ isRejected() {
58
+ return this.state.isRejected;
59
+ }
60
+ isSettled() {
61
+ return this.state.isSettled;
62
+ }
63
+ isCancelled() {
64
+ return this.state.isCancelled;
65
+ }
66
+ status() {
67
+ return this.isCancelled() ? DeferredStatus.CANCELED : this.isSettled() ? this.isFulfilled() ? DeferredStatus.FULFILLED : DeferredStatus.REJECTED : DeferredStatus.PENDING;
68
+ }
69
+ cancel() {
70
+ this.state.isSettled = true;
71
+ this.state.isCancelled = true;
72
+ }
73
+ resolve(result) {
74
+ if (!this.state.isSettled && !this.state.isCancelled) {
75
+ Object.assign(this.state, {
76
+ result: result,
77
+ isSettled: true,
78
+ isFulfilled: true
79
+ });
80
+ this.state.resolve(result);
81
+ }
82
+ }
83
+ reject(err) {
84
+ if (!this.state.isSettled && !this.state.isCancelled) {
85
+ Object.assign(this.state, {
86
+ isSettled: true,
87
+ isRejected: true,
88
+ err
89
+ });
90
+ this.state.reject(err);
91
+ }
92
+ }
93
+ get error() {
94
+ return this.getError();
95
+ }
96
+ get value() {
97
+ return this.getResult();
98
+ }
99
+ getError() {
100
+ if (!this.isSettled())
101
+ throw Error("Deferred promise is not settled, result is not available");
102
+ return this.state.err;
103
+ }
104
+ getResult() {
105
+ if (!this.isSettled())
106
+ throw Error("Deferred promise is not settled, result is not available");
107
+ return this.state.result;
108
+ }
109
+ }
110
+ export default Deferred;
111
+ //# sourceMappingURL=Deferred.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Deferred.js","sourceRoot":"","sources":["../../src/helpers/Deferred.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./Deferred.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
@@ -0,0 +1,2 @@
1
+ export * from "./Deferred.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./guards/index.js";
2
+ export * from "./helpers/index.js";
3
+ export * from "./logging/index.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
package/lib/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from "./guards/index.js";
2
+ export * from "./helpers/index.js";
3
+ export * from "./logging/index.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1,5 @@
1
+ import { LogRecord } from "./LogRecord.js";
2
+ export interface Appender<Record extends LogRecord = any> {
3
+ append(record: Record): void;
4
+ }
5
+ //# sourceMappingURL=Appender.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Appender.d.ts","sourceRoot":"","sources":["../../src/logging/Appender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,MAAM,WAAW,QAAQ,CAAC,MAAM,SAAS,SAAS,GAAG,GAAG;IACtD,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Appender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Appender.js","sourceRoot":"","sources":["../../src/logging/Appender.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { LogRecord } from "./LogRecord";
2
+ export type Formatter<Output, Context extends {} = {}, Data = any, Record extends LogRecord<Data> = LogRecord<Data>> = (record: Record, options?: Context) => Output;
3
+ //# sourceMappingURL=Formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Formatter.d.ts","sourceRoot":"","sources":["../../src/logging/Formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,MAAM,MAAM,SAAS,CACnB,MAAM,EACN,OAAO,SAAS,EAAE,GAAG,EAAE,EACvB,IAAI,GAAG,GAAG,EACV,MAAM,SAAS,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,IAAI,CAAC,IAC9C,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,MAAM,CAAA"}