@idlebox/common 1.4.12 → 1.4.13

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 (316) hide show
  1. package/lib/array/arrayDiff.d.ts +18 -0
  2. package/lib/array/arrayDiff.d.ts.map +1 -0
  3. package/lib/array/arrayDiff.js +23 -0
  4. package/lib/array/arrayDiff.js.map +1 -0
  5. package/lib/array/arraySame.d.ts +6 -0
  6. package/lib/array/arraySame.d.ts.map +1 -0
  7. package/lib/array/arraySame.js +16 -0
  8. package/lib/array/arraySame.js.map +1 -0
  9. package/lib/array/arrayUnique.d.ts +21 -0
  10. package/lib/array/arrayUnique.d.ts.map +1 -0
  11. package/lib/array/arrayUnique.js +43 -0
  12. package/lib/array/arrayUnique.js.map +1 -0
  13. package/lib/array/normalizeArray.d.ts +6 -0
  14. package/lib/array/normalizeArray.d.ts.map +1 -0
  15. package/lib/array/normalizeArray.js +14 -0
  16. package/lib/array/normalizeArray.js.map +1 -0
  17. package/lib/array/sortAlpha.d.ts +8 -0
  18. package/lib/array/sortAlpha.d.ts.map +1 -0
  19. package/lib/array/sortAlpha.js +16 -0
  20. package/lib/array/sortAlpha.js.map +1 -0
  21. package/lib/autoindex.d.ts +184 -0
  22. package/lib/autoindex.d.ts.map +1 -0
  23. package/lib/autoindex.js +256 -0
  24. package/lib/autoindex.js.map +1 -0
  25. package/lib/date/consts.d.ts +6 -0
  26. package/lib/date/consts.d.ts.map +1 -0
  27. package/lib/date/consts.js +6 -0
  28. package/lib/date/consts.js.map +1 -0
  29. package/lib/date/isInvalid.d.ts +5 -0
  30. package/lib/date/isInvalid.d.ts.map +1 -0
  31. package/lib/date/isInvalid.js +7 -0
  32. package/lib/date/isInvalid.js.map +1 -0
  33. package/lib/date/sibling.d.ts +8 -0
  34. package/lib/date/sibling.d.ts.map +1 -0
  35. package/lib/date/sibling.js +29 -0
  36. package/lib/date/sibling.js.map +1 -0
  37. package/lib/date/timeString.d.ts +46 -0
  38. package/lib/date/timeString.d.ts.map +1 -0
  39. package/lib/date/timeString.js +126 -0
  40. package/lib/date/timeString.js.map +1 -0
  41. package/lib/date/unix.d.ts +9 -0
  42. package/lib/date/unix.d.ts.map +1 -0
  43. package/lib/date/unix.js +13 -0
  44. package/lib/date/unix.js.map +1 -0
  45. package/lib/debugging/serializable.d.ts +13 -0
  46. package/lib/debugging/serializable.d.ts.map +1 -0
  47. package/lib/debugging/serializable.js +124 -0
  48. package/lib/debugging/serializable.js.map +1 -0
  49. package/lib/debugging/tryInspect.d.ts +6 -0
  50. package/lib/debugging/tryInspect.d.ts.map +1 -0
  51. package/lib/debugging/tryInspect.js +40 -0
  52. package/lib/debugging/tryInspect.js.map +1 -0
  53. package/lib/error/convertUnknown.d.ts +2 -0
  54. package/lib/error/convertUnknown.d.ts.map +1 -0
  55. package/lib/error/convertUnknown.js +9 -0
  56. package/lib/error/convertUnknown.js.map +1 -0
  57. package/lib/error/getFrame.d.ts +6 -0
  58. package/lib/error/getFrame.d.ts.map +1 -0
  59. package/lib/error/getFrame.js +14 -0
  60. package/lib/error/getFrame.js.map +1 -0
  61. package/lib/error/known.d.ts +14 -0
  62. package/lib/error/known.d.ts.map +1 -0
  63. package/lib/error/known.js +34 -0
  64. package/lib/error/known.js.map +1 -0
  65. package/lib/error/pretty.d.ts +39 -0
  66. package/lib/error/pretty.d.ts.map +1 -0
  67. package/lib/error/pretty.js +348 -0
  68. package/lib/error/pretty.js.map +1 -0
  69. package/lib/error/pretty.vscode.d.ts +12 -0
  70. package/lib/error/pretty.vscode.d.ts.map +1 -0
  71. package/lib/error/pretty.vscode.js +95 -0
  72. package/lib/error/pretty.vscode.js.map +1 -0
  73. package/lib/error-wellknown/exit.error.d.ts +10 -0
  74. package/lib/error-wellknown/exit.error.d.ts.map +1 -0
  75. package/lib/error-wellknown/exit.error.js +14 -0
  76. package/lib/error-wellknown/exit.error.js.map +1 -0
  77. package/lib/function/asyncCallbackList.d.ts +29 -0
  78. package/lib/function/asyncCallbackList.d.ts.map +1 -0
  79. package/lib/function/asyncCallbackList.js +63 -0
  80. package/lib/function/asyncCallbackList.js.map +1 -0
  81. package/lib/function/callbackList.d.ts +34 -0
  82. package/lib/function/callbackList.d.ts.map +1 -0
  83. package/lib/function/callbackList.js +74 -0
  84. package/lib/function/callbackList.js.map +1 -0
  85. package/lib/function/delayCallbackList.d.ts +17 -0
  86. package/lib/function/delayCallbackList.d.ts.map +1 -0
  87. package/lib/function/delayCallbackList.js +36 -0
  88. package/lib/function/delayCallbackList.js.map +1 -0
  89. package/lib/function/functionName.d.ts +22 -0
  90. package/lib/function/functionName.d.ts.map +1 -0
  91. package/lib/function/functionName.js +27 -0
  92. package/lib/function/functionName.js.map +1 -0
  93. package/lib/lifecycle/dispose/bridges/rxjs.d.ts +8 -0
  94. package/lib/lifecycle/dispose/bridges/rxjs.d.ts.map +1 -0
  95. package/lib/lifecycle/dispose/bridges/rxjs.js +4 -0
  96. package/lib/lifecycle/dispose/bridges/rxjs.js.map +1 -0
  97. package/lib/lifecycle/dispose/debug.d.ts +7 -0
  98. package/lib/lifecycle/dispose/debug.d.ts.map +1 -0
  99. package/lib/lifecycle/dispose/debug.js +22 -0
  100. package/lib/lifecycle/dispose/debug.js.map +1 -0
  101. package/lib/lifecycle/dispose/disposableEvent.d.ts +17 -0
  102. package/lib/lifecycle/dispose/disposableEvent.d.ts.map +1 -0
  103. package/lib/lifecycle/dispose/disposableEvent.js +75 -0
  104. package/lib/lifecycle/dispose/disposableEvent.js.map +1 -0
  105. package/lib/lifecycle/dispose/disposedError.d.ts +11 -0
  106. package/lib/lifecycle/dispose/disposedError.d.ts.map +1 -0
  107. package/lib/lifecycle/dispose/disposedError.js +28 -0
  108. package/lib/lifecycle/dispose/disposedError.js.map +1 -0
  109. package/lib/lifecycle/dispose/lifecycle.async.d.ts +46 -0
  110. package/lib/lifecycle/dispose/lifecycle.async.d.ts.map +1 -0
  111. package/lib/lifecycle/dispose/lifecycle.async.js +110 -0
  112. package/lib/lifecycle/dispose/lifecycle.async.js.map +1 -0
  113. package/lib/lifecycle/dispose/lifecycle.d.ts +27 -0
  114. package/lib/lifecycle/dispose/lifecycle.d.ts.map +1 -0
  115. package/lib/lifecycle/dispose/lifecycle.global.d.ts +29 -0
  116. package/lib/lifecycle/dispose/lifecycle.global.d.ts.map +1 -0
  117. package/lib/lifecycle/dispose/lifecycle.global.js +57 -0
  118. package/lib/lifecycle/dispose/lifecycle.global.js.map +1 -0
  119. package/lib/lifecycle/dispose/lifecycle.js +42 -0
  120. package/lib/lifecycle/dispose/lifecycle.js.map +1 -0
  121. package/lib/lifecycle/dispose/lifecycle.sync.d.ts +45 -0
  122. package/lib/lifecycle/dispose/lifecycle.sync.d.ts.map +1 -0
  123. package/lib/lifecycle/dispose/lifecycle.sync.js +114 -0
  124. package/lib/lifecycle/dispose/lifecycle.sync.js.map +1 -0
  125. package/lib/lifecycle/event/event.d.ts +53 -0
  126. package/lib/lifecycle/event/event.d.ts.map +1 -0
  127. package/lib/lifecycle/event/event.js +137 -0
  128. package/lib/lifecycle/event/event.js.map +1 -0
  129. package/lib/lifecycle/event/memorized.d.ts +17 -0
  130. package/lib/lifecycle/event/memorized.d.ts.map +1 -0
  131. package/lib/lifecycle/event/memorized.js +34 -0
  132. package/lib/lifecycle/event/memorized.js.map +1 -0
  133. package/lib/lifecycle/promise/cancel.d.ts +10 -0
  134. package/lib/lifecycle/promise/cancel.d.ts.map +1 -0
  135. package/lib/lifecycle/promise/cancel.js +15 -0
  136. package/lib/lifecycle/promise/cancel.js.map +1 -0
  137. package/lib/lifecycle/promise/cancellationToken/driver.browser.d.ts +11 -0
  138. package/lib/lifecycle/promise/cancellationToken/driver.browser.d.ts.map +1 -0
  139. package/lib/lifecycle/promise/cancellationToken/driver.browser.js +42 -0
  140. package/lib/lifecycle/promise/cancellationToken/driver.browser.js.map +1 -0
  141. package/lib/lifecycle/promise/cancellationToken/driver.common.d.ts +11 -0
  142. package/lib/lifecycle/promise/cancellationToken/driver.common.d.ts.map +1 -0
  143. package/lib/lifecycle/promise/cancellationToken/driver.common.js +38 -0
  144. package/lib/lifecycle/promise/cancellationToken/driver.common.js.map +1 -0
  145. package/lib/lifecycle/promise/cancellationToken/source.d.ts +27 -0
  146. package/lib/lifecycle/promise/cancellationToken/source.d.ts.map +1 -0
  147. package/lib/lifecycle/promise/cancellationToken/source.js +26 -0
  148. package/lib/lifecycle/promise/cancellationToken/source.js.map +1 -0
  149. package/lib/lifecycle/promise/deferredPromise.d.ts +55 -0
  150. package/lib/lifecycle/promise/deferredPromise.d.ts.map +1 -0
  151. package/lib/lifecycle/promise/deferredPromise.js +114 -0
  152. package/lib/lifecycle/promise/deferredPromise.js.map +1 -0
  153. package/lib/lifecycle/timeout/interval.d.ts +27 -0
  154. package/lib/lifecycle/timeout/interval.d.ts.map +1 -0
  155. package/lib/lifecycle/timeout/interval.js +58 -0
  156. package/lib/lifecycle/timeout/interval.js.map +1 -0
  157. package/lib/lifecycle/timeout/timeout.d.ts +16 -0
  158. package/lib/lifecycle/timeout/timeout.d.ts.map +1 -0
  159. package/lib/lifecycle/timeout/timeout.js +53 -0
  160. package/lib/lifecycle/timeout/timeout.js.map +1 -0
  161. package/lib/lifecycle/timeout/timeoutError.d.ts +11 -0
  162. package/lib/lifecycle/timeout/timeoutError.d.ts.map +1 -0
  163. package/lib/lifecycle/timeout/timeoutError.js +16 -0
  164. package/lib/lifecycle/timeout/timeoutError.js.map +1 -0
  165. package/lib/log/logger.d.ts +46 -0
  166. package/lib/log/logger.d.ts.map +1 -0
  167. package/lib/log/logger.js +95 -0
  168. package/lib/log/logger.js.map +1 -0
  169. package/lib/mapSet/customSet.d.ts +31 -0
  170. package/lib/mapSet/customSet.d.ts.map +1 -0
  171. package/lib/mapSet/customSet.js +70 -0
  172. package/lib/mapSet/customSet.js.map +1 -0
  173. package/lib/mapSet/extendMap.d.ts +21 -0
  174. package/lib/mapSet/extendMap.d.ts.map +1 -0
  175. package/lib/mapSet/extendMap.js +26 -0
  176. package/lib/mapSet/extendMap.js.map +1 -0
  177. package/lib/misc/assertNotNull.d.ts +12 -0
  178. package/lib/misc/assertNotNull.d.ts.map +1 -0
  179. package/lib/misc/assertNotNull.js +20 -0
  180. package/lib/misc/assertNotNull.js.map +1 -0
  181. package/lib/misc/package.json.d.ts +100 -0
  182. package/lib/misc/package.json.d.ts.map +1 -0
  183. package/lib/misc/package.json.js +37 -0
  184. package/lib/misc/package.json.js.map +1 -0
  185. package/lib/object/definePublicConstant.d.ts +3 -0
  186. package/lib/object/definePublicConstant.d.ts.map +1 -0
  187. package/lib/object/definePublicConstant.js +17 -0
  188. package/lib/object/definePublicConstant.js.map +1 -0
  189. package/lib/object/initOnRead.d.ts +8 -0
  190. package/lib/object/initOnRead.d.ts.map +1 -0
  191. package/lib/object/initOnRead.js +23 -0
  192. package/lib/object/initOnRead.js.map +1 -0
  193. package/lib/object/objectPath.d.ts +6 -0
  194. package/lib/object/objectPath.d.ts.map +1 -0
  195. package/lib/object/objectPath.js +11 -0
  196. package/lib/object/objectPath.js.map +1 -0
  197. package/lib/object/objectSame.d.ts +11 -0
  198. package/lib/object/objectSame.d.ts.map +1 -0
  199. package/lib/object/objectSame.js +51 -0
  200. package/lib/object/objectSame.js.map +1 -0
  201. package/lib/path/isAbsolute.d.ts +10 -0
  202. package/lib/path/isAbsolute.d.ts.map +1 -0
  203. package/lib/path/isAbsolute.js +12 -0
  204. package/lib/path/isAbsolute.js.map +1 -0
  205. package/lib/path/normalizePath.d.ts +23 -0
  206. package/lib/path/normalizePath.d.ts.map +1 -0
  207. package/lib/path/normalizePath.js +125 -0
  208. package/lib/path/normalizePath.js.map +1 -0
  209. package/lib/path/pathArray.d.ts +54 -0
  210. package/lib/path/pathArray.d.ts.map +1 -0
  211. package/lib/path/pathArray.js +135 -0
  212. package/lib/path/pathArray.js.map +1 -0
  213. package/lib/platform/globalObject.d.ts +9 -0
  214. package/lib/platform/globalObject.d.ts.map +1 -0
  215. package/lib/platform/globalObject.js +17 -0
  216. package/lib/platform/globalObject.js.map +1 -0
  217. package/lib/platform/globalSingleton.d.ts +29 -0
  218. package/lib/platform/globalSingleton.d.ts.map +1 -0
  219. package/lib/platform/globalSingleton.js +60 -0
  220. package/lib/platform/globalSingleton.js.map +1 -0
  221. package/lib/platform/globalSymbol.d.ts +13 -0
  222. package/lib/platform/globalSymbol.d.ts.map +1 -0
  223. package/lib/platform/globalSymbol.js +34 -0
  224. package/lib/platform/globalSymbol.js.map +1 -0
  225. package/lib/platform/os.d.ts +17 -0
  226. package/lib/platform/os.d.ts.map +1 -0
  227. package/lib/platform/os.js +57 -0
  228. package/lib/platform/os.js.map +1 -0
  229. package/lib/promise/awaitIterator.d.ts +5 -0
  230. package/lib/promise/awaitIterator.d.ts.map +1 -0
  231. package/lib/promise/awaitIterator.js +22 -0
  232. package/lib/promise/awaitIterator.js.map +1 -0
  233. package/lib/promise/finishAllPromise.d.ts +13 -0
  234. package/lib/promise/finishAllPromise.d.ts.map +1 -0
  235. package/lib/promise/finishAllPromise.js +37 -0
  236. package/lib/promise/finishAllPromise.js.map +1 -0
  237. package/lib/promise/promiseBool.d.ts +6 -0
  238. package/lib/promise/promiseBool.d.ts.map +1 -0
  239. package/lib/promise/promiseBool.js +8 -0
  240. package/lib/promise/promiseBool.js.map +1 -0
  241. package/lib/promise/promiseCollection.d.ts +11 -0
  242. package/lib/promise/promiseCollection.d.ts.map +1 -0
  243. package/lib/promise/promiseCollection.js +34 -0
  244. package/lib/promise/promiseCollection.js.map +1 -0
  245. package/lib/promise/timeoutPromiseCollection.d.ts +7 -0
  246. package/lib/promise/timeoutPromiseCollection.d.ts.map +1 -0
  247. package/lib/promise/timeoutPromiseCollection.js +20 -0
  248. package/lib/promise/timeoutPromiseCollection.js.map +1 -0
  249. package/lib/reflection/classes/hookClass.d.ts +11 -0
  250. package/lib/reflection/classes/hookClass.d.ts.map +1 -0
  251. package/lib/reflection/classes/hookClass.js +34 -0
  252. package/lib/reflection/classes/hookClass.js.map +1 -0
  253. package/lib/reflection/classes/singleton.d.ts +7 -0
  254. package/lib/reflection/classes/singleton.d.ts.map +1 -0
  255. package/lib/reflection/classes/singleton.js +30 -0
  256. package/lib/reflection/classes/singleton.js.map +1 -0
  257. package/lib/reflection/methods/bind.d.ts +5 -0
  258. package/lib/reflection/methods/bind.d.ts.map +1 -0
  259. package/lib/reflection/methods/bind.js +25 -0
  260. package/lib/reflection/methods/bind.js.map +1 -0
  261. package/lib/reflection/methods/initOnRead.d.ts +7 -0
  262. package/lib/reflection/methods/initOnRead.d.ts.map +1 -0
  263. package/lib/reflection/methods/initOnRead.js +11 -0
  264. package/lib/reflection/methods/initOnRead.js.map +1 -0
  265. package/lib/reflection/methods/memorize.d.ts +8 -0
  266. package/lib/reflection/methods/memorize.d.ts.map +1 -0
  267. package/lib/reflection/methods/memorize.js +28 -0
  268. package/lib/reflection/methods/memorize.js.map +1 -0
  269. package/lib/state/StateMachine.d.ts +19 -0
  270. package/lib/state/StateMachine.d.ts.map +1 -0
  271. package/lib/state/StateMachine.js +30 -0
  272. package/lib/state/StateMachine.js.map +1 -0
  273. package/lib/string/castCase.d.ts +17 -0
  274. package/lib/string/castCase.d.ts.map +1 -0
  275. package/lib/string/castCase.js +53 -0
  276. package/lib/string/castCase.js.map +1 -0
  277. package/lib/string/concatType.generated.d.ts +29 -0
  278. package/lib/string/concatType.generated.d.ts.map +1 -0
  279. package/lib/string/concatType.generated.js +17 -0
  280. package/lib/string/concatType.generated.js.map +1 -0
  281. package/lib/string/escapeRegexp.d.ts +3 -0
  282. package/lib/string/escapeRegexp.d.ts.map +1 -0
  283. package/lib/string/escapeRegexp.js +5 -0
  284. package/lib/string/escapeRegexp.js.map +1 -0
  285. package/lib/string/pad2.d.ts +6 -0
  286. package/lib/string/pad2.d.ts.map +1 -0
  287. package/lib/string/pad2.js +11 -0
  288. package/lib/string/pad2.js.map +1 -0
  289. package/lib/string/sizeString.d.ts +13 -0
  290. package/lib/string/sizeString.d.ts.map +1 -0
  291. package/lib/string/sizeString.js +59 -0
  292. package/lib/string/sizeString.js.map +1 -0
  293. package/lib/tsconfig.tsbuildinfo +1 -0
  294. package/lib/typingHelper/deep.partial.d.ts +10 -0
  295. package/lib/typingHelper/deep.partial.d.ts.map +1 -0
  296. package/lib/typingHelper/deep.partial.js +2 -0
  297. package/lib/typingHelper/deep.partial.js.map +1 -0
  298. package/lib/typingHelper/deep.readonly.d.ts +10 -0
  299. package/lib/typingHelper/deep.readonly.d.ts.map +1 -0
  300. package/lib/typingHelper/deep.readonly.js +2 -0
  301. package/lib/typingHelper/deep.readonly.js.map +1 -0
  302. package/lib/typingHelper/deep.required.d.ts +10 -0
  303. package/lib/typingHelper/deep.required.d.ts.map +1 -0
  304. package/lib/typingHelper/deep.required.js +2 -0
  305. package/lib/typingHelper/deep.required.js.map +1 -0
  306. package/lib/typingHelper/deep.writable.d.ts +10 -0
  307. package/lib/typingHelper/deep.writable.d.ts.map +1 -0
  308. package/lib/typingHelper/deep.writable.js +2 -0
  309. package/lib/typingHelper/deep.writable.js.map +1 -0
  310. package/lib/typingHelper/literal.d.ts +2 -0
  311. package/lib/typingHelper/literal.d.ts.map +1 -0
  312. package/lib/typingHelper/literal.js +2 -0
  313. package/lib/typingHelper/literal.js.map +1 -0
  314. package/package.json +3 -3
  315. package/src/autoindex.ts +4 -0
  316. package/src/string/concatType.generated.ts +9 -4
@@ -0,0 +1,29 @@
1
+ import { AsyncDisposable } from './lifecycle.async.js';
2
+ import type { IDisposable } from './lifecycle.js';
3
+ /**
4
+ * Add object into global disposable store, it will be dispose when call to `disposeGlobal`
5
+ */
6
+ export declare function registerGlobalLifecycle(object: IDisposable): void;
7
+ /**
8
+ * Same as disposeGlobal, but do not throw by duplicate call
9
+ *
10
+ * Never throws when child object dispose failed
11
+ */
12
+ export declare function ensureDisposeGlobal(): Promise<void>;
13
+ /**
14
+ * Dispose the global disposable store
15
+ * this function must be manually called by user, when registerGlobalLifecycle is used
16
+ *
17
+ * @throws when call twice
18
+ */
19
+ export declare function disposeGlobal(): Promise<void>;
20
+ /**
21
+ * Note: sub-class should singleton
22
+ * @alpha
23
+ */
24
+ export declare abstract class LifecycleObject extends AsyncDisposable {
25
+ /** sub-class should shutdown program in this method */
26
+ protected abstract done(): void;
27
+ dispose(): Promise<void>;
28
+ }
29
+ //# sourceMappingURL=lifecycle.global.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.global.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAA4B,MAAM,sBAAsB,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAUlD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,QAE1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,kBAMlC;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,kBAU5B;AAED;;;GAGG;AACH,8BAAsB,eAAgB,SAAQ,eAAe;IAC5D,uDAAuD;IACvD,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI;IAET,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAK9C"}
@@ -0,0 +1,57 @@
1
+ import { globalSingletonStrong } from '../../platform/globalSingleton.js';
2
+ import { createSymbol } from '../../platform/globalSymbol.js';
3
+ import { _debug_dispose } from './debug.js';
4
+ import { AsyncDisposable, AsyncDisposableUnordered } from './lifecycle.async.js';
5
+ const symbol = createSymbol('lifecycle', 'application');
6
+ function create() {
7
+ return new AsyncDisposableUnordered('global');
8
+ }
9
+ const logger = _debug_dispose.extend('global');
10
+ /**
11
+ * Add object into global disposable store, it will be dispose when call to `disposeGlobal`
12
+ */
13
+ export function registerGlobalLifecycle(object) {
14
+ globalSingletonStrong(symbol, create)._register(object);
15
+ }
16
+ /**
17
+ * Same as disposeGlobal, but do not throw by duplicate call
18
+ *
19
+ * Never throws when child object dispose failed
20
+ */
21
+ export function ensureDisposeGlobal() {
22
+ const obj = globalSingletonStrong(symbol);
23
+ if (obj && !obj.hasDisposed) {
24
+ return Promise.resolve(obj.dispose());
25
+ }
26
+ return Promise.resolve();
27
+ }
28
+ /**
29
+ * Dispose the global disposable store
30
+ * this function must be manually called by user, when registerGlobalLifecycle is used
31
+ *
32
+ * @throws when call twice
33
+ */
34
+ export function disposeGlobal() {
35
+ const obj = globalSingletonStrong(symbol);
36
+ if (obj?.hasDisposed) {
37
+ throw new Error('global already disposed.');
38
+ }
39
+ if (obj) {
40
+ return Promise.resolve(obj.dispose());
41
+ }
42
+ if (logger.enabled)
43
+ logger(`dispose global (not exists)`);
44
+ return Promise.resolve();
45
+ }
46
+ /**
47
+ * Note: sub-class should singleton
48
+ * @alpha
49
+ */
50
+ export class LifecycleObject extends AsyncDisposable {
51
+ async dispose() {
52
+ return super.dispose().finally(() => {
53
+ this.done();
54
+ });
55
+ }
56
+ }
57
+ //# sourceMappingURL=lifecycle.global.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.global.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.global.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGjF,MAAM,MAAM,GAAG,YAAY,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;AAExD,SAAS,MAAM;IACd,OAAO,IAAI,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAC/C,CAAC;AAED,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAmB;IAC1D,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB;IAClC,MAAM,GAAG,GAAG,qBAAqB,CAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa;IAC5B,MAAM,GAAG,GAAG,qBAAqB,CAAkB,MAAM,CAAC,CAAC;IAC3D,IAAI,GAAG,EAAE,WAAW,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,GAAG,EAAE,CAAC;QACT,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,6BAA6B,CAAC,CAAC;IAC1D,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,OAAgB,eAAgB,SAAQ,eAAe;IAI5C,KAAK,CAAC,OAAO;QAC5B,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE;YACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACb,CAAC,CAAC,CAAC;IACJ,CAAC;CACD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Convert "dispose function" to disposable object
3
+ * @public
4
+ */
5
+ export function toDisposable(fn_or_obj) {
6
+ if (typeof fn_or_obj === 'function') {
7
+ return {
8
+ get displayName() {
9
+ return `toDisposable(${fn_or_obj.name || 'anonymous'})`;
10
+ },
11
+ dispose: fn_or_obj,
12
+ };
13
+ }
14
+ else if (Symbol.dispose in fn_or_obj) {
15
+ const obj = fn_or_obj;
16
+ return {
17
+ get displayName() {
18
+ return `toDisposable[Disposable](${obj.displayName || obj.name || obj.constructor.name || 'unknown'})`;
19
+ },
20
+ dispose() {
21
+ fn_or_obj[Symbol.dispose]();
22
+ },
23
+ };
24
+ }
25
+ else if (Symbol.asyncDispose in fn_or_obj) {
26
+ const obj = fn_or_obj;
27
+ return {
28
+ get displayName() {
29
+ return `toDisposable[AsyncDisposable](${obj.displayName || obj.name || obj.constructor.name || 'unknown'})`;
30
+ },
31
+ dispose() {
32
+ return fn_or_obj[Symbol.asyncDispose]();
33
+ },
34
+ };
35
+ }
36
+ else {
37
+ throw new TypeError('toDisposable: expected function or object with Symbol.dispose or Symbol.asyncDispose', {
38
+ cause: fn_or_obj,
39
+ });
40
+ }
41
+ }
42
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.ts"],"names":[],"mappings":"AAkCA;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,SAAsD;IAClF,IAAI,OAAO,SAAS,KAAK,UAAU,EAAE,CAAC;QACrC,OAAO;YACN,IAAI,WAAW;gBACd,OAAO,gBAAgB,SAAS,CAAC,IAAI,IAAI,WAAW,GAAG,CAAC;YACzD,CAAC;YACD,OAAO,EAAE,SAAS;SAClB,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,OAAO;YACN,IAAI,WAAW;gBACd,OAAO,4BAA4B,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;YACxG,CAAC;YACD,OAAO;gBACN,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,CAAC;SACD,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,YAAY,IAAI,SAAS,EAAE,CAAC;QAC7C,MAAM,GAAG,GAAG,SAAgB,CAAC;QAC7B,OAAO;YACN,IAAI,WAAW;gBACd,OAAO,iCAAiC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,IAAI,SAAS,GAAG,CAAC;YAC7G,CAAC;YACD,OAAO;gBACN,OAAO,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;YACzC,CAAC;SACD,CAAC;IACH,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,sFAAsF,EAAE;YAC3G,KAAK,EAAE,SAAS;SAChB,CAAC,CAAC;IACJ,CAAC;AACF,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { Emitter, type EventRegister } from '../event/event.js';
2
+ import type { IDisposable, IDisposableEvents } from './lifecycle.js';
3
+ interface _DOMDisposable {
4
+ [Symbol.dispose](): void;
5
+ }
6
+ export declare abstract class DisposableOnce implements IDisposable {
7
+ private _disposed?;
8
+ get hasDisposed(): boolean;
9
+ dispose(): void;
10
+ toWeb(): _DOMDisposable;
11
+ static fromWeb(disposable: _DOMDisposable): IDisposable;
12
+ [Symbol.dispose](): void;
13
+ protected abstract _dispose(): void;
14
+ }
15
+ /**
16
+ * Standalone disposable class, can use as instance or base class.
17
+ */
18
+ export declare class Disposable implements IDisposable, IDisposableEvents {
19
+ #private;
20
+ readonly displayName?: string | undefined;
21
+ private readonly _disposables;
22
+ protected readonly _onDisposeError: Emitter<Error>;
23
+ readonly onDisposeError: EventRegister<Error>;
24
+ protected readonly _onBeforeDispose: Emitter<void>;
25
+ readonly onBeforeDispose: EventRegister<void>;
26
+ private _disposed?;
27
+ constructor(displayName?: string | undefined);
28
+ get hasDisposed(): boolean;
29
+ /**
30
+ * @throws if already disposed
31
+ */
32
+ assertNotDisposed(): void;
33
+ /**
34
+ * register a disposable object
35
+ */
36
+ _register<T extends IDisposable>(d: T): T;
37
+ _register<T extends IDisposable & IDisposableEvents>(d: T, autoDereference?: boolean): T;
38
+ _unregister(d: IDisposable): boolean;
39
+ toWeb(): _DOMDisposable;
40
+ static fromWeb(disposable: _DOMDisposable): IDisposable;
41
+ [Symbol.dispose](): void;
42
+ dispose(): void;
43
+ }
44
+ export {};
45
+ //# sourceMappingURL=lifecycle.sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.sync.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAErE,UAAU,cAAc;IACvB,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;CACzB;AAED,8BAAsB,cAAe,YAAW,WAAW;IAC1D,OAAO,CAAC,SAAS,CAAC,CAAQ;IAE1B,IAAW,WAAW,YAErB;IACM,OAAO,IAAI,IAAI;IAStB,KAAK,IAAI,cAAc;IAGvB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW;IAMvD,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,SAAS,CAAC,QAAQ,CAAC,QAAQ,IAAI,IAAI;CACnC;AAED;;GAEG;AACH,qBAAa,UAAW,YAAW,WAAW,EAAE,iBAAiB;;aAapC,WAAW,CAAC,EAAE,MAAM;IAZhD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAElD,SAAS,CAAC,QAAQ,CAAC,eAAe,iBAAwB;IAC1D,SAAgB,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAiC;IAErF,SAAS,CAAC,QAAQ,CAAC,gBAAgB,gBAAuB;IAC1D,SAAgB,eAAe,EAAE,aAAa,CAAC,IAAI,CAAC,CAAkC;IAEtF,OAAO,CAAC,SAAS,CAAC,CAAQ;gBAIE,WAAW,CAAC,EAAE,MAAM,YAAA;IAIhD,IAAW,WAAW,YAErB;IAED;;OAEG;IACI,iBAAiB;IAMxB;;OAEG;IACI,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC;IACzC,SAAS,CAAC,CAAC,SAAS,WAAW,GAAG,iBAAiB,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,CAAC;IAaxF,WAAW,CAAC,CAAC,EAAE,WAAW;IAKjC,KAAK,IAAI,cAAc;IAGvB,MAAM,CAAC,OAAO,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW;IAMvD,CAAC,MAAM,CAAC,OAAO,CAAC;IAIT,OAAO,IAAI,IAAI;CAwBtB"}
@@ -0,0 +1,114 @@
1
+ import { Emitter } from '../event/event.js';
2
+ import { _debug_dispose, dispose_name } from './debug.js';
3
+ import { DisposedError } from './disposedError.js';
4
+ export class DisposableOnce {
5
+ _disposed;
6
+ get hasDisposed() {
7
+ return !!this._disposed;
8
+ }
9
+ dispose() {
10
+ if (this._disposed) {
11
+ console.warn(new DisposedError(this, this._disposed).message);
12
+ return;
13
+ }
14
+ this._disposed = new Error('disposed');
15
+ this._dispose();
16
+ }
17
+ toWeb() {
18
+ return this;
19
+ }
20
+ static fromWeb(disposable) {
21
+ if (!('dispose' in disposable)) {
22
+ Object.assign(disposable, { dispose: disposable[Symbol.dispose] });
23
+ }
24
+ return disposable;
25
+ }
26
+ [Symbol.dispose]() {
27
+ this.dispose();
28
+ }
29
+ }
30
+ /**
31
+ * Standalone disposable class, can use as instance or base class.
32
+ */
33
+ export class Disposable {
34
+ displayName;
35
+ _disposables = [];
36
+ _onDisposeError = new Emitter();
37
+ onDisposeError = this._onDisposeError.register;
38
+ _onBeforeDispose = new Emitter();
39
+ onBeforeDispose = this._onBeforeDispose.register;
40
+ _disposed;
41
+ /** @internal */
42
+ #logger;
43
+ constructor(displayName) {
44
+ this.displayName = displayName;
45
+ this.#logger = _debug_dispose.extend(this.displayName || 'disposable');
46
+ }
47
+ get hasDisposed() {
48
+ return !!this._disposed;
49
+ }
50
+ /**
51
+ * @throws if already disposed
52
+ */
53
+ assertNotDisposed() {
54
+ if (this._disposed) {
55
+ throw new DisposedError(this, this._disposed);
56
+ }
57
+ }
58
+ _register(d, autoDereference) {
59
+ if (this.#logger.enabled)
60
+ this.#logger(`register ${dispose_name(d)}`);
61
+ this.assertNotDisposed();
62
+ this._disposables.unshift(d);
63
+ if (autoDereference) {
64
+ d.onBeforeDispose(() => {
65
+ this._unregister(d);
66
+ });
67
+ }
68
+ return d;
69
+ }
70
+ _unregister(d) {
71
+ if (this.#logger.enabled)
72
+ this.#logger(`unregister ${dispose_name(d)}`);
73
+ return this._disposables.splice(this._disposables.indexOf(d), 1).length > 0;
74
+ }
75
+ toWeb() {
76
+ return this;
77
+ }
78
+ static fromWeb(disposable) {
79
+ if (!('dispose' in disposable)) {
80
+ Object.assign(disposable, { dispose: disposable[Symbol.dispose] });
81
+ }
82
+ return disposable;
83
+ }
84
+ [Symbol.dispose]() {
85
+ this.dispose();
86
+ }
87
+ dispose() {
88
+ if (this._disposed) {
89
+ console.warn(new DisposedError(this, this._disposed).message);
90
+ return;
91
+ }
92
+ this._onBeforeDispose.fireNoError();
93
+ this._disposed = new Error('disposed');
94
+ this._disposables.push(this._onBeforeDispose);
95
+ this._disposables.push(this._onDisposeError);
96
+ for (const item of this._disposables.values()) {
97
+ try {
98
+ if (this.#logger.enabled)
99
+ this.#logger(`dispose ${dispose_name(item)}`);
100
+ item.dispose();
101
+ }
102
+ catch (e) {
103
+ if (e instanceof Error) {
104
+ this._onDisposeError.fire(e);
105
+ }
106
+ else {
107
+ console.error('error during dispose, throw:', e);
108
+ this._onDisposeError.fire(new Error(`${e}`));
109
+ }
110
+ }
111
+ }
112
+ }
113
+ }
114
+ //# sourceMappingURL=lifecycle.sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.sync.js","sourceRoot":"","sources":["../../../src/lifecycle/dispose/lifecycle.sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { IDisposable } from '../dispose/lifecycle.js';
2
+ export type EventHandler<T> = (data: T) => void;
3
+ export type EventRegister<T> = ((callback: EventHandler<T>) => IDisposable) & {
4
+ once(callback: EventHandler<T>): IDisposable;
5
+ };
6
+ type DeferFn = () => void;
7
+ /**
8
+ * 事件注册对象
9
+ * @public
10
+ */
11
+ export declare class Emitter<T> implements IDisposable {
12
+ readonly displayName?: string | undefined;
13
+ protected readonly _callbacks: EventHandler<T>[];
14
+ private executing;
15
+ constructor(displayName?: string | undefined);
16
+ /**
17
+ * @returns 当前注册回调数量
18
+ */
19
+ listenerCount(): number;
20
+ /**
21
+ * 触发本事件
22
+ * @param data 回调数据
23
+ */
24
+ fire(data: T): void;
25
+ /**
26
+ * 与 `fire()`相同,但是忽略任何错误,并且即便出错也继续执行全部callback
27
+ */
28
+ fireNoError(data: T): void;
29
+ get register(): EventRegister<T>;
30
+ /**
31
+ * AI喜欢用event()
32
+ * @alias register
33
+ */
34
+ get event(): EventRegister<T>;
35
+ /**
36
+ * 注册本事件的新回调
37
+ * @param callback 回调函数
38
+ */
39
+ handle(callback: EventHandler<T>): IDisposable;
40
+ /**
41
+ * 注册一次性回调
42
+ * @param callback 回调函数
43
+ */
44
+ once(callback: EventHandler<T>): IDisposable;
45
+ private defers;
46
+ defer(fn: DeferFn): void;
47
+ private doDefer;
48
+ [Symbol.dispose](): void;
49
+ dispose(): void;
50
+ private requireNotExecuting;
51
+ }
52
+ export {};
53
+ //# sourceMappingURL=event.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhD,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,GAAG;IAC7E,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC;CAC7C,CAAC;AAEF,KAAK,OAAO,GAAG,MAAM,IAAI,CAAC;AAE1B;;;GAGG;AACH,qBAAa,OAAO,CAAC,CAAC,CAAE,YAAW,WAAW;aAIjB,WAAW,CAAC,EAAE,MAAM;IAHhD,SAAS,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,CAAM;IACtD,OAAO,CAAC,SAAS,CAAS;gBAEE,WAAW,CAAC,EAAE,MAAM,YAAA;IAEhD;;OAEG;IACI,aAAa;IAIpB;;;OAGG;IACI,IAAI,CAAC,IAAI,EAAE,CAAC;IAanB;;OAEG;IACI,WAAW,CAAC,IAAI,EAAE,CAAC;IAiB1B,IAAI,QAAQ,IAAI,aAAa,CAAC,CAAC,CAAC,CAI/B;IAED;;;OAGG;IACH,IAAI,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAE5B;IAED;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAyB9C;;;OAGG;IACH,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAS5C,OAAO,CAAC,MAAM,CAAiB;IACxB,KAAK,CAAC,EAAE,EAAE,OAAO;IAGxB,OAAO,CAAC,OAAO;IAOf,CAAC,MAAM,CAAC,OAAO,CAAC;IAGhB,OAAO;IAWP,OAAO,CAAC,mBAAmB;CAK3B"}
@@ -0,0 +1,137 @@
1
+ import { AppExit } from '../../autoindex.js';
2
+ /**
3
+ * 事件注册对象
4
+ * @public
5
+ */
6
+ export class Emitter {
7
+ displayName;
8
+ _callbacks = [];
9
+ executing = false;
10
+ constructor(displayName) {
11
+ this.displayName = displayName;
12
+ }
13
+ /**
14
+ * @returns 当前注册回调数量
15
+ */
16
+ listenerCount() {
17
+ return this._callbacks.length;
18
+ }
19
+ /**
20
+ * 触发本事件
21
+ * @param data 回调数据
22
+ */
23
+ fire(data) {
24
+ this.requireNotExecuting();
25
+ this.executing = true;
26
+ try {
27
+ for (const callback of this._callbacks) {
28
+ callback(data);
29
+ }
30
+ }
31
+ finally {
32
+ this.doDefer();
33
+ this.executing = false;
34
+ }
35
+ }
36
+ /**
37
+ * 与 `fire()`相同,但是忽略任何错误,并且即便出错也继续执行全部callback
38
+ */
39
+ fireNoError(data) {
40
+ this.requireNotExecuting();
41
+ this.executing = true;
42
+ for (const callback of this._callbacks) {
43
+ try {
44
+ callback(data);
45
+ }
46
+ catch (e) {
47
+ if (e instanceof AppExit) {
48
+ continue;
49
+ }
50
+ console.error('Error ignored: %s', e instanceof Error ? e.message : e);
51
+ }
52
+ }
53
+ this.doDefer();
54
+ this.executing = false;
55
+ }
56
+ get register() {
57
+ return Object.assign(this.handle.bind(this), {
58
+ once: this.once.bind(this),
59
+ });
60
+ }
61
+ /**
62
+ * AI喜欢用event()
63
+ * @alias register
64
+ */
65
+ get event() {
66
+ return this.register;
67
+ }
68
+ /**
69
+ * 注册本事件的新回调
70
+ * @param callback 回调函数
71
+ */
72
+ handle(callback) {
73
+ this.requireNotExecuting();
74
+ let disposed = false;
75
+ this._callbacks.unshift((e) => {
76
+ if (!disposed)
77
+ callback(e);
78
+ });
79
+ const realDispose = () => {
80
+ const index = this._callbacks.indexOf(callback);
81
+ if (index !== -1) {
82
+ this._callbacks.splice(index, 1);
83
+ }
84
+ };
85
+ const dispose = () => {
86
+ disposed = true;
87
+ if (this.executing) {
88
+ this.defer(realDispose);
89
+ }
90
+ else {
91
+ realDispose();
92
+ }
93
+ };
94
+ return { dispose };
95
+ }
96
+ /**
97
+ * 注册一次性回调
98
+ * @param callback 回调函数
99
+ */
100
+ once(callback) {
101
+ this.requireNotExecuting();
102
+ const disposable = this.handle((data) => {
103
+ callback(data);
104
+ disposable.dispose();
105
+ });
106
+ return disposable;
107
+ }
108
+ defers = [];
109
+ defer(fn) {
110
+ this.defers.push(fn);
111
+ }
112
+ doDefer() {
113
+ for (const fn of this.defers) {
114
+ fn();
115
+ }
116
+ this.defers.length = 0;
117
+ }
118
+ [Symbol.dispose]() {
119
+ this.dispose();
120
+ }
121
+ dispose() {
122
+ this.requireNotExecuting();
123
+ this._callbacks.length = 0;
124
+ this.fireNoError =
125
+ this.fire =
126
+ this.handle =
127
+ () => {
128
+ throw new Error('Event is disposed');
129
+ };
130
+ }
131
+ requireNotExecuting() {
132
+ if (this.executing) {
133
+ throw new Error('conflict state, emitter is firing');
134
+ }
135
+ }
136
+ }
137
+ //# sourceMappingURL=event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event.js","sourceRoot":"","sources":["../../../src/lifecycle/event/event.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { IDisposable } from '../dispose/lifecycle.js';
2
+ import { Emitter, type EventHandler } from './event.js';
3
+ /**
4
+ * 会记住上次fire的内容,并在每个新的handler注册时立即调用一次的Emitter
5
+ * 显然,这会对fire的内容保留一个引用,可以调用forget()取消
6
+ * @public
7
+ */
8
+ export declare class MemorizedEmitter<T> extends Emitter<T> {
9
+ private _memo?;
10
+ private _is_memo;
11
+ fire(data: T): void;
12
+ fireNoError(data: T): void;
13
+ handle(callback: EventHandler<T>): IDisposable;
14
+ forget(): void;
15
+ dispose(): void;
16
+ }
17
+ //# sourceMappingURL=memorized.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memorized.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/event/memorized.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAExD;;;;GAIG;AACH,qBAAa,gBAAgB,CAAC,CAAC,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IAClD,OAAO,CAAC,KAAK,CAAC,CAAI;IAClB,OAAO,CAAC,QAAQ,CAAS;IAET,IAAI,CAAC,IAAI,EAAE,CAAC;IAMZ,WAAW,CAAC,IAAI,EAAE,CAAC;IAMnB,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,WAAW;IAKvD,MAAM;IAKJ,OAAO,IAAI,IAAI;CAIxB"}
@@ -0,0 +1,34 @@
1
+ import { Emitter } from './event.js';
2
+ /**
3
+ * 会记住上次fire的内容,并在每个新的handler注册时立即调用一次的Emitter
4
+ * 显然,这会对fire的内容保留一个引用,可以调用forget()取消
5
+ * @public
6
+ */
7
+ export class MemorizedEmitter extends Emitter {
8
+ _memo;
9
+ _is_memo = false;
10
+ fire(data) {
11
+ this._memo = data;
12
+ this._is_memo = true;
13
+ return super.fire(data);
14
+ }
15
+ fireNoError(data) {
16
+ this._memo = data;
17
+ this._is_memo = true;
18
+ return super.fireNoError(data);
19
+ }
20
+ handle(callback) {
21
+ if (this._is_memo)
22
+ callback(this._memo);
23
+ return super.handle(callback);
24
+ }
25
+ forget() {
26
+ this._memo = undefined;
27
+ this._is_memo = false;
28
+ }
29
+ dispose() {
30
+ this.forget();
31
+ super.dispose();
32
+ }
33
+ }
34
+ //# sourceMappingURL=memorized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memorized.js","sourceRoot":"","sources":["../../../src/lifecycle/event/memorized.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAqB,MAAM,YAAY,CAAC;AAExD;;;;GAIG;AACH,MAAM,OAAO,gBAAoB,SAAQ,OAAU;IAC1C,KAAK,CAAK;IACV,QAAQ,GAAG,KAAK,CAAC;IAET,IAAI,CAAC,IAAO;QAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEe,WAAW,CAAC,IAAO;QAClC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAEe,MAAM,CAAC,QAAyB;QAC/C,IAAI,IAAI,CAAC,QAAQ;YAAE,QAAQ,CAAC,IAAI,CAAC,KAAM,CAAC,CAAC;QACzC,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,CAAC;IAEM,MAAM;QACZ,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACvB,CAAC;IAEQ,OAAO;QACf,IAAI,CAAC,MAAM,EAAE,CAAC;QACd,KAAK,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CACD"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Error when cancel() is called
3
+ * @public
4
+ */
5
+ export declare class CanceledError extends Error {
6
+ constructor();
7
+ }
8
+ /** @public */
9
+ export declare function isCanceledError(error: any): boolean;
10
+ //# sourceMappingURL=cancel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.d.ts","sourceRoot":"","sources":["../../../src/lifecycle/promise/cancel.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,qBAAa,aAAc,SAAQ,KAAK;;CAIvC;AAED,cAAc;AACd,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAEnD"}
@@ -0,0 +1,15 @@
1
+ const canceledName = 'Canceled';
2
+ /**
3
+ * Error when cancel() is called
4
+ * @public
5
+ */
6
+ export class CanceledError extends Error {
7
+ constructor() {
8
+ super(canceledName);
9
+ }
10
+ }
11
+ /** @public */
12
+ export function isCanceledError(error) {
13
+ return error instanceof CanceledError;
14
+ }
15
+ //# sourceMappingURL=cancel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cancel.js","sourceRoot":"","sources":["../../../src/lifecycle/promise/cancel.ts"],"names":[],"mappings":"AAAA,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC;;;GAGG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACvC;QACC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrB,CAAC;CACD;AAED,cAAc;AACd,MAAM,UAAU,eAAe,CAAC,KAAU;IACzC,OAAO,KAAK,YAAY,aAAa,CAAC;AACvC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CancellationDriver, __CancellationToken } from './source.js';
2
+ /** @internal */
3
+ export declare class CancellationDriverBrowser implements CancellationDriver {
4
+ private readonly controller;
5
+ readonly token: __CancellationToken;
6
+ private readonly disposeList;
7
+ constructor();
8
+ cancel(): void;
9
+ dispose(): void;
10
+ }
11
+ //# sourceMappingURL=driver.browser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"driver.browser.d.ts","sourceRoot":"","sources":["../../../../src/lifecycle/promise/cancellationToken/driver.browser.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAK3E,gBAAgB;AAChB,qBAAa,yBAA0B,YAAW,kBAAkB;IACnE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkB;IAC7C,SAAgB,KAAK,EAAE,mBAAmB,CAAC;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAsB;;IA4BlD,MAAM;IASN,OAAO;CAMP"}