@wener/common 2.0.2 → 2.0.3

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 (351) hide show
  1. package/lib/ai/qwen3vl/index.js +2 -0
  2. package/lib/ai/qwen3vl/index.js.map +1 -0
  3. package/lib/ai/qwen3vl/utils.js +31 -0
  4. package/lib/ai/qwen3vl/utils.js.map +1 -0
  5. package/lib/ai/vision/DocLayoutElementTypeSchema.js +28 -0
  6. package/lib/ai/vision/DocLayoutElementTypeSchema.js.map +1 -0
  7. package/lib/ai/vision/ImageAnnotationSchema.js +50 -0
  8. package/lib/ai/vision/ImageAnnotationSchema.js.map +1 -0
  9. package/lib/ai/vision/index.js +3 -0
  10. package/lib/ai/vision/index.js.map +1 -0
  11. package/lib/ai/vision/resolveImageAnnotation.js +105 -0
  12. package/lib/ai/vision/resolveImageAnnotation.js.map +1 -0
  13. package/lib/cn/ChineseResidentIdNo.js +21 -14
  14. package/lib/cn/ChineseResidentIdNo.js.map +1 -0
  15. package/lib/cn/ChineseResidentIdNo.test.js +1 -1
  16. package/lib/cn/DivisionCode.js +30 -25
  17. package/lib/cn/DivisionCode.js.map +1 -0
  18. package/lib/cn/DivisionCode.test.js +1 -1
  19. package/lib/cn/Mod11.js +38 -81
  20. package/lib/cn/Mod11.js.map +1 -0
  21. package/lib/cn/Mod31.js +41 -90
  22. package/lib/cn/Mod31.js.map +1 -0
  23. package/lib/cn/UnifiedSocialCreditCode.js +43 -34
  24. package/lib/cn/UnifiedSocialCreditCode.js.map +1 -0
  25. package/lib/cn/UnifiedSocialCreditCode.test.js +1 -1
  26. package/lib/cn/formatChineseAmount.js +77 -0
  27. package/lib/cn/formatChineseAmount.js.map +1 -0
  28. package/lib/cn/index.js +7 -1
  29. package/lib/cn/index.js.map +1 -0
  30. package/lib/cn/parseChineseNumber.js +94 -0
  31. package/lib/cn/parseChineseNumber.js.map +1 -0
  32. package/lib/cn/parseChineseNumber.test.js +278 -0
  33. package/lib/cn/pinyin/cartesianProduct.js +22 -0
  34. package/lib/cn/pinyin/cartesianProduct.js.map +1 -0
  35. package/lib/cn/pinyin/cartesianProduct.test.js +179 -0
  36. package/lib/cn/pinyin/data.json +23573 -0
  37. package/lib/cn/pinyin/loader.js +14 -0
  38. package/lib/cn/pinyin/loader.js.map +1 -0
  39. package/lib/cn/pinyin/preload.js +3 -0
  40. package/lib/cn/pinyin/preload.js.map +1 -0
  41. package/lib/cn/pinyin/toPinyin.test.js +167 -0
  42. package/lib/cn/pinyin/toPinyinPure.js +33 -0
  43. package/lib/cn/pinyin/toPinyinPure.js.map +1 -0
  44. package/lib/cn/pinyin/transform.js +14 -0
  45. package/lib/cn/pinyin/transform.js.map +1 -0
  46. package/lib/cn/types.d.js +2 -0
  47. package/lib/cn/types.d.js.map +1 -0
  48. package/lib/consola/createStandardConsolaReporter.js +6 -6
  49. package/lib/consola/createStandardConsolaReporter.js.map +1 -0
  50. package/lib/consola/formatLogObject.js +65 -145
  51. package/lib/consola/formatLogObject.js.map +1 -0
  52. package/lib/consola/formatLogObject.test.js +184 -0
  53. package/lib/consola/index.js +1 -0
  54. package/lib/consola/index.js.map +1 -0
  55. package/lib/data/formatSort.js +6 -5
  56. package/lib/data/formatSort.js.map +1 -0
  57. package/lib/data/index.js +1 -0
  58. package/lib/data/index.js.map +1 -0
  59. package/lib/data/maybeNumber.js +5 -7
  60. package/lib/data/maybeNumber.js.map +1 -0
  61. package/lib/data/parseSort.js +22 -28
  62. package/lib/data/parseSort.js.map +1 -0
  63. package/lib/data/resolvePagination.js +13 -17
  64. package/lib/data/resolvePagination.js.map +1 -0
  65. package/lib/data/types.d.js +2 -0
  66. package/lib/data/types.d.js.map +1 -0
  67. package/lib/dayjs/dayjs.js +21 -19
  68. package/lib/dayjs/dayjs.js.map +1 -0
  69. package/lib/dayjs/formatDuration.js +15 -14
  70. package/lib/dayjs/formatDuration.js.map +1 -0
  71. package/lib/dayjs/index.js +2 -0
  72. package/lib/dayjs/index.js.map +1 -0
  73. package/lib/dayjs/parseDuration.js +5 -8
  74. package/lib/dayjs/parseDuration.js.map +1 -0
  75. package/lib/dayjs/parseRelativeTime.js +90 -0
  76. package/lib/dayjs/parseRelativeTime.js.map +1 -0
  77. package/lib/dayjs/parseRelativeTime.test.js +247 -0
  78. package/lib/dayjs/resolveRelativeTime.js +158 -0
  79. package/lib/dayjs/resolveRelativeTime.js.map +1 -0
  80. package/lib/dayjs/resolveRelativeTime.test.js +310 -0
  81. package/lib/decimal/index.js +1 -0
  82. package/lib/decimal/index.js.map +1 -0
  83. package/lib/decimal/parseDecimal.js +3 -1
  84. package/lib/decimal/parseDecimal.js.map +1 -0
  85. package/lib/emittery/emitter.js +10 -0
  86. package/lib/emittery/emitter.js.map +1 -0
  87. package/lib/emittery/index.js +2 -0
  88. package/lib/emittery/index.js.map +1 -0
  89. package/lib/foundation/schema/SexType.js +5 -3
  90. package/lib/foundation/schema/SexType.js.map +1 -0
  91. package/lib/foundation/schema/index.js +1 -0
  92. package/lib/foundation/schema/index.js.map +1 -0
  93. package/lib/foundation/schema/parseSexType.js +1 -0
  94. package/lib/foundation/schema/parseSexType.js.map +1 -0
  95. package/lib/foundation/schema/types.js +4 -2
  96. package/lib/foundation/schema/types.js.map +1 -0
  97. package/lib/fs/FileSystemError.js +23 -0
  98. package/lib/fs/FileSystemError.js.map +1 -0
  99. package/lib/fs/IFileSystem.d.js +3 -0
  100. package/lib/fs/IFileSystem.d.js.map +1 -0
  101. package/lib/fs/MemoryFileSystem.test.js +188 -0
  102. package/lib/fs/createBrowserFileSystem.js +248 -0
  103. package/lib/fs/createBrowserFileSystem.js.map +1 -0
  104. package/lib/fs/createMemoryFileSystem.js +516 -0
  105. package/lib/fs/createMemoryFileSystem.js.map +1 -0
  106. package/lib/fs/createSandboxFileSystem.js +108 -0
  107. package/lib/fs/createSandboxFileSystem.js.map +1 -0
  108. package/lib/fs/createWebDavFileSystem.js +137 -0
  109. package/lib/fs/createWebDavFileSystem.js.map +1 -0
  110. package/lib/fs/findMimeType.js +17 -0
  111. package/lib/fs/findMimeType.js.map +1 -0
  112. package/lib/fs/index.js +8 -0
  113. package/lib/fs/index.js.map +1 -0
  114. package/lib/fs/orpc/FileSystemContract.js +93 -0
  115. package/lib/fs/orpc/FileSystemContract.js.map +1 -0
  116. package/lib/fs/orpc/createContractClientFileSystem.js +93 -0
  117. package/lib/fs/orpc/createContractClientFileSystem.js.map +1 -0
  118. package/lib/fs/orpc/index.js +3 -0
  119. package/lib/fs/orpc/index.js.map +1 -0
  120. package/lib/fs/orpc/server/createFileSystemContractImpl.js +63 -0
  121. package/lib/fs/orpc/server/createFileSystemContractImpl.js.map +1 -0
  122. package/lib/fs/orpc/server/index.js +2 -0
  123. package/lib/fs/orpc/server/index.js.map +1 -0
  124. package/lib/fs/s3/createS3MiniFileSystem.js +705 -0
  125. package/lib/fs/s3/createS3MiniFileSystem.js.map +1 -0
  126. package/lib/fs/s3/index.js +2 -0
  127. package/lib/fs/s3/index.js.map +1 -0
  128. package/lib/fs/s3/s3mini.test.js +584 -0
  129. package/lib/fs/scandir.js +59 -0
  130. package/lib/fs/scandir.js.map +1 -0
  131. package/lib/fs/server/createDatabaseFileSystem.js +750 -0
  132. package/lib/fs/server/createDatabaseFileSystem.js.map +1 -0
  133. package/lib/fs/server/createNodeFileSystem.js +401 -0
  134. package/lib/fs/server/createNodeFileSystem.js.map +1 -0
  135. package/lib/fs/server/dbfs.test.js +221 -0
  136. package/lib/fs/server/index.js +2 -0
  137. package/lib/fs/server/index.js.map +1 -0
  138. package/lib/fs/server/loadTestDatabase.js +127 -0
  139. package/lib/fs/server/loadTestDatabase.js.map +1 -0
  140. package/lib/fs/tests/runFileSystemTest.js +318 -0
  141. package/lib/fs/tests/runFileSystemTest.js.map +1 -0
  142. package/lib/fs/types.js +27 -0
  143. package/lib/fs/types.js.map +1 -0
  144. package/lib/fs/utils/getFileUrl.js +35 -0
  145. package/lib/fs/utils/getFileUrl.js.map +1 -0
  146. package/lib/fs/utils.js +22 -0
  147. package/lib/fs/utils.js.map +1 -0
  148. package/lib/index.js +1 -0
  149. package/lib/index.js.map +1 -0
  150. package/lib/jsonschema/JsonSchema.js +146 -172
  151. package/lib/jsonschema/JsonSchema.js.map +1 -0
  152. package/lib/jsonschema/forEachJsonSchema.js +44 -0
  153. package/lib/jsonschema/forEachJsonSchema.js.map +1 -0
  154. package/lib/jsonschema/index.js +2 -0
  155. package/lib/jsonschema/index.js.map +1 -0
  156. package/lib/jsonschema/types.d.js +2 -0
  157. package/lib/jsonschema/types.d.js.map +1 -0
  158. package/lib/meta/defineFileType.js +20 -103
  159. package/lib/meta/defineFileType.js.map +1 -0
  160. package/lib/meta/defineInit.js +31 -250
  161. package/lib/meta/defineInit.js.map +1 -0
  162. package/lib/meta/defineMetadata.js +24 -140
  163. package/lib/meta/defineMetadata.js.map +1 -0
  164. package/lib/meta/index.js +1 -0
  165. package/lib/meta/index.js.map +1 -0
  166. package/lib/orpc/createOpenApiContractClient.js +27 -0
  167. package/lib/orpc/createOpenApiContractClient.js.map +1 -0
  168. package/lib/orpc/createRpcContractClient.js +34 -0
  169. package/lib/orpc/createRpcContractClient.js.map +1 -0
  170. package/lib/orpc/index.js +3 -0
  171. package/lib/orpc/index.js.map +1 -0
  172. package/lib/orpc/resolveLinkPlugins.js +28 -0
  173. package/lib/orpc/resolveLinkPlugins.js.map +1 -0
  174. package/lib/password/PHC.js +63 -87
  175. package/lib/password/PHC.js.map +1 -0
  176. package/lib/password/PHC.test.js +11 -3
  177. package/lib/password/Password.js +29 -294
  178. package/lib/password/Password.js.map +1 -0
  179. package/lib/password/Password.test.js +35 -22
  180. package/lib/password/createArgon2PasswordAlgorithm.js +35 -191
  181. package/lib/password/createArgon2PasswordAlgorithm.js.map +1 -0
  182. package/lib/password/createBase64PasswordAlgorithm.js +8 -141
  183. package/lib/password/createBase64PasswordAlgorithm.js.map +1 -0
  184. package/lib/password/createBcryptPasswordAlgorithm.js +13 -168
  185. package/lib/password/createBcryptPasswordAlgorithm.js.map +1 -0
  186. package/lib/password/createPBKDF2PasswordAlgorithm.js +46 -228
  187. package/lib/password/createPBKDF2PasswordAlgorithm.js.map +1 -0
  188. package/lib/password/createScryptPasswordAlgorithm.js +55 -211
  189. package/lib/password/createScryptPasswordAlgorithm.js.map +1 -0
  190. package/lib/password/index.js +1 -0
  191. package/lib/password/index.js.map +1 -0
  192. package/lib/password/server/index.js +1 -0
  193. package/lib/password/server/index.js.map +1 -0
  194. package/lib/resource/Identifiable.js +2 -0
  195. package/lib/resource/Identifiable.js.map +1 -0
  196. package/lib/resource/ListQuery.js +21 -93
  197. package/lib/resource/ListQuery.js.map +1 -0
  198. package/lib/resource/getTitleOfResource.js +3 -5
  199. package/lib/resource/getTitleOfResource.js.map +1 -0
  200. package/lib/resource/index.js +1 -0
  201. package/lib/resource/index.js.map +1 -0
  202. package/lib/resource/schema/AnyResourceSchema.js +2 -1
  203. package/lib/resource/schema/AnyResourceSchema.js.map +1 -0
  204. package/lib/resource/schema/BaseResourceSchema.js +2 -1
  205. package/lib/resource/schema/BaseResourceSchema.js.map +1 -0
  206. package/lib/resource/schema/ResourceActionType.js +6 -4
  207. package/lib/resource/schema/ResourceActionType.js.map +1 -0
  208. package/lib/resource/schema/ResourceStatus.js +5 -3
  209. package/lib/resource/schema/ResourceStatus.js.map +1 -0
  210. package/lib/resource/schema/ResourceType.js +5 -3
  211. package/lib/resource/schema/ResourceType.js.map +1 -0
  212. package/lib/resource/schema/index.js +1 -0
  213. package/lib/resource/schema/index.js.map +1 -0
  214. package/lib/resource/schema/types.js +16 -20
  215. package/lib/resource/schema/types.js.map +1 -0
  216. package/lib/s3/formatS3Url.js +65 -0
  217. package/lib/s3/formatS3Url.js.map +1 -0
  218. package/lib/s3/formatS3Url.test.js +262 -0
  219. package/lib/s3/index.js +3 -0
  220. package/lib/s3/index.js.map +1 -0
  221. package/lib/s3/parseS3Url.js +65 -0
  222. package/lib/s3/parseS3Url.js.map +1 -0
  223. package/lib/s3/parseS3Url.test.js +270 -0
  224. package/lib/schema/SchemaRegistry.js +38 -38
  225. package/lib/schema/SchemaRegistry.js.map +1 -0
  226. package/lib/schema/TypeSchema.d.js +2 -0
  227. package/lib/schema/TypeSchema.d.js.map +1 -0
  228. package/lib/schema/createSchemaData.js +26 -125
  229. package/lib/schema/createSchemaData.js.map +1 -0
  230. package/lib/schema/findJsonSchemaByPath.js +13 -36
  231. package/lib/schema/findJsonSchemaByPath.js.map +1 -0
  232. package/lib/schema/formatZodError.js +140 -0
  233. package/lib/schema/formatZodError.js.map +1 -0
  234. package/lib/schema/formatZodError.test.js +196 -0
  235. package/lib/schema/getSchemaCache.js +5 -5
  236. package/lib/schema/getSchemaCache.js.map +1 -0
  237. package/lib/schema/getSchemaOptions.js +8 -11
  238. package/lib/schema/getSchemaOptions.js.map +1 -0
  239. package/lib/schema/index.js +2 -1
  240. package/lib/schema/index.js.map +1 -0
  241. package/lib/schema/toJsonSchema.js +47 -290
  242. package/lib/schema/toJsonSchema.js.map +1 -0
  243. package/lib/schema/validate.js +33 -45
  244. package/lib/schema/validate.js.map +1 -0
  245. package/lib/tools/generateSchema.js +39 -197
  246. package/lib/tools/generateSchema.js.map +1 -0
  247. package/lib/tools/renderJsonSchemaToMarkdownDoc.js +55 -143
  248. package/lib/tools/renderJsonSchemaToMarkdownDoc.js.map +1 -0
  249. package/lib/utils/buildBaseUrl.js +13 -0
  250. package/lib/utils/buildBaseUrl.js.map +1 -0
  251. package/lib/utils/buildRedactorFormSchema.js +59 -0
  252. package/lib/utils/buildRedactorFormSchema.js.map +1 -0
  253. package/lib/utils/getEstimateProcessTime.js +12 -11
  254. package/lib/utils/getEstimateProcessTime.js.map +1 -0
  255. package/lib/utils/index.js +3 -0
  256. package/lib/utils/index.js.map +1 -0
  257. package/lib/utils/resolveFeatureOptions.js +12 -0
  258. package/lib/utils/resolveFeatureOptions.js.map +1 -0
  259. package/package.json +61 -13
  260. package/src/ai/qwen3vl/index.ts +1 -0
  261. package/src/ai/qwen3vl/utils.ts +36 -0
  262. package/src/ai/vision/DocLayoutElementTypeSchema.ts +30 -0
  263. package/src/ai/vision/ImageAnnotationSchema.ts +60 -0
  264. package/src/ai/vision/index.ts +2 -0
  265. package/src/ai/vision/resolveImageAnnotation.ts +135 -0
  266. package/src/cn/ChineseResidentIdNo.test.ts +1 -1
  267. package/src/cn/ChineseResidentIdNo.ts +8 -0
  268. package/src/cn/DivisionCode.test.ts +1 -1
  269. package/src/cn/DivisionCode.ts +8 -0
  270. package/src/cn/UnifiedSocialCreditCode.test.ts +1 -1
  271. package/src/cn/UnifiedSocialCreditCode.ts +15 -0
  272. package/src/cn/__snapshots__/UnifiedSocialCreditCode.test.ts.snap +23 -0
  273. package/src/cn/formatChineseAmount.ts +61 -0
  274. package/src/cn/index.ts +7 -1
  275. package/src/cn/parseChineseNumber.test.ts +159 -0
  276. package/src/cn/parseChineseNumber.ts +97 -0
  277. package/src/cn/pinyin/cartesianProduct.test.ts +64 -0
  278. package/src/cn/pinyin/cartesianProduct.ts +24 -0
  279. package/src/cn/pinyin/data.json +23573 -0
  280. package/src/cn/pinyin/loader.ts +12 -0
  281. package/src/cn/pinyin/preload.ts +3 -0
  282. package/src/cn/pinyin/toPinyin.test.ts +12 -0
  283. package/src/cn/pinyin/toPinyinPure.ts +43 -0
  284. package/src/cn/pinyin/transform.ts +12 -0
  285. package/src/consola/formatLogObject.test.ts +27 -0
  286. package/src/consola/formatLogObject.ts +34 -6
  287. package/src/dayjs/dayjs.ts +18 -18
  288. package/src/dayjs/index.ts +3 -1
  289. package/src/dayjs/parseRelativeTime.test.ts +185 -0
  290. package/src/dayjs/parseRelativeTime.ts +115 -0
  291. package/src/dayjs/resolveRelativeTime.test.ts +357 -0
  292. package/src/dayjs/resolveRelativeTime.ts +167 -0
  293. package/src/emittery/emitter.ts +9 -0
  294. package/src/emittery/index.ts +1 -0
  295. package/src/fs/FileSystemError.ts +26 -0
  296. package/src/fs/IFileSystem.d.ts +102 -0
  297. package/src/fs/MemoryFileSystem.test.ts +37 -0
  298. package/src/fs/createBrowserFileSystem.ts +291 -0
  299. package/src/fs/createMemoryFileSystem.ts +604 -0
  300. package/src/fs/createSandboxFileSystem.ts +136 -0
  301. package/src/fs/createWebDavFileSystem.ts +172 -0
  302. package/src/fs/findMimeType.ts +23 -0
  303. package/src/fs/index.ts +8 -0
  304. package/src/fs/orpc/FileSystemContract.ts +92 -0
  305. package/src/fs/orpc/createContractClientFileSystem.ts +115 -0
  306. package/src/fs/orpc/index.ts +2 -0
  307. package/src/fs/orpc/server/createFileSystemContractImpl.ts +64 -0
  308. package/src/fs/orpc/server/index.ts +1 -0
  309. package/src/fs/s3/createS3MiniFileSystem.ts +830 -0
  310. package/src/fs/s3/index.ts +1 -0
  311. package/src/fs/s3/s3mini.test.ts +264 -0
  312. package/src/fs/scandir.ts +75 -0
  313. package/src/fs/server/createDatabaseFileSystem.ts +668 -0
  314. package/src/fs/server/createNodeFileSystem.ts +499 -0
  315. package/src/fs/server/dbfs.test.ts +47 -0
  316. package/src/fs/server/index.ts +1 -0
  317. package/src/fs/server/loadTestDatabase.ts +131 -0
  318. package/src/fs/tests/runFileSystemTest.ts +288 -0
  319. package/src/fs/types.ts +29 -0
  320. package/src/fs/utils/getFileUrl.ts +44 -0
  321. package/src/fs/utils.ts +23 -0
  322. package/src/jsonschema/JsonSchema.ts +118 -110
  323. package/src/jsonschema/forEachJsonSchema.ts +50 -0
  324. package/src/jsonschema/index.ts +1 -0
  325. package/src/orpc/createOpenApiContractClient.ts +52 -0
  326. package/src/orpc/createRpcContractClient.ts +50 -0
  327. package/src/orpc/index.ts +2 -0
  328. package/src/orpc/resolveLinkPlugins.ts +29 -0
  329. package/src/password/PHC.ts +3 -3
  330. package/src/password/Password.test.ts +1 -1
  331. package/src/password/createPBKDF2PasswordAlgorithm.ts +2 -2
  332. package/src/resource/schema/AnyResourceSchema.ts +16 -2
  333. package/src/s3/formatS3Url.test.ts +254 -0
  334. package/src/s3/formatS3Url.ts +84 -0
  335. package/src/s3/index.ts +2 -0
  336. package/src/s3/parseS3Url.test.ts +258 -0
  337. package/src/s3/parseS3Url.ts +88 -0
  338. package/src/schema/SchemaRegistry.ts +35 -33
  339. package/src/schema/formatZodError.test.ts +196 -0
  340. package/src/schema/formatZodError.ts +151 -0
  341. package/src/schema/getSchemaOptions.ts +2 -2
  342. package/src/schema/index.ts +1 -1
  343. package/src/utils/buildBaseUrl.ts +12 -0
  344. package/src/utils/buildRedactorFormSchema.ts +85 -0
  345. package/src/utils/index.ts +4 -0
  346. package/src/utils/resolveFeatureOptions.ts +14 -0
  347. package/src/cn/ChineseResidentIdNo.mod.ts +0 -7
  348. package/src/cn/DivisionCode.mod.ts +0 -7
  349. package/src/cn/UnifiedSocialCreditCode.mod.ts +0 -7
  350. package/src/cn/mod.ts +0 -3
  351. package/src/schema/SchemaRegistry.mod.ts +0 -1
@@ -0,0 +1,14 @@
1
+ import { setCharToPinyinTable } from "./toPinyinPure.js";
2
+ import { transformData } from "./transform.js";
3
+ export function loadCharToPinyinTable() {
4
+ return import("./data.json", {
5
+ with: {
6
+ type: "json"
7
+ }
8
+ }).then((v) => v.default).then((data) => {
9
+ let out = transformData(data);
10
+ setCharToPinyinTable(out);
11
+ return out;
12
+ });
13
+ }
14
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cn/pinyin/loader.ts"],"sourcesContent":["import { setCharToPinyinTable } from './toPinyinPure';\nimport { transformData } from './transform';\n\nexport function loadCharToPinyinTable(): Promise<Record<string, string[]>> {\n\treturn import('./data.json' as unknown as string, { with: { type: 'json' } })\n\t\t.then((v) => v.default as Record<string, string[]>)\n\t\t.then((data) => {\n\t\t\tlet out = transformData(data);\n\t\t\tsetCharToPinyinTable(out);\n\t\t\treturn out;\n\t\t});\n}\n"],"names":["setCharToPinyinTable","transformData","loadCharToPinyinTable","with","type","then","v","default","data","out"],"mappings":"AAAA,SAASA,oBAAoB,QAAQ,iBAAiB;AACtD,SAASC,aAAa,QAAQ,cAAc;AAE5C,OAAO,SAASC;IACf,OAAO,MAAM,CAAC,eAAoC;QAAEC,MAAM;YAAEC,MAAM;QAAO;IAAE,GACzEC,IAAI,CAAC,CAACC,IAAMA,EAAEC,OAAO,EACrBF,IAAI,CAAC,CAACG;QACN,IAAIC,MAAMR,cAAcO;QACxBR,qBAAqBS;QACrB,OAAOA;IACR;AACF"}
@@ -0,0 +1,3 @@
1
+ import { loadCharToPinyinTable } from "./loader.js";
2
+ await loadCharToPinyinTable();
3
+ //# sourceMappingURL=preload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cn/pinyin/preload.ts"],"sourcesContent":["import { loadCharToPinyinTable } from './loader';\n\nawait loadCharToPinyinTable();\n"],"names":["loadCharToPinyinTable"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,WAAW;AAEjD,MAAMA"}
@@ -0,0 +1,167 @@
1
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
+ try {
3
+ var info = gen[key](arg);
4
+ var value = info.value;
5
+ }
6
+ catch (error) {
7
+ reject(error);
8
+ return;
9
+ }
10
+ if (info.done) {
11
+ resolve(value);
12
+ }
13
+ else {
14
+ Promise.resolve(value).then(_next, _throw);
15
+ }
16
+ }
17
+ function _async_to_generator(fn) {
18
+ return function () {
19
+ var self = this, args = arguments;
20
+ return new Promise(function (resolve, reject) {
21
+ var gen = fn.apply(self, args);
22
+ function _next(value) {
23
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
24
+ }
25
+ function _throw(err) {
26
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
27
+ }
28
+ _next(undefined);
29
+ });
30
+ };
31
+ }
32
+ function _ts_generator(thisArg, body) {
33
+ var f, y, t, _ = {
34
+ label: 0,
35
+ sent: function () {
36
+ if (t[0] & 1)
37
+ throw t[1];
38
+ return t[1];
39
+ },
40
+ trys: [],
41
+ ops: []
42
+ }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
43
+ return d(g, "next", {
44
+ value: verb(0)
45
+ }), d(g, "throw", {
46
+ value: verb(1)
47
+ }), d(g, "return", {
48
+ value: verb(2)
49
+ }), typeof Symbol === "function" && d(g, Symbol.iterator, {
50
+ value: function () {
51
+ return this;
52
+ }
53
+ }), g;
54
+ function verb(n) {
55
+ return function (v) {
56
+ return step([
57
+ n,
58
+ v
59
+ ]);
60
+ };
61
+ }
62
+ function step(op) {
63
+ if (f)
64
+ throw new TypeError("Generator is already executing.");
65
+ while (g && (g = 0, op[0] && (_ = 0)), _)
66
+ try {
67
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
68
+ return t;
69
+ if (y = 0, t)
70
+ op = [
71
+ op[0] & 2,
72
+ t.value
73
+ ];
74
+ switch (op[0]) {
75
+ case 0:
76
+ case 1:
77
+ t = op;
78
+ break;
79
+ case 4:
80
+ _.label++;
81
+ return {
82
+ value: op[1],
83
+ done: false
84
+ };
85
+ case 5:
86
+ _.label++;
87
+ y = op[1];
88
+ op = [
89
+ 0
90
+ ];
91
+ continue;
92
+ case 7:
93
+ op = _.ops.pop();
94
+ _.trys.pop();
95
+ continue;
96
+ default:
97
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
98
+ _ = 0;
99
+ continue;
100
+ }
101
+ if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
102
+ _.label = op[1];
103
+ break;
104
+ }
105
+ if (op[0] === 6 && _.label < t[1]) {
106
+ _.label = t[1];
107
+ t = op;
108
+ break;
109
+ }
110
+ if (t && _.label < t[2]) {
111
+ _.label = t[2];
112
+ _.ops.push(op);
113
+ break;
114
+ }
115
+ if (t[2])
116
+ _.ops.pop();
117
+ _.trys.pop();
118
+ continue;
119
+ }
120
+ op = body.call(thisArg, _);
121
+ }
122
+ catch (e) {
123
+ op = [
124
+ 6,
125
+ e
126
+ ];
127
+ y = 0;
128
+ }
129
+ finally {
130
+ f = t = 0;
131
+ }
132
+ if (op[0] & 5)
133
+ throw op[1];
134
+ return {
135
+ value: op[0] ? op[1] : void 0,
136
+ done: true
137
+ };
138
+ }
139
+ }
140
+ import { assert, test } from "vitest";
141
+ import { loadCharToPinyinTable } from "./loader.js";
142
+ import { toPinyinPure } from "./toPinyinPure.js";
143
+ test("toPinyin", function () {
144
+ return _async_to_generator(function () {
145
+ return _ts_generator(this, function (_state) {
146
+ switch (_state.label) {
147
+ case 0:
148
+ return [
149
+ 4,
150
+ loadCharToPinyinTable()
151
+ ];
152
+ case 1:
153
+ _state.sent();
154
+ assert.deepEqual(toPinyinPure("\u771F\u601D"), [
155
+ "zhen,sai",
156
+ "zhen,si"
157
+ ]);
158
+ return [
159
+ 2
160
+ ];
161
+ }
162
+ });
163
+ // char to py -> 350k
164
+ // py to char -> 145k
165
+ // csv -> 96k
166
+ })();
167
+ });
@@ -0,0 +1,33 @@
1
+ import { cartesianProduct } from "./cartesianProduct.js";
2
+ let CharToPinyinTable;
3
+ export function setCharToPinyinTable(table) {
4
+ CharToPinyinTable = table;
5
+ }
6
+ export function getCharToPinyinTable() {
7
+ if (!CharToPinyinTable) {
8
+ return {};
9
+ }
10
+ return CharToPinyinTable;
11
+ }
12
+ export function toPinyinPureFirst(s, sep = ",") {
13
+ let tab = getCharToPinyinTable();
14
+ return s.split("").map((c) => tab[c]?.[0]).filter(Boolean).join(sep);
15
+ }
16
+ export function toPinyinPure(s, sep = ",") {
17
+ let tab = getCharToPinyinTable();
18
+ // ensure order
19
+ return cartesianProduct(s.split("").map((c) => tab[c] || "")).sort((a, b) => {
20
+ for (let i = 0; i < a.length; i++) {
21
+ let x = a[i];
22
+ let y = b[i];
23
+ if (x < y)
24
+ return -1;
25
+ if (x > y)
26
+ return 1;
27
+ }
28
+ return 0;
29
+ }).map((v) => v.filter(Boolean).join(sep));
30
+ } // export function lookupPinyinPure(s: string): Array<Array<string>> {
31
+ // return cartesianProductOfArray(s.split('').map(c => Lookup[c]));
32
+ // }
33
+ //# sourceMappingURL=toPinyinPure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cn/pinyin/toPinyinPure.ts"],"sourcesContent":["import { cartesianProduct } from './cartesianProduct';\n\nlet CharToPinyinTable: Record<string, string[]> | undefined;\n\nexport function setCharToPinyinTable(table: Record<string, string[]>) {\n\tCharToPinyinTable = table;\n}\n\nexport function getCharToPinyinTable() {\n\tif (!CharToPinyinTable) {\n\t\treturn {};\n\t}\n\treturn CharToPinyinTable;\n}\n\nexport function toPinyinPureFirst(s: string, sep = ','): string {\n\tlet tab = getCharToPinyinTable();\n\treturn s\n\t\t.split('')\n\t\t.map((c) => tab[c]?.[0])\n\t\t.filter(Boolean)\n\t\t.join(sep);\n}\n\nexport function toPinyinPure(s: string, sep = ','): string[] {\n\tlet tab = getCharToPinyinTable();\n\t// ensure order\n\treturn cartesianProduct(s.split('').map((c) => tab[c] || ''))\n\t\t.sort((a, b) => {\n\t\t\tfor (let i = 0; i < a.length; i++) {\n\t\t\t\tlet x = a[i];\n\t\t\t\tlet y = b[i];\n\t\t\t\tif (x < y) return -1;\n\t\t\t\tif (x > y) return 1;\n\t\t\t}\n\t\t\treturn 0;\n\t\t})\n\t\t.map((v) => v.filter(Boolean).join(sep));\n}\n\n// export function lookupPinyinPure(s: string): Array<Array<string>> {\n// return cartesianProductOfArray(s.split('').map(c => Lookup[c]));\n// }\n"],"names":["cartesianProduct","CharToPinyinTable","setCharToPinyinTable","table","getCharToPinyinTable","toPinyinPureFirst","s","sep","tab","split","map","c","filter","Boolean","join","toPinyinPure","sort","a","b","i","length","x","y","v"],"mappings":"AAAA,SAASA,gBAAgB,QAAQ,qBAAqB;AAEtD,IAAIC;AAEJ,OAAO,SAASC,qBAAqBC,KAA+B;IACnEF,oBAAoBE;AACrB;AAEA,OAAO,SAASC;IACf,IAAI,CAACH,mBAAmB;QACvB,OAAO,CAAC;IACT;IACA,OAAOA;AACR;AAEA,OAAO,SAASI,kBAAkBC,CAAS,EAAEC,MAAM,GAAG;IACrD,IAAIC,MAAMJ;IACV,OAAOE,EACLG,KAAK,CAAC,IACNC,GAAG,CAAC,CAACC,IAAMH,GAAG,CAACG,EAAE,EAAE,CAAC,EAAE,EACtBC,MAAM,CAACC,SACPC,IAAI,CAACP;AACR;AAEA,OAAO,SAASQ,aAAaT,CAAS,EAAEC,MAAM,GAAG;IAChD,IAAIC,MAAMJ;IACV,eAAe;IACf,OAAOJ,iBAAiBM,EAAEG,KAAK,CAAC,IAAIC,GAAG,CAAC,CAACC,IAAMH,GAAG,CAACG,EAAE,IAAI,KACvDK,IAAI,CAAC,CAACC,GAAGC;QACT,IAAK,IAAIC,IAAI,GAAGA,IAAIF,EAAEG,MAAM,EAAED,IAAK;YAClC,IAAIE,IAAIJ,CAAC,CAACE,EAAE;YACZ,IAAIG,IAAIJ,CAAC,CAACC,EAAE;YACZ,IAAIE,IAAIC,GAAG,OAAO,CAAC;YACnB,IAAID,IAAIC,GAAG,OAAO;QACnB;QACA,OAAO;IACR,GACCZ,GAAG,CAAC,CAACa,IAAMA,EAAEX,MAAM,CAACC,SAASC,IAAI,CAACP;AACrC,EAEA,sEAAsE;CACtE,qEAAqE;CACrE,IAAI"}
@@ -0,0 +1,14 @@
1
+ export function transformData(input) {
2
+ let out = {};
3
+ for (let [py, chars] of Object.entries(input)){
4
+ for (let c of chars){
5
+ if (!out[c]) {
6
+ out[c] = [];
7
+ }
8
+ out[c].push(py);
9
+ }
10
+ }
11
+ return out;
12
+ }
13
+
14
+ //# sourceMappingURL=transform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/cn/pinyin/transform.ts"],"sourcesContent":["export function transformData(input: Record<string, string[]>) {\n\tlet out = {} as Record<string, string[]>;\n\tfor (let [py, chars] of Object.entries(input)) {\n\t\tfor (let c of chars) {\n\t\t\tif (!out[c]) {\n\t\t\t\tout[c] = [];\n\t\t\t}\n\t\t\tout[c].push(py);\n\t\t}\n\t}\n\treturn out;\n}\n"],"names":["transformData","input","out","py","chars","Object","entries","c","push"],"mappings":"AAAA,OAAO,SAASA,cAAcC,KAA+B;IAC5D,IAAIC,MAAM,CAAC;IACX,KAAK,IAAI,CAACC,IAAIC,MAAM,IAAIC,OAAOC,OAAO,CAACL,OAAQ;QAC9C,KAAK,IAAIM,KAAKH,MAAO;YACpB,IAAI,CAACF,GAAG,CAACK,EAAE,EAAE;gBACZL,GAAG,CAACK,EAAE,GAAG,EAAE;YACZ;YACAL,GAAG,CAACK,EAAE,CAACC,IAAI,CAACL;QACb;IACD;IACA,OAAOD;AACR"}
package/lib/cn/types.d.js CHANGED
@@ -4,3 +4,5 @@
4
4
  * @see https://en.wikipedia.org/wiki/Resident_Identity_Card
5
5
  * @see https://en.wikipedia.org/wiki/Foreign_Permanent_Resident_ID_Card
6
6
  */ export { };
7
+
8
+ //# sourceMappingURL=types.d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/types.d.ts"],"sourcesContent":["/**\n * 居民身份证\n *\n * @see https://en.wikipedia.org/wiki/Resident_Identity_Card\n * @see https://en.wikipedia.org/wiki/Foreign_Permanent_Resident_ID_Card\n */\nexport interface ResidentIdentityCardInfo {\n\t/**\n\t * @title 姓名\n\t */\n\tname: string;\n\t/**\n\t * @title 性别\n\t */\n\tsex: 'Male' | 'Female';\n\t/**\n\t * @title 民族\n\t * 例如 '汉'/'满'/'回'\n\t */\n\tethnicity: string;\n\t/**\n\t * @title 出生日期\n\t * @format date\n\t */\n\tbirthDate: string;\n\t/**\n\t * @title 地址\n\t *\n\t * - 通常为 domicile/户籍地\n\t */\n\taddress: string;\n\t/**\n\t * @title 身份证号\n\t */\n\tidentityCardNumber: string;\n\t/**\n\t * @title 签发机关\n\t */\n\tissuer: string;\n\t/**\n\t * @title 有效期开始日期\n\t * @format date\n\t */\n\tvalidStartDate: string;\n\t/**\n\t * @title 有效期结束日期\n\t * @format date\n\t * @description 如长期有效则为 空\n\t */\n\tvalidEndDate?: string;\n}\n"],"names":[],"mappings":"AAAA;;;;;CAKC,GACD,WA4CC"}
@@ -1,11 +1,10 @@
1
1
  import { formatLogObject } from "./formatLogObject.js";
2
- export function createStandardConsolaReporter() {
3
- var _ref = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, _ref_format = _ref.format, format = _ref_format === void 0 ? formatLogObject : _ref_format;
2
+ export function createStandardConsolaReporter({ format = formatLogObject } = {}) {
4
3
  return {
5
- log: function (o, ctx) {
6
- var out = format(o, ctx);
7
- var fn = console.log;
8
- var level = o.level;
4
+ log: (o, ctx) => {
5
+ let out = format(o, ctx);
6
+ let fn = console.log;
7
+ const { level } = o;
9
8
  if (level < 1) {
10
9
  fn = console.error;
11
10
  }
@@ -16,3 +15,4 @@ export function createStandardConsolaReporter() {
16
15
  }
17
16
  };
18
17
  }
18
+ //# sourceMappingURL=createStandardConsolaReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/consola/createStandardConsolaReporter.ts"],"sourcesContent":["import type { ConsolaOptions, ConsolaReporter, LogObject } from 'consola/core';\nimport { formatLogObject } from './formatLogObject';\n\ntype Formatter = (\n\to: LogObject,\n\tctx: {\n\t\toptions: ConsolaOptions;\n\t},\n) => string;\n\nexport function createStandardConsolaReporter({\n\tformat = formatLogObject,\n}: {\n\tformat?: Formatter;\n} = {}): ConsolaReporter {\n\treturn {\n\t\tlog: (o, ctx) => {\n\t\t\tlet out = format(o, ctx);\n\t\t\tlet fn = console.log;\n\n\t\t\tconst { level } = o;\n\t\t\tif (level < 1) {\n\t\t\t\tfn = console.error;\n\t\t\t} else if (level === 1) {\n\t\t\t\tfn = console.warn;\n\t\t\t}\n\n\t\t\tfn(out);\n\t\t},\n\t};\n}\n"],"names":["formatLogObject","createStandardConsolaReporter","format","log","o","ctx","out","fn","console","level","error","warn"],"mappings":"AACA,SAASA,eAAe,QAAQ,oBAAoB;AASpD,OAAO,SAASC,8BAA8B,EAC7CC,SAASF,eAAe,EAGxB,GAAG,CAAC,CAAC;IACL,OAAO;QACNG,KAAK,CAACC,GAAGC;YACR,IAAIC,MAAMJ,OAAOE,GAAGC;YACpB,IAAIE,KAAKC,QAAQL,GAAG;YAEpB,MAAM,EAAEM,KAAK,EAAE,GAAGL;YAClB,IAAIK,QAAQ,GAAG;gBACdF,KAAKC,QAAQE,KAAK;YACnB,OAAO,IAAID,UAAU,GAAG;gBACvBF,KAAKC,QAAQG,IAAI;YAClB;YAEAJ,GAAGD;QACJ;IACD;AACD"}
@@ -1,93 +1,7 @@
1
- function _array_like_to_array(arr, len) {
2
- if (len == null || len > arr.length) len = arr.length;
3
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
- return arr2;
5
- }
6
- function _array_with_holes(arr) {
7
- if (Array.isArray(arr)) return arr;
8
- }
9
- function _array_without_holes(arr) {
10
- if (Array.isArray(arr)) return _array_like_to_array(arr);
11
- }
12
- function _define_property(obj, key, value) {
13
- if (key in obj) {
14
- Object.defineProperty(obj, key, {
15
- value: value,
16
- enumerable: true,
17
- configurable: true,
18
- writable: true
19
- });
20
- } else {
21
- obj[key] = value;
22
- }
23
- return obj;
24
- }
25
- function _iterable_to_array(iter) {
26
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
27
- }
28
- function _non_iterable_rest() {
29
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
30
- }
31
- function _non_iterable_spread() {
32
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
33
- }
34
- function _object_spread(target) {
35
- for(var i = 1; i < arguments.length; i++){
36
- var source = arguments[i] != null ? arguments[i] : {};
37
- var ownKeys = Object.keys(source);
38
- if (typeof Object.getOwnPropertySymbols === "function") {
39
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
40
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
41
- }));
42
- }
43
- ownKeys.forEach(function(key) {
44
- _define_property(target, key, source[key]);
45
- });
46
- }
47
- return target;
48
- }
49
- function ownKeys(object, enumerableOnly) {
50
- var keys = Object.keys(object);
51
- if (Object.getOwnPropertySymbols) {
52
- var symbols = Object.getOwnPropertySymbols(object);
53
- if (enumerableOnly) {
54
- symbols = symbols.filter(function(sym) {
55
- return Object.getOwnPropertyDescriptor(object, sym).enumerable;
56
- });
57
- }
58
- keys.push.apply(keys, symbols);
59
- }
60
- return keys;
61
- }
62
- function _object_spread_props(target, source) {
63
- source = source != null ? source : {};
64
- if (Object.getOwnPropertyDescriptors) {
65
- Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
66
- } else {
67
- ownKeys(Object(source)).forEach(function(key) {
68
- Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
69
- });
70
- }
71
- return target;
72
- }
73
- function _to_array(arr) {
74
- return _array_with_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_rest();
75
- }
76
- function _to_consumable_array(arr) {
77
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
78
- }
79
- function _unsupported_iterable_to_array(o, minLen) {
80
- if (!o) return;
81
- if (typeof o === "string") return _array_like_to_array(o, minLen);
82
- var n = Object.prototype.toString.call(o).slice(8, -1);
83
- if (n === "Object" && o.constructor) n = o.constructor.name;
84
- if (n === "Map" || n === "Set") return Array.from(n);
85
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
86
- }
87
- import colors, { Chalk } from 'chalk';
88
- import dayjs from 'dayjs';
89
- import { isDevelopment } from 'std-env';
90
- var LevelColors = {
1
+ import colors, { Chalk } from "chalk";
2
+ import dayjs from "dayjs";
3
+ import { isDevelopment } from "std-env";
4
+ const LevelColors = {
91
5
  trace: colors.gray,
92
6
  debug: colors.cyan,
93
7
  info: colors.blueBright,
@@ -103,7 +17,7 @@ var LevelColors = {
103
17
  box: colors.white,
104
18
  verbose: colors.green
105
19
  };
106
- var levelShort = {
20
+ const levelShort = {
107
21
  trace: 'TRAC',
108
22
  debug: 'DEBG',
109
23
  info: 'INFO',
@@ -119,49 +33,48 @@ var levelShort = {
119
33
  box: 'BOX ',
120
34
  verbose: 'VERB'
121
35
  };
122
- var start = Date.now();
123
- var Colors = colors;
124
- var NoColors = new Chalk({
36
+ const start = Date.now();
37
+ const Colors = colors;
38
+ const NoColors = new Chalk({
125
39
  level: 0
126
40
  });
127
41
  export function formatLogObject(o, ctx) {
128
- var _ctx_options_formatOptions, _ctx_options;
129
- var shouldColor = Boolean((_ctx_options = ctx.options) === null || _ctx_options === void 0 ? void 0 : (_ctx_options_formatOptions = _ctx_options.formatOptions) === null || _ctx_options_formatOptions === void 0 ? void 0 : _ctx_options_formatOptions.colors);
130
- var date = o.date, type = o.type, tag = o.tag;
42
+ const shouldColor = Boolean(ctx.options?.formatOptions?.colors);
43
+ let { date, type, tag } = o;
131
44
  type = type === 'log' ? 'info' : type;
132
- var _$colors = shouldColor ? Colors : NoColors;
133
- var color = LevelColors[type] || _$colors.white;
45
+ const colors = shouldColor ? Colors : NoColors;
46
+ let color = LevelColors[type] || colors.white;
134
47
  if (!shouldColor) {
135
- color = function(v) {
136
- return v;
137
- };
48
+ color = (v)=>v;
138
49
  }
139
- var levelText = levelShort[type] || type.toUpperCase().slice(0, 4); // Get first 4 chars, consistent uppercase
140
- var line = '';
141
- var out = [];
50
+ const levelText = levelShort[type] || type.toUpperCase().slice(0, 4); // Get first 4 chars, consistent uppercase
51
+ let line = '';
52
+ let out = [];
142
53
  // Timestamp
143
54
  if (isDevelopment) {
144
55
  // process.hrtime.bigint()
145
- var diff = (date.getTime() - start) / 1000;
146
- out.push(_$colors.gray(diff.toFixed(3).padStart(7, ' ')));
56
+ let diff = (date.getTime() - start) / 1000;
57
+ out.push(colors.gray(diff.toFixed(3).padStart(7, ' ')));
147
58
  } else {
148
- out.push(_$colors.gray(dayjs(date).format('YYYY-MM-DD HH:mm:ss.SSS')));
59
+ out.push(colors.gray(dayjs(date).format('YYYY-MM-DD HH:mm:ss.SSS')));
149
60
  }
150
61
  // Log Level (colored)
151
62
  // Pad to 4 characters
152
63
  out.push(color(levelText.padEnd(4, ' ')));
153
64
  if (tag) {
154
- out.push(_$colors.yellow("[".concat(tag, "]"))); // Added color for tag
65
+ out.push(colors.yellow(`[${tag}]`)); // Added color for tag
155
66
  }
156
67
  {
157
- var _formatArgs_split = _to_array(formatArgs(o.args, ctx).split('\n')), message = _formatArgs_split[0], additional = _formatArgs_split.slice(1);
68
+ const [message, ...additional] = formatArgs(o.args, {
69
+ colors: shouldColor
70
+ }).split('\n');
158
71
  out.push(characterFormat(message));
159
72
  line = out.join(' ');
160
73
  if (additional.length > 0) {
161
74
  line += characterFormat(additional.join('\n'));
162
75
  }
163
76
  if (type === 'trace') {
164
- var _err = new Error('Trace: ' + o.message);
77
+ const _err = new Error('Trace: ' + o.message);
165
78
  line += formatStack(_err.stack || '', _err.message);
166
79
  }
167
80
  }
@@ -181,32 +94,20 @@ export function formatLogObject(o, ctx) {
181
94
  }
182
95
  function characterFormat(str) {
183
96
  return str// highlight backticks
184
- .replace(/`([^`]+)`/gm, function(_, m) {
185
- return colors.cyan(m);
186
- })// underline underscores
187
- .replace(/\s+_([^_]+)_\s+/gm, function(_, m) {
188
- return " ".concat(colors.underline(m), " ");
189
- });
97
+ .replace(/`([^`]+)`/gm, (_, m)=>colors.cyan(m))// underline underscores
98
+ .replace(/\s+_([^_]+)_\s+/gm, (_, m)=>` ${colors.underline(m)} `);
190
99
  }
191
100
  function parseStack(stack, message) {
192
101
  // const cwd = process.cwd() + sep;
193
- var lines = stack.split('\n').splice(message.split('\n').length).map(function(l) {
194
- return l.trim().replace('file://', '');
195
- });
102
+ const lines = stack.split('\n').splice(message.split('\n').length).map((l)=>l.trim().replace('file://', ''));
196
103
  return lines;
197
104
  }
198
105
  function formatStack(stack, message, opts) {
199
- var indent = ' '.repeat(((opts === null || opts === void 0 ? void 0 : opts.errorLevel) || 0) + 1);
200
- return "\n".concat(indent) + parseStack(stack, message).map(function(line) {
201
- return ' ' + line.replace(/^at +/, function(m) {
202
- return colors.gray(m);
203
- }).replace(/\((.+)\)/, function(_, m) {
204
- return "(".concat(colors.cyan(m), ")");
205
- });
206
- }).join("\n".concat(indent));
106
+ const indent = ' '.repeat((opts?.errorLevel || 0) + 1);
107
+ return `\n${indent}` + parseStack(stack, message).map((line)=>' ' + line.replace(/^at +/, (m)=>colors.gray(m)).replace(/\((.+)\)/, (_, m)=>`(${colors.cyan(m)})`)).join(`\n${indent}`);
207
108
  }
208
109
  function formatArgs(args, opts) {
209
- var _args = args.map(function(arg) {
110
+ const _args = args.map((arg)=>{
210
111
  if (arg && typeof arg.stack === 'string') {
211
112
  return formatError(arg, opts);
212
113
  }
@@ -214,25 +115,44 @@ function formatArgs(args, opts) {
214
115
  });
215
116
  // Only supported with Node >= 10
216
117
  // https://nodejs.org/api/util.html#util_util_inspect_object_options
217
- return formatWithOptions.apply(void 0, [
218
- opts
219
- ].concat(_to_consumable_array(_args)));
220
- }
221
- function formatWithOptions(o) {
222
- for(var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++){
223
- params[_key - 1] = arguments[_key];
118
+ return formatWithOptions(Boolean(opts.colors), ..._args);
119
+ }
120
+ function formatWithOptions(shouldColor, ...params) {
121
+ return params.map((value)=>formatValue(value, shouldColor)).join(' ');
122
+ }
123
+ function formatValue(value, shouldColor = false) {
124
+ const colors = shouldColor ? Colors : NoColors;
125
+ if (value === null) return 'null';
126
+ if (value === undefined) return 'undefined';
127
+ if (typeof value === 'string') return value;
128
+ if (typeof value === 'number' || typeof value === 'boolean') return String(value);
129
+ if (typeof value === 'object' && value.constructor === Object) {
130
+ const entries = Object.entries(value);
131
+ if (entries.length === 0) return '{}';
132
+ return entries.map(([key, val])=>{
133
+ const keyStr = shouldColor ? colors.blue(key) : key;
134
+ const valStr = shouldColor ? colors.green(JSON.stringify(val)) : JSON.stringify(val);
135
+ return `${keyStr}=${valStr}`;
136
+ }).join(' ');
137
+ }
138
+ // For arrays and other objects, use JSON.stringify directly
139
+ try {
140
+ const result = JSON.stringify(value);
141
+ return shouldColor ? colors.green(result) : result;
142
+ } catch {
143
+ return String(value);
224
144
  }
225
- // import { formatWithOptions } from 'node:util';
226
- return params.join(' ');
227
145
  }
228
146
  function formatError(err, opts) {
229
- var _err_message;
230
- var message = (_err_message = err.message) !== null && _err_message !== void 0 ? _err_message : formatWithOptions(opts, err);
231
- var stack = err.stack ? formatStack(err.stack, message, opts) : '';
232
- var level = (opts === null || opts === void 0 ? void 0 : opts.errorLevel) || 0;
233
- var causedPrefix = level > 0 ? "".concat(' '.repeat(level), "[cause]: ") : '';
234
- var causedError = err.cause ? '\n\n' + formatError(err.cause, _object_spread_props(_object_spread({}, opts), {
147
+ const message = err.message ?? formatWithOptions(Boolean(opts.colors), err);
148
+ const stack = err.stack ? formatStack(err.stack, message, opts) : '';
149
+ const level = opts?.errorLevel || 0;
150
+ const causedPrefix = level > 0 ? `${' '.repeat(level)}[cause]: ` : '';
151
+ const causedError = err.cause ? '\n\n' + formatError(err.cause, {
152
+ ...opts,
235
153
  errorLevel: level + 1
236
- })) : '';
154
+ }) : '';
237
155
  return causedPrefix + message + '\n' + stack + causedError;
238
156
  }
157
+
158
+ //# sourceMappingURL=formatLogObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/consola/formatLogObject.ts"],"sourcesContent":["import colors, { Chalk, type ChalkInstance } from 'chalk';\nimport type { ConsolaOptions, FormatOptions, LogObject, LogType } from 'consola/core';\nimport dayjs from 'dayjs';\nimport { isDevelopment } from 'std-env';\n\nconst LevelColors: Record<LogType, (str: string) => string> = {\n\ttrace: colors.gray,\n\tdebug: colors.cyan,\n\tinfo: colors.blueBright,\n\twarn: colors.yellow,\n\terror: colors.red,\n\tfatal: colors.bgRed.white,\n\tsilent: colors.white,\n\tlog: colors.white,\n\tsuccess: colors.green,\n\tfail: colors.red,\n\tready: colors.green,\n\tstart: colors.cyan,\n\tbox: colors.white,\n\tverbose: colors.green,\n};\n\nconst levelShort: Record<LogType, string> = {\n\ttrace: 'TRAC',\n\tdebug: 'DEBG',\n\tinfo: 'INFO',\n\twarn: 'WARN',\n\terror: 'ERRO',\n\tfatal: 'FATL',\n\tsilent: 'SLNT',\n\tlog: 'LOG ', // Added space to make it 4 characters\n\tsuccess: 'SUCC',\n\tfail: 'FAIL',\n\tready: 'READ',\n\tstart: 'STRT',\n\tbox: 'BOX ', // Added space to make it 4 characters\n\tverbose: 'VERB',\n};\nconst start = Date.now();\n\nconst Colors: ChalkInstance = colors;\nconst NoColors = new Chalk({ level: 0 });\n\nexport function formatLogObject(\n\to: LogObject,\n\tctx: {\n\t\toptions: ConsolaOptions;\n\t},\n) {\n\tconst shouldColor = Boolean(ctx.options?.formatOptions?.colors);\n\n\tlet { date, type, tag } = o;\n\ttype = type === 'log' ? 'info' : type;\n\tconst colors = shouldColor ? Colors : NoColors;\n\tlet color = LevelColors[type] || colors.white;\n\tif (!shouldColor) {\n\t\tcolor = (v) => v;\n\t}\n\tconst levelText = levelShort[type] || type.toUpperCase().slice(0, 4); // Get first 4 chars, consistent uppercase\n\n\tlet line = '';\n\tlet out: string[] = [];\n\n\t// Timestamp\n\tif (isDevelopment) {\n\t\t// process.hrtime.bigint()\n\t\tlet diff = (date.getTime() - start) / 1000;\n\n\t\tout.push(colors.gray(diff.toFixed(3).padStart(7, ' ')));\n\t} else {\n\t\tout.push(colors.gray(dayjs(date).format('YYYY-MM-DD HH:mm:ss.SSS')));\n\t}\n\n\t// Log Level (colored)\n\t// Pad to 4 characters\n\tout.push(color(levelText.padEnd(4, ' ')));\n\n\tif (tag) {\n\t\tout.push(colors.yellow(`[${tag}]`)); // Added color for tag\n\t}\n\n\t{\n\t\tconst [message, ...additional] = formatArgs(o.args, { colors: shouldColor }).split('\\n');\n\n\t\tout.push(characterFormat(message));\n\n\t\tline = out.join(' ');\n\t\tif (additional.length > 0) {\n\t\t\tline += characterFormat(additional.join('\\n'));\n\t\t}\n\n\t\tif (type === 'trace') {\n\t\t\tconst _err = new Error('Trace: ' + o.message);\n\t\t\tline += formatStack(_err.stack || '', _err.message);\n\t\t}\n\t}\n\n\t// if (!message && typeof args[0] === 'string') {\n\t// message = args.shift();\n\t// }\n\t// if (message) {\n\t// out.push(message);\n\t// }\n\t// if (args.length) {\n\t// out.push(...args.map((a) => (typeof a === 'string' ? a : JSON.stringify(a)))); // Handle non-string args\n\t// }\n\n\t// todo format error\n\t// https://github.com/unjs/consola/blob/main/src/reporters/fancy.ts\n\n\t// return out.join(' '); // Increased spacing for better readability\n\treturn line;\n}\n\nfunction characterFormat(str: string) {\n\treturn (\n\t\tstr\n\t\t\t// highlight backticks\n\t\t\t.replace(/`([^`]+)`/gm, (_, m) => colors.cyan(m))\n\t\t\t// underline underscores\n\t\t\t.replace(/\\s+_([^_]+)_\\s+/gm, (_, m) => ` ${colors.underline(m)} `)\n\t);\n}\n\nfunction parseStack(stack: string, message: string) {\n\t// const cwd = process.cwd() + sep;\n\n\tconst lines = stack\n\t\t.split('\\n')\n\t\t.splice(message.split('\\n').length)\n\t\t.map(\n\t\t\t(l) => l.trim().replace('file://', ''),\n\t\t\t// .replace(cwd, '')\n\t\t);\n\n\treturn lines;\n}\n\nfunction formatStack(stack: string, message: string, opts?: FormatOptions) {\n\tconst indent = ' '.repeat((opts?.errorLevel || 0) + 1);\n\treturn (\n\t\t`\\n${indent}`\n\t\t+ parseStack(stack, message)\n\t\t\t.map(\n\t\t\t\t(line) =>\n\t\t\t\t\t' ' + line.replace(/^at +/, (m) => colors.gray(m)).replace(/\\((.+)\\)/, (_, m) => `(${colors.cyan(m)})`),\n\t\t\t)\n\t\t\t.join(`\\n${indent}`)\n\t);\n}\n\nfunction formatArgs(args: any[], opts: FormatOptions) {\n\tconst _args = args.map((arg) => {\n\t\tif (arg && typeof arg.stack === 'string') {\n\t\t\treturn formatError(arg, opts);\n\t\t}\n\t\treturn arg;\n\t});\n\n\t// Only supported with Node >= 10\n\t// https://nodejs.org/api/util.html#util_util_inspect_object_options\n\treturn formatWithOptions(Boolean(opts.colors), ..._args);\n}\n\nfunction formatWithOptions(shouldColor: boolean, ...params: any[]) {\n\treturn params.map((value) => formatValue(value, shouldColor)).join(' ');\n}\n\nfunction formatValue(value: any, shouldColor: boolean = false): string {\n\tconst colors = shouldColor ? Colors : NoColors;\n\n\tif (value === null) return 'null';\n\tif (value === undefined) return 'undefined';\n\tif (typeof value === 'string') return value;\n\tif (typeof value === 'number' || typeof value === 'boolean') return String(value);\n\n\tif (typeof value === 'object' && value.constructor === Object) {\n\t\tconst entries = Object.entries(value);\n\t\tif (entries.length === 0) return '{}';\n\t\treturn entries\n\t\t\t.map(([key, val]) => {\n\t\t\t\tconst keyStr = shouldColor ? colors.blue(key) : key;\n\t\t\t\tconst valStr = shouldColor ? colors.green(JSON.stringify(val)) : JSON.stringify(val);\n\t\t\t\treturn `${keyStr}=${valStr}`;\n\t\t\t})\n\t\t\t.join(' ');\n\t}\n\n\t// For arrays and other objects, use JSON.stringify directly\n\ttry {\n\t\tconst result = JSON.stringify(value);\n\t\treturn shouldColor ? colors.green(result) : result;\n\t} catch {\n\t\treturn String(value);\n\t}\n}\n\nfunction formatError(err: any, opts: FormatOptions): string {\n\tconst message = err.message ?? formatWithOptions(Boolean(opts.colors), err);\n\tconst stack = err.stack ? formatStack(err.stack, message, opts) : '';\n\n\tconst level = opts?.errorLevel || 0;\n\tconst causedPrefix = level > 0 ? `${' '.repeat(level)}[cause]: ` : '';\n\tconst causedError = err.cause ? '\\n\\n' + formatError(err.cause, { ...opts, errorLevel: level + 1 }) : '';\n\n\treturn causedPrefix + message + '\\n' + stack + causedError;\n}\n"],"names":["colors","Chalk","dayjs","isDevelopment","LevelColors","trace","gray","debug","cyan","info","blueBright","warn","yellow","error","red","fatal","bgRed","white","silent","log","success","green","fail","ready","start","box","verbose","levelShort","Date","now","Colors","NoColors","level","formatLogObject","o","ctx","shouldColor","Boolean","options","formatOptions","date","type","tag","color","v","levelText","toUpperCase","slice","line","out","diff","getTime","push","toFixed","padStart","format","padEnd","message","additional","formatArgs","args","split","characterFormat","join","length","_err","Error","formatStack","stack","str","replace","_","m","underline","parseStack","lines","splice","map","l","trim","opts","indent","repeat","errorLevel","_args","arg","formatError","formatWithOptions","params","value","formatValue","undefined","String","Object","entries","key","val","keyStr","blue","valStr","JSON","stringify","result","err","causedPrefix","causedError","cause"],"mappings":"AAAA,OAAOA,UAAUC,KAAK,QAA4B,QAAQ;AAE1D,OAAOC,WAAW,QAAQ;AAC1B,SAASC,aAAa,QAAQ,UAAU;AAExC,MAAMC,cAAwD;IAC7DC,OAAOL,OAAOM,IAAI;IAClBC,OAAOP,OAAOQ,IAAI;IAClBC,MAAMT,OAAOU,UAAU;IACvBC,MAAMX,OAAOY,MAAM;IACnBC,OAAOb,OAAOc,GAAG;IACjBC,OAAOf,OAAOgB,KAAK,CAACC,KAAK;IACzBC,QAAQlB,OAAOiB,KAAK;IACpBE,KAAKnB,OAAOiB,KAAK;IACjBG,SAASpB,OAAOqB,KAAK;IACrBC,MAAMtB,OAAOc,GAAG;IAChBS,OAAOvB,OAAOqB,KAAK;IACnBG,OAAOxB,OAAOQ,IAAI;IAClBiB,KAAKzB,OAAOiB,KAAK;IACjBS,SAAS1B,OAAOqB,KAAK;AACtB;AAEA,MAAMM,aAAsC;IAC3CtB,OAAO;IACPE,OAAO;IACPE,MAAM;IACNE,MAAM;IACNE,OAAO;IACPE,OAAO;IACPG,QAAQ;IACRC,KAAK;IACLC,SAAS;IACTE,MAAM;IACNC,OAAO;IACPC,OAAO;IACPC,KAAK;IACLC,SAAS;AACV;AACA,MAAMF,QAAQI,KAAKC,GAAG;AAEtB,MAAMC,SAAwB9B;AAC9B,MAAM+B,WAAW,IAAI9B,MAAM;IAAE+B,OAAO;AAAE;AAEtC,OAAO,SAASC,gBACfC,CAAY,EACZC,GAEC;IAED,MAAMC,cAAcC,QAAQF,IAAIG,OAAO,EAAEC,eAAevC;IAExD,IAAI,EAAEwC,IAAI,EAAEC,IAAI,EAAEC,GAAG,EAAE,GAAGR;IAC1BO,OAAOA,SAAS,QAAQ,SAASA;IACjC,MAAMzC,SAASoC,cAAcN,SAASC;IACtC,IAAIY,QAAQvC,WAAW,CAACqC,KAAK,IAAIzC,OAAOiB,KAAK;IAC7C,IAAI,CAACmB,aAAa;QACjBO,QAAQ,CAACC,IAAMA;IAChB;IACA,MAAMC,YAAYlB,UAAU,CAACc,KAAK,IAAIA,KAAKK,WAAW,GAAGC,KAAK,CAAC,GAAG,IAAI,0CAA0C;IAEhH,IAAIC,OAAO;IACX,IAAIC,MAAgB,EAAE;IAEtB,YAAY;IACZ,IAAI9C,eAAe;QAClB,0BAA0B;QAC1B,IAAI+C,OAAO,AAACV,CAAAA,KAAKW,OAAO,KAAK3B,KAAI,IAAK;QAEtCyB,IAAIG,IAAI,CAACpD,OAAOM,IAAI,CAAC4C,KAAKG,OAAO,CAAC,GAAGC,QAAQ,CAAC,GAAG;IAClD,OAAO;QACNL,IAAIG,IAAI,CAACpD,OAAOM,IAAI,CAACJ,MAAMsC,MAAMe,MAAM,CAAC;IACzC;IAEA,sBAAsB;IACtB,sBAAsB;IACtBN,IAAIG,IAAI,CAACT,MAAME,UAAUW,MAAM,CAAC,GAAG;IAEnC,IAAId,KAAK;QACRO,IAAIG,IAAI,CAACpD,OAAOY,MAAM,CAAC,CAAC,CAAC,EAAE8B,IAAI,CAAC,CAAC,IAAI,sBAAsB;IAC5D;IAEA;QACC,MAAM,CAACe,SAAS,GAAGC,WAAW,GAAGC,WAAWzB,EAAE0B,IAAI,EAAE;YAAE5D,QAAQoC;QAAY,GAAGyB,KAAK,CAAC;QAEnFZ,IAAIG,IAAI,CAACU,gBAAgBL;QAEzBT,OAAOC,IAAIc,IAAI,CAAC;QAChB,IAAIL,WAAWM,MAAM,GAAG,GAAG;YAC1BhB,QAAQc,gBAAgBJ,WAAWK,IAAI,CAAC;QACzC;QAEA,IAAItB,SAAS,SAAS;YACrB,MAAMwB,OAAO,IAAIC,MAAM,YAAYhC,EAAEuB,OAAO;YAC5CT,QAAQmB,YAAYF,KAAKG,KAAK,IAAI,IAAIH,KAAKR,OAAO;QACnD;IACD;IAEA,iDAAiD;IACjD,4BAA4B;IAC5B,IAAI;IACJ,iBAAiB;IACjB,uBAAuB;IACvB,IAAI;IACJ,qBAAqB;IACrB,6GAA6G;IAC7G,IAAI;IAEJ,oBAAoB;IACpB,mEAAmE;IAEnE,qEAAqE;IACrE,OAAOT;AACR;AAEA,SAASc,gBAAgBO,GAAW;IACnC,OACCA,GACC,sBAAsB;KACrBC,OAAO,CAAC,eAAe,CAACC,GAAGC,IAAMxE,OAAOQ,IAAI,CAACgE,GAC9C,wBAAwB;KACvBF,OAAO,CAAC,qBAAqB,CAACC,GAAGC,IAAM,CAAC,CAAC,EAAExE,OAAOyE,SAAS,CAACD,GAAG,CAAC,CAAC;AAErE;AAEA,SAASE,WAAWN,KAAa,EAAEX,OAAe;IACjD,mCAAmC;IAEnC,MAAMkB,QAAQP,MACZP,KAAK,CAAC,MACNe,MAAM,CAACnB,QAAQI,KAAK,CAAC,MAAMG,MAAM,EACjCa,GAAG,CACH,CAACC,IAAMA,EAAEC,IAAI,GAAGT,OAAO,CAAC,WAAW;IAIrC,OAAOK;AACR;AAEA,SAASR,YAAYC,KAAa,EAAEX,OAAe,EAAEuB,IAAoB;IACxE,MAAMC,SAAS,KAAKC,MAAM,CAAC,AAACF,CAAAA,MAAMG,cAAc,CAAA,IAAK;IACrD,OACC,CAAC,EAAE,EAAEF,QAAQ,GACXP,WAAWN,OAAOX,SAClBoB,GAAG,CACH,CAAC7B,OACA,OAAOA,KAAKsB,OAAO,CAAC,SAAS,CAACE,IAAMxE,OAAOM,IAAI,CAACkE,IAAIF,OAAO,CAAC,YAAY,CAACC,GAAGC,IAAM,CAAC,CAAC,EAAExE,OAAOQ,IAAI,CAACgE,GAAG,CAAC,CAAC,GAExGT,IAAI,CAAC,CAAC,EAAE,EAAEkB,QAAQ;AAEtB;AAEA,SAAStB,WAAWC,IAAW,EAAEoB,IAAmB;IACnD,MAAMI,QAAQxB,KAAKiB,GAAG,CAAC,CAACQ;QACvB,IAAIA,OAAO,OAAOA,IAAIjB,KAAK,KAAK,UAAU;YACzC,OAAOkB,YAAYD,KAAKL;QACzB;QACA,OAAOK;IACR;IAEA,iCAAiC;IACjC,oEAAoE;IACpE,OAAOE,kBAAkBlD,QAAQ2C,KAAKhF,MAAM,MAAMoF;AACnD;AAEA,SAASG,kBAAkBnD,WAAoB,EAAE,GAAGoD,MAAa;IAChE,OAAOA,OAAOX,GAAG,CAAC,CAACY,QAAUC,YAAYD,OAAOrD,cAAc2B,IAAI,CAAC;AACpE;AAEA,SAAS2B,YAAYD,KAAU,EAAErD,cAAuB,KAAK;IAC5D,MAAMpC,SAASoC,cAAcN,SAASC;IAEtC,IAAI0D,UAAU,MAAM,OAAO;IAC3B,IAAIA,UAAUE,WAAW,OAAO;IAChC,IAAI,OAAOF,UAAU,UAAU,OAAOA;IACtC,IAAI,OAAOA,UAAU,YAAY,OAAOA,UAAU,WAAW,OAAOG,OAAOH;IAE3E,IAAI,OAAOA,UAAU,YAAYA,MAAM,WAAW,KAAKI,QAAQ;QAC9D,MAAMC,UAAUD,OAAOC,OAAO,CAACL;QAC/B,IAAIK,QAAQ9B,MAAM,KAAK,GAAG,OAAO;QACjC,OAAO8B,QACLjB,GAAG,CAAC,CAAC,CAACkB,KAAKC,IAAI;YACf,MAAMC,SAAS7D,cAAcpC,OAAOkG,IAAI,CAACH,OAAOA;YAChD,MAAMI,SAAS/D,cAAcpC,OAAOqB,KAAK,CAAC+E,KAAKC,SAAS,CAACL,QAAQI,KAAKC,SAAS,CAACL;YAChF,OAAO,GAAGC,OAAO,CAAC,EAAEE,QAAQ;QAC7B,GACCpC,IAAI,CAAC;IACR;IAEA,4DAA4D;IAC5D,IAAI;QACH,MAAMuC,SAASF,KAAKC,SAAS,CAACZ;QAC9B,OAAOrD,cAAcpC,OAAOqB,KAAK,CAACiF,UAAUA;IAC7C,EAAE,OAAM;QACP,OAAOV,OAAOH;IACf;AACD;AAEA,SAASH,YAAYiB,GAAQ,EAAEvB,IAAmB;IACjD,MAAMvB,UAAU8C,IAAI9C,OAAO,IAAI8B,kBAAkBlD,QAAQ2C,KAAKhF,MAAM,GAAGuG;IACvE,MAAMnC,QAAQmC,IAAInC,KAAK,GAAGD,YAAYoC,IAAInC,KAAK,EAAEX,SAASuB,QAAQ;IAElE,MAAMhD,QAAQgD,MAAMG,cAAc;IAClC,MAAMqB,eAAexE,QAAQ,IAAI,GAAG,KAAKkD,MAAM,CAAClD,OAAO,SAAS,CAAC,GAAG;IACpE,MAAMyE,cAAcF,IAAIG,KAAK,GAAG,SAASpB,YAAYiB,IAAIG,KAAK,EAAE;QAAE,GAAG1B,IAAI;QAAEG,YAAYnD,QAAQ;IAAE,KAAK;IAEtG,OAAOwE,eAAe/C,UAAU,OAAOW,QAAQqC;AAChD"}