@o/helpers 0.0.0-bootstrap.0 → 0.16.14

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 (102) hide show
  1. package/README.md +7 -0
  2. package/dist/assert.d.ts +5 -0
  3. package/dist/assert.d.ts.map +1 -0
  4. package/dist/assert.js +26 -0
  5. package/dist/assert.js.map +1 -0
  6. package/dist/async/abortable.d.ts +9 -0
  7. package/dist/async/abortable.d.ts.map +1 -0
  8. package/dist/async/abortable.js +45 -0
  9. package/dist/async/abortable.js.map +1 -0
  10. package/dist/async/sleep.d.ts +2 -0
  11. package/dist/async/sleep.d.ts.map +1 -0
  12. package/dist/async/sleep.js +8 -0
  13. package/dist/async/sleep.js.map +1 -0
  14. package/dist/async/useAsyncEffect.d.ts +11 -0
  15. package/dist/async/useAsyncEffect.d.ts.map +1 -0
  16. package/dist/async/useAsyncEffect.js +99 -0
  17. package/dist/async/useAsyncEffect.js.map +1 -0
  18. package/dist/browser/isActiveElementFormField.d.ts +2 -0
  19. package/dist/browser/isActiveElementFormField.d.ts.map +1 -0
  20. package/dist/browser/isActiveElementFormField.js +9 -0
  21. package/dist/browser/isActiveElementFormField.js.map +1 -0
  22. package/dist/browser/openPopup.d.ts +2 -0
  23. package/dist/browser/openPopup.d.ts.map +1 -0
  24. package/dist/browser/openPopup.js +21 -0
  25. package/dist/browser/openPopup.js.map +1 -0
  26. package/dist/constants.d.ts +9 -0
  27. package/dist/constants.d.ts.map +1 -0
  28. package/dist/constants.js +22 -0
  29. package/dist/constants.js.map +1 -0
  30. package/dist/emitter.d.ts +72 -0
  31. package/dist/emitter.d.ts.map +1 -0
  32. package/dist/emitter.js +273 -0
  33. package/dist/emitter.js.map +1 -0
  34. package/dist/error/errors.d.ts +23 -0
  35. package/dist/error/errors.d.ts.map +1 -0
  36. package/dist/error/errors.js +38 -0
  37. package/dist/error/errors.js.map +1 -0
  38. package/dist/global/globalValue.d.ts +23 -0
  39. package/dist/global/globalValue.d.ts.map +1 -0
  40. package/dist/global/globalValue.js +33 -0
  41. package/dist/global/globalValue.js.map +1 -0
  42. package/dist/index.d.ts +3 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +3 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/index.native.d.ts +3 -0
  47. package/dist/index.native.d.ts.map +1 -0
  48. package/dist/index.native.js +3 -0
  49. package/dist/index.native.js.map +1 -0
  50. package/dist/object/isEqualIdentity.d.ts +2 -0
  51. package/dist/object/isEqualIdentity.d.ts.map +1 -0
  52. package/dist/object/isEqualIdentity.js +2 -0
  53. package/dist/object/isEqualIdentity.js.map +1 -0
  54. package/dist/object/isEqualNever.d.ts +2 -0
  55. package/dist/object/isEqualNever.d.ts.map +1 -0
  56. package/dist/object/isEqualNever.js +2 -0
  57. package/dist/object/isEqualNever.js.map +1 -0
  58. package/dist/platform.d.ts +23 -0
  59. package/dist/platform.d.ts.map +1 -0
  60. package/dist/platform.js +60 -0
  61. package/dist/platform.js.map +1 -0
  62. package/dist/platform.native.d.ts +25 -0
  63. package/dist/platform.native.d.ts.map +1 -0
  64. package/dist/platform.native.js +52 -0
  65. package/dist/platform.native.js.map +1 -0
  66. package/dist/react/createGlobalContext.d.ts +3 -0
  67. package/dist/react/createGlobalContext.d.ts.map +1 -0
  68. package/dist/react/createGlobalContext.js +8 -0
  69. package/dist/react/createGlobalContext.js.map +1 -0
  70. package/dist/react/getCurrentComponentStack.d.ts +2 -0
  71. package/dist/react/getCurrentComponentStack.d.ts.map +1 -0
  72. package/dist/react/getCurrentComponentStack.js +46 -0
  73. package/dist/react/getCurrentComponentStack.js.map +1 -0
  74. package/dist/shared.d.ts +17 -0
  75. package/dist/shared.d.ts.map +1 -0
  76. package/dist/shared.js +16 -0
  77. package/dist/shared.js.map +1 -0
  78. package/dist/storage/createStorage.d.ts +58 -0
  79. package/dist/storage/createStorage.d.ts.map +1 -0
  80. package/dist/storage/createStorage.js +110 -0
  81. package/dist/storage/createStorage.js.map +1 -0
  82. package/dist/storage/driver.d.ts +5 -0
  83. package/dist/storage/driver.d.ts.map +1 -0
  84. package/dist/storage/driver.js +21 -0
  85. package/dist/storage/driver.js.map +1 -0
  86. package/dist/storage/types.d.ts +7 -0
  87. package/dist/storage/types.d.ts.map +1 -0
  88. package/dist/storage/types.js +2 -0
  89. package/dist/storage/types.js.map +1 -0
  90. package/dist/string/randomId.d.ts +2 -0
  91. package/dist/string/randomId.d.ts.map +1 -0
  92. package/dist/string/randomId.js +2 -0
  93. package/dist/string/randomId.js.map +1 -0
  94. package/dist/string/slugify.d.ts +2 -0
  95. package/dist/string/slugify.d.ts.map +1 -0
  96. package/dist/string/slugify.js +7 -0
  97. package/dist/string/slugify.js.map +1 -0
  98. package/dist/time/time.d.ts +28 -0
  99. package/dist/time/time.d.ts.map +1 -0
  100. package/dist/time/time.js +21 -0
  101. package/dist/time/time.js.map +1 -0
  102. package/package.json +39 -2
package/README.md ADDED
@@ -0,0 +1,7 @@
1
+ # @o/helpers
2
+
3
+ Shared browser, React, storage, string, and timing helpers for Orez consumers.
4
+
5
+ ```ts
6
+ import { createEmitter, createStorageValue, time } from '@o/helpers'
7
+ ```
@@ -0,0 +1,5 @@
1
+ export declare function assertExists<T>(value: T | undefined | null, msg?: string): T;
2
+ export declare function assert<T>(value: T, msg?: string): Exclude<T, null | undefined | false>;
3
+ export declare function assertError(val: unknown): Error;
4
+ export declare function assertString(val: unknown, name?: string): string;
5
+ //# sourceMappingURL=assert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,SAAS,GAAG,IAAI,EAAE,GAAG,SAAK,GAAG,CAAC,CAKxE;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,SAAK,GAAG,OAAO,CAAC,CAAC,EAAE,IAAI,GAAG,SAAS,GAAG,KAAK,CAAC,CAKlF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,KAAK,CAK/C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,SAAc,GAAG,MAAM,CAKrE"}
package/dist/assert.js ADDED
@@ -0,0 +1,26 @@
1
+ import { AbortError } from './error/errors.js';
2
+ export function assertExists(value, msg = '') {
3
+ if (value === undefined || value === null) {
4
+ throw new AbortError(`Invalid nullish value (${value}): ${msg}`);
5
+ }
6
+ return value;
7
+ }
8
+ export function assert(value, msg = '') {
9
+ if (!value) {
10
+ throw new AbortError(`Invalid falsy value (${value}): ${msg}`);
11
+ }
12
+ return value;
13
+ }
14
+ export function assertError(val) {
15
+ if (!(val instanceof Error)) {
16
+ throw val;
17
+ }
18
+ return val;
19
+ }
20
+ export function assertString(val, name = '(unnamed)') {
21
+ if (typeof val !== 'string') {
22
+ throw new AbortError(`No string ${name}`);
23
+ }
24
+ return val;
25
+ }
26
+ //# sourceMappingURL=assert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assert.js","sourceRoot":"","sources":["../src/assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAE9C,MAAM,UAAU,YAAY,CAAI,KAA2B,EAAE,GAAG,GAAG,EAAE;IACnE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,IAAI,UAAU,CAAC,0BAA0B,KAAK,MAAM,GAAG,EAAE,CAAC,CAAA;IAClE,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,MAAM,CAAI,KAAQ,EAAE,GAAG,GAAG,EAAE;IAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,UAAU,CAAC,wBAAwB,KAAK,MAAM,GAAG,EAAE,CAAC,CAAA;IAChE,CAAC;IACD,OAAO,KAA6C,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,GAAG,CAAA;IACX,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,GAAY,EAAE,IAAI,GAAG,WAAW;IAC3D,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC,CAAA;IAC3C,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -0,0 +1,9 @@
1
+ type AbortableOptions = {
2
+ message?: string;
3
+ };
4
+ export declare function abortable<T>(cb: () => T, options?: AbortableOptions): T | undefined;
5
+ export declare function abortable<T>(cb: () => Promise<T>, options?: AbortableOptions): Promise<T | undefined>;
6
+ export declare function didAbort(err: unknown, options?: AbortableOptions): boolean;
7
+ export declare function handleAbortError(error: any, debug?: boolean): void;
8
+ export {};
9
+ //# sourceMappingURL=abortable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortable.d.ts","sourceRoot":"","sources":["../../src/async/abortable.ts"],"names":[],"mappings":"AAEA,KAAK,gBAAgB,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE5C,wBAAgB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,CAAC,GAAG,SAAS,CAAA;AACpF,wBAAgB,SAAS,CAAC,CAAC,EACzB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC,CAAA;AA0BzB,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAQ1E;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,IAAI,CAelE"}
@@ -0,0 +1,45 @@
1
+ import { AbortError, EnsureError } from '../error/errors.js';
2
+ export function abortable(cb, options) {
3
+ try {
4
+ const value = cb();
5
+ if (value instanceof Promise) {
6
+ return value.catch((err) => {
7
+ if (didAbort(err, options)) {
8
+ return undefined;
9
+ }
10
+ throw err;
11
+ });
12
+ }
13
+ return value;
14
+ }
15
+ catch (err) {
16
+ if (didAbort(err, options)) {
17
+ return undefined;
18
+ }
19
+ throw err;
20
+ }
21
+ }
22
+ export function didAbort(err, options) {
23
+ if (err instanceof AbortError || err instanceof EnsureError) {
24
+ if (options?.message) {
25
+ console.warn(`Aborted: ${options.message}`);
26
+ }
27
+ return true;
28
+ }
29
+ return false;
30
+ }
31
+ export function handleAbortError(error, debug) {
32
+ if (error instanceof AbortError || error instanceof EnsureError) {
33
+ if (debug || process.env.DEBUG) {
34
+ console.info(`🐛 useAsyncEffect aborted: ${error.message}`);
35
+ }
36
+ return;
37
+ }
38
+ // js handles aborting a promise as an error. ignore them since they're
39
+ // a normal part of the expected async workflow
40
+ if (typeof error === 'object' && error.name === 'AbortError') {
41
+ return;
42
+ }
43
+ throw error;
44
+ }
45
+ //# sourceMappingURL=abortable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"abortable.js","sourceRoot":"","sources":["../../src/async/abortable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAS5D,MAAM,UAAU,SAAS,CACvB,EAAwB,EACxB,OAA0B;IAE1B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,EAAE,CAAA;QAElB,IAAI,KAAK,YAAY,OAAO,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBAClC,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;oBAC3B,OAAO,SAAS,CAAA;gBAClB,CAAC;gBACD,MAAM,GAAG,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,GAAY,EAAE,OAA0B;IAC/D,IAAI,GAAG,YAAY,UAAU,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;QAC5D,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,YAAY,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7C,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAU,EAAE,KAAe;IAC1D,IAAI,KAAK,YAAY,UAAU,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;QAChE,IAAI,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAA;QAC7D,CAAC;QACD,OAAM;IACR,CAAC;IAED,uEAAuE;IACvE,+CAA+C;IAC/C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7D,OAAM;IACR,CAAC;IAED,MAAM,KAAK,CAAA;AACb,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const sleep: (ms: number, signal?: AbortSignal) => Promise<void>;
2
+ //# sourceMappingURL=sleep.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/async/sleep.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,KAAK,GAAU,IAAI,MAAM,EAAE,SAAS,WAAW,KAAG,OAAO,CAAC,IAAI,CAK1E,CAAA"}
@@ -0,0 +1,8 @@
1
+ import { AbortError } from '../error/errors.js';
2
+ export const sleep = async (ms, signal) => {
3
+ await new Promise((res) => setTimeout(res, ms));
4
+ if (signal?.aborted) {
5
+ throw new AbortError();
6
+ }
7
+ };
8
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleep.js","sourceRoot":"","sources":["../../src/async/sleep.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,CAAC,MAAM,KAAK,GAAG,KAAK,EAAE,EAAU,EAAE,MAAoB,EAAiB,EAAE;IAC7E,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAA;IAC/C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,UAAU,EAAE,CAAA;IACxB,CAAC;AACH,CAAC,CAAA"}
@@ -0,0 +1,11 @@
1
+ type Cleanup = () => void;
2
+ type AsyncEffectCallback = (signal: AbortSignal, ...deps: any[]) => Promise<Cleanup | void> | void;
3
+ type AsyncEffectOptions = {
4
+ circuitBreakAfter?: number;
5
+ circuitBreakPeriod?: number;
6
+ debug?: boolean;
7
+ };
8
+ export declare function useAsyncEffect(cb: AsyncEffectCallback, deps?: any[], options?: AsyncEffectOptions): void;
9
+ export declare function useAsyncLayoutEffect(cb: AsyncEffectCallback, deps?: any[], options?: AsyncEffectOptions): void;
10
+ export {};
11
+ //# sourceMappingURL=useAsyncEffect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAsyncEffect.d.ts","sourceRoot":"","sources":["../../src/async/useAsyncEffect.ts"],"names":[],"mappings":"AAQA,KAAK,OAAO,GAAG,MAAM,IAAI,CAAA;AAEzB,KAAK,mBAAmB,GAAG,CACzB,MAAM,EAAE,WAAW,EACnB,GAAG,IAAI,EAAE,GAAG,EAAE,KACX,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAA;AAEnC,KAAK,kBAAkB,GAAG;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,wBAAgB,cAAc,CAC5B,EAAE,EAAE,mBAAmB,EACvB,IAAI,GAAE,GAAG,EAAO,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,IAAI,CAEN;AAED,wBAAgB,oBAAoB,CAClC,EAAE,EAAE,mBAAmB,EACvB,IAAI,GAAE,GAAG,EAAO,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,IAAI,CAEN"}
@@ -0,0 +1,99 @@
1
+ // adopted from https://github.com/franciscop/use-async/blob/master/src/index.js
2
+ import { useEffect, useId, useLayoutEffect } from 'react';
3
+ import { EMPTY_OBJECT } from '../constants.js';
4
+ import { getCurrentComponentStack } from '../react/getCurrentComponentStack.js';
5
+ import { handleAbortError } from './abortable.js';
6
+ export function useAsyncEffect(cb, deps = [], options) {
7
+ useAsyncEffectImpl(false, cb, deps, options);
8
+ }
9
+ export function useAsyncLayoutEffect(cb, deps = [], options) {
10
+ useAsyncEffectImpl(true, cb, deps, options);
11
+ }
12
+ function useAsyncEffectImpl(isLayoutEffect, cb, deps = [], options = EMPTY_OBJECT) {
13
+ const effectHook = isLayoutEffect ? useLayoutEffect : useEffect;
14
+ // eslint-disable-next-line react-hooks/rules-of-hooks
15
+ const effectId = process.env.NODE_ENV === 'development' ? useId() : '';
16
+ effectHook(() => {
17
+ // Generate a unique ID for this effect instance for loop detection
18
+ checkEffectLoop(effectId, cb, deps, options.circuitBreakAfter, options.circuitBreakPeriod);
19
+ const controller = new AbortController();
20
+ const signal = controller.signal;
21
+ // wrap in try in case its not async (for simple use cases)
22
+ try {
23
+ const value = cb(signal, ...deps);
24
+ Promise.resolve(value)
25
+ .then(async (res) => {
26
+ if (res && typeof res === 'function') {
27
+ if (signal.aborted)
28
+ return res();
29
+ signal.addEventListener('abort', res);
30
+ }
31
+ })
32
+ .catch(handleAbortError);
33
+ }
34
+ catch (error) {
35
+ handleAbortError(error, options.debug);
36
+ }
37
+ return () => {
38
+ if (signal.aborted)
39
+ return;
40
+ controller.abort();
41
+ };
42
+ }, deps);
43
+ }
44
+ // loop detection in dev mode
45
+ let effectRunCounts;
46
+ let checkEffectLoop;
47
+ function formatDeps(deps) {
48
+ try {
49
+ return JSON.stringify(deps, (_, v) => {
50
+ if (typeof v === 'function')
51
+ return `[Function: ${v.name || 'anonymous'}]`;
52
+ if (typeof v === 'symbol')
53
+ return v.toString();
54
+ if (v instanceof Error)
55
+ return `[Error: ${v.message}]`;
56
+ return v;
57
+ }, 2);
58
+ }
59
+ catch {
60
+ return `[${deps.length} deps - not serializable]`;
61
+ }
62
+ }
63
+ if (process.env.NODE_ENV === 'development') {
64
+ effectRunCounts = new Map();
65
+ checkEffectLoop = (effectId, cb, deps, circuitBreakAfter = 20, circuitBreakPeriod = 1000) => {
66
+ const now = Date.now();
67
+ const runs = effectRunCounts.get(effectId) || [];
68
+ runs.push(now);
69
+ // keep only runs from the specified period
70
+ const recentRuns = runs.filter((time) => now - time < circuitBreakPeriod);
71
+ effectRunCounts.set(effectId, recentRuns);
72
+ const runCount = recentRuns.length;
73
+ if (runCount > circuitBreakAfter) {
74
+ const message = `🚨 useAsyncEffect infinite loop detected! Effect ran ${runCount} times in <${circuitBreakPeriod}ms`;
75
+ if (process.env.NODE_ENV === 'development') {
76
+ console.error(message);
77
+ console.error('Effect function:', cb.toString().slice(0, 500));
78
+ console.error('Dependencies:', formatDeps(deps));
79
+ console.error('Stack:', getCurrentComponentStack());
80
+ // eslint-disable-next-line no-debugger
81
+ debugger;
82
+ }
83
+ else {
84
+ alert(message);
85
+ throw new Error(message);
86
+ }
87
+ }
88
+ else if (runCount > circuitBreakAfter / 2) {
89
+ console.warn(`⚠️ useAsyncEffect potential loop: Effect ran ${runCount} times in <${circuitBreakPeriod}ms`);
90
+ console.warn('Effect function:', cb.toString().slice(0, 500));
91
+ console.warn('Dependencies:', formatDeps(deps));
92
+ console.warn('Stack:', getCurrentComponentStack());
93
+ }
94
+ };
95
+ }
96
+ else {
97
+ checkEffectLoop = (_id, _cb, _deps, _after, _period) => { };
98
+ }
99
+ //# sourceMappingURL=useAsyncEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAsyncEffect.js","sourceRoot":"","sources":["../../src/async/useAsyncEffect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function isActiveElementFormField(): boolean;
2
+ //# sourceMappingURL=isActiveElementFormField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isActiveElementFormField.d.ts","sourceRoot":"","sources":["../../src/browser/isActiveElementFormField.ts"],"names":[],"mappings":"AAAA,wBAAgB,wBAAwB,IAAI,OAAO,CASlD"}
@@ -0,0 +1,9 @@
1
+ export function isActiveElementFormField() {
2
+ return (typeof document !== 'undefined' &&
3
+ document.activeElement !== null &&
4
+ (document.activeElement.tagName === 'INPUT' ||
5
+ document.activeElement.tagName === 'TEXTAREA' ||
6
+ document.activeElement.tagName === 'SELECT' ||
7
+ document.activeElement.tagName === 'FORM'));
8
+ }
9
+ //# sourceMappingURL=isActiveElementFormField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"isActiveElementFormField.js","sourceRoot":"","sources":["../../src/browser/isActiveElementFormField.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,wBAAwB;IACtC,OAAO,CACL,OAAO,QAAQ,KAAK,WAAW;QAC/B,QAAQ,CAAC,aAAa,KAAK,IAAI;QAC/B,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,KAAK,OAAO;YACzC,QAAQ,CAAC,aAAa,CAAC,OAAO,KAAK,UAAU;YAC7C,QAAQ,CAAC,aAAa,CAAC,OAAO,KAAK,QAAQ;YAC3C,QAAQ,CAAC,aAAa,CAAC,OAAO,KAAK,MAAM,CAAC,CAC7C,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function openCenteredPopup(url: string, title: string, width: number, height: number): Window | null;
2
+ //# sourceMappingURL=openPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openPopup.d.ts","sourceRoot":"","sources":["../../src/browser/openPopup.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAsBf"}
@@ -0,0 +1,21 @@
1
+ // note safari enhanced privacy will break this as it reports screen height as smaller
2
+ export function openCenteredPopup(url, title, width, height) {
3
+ // availWidth/availHeight accounts for taskbars, docks, and other UI elements
4
+ const screenWidth = screen.availWidth || screen.width;
5
+ const screenHeight = screen.availHeight || screen.height;
6
+ const shouldGuess = screenHeight < height;
7
+ // if we are guessing, at least make it a bit more likely to be centered
8
+ // and not just touching the top which looks broken
9
+ const left = Math.max(0, (screenWidth - width) / 2) + (shouldGuess ? 100 : 0);
10
+ const top = Math.max(150, shouldGuess ? 150 : Math.max(0, (screenHeight - height) / 2));
11
+ const windowFeatures = `
12
+ width=${width},
13
+ height=${height},
14
+ left=${left},
15
+ top=${top},
16
+ scrollbars=yes,
17
+ resizable=yes
18
+ `;
19
+ return window.open(url, title, windowFeatures);
20
+ }
21
+ //# sourceMappingURL=openPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openPopup.js","sourceRoot":"","sources":["../../src/browser/openPopup.ts"],"names":[],"mappings":"AAAA,sFAAsF;AAEtF,MAAM,UAAU,iBAAiB,CAC/B,GAAW,EACX,KAAa,EACb,KAAa,EACb,MAAc;IAEd,6EAA6E;IAC7E,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,KAAK,CAAA;IACrD,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,MAAM,CAAA;IAExD,MAAM,WAAW,GAAG,YAAY,GAAG,MAAM,CAAA;IAEzC,wEAAwE;IACxE,mDAAmD;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IAEvF,MAAM,cAAc,GAAG;YACb,KAAK;aACJ,MAAM;WACR,IAAI;UACL,GAAG;;;GAGV,CAAA;IAED,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;AAChD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare const IS_TAURI: boolean;
2
+ export declare const IS_NATIVE: boolean;
3
+ export declare const IS_MAC_DESKTOP: boolean;
4
+ export declare const IS_SAFARI: boolean;
5
+ export * from './platform.js';
6
+ export declare const EMPTY_ARRAY: never;
7
+ export declare const EMPTY_OBJECT: never;
8
+ export declare const DEBUG_LEVEL: number;
9
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ,EAAE,OAAgE,CAAA;AAEvF,eAAO,MAAM,SAAS,EAAE,OAA8B,CAAA;AAEtD,eAAO,MAAM,cAAc,EAAE,OACsD,CAAA;AAEnF,eAAO,MAAM,SAAS,EAAE,OAKwB,CAAA;AAEhD,cAAc,eAAe,CAAA;AAE7B,eAAO,MAAM,WAAW,EAAS,KAAK,CAAA;AACtC,eAAO,MAAM,YAAY,EAAS,KAAK,CAAA;AAQvC,eAAO,MAAM,WAAW,EAAE,MAEsD,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { IS_WEB } from './platform.js';
2
+ export const IS_TAURI = typeof window !== 'undefined' && '__TAURI__' in window;
3
+ export const IS_NATIVE = !IS_WEB && !IS_TAURI;
4
+ export const IS_MAC_DESKTOP = typeof navigator !== 'undefined' && /Macintosh|MacIntel/.test(navigator.platform);
5
+ export const IS_SAFARI = IS_TAURI ||
6
+ (typeof navigator !== 'undefined' &&
7
+ /Version\/[\d.]+.*Safari/.test(navigator.userAgent) &&
8
+ typeof navigator.vendor === 'string' &&
9
+ navigator.vendor.includes('Apple Computer'));
10
+ export * from './platform.js';
11
+ export const EMPTY_ARRAY = [];
12
+ export const EMPTY_OBJECT = {};
13
+ const getDebugLevelFromUrl = () => {
14
+ if (typeof window === 'undefined')
15
+ return null;
16
+ const match = window.location?.search?.match(/debug=(\d+)/);
17
+ return match?.[1] ? parseInt(match[1], 10) : null;
18
+ };
19
+ export const DEBUG_LEVEL = process.env.DEBUG_LEVEL
20
+ ? +process.env.DEBUG_LEVEL
21
+ : (getDebugLevelFromUrl() ?? (process.env.NODE_ENV === 'development' ? 1 : 0));
22
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAEtC,MAAM,CAAC,MAAM,QAAQ,GAAY,OAAO,MAAM,KAAK,WAAW,IAAI,WAAW,IAAI,MAAM,CAAA;AAEvF,MAAM,CAAC,MAAM,SAAS,GAAY,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAA;AAEtD,MAAM,CAAC,MAAM,cAAc,GACzB,OAAO,SAAS,KAAK,WAAW,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;AAEnF,MAAM,CAAC,MAAM,SAAS,GACpB,QAAQ;IACR,CAAC,OAAO,SAAS,KAAK,WAAW;QAC/B,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACnD,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ;QACpC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAA;AAEhD,cAAc,eAAe,CAAA;AAE7B,MAAM,CAAC,MAAM,WAAW,GAAG,EAAW,CAAA;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,EAAW,CAAA;AAEvC,MAAM,oBAAoB,GAAG,GAAkB,EAAE;IAC/C,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,IAAI,CAAA;IAC9C,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;IAC3D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;AACnD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAW,OAAO,CAAC,GAAG,CAAC,WAAW;IACxD,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW;IAC1B,CAAC,CAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA"}
@@ -0,0 +1,72 @@
1
+ import type { JSX, PropsWithChildren } from 'react';
2
+ type EmitterOptions<T> = CreateEmitterOpts<T> & {
3
+ name: string;
4
+ };
5
+ type CreateEmitterOpts<T> = {
6
+ silent?: boolean;
7
+ comparator?: (a: T, b: T) => boolean;
8
+ };
9
+ export declare class Emitter<const T> {
10
+ private disposables;
11
+ value: T;
12
+ options?: EmitterOptions<T>;
13
+ constructor(value: T, options?: EmitterOptions<T>);
14
+ listen: (disposable: (cb: T) => void) => (() => void);
15
+ emit: (next: T) => void;
16
+ nextValue: () => Promise<T>;
17
+ }
18
+ export declare function createGlobalEmitter<T>(name: string, defaultValue: T, options?: CreateEmitterOpts<T>): Emitter<T>;
19
+ export declare function createEmitter<T>(name: string, defaultValue: T, options?: CreateEmitterOpts<T>): Emitter<T>;
20
+ export type EmitterType<E extends Emitter<any>> = E extends Emitter<infer Val> ? Val : never;
21
+ export declare const useEmitter: <E extends Emitter<any>>(emitter: E, cb: (cb: EmitterType<E>) => void, args?: any[]) => void;
22
+ export declare const useEmitterValue: <E extends Emitter<any>>(emitter: E, options?: {
23
+ disable?: boolean;
24
+ }) => EmitterType<E>;
25
+ /**
26
+ * By default selectors run every render, as well as when emitters update. This is a change
27
+ * from the previous behavior where they only ran when emitters changed value.
28
+ *
29
+ * The reason for this is because emitters capture the variables in scope of the component
30
+ * each render already by using "useGet" by default, which makes them easier to use - you
31
+ * don't need to pass an args[] array except for edge cases.
32
+ *
33
+ * Before explaining why we switched to the default, understand the different uses:
34
+ *
35
+ * - Default behavior - selector is updated every render, and ran every render, as well as
36
+ * when emitter value changes, so you basically are always up to date.
37
+ *
38
+ * - Set an args[] array as the fourth argument - this will stop the automatic capturing
39
+ * and instead update selector only when you change args[] yourself. This is good for when you
40
+ * want explicit control over re-selection and rendering.
41
+ *
42
+ * - With { lazy: true }, the selector only runs when the emitter value changes. If used with
43
+ * args[], you capture the context of the selector based on args[], if not, it's based on the
44
+ * current render.
45
+ *
46
+ * I made this change when we had 16 usages of useEmitterSelector and 100% of them are doing very
47
+ * cheap calculations, so this feels like the right pattern. For the rare case of a heavy selector,
48
+ * you have the option to control it.
49
+ *
50
+ */
51
+ export declare const useEmitterSelector: <E extends Emitter<any>, T extends EmitterType<E>, R>(emitter: E, selector: (value: T) => R, options?: {
52
+ disable?: boolean;
53
+ lazy?: boolean;
54
+ }, args?: any[]) => R;
55
+ export declare const useEmittersSelector: <const E extends readonly Emitter<any>[], R>(emitters: E, selector: (values: { [K in keyof E]: EmitterType<E[K]>; }) => R, options?: {
56
+ disable?: boolean;
57
+ isEqual?: (a: R, b: R) => boolean;
58
+ }) => R;
59
+ export declare const createUseEmitter: <E extends Emitter<any>>(emitter: E) => ((cb: (val: EmitterType<E>) => void, args?: any[]) => void);
60
+ export declare const createUseSelector: <E extends Emitter<any>>(emitter: E) => (<R>(selector: (value: EmitterType<E>) => R, options?: {
61
+ disable?: boolean;
62
+ lazy?: boolean;
63
+ }, args?: any[]) => R);
64
+ export declare function createContextualEmitter<T>(name: string, defaultValue: T, defaultOptions?: Omit<EmitterOptions<T>, 'name'>): readonly [
65
+ () => Emitter<T>,
66
+ (props: PropsWithChildren<{
67
+ value?: T;
68
+ silent?: boolean;
69
+ }>) => JSX.Element
70
+ ];
71
+ export {};
72
+ //# sourceMappingURL=emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emitter.d.ts","sourceRoot":"","sources":["../src/emitter.tsx"],"names":[],"mappings":"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"}