@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,2 @@
1
+ export { fromQwen3VlBbox2d, toQwen3VlBbox2d } from "./utils.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ai/qwen3vl/index.ts"],"sourcesContent":["export { fromQwen3VlBbox2d, toQwen3VlBbox2d } from './utils';\n"],"names":["fromQwen3VlBbox2d","toQwen3VlBbox2d"],"mappings":"AAAA,SAASA,iBAAiB,EAAEC,eAAe,QAAQ,UAAU"}
@@ -0,0 +1,31 @@
1
+ // xyxy
2
+ /**
3
+ * Convert Qwen3V format bbox (0-1000 range) to absolute pixel coordinates
4
+ * @param dimensions Image dimensions {width, height}
5
+ * @param bbox Bbox in Qwen3V format [x1, y1, x2, y2] where each value is 0-1000
6
+ * @returns Absolute pixel coordinates [x1, y1, x2, y2]
7
+ */ export function fromQwen3VlBbox2d({ width, height }, bbox) {
8
+ const [x1, y1, x2, y2] = bbox;
9
+ return [
10
+ Math.floor(x1 / 1000 * width),
11
+ Math.floor(y1 / 1000 * height),
12
+ Math.floor(x2 / 1000 * width),
13
+ Math.floor(y2 / 1000 * height)
14
+ ];
15
+ }
16
+ /**
17
+ * Convert absolute pixel coordinates to Qwen3V format bbox (0-1000 range)
18
+ * @param dimensions Image dimensions {width, height}
19
+ * @param bbox Absolute pixel coordinates [x1, y1, x2, y2]
20
+ * @returns Bbox in Qwen3V format [x1, y1, x2, y2] where each value is 0-1000
21
+ */ export function toQwen3VlBbox2d({ width, height }, bbox) {
22
+ const [x1, y1, x2, y2] = bbox;
23
+ return [
24
+ Math.round(x1 / width * 1000),
25
+ Math.round(y1 / height * 1000),
26
+ Math.round(x2 / width * 1000),
27
+ Math.round(y2 / height * 1000)
28
+ ];
29
+ }
30
+
31
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ai/qwen3vl/utils.ts"],"sourcesContent":["// xyxy\ntype Bbox2d = [number, number, number, number];\ntype Dimensions = { width: number; height: number };\n// x_center, y_center, z_center, x_size, y_size, z_size, roll, pitch, yaw\ntype Bbox3d = [number, number, number, number, number, number, number, number, number];\n/**\n * Convert Qwen3V format bbox (0-1000 range) to absolute pixel coordinates\n * @param dimensions Image dimensions {width, height}\n * @param bbox Bbox in Qwen3V format [x1, y1, x2, y2] where each value is 0-1000\n * @returns Absolute pixel coordinates [x1, y1, x2, y2]\n */\nexport function fromQwen3VlBbox2d({ width, height }: Dimensions, bbox: Bbox2d): Bbox2d {\n\tconst [x1, y1, x2, y2] = bbox;\n\treturn [\n\t\tMath.floor((x1 / 1000) * width),\n\t\tMath.floor((y1 / 1000) * height),\n\t\tMath.floor((x2 / 1000) * width),\n\t\tMath.floor((y2 / 1000) * height),\n\t];\n}\n\n/**\n * Convert absolute pixel coordinates to Qwen3V format bbox (0-1000 range)\n * @param dimensions Image dimensions {width, height}\n * @param bbox Absolute pixel coordinates [x1, y1, x2, y2]\n * @returns Bbox in Qwen3V format [x1, y1, x2, y2] where each value is 0-1000\n */\nexport function toQwen3VlBbox2d({ width, height }: Dimensions, bbox: Bbox2d): Bbox2d {\n\tconst [x1, y1, x2, y2] = bbox;\n\treturn [\n\t\tMath.round((x1 / width) * 1000),\n\t\tMath.round((y1 / height) * 1000),\n\t\tMath.round((x2 / width) * 1000),\n\t\tMath.round((y2 / height) * 1000),\n\t];\n}\n"],"names":["fromQwen3VlBbox2d","width","height","bbox","x1","y1","x2","y2","Math","floor","toQwen3VlBbox2d","round"],"mappings":"AAAA,OAAO;AAKP;;;;;CAKC,GACD,OAAO,SAASA,kBAAkB,EAAEC,KAAK,EAAEC,MAAM,EAAc,EAAEC,IAAY;IAC5E,MAAM,CAACC,IAAIC,IAAIC,IAAIC,GAAG,GAAGJ;IACzB,OAAO;QACNK,KAAKC,KAAK,CAAC,AAACL,KAAK,OAAQH;QACzBO,KAAKC,KAAK,CAAC,AAACJ,KAAK,OAAQH;QACzBM,KAAKC,KAAK,CAAC,AAACH,KAAK,OAAQL;QACzBO,KAAKC,KAAK,CAAC,AAACF,KAAK,OAAQL;KACzB;AACF;AAEA;;;;;CAKC,GACD,OAAO,SAASQ,gBAAgB,EAAET,KAAK,EAAEC,MAAM,EAAc,EAAEC,IAAY;IAC1E,MAAM,CAACC,IAAIC,IAAIC,IAAIC,GAAG,GAAGJ;IACzB,OAAO;QACNK,KAAKG,KAAK,CAAC,AAACP,KAAKH,QAAS;QAC1BO,KAAKG,KAAK,CAAC,AAACN,KAAKH,SAAU;QAC3BM,KAAKG,KAAK,CAAC,AAACL,KAAKL,QAAS;QAC1BO,KAAKG,KAAK,CAAC,AAACJ,KAAKL,SAAU;KAC3B;AACF"}
@@ -0,0 +1,28 @@
1
+ import { z } from "zod";
2
+ // based on DocLayout-YOLO
3
+ export const DocLayoutElementType = Object.freeze({
4
+ Title: 'Title',
5
+ PlainText: 'PlainText',
6
+ Abandon: 'Abandon',
7
+ Figure: 'Figure',
8
+ FigureCaption: 'FigureCaption',
9
+ Table: 'Table',
10
+ TableCaption: 'TableCaption',
11
+ TableFootnote: 'TableFootnote',
12
+ IsolateFormula: 'IsolateFormula',
13
+ FormulaCaption: 'FormulaCaption'
14
+ });
15
+ export const DocLayoutElementTypeSchema = z.union([
16
+ z.literal(DocLayoutElementType.Title).describe('标题'),
17
+ z.literal(DocLayoutElementType.PlainText).describe('纯文本'),
18
+ z.literal(DocLayoutElementType.Abandon).describe('废弃'),
19
+ z.literal(DocLayoutElementType.Figure).describe('图片'),
20
+ z.literal(DocLayoutElementType.FigureCaption).describe('图片说明'),
21
+ z.literal(DocLayoutElementType.Table).describe('表格'),
22
+ z.literal(DocLayoutElementType.TableCaption).describe('表格标题'),
23
+ z.literal(DocLayoutElementType.TableFootnote).describe('表格脚注'),
24
+ z.literal(DocLayoutElementType.IsolateFormula).describe('独立公式'),
25
+ z.literal(DocLayoutElementType.FormulaCaption).describe('公式说明')
26
+ ]);
27
+
28
+ //# sourceMappingURL=DocLayoutElementTypeSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ai/vision/DocLayoutElementTypeSchema.ts"],"sourcesContent":["import { z } from 'zod';\n\n// based on DocLayout-YOLO\n\nexport const DocLayoutElementType = Object.freeze({\n\tTitle: 'Title',\n\tPlainText: 'PlainText',\n\tAbandon: 'Abandon',\n\tFigure: 'Figure',\n\tFigureCaption: 'FigureCaption',\n\tTable: 'Table',\n\tTableCaption: 'TableCaption',\n\tTableFootnote: 'TableFootnote',\n\tIsolateFormula: 'IsolateFormula',\n\tFormulaCaption: 'FormulaCaption',\n});\nexport type DocLayoutElementType = (typeof DocLayoutElementType)[keyof typeof DocLayoutElementType];\n\nexport const DocLayoutElementTypeSchema = z.union([\n\tz.literal(DocLayoutElementType.Title).describe('标题'),\n\tz.literal(DocLayoutElementType.PlainText).describe('纯文本'),\n\tz.literal(DocLayoutElementType.Abandon).describe('废弃'),\n\tz.literal(DocLayoutElementType.Figure).describe('图片'),\n\tz.literal(DocLayoutElementType.FigureCaption).describe('图片说明'),\n\tz.literal(DocLayoutElementType.Table).describe('表格'),\n\tz.literal(DocLayoutElementType.TableCaption).describe('表格标题'),\n\tz.literal(DocLayoutElementType.TableFootnote).describe('表格脚注'),\n\tz.literal(DocLayoutElementType.IsolateFormula).describe('独立公式'),\n\tz.literal(DocLayoutElementType.FormulaCaption).describe('公式说明'),\n]);\n"],"names":["z","DocLayoutElementType","Object","freeze","Title","PlainText","Abandon","Figure","FigureCaption","Table","TableCaption","TableFootnote","IsolateFormula","FormulaCaption","DocLayoutElementTypeSchema","union","literal","describe"],"mappings":"AAAA,SAASA,CAAC,QAAQ,MAAM;AAExB,0BAA0B;AAE1B,OAAO,MAAMC,uBAAuBC,OAAOC,MAAM,CAAC;IACjDC,OAAO;IACPC,WAAW;IACXC,SAAS;IACTC,QAAQ;IACRC,eAAe;IACfC,OAAO;IACPC,cAAc;IACdC,eAAe;IACfC,gBAAgB;IAChBC,gBAAgB;AACjB,GAAG;AAGH,OAAO,MAAMC,6BAA6Bd,EAAEe,KAAK,CAAC;IACjDf,EAAEgB,OAAO,CAACf,qBAAqBG,KAAK,EAAEa,QAAQ,CAAC;IAC/CjB,EAAEgB,OAAO,CAACf,qBAAqBI,SAAS,EAAEY,QAAQ,CAAC;IACnDjB,EAAEgB,OAAO,CAACf,qBAAqBK,OAAO,EAAEW,QAAQ,CAAC;IACjDjB,EAAEgB,OAAO,CAACf,qBAAqBM,MAAM,EAAEU,QAAQ,CAAC;IAChDjB,EAAEgB,OAAO,CAACf,qBAAqBO,aAAa,EAAES,QAAQ,CAAC;IACvDjB,EAAEgB,OAAO,CAACf,qBAAqBQ,KAAK,EAAEQ,QAAQ,CAAC;IAC/CjB,EAAEgB,OAAO,CAACf,qBAAqBS,YAAY,EAAEO,QAAQ,CAAC;IACtDjB,EAAEgB,OAAO,CAACf,qBAAqBU,aAAa,EAAEM,QAAQ,CAAC;IACvDjB,EAAEgB,OAAO,CAACf,qBAAqBW,cAAc,EAAEK,QAAQ,CAAC;IACxDjB,EAAEgB,OAAO,CAACf,qBAAqBY,cAAc,EAAEI,QAAQ,CAAC;CACxD,EAAE"}
@@ -0,0 +1,50 @@
1
+ import { z } from "zod";
2
+ export const ImageAnnotationSchema = z.looseObject({
3
+ id: z.string().optional(),
4
+ title: z.string().trim().optional().describe('标题'),
5
+ description: z.string().trim().optional().describe('描述'),
6
+ type: z.string().trim().optional().describe('类型'),
7
+ // 内容字段
8
+ text: z.string().optional().describe('文本内容'),
9
+ markdown: z.string().optional().describe('Markdown 内容'),
10
+ csv: z.string().optional().describe('CSV 内容'),
11
+ html: z.string().optional().describe('HTML 内容'),
12
+ data: z.any().optional().describe('任意数据'),
13
+ // 定位信息
14
+ field: z.string().trim().optional().describe('目标字段'),
15
+ file: z.string().trim().optional().describe('源文件'),
16
+ page: z.coerce.number().int().nonnegative().optional().describe('页码'),
17
+ // 几何/边界框信息
18
+ bbox: z.array(z.number()).optional().describe('边界框'),
19
+ xywh: z.array(z.number()).length(4, {
20
+ error: 'xywh 必须包含4个数字 [x, y, width, height]'
21
+ }).optional().describe('XYWH'),
22
+ xyxy: z.array(z.number()).length(4, {
23
+ error: 'xyxy 必须包含4个数字 [x1, y1, x2, y2]'
24
+ }).optional().describe('XYXY'),
25
+ polygon: z.array(z.number().array()).optional().describe('Polygon'),
26
+ x: z.coerce.number().optional().describe('X 坐标'),
27
+ y: z.coerce.number().optional().describe('Y 坐标'),
28
+ w: z.coerce.number().nonnegative().optional().describe('宽度'),
29
+ h: z.coerce.number().nonnegative().optional().describe('高度'),
30
+ label: z.string().trim().optional().describe('标签'),
31
+ confidence: z.coerce.number().min(0).max(1).optional().describe('置信度'),
32
+ score: z.coerce.number().optional().describe('原始分数'),
33
+ classes: z.array(z.object({
34
+ label: z.string().nonempty({
35
+ error: '分类标签不能为空'
36
+ }).describe('分类标签'),
37
+ confidence: z.coerce.number().min(0).max(1).optional().describe('分类置信度 (0-1)'),
38
+ score: z.coerce.number().optional().describe('分类原始分数')
39
+ })).optional().describe('多分类结果'),
40
+ // 元数据和标签
41
+ tags: z.array(z.string()).optional().describe('标签'),
42
+ metadata: z.record(z.string(), z.any()).optional().describe('元数据'),
43
+ attributes: z.record(z.string(), z.any()).optional().describe('属性'),
44
+ properties: z.record(z.string(), z.any()).optional().describe('属性'),
45
+ get annotations () {
46
+ return z.array(ImageAnnotationSchema).optional().describe('子注释');
47
+ }
48
+ });
49
+
50
+ //# sourceMappingURL=ImageAnnotationSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ai/vision/ImageAnnotationSchema.ts"],"sourcesContent":["import { z } from 'zod';\n\nexport type ImageAnnotation = z.infer<typeof ImageAnnotationSchema>;\nexport const ImageAnnotationSchema = z.looseObject({\n\tid: z.string().optional(),\n\ttitle: z.string().trim().optional().describe('标题'),\n\tdescription: z.string().trim().optional().describe('描述'),\n\ttype: z.string().trim().optional().describe('类型'),\n\n\t// 内容字段\n\ttext: z.string().optional().describe('文本内容'),\n\tmarkdown: z.string().optional().describe('Markdown 内容'),\n\tcsv: z.string().optional().describe('CSV 内容'),\n\thtml: z.string().optional().describe('HTML 内容'),\n\tdata: z.any().optional().describe('任意数据'),\n\n\t// 定位信息\n\tfield: z.string().trim().optional().describe('目标字段'),\n\tfile: z.string().trim().optional().describe('源文件'),\n\tpage: z.coerce.number().int().nonnegative().optional().describe('页码'),\n\n\t// 几何/边界框信息\n\tbbox: z.array(z.number()).optional().describe('边界框'),\n\txywh: z\n\t\t.array(z.number())\n\t\t.length(4, { error: 'xywh 必须包含4个数字 [x, y, width, height]' })\n\t\t.optional()\n\t\t.describe('XYWH'),\n\txyxy: z.array(z.number()).length(4, { error: 'xyxy 必须包含4个数字 [x1, y1, x2, y2]' }).optional().describe('XYXY'),\n\tpolygon: z.array(z.number().array()).optional().describe('Polygon'),\n\tx: z.coerce.number().optional().describe('X 坐标'),\n\ty: z.coerce.number().optional().describe('Y 坐标'),\n\tw: z.coerce.number().nonnegative().optional().describe('宽度'),\n\th: z.coerce.number().nonnegative().optional().describe('高度'),\n\n\tlabel: z.string().trim().optional().describe('标签'),\n\tconfidence: z.coerce.number().min(0).max(1).optional().describe('置信度'),\n\tscore: z.coerce.number().optional().describe('原始分数'),\n\n\tclasses: z\n\t\t.array(\n\t\t\tz.object({\n\t\t\t\tlabel: z.string().nonempty({ error: '分类标签不能为空' }).describe('分类标签'),\n\t\t\t\tconfidence: z.coerce.number().min(0).max(1).optional().describe('分类置信度 (0-1)'),\n\t\t\t\tscore: z.coerce.number().optional().describe('分类原始分数'),\n\t\t\t}),\n\t\t)\n\t\t.optional()\n\t\t.describe('多分类结果'),\n\n\t// 元数据和标签\n\ttags: z.array(z.string()).optional().describe('标签'),\n\tmetadata: z.record(z.string(), z.any()).optional().describe('元数据'),\n\tattributes: z.record(z.string(), z.any()).optional().describe('属性'),\n\tproperties: z.record(z.string(), z.any()).optional().describe('属性'),\n\n\tget annotations(): z.ZodOptional<z.ZodArray<typeof ImageAnnotationSchema>> {\n\t\treturn z.array(ImageAnnotationSchema).optional().describe('子注释');\n\t},\n});\n"],"names":["z","ImageAnnotationSchema","looseObject","id","string","optional","title","trim","describe","description","type","text","markdown","csv","html","data","any","field","file","page","coerce","number","int","nonnegative","bbox","array","xywh","length","error","xyxy","polygon","x","y","w","h","label","confidence","min","max","score","classes","object","nonempty","tags","metadata","record","attributes","properties","annotations"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { ImageAnnotationSchema } from "./ImageAnnotationSchema.js";
2
+ export { resolveImageAnnotation } from "./resolveImageAnnotation.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ai/vision/index.ts"],"sourcesContent":["export { ImageAnnotationSchema, type ImageAnnotation } from './ImageAnnotationSchema';\nexport { resolveImageAnnotation, type ResolvedImageAnnotation } from './resolveImageAnnotation';\n"],"names":["ImageAnnotationSchema","resolveImageAnnotation"],"mappings":"AAAA,SAASA,qBAAqB,QAA8B,0BAA0B;AACtF,SAASC,sBAAsB,QAAsC,2BAA2B"}
@@ -0,0 +1,105 @@
1
+ export { resolveImageAnnotation };
2
+ function resolveImageAnnotation(input) {
3
+ const normalize = (input, { path = [], level = 0 } = {})=>{
4
+ input.id ||= path.join('.') || 'ROOT';
5
+ input.annotations ||= [];
6
+ input.tags ||= [];
7
+ input.attributes ||= {};
8
+ input.metadata ||= {};
9
+ if (!input.csv && input.html?.includes('<table') && globalThis.DOMParser) {
10
+ const parser = new DOMParser();
11
+ const doc = parser.parseFromString(input.html, 'text/html');
12
+ const table = doc.querySelector('table');
13
+ if (table) {
14
+ const rows = Array.from(table.querySelectorAll('tr'));
15
+ input.data = rows.map((row)=>Array.from(row.querySelectorAll('td')).map((td)=>td.textContent?.trim() || ''));
16
+ }
17
+ }
18
+ input.annotations.forEach((v, i)=>normalize(v, {
19
+ path: [
20
+ ...path,
21
+ i
22
+ ],
23
+ level: level + 1
24
+ }));
25
+ resolveBBox(input);
26
+ // can get bbox from annotations
27
+ let first = input.annotations.find((v)=>v.xyxy)?.xyxy;
28
+ if (!input.xyxy && first) {
29
+ const xyxy = input.annotations.reduce((acc, v)=>{
30
+ if (!v.xyxy) return acc;
31
+ return [
32
+ Math.min(acc[0], v.xyxy[0]),
33
+ Math.min(acc[1], v.xyxy[1]),
34
+ Math.max(acc[2], v.xyxy[2]),
35
+ Math.max(acc[3], v.xyxy[3])
36
+ ];
37
+ }, first);
38
+ input.xyxy = xyxy;
39
+ input.xywh = xyxy2xywh(xyxy);
40
+ }
41
+ };
42
+ const out = input;
43
+ normalize(out);
44
+ // out.annotations.forEach((v) => norm(v));
45
+ // only merge for root node
46
+ if (!out.markdown) {
47
+ out.markdown = out.annotations.map((v)=>v.markdown).join('\n');
48
+ out.markdown ||= undefined;
49
+ }
50
+ if (!out.text) {
51
+ out.text = out.annotations.map((v)=>v.text).join('\n');
52
+ out.text ||= undefined;
53
+ }
54
+ // fallback
55
+ out.text ||= out.markdown;
56
+ out.markdown ||= out.text;
57
+ return out;
58
+ }
59
+ function xywh2xyxy(input) {
60
+ if (!input) return;
61
+ const [x, y, w, h] = input;
62
+ return [
63
+ x,
64
+ y,
65
+ x + w,
66
+ y + h
67
+ ];
68
+ }
69
+ function xyxy2xywh(input) {
70
+ if (!input) return;
71
+ const [x1, y1, x2, y2] = input;
72
+ return [
73
+ x1,
74
+ y1,
75
+ x2 - x1,
76
+ y2 - y1
77
+ ];
78
+ }
79
+ function resolveBBox(input) {
80
+ let { x, y, w, h } = input;
81
+ let isNil = (v)=>v === undefined || v === null;
82
+ if (isNil(x) && input.xywh?.length) {
83
+ [x, y, w, h] = input.xywh;
84
+ }
85
+ if (isNil(x) && input.xyxy?.length) {
86
+ [x, y, w, h] = xyxy2xywh(input.xyxy);
87
+ }
88
+ if (!isNil(x)) {
89
+ input.xywh ||= [
90
+ x,
91
+ y,
92
+ w,
93
+ h
94
+ ];
95
+ input.xyxy ||= xywh2xyxy(input.xywh);
96
+ input.x = x;
97
+ input.y = y;
98
+ input.w = w;
99
+ input.h = h;
100
+ return input;
101
+ }
102
+ return;
103
+ }
104
+
105
+ //# sourceMappingURL=resolveImageAnnotation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ai/vision/resolveImageAnnotation.ts"],"sourcesContent":["import type { ImageAnnotation } from './ImageAnnotationSchema';\n\nexport { resolveImageAnnotation };\n\nexport type ResolvedImageAnnotation = Omit<ImageAnnotation, 'id' | 'annotations' | 'attributes' | 'metadata'> & {\n\tid: string;\n\tannotations: ResolvedImageAnnotation[];\n\tattributes: Record<string, any>;\n\tmetadata: Record<string, any>;\n};\n\nfunction resolveImageAnnotation(input: Partial<ImageAnnotation>): ResolvedImageAnnotation {\n\tconst normalize = (\n\t\tinput: ImageAnnotation,\n\t\t{\n\t\t\tpath = [],\n\t\t\tlevel = 0,\n\t\t}: {\n\t\t\tpath?: number[];\n\t\t\tlevel?: number;\n\t\t} = {},\n\t) => {\n\t\tinput.id ||= path.join('.') || 'ROOT';\n\t\tinput.annotations ||= [];\n\t\tinput.tags ||= [];\n\t\tinput.attributes ||= {};\n\t\tinput.metadata ||= {};\n\n\t\tif (!input.csv && input.html?.includes('<table') && globalThis.DOMParser) {\n\t\t\tconst parser = new DOMParser();\n\t\t\tconst doc = parser.parseFromString(input.html, 'text/html');\n\t\t\tconst table = doc.querySelector('table');\n\n\t\t\tif (table) {\n\t\t\t\tconst rows = Array.from(table.querySelectorAll('tr'));\n\t\t\t\tinput.data = rows.map((row) =>\n\t\t\t\t\tArray.from(row.querySelectorAll('td')).map((td) => td.textContent?.trim() || ''),\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tinput.annotations.forEach((v, i) => normalize(v, { path: [...path, i], level: level + 1 }));\n\n\t\tresolveBBox(input);\n\n\t\t// can get bbox from annotations\n\t\tlet first = input.annotations.find((v) => v.xyxy)?.xyxy;\n\t\tif (!input.xyxy && first) {\n\t\t\tconst xyxy = input.annotations.reduce((acc, v) => {\n\t\t\t\tif (!v.xyxy) return acc;\n\t\t\t\treturn [\n\t\t\t\t\tMath.min(acc[0], v.xyxy[0]),\n\t\t\t\t\tMath.min(acc[1], v.xyxy[1]),\n\t\t\t\t\tMath.max(acc[2], v.xyxy[2]),\n\t\t\t\t\tMath.max(acc[3], v.xyxy[3]),\n\t\t\t\t];\n\t\t\t}, first);\n\t\t\tinput.xyxy = xyxy;\n\t\t\tinput.xywh = xyxy2xywh(xyxy);\n\t\t}\n\t};\n\n\tconst out = input as ResolvedImageAnnotation;\n\tnormalize(out);\n\t// out.annotations.forEach((v) => norm(v));\n\n\t// only merge for root node\n\n\tif (!out.markdown) {\n\t\tout.markdown = out.annotations.map((v) => v.markdown).join('\\n');\n\t\tout.markdown ||= undefined;\n\t}\n\tif (!out.text) {\n\t\tout.text = out.annotations.map((v) => v.text).join('\\n');\n\t\tout.text ||= undefined;\n\t}\n\t// fallback\n\tout.text ||= out.markdown;\n\tout.markdown ||= out.text;\n\treturn out;\n}\n\nfunction xywh2xyxy(input?: number[]) {\n\tif (!input) return;\n\tconst [x, y, w, h] = input;\n\treturn [x, y, x + w, y + h];\n}\n\nfunction xyxy2xywh(input?: number[]) {\n\tif (!input) return;\n\tconst [x1, y1, x2, y2] = input;\n\treturn [x1, y1, x2 - x1, y2 - y1];\n}\n\ntype BBoxObject = {\n\txywh: number[];\n\txyxy: number[];\n\tx: number;\n\ty: number;\n\tw: number;\n\th: number;\n};\n\nfunction resolveBBox(input: {\n\txywh?: number[];\n\txyxy?: number[];\n\tx?: number;\n\ty?: number;\n\tw?: number;\n\th?: number;\n}): BBoxObject | undefined {\n\tlet { x, y, w, h } = input as {\n\t\tx: number;\n\t\ty: number;\n\t\tw: number;\n\t\th: number;\n\t};\n\tlet isNil = (v: any) => v === undefined || v === null;\n\tif (isNil(x) && input.xywh?.length) {\n\t\t[x, y, w, h] = input.xywh;\n\t}\n\tif (isNil(x) && input.xyxy?.length) {\n\t\t[x, y, w, h] = xyxy2xywh(input.xyxy)!;\n\t}\n\tif (!isNil(x)) {\n\t\tinput.xywh ||= [x, y, w, h];\n\t\tinput.xyxy ||= xywh2xyxy(input.xywh);\n\t\tinput.x = x;\n\t\tinput.y = y;\n\t\tinput.w = w;\n\t\tinput.h = h;\n\n\t\treturn input as BBoxObject;\n\t}\n\treturn;\n}\n"],"names":["resolveImageAnnotation","input","normalize","path","level","id","join","annotations","tags","attributes","metadata","csv","html","includes","globalThis","DOMParser","parser","doc","parseFromString","table","querySelector","rows","Array","from","querySelectorAll","data","map","row","td","textContent","trim","forEach","v","i","resolveBBox","first","find","xyxy","reduce","acc","Math","min","max","xywh","xyxy2xywh","out","markdown","undefined","text","xywh2xyxy","x","y","w","h","x1","y1","x2","y2","isNil","length"],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { z } from "zod/v4";
2
+ import { SexType, SexTypeSchema } from "../foundation/schema/index.js";
3
+ import { Mod11 } from "./Mod11.js";
4
+ export const ChineseResidentIdNoRegex = /^(?<division>[1-9]\d{5})(?<year>(18|19|20)\d{2})(?<month>0[1-9]|1[0-2])(?<day>0[1-9]|[12]\d|3[01])(?<sequence>\d{3})(?<checkDigit>[0-9Xx])$/;
5
+ export const ParsedChineseResidentIdNoSchema = z.object({
6
+ raw: z.string().regex(ChineseResidentIdNoRegex, "\u65E0\u6548\u768418\u4F4D\u8EAB\u4EFD\u8BC1\u53F7\u7801\u683C\u5F0F").describe("\u8EAB\u4EFD\u8BC1\u53F7\u7801"),
7
+ addressCode: z.string().length(6).describe("\u5730\u5740\u7801 "),
8
+ birthDate: z.iso.date().describe("\u51FA\u751F\u65E5\u671F"),
9
+ sequence: z.int().max(999).min(0).describe("\u987A\u5E8F\u7801"),
10
+ checkDigit: z.int().min(0).max(10).describe("\u6821\u9A8C\u7801"),
11
+ sex: SexTypeSchema.describe("\u6027\u522B"),
12
+ age: z.number().optional(),
13
+ valid: z.boolean().optional().describe("\u662F\u5426\u6709\u6548")
14
+ }).describe("\u5C45\u6C11\u8EAB\u4EFD\u8BC1\u53F7\u7801\u89E3\u6790\u5185\u5BB9");
15
+ export function parseChineseResidentIdNo(idNo) {
16
+ const reg = ChineseResidentIdNoRegex;
17
+ const match = idNo.match(reg);
18
+ if (!match || !match.groups) {
19
+ return undefined;
20
+ }
21
+ const { division, year, month, day, sequence, checkDigit } = match.groups;
22
+ let seq = parseInt(sequence, 10);
23
+ return {
24
+ raw: idNo,
25
+ addressCode: division,
26
+ birthDate: `${year}-${month}-${day}`,
27
+ sequence: seq,
28
+ checkDigit: checkDigit.toUpperCase() === "X" ? 10 : parseInt(checkDigit),
29
+ sex: seq % 2 === 0 ? SexType.Male : SexType.Female,
30
+ age: new Date().getFullYear() - parseInt(year, 10),
31
+ valid: Mod11.validate(idNo)
32
+ };
33
+ }
34
+ export function formatChineseResidentIdNo({ addressCode, birthDate, sequence, checkDigit }) {
35
+ const date = typeof birthDate === "string" ? birthDate.replace(/-/g, "") : `${birthDate.getFullYear()}${String(birthDate.getMonth() + 1).padStart(2, "0")}${String(birthDate.getDate()).padStart(2, "0")}`;
36
+ const seq = String(sequence).padStart(3, "0");
37
+ const major = `${addressCode}${date}${seq}`;
38
+ const check = typeof checkDigit === "number" ? checkDigit === 10 ? "X" : String(checkDigit) : checkDigit?.toUpperCase() || Mod11.compute(major);
39
+ return `${major}${check}`;
40
+ }
41
+ (function (ChineseResidentIdNo) {
42
+ ChineseResidentIdNo.regex = ChineseResidentIdNoRegex;
43
+ ChineseResidentIdNo.parse = parseChineseResidentIdNo;
44
+ ChineseResidentIdNo.format = formatChineseResidentIdNo;
45
+ ChineseResidentIdNo.ResultSchema = ParsedChineseResidentIdNoSchema;
46
+ })(ChineseResidentIdNo || (ChineseResidentIdNo = {}));
47
+ export var ChineseResidentIdNo;
48
+ //# sourceMappingURL=ChineseResidentIdNo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/ChineseResidentIdNo.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { SexType, SexTypeSchema } from '../foundation/schema';\nimport { Mod11 } from './Mod11';\n\nexport const ChineseResidentIdNoRegex =\n\t/^(?<division>[1-9]\\d{5})(?<year>(18|19|20)\\d{2})(?<month>0[1-9]|1[0-2])(?<day>0[1-9]|[12]\\d|3[01])(?<sequence>\\d{3})(?<checkDigit>[0-9Xx])$/;\n\nexport type ParsedChineseResidentIdNo = z.infer<typeof ParsedChineseResidentIdNoSchema>;\nexport const ParsedChineseResidentIdNoSchema = z\n\t.object({\n\t\traw: z.string().regex(ChineseResidentIdNoRegex, '无效的18位身份证号码格式').describe('身份证号码'),\n\t\taddressCode: z.string().length(6).describe('地址码 '),\n\t\tbirthDate: z.iso.date().describe('出生日期'),\n\t\tsequence: z.int().max(999).min(0).describe('顺序码'),\n\t\tcheckDigit: z.int().min(0).max(10).describe('校验码'),\n\t\tsex: SexTypeSchema.describe('性别'),\n\t\tage: z.number().optional(),\n\t\tvalid: z.boolean().optional().describe('是否有效'),\n\t})\n\t.describe('居民身份证号码解析内容');\n\nexport function parseChineseResidentIdNo(idNo: string): ParsedChineseResidentIdNo | undefined {\n\tconst reg = ChineseResidentIdNoRegex;\n\tconst match = idNo.match(reg);\n\tif (!match || !match.groups) {\n\t\treturn undefined;\n\t}\n\tconst { division, year, month, day, sequence, checkDigit } = match.groups;\n\tlet seq = parseInt(sequence, 10);\n\treturn {\n\t\traw: idNo,\n\t\taddressCode: division,\n\t\tbirthDate: `${year}-${month}-${day}`,\n\t\tsequence: seq,\n\t\tcheckDigit: checkDigit.toUpperCase() === 'X' ? 10 : parseInt(checkDigit),\n\t\tsex: seq % 2 === 0 ? SexType.Male : SexType.Female,\n\t\tage: new Date().getFullYear() - parseInt(year, 10),\n\t\tvalid: Mod11.validate(idNo),\n\t};\n}\n\nexport function formatChineseResidentIdNo({\n\taddressCode,\n\tbirthDate,\n\tsequence,\n\tcheckDigit,\n}: {\n\taddressCode: string;\n\tbirthDate: string | Date;\n\tsequence: number | string;\n\tcheckDigit?: string | number;\n}): string {\n\tconst date =\n\t\ttypeof birthDate === 'string'\n\t\t\t? birthDate.replace(/-/g, '')\n\t\t\t: `${birthDate.getFullYear()}${String(birthDate.getMonth() + 1).padStart(2, '0')}${String(birthDate.getDate()).padStart(2, '0')}`;\n\tconst seq = String(sequence).padStart(3, '0');\n\tconst major = `${addressCode}${date}${seq}`;\n\tconst check =\n\t\ttypeof checkDigit === 'number'\n\t\t\t? checkDigit === 10\n\t\t\t\t? 'X'\n\t\t\t\t: String(checkDigit)\n\t\t\t: checkDigit?.toUpperCase() || Mod11.compute(major);\n\treturn `${major}${check}`;\n}\n\nexport namespace ChineseResidentIdNo {\n\texport const regex = ChineseResidentIdNoRegex;\n\texport const parse = parseChineseResidentIdNo;\n\texport const format = formatChineseResidentIdNo;\n\texport type Result = ParsedChineseResidentIdNo;\n\texport const ResultSchema = ParsedChineseResidentIdNoSchema;\n}\n"],"names":["z","SexType","SexTypeSchema","Mod11","ChineseResidentIdNoRegex","ParsedChineseResidentIdNoSchema","object","raw","string","regex","describe","addressCode","length","birthDate","iso","date","sequence","int","max","min","checkDigit","sex","age","number","optional","valid","boolean","parseChineseResidentIdNo","idNo","reg","match","groups","undefined","division","year","month","day","seq","parseInt","toUpperCase","Male","Female","Date","getFullYear","validate","formatChineseResidentIdNo","replace","String","getMonth","padStart","getDate","major","check","compute","ChineseResidentIdNo","parse","format","ResultSchema"],"mappings":"AAAA,SAASA,CAAC,QAAQ,SAAS;AAC3B,SAASC,OAAO,EAAEC,aAAa,QAAQ,uBAAuB;AAC9D,SAASC,KAAK,QAAQ,UAAU;AAEhC,OAAO,MAAMC,2BACZ,8IAA8I;AAG/I,OAAO,MAAMC,kCAAkCL,EAC7CM,MAAM,CAAC;IACPC,KAAKP,EAAEQ,MAAM,GAAGC,KAAK,CAACL,0BAA0B,iBAAiBM,QAAQ,CAAC;IAC1EC,aAAaX,EAAEQ,MAAM,GAAGI,MAAM,CAAC,GAAGF,QAAQ,CAAC;IAC3CG,WAAWb,EAAEc,GAAG,CAACC,IAAI,GAAGL,QAAQ,CAAC;IACjCM,UAAUhB,EAAEiB,GAAG,GAAGC,GAAG,CAAC,KAAKC,GAAG,CAAC,GAAGT,QAAQ,CAAC;IAC3CU,YAAYpB,EAAEiB,GAAG,GAAGE,GAAG,CAAC,GAAGD,GAAG,CAAC,IAAIR,QAAQ,CAAC;IAC5CW,KAAKnB,cAAcQ,QAAQ,CAAC;IAC5BY,KAAKtB,EAAEuB,MAAM,GAAGC,QAAQ;IACxBC,OAAOzB,EAAE0B,OAAO,GAAGF,QAAQ,GAAGd,QAAQ,CAAC;AACxC,GACCA,QAAQ,CAAC,eAAe;AAE1B,OAAO,SAASiB,yBAAyBC,IAAY;IACpD,MAAMC,MAAMzB;IACZ,MAAM0B,QAAQF,KAAKE,KAAK,CAACD;IACzB,IAAI,CAACC,SAAS,CAACA,MAAMC,MAAM,EAAE;QAC5B,OAAOC;IACR;IACA,MAAM,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,KAAK,EAAEC,GAAG,EAAEpB,QAAQ,EAAEI,UAAU,EAAE,GAAGU,MAAMC,MAAM;IACzE,IAAIM,MAAMC,SAAStB,UAAU;IAC7B,OAAO;QACNT,KAAKqB;QACLjB,aAAasB;QACbpB,WAAW,GAAGqB,KAAK,CAAC,EAAEC,MAAM,CAAC,EAAEC,KAAK;QACpCpB,UAAUqB;QACVjB,YAAYA,WAAWmB,WAAW,OAAO,MAAM,KAAKD,SAASlB;QAC7DC,KAAKgB,MAAM,MAAM,IAAIpC,QAAQuC,IAAI,GAAGvC,QAAQwC,MAAM;QAClDnB,KAAK,IAAIoB,OAAOC,WAAW,KAAKL,SAASJ,MAAM;QAC/CT,OAAOtB,MAAMyC,QAAQ,CAAChB;IACvB;AACD;AAEA,OAAO,SAASiB,0BAA0B,EACzClC,WAAW,EACXE,SAAS,EACTG,QAAQ,EACRI,UAAU,EAMV;IACA,MAAML,OACL,OAAOF,cAAc,WAClBA,UAAUiC,OAAO,CAAC,MAAM,MACxB,GAAGjC,UAAU8B,WAAW,KAAKI,OAAOlC,UAAUmC,QAAQ,KAAK,GAAGC,QAAQ,CAAC,GAAG,OAAOF,OAAOlC,UAAUqC,OAAO,IAAID,QAAQ,CAAC,GAAG,MAAM;IACnI,MAAMZ,MAAMU,OAAO/B,UAAUiC,QAAQ,CAAC,GAAG;IACzC,MAAME,QAAQ,GAAGxC,cAAcI,OAAOsB,KAAK;IAC3C,MAAMe,QACL,OAAOhC,eAAe,WACnBA,eAAe,KACd,MACA2B,OAAO3B,cACRA,YAAYmB,iBAAiBpC,MAAMkD,OAAO,CAACF;IAC/C,OAAO,GAAGA,QAAQC,OAAO;AAC1B;UAEiBE;wBACH7C,QAAQL;wBACRmD,QAAQ5B;wBACR6B,SAASX;wBAETY,eAAepD;AAC7B,GANiBiD,wBAAAA"}
@@ -0,0 +1 @@
1
+ export { ChineseResidentIdNoRegex as regex, parseChineseResidentIdNo as parse, formatChineseResidentIdNo as format, ParsedChineseResidentIdNoSchema as ResultSchema } from "./ChineseResidentIdNo.js";
@@ -1,19 +1,20 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { ResidentIdentityCardNumber } from "./ResidentIdentityCardNumber.js";
3
- describe("ResidentIdentityCardNumber", function () {
2
+ import { ChineseResidentIdNo } from "./index.js";
3
+ describe("ChineseResidentIdNo", function () {
4
4
  it("should parse", function () {
5
5
  for (var _i = 0, _iter = [
6
6
  "11010519491231002X"
7
7
  ]; _i < _iter.length; _i++) {
8
8
  var a = _iter[_i];
9
- var out = ResidentIdentityCardNumber.parse(a);
10
- expect(ResidentIdentityCardNumber.format(out)).toBe(a);
9
+ var out = ChineseResidentIdNo.parse(a);
10
+ expect(out).toBeTruthy();
11
+ expect(ChineseResidentIdNo.format(out)).toBe(a);
11
12
  expect(out).toMatchSnapshot();
12
13
  }
13
14
  });
14
15
  it("should format with partial", function () {
15
- expect(ResidentIdentityCardNumber.format({
16
- division: "110105",
16
+ expect(ChineseResidentIdNo.format({
17
+ addressCode: "110105",
17
18
  birthDate: new Date("1949-12-31"),
18
19
  sequence: 2
19
20
  })).toBe("11010519491231002X");