@tamagui/use-async 1.128.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 (62) hide show
  1. package/LICENSE +21 -0
  2. package/dist/cjs/errors.cjs +30 -0
  3. package/dist/cjs/errors.js +25 -0
  4. package/dist/cjs/errors.js.map +6 -0
  5. package/dist/cjs/errors.native.js +124 -0
  6. package/dist/cjs/errors.native.js.map +6 -0
  7. package/dist/cjs/idle.cjs +38 -0
  8. package/dist/cjs/idle.js +34 -0
  9. package/dist/cjs/idle.js.map +6 -0
  10. package/dist/cjs/idle.native.js +45 -0
  11. package/dist/cjs/idle.native.js.map +6 -0
  12. package/dist/cjs/index.cjs +21 -0
  13. package/dist/cjs/index.js +18 -0
  14. package/dist/cjs/index.js.map +6 -0
  15. package/dist/cjs/index.native.js +26 -0
  16. package/dist/cjs/index.native.js.map +6 -0
  17. package/dist/cjs/sleep.cjs +29 -0
  18. package/dist/cjs/sleep.js +25 -0
  19. package/dist/cjs/sleep.js.map +6 -0
  20. package/dist/cjs/sleep.native.js +31 -0
  21. package/dist/cjs/sleep.native.js.map +6 -0
  22. package/dist/cjs/useAsyncEffect.cjs +61 -0
  23. package/dist/cjs/useAsyncEffect.js +56 -0
  24. package/dist/cjs/useAsyncEffect.js.map +6 -0
  25. package/dist/cjs/useAsyncEffect.native.js +65 -0
  26. package/dist/cjs/useAsyncEffect.native.js.map +6 -0
  27. package/dist/esm/errors.js +9 -0
  28. package/dist/esm/errors.js.map +6 -0
  29. package/dist/esm/errors.mjs +7 -0
  30. package/dist/esm/errors.mjs.map +1 -0
  31. package/dist/esm/errors.native.js +94 -0
  32. package/dist/esm/errors.native.js.map +1 -0
  33. package/dist/esm/idle.js +18 -0
  34. package/dist/esm/idle.js.map +6 -0
  35. package/dist/esm/idle.mjs +14 -0
  36. package/dist/esm/idle.mjs.map +1 -0
  37. package/dist/esm/idle.native.js +21 -0
  38. package/dist/esm/idle.native.js.map +1 -0
  39. package/dist/esm/index.js +5 -0
  40. package/dist/esm/index.js.map +6 -0
  41. package/dist/esm/index.mjs +5 -0
  42. package/dist/esm/index.mjs.map +1 -0
  43. package/dist/esm/index.native.js +5 -0
  44. package/dist/esm/index.native.js.map +1 -0
  45. package/dist/esm/sleep.js +9 -0
  46. package/dist/esm/sleep.js.map +6 -0
  47. package/dist/esm/sleep.mjs +6 -0
  48. package/dist/esm/sleep.mjs.map +1 -0
  49. package/dist/esm/sleep.native.js +8 -0
  50. package/dist/esm/sleep.native.js.map +1 -0
  51. package/dist/esm/useAsyncEffect.js +41 -0
  52. package/dist/esm/useAsyncEffect.js.map +6 -0
  53. package/dist/esm/useAsyncEffect.mjs +36 -0
  54. package/dist/esm/useAsyncEffect.mjs.map +1 -0
  55. package/dist/esm/useAsyncEffect.native.js +39 -0
  56. package/dist/esm/useAsyncEffect.native.js.map +1 -0
  57. package/package.json +43 -0
  58. package/src/errors.ts +6 -0
  59. package/src/idle.ts +32 -0
  60. package/src/index.ts +4 -0
  61. package/src/sleep.ts +8 -0
  62. package/src/useAsyncEffect.ts +73 -0
@@ -0,0 +1,56 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
10
+ for (let key of __getOwnPropNames(from))
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
+ return to;
13
+ };
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
+ var useAsyncEffect_exports = {};
16
+ __export(useAsyncEffect_exports, {
17
+ useAsyncEffect: () => useAsyncEffect,
18
+ useAsyncEffectOfType: () => useAsyncEffectOfType,
19
+ useAsyncLayoutEffect: () => useAsyncLayoutEffect
20
+ });
21
+ module.exports = __toCommonJS(useAsyncEffect_exports);
22
+ var import_react = require("react"), import_errors = require("./errors");
23
+ const DEBUG_LEVEL = 0;
24
+ function useAsyncEffect(cb, deps = []) {
25
+ useAsyncEffectOfType(import_react.useEffect, cb, deps);
26
+ }
27
+ function useAsyncLayoutEffect(cb, deps = []) {
28
+ useAsyncEffectOfType(import_react.useLayoutEffect, cb, deps);
29
+ }
30
+ function useAsyncEffectOfType(type, cb, deps = []) {
31
+ type(() => {
32
+ const controller = new AbortController(), signal = controller.signal;
33
+ try {
34
+ const value = cb(signal, ...deps);
35
+ Promise.resolve(value).then(async (res) => {
36
+ if (res && typeof res == "function") {
37
+ if (signal.aborted) return res();
38
+ signal.addEventListener("abort", res);
39
+ }
40
+ }).catch(handleError);
41
+ } catch (error) {
42
+ handleError(error);
43
+ }
44
+ function handleError(error) {
45
+ if (error instanceof import_errors.AbortError)
46
+ return DEBUG_LEVEL > 2 && console.info(`\u{1F41B} useAsyncEffect aborted: ${error.message}`), null;
47
+ if (typeof error == "object" && error.name === "AbortError")
48
+ return null;
49
+ throw error;
50
+ }
51
+ return () => {
52
+ signal.aborted || controller.abort();
53
+ };
54
+ }, deps);
55
+ }
56
+ //# sourceMappingURL=useAsyncEffect.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useAsyncEffect.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,mBAA2C,kBAC3C,gBAA2B;AAE3B,MAAM,cAAc;AASb,SAAS,eAAe,IAAyB,OAAc,CAAC,GAAS;AAC9E,uBAAqB,wBAAW,IAAI,IAAI;AAC1C;AAEO,SAAS,qBAAqB,IAAyB,OAAc,CAAC,GAAS;AACpF,uBAAqB,8BAAiB,IAAI,IAAI;AAChD;AAEO,SAAS,qBACd,MACA,IACA,OAAc,CAAC,GACT;AACN,OAAK,MAAM;AACT,UAAM,aAAa,IAAI,gBAAgB,GACjC,SAAS,WAAW;AAG1B,QAAI;AACF,YAAM,QAAQ,GAAG,QAAQ,GAAG,IAAI;AAEhC,cAAQ,QAAQ,KAAK,EAClB,KAAK,OAAO,QAAQ;AACnB,YAAI,OAAO,OAAO,OAAQ,YAAY;AACpC,cAAI,OAAO,QAAS,QAAO,IAAI;AAC/B,iBAAO,iBAAiB,SAAS,GAAG;AAAA,QACtC;AAAA,MACF,CAAC,EACA,MAAM,WAAW;AAAA,IACtB,SAAS,OAAO;AACd,kBAAY,KAAK;AAAA,IACnB;AAEA,aAAS,YAAY,OAAY;AAC/B,UAAI,iBAAiB;AACnB,eAAI,cAAc,KAChB,QAAQ,KAAK,qCAA8B,MAAM,OAAO,EAAE,GAErD;AAKT,UAAI,OAAO,SAAU,YAAY,MAAM,SAAS;AAC9C,eAAO;AAMT,YAAM;AAAA,IACR;AAEA,WAAO,MAAM;AACX,MAAI,OAAO,WACX,WAAW,MAAM;AAAA,IACnB;AAAA,EACF,GAAG,IAAI;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var useAsyncEffect_exports = {};
17
+ __export(useAsyncEffect_exports, {
18
+ useAsyncEffect: () => useAsyncEffect,
19
+ useAsyncEffectOfType: () => useAsyncEffectOfType,
20
+ useAsyncLayoutEffect: () => useAsyncLayoutEffect
21
+ });
22
+ module.exports = __toCommonJS(useAsyncEffect_exports);
23
+ var import_react = require("react"), import_errors = require("./errors"), DEBUG_LEVEL = 0;
24
+ function useAsyncEffect(cb) {
25
+ var deps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
26
+ useAsyncEffectOfType(import_react.useEffect, cb, deps);
27
+ }
28
+ function useAsyncLayoutEffect(cb) {
29
+ var deps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
30
+ useAsyncEffectOfType(import_react.useLayoutEffect, cb, deps);
31
+ }
32
+ function useAsyncEffectOfType(type, cb) {
33
+ var deps = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
34
+ type(function() {
35
+ var controller = new AbortController(), signal = controller.signal;
36
+ try {
37
+ var value = cb(signal, ...deps);
38
+ Promise.resolve(value).then(async function(res) {
39
+ if (res && typeof res == "function") {
40
+ if (signal.aborted) return res();
41
+ signal.addEventListener("abort", res);
42
+ }
43
+ }).catch(handleError);
44
+ } catch (error) {
45
+ handleError(error);
46
+ }
47
+ function handleError(error) {
48
+ if (error instanceof import_errors.AbortError)
49
+ return DEBUG_LEVEL > 2 && console.info(`\u{1F41B} useAsyncEffect aborted: ${error.message}`), null;
50
+ if (typeof error == "object" && error.name === "AbortError")
51
+ return null;
52
+ throw error;
53
+ }
54
+ return function() {
55
+ signal.aborted || controller.abort();
56
+ };
57
+ }, deps);
58
+ }
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ useAsyncEffect,
62
+ useAsyncEffectOfType,
63
+ useAsyncLayoutEffect
64
+ });
65
+ //# sourceMappingURL=useAsyncEffect.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useAsyncEffect.ts"],
4
+ "mappings": ";;;;;;;;;;;;;;;AAAA;;;;;;;AAEA,mBAA2C,kBAC3C,gBAA2B,qBAErBA,cAAc;AASb,SAASC,eAAeC,IAAuB;MAAEC,OAAAA,UAAAA,SAAAA,KAAAA,UAAAA,CAAAA,MAAAA,SAAAA,UAAAA,CAAAA,IAAc,CAAA;AACpEC,uBAAqBC,wBAAWH,IAAIC,IAAAA;AACtC;AAEO,SAASG,qBAAqBJ,IAAuB;MAAEC,OAAAA,UAAAA,SAAAA,KAAAA,UAAAA,CAAAA,MAAAA,SAAAA,UAAAA,CAAAA,IAAc,CAAA;AAC1EC,uBAAqBG,8BAAiBL,IAAIC,IAAAA;AAC5C;AAEO,SAASC,qBACdI,MACAN,IAAuB;MACvBC,OAAAA,UAAAA,SAAAA,KAAAA,UAAAA,CAAAA,MAAAA,SAAAA,UAAAA,CAAAA,IAAc,CAAA;AAEdK,OAAK,WAAA;AACH,QAAMC,aAAa,IAAIC,gBAAAA,GACjBC,SAASF,WAAWE;AAG1B,QAAI;AACF,UAAMC,QAAQV,GAAGS,QAAAA,GAAWR,IAAAA;AAE5BU,cAAQC,QAAQF,KAAAA,EACbG,KAAK,eAAOC,KAAAA;AACX,YAAIA,OAAO,OAAOA,OAAQ,YAAY;AACpC,cAAIL,OAAOM,QAAS,QAAOD,IAAAA;AAC3BL,iBAAOO,iBAAiB,SAASF,GAAAA;QACnC;MACF,CAAA,EACCG,MAAMC,WAAAA;IACX,SAASC,OAAO;AACdD,kBAAYC,KAAAA;IACd;AAEA,aAASD,YAAYC,OAAU;AAC7B,UAAIA,iBAAiBC;AACnB,eAAItB,cAAc,KAChBuB,QAAQC,KAAK,qCAA8BH,MAAMI,OAAO,EAAE,GAErD;AAKT,UAAI,OAAOJ,SAAU,YAAYA,MAAMK,SAAS;AAC9C,eAAO;AAMT,YAAML;IACR;AAEA,WAAO,WAAA;AACL,MAAIV,OAAOM,WACXR,WAAWkB,MAAK;IAClB;EACF,GAAGxB,IAAAA;AACL;",
5
+ "names": ["DEBUG_LEVEL", "useAsyncEffect", "cb", "deps", "useAsyncEffectOfType", "useEffect", "useAsyncLayoutEffect", "useLayoutEffect", "type", "controller", "AbortController", "signal", "value", "Promise", "resolve", "then", "res", "aborted", "addEventListener", "catch", "handleError", "error", "AbortError", "console", "info", "message", "name", "abort"]
6
+ }
@@ -0,0 +1,9 @@
1
+ class AbortError extends Error {
2
+ constructor(message = "") {
3
+ super(message), this.name = "AbortError";
4
+ }
5
+ }
6
+ export {
7
+ AbortError
8
+ };
9
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/errors.ts"],
4
+ "mappings": "AAAO,MAAM,mBAAmB,MAAM;AAAA,EACpC,YAAY,UAAU,IAAI;AACxB,UAAM,OAAO,GACb,KAAK,OAAO;AAAA,EACd;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,7 @@
1
+ class AbortError extends Error {
2
+ constructor(message = "") {
3
+ super(message), this.name = "AbortError";
4
+ }
5
+ }
6
+ export { AbortError };
7
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AbortError","Error","constructor","message","name"],"sources":["../../src/errors.ts"],"sourcesContent":[null],"mappings":"AAAO,MAAMA,UAAA,SAAmBC,KAAA,CAAM;EACpCC,YAAYC,OAAA,GAAU,IAAI;IACxB,MAAMA,OAAO,GACb,KAAKC,IAAA,GAAO;EACd;AACF","ignoreList":[]}
@@ -0,0 +1,94 @@
1
+ function _assert_this_initialized(self) {
2
+ if (self === void 0) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
3
+ return self;
4
+ }
5
+ function _call_super(_this, derived, args) {
6
+ return derived = _get_prototype_of(derived), _possible_constructor_return(_this, _is_native_reflect_construct() ? Reflect.construct(derived, args || [], _get_prototype_of(_this).constructor) : derived.apply(_this, args));
7
+ }
8
+ function _class_call_check(instance, Constructor) {
9
+ if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
10
+ }
11
+ function _construct(Parent, args, Class) {
12
+ return _is_native_reflect_construct() ? _construct = Reflect.construct : _construct = function (Parent2, args2, Class2) {
13
+ var a = [null];
14
+ a.push.apply(a, args2);
15
+ var Constructor = Function.bind.apply(Parent2, a),
16
+ instance = new Constructor();
17
+ return Class2 && _set_prototype_of(instance, Class2.prototype), instance;
18
+ }, _construct.apply(null, arguments);
19
+ }
20
+ function _get_prototype_of(o) {
21
+ return _get_prototype_of = Object.setPrototypeOf ? Object.getPrototypeOf : function (o2) {
22
+ return o2.__proto__ || Object.getPrototypeOf(o2);
23
+ }, _get_prototype_of(o);
24
+ }
25
+ function _inherits(subClass, superClass) {
26
+ if (typeof superClass != "function" && superClass !== null) throw new TypeError("Super expression must either be null or a function");
27
+ subClass.prototype = Object.create(superClass && superClass.prototype, {
28
+ constructor: {
29
+ value: subClass,
30
+ writable: !0,
31
+ configurable: !0
32
+ }
33
+ }), superClass && _set_prototype_of(subClass, superClass);
34
+ }
35
+ function _is_native_function(fn) {
36
+ return Function.toString.call(fn).indexOf("[native code]") !== -1;
37
+ }
38
+ function _possible_constructor_return(self, call) {
39
+ return call && (_type_of(call) === "object" || typeof call == "function") ? call : _assert_this_initialized(self);
40
+ }
41
+ function _set_prototype_of(o, p) {
42
+ return _set_prototype_of = Object.setPrototypeOf || function (o2, p2) {
43
+ return o2.__proto__ = p2, o2;
44
+ }, _set_prototype_of(o, p);
45
+ }
46
+ function _type_of(obj) {
47
+ "@swc/helpers - typeof";
48
+
49
+ return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
50
+ }
51
+ function _wrap_native_super(Class) {
52
+ var _cache = typeof Map == "function" ? /* @__PURE__ */new Map() : void 0;
53
+ return _wrap_native_super = function (Class2) {
54
+ if (Class2 === null || !_is_native_function(Class2)) return Class2;
55
+ if (typeof Class2 != "function") throw new TypeError("Super expression must either be null or a function");
56
+ if (typeof _cache < "u") {
57
+ if (_cache.has(Class2)) return _cache.get(Class2);
58
+ _cache.set(Class2, Wrapper);
59
+ }
60
+ function Wrapper() {
61
+ return _construct(Class2, arguments, _get_prototype_of(this).constructor);
62
+ }
63
+ return Wrapper.prototype = Object.create(Class2.prototype, {
64
+ constructor: {
65
+ value: Wrapper,
66
+ enumerable: !1,
67
+ writable: !0,
68
+ configurable: !0
69
+ }
70
+ }), _set_prototype_of(Wrapper, Class2);
71
+ }, _wrap_native_super(Class);
72
+ }
73
+ function _is_native_reflect_construct() {
74
+ try {
75
+ var result = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
76
+ } catch {}
77
+ return (_is_native_reflect_construct = function () {
78
+ return !!result;
79
+ })();
80
+ }
81
+ var AbortError = /* @__PURE__ */function (Error1) {
82
+ "use strict";
83
+
84
+ _inherits(AbortError2, Error1);
85
+ function AbortError2() {
86
+ var message = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "";
87
+ _class_call_check(this, AbortError2);
88
+ var _this;
89
+ return _this = _call_super(this, AbortError2, [message]), _this.name = "AbortError", _this;
90
+ }
91
+ return AbortError2;
92
+ }(_wrap_native_super(Error));
93
+ export { AbortError };
94
+ //# sourceMappingURL=errors.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_assert_this_initialized","self","ReferenceError"],"sources":["../../src/errors.ts"],"sourcesContent":[null],"mappings":"AAAO,SAAMA,wBAAyBA,CAAAC,IAAA;EACpC,IAAAA,IAAA,KAAY,QACV,MAAM,IAAAC,cACD,4DAAO;EACd,OAAAD,IAAA;AACF","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ import { AbortError } from "./errors";
2
+ const idleCb = typeof requestIdleCallback > "u" ? (cb) => setTimeout(cb, 1) : requestIdleCallback, idle = async (signal) => {
3
+ if (await new Promise((res) => idleCb(res)), signal?.aborted)
4
+ throw new AbortError();
5
+ }, fullyIdle = async (signal) => {
6
+ for (; ; ) {
7
+ const startTime = Date.now();
8
+ if (await idle(signal), Date.now() - startTime < 15)
9
+ break;
10
+ if (signal?.aborted)
11
+ throw new AbortError();
12
+ }
13
+ };
14
+ export {
15
+ fullyIdle,
16
+ idle
17
+ };
18
+ //# sourceMappingURL=idle.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/idle.ts"],
4
+ "mappings": "AAAA,SAAS,kBAAkB;AAE3B,MAAM,SACJ,OAAO,sBAAwB,MAC3B,CAAC,OAAiB,WAAW,IAAI,CAAC,IAClC,qBAEO,OAAO,OAAO,WAAwC;AAEjE,MADA,MAAM,IAAI,QAAQ,CAAC,QAAQ,OAAO,GAAG,CAAC,GAClC,QAAQ;AACV,UAAM,IAAI,WAAW;AAEzB,GAEa,YAAY,OAAO,WAAwC;AACtE,aAAa;AACX,UAAM,YAAY,KAAK,IAAI;AAM3B,QALA,MAAM,KAAK,MAAM,GACD,KAAK,IAAI,IACE,YAGZ;AACb;AAIF,QAAI,QAAQ;AACV,YAAM,IAAI,WAAW;AAAA,EAEzB;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
1
+ import { AbortError } from "./errors.mjs";
2
+ const idleCb = typeof requestIdleCallback > "u" ? cb => setTimeout(cb, 1) : requestIdleCallback,
3
+ idle = async signal => {
4
+ if (await new Promise(res => idleCb(res)), signal?.aborted) throw new AbortError();
5
+ },
6
+ fullyIdle = async signal => {
7
+ for (;;) {
8
+ const startTime = Date.now();
9
+ if (await idle(signal), Date.now() - startTime < 15) break;
10
+ if (signal?.aborted) throw new AbortError();
11
+ }
12
+ };
13
+ export { fullyIdle, idle };
14
+ //# sourceMappingURL=idle.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AbortError","idleCb","requestIdleCallback","cb","setTimeout","idle","signal","Promise","res","aborted","fullyIdle","startTime","Date","now"],"sources":["../../src/idle.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAE3B,MAAMC,MAAA,GACJ,OAAOC,mBAAA,GAAwB,MAC1BC,EAAA,IAAiBC,UAAA,CAAWD,EAAA,EAAI,CAAC,IAClCD,mBAAA;EAEOG,IAAA,GAAO,MAAOC,MAAA,IAAwC;IAEjE,IADA,MAAM,IAAIC,OAAA,CAASC,GAAA,IAAQP,MAAA,CAAOO,GAAG,CAAC,GAClCF,MAAA,EAAQG,OAAA,EACV,MAAM,IAAIT,UAAA,CAAW;EAEzB;EAEaU,SAAA,GAAY,MAAOJ,MAAA,IAAwC;IACtE,SAAa;MACX,MAAMK,SAAA,GAAYC,IAAA,CAAKC,GAAA,CAAI;MAM3B,IALA,MAAMR,IAAA,CAAKC,MAAM,GACDM,IAAA,CAAKC,GAAA,CAAI,IACEF,SAAA,GAGZ,IACb;MAIF,IAAIL,MAAA,EAAQG,OAAA,EACV,MAAM,IAAIT,UAAA,CAAW;IAEzB;EACF","ignoreList":[]}
@@ -0,0 +1,21 @@
1
+ import { AbortError } from "./errors.native.js";
2
+ var idleCb = typeof requestIdleCallback > "u" ? function (cb) {
3
+ return setTimeout(cb, 1);
4
+ } : requestIdleCallback,
5
+ idle = async function (signal) {
6
+ if (await new Promise(function (res) {
7
+ return idleCb(res);
8
+ }), signal?.aborted) throw new AbortError();
9
+ },
10
+ fullyIdle = async function (signal) {
11
+ for (;;) {
12
+ var startTime = Date.now();
13
+ await idle(signal);
14
+ var endTime = Date.now(),
15
+ duration = endTime - startTime;
16
+ if (duration < 15) break;
17
+ if (signal?.aborted) throw new AbortError();
18
+ }
19
+ };
20
+ export { fullyIdle, idle };
21
+ //# sourceMappingURL=idle.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AbortError","idleCb","requestIdleCallback","cb","setTimeout","idle","signal","Promise","res","aborted","fullyIdle","startTime","Date","now","endTime","duration"],"sources":["../../src/idle.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAE3B,IAAAC,MAAM,UACJC,mBAAO,MAAwB,aAC1BC,EAAiB;IAKtB,OADAC,UAAU,CAAAD,EAAA,EAAQ,CAAC;EAEjB,IAAAD,mBAAU;EAAWG,IAAA,kBAAAA,CAAAC,MAAA;IAEzB,IAEa,UAAYC,OAAO,WAAwCC,GAAA;MACtE,OAAAP,MAAa,CAAAO,GAAA;IACX,IAAAF,MAAM,EAAAG,OAAA,EAMN,MALA,IAAMT,UAAK,CAAM;EAMf;EAAAU,SAAA,kBAAAA,CAAAJ,MAAA;IAIF,SAAI;MACF,IAAAK,SAAU,GAAAC,IAAA,CAAAC,GAAW;MAEzB,MAAAR,IAAA,CAAAC,MAAA;MACF,IAAAQ,OAAA,GAAAF,IAAA,CAAAC,GAAA;QAAAE,QAAA,GAAAD,OAAA,GAAAH,SAAA","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export * from "./useAsyncEffect";
2
+ export * from "./sleep";
3
+ export * from "./idle";
4
+ export * from "./errors";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,5 @@
1
+ export * from "./useAsyncEffect.mjs";
2
+ export * from "./sleep.mjs";
3
+ export * from "./idle.mjs";
4
+ export * from "./errors.mjs";
5
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ export * from "./useAsyncEffect.native.js";
2
+ export * from "./sleep.native.js";
3
+ export * from "./idle.native.js";
4
+ export * from "./errors.native.js";
5
+ //# sourceMappingURL=index.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ import { AbortError } from "./errors";
2
+ const sleep = async (ms, signal) => {
3
+ if (await new Promise((res) => setTimeout(res, ms)), signal?.aborted)
4
+ throw new AbortError();
5
+ };
6
+ export {
7
+ sleep
8
+ };
9
+ //# sourceMappingURL=sleep.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/sleep.ts"],
4
+ "mappings": "AAAA,SAAS,kBAAkB;AAEpB,MAAM,QAAQ,OAAO,IAAY,WAAwC;AAE9E,MADA,MAAM,IAAI,QAAQ,CAAC,QAAQ,WAAW,KAAK,EAAE,CAAC,GAC1C,QAAQ;AACV,UAAM,IAAI,WAAW;AAEzB;",
5
+ "names": []
6
+ }
@@ -0,0 +1,6 @@
1
+ import { AbortError } from "./errors.mjs";
2
+ const sleep = async (ms, signal) => {
3
+ if (await new Promise(res => setTimeout(res, ms)), signal?.aborted) throw new AbortError();
4
+ };
5
+ export { sleep };
6
+ //# sourceMappingURL=sleep.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AbortError","sleep","ms","signal","Promise","res","setTimeout","aborted"],"sources":["../../src/sleep.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAEpB,MAAMC,KAAA,GAAQ,MAAAA,CAAOC,EAAA,EAAYC,MAAA,KAAwC;EAE9E,IADA,MAAM,IAAIC,OAAA,CAASC,GAAA,IAAQC,UAAA,CAAWD,GAAA,EAAKH,EAAE,CAAC,GAC1CC,MAAA,EAAQI,OAAA,EACV,MAAM,IAAIP,UAAA,CAAW;AAEzB","ignoreList":[]}
@@ -0,0 +1,8 @@
1
+ import { AbortError } from "./errors.native.js";
2
+ var sleep = async function (ms, signal) {
3
+ if (await new Promise(function (res) {
4
+ return setTimeout(res, ms);
5
+ }), signal?.aborted) throw new AbortError();
6
+ };
7
+ export { sleep };
8
+ //# sourceMappingURL=sleep.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["AbortError","sleep","ms","signal","Promise","res","setTimeout","aborted"],"sources":["../../src/sleep.ts"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAEpB,IAAAC,KAAM,kBAAAA,CAA2BC,EAAA,EAAAC,MAAwC;EAE9E,IADA,MAAM,IAAIC,OAAA,CAAQ,UAASC,GAAA;IAEzB,OAAMC,UAAI,CAAAD,GAAW,EAAAH,EAAA;EAEzB,IAAAC,MAAA,EAAAI,OAAA,E","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ import { useEffect, useLayoutEffect } from "react";
2
+ import { AbortError } from "./errors";
3
+ const DEBUG_LEVEL = 0;
4
+ function useAsyncEffect(cb, deps = []) {
5
+ useAsyncEffectOfType(useEffect, cb, deps);
6
+ }
7
+ function useAsyncLayoutEffect(cb, deps = []) {
8
+ useAsyncEffectOfType(useLayoutEffect, cb, deps);
9
+ }
10
+ function useAsyncEffectOfType(type, cb, deps = []) {
11
+ type(() => {
12
+ const controller = new AbortController(), signal = controller.signal;
13
+ try {
14
+ const value = cb(signal, ...deps);
15
+ Promise.resolve(value).then(async (res) => {
16
+ if (res && typeof res == "function") {
17
+ if (signal.aborted) return res();
18
+ signal.addEventListener("abort", res);
19
+ }
20
+ }).catch(handleError);
21
+ } catch (error) {
22
+ handleError(error);
23
+ }
24
+ function handleError(error) {
25
+ if (error instanceof AbortError)
26
+ return DEBUG_LEVEL > 2 && console.info(`\u{1F41B} useAsyncEffect aborted: ${error.message}`), null;
27
+ if (typeof error == "object" && error.name === "AbortError")
28
+ return null;
29
+ throw error;
30
+ }
31
+ return () => {
32
+ signal.aborted || controller.abort();
33
+ };
34
+ }, deps);
35
+ }
36
+ export {
37
+ useAsyncEffect,
38
+ useAsyncEffectOfType,
39
+ useAsyncLayoutEffect
40
+ };
41
+ //# sourceMappingURL=useAsyncEffect.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useAsyncEffect.ts"],
4
+ "mappings": "AAEA,SAAS,WAAW,uBAAuB;AAC3C,SAAS,kBAAkB;AAE3B,MAAM,cAAc;AASb,SAAS,eAAe,IAAyB,OAAc,CAAC,GAAS;AAC9E,uBAAqB,WAAW,IAAI,IAAI;AAC1C;AAEO,SAAS,qBAAqB,IAAyB,OAAc,CAAC,GAAS;AACpF,uBAAqB,iBAAiB,IAAI,IAAI;AAChD;AAEO,SAAS,qBACd,MACA,IACA,OAAc,CAAC,GACT;AACN,OAAK,MAAM;AACT,UAAM,aAAa,IAAI,gBAAgB,GACjC,SAAS,WAAW;AAG1B,QAAI;AACF,YAAM,QAAQ,GAAG,QAAQ,GAAG,IAAI;AAEhC,cAAQ,QAAQ,KAAK,EAClB,KAAK,OAAO,QAAQ;AACnB,YAAI,OAAO,OAAO,OAAQ,YAAY;AACpC,cAAI,OAAO,QAAS,QAAO,IAAI;AAC/B,iBAAO,iBAAiB,SAAS,GAAG;AAAA,QACtC;AAAA,MACF,CAAC,EACA,MAAM,WAAW;AAAA,IACtB,SAAS,OAAO;AACd,kBAAY,KAAK;AAAA,IACnB;AAEA,aAAS,YAAY,OAAY;AAC/B,UAAI,iBAAiB;AACnB,eAAI,cAAc,KAChB,QAAQ,KAAK,qCAA8B,MAAM,OAAO,EAAE,GAErD;AAKT,UAAI,OAAO,SAAU,YAAY,MAAM,SAAS;AAC9C,eAAO;AAMT,YAAM;AAAA,IACR;AAEA,WAAO,MAAM;AACX,MAAI,OAAO,WACX,WAAW,MAAM;AAAA,IACnB;AAAA,EACF,GAAG,IAAI;AACT;",
5
+ "names": []
6
+ }
@@ -0,0 +1,36 @@
1
+ import { useEffect, useLayoutEffect } from "react";
2
+ import { AbortError } from "./errors.mjs";
3
+ const DEBUG_LEVEL = 0;
4
+ function useAsyncEffect(cb, deps = []) {
5
+ useAsyncEffectOfType(useEffect, cb, deps);
6
+ }
7
+ function useAsyncLayoutEffect(cb, deps = []) {
8
+ useAsyncEffectOfType(useLayoutEffect, cb, deps);
9
+ }
10
+ function useAsyncEffectOfType(type, cb, deps = []) {
11
+ type(() => {
12
+ const controller = new AbortController(),
13
+ signal = controller.signal;
14
+ try {
15
+ const value = cb(signal, ...deps);
16
+ Promise.resolve(value).then(async res => {
17
+ if (res && typeof res == "function") {
18
+ if (signal.aborted) return res();
19
+ signal.addEventListener("abort", res);
20
+ }
21
+ }).catch(handleError);
22
+ } catch (error) {
23
+ handleError(error);
24
+ }
25
+ function handleError(error) {
26
+ if (error instanceof AbortError) return DEBUG_LEVEL > 2 && console.info(`\u{1F41B} useAsyncEffect aborted: ${error.message}`), null;
27
+ if (typeof error == "object" && error.name === "AbortError") return null;
28
+ throw error;
29
+ }
30
+ return () => {
31
+ signal.aborted || controller.abort();
32
+ };
33
+ }, deps);
34
+ }
35
+ export { useAsyncEffect, useAsyncEffectOfType, useAsyncLayoutEffect };
36
+ //# sourceMappingURL=useAsyncEffect.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useLayoutEffect","AbortError","DEBUG_LEVEL","useAsyncEffect","cb","deps","useAsyncEffectOfType","useAsyncLayoutEffect","type","controller","AbortController","signal","value","Promise","resolve","then","res","aborted","addEventListener","catch","handleError","error","console","info","message","name","abort"],"sources":["../../src/useAsyncEffect.ts"],"sourcesContent":[null],"mappings":"AAEA,SAASA,SAAA,EAAWC,eAAA,QAAuB;AAC3C,SAASC,UAAA,QAAkB;AAE3B,MAAMC,WAAA,GAAc;AASb,SAASC,eAAeC,EAAA,EAAyBC,IAAA,GAAc,EAAC,EAAS;EAC9EC,oBAAA,CAAqBP,SAAA,EAAWK,EAAA,EAAIC,IAAI;AAC1C;AAEO,SAASE,qBAAqBH,EAAA,EAAyBC,IAAA,GAAc,EAAC,EAAS;EACpFC,oBAAA,CAAqBN,eAAA,EAAiBI,EAAA,EAAIC,IAAI;AAChD;AAEO,SAASC,qBACdE,IAAA,EACAJ,EAAA,EACAC,IAAA,GAAc,EAAC,EACT;EACNG,IAAA,CAAK,MAAM;IACT,MAAMC,UAAA,GAAa,IAAIC,eAAA,CAAgB;MACjCC,MAAA,GAASF,UAAA,CAAWE,MAAA;IAG1B,IAAI;MACF,MAAMC,KAAA,GAAQR,EAAA,CAAGO,MAAA,EAAQ,GAAGN,IAAI;MAEhCQ,OAAA,CAAQC,OAAA,CAAQF,KAAK,EAClBG,IAAA,CAAK,MAAOC,GAAA,IAAQ;QACnB,IAAIA,GAAA,IAAO,OAAOA,GAAA,IAAQ,YAAY;UACpC,IAAIL,MAAA,CAAOM,OAAA,EAAS,OAAOD,GAAA,CAAI;UAC/BL,MAAA,CAAOO,gBAAA,CAAiB,SAASF,GAAG;QACtC;MACF,CAAC,EACAG,KAAA,CAAMC,WAAW;IACtB,SAASC,KAAA,EAAO;MACdD,WAAA,CAAYC,KAAK;IACnB;IAEA,SAASD,YAAYC,KAAA,EAAY;MAC/B,IAAIA,KAAA,YAAiBpB,UAAA,EACnB,OAAIC,WAAA,GAAc,KAChBoB,OAAA,CAAQC,IAAA,CAAK,qCAA8BF,KAAA,CAAMG,OAAO,EAAE,GAErD;MAKT,IAAI,OAAOH,KAAA,IAAU,YAAYA,KAAA,CAAMI,IAAA,KAAS,cAC9C,OAAO;MAMT,MAAMJ,KAAA;IACR;IAEA,OAAO,MAAM;MACPV,MAAA,CAAOM,OAAA,IACXR,UAAA,CAAWiB,KAAA,CAAM;IACnB;EACF,GAAGrB,IAAI;AACT","ignoreList":[]}
@@ -0,0 +1,39 @@
1
+ import { useEffect, useLayoutEffect } from "react";
2
+ import { AbortError } from "./errors.native.js";
3
+ var DEBUG_LEVEL = 0;
4
+ function useAsyncEffect(cb) {
5
+ var deps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
6
+ useAsyncEffectOfType(useEffect, cb, deps);
7
+ }
8
+ function useAsyncLayoutEffect(cb) {
9
+ var deps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : [];
10
+ useAsyncEffectOfType(useLayoutEffect, cb, deps);
11
+ }
12
+ function useAsyncEffectOfType(type, cb) {
13
+ var deps = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : [];
14
+ type(function () {
15
+ var controller = new AbortController(),
16
+ signal = controller.signal;
17
+ try {
18
+ var value = cb(signal, ...deps);
19
+ Promise.resolve(value).then(async function (res) {
20
+ if (res && typeof res == "function") {
21
+ if (signal.aborted) return res();
22
+ signal.addEventListener("abort", res);
23
+ }
24
+ }).catch(handleError);
25
+ } catch (error) {
26
+ handleError(error);
27
+ }
28
+ function handleError(error) {
29
+ if (error instanceof AbortError) return DEBUG_LEVEL > 2 && console.info(`\u{1F41B} useAsyncEffect aborted: ${error.message}`), null;
30
+ if (typeof error == "object" && error.name === "AbortError") return null;
31
+ throw error;
32
+ }
33
+ return function () {
34
+ signal.aborted || controller.abort();
35
+ };
36
+ }, deps);
37
+ }
38
+ export { useAsyncEffect, useAsyncEffectOfType, useAsyncLayoutEffect };
39
+ //# sourceMappingURL=useAsyncEffect.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useLayoutEffect","AbortError","DEBUG_LEVEL","useAsyncEffect","cb","deps","arguments","length","useAsyncEffectOfType","useAsyncLayoutEffect","type","controller","AbortController","signal","value","Promise","resolve","then","res","aborted","addEventListener","catch","handleError","error","console","info","message","name","abort"],"sources":["../../src/useAsyncEffect.ts"],"sourcesContent":[null],"mappings":"AAEA,SAASA,SAAA,EAAWC,eAAA,QAAuB;AAC3C,SAASC,UAAA,QAAkB;AAE3B,IAAAC,WAAM;AASC,SAASC,eAAeC,EAAA,EAAyB;EACtD,IAAAC,IAAA,GAAAC,SAAA,CAAqBC,MAAA,QAAWD,SAAQ,iBAAAA,SAAA;EAC1CE,oBAAA,CAAAT,SAAA,EAAAK,EAAA,EAAAC,IAAA;AAEO;AACL,SAAAI,oBAAqBA,CAAAL,EAAA;EACvB,IAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;EAEOE,oBAAS,CAAAR,eAEd,EACAI,EAAA,EAAAC,IAAe;AAEf;AACE,SAAAG,oBAAuBA,CAAAE,IAAA,EAAAN,EAAA;EAIvB,IAAAC,IAAI,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;EACFI,IAAA,aAAM;IAEN,IAAAC,UAAQ,OAAQC,eACR,CAAO;MAAAC,MAAQ,GAAAF,UAAA,CAAAE,MAAA;IACnB;MACE,IAAAC,KAAI,GAAAV,EAAA,CAAOS,MAAA,EAAS,GAAAR,IAAA,CAAO;MAC3BU,OAAA,CAAAC,OAAO,CAAAF,KAAA,EAAAG,IAAA,CAAiB,gBAAYC,GAAA;QACtC,IAAAA,GAAA,WAAAA,GAAA;UAED,IAAAL,MAAM,CAAAM,OAAW,SAAAD,GAAA;UACtBL,MAAS,CAAAO,gBAAO,UAAAF,GAAA;QACd;MACF,GAAAG,KAAA,CAAAC,WAAA;IAEA,SAASC,KAAA;MACPD,WAAI,CAAAC,KAAA;IACF;IAQF,SAAID,WAAOA,CAAAC,KAAU;MACnB,IAAAA,KAAO,YAAAtB,UAAA,EAMT,OAAMC,WAAA,QAAAsB,OAAA,CAAAC,IAAA,sCAAAF,KAAA,CAAAG,OAAA;MACR,WAAAH,KAAA,gBAAAA,KAAA,CAAAI,IAAA,mBAEA,OAAO,IAAM;MACP,MAAAJ,KAAO;IAEb;IACF,OAAO;MACTV,MAAA,CAAAM,OAAA,IAAAR,UAAA,CAAAiB,KAAA","ignoreList":[]}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@tamagui/use-async",
3
+ "version": "1.128.0",
4
+ "types": "./src",
5
+ "main": "dist/cjs",
6
+ "module": "dist/esm",
7
+ "files": [
8
+ "src",
9
+ "types",
10
+ "dist"
11
+ ],
12
+ "scripts": {
13
+ "build": "tamagui-build --skip-types",
14
+ "watch": "tamagui-build --skip-types --watch",
15
+ "lint": "biome check src",
16
+ "lint:fix": "biome check --write src",
17
+ "clean": "tamagui-build clean",
18
+ "clean:build": "tamagui-build clean:build"
19
+ },
20
+ "exports": {
21
+ "./package.json": "./package.json",
22
+ ".": {
23
+ "react-native": {
24
+ "import": "./dist/esm/index.native.js",
25
+ "require": "./dist/cjs/index.native.js"
26
+ },
27
+ "types": "./src/index.ts",
28
+ "import": "./dist/esm/index.mjs",
29
+ "require": "./dist/cjs/index.cjs",
30
+ "default": "./dist/cjs/index.native.js"
31
+ }
32
+ },
33
+ "devDependencies": {
34
+ "@tamagui/build": "1.128.0",
35
+ "react": "*"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "peerDependencies": {
41
+ "react": "*"
42
+ }
43
+ }
package/src/errors.ts ADDED
@@ -0,0 +1,6 @@
1
+ export class AbortError extends Error {
2
+ constructor(message = '') {
3
+ super(message)
4
+ this.name = 'AbortError'
5
+ }
6
+ }