@xylabs/promise 3.6.12 → 4.0.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 (174) hide show
  1. package/dist/neutral/index.d.ts +44 -8
  2. package/package.json +6 -13
  3. package/xy.config.ts +12 -0
  4. package/dist/browser/PromiseEx.d.cts +0 -11
  5. package/dist/browser/PromiseEx.d.cts.map +0 -1
  6. package/dist/browser/PromiseEx.d.mts +0 -11
  7. package/dist/browser/PromiseEx.d.mts.map +0 -1
  8. package/dist/browser/PromiseEx.d.ts +0 -11
  9. package/dist/browser/PromiseEx.d.ts.map +0 -1
  10. package/dist/browser/Typed.d.cts +0 -12
  11. package/dist/browser/Typed.d.cts.map +0 -1
  12. package/dist/browser/Typed.d.mts +0 -12
  13. package/dist/browser/Typed.d.mts.map +0 -1
  14. package/dist/browser/Typed.d.ts +0 -12
  15. package/dist/browser/Typed.d.ts.map +0 -1
  16. package/dist/browser/fulfilled.d.cts +0 -2
  17. package/dist/browser/fulfilled.d.cts.map +0 -1
  18. package/dist/browser/fulfilled.d.mts +0 -2
  19. package/dist/browser/fulfilled.d.mts.map +0 -1
  20. package/dist/browser/fulfilled.d.ts +0 -2
  21. package/dist/browser/fulfilled.d.ts.map +0 -1
  22. package/dist/browser/fulfilledValues.d.cts +0 -2
  23. package/dist/browser/fulfilledValues.d.cts.map +0 -1
  24. package/dist/browser/fulfilledValues.d.mts +0 -2
  25. package/dist/browser/fulfilledValues.d.mts.map +0 -1
  26. package/dist/browser/fulfilledValues.d.ts +0 -2
  27. package/dist/browser/fulfilledValues.d.ts.map +0 -1
  28. package/dist/browser/index.cjs +0 -144
  29. package/dist/browser/index.cjs.map +0 -1
  30. package/dist/browser/index.d.cts +0 -8
  31. package/dist/browser/index.d.cts.map +0 -1
  32. package/dist/browser/index.d.mts +0 -8
  33. package/dist/browser/index.d.mts.map +0 -1
  34. package/dist/browser/index.d.ts +0 -8
  35. package/dist/browser/index.d.ts.map +0 -1
  36. package/dist/browser/index.mjs +0 -121
  37. package/dist/browser/index.mjs.map +0 -1
  38. package/dist/browser/isPromise.d.cts +0 -7
  39. package/dist/browser/isPromise.d.cts.map +0 -1
  40. package/dist/browser/isPromise.d.mts +0 -7
  41. package/dist/browser/isPromise.d.mts.map +0 -1
  42. package/dist/browser/isPromise.d.ts +0 -7
  43. package/dist/browser/isPromise.d.ts.map +0 -1
  44. package/dist/browser/isType.d.cts +0 -4
  45. package/dist/browser/isType.d.cts.map +0 -1
  46. package/dist/browser/isType.d.mts +0 -4
  47. package/dist/browser/isType.d.mts.map +0 -1
  48. package/dist/browser/isType.d.ts +0 -4
  49. package/dist/browser/isType.d.ts.map +0 -1
  50. package/dist/browser/rejected.d.cts +0 -2
  51. package/dist/browser/rejected.d.cts.map +0 -1
  52. package/dist/browser/rejected.d.mts +0 -2
  53. package/dist/browser/rejected.d.mts.map +0 -1
  54. package/dist/browser/rejected.d.ts +0 -2
  55. package/dist/browser/rejected.d.ts.map +0 -1
  56. package/dist/browser/types.d.cts +0 -9
  57. package/dist/browser/types.d.cts.map +0 -1
  58. package/dist/browser/types.d.mts +0 -9
  59. package/dist/browser/types.d.mts.map +0 -1
  60. package/dist/browser/types.d.ts +0 -9
  61. package/dist/browser/types.d.ts.map +0 -1
  62. package/dist/neutral/PromiseEx.d.cts +0 -11
  63. package/dist/neutral/PromiseEx.d.cts.map +0 -1
  64. package/dist/neutral/PromiseEx.d.mts +0 -11
  65. package/dist/neutral/PromiseEx.d.mts.map +0 -1
  66. package/dist/neutral/PromiseEx.d.ts +0 -11
  67. package/dist/neutral/PromiseEx.d.ts.map +0 -1
  68. package/dist/neutral/Typed.d.cts +0 -12
  69. package/dist/neutral/Typed.d.cts.map +0 -1
  70. package/dist/neutral/Typed.d.mts +0 -12
  71. package/dist/neutral/Typed.d.mts.map +0 -1
  72. package/dist/neutral/Typed.d.ts +0 -12
  73. package/dist/neutral/Typed.d.ts.map +0 -1
  74. package/dist/neutral/fulfilled.d.cts +0 -2
  75. package/dist/neutral/fulfilled.d.cts.map +0 -1
  76. package/dist/neutral/fulfilled.d.mts +0 -2
  77. package/dist/neutral/fulfilled.d.mts.map +0 -1
  78. package/dist/neutral/fulfilled.d.ts +0 -2
  79. package/dist/neutral/fulfilled.d.ts.map +0 -1
  80. package/dist/neutral/fulfilledValues.d.cts +0 -2
  81. package/dist/neutral/fulfilledValues.d.cts.map +0 -1
  82. package/dist/neutral/fulfilledValues.d.mts +0 -2
  83. package/dist/neutral/fulfilledValues.d.mts.map +0 -1
  84. package/dist/neutral/fulfilledValues.d.ts +0 -2
  85. package/dist/neutral/fulfilledValues.d.ts.map +0 -1
  86. package/dist/neutral/index.cjs +0 -144
  87. package/dist/neutral/index.cjs.map +0 -1
  88. package/dist/neutral/index.d.cts +0 -8
  89. package/dist/neutral/index.d.cts.map +0 -1
  90. package/dist/neutral/index.d.mts +0 -8
  91. package/dist/neutral/index.d.mts.map +0 -1
  92. package/dist/neutral/index.d.ts.map +0 -1
  93. package/dist/neutral/isPromise.d.cts +0 -7
  94. package/dist/neutral/isPromise.d.cts.map +0 -1
  95. package/dist/neutral/isPromise.d.mts +0 -7
  96. package/dist/neutral/isPromise.d.mts.map +0 -1
  97. package/dist/neutral/isPromise.d.ts +0 -7
  98. package/dist/neutral/isPromise.d.ts.map +0 -1
  99. package/dist/neutral/isType.d.cts +0 -4
  100. package/dist/neutral/isType.d.cts.map +0 -1
  101. package/dist/neutral/isType.d.mts +0 -4
  102. package/dist/neutral/isType.d.mts.map +0 -1
  103. package/dist/neutral/isType.d.ts +0 -4
  104. package/dist/neutral/isType.d.ts.map +0 -1
  105. package/dist/neutral/rejected.d.cts +0 -2
  106. package/dist/neutral/rejected.d.cts.map +0 -1
  107. package/dist/neutral/rejected.d.mts +0 -2
  108. package/dist/neutral/rejected.d.mts.map +0 -1
  109. package/dist/neutral/rejected.d.ts +0 -2
  110. package/dist/neutral/rejected.d.ts.map +0 -1
  111. package/dist/neutral/types.d.cts +0 -9
  112. package/dist/neutral/types.d.cts.map +0 -1
  113. package/dist/neutral/types.d.mts +0 -9
  114. package/dist/neutral/types.d.mts.map +0 -1
  115. package/dist/neutral/types.d.ts +0 -9
  116. package/dist/neutral/types.d.ts.map +0 -1
  117. package/dist/node/PromiseEx.d.cts +0 -11
  118. package/dist/node/PromiseEx.d.cts.map +0 -1
  119. package/dist/node/PromiseEx.d.mts +0 -11
  120. package/dist/node/PromiseEx.d.mts.map +0 -1
  121. package/dist/node/PromiseEx.d.ts +0 -11
  122. package/dist/node/PromiseEx.d.ts.map +0 -1
  123. package/dist/node/Typed.d.cts +0 -12
  124. package/dist/node/Typed.d.cts.map +0 -1
  125. package/dist/node/Typed.d.mts +0 -12
  126. package/dist/node/Typed.d.mts.map +0 -1
  127. package/dist/node/Typed.d.ts +0 -12
  128. package/dist/node/Typed.d.ts.map +0 -1
  129. package/dist/node/fulfilled.d.cts +0 -2
  130. package/dist/node/fulfilled.d.cts.map +0 -1
  131. package/dist/node/fulfilled.d.mts +0 -2
  132. package/dist/node/fulfilled.d.mts.map +0 -1
  133. package/dist/node/fulfilled.d.ts +0 -2
  134. package/dist/node/fulfilled.d.ts.map +0 -1
  135. package/dist/node/fulfilledValues.d.cts +0 -2
  136. package/dist/node/fulfilledValues.d.cts.map +0 -1
  137. package/dist/node/fulfilledValues.d.mts +0 -2
  138. package/dist/node/fulfilledValues.d.mts.map +0 -1
  139. package/dist/node/fulfilledValues.d.ts +0 -2
  140. package/dist/node/fulfilledValues.d.ts.map +0 -1
  141. package/dist/node/index.cjs +0 -157
  142. package/dist/node/index.cjs.map +0 -1
  143. package/dist/node/index.d.cts +0 -8
  144. package/dist/node/index.d.cts.map +0 -1
  145. package/dist/node/index.d.mts +0 -8
  146. package/dist/node/index.d.mts.map +0 -1
  147. package/dist/node/index.d.ts +0 -8
  148. package/dist/node/index.d.ts.map +0 -1
  149. package/dist/node/index.mjs +0 -121
  150. package/dist/node/index.mjs.map +0 -1
  151. package/dist/node/isPromise.d.cts +0 -7
  152. package/dist/node/isPromise.d.cts.map +0 -1
  153. package/dist/node/isPromise.d.mts +0 -7
  154. package/dist/node/isPromise.d.mts.map +0 -1
  155. package/dist/node/isPromise.d.ts +0 -7
  156. package/dist/node/isPromise.d.ts.map +0 -1
  157. package/dist/node/isType.d.cts +0 -4
  158. package/dist/node/isType.d.cts.map +0 -1
  159. package/dist/node/isType.d.mts +0 -4
  160. package/dist/node/isType.d.mts.map +0 -1
  161. package/dist/node/isType.d.ts +0 -4
  162. package/dist/node/isType.d.ts.map +0 -1
  163. package/dist/node/rejected.d.cts +0 -2
  164. package/dist/node/rejected.d.cts.map +0 -1
  165. package/dist/node/rejected.d.mts +0 -2
  166. package/dist/node/rejected.d.mts.map +0 -1
  167. package/dist/node/rejected.d.ts +0 -2
  168. package/dist/node/rejected.d.ts.map +0 -1
  169. package/dist/node/types.d.cts +0 -9
  170. package/dist/node/types.d.cts.map +0 -1
  171. package/dist/node/types.d.mts +0 -9
  172. package/dist/node/types.d.mts.map +0 -1
  173. package/dist/node/types.d.ts +0 -9
  174. package/dist/node/types.d.ts.map +0 -1
@@ -1,8 +1,44 @@
1
- export { fulfilled } from './fulfilled.ts';
2
- export { fulfilledValues } from './fulfilledValues.ts';
3
- export * from './isPromise.ts';
4
- export * from './PromiseEx.ts';
5
- export { rejected } from './rejected.ts';
6
- export * from './Typed.ts';
7
- export * from './types.ts';
8
- //# sourceMappingURL=index.d.ts.map
1
+ declare const fulfilled: <T>(val: PromiseSettledResult<T>) => val is PromiseFulfilledResult<T>;
2
+
3
+ declare const fulfilledValues: <T>(previousValue: T[], currentValue: PromiseSettledResult<T>) => T[];
4
+
5
+ type TypedValue = bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined;
6
+ type TypedKey<T extends string | void = void> = T extends string ? T : string | number | symbol;
7
+ type TypedObject = {
8
+ [key: TypedKey]: TypedValue;
9
+ } | object;
10
+ type TypedArray = TypedValue[];
11
+ declare const isTypedKey: (value: unknown) => value is TypedKey;
12
+ declare const isTypedValue: (value: unknown) => value is TypedValue;
13
+ declare const isTypedArray: (value: unknown) => value is TypedArray;
14
+ declare const isValidTypedFieldPair: (pair: [key: unknown, value: unknown]) => pair is [key: TypedKey, value: TypedValue];
15
+ declare const isTypedObject: (value: unknown) => value is TypedObject;
16
+
17
+ interface PromiseType {
18
+ then: () => unknown;
19
+ }
20
+ type AnyNonPromise = Exclude<TypedValue, Promise<unknown>>;
21
+ declare const isPromise: (value: unknown) => value is Promise<unknown>;
22
+
23
+ type PromiseExSubFunc<T, TResult = T> = (value: T) => TResult;
24
+ type PromiseExFunc<T> = (resolve?: PromiseExSubFunc<T, void>, reject?: PromiseExSubFunc<T, void>) => void;
25
+ type PromiseExValueFunc<V> = (value?: V) => boolean;
26
+ declare class PromiseEx<T, V = void> extends Promise<T> {
27
+ cancelled?: boolean;
28
+ private _value?;
29
+ constructor(func: PromiseExFunc<T>, value?: V);
30
+ then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined, onvalue?: (value?: V) => boolean): Promise<TResult1 | TResult2>;
31
+ value(onvalue?: (value?: V) => boolean): this;
32
+ }
33
+
34
+ declare const rejected: <T>(val: PromiseSettledResult<T>) => val is PromiseRejectedResult;
35
+
36
+ type Promisable<T, V = never> = PromiseEx<T, V> | Promise<T> | T;
37
+ type PromisableArray<T, V = never> = Promisable<T[], V>;
38
+ type OptionalPromisable<T, V = never> = Promisable<T | undefined, V>;
39
+ type OptionalPromisableArray<T, V = never> = PromisableArray<T | undefined, V>;
40
+ type NullablePromisable<T, V = never> = Promisable<T | null, V>;
41
+ type NullablePromisableArray<T, V = never> = PromisableArray<T | null, V>;
42
+ type AsyncMutex<T> = Promise<T>;
43
+
44
+ export { type AnyNonPromise, type AsyncMutex, type NullablePromisable, type NullablePromisableArray, type OptionalPromisable, type OptionalPromisableArray, type Promisable, type PromisableArray, PromiseEx, type PromiseExFunc, type PromiseExSubFunc, type PromiseExValueFunc, type PromiseType, type TypedArray, type TypedKey, type TypedObject, type TypedValue, fulfilled, fulfilledValues, isPromise, isTypedArray, isTypedKey, isTypedObject, isTypedValue, isValidTypedFieldPair, rejected };
package/package.json CHANGED
@@ -13,18 +13,11 @@
13
13
  "description": "Base functionality used throughout XY Labs TypeScript/JavaScript libraries",
14
14
  "exports": {
15
15
  ".": {
16
- "require": {
17
- "types": "./dist/neutral/index.d.cts",
18
- "default": "./dist/neutral/index.cjs"
19
- },
20
- "import": {
21
- "types": "./dist/neutral/index.d.ts",
22
- "default": "./dist/neutral/index.mjs"
23
- }
16
+ "types": "./dist/neutral/index.d.ts",
17
+ "default": "./dist/neutral/index.mjs"
24
18
  },
25
19
  "./package.json": "./package.json"
26
20
  },
27
- "main": "./dist/neutral/index.cjs",
28
21
  "types": "./dist/neutral/index.d.ts",
29
22
  "module": "./dist/neutral/index.mjs",
30
23
  "homepage": "https://xylabs.com",
@@ -36,9 +29,9 @@
36
29
  "esm"
37
30
  ],
38
31
  "devDependencies": {
39
- "@xylabs/ts-scripts-yarn3": "^3.15.14",
40
- "@xylabs/tsconfig": "^3.15.14",
41
- "@xylabs/tsconfig-jest": "^3.15.14",
32
+ "@xylabs/ts-scripts-yarn3": "^4.0.0-rc.15",
33
+ "@xylabs/tsconfig": "^4.0.0-rc.15",
34
+ "@xylabs/tsconfig-jest": "^4.0.0-rc.15",
42
35
  "typescript": "^5.5.4"
43
36
  },
44
37
  "engines": {
@@ -52,6 +45,6 @@
52
45
  "url": "https://github.com/xylabs/sdk-js.git"
53
46
  },
54
47
  "sideEffects": false,
55
- "version": "3.6.12",
48
+ "version": "4.0.0",
56
49
  "type": "module"
57
50
  }
package/xy.config.ts ADDED
@@ -0,0 +1,12 @@
1
+ import { XyTsupConfig } from '@xylabs/ts-scripts-yarn3'
2
+ const config: XyTsupConfig = {
3
+ compile: {
4
+ browser: {},
5
+ neutral: {
6
+ src: true,
7
+ },
8
+ node: {},
9
+ },
10
+ }
11
+
12
+ export default config
@@ -1,11 +0,0 @@
1
- export type PromiseExSubFunc<T, TResult = T> = (value: T) => TResult;
2
- export type PromiseExFunc<T> = (resolve?: PromiseExSubFunc<T, void>, reject?: PromiseExSubFunc<T, void>) => void;
3
- export type PromiseExValueFunc<V> = (value?: V) => boolean;
4
- export declare class PromiseEx<T, V = void> extends Promise<T> {
5
- cancelled?: boolean;
6
- private _value?;
7
- constructor(func: PromiseExFunc<T>, value?: V);
8
- then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined, onvalue?: (value?: V) => boolean): Promise<TResult1 | TResult2>;
9
- value(onvalue?: (value?: V) => boolean): this;
10
- }
11
- //# sourceMappingURL=PromiseEx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromiseEx.d.ts","sourceRoot":"","sources":["../../src/PromiseEx.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAA;AACpE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;AAChH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,CAAA;AAE1D,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,MAAM,CAAC,CAAG;gBAEN,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAMpC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACjF,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACvF,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,GAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAO/B,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO;CAMvC"}
@@ -1,11 +0,0 @@
1
- export type PromiseExSubFunc<T, TResult = T> = (value: T) => TResult;
2
- export type PromiseExFunc<T> = (resolve?: PromiseExSubFunc<T, void>, reject?: PromiseExSubFunc<T, void>) => void;
3
- export type PromiseExValueFunc<V> = (value?: V) => boolean;
4
- export declare class PromiseEx<T, V = void> extends Promise<T> {
5
- cancelled?: boolean;
6
- private _value?;
7
- constructor(func: PromiseExFunc<T>, value?: V);
8
- then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined, onvalue?: (value?: V) => boolean): Promise<TResult1 | TResult2>;
9
- value(onvalue?: (value?: V) => boolean): this;
10
- }
11
- //# sourceMappingURL=PromiseEx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromiseEx.d.ts","sourceRoot":"","sources":["../../src/PromiseEx.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAA;AACpE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;AAChH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,CAAA;AAE1D,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,MAAM,CAAC,CAAG;gBAEN,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAMpC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACjF,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACvF,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,GAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAO/B,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO;CAMvC"}
@@ -1,11 +0,0 @@
1
- export type PromiseExSubFunc<T, TResult = T> = (value: T) => TResult;
2
- export type PromiseExFunc<T> = (resolve?: PromiseExSubFunc<T, void>, reject?: PromiseExSubFunc<T, void>) => void;
3
- export type PromiseExValueFunc<V> = (value?: V) => boolean;
4
- export declare class PromiseEx<T, V = void> extends Promise<T> {
5
- cancelled?: boolean;
6
- private _value?;
7
- constructor(func: PromiseExFunc<T>, value?: V);
8
- then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined, onvalue?: (value?: V) => boolean): Promise<TResult1 | TResult2>;
9
- value(onvalue?: (value?: V) => boolean): this;
10
- }
11
- //# sourceMappingURL=PromiseEx.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PromiseEx.d.ts","sourceRoot":"","sources":["../../src/PromiseEx.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gBAAgB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAA;AACpE,MAAM,MAAM,aAAa,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,IAAI,CAAA;AAChH,MAAM,MAAM,kBAAkB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,CAAA;AAE1D,qBAAa,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAE,SAAQ,OAAO,CAAC,CAAC,CAAC;IACpD,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,OAAO,CAAC,MAAM,CAAC,CAAG;gBAEN,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;IAMpC,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,KAAK,EAC1C,WAAW,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACjF,UAAU,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,OAAO,KAAK,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,EACvF,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO,GAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAO/B,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,OAAO;CAMvC"}
@@ -1,12 +0,0 @@
1
- export type TypedValue = bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined;
2
- export type TypedKey<T extends string | void = void> = T extends string ? T : string | number | symbol;
3
- export type TypedObject = {
4
- [key: TypedKey]: TypedValue;
5
- } | object;
6
- export type TypedArray = TypedValue[];
7
- export declare const isTypedKey: (value: unknown) => value is TypedKey;
8
- export declare const isTypedValue: (value: unknown) => value is TypedValue;
9
- export declare const isTypedArray: (value: unknown) => value is TypedArray;
10
- export declare const isValidTypedFieldPair: (pair: [key: unknown, value: unknown]) => pair is [key: TypedKey, value: TypedValue];
11
- export declare const isTypedObject: (value: unknown) => value is TypedObject;
12
- //# sourceMappingURL=Typed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Typed.d.ts","sourceRoot":"","sources":["../../src/Typed.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAC7H,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AACtG,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,GAAG,MAAM,CAAA;AAClE,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAErC,eAAO,MAAM,UAAU,UAAW,OAAO,KAAG,KAAK,IAAI,QAYpD,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAWtD,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAEtD,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAG,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAGrH,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,WAMvD,CAAA"}
@@ -1,12 +0,0 @@
1
- export type TypedValue = bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined;
2
- export type TypedKey<T extends string | void = void> = T extends string ? T : string | number | symbol;
3
- export type TypedObject = {
4
- [key: TypedKey]: TypedValue;
5
- } | object;
6
- export type TypedArray = TypedValue[];
7
- export declare const isTypedKey: (value: unknown) => value is TypedKey;
8
- export declare const isTypedValue: (value: unknown) => value is TypedValue;
9
- export declare const isTypedArray: (value: unknown) => value is TypedArray;
10
- export declare const isValidTypedFieldPair: (pair: [key: unknown, value: unknown]) => pair is [key: TypedKey, value: TypedValue];
11
- export declare const isTypedObject: (value: unknown) => value is TypedObject;
12
- //# sourceMappingURL=Typed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Typed.d.ts","sourceRoot":"","sources":["../../src/Typed.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAC7H,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AACtG,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,GAAG,MAAM,CAAA;AAClE,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAErC,eAAO,MAAM,UAAU,UAAW,OAAO,KAAG,KAAK,IAAI,QAYpD,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAWtD,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAEtD,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAG,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAGrH,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,WAMvD,CAAA"}
@@ -1,12 +0,0 @@
1
- export type TypedValue = bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined;
2
- export type TypedKey<T extends string | void = void> = T extends string ? T : string | number | symbol;
3
- export type TypedObject = {
4
- [key: TypedKey]: TypedValue;
5
- } | object;
6
- export type TypedArray = TypedValue[];
7
- export declare const isTypedKey: (value: unknown) => value is TypedKey;
8
- export declare const isTypedValue: (value: unknown) => value is TypedValue;
9
- export declare const isTypedArray: (value: unknown) => value is TypedArray;
10
- export declare const isValidTypedFieldPair: (pair: [key: unknown, value: unknown]) => pair is [key: TypedKey, value: TypedValue];
11
- export declare const isTypedObject: (value: unknown) => value is TypedObject;
12
- //# sourceMappingURL=Typed.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Typed.d.ts","sourceRoot":"","sources":["../../src/Typed.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;AAC7H,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAA;AACtG,MAAM,MAAM,WAAW,GAAG;IAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,GAAG,MAAM,CAAA;AAClE,MAAM,MAAM,UAAU,GAAG,UAAU,EAAE,CAAA;AAErC,eAAO,MAAM,UAAU,UAAW,OAAO,KAAG,KAAK,IAAI,QAYpD,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAWtD,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,OAAO,KAAG,KAAK,IAAI,UAEtD,CAAA;AAED,eAAO,MAAM,qBAAqB,SAAU,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAG,IAAI,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,CAGrH,CAAA;AAED,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,KAAK,IAAI,WAMvD,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const fulfilled: <T>(val: PromiseSettledResult<T>) => val is PromiseFulfilledResult<T>;
2
- //# sourceMappingURL=fulfilled.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fulfilled.d.ts","sourceRoot":"","sources":["../../src/fulfilled.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,GAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAG,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAE1F,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const fulfilled: <T>(val: PromiseSettledResult<T>) => val is PromiseFulfilledResult<T>;
2
- //# sourceMappingURL=fulfilled.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fulfilled.d.ts","sourceRoot":"","sources":["../../src/fulfilled.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,GAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAG,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAE1F,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const fulfilled: <T>(val: PromiseSettledResult<T>) => val is PromiseFulfilledResult<T>;
2
- //# sourceMappingURL=fulfilled.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fulfilled.d.ts","sourceRoot":"","sources":["../../src/fulfilled.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,SAAS,GAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAG,GAAG,IAAI,sBAAsB,CAAC,CAAC,CAE1F,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const fulfilledValues: <T>(previousValue: T[], currentValue: PromiseSettledResult<T>) => T[];
2
- //# sourceMappingURL=fulfilledValues.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fulfilledValues.d.ts","sourceRoot":"","sources":["../../src/fulfilledValues.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,GAAI,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,KAAG,CAAC,EAG/F,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const fulfilledValues: <T>(previousValue: T[], currentValue: PromiseSettledResult<T>) => T[];
2
- //# sourceMappingURL=fulfilledValues.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fulfilledValues.d.ts","sourceRoot":"","sources":["../../src/fulfilledValues.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,GAAI,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,KAAG,CAAC,EAG/F,CAAA"}
@@ -1,2 +0,0 @@
1
- export declare const fulfilledValues: <T>(previousValue: T[], currentValue: PromiseSettledResult<T>) => T[];
2
- //# sourceMappingURL=fulfilledValues.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fulfilledValues.d.ts","sourceRoot":"","sources":["../../src/fulfilledValues.ts"],"names":[],"mappings":"AAkBA,eAAO,MAAM,eAAe,GAAI,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,oBAAoB,CAAC,CAAC,CAAC,KAAG,CAAC,EAG/F,CAAA"}
@@ -1,144 +0,0 @@
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: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
-
20
- // src/index.ts
21
- var src_exports = {};
22
- __export(src_exports, {
23
- PromiseEx: () => PromiseEx,
24
- fulfilled: () => fulfilled,
25
- fulfilledValues: () => fulfilledValues,
26
- isPromise: () => isPromise,
27
- isTypedArray: () => isTypedArray,
28
- isTypedKey: () => isTypedKey,
29
- isTypedObject: () => isTypedObject,
30
- isTypedValue: () => isTypedValue,
31
- isValidTypedFieldPair: () => isValidTypedFieldPair,
32
- rejected: () => rejected
33
- });
34
- module.exports = __toCommonJS(src_exports);
35
-
36
- // src/fulfilled.ts
37
- var fulfilled = (val) => {
38
- return val.status === "fulfilled";
39
- };
40
-
41
- // src/fulfilledValues.ts
42
- var fulfilledValues = (previousValue, currentValue) => {
43
- if (currentValue.status === "fulfilled") previousValue.push(currentValue.value);
44
- return previousValue;
45
- };
46
-
47
- // src/isPromise.ts
48
- var isPromise = (value) => {
49
- if (typeof value === "object" && !Array.isArray(value)) {
50
- return typeof value.then === "function";
51
- }
52
- return false;
53
- };
54
-
55
- // src/PromiseEx.ts
56
- var PromiseEx = class extends Promise {
57
- cancelled;
58
- _value;
59
- constructor(func, value) {
60
- super(func);
61
- this._value = value;
62
- }
63
- // eslint-disable-next-line unicorn/no-thenable
64
- then(onfulfilled, onrejected, onvalue) {
65
- if (onvalue?.(this._value)) {
66
- this.cancelled = true;
67
- }
68
- return super.then(onfulfilled, onrejected);
69
- }
70
- value(onvalue) {
71
- if (onvalue?.(this._value)) {
72
- this.cancelled = true;
73
- }
74
- return this;
75
- }
76
- };
77
-
78
- // src/rejected.ts
79
- var rejected = (val) => {
80
- return val.status === "rejected";
81
- };
82
-
83
- // src/isType.ts
84
- var isType = (value, expectedType) => {
85
- const typeofValue = typeof value;
86
- switch (expectedType) {
87
- case "array": {
88
- return Array.isArray(value);
89
- }
90
- case "null": {
91
- return value === null;
92
- }
93
- case "undefined": {
94
- return value === void 0;
95
- }
96
- case "object": {
97
- if (value === null) {
98
- return false;
99
- }
100
- return typeofValue === "object" && !Array.isArray(value);
101
- }
102
- default: {
103
- return typeofValue === expectedType;
104
- }
105
- }
106
- };
107
-
108
- // src/Typed.ts
109
- var isTypedKey = (value) => {
110
- switch (typeof value) {
111
- case "string":
112
- case "bigint":
113
- case "number":
114
- case "symbol": {
115
- return true;
116
- }
117
- default: {
118
- return false;
119
- }
120
- }
121
- };
122
- var isTypedValue = (value) => {
123
- switch (typeof value) {
124
- case "string":
125
- case "number":
126
- case "boolean": {
127
- return true;
128
- }
129
- default: {
130
- return value === null || isTypedObject(value) || isTypedArray(value);
131
- }
132
- }
133
- };
134
- var isTypedArray = (value) => {
135
- return Array.isArray(value) && !value.some((item) => !isTypedValue(item));
136
- };
137
- var isValidTypedFieldPair = (pair) => {
138
- const [key, value] = pair;
139
- return isTypedKey(key) && isTypedValue(value);
140
- };
141
- var isTypedObject = (value) => {
142
- return isType(value, "object") && !Object.entries(value).some((item) => !isValidTypedFieldPair(item));
143
- };
144
- //# sourceMappingURL=index.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/fulfilled.ts","../../src/fulfilledValues.ts","../../src/isPromise.ts","../../src/PromiseEx.ts","../../src/rejected.ts","../../src/isType.ts","../../src/Typed.ts"],"sourcesContent":["export { fulfilled } from './fulfilled.ts'\nexport { fulfilledValues } from './fulfilledValues.ts'\nexport * from './isPromise.ts'\nexport * from './PromiseEx.ts'\nexport { rejected } from './rejected.ts'\nexport * from './Typed.ts'\nexport * from './types.ts'\n","/**\n * For use with Promise.allSettled to filter only successful results\n * @param val\n * @returns\n */\nexport const fulfilled = <T>(val: PromiseSettledResult<T>): val is PromiseFulfilledResult<T> => {\n return val.status === 'fulfilled'\n}\n","/**\n * For use with Promise.allSettled to reduce to only successful result values\n * @example <caption>Casting the initialValue provided to reduce</caption>\n * const resolved = Promise.resolve('resolved')\n * const rejected = Promise.reject('rejected')\n * const settled = await Promise.allSettled([resolved, rejected])\n * const results = settled.reduce(fulfilledValues, [] as string[])\n * // results === [ 'resolved' ]\n * @example <caption>Providing type parameter to reduce and initialValue type can be inferred</caption>\n * const resolved = Promise.resolve('resolved')\n * const rejected = Promise.reject('rejected')\n * const settled = await Promise.allSettled([resolved, rejected])\n * const results = settled.reduce<string[]>(fulfilledValues, [])\n * // results === [ 'resolved' ]\n * @param previousValue\n * @param currentValue\n * @returns\n */\nexport const fulfilledValues = <T>(previousValue: T[], currentValue: PromiseSettledResult<T>): T[] => {\n if (currentValue.status === 'fulfilled') previousValue.push(currentValue.value)\n return previousValue\n}\n","import { TypedValue } from './Typed.ts'\n\nexport interface PromiseType {\n then: () => unknown\n}\n\nexport type AnyNonPromise = Exclude<TypedValue, Promise<unknown>>\n\nexport const isPromise = (value: unknown): value is Promise<unknown> => {\n if (typeof value === 'object' && !Array.isArray(value)) {\n return typeof (value as PromiseType).then === 'function'\n }\n return false\n}\n\n// type test\n/*\nconst x = Promise.resolve()\n\nconst f = (x: AnyNonPromise) => {\n return x\n}\n\nf(x)\n*/\n","export type PromiseExSubFunc<T, TResult = T> = (value: T) => TResult\nexport type PromiseExFunc<T> = (resolve?: PromiseExSubFunc<T, void>, reject?: PromiseExSubFunc<T, void>) => void\nexport type PromiseExValueFunc<V> = (value?: V) => boolean\n\nexport class PromiseEx<T, V = void> extends Promise<T> {\n cancelled?: boolean\n private _value?: V\n\n constructor(func: PromiseExFunc<T>, value?: V) {\n super(func)\n this._value = value\n }\n\n // eslint-disable-next-line unicorn/no-thenable\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined,\n onvalue?: (value?: V) => boolean,\n ): Promise<TResult1 | TResult2> {\n if (onvalue?.(this._value)) {\n this.cancelled = true\n }\n return super.then(onfulfilled, onrejected)\n }\n\n value(onvalue?: (value?: V) => boolean) {\n if (onvalue?.(this._value)) {\n this.cancelled = true\n }\n return this\n }\n}\n","/**\n * For use with Promise.allSettled to filter only rejected results\n * @param val\n * @returns\n */\nexport const rejected = <T>(val: PromiseSettledResult<T>): val is PromiseRejectedResult => {\n return val.status === 'rejected'\n}\n","export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n // nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n // arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { isType } from './isType.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport type TypedValue = bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined\nexport type TypedKey<T extends string | void = void> = T extends string ? T : string | number | symbol\nexport type TypedObject = { [key: TypedKey]: TypedValue } | object\nexport type TypedArray = TypedValue[]\n\nexport const isTypedKey = (value: unknown): value is TypedKey => {\n switch (typeof value) {\n case 'string':\n case 'bigint':\n case 'number':\n case 'symbol': {\n return true\n }\n default: {\n return false\n }\n }\n}\n\nexport const isTypedValue = (value: unknown): value is TypedValue => {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean': {\n return true\n }\n default: {\n return value === null || isTypedObject(value) || isTypedArray(value)\n }\n }\n}\n\nexport const isTypedArray = (value: unknown): value is TypedArray => {\n return Array.isArray(value) && !value.some(item => !isTypedValue(item))\n}\n\nexport const isValidTypedFieldPair = (pair: [key: unknown, value: unknown]): pair is [key: TypedKey, value: TypedValue] => {\n const [key, value] = pair\n return isTypedKey(key) && isTypedValue(value)\n}\n\nexport const isTypedObject = (value: unknown): value is TypedObject => {\n return (\n isType(value, 'object')\n // check if all keys are strings\n && !Object.entries(value as object).some(item => !isValidTypedFieldPair(item))\n )\n}\n\n// Object Type Test\n/*\ninterface TestObject {\n value: number\n}\n\nconst x: TestObject = { value: 1 }\n\nconst f = (p: TypedValue): void => {\n console.log(p)\n}\n\nf(x)\n*/\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,YAAY,CAAI,QAAmE;AAC9F,SAAO,IAAI,WAAW;AACxB;;;ACWO,IAAM,kBAAkB,CAAI,eAAoB,iBAA+C;AACpG,MAAI,aAAa,WAAW,YAAa,eAAc,KAAK,aAAa,KAAK;AAC9E,SAAO;AACT;;;ACbO,IAAM,YAAY,CAAC,UAA8C;AACtE,MAAI,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;AACtD,WAAO,OAAQ,MAAsB,SAAS;AAAA,EAChD;AACA,SAAO;AACT;;;ACTO,IAAM,YAAN,cAAqC,QAAW;AAAA,EACrD;AAAA,EACQ;AAAA,EAER,YAAY,MAAwB,OAAW;AAC7C,UAAM,IAAI;AACV,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGS,KACP,aACA,YACA,SAC8B;AAC9B,QAAI,UAAU,KAAK,MAAM,GAAG;AAC1B,WAAK,YAAY;AAAA,IACnB;AACA,WAAO,MAAM,KAAK,aAAa,UAAU;AAAA,EAC3C;AAAA,EAEA,MAAM,SAAkC;AACtC,QAAI,UAAU,KAAK,MAAM,GAAG;AAC1B,WAAK,YAAY;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AACF;;;AC1BO,IAAM,WAAW,CAAI,QAA+D;AACzF,SAAO,IAAI,WAAW;AACxB;;;ACHO,IAAM,SAAS,CAAC,OAAgB,iBAA4B;AACjE,QAAM,cAAc,OAAO;AAC3B,UAAQ,cAAc;AAAA,IACpB,KAAK,SAAS;AACZ,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B;AAAA,IACA,KAAK,QAAQ;AACX,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,KAAK,aAAa;AAChB,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,KAAK,UAAU;AAEb,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,aAAO,gBAAgB,YAAY,CAAC,MAAM,QAAQ,KAAK;AAAA,IACzD;AAAA,IACA,SAAS;AACP,aAAO,gBAAgB;AAAA,IACzB;AAAA,EACF;AACF;;;ACpBO,IAAM,aAAa,CAAC,UAAsC;AAC/D,UAAQ,OAAO,OAAO;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,UAAU;AACb,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,eAAe,CAAC,UAAwC;AACnE,UAAQ,OAAO,OAAO;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,WAAW;AACd,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,aAAO,UAAU,QAAQ,cAAc,KAAK,KAAK,aAAa,KAAK;AAAA,IACrE;AAAA,EACF;AACF;AAEO,IAAM,eAAe,CAAC,UAAwC;AACnE,SAAO,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,KAAK,UAAQ,CAAC,aAAa,IAAI,CAAC;AACxE;AAEO,IAAM,wBAAwB,CAAC,SAAqF;AACzH,QAAM,CAAC,KAAK,KAAK,IAAI;AACrB,SAAO,WAAW,GAAG,KAAK,aAAa,KAAK;AAC9C;AAEO,IAAM,gBAAgB,CAAC,UAAyC;AACrE,SACE,OAAO,OAAO,QAAQ,KAEnB,CAAC,OAAO,QAAQ,KAAe,EAAE,KAAK,UAAQ,CAAC,sBAAsB,IAAI,CAAC;AAEjF;","names":[]}
@@ -1,8 +0,0 @@
1
- export { fulfilled } from './fulfilled.ts';
2
- export { fulfilledValues } from './fulfilledValues.ts';
3
- export * from './isPromise.ts';
4
- export * from './PromiseEx.ts';
5
- export { rejected } from './rejected.ts';
6
- export * from './Typed.ts';
7
- export * from './types.ts';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -1,8 +0,0 @@
1
- export { fulfilled } from './fulfilled.ts';
2
- export { fulfilledValues } from './fulfilledValues.ts';
3
- export * from './isPromise.ts';
4
- export * from './PromiseEx.ts';
5
- export { rejected } from './rejected.ts';
6
- export * from './Typed.ts';
7
- export * from './types.ts';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -1,8 +0,0 @@
1
- export { fulfilled } from './fulfilled.ts';
2
- export { fulfilledValues } from './fulfilledValues.ts';
3
- export * from './isPromise.ts';
4
- export * from './PromiseEx.ts';
5
- export { rejected } from './rejected.ts';
6
- export * from './Typed.ts';
7
- export * from './types.ts';
8
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA"}
@@ -1,121 +0,0 @@
1
- // src/fulfilled.ts
2
- var fulfilled = (val) => {
3
- return val.status === "fulfilled";
4
- };
5
-
6
- // src/fulfilledValues.ts
7
- var fulfilledValues = (previousValue, currentValue) => {
8
- if (currentValue.status === "fulfilled") previousValue.push(currentValue.value);
9
- return previousValue;
10
- };
11
-
12
- // src/isPromise.ts
13
- var isPromise = (value) => {
14
- if (typeof value === "object" && !Array.isArray(value)) {
15
- return typeof value.then === "function";
16
- }
17
- return false;
18
- };
19
-
20
- // src/PromiseEx.ts
21
- var PromiseEx = class extends Promise {
22
- cancelled;
23
- _value;
24
- constructor(func, value) {
25
- super(func);
26
- this._value = value;
27
- }
28
- // eslint-disable-next-line unicorn/no-thenable
29
- then(onfulfilled, onrejected, onvalue) {
30
- if (onvalue?.(this._value)) {
31
- this.cancelled = true;
32
- }
33
- return super.then(onfulfilled, onrejected);
34
- }
35
- value(onvalue) {
36
- if (onvalue?.(this._value)) {
37
- this.cancelled = true;
38
- }
39
- return this;
40
- }
41
- };
42
-
43
- // src/rejected.ts
44
- var rejected = (val) => {
45
- return val.status === "rejected";
46
- };
47
-
48
- // src/isType.ts
49
- var isType = (value, expectedType) => {
50
- const typeofValue = typeof value;
51
- switch (expectedType) {
52
- case "array": {
53
- return Array.isArray(value);
54
- }
55
- case "null": {
56
- return value === null;
57
- }
58
- case "undefined": {
59
- return value === void 0;
60
- }
61
- case "object": {
62
- if (value === null) {
63
- return false;
64
- }
65
- return typeofValue === "object" && !Array.isArray(value);
66
- }
67
- default: {
68
- return typeofValue === expectedType;
69
- }
70
- }
71
- };
72
-
73
- // src/Typed.ts
74
- var isTypedKey = (value) => {
75
- switch (typeof value) {
76
- case "string":
77
- case "bigint":
78
- case "number":
79
- case "symbol": {
80
- return true;
81
- }
82
- default: {
83
- return false;
84
- }
85
- }
86
- };
87
- var isTypedValue = (value) => {
88
- switch (typeof value) {
89
- case "string":
90
- case "number":
91
- case "boolean": {
92
- return true;
93
- }
94
- default: {
95
- return value === null || isTypedObject(value) || isTypedArray(value);
96
- }
97
- }
98
- };
99
- var isTypedArray = (value) => {
100
- return Array.isArray(value) && !value.some((item) => !isTypedValue(item));
101
- };
102
- var isValidTypedFieldPair = (pair) => {
103
- const [key, value] = pair;
104
- return isTypedKey(key) && isTypedValue(value);
105
- };
106
- var isTypedObject = (value) => {
107
- return isType(value, "object") && !Object.entries(value).some((item) => !isValidTypedFieldPair(item));
108
- };
109
- export {
110
- PromiseEx,
111
- fulfilled,
112
- fulfilledValues,
113
- isPromise,
114
- isTypedArray,
115
- isTypedKey,
116
- isTypedObject,
117
- isTypedValue,
118
- isValidTypedFieldPair,
119
- rejected
120
- };
121
- //# sourceMappingURL=index.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/fulfilled.ts","../../src/fulfilledValues.ts","../../src/isPromise.ts","../../src/PromiseEx.ts","../../src/rejected.ts","../../src/isType.ts","../../src/Typed.ts"],"sourcesContent":["/**\n * For use with Promise.allSettled to filter only successful results\n * @param val\n * @returns\n */\nexport const fulfilled = <T>(val: PromiseSettledResult<T>): val is PromiseFulfilledResult<T> => {\n return val.status === 'fulfilled'\n}\n","/**\n * For use with Promise.allSettled to reduce to only successful result values\n * @example <caption>Casting the initialValue provided to reduce</caption>\n * const resolved = Promise.resolve('resolved')\n * const rejected = Promise.reject('rejected')\n * const settled = await Promise.allSettled([resolved, rejected])\n * const results = settled.reduce(fulfilledValues, [] as string[])\n * // results === [ 'resolved' ]\n * @example <caption>Providing type parameter to reduce and initialValue type can be inferred</caption>\n * const resolved = Promise.resolve('resolved')\n * const rejected = Promise.reject('rejected')\n * const settled = await Promise.allSettled([resolved, rejected])\n * const results = settled.reduce<string[]>(fulfilledValues, [])\n * // results === [ 'resolved' ]\n * @param previousValue\n * @param currentValue\n * @returns\n */\nexport const fulfilledValues = <T>(previousValue: T[], currentValue: PromiseSettledResult<T>): T[] => {\n if (currentValue.status === 'fulfilled') previousValue.push(currentValue.value)\n return previousValue\n}\n","import { TypedValue } from './Typed.ts'\n\nexport interface PromiseType {\n then: () => unknown\n}\n\nexport type AnyNonPromise = Exclude<TypedValue, Promise<unknown>>\n\nexport const isPromise = (value: unknown): value is Promise<unknown> => {\n if (typeof value === 'object' && !Array.isArray(value)) {\n return typeof (value as PromiseType).then === 'function'\n }\n return false\n}\n\n// type test\n/*\nconst x = Promise.resolve()\n\nconst f = (x: AnyNonPromise) => {\n return x\n}\n\nf(x)\n*/\n","export type PromiseExSubFunc<T, TResult = T> = (value: T) => TResult\nexport type PromiseExFunc<T> = (resolve?: PromiseExSubFunc<T, void>, reject?: PromiseExSubFunc<T, void>) => void\nexport type PromiseExValueFunc<V> = (value?: V) => boolean\n\nexport class PromiseEx<T, V = void> extends Promise<T> {\n cancelled?: boolean\n private _value?: V\n\n constructor(func: PromiseExFunc<T>, value?: V) {\n super(func)\n this._value = value\n }\n\n // eslint-disable-next-line unicorn/no-thenable\n override then<TResult1 = T, TResult2 = never>(\n onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | null | undefined,\n onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null | undefined,\n onvalue?: (value?: V) => boolean,\n ): Promise<TResult1 | TResult2> {\n if (onvalue?.(this._value)) {\n this.cancelled = true\n }\n return super.then(onfulfilled, onrejected)\n }\n\n value(onvalue?: (value?: V) => boolean) {\n if (onvalue?.(this._value)) {\n this.cancelled = true\n }\n return this\n }\n}\n","/**\n * For use with Promise.allSettled to filter only rejected results\n * @param val\n * @returns\n */\nexport const rejected = <T>(val: PromiseSettledResult<T>): val is PromiseRejectedResult => {\n return val.status === 'rejected'\n}\n","export type FieldType = 'string' | 'number' | 'object' | 'symbol' | 'symbol' | 'undefined' | 'null' | 'array' | 'function'\n\nexport type ObjectTypeShape = Record<string | number | symbol, FieldType>\n\nexport const isType = (value: unknown, expectedType: FieldType) => {\n const typeofValue = typeof value\n switch (expectedType) {\n case 'array': {\n return Array.isArray(value)\n }\n case 'null': {\n return value === null\n }\n case 'undefined': {\n return value === undefined\n }\n case 'object': {\n // nulls resolve to objects, so exclude them\n if (value === null) {\n return false\n }\n // arrays resolve to objects, so exclude them\n return typeofValue === 'object' && !Array.isArray(value)\n }\n default: {\n return typeofValue === expectedType\n }\n }\n}\n","import { isType } from './isType.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unsafe-function-type\nexport type TypedValue = bigint | string | number | boolean | null | TypedObject | TypedArray | Function | symbol | undefined\nexport type TypedKey<T extends string | void = void> = T extends string ? T : string | number | symbol\nexport type TypedObject = { [key: TypedKey]: TypedValue } | object\nexport type TypedArray = TypedValue[]\n\nexport const isTypedKey = (value: unknown): value is TypedKey => {\n switch (typeof value) {\n case 'string':\n case 'bigint':\n case 'number':\n case 'symbol': {\n return true\n }\n default: {\n return false\n }\n }\n}\n\nexport const isTypedValue = (value: unknown): value is TypedValue => {\n switch (typeof value) {\n case 'string':\n case 'number':\n case 'boolean': {\n return true\n }\n default: {\n return value === null || isTypedObject(value) || isTypedArray(value)\n }\n }\n}\n\nexport const isTypedArray = (value: unknown): value is TypedArray => {\n return Array.isArray(value) && !value.some(item => !isTypedValue(item))\n}\n\nexport const isValidTypedFieldPair = (pair: [key: unknown, value: unknown]): pair is [key: TypedKey, value: TypedValue] => {\n const [key, value] = pair\n return isTypedKey(key) && isTypedValue(value)\n}\n\nexport const isTypedObject = (value: unknown): value is TypedObject => {\n return (\n isType(value, 'object')\n // check if all keys are strings\n && !Object.entries(value as object).some(item => !isValidTypedFieldPair(item))\n )\n}\n\n// Object Type Test\n/*\ninterface TestObject {\n value: number\n}\n\nconst x: TestObject = { value: 1 }\n\nconst f = (p: TypedValue): void => {\n console.log(p)\n}\n\nf(x)\n*/\n"],"mappings":";AAKO,IAAM,YAAY,CAAI,QAAmE;AAC9F,SAAO,IAAI,WAAW;AACxB;;;ACWO,IAAM,kBAAkB,CAAI,eAAoB,iBAA+C;AACpG,MAAI,aAAa,WAAW,YAAa,eAAc,KAAK,aAAa,KAAK;AAC9E,SAAO;AACT;;;ACbO,IAAM,YAAY,CAAC,UAA8C;AACtE,MAAI,OAAO,UAAU,YAAY,CAAC,MAAM,QAAQ,KAAK,GAAG;AACtD,WAAO,OAAQ,MAAsB,SAAS;AAAA,EAChD;AACA,SAAO;AACT;;;ACTO,IAAM,YAAN,cAAqC,QAAW;AAAA,EACrD;AAAA,EACQ;AAAA,EAER,YAAY,MAAwB,OAAW;AAC7C,UAAM,IAAI;AACV,SAAK,SAAS;AAAA,EAChB;AAAA;AAAA,EAGS,KACP,aACA,YACA,SAC8B;AAC9B,QAAI,UAAU,KAAK,MAAM,GAAG;AAC1B,WAAK,YAAY;AAAA,IACnB;AACA,WAAO,MAAM,KAAK,aAAa,UAAU;AAAA,EAC3C;AAAA,EAEA,MAAM,SAAkC;AACtC,QAAI,UAAU,KAAK,MAAM,GAAG;AAC1B,WAAK,YAAY;AAAA,IACnB;AACA,WAAO;AAAA,EACT;AACF;;;AC1BO,IAAM,WAAW,CAAI,QAA+D;AACzF,SAAO,IAAI,WAAW;AACxB;;;ACHO,IAAM,SAAS,CAAC,OAAgB,iBAA4B;AACjE,QAAM,cAAc,OAAO;AAC3B,UAAQ,cAAc;AAAA,IACpB,KAAK,SAAS;AACZ,aAAO,MAAM,QAAQ,KAAK;AAAA,IAC5B;AAAA,IACA,KAAK,QAAQ;AACX,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,KAAK,aAAa;AAChB,aAAO,UAAU;AAAA,IACnB;AAAA,IACA,KAAK,UAAU;AAEb,UAAI,UAAU,MAAM;AAClB,eAAO;AAAA,MACT;AAEA,aAAO,gBAAgB,YAAY,CAAC,MAAM,QAAQ,KAAK;AAAA,IACzD;AAAA,IACA,SAAS;AACP,aAAO,gBAAgB;AAAA,IACzB;AAAA,EACF;AACF;;;ACpBO,IAAM,aAAa,CAAC,UAAsC;AAC/D,UAAQ,OAAO,OAAO;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,UAAU;AACb,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,aAAO;AAAA,IACT;AAAA,EACF;AACF;AAEO,IAAM,eAAe,CAAC,UAAwC;AACnE,UAAQ,OAAO,OAAO;AAAA,IACpB,KAAK;AAAA,IACL,KAAK;AAAA,IACL,KAAK,WAAW;AACd,aAAO;AAAA,IACT;AAAA,IACA,SAAS;AACP,aAAO,UAAU,QAAQ,cAAc,KAAK,KAAK,aAAa,KAAK;AAAA,IACrE;AAAA,EACF;AACF;AAEO,IAAM,eAAe,CAAC,UAAwC;AACnE,SAAO,MAAM,QAAQ,KAAK,KAAK,CAAC,MAAM,KAAK,UAAQ,CAAC,aAAa,IAAI,CAAC;AACxE;AAEO,IAAM,wBAAwB,CAAC,SAAqF;AACzH,QAAM,CAAC,KAAK,KAAK,IAAI;AACrB,SAAO,WAAW,GAAG,KAAK,aAAa,KAAK;AAC9C;AAEO,IAAM,gBAAgB,CAAC,UAAyC;AACrE,SACE,OAAO,OAAO,QAAQ,KAEnB,CAAC,OAAO,QAAQ,KAAe,EAAE,KAAK,UAAQ,CAAC,sBAAsB,IAAI,CAAC;AAEjF;","names":[]}
@@ -1,7 +0,0 @@
1
- import { TypedValue } from './Typed.ts';
2
- export interface PromiseType {
3
- then: () => unknown;
4
- }
5
- export type AnyNonPromise = Exclude<TypedValue, Promise<unknown>>;
6
- export declare const isPromise: (value: unknown) => value is Promise<unknown>;
7
- //# sourceMappingURL=isPromise.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"isPromise.d.ts","sourceRoot":"","sources":["../../src/isPromise.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,OAAO,CAAA;CACpB;AAED,MAAM,MAAM,aAAa,GAAG,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;AAEjE,eAAO,MAAM,SAAS,UAAW,OAAO,KAAG,KAAK,IAAI,OAAO,CAAC,OAAO,CAKlE,CAAA"}