@wener/common 2.0.1 → 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 (405) 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 +48 -0
  14. package/lib/cn/ChineseResidentIdNo.js.map +1 -0
  15. package/lib/cn/ChineseResidentIdNo.mod.js +1 -0
  16. package/lib/cn/{ResidentIdentityCardNumber.test.js → ChineseResidentIdNo.test.js} +7 -6
  17. package/lib/cn/DivisionCode.js +217 -301
  18. package/lib/cn/DivisionCode.js.map +1 -0
  19. package/lib/cn/DivisionCode.mod.js +1 -0
  20. package/lib/cn/DivisionCode.test.js +9 -15
  21. package/lib/cn/Mod11.js +43 -0
  22. package/lib/cn/Mod11.js.map +1 -0
  23. package/lib/cn/Mod31.js +49 -0
  24. package/lib/cn/Mod31.js.map +1 -0
  25. package/lib/cn/UnifiedSocialCreditCode.js +137 -113
  26. package/lib/cn/UnifiedSocialCreditCode.js.map +1 -0
  27. package/lib/cn/UnifiedSocialCreditCode.mod.js +1 -0
  28. package/lib/cn/UnifiedSocialCreditCode.test.js +1 -1
  29. package/lib/cn/formatChineseAmount.js +77 -0
  30. package/lib/cn/formatChineseAmount.js.map +1 -0
  31. package/lib/cn/index.js +6 -2
  32. package/lib/cn/index.js.map +1 -0
  33. package/lib/cn/mod.js +6 -0
  34. package/lib/cn/parseChineseNumber.js +94 -0
  35. package/lib/cn/parseChineseNumber.js.map +1 -0
  36. package/lib/cn/parseChineseNumber.test.js +278 -0
  37. package/lib/cn/pinyin/cartesianProduct.js +22 -0
  38. package/lib/cn/pinyin/cartesianProduct.js.map +1 -0
  39. package/lib/cn/pinyin/cartesianProduct.test.js +179 -0
  40. package/lib/cn/pinyin/data.json +23573 -0
  41. package/lib/cn/pinyin/loader.js +14 -0
  42. package/lib/cn/pinyin/loader.js.map +1 -0
  43. package/lib/cn/pinyin/preload.js +3 -0
  44. package/lib/cn/pinyin/preload.js.map +1 -0
  45. package/lib/cn/pinyin/toPinyin.test.js +167 -0
  46. package/lib/cn/pinyin/toPinyinPure.js +33 -0
  47. package/lib/cn/pinyin/toPinyinPure.js.map +1 -0
  48. package/lib/cn/pinyin/transform.js +14 -0
  49. package/lib/cn/pinyin/transform.js.map +1 -0
  50. package/lib/cn/types.d.js +2 -0
  51. package/lib/cn/types.d.js.map +1 -0
  52. package/lib/consola/createStandardConsolaReporter.js +6 -6
  53. package/lib/consola/createStandardConsolaReporter.js.map +1 -0
  54. package/lib/consola/formatLogObject.js +67 -135
  55. package/lib/consola/formatLogObject.js.map +1 -0
  56. package/lib/consola/formatLogObject.test.js +184 -0
  57. package/lib/consola/index.js +1 -0
  58. package/lib/consola/index.js.map +1 -0
  59. package/lib/data/formatSort.js +6 -5
  60. package/lib/data/formatSort.js.map +1 -0
  61. package/lib/data/index.js +1 -0
  62. package/lib/data/index.js.map +1 -0
  63. package/lib/data/maybeNumber.js +5 -7
  64. package/lib/data/maybeNumber.js.map +1 -0
  65. package/lib/data/parseSort.js +22 -28
  66. package/lib/data/parseSort.js.map +1 -0
  67. package/lib/data/resolvePagination.js +13 -17
  68. package/lib/data/resolvePagination.js.map +1 -0
  69. package/lib/data/types.d.js +2 -0
  70. package/lib/data/types.d.js.map +1 -0
  71. package/lib/dayjs/dayjs.js +40 -0
  72. package/lib/dayjs/dayjs.js.map +1 -0
  73. package/lib/dayjs/formatDuration.js +59 -0
  74. package/lib/dayjs/formatDuration.js.map +1 -0
  75. package/lib/dayjs/formatDuration.test.js +90 -0
  76. package/lib/dayjs/index.js +5 -0
  77. package/lib/dayjs/index.js.map +1 -0
  78. package/lib/dayjs/parseDuration.js +29 -0
  79. package/lib/dayjs/parseDuration.js.map +1 -0
  80. package/lib/dayjs/parseRelativeTime.js +90 -0
  81. package/lib/dayjs/parseRelativeTime.js.map +1 -0
  82. package/lib/dayjs/parseRelativeTime.test.js +247 -0
  83. package/lib/dayjs/resolveRelativeTime.js +158 -0
  84. package/lib/dayjs/resolveRelativeTime.js.map +1 -0
  85. package/lib/dayjs/resolveRelativeTime.test.js +310 -0
  86. package/lib/decimal/index.js +2 -0
  87. package/lib/decimal/index.js.map +1 -0
  88. package/lib/decimal/parseDecimal.js +15 -0
  89. package/lib/decimal/parseDecimal.js.map +1 -0
  90. package/lib/emittery/emitter.js +10 -0
  91. package/lib/emittery/emitter.js.map +1 -0
  92. package/lib/emittery/index.js +2 -0
  93. package/lib/emittery/index.js.map +1 -0
  94. package/lib/foundation/schema/SexType.js +16 -0
  95. package/lib/foundation/schema/SexType.js.map +1 -0
  96. package/lib/foundation/schema/index.js +2 -0
  97. package/lib/foundation/schema/index.js.map +1 -0
  98. package/lib/foundation/schema/parseSexType.js +19 -0
  99. package/lib/foundation/schema/parseSexType.js.map +1 -0
  100. package/lib/foundation/schema/types.js +7 -0
  101. package/lib/foundation/schema/types.js.map +1 -0
  102. package/lib/fs/FileSystemError.js +23 -0
  103. package/lib/fs/FileSystemError.js.map +1 -0
  104. package/lib/fs/IFileSystem.d.js +3 -0
  105. package/lib/fs/IFileSystem.d.js.map +1 -0
  106. package/lib/fs/MemoryFileSystem.test.js +188 -0
  107. package/lib/fs/createBrowserFileSystem.js +248 -0
  108. package/lib/fs/createBrowserFileSystem.js.map +1 -0
  109. package/lib/fs/createMemoryFileSystem.js +516 -0
  110. package/lib/fs/createMemoryFileSystem.js.map +1 -0
  111. package/lib/fs/createSandboxFileSystem.js +108 -0
  112. package/lib/fs/createSandboxFileSystem.js.map +1 -0
  113. package/lib/fs/createWebDavFileSystem.js +137 -0
  114. package/lib/fs/createWebDavFileSystem.js.map +1 -0
  115. package/lib/fs/findMimeType.js +17 -0
  116. package/lib/fs/findMimeType.js.map +1 -0
  117. package/lib/fs/index.js +8 -0
  118. package/lib/fs/index.js.map +1 -0
  119. package/lib/fs/orpc/FileSystemContract.js +93 -0
  120. package/lib/fs/orpc/FileSystemContract.js.map +1 -0
  121. package/lib/fs/orpc/createContractClientFileSystem.js +93 -0
  122. package/lib/fs/orpc/createContractClientFileSystem.js.map +1 -0
  123. package/lib/fs/orpc/index.js +3 -0
  124. package/lib/fs/orpc/index.js.map +1 -0
  125. package/lib/fs/orpc/server/createFileSystemContractImpl.js +63 -0
  126. package/lib/fs/orpc/server/createFileSystemContractImpl.js.map +1 -0
  127. package/lib/fs/orpc/server/index.js +2 -0
  128. package/lib/fs/orpc/server/index.js.map +1 -0
  129. package/lib/fs/s3/createS3MiniFileSystem.js +705 -0
  130. package/lib/fs/s3/createS3MiniFileSystem.js.map +1 -0
  131. package/lib/fs/s3/index.js +2 -0
  132. package/lib/fs/s3/index.js.map +1 -0
  133. package/lib/fs/s3/s3mini.test.js +584 -0
  134. package/lib/fs/scandir.js +59 -0
  135. package/lib/fs/scandir.js.map +1 -0
  136. package/lib/fs/server/createDatabaseFileSystem.js +750 -0
  137. package/lib/fs/server/createDatabaseFileSystem.js.map +1 -0
  138. package/lib/fs/server/createNodeFileSystem.js +401 -0
  139. package/lib/fs/server/createNodeFileSystem.js.map +1 -0
  140. package/lib/fs/server/dbfs.test.js +221 -0
  141. package/lib/fs/server/index.js +2 -0
  142. package/lib/fs/server/index.js.map +1 -0
  143. package/lib/fs/server/loadTestDatabase.js +127 -0
  144. package/lib/fs/server/loadTestDatabase.js.map +1 -0
  145. package/lib/fs/tests/runFileSystemTest.js +318 -0
  146. package/lib/fs/tests/runFileSystemTest.js.map +1 -0
  147. package/lib/fs/types.js +27 -0
  148. package/lib/fs/types.js.map +1 -0
  149. package/lib/fs/utils/getFileUrl.js +35 -0
  150. package/lib/fs/utils/getFileUrl.js.map +1 -0
  151. package/lib/fs/utils.js +22 -0
  152. package/lib/fs/utils.js.map +1 -0
  153. package/lib/index.js +1 -0
  154. package/lib/index.js.map +1 -0
  155. package/lib/jsonschema/JsonSchema.js +146 -172
  156. package/lib/jsonschema/JsonSchema.js.map +1 -0
  157. package/lib/jsonschema/forEachJsonSchema.js +44 -0
  158. package/lib/jsonschema/forEachJsonSchema.js.map +1 -0
  159. package/lib/jsonschema/index.js +2 -0
  160. package/lib/jsonschema/index.js.map +1 -0
  161. package/lib/jsonschema/types.d.js +2 -0
  162. package/lib/jsonschema/types.d.js.map +1 -0
  163. package/lib/meta/defineFileType.js +20 -103
  164. package/lib/meta/defineFileType.js.map +1 -0
  165. package/lib/meta/defineInit.js +31 -250
  166. package/lib/meta/defineInit.js.map +1 -0
  167. package/lib/meta/defineMetadata.js +24 -140
  168. package/lib/meta/defineMetadata.js.map +1 -0
  169. package/lib/meta/index.js +1 -0
  170. package/lib/meta/index.js.map +1 -0
  171. package/lib/orpc/createOpenApiContractClient.js +27 -0
  172. package/lib/orpc/createOpenApiContractClient.js.map +1 -0
  173. package/lib/orpc/createRpcContractClient.js +34 -0
  174. package/lib/orpc/createRpcContractClient.js.map +1 -0
  175. package/lib/orpc/index.js +3 -0
  176. package/lib/orpc/index.js.map +1 -0
  177. package/lib/orpc/resolveLinkPlugins.js +28 -0
  178. package/lib/orpc/resolveLinkPlugins.js.map +1 -0
  179. package/lib/password/PHC.js +63 -87
  180. package/lib/password/PHC.js.map +1 -0
  181. package/lib/password/PHC.test.js +11 -3
  182. package/lib/password/Password.js +30 -292
  183. package/lib/password/Password.js.map +1 -0
  184. package/lib/password/Password.test.js +35 -22
  185. package/lib/password/createArgon2PasswordAlgorithm.js +35 -191
  186. package/lib/password/createArgon2PasswordAlgorithm.js.map +1 -0
  187. package/lib/password/createBase64PasswordAlgorithm.js +8 -141
  188. package/lib/password/createBase64PasswordAlgorithm.js.map +1 -0
  189. package/lib/password/createBcryptPasswordAlgorithm.js +13 -168
  190. package/lib/password/createBcryptPasswordAlgorithm.js.map +1 -0
  191. package/lib/password/createPBKDF2PasswordAlgorithm.js +46 -228
  192. package/lib/password/createPBKDF2PasswordAlgorithm.js.map +1 -0
  193. package/lib/password/createScryptPasswordAlgorithm.js +55 -211
  194. package/lib/password/createScryptPasswordAlgorithm.js.map +1 -0
  195. package/lib/password/index.js +1 -0
  196. package/lib/password/index.js.map +1 -0
  197. package/lib/password/server/index.js +1 -0
  198. package/lib/password/server/index.js.map +1 -0
  199. package/lib/resource/Identifiable.js +2 -0
  200. package/lib/resource/Identifiable.js.map +1 -0
  201. package/lib/resource/ListQuery.js +47 -0
  202. package/lib/resource/ListQuery.js.map +1 -0
  203. package/lib/resource/getTitleOfResource.js +3 -5
  204. package/lib/resource/getTitleOfResource.js.map +1 -0
  205. package/lib/resource/index.js +2 -0
  206. package/lib/resource/index.js.map +1 -0
  207. package/lib/resource/schema/AnyResourceSchema.js +3 -2
  208. package/lib/resource/schema/AnyResourceSchema.js.map +1 -0
  209. package/lib/resource/schema/BaseResourceSchema.js +2 -1
  210. package/lib/resource/schema/BaseResourceSchema.js.map +1 -0
  211. package/lib/resource/schema/ResourceActionType.js +6 -4
  212. package/lib/resource/schema/ResourceActionType.js.map +1 -0
  213. package/lib/resource/schema/ResourceStatus.js +5 -3
  214. package/lib/resource/schema/ResourceStatus.js.map +1 -0
  215. package/lib/resource/schema/ResourceType.js +5 -3
  216. package/lib/resource/schema/ResourceType.js.map +1 -0
  217. package/lib/resource/schema/index.js +6 -0
  218. package/lib/resource/schema/index.js.map +1 -0
  219. package/lib/resource/schema/types.js +16 -20
  220. package/lib/resource/schema/types.js.map +1 -0
  221. package/lib/s3/formatS3Url.js +65 -0
  222. package/lib/s3/formatS3Url.js.map +1 -0
  223. package/lib/s3/formatS3Url.test.js +262 -0
  224. package/lib/s3/index.js +3 -0
  225. package/lib/s3/index.js.map +1 -0
  226. package/lib/s3/parseS3Url.js +65 -0
  227. package/lib/s3/parseS3Url.js.map +1 -0
  228. package/lib/s3/parseS3Url.test.js +270 -0
  229. package/lib/schema/SchemaRegistry.js +45 -0
  230. package/lib/schema/SchemaRegistry.js.map +1 -0
  231. package/lib/schema/SchemaRegistry.mod.js +2 -0
  232. package/lib/schema/TypeSchema.d.js +2 -0
  233. package/lib/schema/TypeSchema.d.js.map +1 -0
  234. package/lib/schema/createSchemaData.js +26 -125
  235. package/lib/schema/createSchemaData.js.map +1 -0
  236. package/lib/schema/findJsonSchemaByPath.js +13 -36
  237. package/lib/schema/findJsonSchemaByPath.js.map +1 -0
  238. package/lib/schema/formatZodError.js +140 -0
  239. package/lib/schema/formatZodError.js.map +1 -0
  240. package/lib/schema/formatZodError.test.js +196 -0
  241. package/lib/schema/getSchemaCache.js +5 -5
  242. package/lib/schema/getSchemaCache.js.map +1 -0
  243. package/lib/schema/getSchemaOptions.js +8 -11
  244. package/lib/schema/getSchemaOptions.js.map +1 -0
  245. package/lib/schema/index.js +2 -0
  246. package/lib/schema/index.js.map +1 -0
  247. package/lib/schema/toJsonSchema.js +47 -290
  248. package/lib/schema/toJsonSchema.js.map +1 -0
  249. package/lib/schema/validate.js +33 -45
  250. package/lib/schema/validate.js.map +1 -0
  251. package/lib/tools/generateSchema.js +39 -197
  252. package/lib/tools/generateSchema.js.map +1 -0
  253. package/lib/tools/renderJsonSchemaToMarkdownDoc.js +55 -143
  254. package/lib/tools/renderJsonSchemaToMarkdownDoc.js.map +1 -0
  255. package/lib/utils/buildBaseUrl.js +13 -0
  256. package/lib/utils/buildBaseUrl.js.map +1 -0
  257. package/lib/utils/buildRedactorFormSchema.js +59 -0
  258. package/lib/utils/buildRedactorFormSchema.js.map +1 -0
  259. package/lib/utils/getEstimateProcessTime.js +21 -0
  260. package/lib/utils/getEstimateProcessTime.js.map +1 -0
  261. package/lib/utils/index.js +4 -0
  262. package/lib/utils/index.js.map +1 -0
  263. package/lib/utils/resolveFeatureOptions.js +12 -0
  264. package/lib/utils/resolveFeatureOptions.js.map +1 -0
  265. package/package.json +77 -20
  266. package/src/ai/qwen3vl/index.ts +1 -0
  267. package/src/ai/qwen3vl/utils.ts +36 -0
  268. package/src/ai/vision/DocLayoutElementTypeSchema.ts +30 -0
  269. package/src/ai/vision/ImageAnnotationSchema.ts +60 -0
  270. package/src/ai/vision/index.ts +2 -0
  271. package/src/ai/vision/resolveImageAnnotation.ts +135 -0
  272. package/src/cn/ChineseResidentIdNo.test.ts +18 -0
  273. package/src/cn/ChineseResidentIdNo.ts +74 -0
  274. package/src/cn/DivisionCode.test.ts +3 -13
  275. package/src/cn/DivisionCode.ts +138 -193
  276. package/src/cn/{Mod11Checksum.ts → Mod11.ts} +3 -1
  277. package/src/cn/{Mod31Checksum.ts → Mod31.ts} +2 -0
  278. package/src/cn/UnifiedSocialCreditCode.test.ts +2 -2
  279. package/src/cn/UnifiedSocialCreditCode.ts +119 -124
  280. package/src/cn/__snapshots__/ChineseResidentIdNo.test.ts.snap +14 -0
  281. package/src/cn/__snapshots__/UnifiedSocialCreditCode.test.ts.snap +41 -12
  282. package/src/cn/formatChineseAmount.ts +61 -0
  283. package/src/cn/index.ts +6 -2
  284. package/src/cn/parseChineseNumber.test.ts +159 -0
  285. package/src/cn/parseChineseNumber.ts +97 -0
  286. package/src/cn/pinyin/cartesianProduct.test.ts +64 -0
  287. package/src/cn/pinyin/cartesianProduct.ts +24 -0
  288. package/src/cn/pinyin/data.json +23573 -0
  289. package/src/cn/pinyin/loader.ts +12 -0
  290. package/src/cn/pinyin/preload.ts +3 -0
  291. package/src/cn/pinyin/toPinyin.test.ts +12 -0
  292. package/src/cn/pinyin/toPinyinPure.ts +43 -0
  293. package/src/cn/pinyin/transform.ts +12 -0
  294. package/src/consola/formatLogObject.test.ts +27 -0
  295. package/src/consola/formatLogObject.ts +46 -10
  296. package/src/dayjs/dayjs.ts +40 -0
  297. package/src/dayjs/formatDuration.test.ts +14 -0
  298. package/src/dayjs/formatDuration.ts +86 -0
  299. package/src/dayjs/index.ts +5 -0
  300. package/src/dayjs/parseDuration.ts +40 -0
  301. package/src/dayjs/parseRelativeTime.test.ts +185 -0
  302. package/src/dayjs/parseRelativeTime.ts +115 -0
  303. package/src/dayjs/resolveRelativeTime.test.ts +357 -0
  304. package/src/dayjs/resolveRelativeTime.ts +167 -0
  305. package/src/decimal/index.ts +1 -0
  306. package/src/decimal/parseDecimal.ts +16 -0
  307. package/src/emittery/emitter.ts +9 -0
  308. package/src/emittery/index.ts +1 -0
  309. package/src/foundation/schema/SexType.ts +21 -0
  310. package/src/foundation/schema/index.ts +1 -0
  311. package/src/foundation/schema/parseSexType.ts +19 -0
  312. package/src/foundation/schema/types.ts +8 -0
  313. package/src/fs/FileSystemError.ts +26 -0
  314. package/src/fs/IFileSystem.d.ts +102 -0
  315. package/src/fs/MemoryFileSystem.test.ts +37 -0
  316. package/src/fs/createBrowserFileSystem.ts +291 -0
  317. package/src/fs/createMemoryFileSystem.ts +604 -0
  318. package/src/fs/createSandboxFileSystem.ts +136 -0
  319. package/src/fs/createWebDavFileSystem.ts +172 -0
  320. package/src/fs/findMimeType.ts +23 -0
  321. package/src/fs/index.ts +8 -0
  322. package/src/fs/orpc/FileSystemContract.ts +92 -0
  323. package/src/fs/orpc/createContractClientFileSystem.ts +115 -0
  324. package/src/fs/orpc/index.ts +2 -0
  325. package/src/fs/orpc/server/createFileSystemContractImpl.ts +64 -0
  326. package/src/fs/orpc/server/index.ts +1 -0
  327. package/src/fs/s3/createS3MiniFileSystem.ts +830 -0
  328. package/src/fs/s3/index.ts +1 -0
  329. package/src/fs/s3/s3mini.test.ts +264 -0
  330. package/src/fs/scandir.ts +75 -0
  331. package/src/fs/server/createDatabaseFileSystem.ts +668 -0
  332. package/src/fs/server/createNodeFileSystem.ts +499 -0
  333. package/src/fs/server/dbfs.test.ts +47 -0
  334. package/src/fs/server/index.ts +1 -0
  335. package/src/fs/server/loadTestDatabase.ts +131 -0
  336. package/src/fs/tests/runFileSystemTest.ts +288 -0
  337. package/src/fs/types.ts +29 -0
  338. package/src/fs/utils/getFileUrl.ts +44 -0
  339. package/src/fs/utils.ts +23 -0
  340. package/src/jsonschema/JsonSchema.ts +118 -110
  341. package/src/jsonschema/forEachJsonSchema.ts +50 -0
  342. package/src/jsonschema/index.ts +1 -0
  343. package/src/orpc/createOpenApiContractClient.ts +52 -0
  344. package/src/orpc/createRpcContractClient.ts +50 -0
  345. package/src/orpc/index.ts +2 -0
  346. package/src/orpc/resolveLinkPlugins.ts +29 -0
  347. package/src/password/PHC.ts +3 -3
  348. package/src/password/Password.test.ts +1 -1
  349. package/src/password/Password.ts +2 -2
  350. package/src/password/createPBKDF2PasswordAlgorithm.ts +2 -2
  351. package/src/resource/ListQuery.ts +53 -0
  352. package/src/resource/index.ts +1 -0
  353. package/src/resource/schema/AnyResourceSchema.ts +17 -3
  354. package/src/resource/schema/index.ts +5 -0
  355. package/src/s3/formatS3Url.test.ts +254 -0
  356. package/src/s3/formatS3Url.ts +84 -0
  357. package/src/s3/index.ts +2 -0
  358. package/src/s3/parseS3Url.test.ts +258 -0
  359. package/src/s3/parseS3Url.ts +88 -0
  360. package/src/schema/SchemaRegistry.ts +48 -0
  361. package/src/schema/createSchemaData.ts +1 -1
  362. package/src/schema/formatZodError.test.ts +196 -0
  363. package/src/schema/formatZodError.ts +151 -0
  364. package/src/schema/getSchemaOptions.ts +3 -3
  365. package/src/schema/index.ts +1 -0
  366. package/src/utils/buildBaseUrl.ts +12 -0
  367. package/src/utils/buildRedactorFormSchema.ts +85 -0
  368. package/src/utils/getEstimateProcessTime.ts +36 -0
  369. package/src/utils/index.ts +5 -0
  370. package/src/utils/resolveFeatureOptions.ts +14 -0
  371. package/lib/cn/Mod11Checksum.js +0 -85
  372. package/lib/cn/Mod31Checksum.js +0 -97
  373. package/lib/cn/ResidentIdentityCardNumber.js +0 -50
  374. package/lib/cn/formatDate.js +0 -13
  375. package/lib/cn/parseSex.js +0 -20
  376. package/lib/resource/schema/SchemaRegistry.js +0 -38
  377. package/lib/resource/schema/SexType.js +0 -10
  378. package/lib/search/AdvanceSearch.js +0 -9
  379. package/lib/search/AdvanceSearch.test.js +0 -435
  380. package/lib/search/formatAdvanceSearch.js +0 -78
  381. package/lib/search/index.js +0 -1
  382. package/lib/search/optimizeAdvanceSearch.js +0 -143
  383. package/lib/search/parseAdvanceSearch.js +0 -20
  384. package/lib/search/parser.d.js +0 -1
  385. package/lib/search/parser.js +0 -3088
  386. package/lib/search/types.d.js +0 -1
  387. package/src/cn/ResidentIdentityCardNumber.test.ts +0 -17
  388. package/src/cn/ResidentIdentityCardNumber.ts +0 -96
  389. package/src/cn/__snapshots__/ResidentIdentityCardNumber.test.ts.snap +0 -15
  390. package/src/cn/formatDate.ts +0 -12
  391. package/src/cn/parseSex.ts +0 -13
  392. package/src/resource/schema/SchemaRegistry.ts +0 -42
  393. package/src/resource/schema/SexType.ts +0 -13
  394. package/src/search/AdvanceSearch.test.ts +0 -149
  395. package/src/search/AdvanceSearch.ts +0 -14
  396. package/src/search/Makefile +0 -2
  397. package/src/search/__snapshots__/AdvanceSearch.test.ts.snap +0 -675
  398. package/src/search/formatAdvanceSearch.ts +0 -52
  399. package/src/search/index.ts +0 -1
  400. package/src/search/optimizeAdvanceSearch.ts +0 -77
  401. package/src/search/parseAdvanceSearch.ts +0 -23
  402. package/src/search/parser.d.ts +0 -8
  403. package/src/search/parser.js +0 -2794
  404. package/src/search/parser.peggy +0 -237
  405. package/src/search/types.d.ts +0 -45
@@ -0,0 +1,12 @@
1
+ import { setCharToPinyinTable } from './toPinyinPure';
2
+ import { transformData } from './transform';
3
+
4
+ export function loadCharToPinyinTable(): Promise<Record<string, string[]>> {
5
+ return import('./data.json' as unknown as string, { with: { type: 'json' } })
6
+ .then((v) => v.default as Record<string, string[]>)
7
+ .then((data) => {
8
+ let out = transformData(data);
9
+ setCharToPinyinTable(out);
10
+ return out;
11
+ });
12
+ }
@@ -0,0 +1,3 @@
1
+ import { loadCharToPinyinTable } from './loader';
2
+
3
+ await loadCharToPinyinTable();
@@ -0,0 +1,12 @@
1
+ import { assert, test } from 'vitest';
2
+ import { loadCharToPinyinTable } from './loader';
3
+ import { toPinyinPure } from './toPinyinPure';
4
+
5
+ test('toPinyin', async () => {
6
+ await loadCharToPinyinTable();
7
+ assert.deepEqual(toPinyinPure('真思'), ['zhen,sai', 'zhen,si']);
8
+
9
+ // char to py -> 350k
10
+ // py to char -> 145k
11
+ // csv -> 96k
12
+ });
@@ -0,0 +1,43 @@
1
+ import { cartesianProduct } from './cartesianProduct';
2
+
3
+ let CharToPinyinTable: Record<string, string[]> | undefined;
4
+
5
+ export function setCharToPinyinTable(table: Record<string, string[]>) {
6
+ CharToPinyinTable = table;
7
+ }
8
+
9
+ export function getCharToPinyinTable() {
10
+ if (!CharToPinyinTable) {
11
+ return {};
12
+ }
13
+ return CharToPinyinTable;
14
+ }
15
+
16
+ export function toPinyinPureFirst(s: string, sep = ','): string {
17
+ let tab = getCharToPinyinTable();
18
+ return s
19
+ .split('')
20
+ .map((c) => tab[c]?.[0])
21
+ .filter(Boolean)
22
+ .join(sep);
23
+ }
24
+
25
+ export function toPinyinPure(s: string, sep = ','): string[] {
26
+ let tab = getCharToPinyinTable();
27
+ // ensure order
28
+ return cartesianProduct(s.split('').map((c) => tab[c] || ''))
29
+ .sort((a, b) => {
30
+ for (let i = 0; i < a.length; i++) {
31
+ let x = a[i];
32
+ let y = b[i];
33
+ if (x < y) return -1;
34
+ if (x > y) return 1;
35
+ }
36
+ return 0;
37
+ })
38
+ .map((v) => v.filter(Boolean).join(sep));
39
+ }
40
+
41
+ // export function lookupPinyinPure(s: string): Array<Array<string>> {
42
+ // return cartesianProductOfArray(s.split('').map(c => Lookup[c]));
43
+ // }
@@ -0,0 +1,12 @@
1
+ export function transformData(input: Record<string, string[]>) {
2
+ let out = {} as Record<string, string[]>;
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
+ }
@@ -0,0 +1,27 @@
1
+ import consola from 'consola';
2
+ import { Consola, type ConsolaInstance } from 'consola/core';
3
+ import { test } from 'vitest';
4
+ import { createStandardConsolaReporter } from './createStandardConsolaReporter';
5
+
6
+ test('formatLogObject', async () => {
7
+ const log: ConsolaInstance = new Consola({
8
+ reporters: [createStandardConsolaReporter({})],
9
+ }).create({
10
+ formatOptions: {
11
+ colors: true,
12
+ },
13
+ });
14
+ consola.warn({ name: 'wener' });
15
+
16
+ log.info({ name: 'wener' });
17
+ log.info('message', {
18
+ name: 'wener',
19
+ });
20
+ log.info('complex object', {
21
+ name: 'wener',
22
+ age: 30,
23
+ active: true,
24
+ tags: ['developer', 'typescript'],
25
+ meta: { level: 'senior', remote: true },
26
+ });
27
+ });
@@ -1,9 +1,9 @@
1
- import colors from 'chalk';
1
+ import colors, { Chalk, type ChalkInstance } from 'chalk';
2
2
  import type { ConsolaOptions, FormatOptions, LogObject, LogType } from 'consola/core';
3
3
  import dayjs from 'dayjs';
4
4
  import { isDevelopment } from 'std-env';
5
5
 
6
- const levelColors: Record<LogType, (str: string) => string> = {
6
+ const LevelColors: Record<LogType, (str: string) => string> = {
7
7
  trace: colors.gray,
8
8
  debug: colors.cyan,
9
9
  info: colors.blueBright,
@@ -38,16 +38,24 @@ const levelShort: Record<LogType, string> = {
38
38
  };
39
39
  const start = Date.now();
40
40
 
41
+ const Colors: ChalkInstance = colors;
42
+ const NoColors = new Chalk({ level: 0 });
43
+
41
44
  export function formatLogObject(
42
45
  o: LogObject,
43
46
  ctx: {
44
47
  options: ConsolaOptions;
45
48
  },
46
49
  ) {
50
+ const shouldColor = Boolean(ctx.options?.formatOptions?.colors);
51
+
47
52
  let { date, type, tag } = o;
48
53
  type = type === 'log' ? 'info' : type;
49
-
50
- const color = levelColors[type] || colors.white;
54
+ const colors = shouldColor ? Colors : NoColors;
55
+ let color = LevelColors[type] || colors.white;
56
+ if (!shouldColor) {
57
+ color = (v) => v;
58
+ }
51
59
  const levelText = levelShort[type] || type.toUpperCase().slice(0, 4); // Get first 4 chars, consistent uppercase
52
60
 
53
61
  let line = '';
@@ -72,7 +80,7 @@ export function formatLogObject(
72
80
  }
73
81
 
74
82
  {
75
- const [message, ...additional] = formatArgs(o.args, ctx).split('\n');
83
+ const [message, ...additional] = formatArgs(o.args, { colors: shouldColor }).split('\n');
76
84
 
77
85
  out.push(characterFormat(message));
78
86
 
@@ -151,16 +159,44 @@ function formatArgs(args: any[], opts: FormatOptions) {
151
159
 
152
160
  // Only supported with Node >= 10
153
161
  // https://nodejs.org/api/util.html#util_util_inspect_object_options
154
- return formatWithOptions(opts, ..._args);
162
+ return formatWithOptions(Boolean(opts.colors), ..._args);
155
163
  }
156
164
 
157
- function formatWithOptions(o: any, ...params: any[]) {
158
- // import { formatWithOptions } from 'node:util';
159
- return params.join(' ');
165
+ function formatWithOptions(shouldColor: boolean, ...params: any[]) {
166
+ return params.map((value) => formatValue(value, shouldColor)).join(' ');
167
+ }
168
+
169
+ function formatValue(value: any, shouldColor: boolean = false): string {
170
+ const colors = shouldColor ? Colors : NoColors;
171
+
172
+ if (value === null) return 'null';
173
+ if (value === undefined) return 'undefined';
174
+ if (typeof value === 'string') return value;
175
+ if (typeof value === 'number' || typeof value === 'boolean') return String(value);
176
+
177
+ if (typeof value === 'object' && value.constructor === Object) {
178
+ const entries = Object.entries(value);
179
+ if (entries.length === 0) return '{}';
180
+ return entries
181
+ .map(([key, val]) => {
182
+ const keyStr = shouldColor ? colors.blue(key) : key;
183
+ const valStr = shouldColor ? colors.green(JSON.stringify(val)) : JSON.stringify(val);
184
+ return `${keyStr}=${valStr}`;
185
+ })
186
+ .join(' ');
187
+ }
188
+
189
+ // For arrays and other objects, use JSON.stringify directly
190
+ try {
191
+ const result = JSON.stringify(value);
192
+ return shouldColor ? colors.green(result) : result;
193
+ } catch {
194
+ return String(value);
195
+ }
160
196
  }
161
197
 
162
198
  function formatError(err: any, opts: FormatOptions): string {
163
- const message = err.message ?? formatWithOptions(opts, err);
199
+ const message = err.message ?? formatWithOptions(Boolean(opts.colors), err);
164
200
  const stack = err.stack ? formatStack(err.stack, message, opts) : '';
165
201
 
166
202
  const level = opts?.errorLevel || 0;
@@ -0,0 +1,40 @@
1
+ import dayjs from 'dayjs';
2
+ import advancedFormat from 'dayjs/plugin/advancedFormat.js';
3
+ import dayOfYear from 'dayjs/plugin/dayOfYear.js';
4
+ import duration from 'dayjs/plugin/duration.js';
5
+ import isBetween from 'dayjs/plugin/isBetween.js';
6
+ import isSameOrAfter from 'dayjs/plugin/isSameOrAfter.js';
7
+ import isSameOrBefore from 'dayjs/plugin/isSameOrBefore.js';
8
+ import isToday from 'dayjs/plugin/isToday.js';
9
+ import isTomorrow from 'dayjs/plugin/isTomorrow.js';
10
+ import isYesterday from 'dayjs/plugin/isYesterday.js';
11
+ import localeData from 'dayjs/plugin/localeData.js';
12
+ import objectSupport from 'dayjs/plugin/objectSupport.js';
13
+ import quarterOfYear from 'dayjs/plugin/quarterOfYear.js';
14
+ import relativeTime from 'dayjs/plugin/relativeTime.js';
15
+ import timezone from 'dayjs/plugin/timezone.js';
16
+ import toObject from 'dayjs/plugin/toObject.js';
17
+ import utc from 'dayjs/plugin/utc.js';
18
+ import 'dayjs/locale/zh-cn.js';
19
+ import 'dayjs/locale/zh.js';
20
+
21
+ dayjs.extend(advancedFormat);
22
+ dayjs.extend(dayOfYear);
23
+ dayjs.extend(duration);
24
+ dayjs.extend(isBetween);
25
+ dayjs.extend(isSameOrAfter);
26
+ dayjs.extend(isSameOrBefore);
27
+ dayjs.extend(isToday);
28
+ dayjs.extend(isTomorrow);
29
+ dayjs.extend(isYesterday);
30
+ dayjs.extend(localeData);
31
+ dayjs.extend(objectSupport);
32
+ dayjs.extend(quarterOfYear);
33
+ dayjs.extend(relativeTime);
34
+ dayjs.extend(timezone);
35
+ dayjs.extend(toObject);
36
+ dayjs.extend(utc);
37
+ dayjs.locale('zh-cn');
38
+ dayjs.tz.setDefault('Asia/Shanghai');
39
+
40
+ export { dayjs };
@@ -0,0 +1,14 @@
1
+ import { expect, test } from 'vitest';
2
+ import { formatDuration } from './formatDuration';
3
+
4
+ test('formatDuration', () => {
5
+ for (const [a, b] of [
6
+ [0, '0ms'],
7
+ [1000, '1s'],
8
+ [1000 * 60, '1m'],
9
+ [1000 * 60 + 1000, '1m1s'],
10
+ [1000 * 60 + 1000 + 1, '1m1s1ms'],
11
+ ]) {
12
+ expect(formatDuration(a)).toBe(b);
13
+ }
14
+ });
@@ -0,0 +1,86 @@
1
+ import { type OpUnitType, type UnitTypeLongPlural } from 'dayjs';
2
+ import { type Duration } from 'dayjs/plugin/duration';
3
+ import { parseDuration } from './parseDuration';
4
+
5
+ type FormatDurationOptions = {
6
+ humanize?: boolean;
7
+ format?: string | 'human' | 'humanize' | 'iso' | 'auto';
8
+ iso?: boolean;
9
+ };
10
+
11
+ export type MaybeDuration =
12
+ | number
13
+ | string
14
+ | Duration
15
+ | Partial<{
16
+ [unit in Exclude<UnitTypeLongPlural, 'dates'> | 'weeks']: number;
17
+ }>
18
+ | {
19
+ value: number;
20
+ unit?: Exclude<OpUnitType, 'date' | 'dates'>;
21
+ }
22
+ | undefined
23
+ | null;
24
+
25
+ export function formatDuration(value: MaybeDuration, o?: FormatDurationOptions): string | undefined {
26
+ const v = parseDuration(value);
27
+ if (v === undefined || v === null) {
28
+ return;
29
+ }
30
+
31
+ let { format, humanize, iso } = o || {};
32
+ // Use local variables instead of modifying o directly
33
+ switch (format) {
34
+ case 'human':
35
+ case 'humanize':
36
+ humanize = true;
37
+ format = undefined;
38
+ break;
39
+ case 'iso':
40
+ iso = true;
41
+ format = undefined;
42
+ break;
43
+ case 'auto':
44
+ format = undefined;
45
+ break;
46
+ }
47
+
48
+ if (humanize) {
49
+ return v.humanize();
50
+ }
51
+ if (iso) {
52
+ return v.toISOString();
53
+ }
54
+ if (format) {
55
+ return v.format(format);
56
+ }
57
+
58
+ // auto format
59
+ // 1h2m3s
60
+ if (v.asDays() > 1) {
61
+ let s = v.toISOString();
62
+ return s.replace('P', '').replace('T', '').toLowerCase();
63
+ }
64
+
65
+ {
66
+ let parts: string[] = [];
67
+ let h = v.hours();
68
+ let m = v.minutes();
69
+ let s = v.seconds();
70
+ let ms = v.milliseconds();
71
+
72
+ if (h > 0) {
73
+ parts.push(`${h}h`);
74
+ }
75
+ if (m > 0) {
76
+ parts.push(`${m}m`);
77
+ }
78
+ if (s > 0) {
79
+ parts.push(`${s}s`);
80
+ }
81
+ if (ms > 0 || (h === 0 && m === 0 && s === 0)) {
82
+ parts.push(`${ms}ms`);
83
+ }
84
+ return parts.join('');
85
+ }
86
+ }
@@ -0,0 +1,5 @@
1
+ export { dayjs } from './dayjs';
2
+ export { parseDuration, type MaybeDuration } from './parseDuration';
3
+ export { formatDuration } from './formatDuration';
4
+
5
+ export { resolveRelativeTime } from './resolveRelativeTime';
@@ -0,0 +1,40 @@
1
+ import type { OpUnitType, UnitTypeLongPlural } from 'dayjs';
2
+ import type { Duration } from 'dayjs/plugin/duration';
3
+ import { dayjs } from './dayjs';
4
+
5
+ export type MaybeDuration =
6
+ | number
7
+ | string
8
+ | Duration
9
+ | Partial<{
10
+ [unit in Exclude<UnitTypeLongPlural, 'dates'> | 'weeks']: number;
11
+ }>
12
+ | {
13
+ value: number;
14
+ unit?: Exclude<OpUnitType, 'date' | 'dates'>;
15
+ }
16
+ | undefined
17
+ | null;
18
+
19
+ export function parseDuration(value: MaybeDuration): Duration | undefined {
20
+ if (!value && value !== 0) {
21
+ return;
22
+ }
23
+ let duration: Duration;
24
+ if (typeof value === 'number') {
25
+ duration = dayjs.duration(value);
26
+ } else if (typeof value === 'string' && value.startsWith('P')) {
27
+ // PT0S
28
+ duration = dayjs.duration(value);
29
+ } else if (typeof value === 'object' && 'value' in value) {
30
+ duration = dayjs.duration(value.value, value.unit);
31
+ } else if (dayjs.isDuration(value)) {
32
+ duration = value;
33
+ } else if (typeof value === 'object') {
34
+ duration = dayjs.duration(value);
35
+ } else {
36
+ console.warn(`Invalid duration value:`, value);
37
+ return;
38
+ }
39
+ return duration;
40
+ }
@@ -0,0 +1,185 @@
1
+ import dayjs from 'dayjs';
2
+ import duration from 'dayjs/plugin/duration';
3
+ import { describe, expect, it } from 'vitest';
4
+ import { parseRelativeTime } from './parseRelativeTime';
5
+
6
+ dayjs.extend(duration);
7
+
8
+ describe('parseRelativeTime', () => {
9
+ it('should return empty array for "now"', () => {
10
+ const result = parseRelativeTime('now');
11
+ expect(result).toEqual([]);
12
+ });
13
+
14
+ it('should parse simple addition operations', () => {
15
+ const result = parseRelativeTime('now+1h');
16
+ expect(result).toHaveLength(1);
17
+ expect(result[0]).toEqual({
18
+ operator: '+',
19
+ duration: dayjs.duration({ hours: 1 }),
20
+ });
21
+ });
22
+
23
+ it('should parse simple subtraction operations', () => {
24
+ const result = parseRelativeTime('now-30m');
25
+ expect(result).toHaveLength(1);
26
+ expect(result[0]).toEqual({
27
+ operator: '-',
28
+ duration: dayjs.duration({ minutes: 30 }),
29
+ });
30
+ });
31
+
32
+ it('should parse milliseconds', () => {
33
+ const result = parseRelativeTime('now+500ms');
34
+ expect(result).toHaveLength(1);
35
+ expect(result[0]).toEqual({
36
+ operator: '+',
37
+ duration: dayjs.duration({ milliseconds: 500 }),
38
+ });
39
+ });
40
+
41
+ it('should parse complex duration combinations', () => {
42
+ const result = parseRelativeTime('now+1d6h30m');
43
+ expect(result).toHaveLength(1);
44
+ expect(result[0]).toEqual({
45
+ operator: '+',
46
+ duration: dayjs.duration({ days: 1, hours: 6, minutes: 30 }),
47
+ });
48
+ });
49
+
50
+ it('should parse truncation operations', () => {
51
+ const result = parseRelativeTime('now/d');
52
+ expect(result).toHaveLength(1);
53
+ expect(result[0]).toEqual({
54
+ operator: '/',
55
+ unit: 'd',
56
+ });
57
+
58
+ const result2 = parseRelativeTime('now\\M');
59
+ expect(result2).toHaveLength(1);
60
+ expect(result2[0]).toEqual({
61
+ operator: '\\',
62
+ unit: 'M',
63
+ });
64
+ });
65
+
66
+ it('should parse multiple operations', () => {
67
+ const result = parseRelativeTime('now-1h+30m');
68
+ expect(result).toHaveLength(2);
69
+ expect(result[0]).toEqual({
70
+ operator: '-',
71
+ duration: dayjs.duration({ hours: 1 }),
72
+ });
73
+ expect(result[1]).toEqual({
74
+ operator: '+',
75
+ duration: dayjs.duration({ minutes: 30 }),
76
+ });
77
+ });
78
+
79
+ it('should parse mixed arithmetic and truncation operations', () => {
80
+ const result = parseRelativeTime('now-1M/M');
81
+ expect(result).toHaveLength(2);
82
+ expect(result[0]).toEqual({
83
+ operator: '-',
84
+ duration: dayjs.duration({ months: 1 }),
85
+ });
86
+ expect(result[1]).toEqual({
87
+ operator: '/',
88
+ unit: 'M',
89
+ });
90
+ });
91
+
92
+ it('should handle all supported units', () => {
93
+ const units = ['ms', 's', 'm', 'h', 'd', 'w', 'M', 'Q', 'y'];
94
+
95
+ for (const unit of units) {
96
+ const result = parseRelativeTime(`now+1${unit}`);
97
+ expect(result).toHaveLength(1);
98
+ expect(result[0]).toEqual({
99
+ operator: '+',
100
+ duration: dayjs.duration({ [unit]: 1 }),
101
+ });
102
+ }
103
+ });
104
+
105
+ it('should handle complex multi-unit expressions', () => {
106
+ const result = parseRelativeTime('now+1y2M3w4d5h6m7s8ms');
107
+ expect(result).toHaveLength(1);
108
+ expect(result[0]).toEqual({
109
+ operator: '+',
110
+ duration: dayjs.duration({
111
+ years: 1,
112
+ months: 2,
113
+ weeks: 3,
114
+ days: 4,
115
+ hours: 5,
116
+ minutes: 6,
117
+ seconds: 7,
118
+ milliseconds: 8,
119
+ }),
120
+ });
121
+ });
122
+
123
+ it('should handle same unit multiple times (should sum)', () => {
124
+ const result = parseRelativeTime('now+1h2h3h');
125
+ expect(result).toHaveLength(1);
126
+ expect(result[0]).toEqual({
127
+ operator: '+',
128
+ duration: dayjs.duration({ hours: 6 }), // 1+2+3
129
+ });
130
+ });
131
+
132
+ it('should throw error for invalid format', () => {
133
+ expect(() => parseRelativeTime('invalid')).toThrow('Invalid relative time format');
134
+ expect(() => parseRelativeTime('now+')).toThrow('Invalid relative time format');
135
+ expect(() => parseRelativeTime('now+abc')).toThrow('Invalid duration specification');
136
+ });
137
+
138
+ it('should throw error for invalid units in truncation', () => {
139
+ expect(() => parseRelativeTime('now/invalid')).toThrow('Invalid unit');
140
+ });
141
+
142
+ it('should throw error for invalid units in duration', () => {
143
+ expect(() => parseRelativeTime('now+1invalid')).toThrow('Invalid unit');
144
+ });
145
+
146
+ it('should handle whitespace correctly', () => {
147
+ // The regex should handle operands without extra whitespace issues
148
+ const result = parseRelativeTime('now+1h30m');
149
+ expect(result).toHaveLength(1);
150
+ expect(result[0]).toEqual({
151
+ operator: '+',
152
+ duration: dayjs.duration({ hours: 1, minutes: 30 }),
153
+ });
154
+ });
155
+
156
+ it('should parse real-world examples', () => {
157
+ // Last 24 hours
158
+ const result1 = parseRelativeTime('now-24h');
159
+ expect(result1).toHaveLength(1);
160
+ expect(result1[0]).toEqual({
161
+ operator: '-',
162
+ duration: dayjs.duration({ hours: 24 }),
163
+ });
164
+
165
+ // Start of previous month
166
+ const result2 = parseRelativeTime('now-1M/M');
167
+ expect(result2).toHaveLength(2);
168
+ expect(result2[0]).toEqual({
169
+ operator: '-',
170
+ duration: dayjs.duration({ months: 1 }),
171
+ });
172
+ expect(result2[1]).toEqual({
173
+ operator: '/',
174
+ unit: 'M',
175
+ });
176
+
177
+ // Complex time ago
178
+ const result3 = parseRelativeTime('now-1w2d3h');
179
+ expect(result3).toHaveLength(1);
180
+ expect(result3[0]).toEqual({
181
+ operator: '-',
182
+ duration: dayjs.duration({ weeks: 1, days: 2, hours: 3 }),
183
+ });
184
+ });
185
+ });