@pistonite/pure 0.26.6 → 0.26.8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pistonite/pure",
3
- "version": "0.26.6",
3
+ "version": "0.26.8",
4
4
  "type": "module",
5
5
  "description": "Pure TypeScript libraries for my projects",
6
6
  "homepage": "https://github.com/Pistonite/pure",
package/src/log/index.ts CHANGED
@@ -5,6 +5,8 @@ export {
5
5
  logger,
6
6
  type LoggerFactory,
7
7
  type Logger,
8
+ resettableLogger,
9
+ type ResettableLogger,
8
10
  } from "./logger.ts";
9
11
  export {
10
12
  internalLogOff,
@@ -1,18 +1,14 @@
1
- import { LoggerImpl, LogLevel } from "./logger.ts";
1
+ import { resettableLogger } from "./logger.ts";
2
2
 
3
- export const ilog: LoggerImpl = new LoggerImpl("pure", "gray", LogLevel.High);
3
+ const { logger, off, debug, info } = resettableLogger("pure", "gray");
4
+
5
+ export const ilog = logger;
4
6
 
5
7
  /** Set the internal log level of calls in this library to off */
6
- export const internalLogOff = () => {
7
- ilog.level = LogLevel.Off;
8
- };
8
+ export const internalLogOff = off;
9
9
 
10
10
  /** Set the internal log level of calls in this library to debug */
11
- export const internalLogDebug = () => {
12
- ilog.level = LogLevel.Debug;
13
- };
11
+ export const internalLogDebug = debug;
14
12
 
15
13
  /** Set the internal log level of calls in this library to info */
16
- export const internalLogInfo = () => {
17
- ilog.level = LogLevel.Info;
18
- };
14
+ export const internalLogInfo = info;
package/src/log/logger.ts CHANGED
@@ -37,19 +37,25 @@ let globalLevel: LogLevel = LogLevel.High;
37
37
  *
38
38
  * This overrides logger-level settings
39
39
  */
40
- export const globalLogOff = () => (globalLevel = 0);
40
+ export const globalLogOff = () => {
41
+ globalLevel = LogLevel.Off;
42
+ };
41
43
  /**
42
44
  * Enable +info logging for ALL loggers
43
45
  *
44
46
  * This overrides logger-level settings
45
47
  */
46
- export const globalLogInfo = () => (globalLevel = 2);
48
+ export const globalLogInfo = () => {
49
+ globalLevel = LogLevel.Info;
50
+ };
47
51
  /**
48
52
  * Enable +debug logging for ALL loggers
49
53
  *
50
54
  * This overrides logger-level settings
51
55
  */
52
- export const globalLogDebug = () => (globalLevel = 3);
56
+ export const globalLogDebug = () => {
57
+ globalLevel = LogLevel.Debug;
58
+ };
53
59
 
54
60
  /** Create a logger creator. Use the factory methods to finish making the logger */
55
61
  export const logger = (name: string, color?: string): LoggerFactory => {
@@ -61,6 +67,31 @@ export const logger = (name: string, color?: string): LoggerFactory => {
61
67
  };
62
68
  };
63
69
 
70
+ /** Create a {@link ResettableLogger} that can be easily reconfigured */
71
+ export const resettableLogger = (
72
+ name: string,
73
+ color?: string,
74
+ ): ResettableLogger => {
75
+ const logger = new LoggerImpl(name, color, LogLevel.High);
76
+ return {
77
+ logger,
78
+ debug: () => (logger.level = LogLevel.Debug),
79
+ info: () => (logger.level = LogLevel.Info),
80
+ off: () => (logger.level = LogLevel.Off),
81
+ };
82
+ };
83
+
84
+ /**
85
+ * A logger whose level can be changed later. Useful for libraries to expose,
86
+ * so users can easily debug calls in the library
87
+ */
88
+ export type ResettableLogger = {
89
+ logger: Logger;
90
+ debug(): void;
91
+ info(): void;
92
+ off(): void;
93
+ };
94
+
64
95
  export type LoggerFactory = {
65
96
  /** Standard important logger (warning and errors) */
66
97
  default(): Logger;
package/src/sync/index.ts CHANGED
@@ -14,8 +14,9 @@ export { latest, type LatestConstructor, type UpdateArgsFn } from "./latest.ts";
14
14
  export { debounce, type DebounceConstructor } from "./debounce.ts";
15
15
  export { batch, type BatchConstructor } from "./batch.ts";
16
16
  export { once, type OnceConstructor } from "./once.ts";
17
+ export { makePromise, type PromiseHandle } from "./util.ts";
17
18
 
18
- // types
19
+ // helper types
19
20
  export type { AnyFn, AwaitRet } from "./util.ts";
20
21
 
21
22
  // unstable
package/src/sync/util.ts CHANGED
@@ -1,23 +1,28 @@
1
- export const makePromise = <T>(): {
2
- promise: Promise<T>;
3
- resolve: (value: T | PromiseLike<T>) => void;
4
- reject: (reason?: unknown) => void;
5
- } => {
6
- let resolve;
7
- let reject;
1
+ /**
2
+ * Make a {@link PromiseHandle} with the promise object separate from
3
+ * its resolve and reject methods
4
+ */
5
+ export const makePromise = <T>(): PromiseHandle<T> => {
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ let resolve: any;
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ let reject: any;
8
10
  const promise = new Promise<T>((res, rej) => {
9
11
  resolve = res;
10
12
  reject = rej;
11
13
  });
12
- if (!resolve || !reject) {
13
- throw new Error(
14
- "Promise callbacks not set. This is a bug in the JS engine!",
15
- );
16
- }
17
14
  return { promise, resolve, reject };
18
15
  };
19
16
 
20
- export type PromiseHandle<T> = ReturnType<typeof makePromise<T>>;
17
+ /**
18
+ * A handle of the promise that breaks down the promise object
19
+ * and its resolve and reject functions
20
+ */
21
+ export type PromiseHandle<T> = {
22
+ promise: Promise<T>;
23
+ resolve: (value: T | PromiseLike<T>) => void;
24
+ reject: (reason?: unknown) => void;
25
+ };
21
26
 
22
27
  /** Shorthand for Awaited<ReturnType<T>> */
23
28
  // eslint-disable-next-line @typescript-eslint/no-explicit-any