@sendbird/uikit-utils 3.12.8 → 3.12.9

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.
@@ -42,13 +42,15 @@ const createAsyncEffectCallback = asyncEffect => () => {
42
42
  const destructor = iife(asyncEffect);
43
43
  return () => {
44
44
  if (!destructor) return;
45
- if (destructor instanceof Promise) {
45
+
46
+ // Not `instanceof Promise`: it fails when `global.Promise` is replaced at startup, by an APM agent or a polyfill.
47
+ if (typeof destructor === 'function') {
48
+ iife(destructor);
49
+ } else {
46
50
  iife(async () => {
47
51
  const awaitedDestructor = await destructor;
48
- if (awaitedDestructor) awaitedDestructor();
52
+ if (typeof awaitedDestructor === 'function') awaitedDestructor();
49
53
  });
50
- } else {
51
- iife(destructor);
52
54
  }
53
55
  };
54
56
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","idPool","useUniqId","key","useState","exports","useUniqHandlerId","name","id","useForceUpdate","updater","useCallback","prev","useAsyncEffect","asyncEffect","deps","useEffect","createAsyncEffectCallback","useAsyncLayoutEffect","useLayoutEffect","useIIFE","callback","iife","destructor","Promise","awaitedDestructor","useIsMountedRef","isMounted","useRef","current","useIsFirstMount","isFirstMount","useFreshCallback","ref","args","useDebounceEffect","action","delay","timeoutRef","undefined","setTimeout","clearTimeout","usePartialState","initialState","useReducer","state","useRefTracker","target"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DependencyList } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useReducer, useRef, useState } from 'react';\n\ntype Destructor = () => void;\ntype AsyncEffectCallback = () => void | Destructor | Promise<void> | Promise<Destructor>;\n\nconst idPool: { [key: string]: number } = {};\nexport const useUniqId = (key: string) => {\n return useState(() => {\n if (!idPool[key]) idPool[key] = 1;\n return idPool[key]++;\n })[0];\n};\n\nexport const useUniqHandlerId = (name: string) => {\n const id = useUniqId(name);\n return `${name}_${id}`;\n};\n\nexport const useForceUpdate = () => {\n const [, updater] = useState(0);\n return useCallback(() => updater((prev) => prev + 1), []);\n};\n\nexport const useAsyncEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useAsyncLayoutEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useLayoutEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useIIFE = <T>(callback: () => T) => {\n return iife(callback);\n};\nconst iife = <T extends (...args: any[]) => any>(callback: T): ReturnType<T> => callback();\nconst createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {\n const destructor = iife(asyncEffect);\n return () => {\n if (!destructor) return;\n\n if (destructor instanceof Promise) {\n iife(async () => {\n const awaitedDestructor = await destructor;\n if (awaitedDestructor) awaitedDestructor();\n });\n } else {\n iife(destructor);\n }\n };\n};\n\nexport const useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport const useIsFirstMount = () => {\n const isFirstMount = useRef(true);\n\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return true;\n }\n\n return isFirstMount.current;\n};\n\nexport const useFreshCallback = <T extends Function>(callback: T): T => {\n const ref = useRef<T>(callback);\n ref.current = callback;\n return useCallback(((...args: any[]) => ref.current(...args)) as unknown as T, []);\n};\n\nexport const useDebounceEffect = (action: () => void, delay: number, deps: DependencyList = []) => {\n const timeoutRef = useRef<NodeJS.Timeout | undefined>(undefined);\n\n useEffect(() => {\n timeoutRef.current = setTimeout(async () => {\n try {\n await action();\n } finally {\n timeoutRef.current = undefined;\n }\n }, delay);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n };\n }, [delay, ...deps]);\n};\n\nexport const usePartialState = <S>(initialState: S) => {\n return useReducer((prev: S, state: Partial<S>) => ({ ...prev, ...state }), initialState);\n};\n\nexport const useRefTracker = <T>(target: T) => {\n const ref = useRef(target);\n\n useLayoutEffect(() => {\n ref.current = target;\n });\n\n return ref;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","idPool","useUniqId","key","useState","exports","useUniqHandlerId","name","id","useForceUpdate","updater","useCallback","prev","useAsyncEffect","asyncEffect","deps","useEffect","createAsyncEffectCallback","useAsyncLayoutEffect","useLayoutEffect","useIIFE","callback","iife","destructor","awaitedDestructor","useIsMountedRef","isMounted","useRef","current","useIsFirstMount","isFirstMount","useFreshCallback","ref","args","useDebounceEffect","action","delay","timeoutRef","undefined","setTimeout","clearTimeout","usePartialState","initialState","useReducer","state","useRefTracker","target"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DependencyList } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useReducer, useRef, useState } from 'react';\n\ntype Destructor = () => void;\ntype AsyncEffectCallback = () => void | Destructor | Promise<void> | Promise<Destructor>;\n\nconst idPool: { [key: string]: number } = {};\nexport const useUniqId = (key: string) => {\n return useState(() => {\n if (!idPool[key]) idPool[key] = 1;\n return idPool[key]++;\n })[0];\n};\n\nexport const useUniqHandlerId = (name: string) => {\n const id = useUniqId(name);\n return `${name}_${id}`;\n};\n\nexport const useForceUpdate = () => {\n const [, updater] = useState(0);\n return useCallback(() => updater((prev) => prev + 1), []);\n};\n\nexport const useAsyncEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useAsyncLayoutEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useLayoutEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useIIFE = <T>(callback: () => T) => {\n return iife(callback);\n};\nconst iife = <T extends (...args: any[]) => any>(callback: T): ReturnType<T> => callback();\nconst createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {\n const destructor = iife(asyncEffect);\n return () => {\n if (!destructor) return;\n\n // Not `instanceof Promise`: it fails when `global.Promise` is replaced at startup, by an APM agent or a polyfill.\n if (typeof destructor === 'function') {\n iife(destructor);\n } else {\n iife(async () => {\n const awaitedDestructor = await destructor;\n if (typeof awaitedDestructor === 'function') awaitedDestructor();\n });\n }\n };\n};\n\nexport const useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport const useIsFirstMount = () => {\n const isFirstMount = useRef(true);\n\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return true;\n }\n\n return isFirstMount.current;\n};\n\nexport const useFreshCallback = <T extends Function>(callback: T): T => {\n const ref = useRef<T>(callback);\n ref.current = callback;\n return useCallback(((...args: any[]) => ref.current(...args)) as unknown as T, []);\n};\n\nexport const useDebounceEffect = (action: () => void, delay: number, deps: DependencyList = []) => {\n const timeoutRef = useRef<NodeJS.Timeout | undefined>(undefined);\n\n useEffect(() => {\n timeoutRef.current = setTimeout(async () => {\n try {\n await action();\n } finally {\n timeoutRef.current = undefined;\n }\n }, delay);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n };\n }, [delay, ...deps]);\n};\n\nexport const usePartialState = <S>(initialState: S) => {\n return useReducer((prev: S, state: Partial<S>) => ({ ...prev, ...state }), initialState);\n};\n\nexport const useRefTracker = <T>(target: T) => {\n const ref = useRef(target);\n\n useLayoutEffect(() => {\n ref.current = target;\n });\n\n return ref;\n};\n"],"mappings":"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","ignoreList":[]}
@@ -30,13 +30,15 @@ const createAsyncEffectCallback = asyncEffect => () => {
30
30
  const destructor = iife(asyncEffect);
31
31
  return () => {
32
32
  if (!destructor) return;
33
- if (destructor instanceof Promise) {
33
+
34
+ // Not `instanceof Promise`: it fails when `global.Promise` is replaced at startup, by an APM agent or a polyfill.
35
+ if (typeof destructor === 'function') {
36
+ iife(destructor);
37
+ } else {
34
38
  iife(async () => {
35
39
  const awaitedDestructor = await destructor;
36
- if (awaitedDestructor) awaitedDestructor();
40
+ if (typeof awaitedDestructor === 'function') awaitedDestructor();
37
41
  });
38
- } else {
39
- iife(destructor);
40
42
  }
41
43
  };
42
44
  };
@@ -1 +1 @@
1
- {"version":3,"names":["useCallback","useEffect","useLayoutEffect","useReducer","useRef","useState","idPool","useUniqId","key","useUniqHandlerId","name","id","useForceUpdate","updater","prev","useAsyncEffect","asyncEffect","deps","createAsyncEffectCallback","useAsyncLayoutEffect","useIIFE","callback","iife","destructor","Promise","awaitedDestructor","useIsMountedRef","isMounted","current","useIsFirstMount","isFirstMount","useFreshCallback","ref","args","useDebounceEffect","action","delay","timeoutRef","undefined","setTimeout","clearTimeout","usePartialState","initialState","state","useRefTracker","target"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DependencyList } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useReducer, useRef, useState } from 'react';\n\ntype Destructor = () => void;\ntype AsyncEffectCallback = () => void | Destructor | Promise<void> | Promise<Destructor>;\n\nconst idPool: { [key: string]: number } = {};\nexport const useUniqId = (key: string) => {\n return useState(() => {\n if (!idPool[key]) idPool[key] = 1;\n return idPool[key]++;\n })[0];\n};\n\nexport const useUniqHandlerId = (name: string) => {\n const id = useUniqId(name);\n return `${name}_${id}`;\n};\n\nexport const useForceUpdate = () => {\n const [, updater] = useState(0);\n return useCallback(() => updater((prev) => prev + 1), []);\n};\n\nexport const useAsyncEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useAsyncLayoutEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useLayoutEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useIIFE = <T>(callback: () => T) => {\n return iife(callback);\n};\nconst iife = <T extends (...args: any[]) => any>(callback: T): ReturnType<T> => callback();\nconst createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {\n const destructor = iife(asyncEffect);\n return () => {\n if (!destructor) return;\n\n if (destructor instanceof Promise) {\n iife(async () => {\n const awaitedDestructor = await destructor;\n if (awaitedDestructor) awaitedDestructor();\n });\n } else {\n iife(destructor);\n }\n };\n};\n\nexport const useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport const useIsFirstMount = () => {\n const isFirstMount = useRef(true);\n\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return true;\n }\n\n return isFirstMount.current;\n};\n\nexport const useFreshCallback = <T extends Function>(callback: T): T => {\n const ref = useRef<T>(callback);\n ref.current = callback;\n return useCallback(((...args: any[]) => ref.current(...args)) as unknown as T, []);\n};\n\nexport const useDebounceEffect = (action: () => void, delay: number, deps: DependencyList = []) => {\n const timeoutRef = useRef<NodeJS.Timeout | undefined>(undefined);\n\n useEffect(() => {\n timeoutRef.current = setTimeout(async () => {\n try {\n await action();\n } finally {\n timeoutRef.current = undefined;\n }\n }, delay);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n };\n }, [delay, ...deps]);\n};\n\nexport const usePartialState = <S>(initialState: S) => {\n return useReducer((prev: S, state: Partial<S>) => ({ ...prev, ...state }), initialState);\n};\n\nexport const useRefTracker = <T>(target: T) => {\n const ref = useRef(target);\n\n useLayoutEffect(() => {\n ref.current = target;\n });\n\n return ref;\n};\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useCallback","useEffect","useLayoutEffect","useReducer","useRef","useState","idPool","useUniqId","key","useUniqHandlerId","name","id","useForceUpdate","updater","prev","useAsyncEffect","asyncEffect","deps","createAsyncEffectCallback","useAsyncLayoutEffect","useIIFE","callback","iife","destructor","awaitedDestructor","useIsMountedRef","isMounted","current","useIsFirstMount","isFirstMount","useFreshCallback","ref","args","useDebounceEffect","action","delay","timeoutRef","undefined","setTimeout","clearTimeout","usePartialState","initialState","state","useRefTracker","target"],"sources":["index.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { DependencyList } from 'react';\nimport { useCallback, useEffect, useLayoutEffect, useReducer, useRef, useState } from 'react';\n\ntype Destructor = () => void;\ntype AsyncEffectCallback = () => void | Destructor | Promise<void> | Promise<Destructor>;\n\nconst idPool: { [key: string]: number } = {};\nexport const useUniqId = (key: string) => {\n return useState(() => {\n if (!idPool[key]) idPool[key] = 1;\n return idPool[key]++;\n })[0];\n};\n\nexport const useUniqHandlerId = (name: string) => {\n const id = useUniqId(name);\n return `${name}_${id}`;\n};\n\nexport const useForceUpdate = () => {\n const [, updater] = useState(0);\n return useCallback(() => updater((prev) => prev + 1), []);\n};\n\nexport const useAsyncEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useAsyncLayoutEffect = (asyncEffect: AsyncEffectCallback, deps?: DependencyList) => {\n useLayoutEffect(createAsyncEffectCallback(asyncEffect), deps);\n};\nexport const useIIFE = <T>(callback: () => T) => {\n return iife(callback);\n};\nconst iife = <T extends (...args: any[]) => any>(callback: T): ReturnType<T> => callback();\nconst createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {\n const destructor = iife(asyncEffect);\n return () => {\n if (!destructor) return;\n\n // Not `instanceof Promise`: it fails when `global.Promise` is replaced at startup, by an APM agent or a polyfill.\n if (typeof destructor === 'function') {\n iife(destructor);\n } else {\n iife(async () => {\n const awaitedDestructor = await destructor;\n if (typeof awaitedDestructor === 'function') awaitedDestructor();\n });\n }\n };\n};\n\nexport const useIsMountedRef = () => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n return isMounted;\n};\n\nexport const useIsFirstMount = () => {\n const isFirstMount = useRef(true);\n\n if (isFirstMount.current) {\n isFirstMount.current = false;\n return true;\n }\n\n return isFirstMount.current;\n};\n\nexport const useFreshCallback = <T extends Function>(callback: T): T => {\n const ref = useRef<T>(callback);\n ref.current = callback;\n return useCallback(((...args: any[]) => ref.current(...args)) as unknown as T, []);\n};\n\nexport const useDebounceEffect = (action: () => void, delay: number, deps: DependencyList = []) => {\n const timeoutRef = useRef<NodeJS.Timeout | undefined>(undefined);\n\n useEffect(() => {\n timeoutRef.current = setTimeout(async () => {\n try {\n await action();\n } finally {\n timeoutRef.current = undefined;\n }\n }, delay);\n\n return () => {\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current);\n timeoutRef.current = undefined;\n }\n };\n }, [delay, ...deps]);\n};\n\nexport const usePartialState = <S>(initialState: S) => {\n return useReducer((prev: S, state: Partial<S>) => ({ ...prev, ...state }), initialState);\n};\n\nexport const useRefTracker = <T>(target: T) => {\n const ref = useRef(target);\n\n useLayoutEffect(() => {\n ref.current = target;\n });\n\n return ref;\n};\n"],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sendbird/uikit-utils",
3
- "version": "3.12.8",
3
+ "version": "3.12.9",
4
4
  "description": "A collection of utility functions and constants for building chat UI components with Sendbird UIKit.",
5
5
  "keywords": [
6
6
  "sendbird",
@@ -92,5 +92,5 @@
92
92
  ]
93
93
  ]
94
94
  },
95
- "gitHead": "7fe7ec52a4649a0393d4b5d543109f47355952fe"
95
+ "gitHead": "b0bb4e4d5d6bf7397d0237d85253060a5f861b35"
96
96
  }
@@ -38,13 +38,14 @@ const createAsyncEffectCallback = (asyncEffect: AsyncEffectCallback) => () => {
38
38
  return () => {
39
39
  if (!destructor) return;
40
40
 
41
- if (destructor instanceof Promise) {
41
+ // Not `instanceof Promise`: it fails when `global.Promise` is replaced at startup, by an APM agent or a polyfill.
42
+ if (typeof destructor === 'function') {
43
+ iife(destructor);
44
+ } else {
42
45
  iife(async () => {
43
46
  const awaitedDestructor = await destructor;
44
- if (awaitedDestructor) awaitedDestructor();
47
+ if (typeof awaitedDestructor === 'function') awaitedDestructor();
45
48
  });
46
- } else {
47
- iife(destructor);
48
49
  }
49
50
  };
50
51
  };