@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,49 @@
1
+ /**
2
+ * GB/T 17710(采ISO 7064)的模31校验码
3
+ *
4
+ * Mod31-3
5
+ */ export class Mod31Checksum {
6
+ weights = [
7
+ 1,
8
+ 3,
9
+ 9,
10
+ 27,
11
+ 19,
12
+ 26,
13
+ 16,
14
+ 17,
15
+ 20,
16
+ 29,
17
+ 25,
18
+ 13,
19
+ 8,
20
+ 24,
21
+ 10,
22
+ 30,
23
+ 28
24
+ ];
25
+ chars = '0123456789ABCDEFGHJKLMNPQRTUWXY';
26
+ numbers = this.chars.split('').reduce((acc, cur, i)=>{
27
+ acc[cur] = i;
28
+ return acc;
29
+ }, {});
30
+ toChar(n) {
31
+ return this.chars[n];
32
+ }
33
+ toNumber(c) {
34
+ return this.numbers[c];
35
+ }
36
+ validate(s) {
37
+ return s.at(-1) === this.compute(s.slice(0, s.length - 1));
38
+ }
39
+ compute(s) {
40
+ let sum = 0;
41
+ for(let i = 0; i < s.length; i++){
42
+ sum += this.numbers[s[i]] * this.weights[i];
43
+ }
44
+ return this.toChar(31 - sum % 31);
45
+ }
46
+ }
47
+ export const Mod31 = new Mod31Checksum();
48
+
49
+ //# sourceMappingURL=Mod31.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/Mod31.ts"],"sourcesContent":["/**\n * GB/T 17710(采ISO 7064)的模31校验码\n *\n * Mod31-3\n */\nexport class Mod31Checksum {\n\tweights = [1, 3, 9, 27, 19, 26, 16, 17, 20, 29, 25, 13, 8, 24, 10, 30, 28];\n\tchars = '0123456789ABCDEFGHJKLMNPQRTUWXY';\n\tnumbers: Record<string, number> = this.chars.split('').reduce(\n\t\t(acc, cur, i) => {\n\t\t\tacc[cur] = i;\n\t\t\treturn acc;\n\t\t},\n\t\t{} as Record<string, number>,\n\t);\n\n\ttoChar(n: number) {\n\t\treturn this.chars[n];\n\t}\n\n\ttoNumber(c: string) {\n\t\treturn this.numbers[c];\n\t}\n\n\tvalidate(s: string) {\n\t\treturn s.at(-1) === this.compute(s.slice(0, s.length - 1));\n\t}\n\n\tcompute(s: string) {\n\t\tlet sum = 0;\n\t\tfor (let i = 0; i < s.length; i++) {\n\t\t\tsum += this.numbers[s[i]] * this.weights[i];\n\t\t}\n\t\treturn this.toChar(31 - (sum % 31));\n\t}\n}\n\nexport const Mod31 = new Mod31Checksum();\n"],"names":["Mod31Checksum","weights","chars","numbers","split","reduce","acc","cur","i","toChar","n","toNumber","c","validate","s","at","compute","slice","length","sum","Mod31"],"mappings":"AAAA;;;;CAIC,GACD,OAAO,MAAMA;IACZC,UAAU;QAAC;QAAG;QAAG;QAAG;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAI;QAAG;QAAI;QAAI;QAAI;KAAG,CAAC;IAC3EC,QAAQ,kCAAkC;IAC1CC,UAAkC,IAAI,CAACD,KAAK,CAACE,KAAK,CAAC,IAAIC,MAAM,CAC5D,CAACC,KAAKC,KAAKC;QACVF,GAAG,CAACC,IAAI,GAAGC;QACX,OAAOF;IACR,GACA,CAAC,GACA;IAEFG,OAAOC,CAAS,EAAE;QACjB,OAAO,IAAI,CAACR,KAAK,CAACQ,EAAE;IACrB;IAEAC,SAASC,CAAS,EAAE;QACnB,OAAO,IAAI,CAACT,OAAO,CAACS,EAAE;IACvB;IAEAC,SAASC,CAAS,EAAE;QACnB,OAAOA,EAAEC,EAAE,CAAC,CAAC,OAAO,IAAI,CAACC,OAAO,CAACF,EAAEG,KAAK,CAAC,GAAGH,EAAEI,MAAM,GAAG;IACxD;IAEAF,QAAQF,CAAS,EAAE;QAClB,IAAIK,MAAM;QACV,IAAK,IAAIX,IAAI,GAAGA,IAAIM,EAAEI,MAAM,EAAEV,IAAK;YAClCW,OAAO,IAAI,CAAChB,OAAO,CAACW,CAAC,CAACN,EAAE,CAAC,GAAG,IAAI,CAACP,OAAO,CAACO,EAAE;QAC5C;QACA,OAAO,IAAI,CAACC,MAAM,CAAC,KAAMU,MAAM;IAChC;AACD;AAEA,OAAO,MAAMC,QAAQ,IAAIpB,gBAAgB"}
@@ -1,124 +1,148 @@
1
- import { Mod31Checksum } from "./Mod31Checksum.js";
2
- (function (UnifiedSocialCreditCode) {
3
- var CodeLabels = {
4
- 1: {
5
- label: "\u673A\u6784\u7F16\u5236",
6
- children: {
7
- 1: {
8
- label: "\u673A\u5173"
9
- },
10
- 2: {
11
- label: "\u4E8B\u4E1A\u5355\u4F4D"
12
- },
13
- 3: {
14
- label: "\u4E2D\u592E\u7F16\u529E\u76F4\u63A5\u7BA1\u7406\u673A\u6784\u7F16\u5236\u7684\u7FA4\u4F17\u56E2\u4F53"
15
- },
16
- 9: {
17
- label: "\u5176\u4ED6"
18
- }
1
+ import { z } from "zod/v4";
2
+ import { Mod31 } from "./Mod31.js";
3
+ const CodeNames = {
4
+ 1: {
5
+ name: "\u673A\u6784\u7F16\u5236",
6
+ children: {
7
+ 1: {
8
+ name: "\u673A\u5173"
9
+ },
10
+ 2: {
11
+ name: "\u4E8B\u4E1A\u5355\u4F4D"
12
+ },
13
+ 3: {
14
+ name: "\u4E2D\u592E\u7F16\u529E\u76F4\u63A5\u7BA1\u7406\u673A\u6784\u7F16\u5236\u7684\u7FA4\u4F17\u56E2\u4F53"
15
+ },
16
+ 9: {
17
+ name: "\u5176\u4ED6"
19
18
  }
20
- },
21
- 5: {
22
- label: "\u6C11\u653F",
23
- children: {
24
- 1: {
25
- label: "\u793E\u4F1A\u56E2\u4F53"
26
- },
27
- 2: {
28
- label: "\u6C11\u529E\u975E\u4F01\u4E1A\u5355\u4F4D"
29
- },
30
- 3: {
31
- label: "\u57FA\u91D1\u4F1A"
32
- },
33
- 9: {
34
- label: "\u5176\u4ED6"
35
- }
19
+ }
20
+ },
21
+ 5: {
22
+ name: "\u6C11\u653F",
23
+ children: {
24
+ 1: {
25
+ name: "\u793E\u4F1A\u56E2\u4F53"
26
+ },
27
+ 2: {
28
+ name: "\u6C11\u529E\u975E\u4F01\u4E1A\u5355\u4F4D"
29
+ },
30
+ 3: {
31
+ name: "\u57FA\u91D1\u4F1A"
32
+ },
33
+ 9: {
34
+ name: "\u5176\u4ED6"
36
35
  }
37
- },
38
- 9: {
39
- label: "\u5DE5\u5546",
40
- children: {
41
- 1: {
42
- label: "\u4F01\u4E1A"
43
- },
44
- 2: {
45
- label: "\u4E2A\u4F53\u5DE5\u5546\u6237"
46
- },
47
- 3: {
48
- label: "\u519C\u6C11\u4E13\u4E1A\u5408\u4F5C\u793E"
49
- },
50
- 9: {
51
- label: "\u5176\u4ED6"
52
- }
36
+ }
37
+ },
38
+ 9: {
39
+ name: "\u5DE5\u5546",
40
+ children: {
41
+ 1: {
42
+ name: "\u4F01\u4E1A"
43
+ },
44
+ 2: {
45
+ name: "\u4E2A\u4F53\u5DE5\u5546\u6237"
46
+ },
47
+ 3: {
48
+ name: "\u519C\u6C11\u4E13\u4E1A\u5408\u4F5C\u793E"
49
+ },
50
+ 9: {
51
+ name: "\u5176\u4ED6"
53
52
  }
54
- },
55
- Y: {
56
- label: "\u5176\u4ED6",
57
- children: {
58
- 1: {
59
- label: "\u5176\u4ED6"
60
- }
53
+ }
54
+ },
55
+ Y: {
56
+ name: "\u5176\u4ED6",
57
+ children: {
58
+ 1: {
59
+ name: "\u5176\u4ED6"
61
60
  }
62
61
  }
63
- };
64
- UnifiedSocialCreditCode.pattern = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/; // 无 I O Z S V
65
- UnifiedSocialCreditCode.Checksum = new Mod31Checksum();
66
- function parse(s) {
67
- var _l1_children;
68
- var bureau = s[0];
69
- var subjectType = s[1];
70
- var division = s.slice(2, 8); // 第3~8位,共6位,正确
71
- var subject = s.slice(8, 17); // 第9~17位,共9位
72
- var checksum = s.slice(17, 18); // 第18位,校验码
73
- var labels = [];
74
- var l1 = CodeLabels[bureau];
75
- l1 && labels.push(l1 === null || l1 === void 0 ? void 0 : l1.label);
76
- var l2 = l1 === null || l1 === void 0 ? void 0 : (_l1_children = l1.children) === null || _l1_children === void 0 ? void 0 : _l1_children[subjectType];
77
- l2 && labels.push(l2 === null || l2 === void 0 ? void 0 : l2.label);
78
- return {
79
- bureau: bureau,
80
- subjectType: subjectType,
81
- division: division,
82
- subject: subject,
83
- checksum: checksum,
84
- codes: [
85
- bureau,
86
- subjectType,
87
- division,
88
- subject
89
- ],
90
- labels: labels
91
- };
92
62
  }
93
- UnifiedSocialCreditCode.parse = parse;
94
- function format(param) {
95
- var bureau = param.bureau, subjectType = param.subjectType, division = param.division, subject = param.subject, checksum = param.checksum;
96
- var base = "".concat(bureau).concat(subjectType).concat(division).concat(subject);
97
- checksum || (checksum = UnifiedSocialCreditCode.Checksum.compute(base));
98
- return "".concat(base).concat(checksum);
63
+ };
64
+ export const ParsedUnifiedSocialCreditCodeSchema = z.object({
65
+ raw: z.string().length(18).describe("\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801"),
66
+ registrationAuthorityCode: z.string().length(1).describe("\u767B\u8BB0\u7BA1\u7406\u90E8\u95E8\u4EE3\u7801"),
67
+ entityCategoryCode: z.string().length(1).describe("\u673A\u6784\u7C7B\u522B\u4EE3\u7801"),
68
+ adminDivisionCode: z.string().length(6).describe("\u767B\u8BB0\u7BA1\u7406\u673A\u5173\u884C\u653F\u533A\u5212\u7801 "),
69
+ organizationCode: z.string().length(9).describe("\u4E3B\u4F53\u6807\u8BC6\u7801/\u7EC4\u7EC7\u673A\u6784\u4EE3\u7801"),
70
+ checkDigit: z.string().length(1).describe("\u6821\u9A8C\u7801"),
71
+ codes: z.string().array().describe("\u4EE3\u7801\u6570\u7EC4"),
72
+ names: z.string().array().describe("\u4EE3\u7801\u540D\u79F0"),
73
+ valid: z.boolean().optional().describe("\u662F\u5426\u6709\u6548")
74
+ }).describe("\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801");
75
+ export const UnifiedSocialCreditCodeRegex = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/;
76
+ export function parseUnifiedSocialCreditCode(s) {
77
+ if (!s || s.length !== 18)
78
+ return undefined;
79
+ const registrationAuthorityCode = s[0];
80
+ const entityCategoryCode = s[1];
81
+ const adminDivisionCode = s.slice(2, 8);
82
+ const organizationCode = s.slice(8, 17);
83
+ const checkDigit = s[17];
84
+ const codes = [
85
+ registrationAuthorityCode,
86
+ entityCategoryCode,
87
+ adminDivisionCode,
88
+ organizationCode,
89
+ checkDigit
90
+ ];
91
+ const names = [];
92
+ const bureau = CodeNames[registrationAuthorityCode];
93
+ if (bureau) {
94
+ names.push(bureau.name);
95
+ const subject = bureau.children?.[entityCategoryCode];
96
+ if (subject) {
97
+ names.push(subject.name);
98
+ }
99
99
  }
100
- UnifiedSocialCreditCode.format = format;
101
- function next(s) {
102
- var delta = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
103
- var sp = s.split("").map(function (v) {
104
- return UnifiedSocialCreditCode.Checksum.numbers[v];
105
- });
106
- for (var i = sp.length - 1; i >= 0; i--) {
107
- if (delta > 0 && sp[i] < 30 || delta < 0 && sp[i] > 0) {
108
- sp[i] += delta;
109
- break;
110
- }
111
- else if (delta > 0 && sp[i] === 30) {
112
- sp[i] = 0;
113
- }
114
- else if (delta < 0 && sp[i] === 0) {
115
- sp[i] = 30;
116
- }
100
+ return {
101
+ raw: s,
102
+ registrationAuthorityCode,
103
+ entityCategoryCode,
104
+ adminDivisionCode,
105
+ organizationCode,
106
+ checkDigit,
107
+ codes,
108
+ names,
109
+ valid: UnifiedSocialCreditCodeRegex.test(s) && Mod31.validate(s)
110
+ };
111
+ }
112
+ export function formatUnifiedSocialCreditCode({ registrationAuthorityCode, entityCategoryCode, adminDivisionCode, organizationCode, checkDigit }) {
113
+ const base = `${registrationAuthorityCode}${entityCategoryCode}${adminDivisionCode}${organizationCode}`;
114
+ checkDigit ||= Mod31.compute(base);
115
+ return `${base}${checkDigit}`;
116
+ }
117
+ export function next(s, delta = 1) {
118
+ const sp = s.split("").map((v) => Mod31.numbers[v]);
119
+ for (let i = sp.length - 1; i >= 0; i--) {
120
+ if (delta > 0 && sp[i] < 30 || delta < 0 && sp[i] > 0) {
121
+ sp[i] += delta;
122
+ break;
123
+ }
124
+ else if (delta > 0 && sp[i] === 30) {
125
+ sp[i] = 0;
126
+ }
127
+ else if (delta < 0 && sp[i] === 0) {
128
+ sp[i] = 30;
129
+ }
130
+ }
131
+ return sp.map((v) => Mod31.chars[v]).join("");
132
+ }
133
+ (function (UnifiedSocialCreditCode) {
134
+ UnifiedSocialCreditCode.regex = UnifiedSocialCreditCodeRegex;
135
+ UnifiedSocialCreditCode.parse = parseUnifiedSocialCreditCode;
136
+ UnifiedSocialCreditCode.format = formatUnifiedSocialCreditCode;
137
+ UnifiedSocialCreditCode.ResultSchema = ParsedUnifiedSocialCreditCodeSchema;
138
+ function test(s) {
139
+ if (!s) {
140
+ return false;
117
141
  }
118
- return sp.map(function (v) {
119
- return UnifiedSocialCreditCode.Checksum.chars[v];
120
- }).join("");
142
+ // fast check
143
+ return UnifiedSocialCreditCode.regex.test(s) && Mod31.validate(s);
121
144
  }
122
- UnifiedSocialCreditCode.next = next;
145
+ UnifiedSocialCreditCode.test = test;
123
146
  })(UnifiedSocialCreditCode || (UnifiedSocialCreditCode = {}));
124
147
  export var UnifiedSocialCreditCode;
148
+ //# sourceMappingURL=UnifiedSocialCreditCode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/UnifiedSocialCreditCode.ts"],"sourcesContent":["import { z } from 'zod/v4';\nimport { Mod31 } from './Mod31';\n\ninterface CodeValue {\n\tname: string;\n\tchildren?: Record<string, CodeValue>;\n}\n\nconst CodeNames: Record<string, CodeValue> = {\n\t1: {\n\t\tname: '机构编制',\n\t\tchildren: {\n\t\t\t1: { name: '机关' },\n\t\t\t2: { name: '事业单位' },\n\t\t\t3: { name: '中央编办直接管理机构编制的群众团体' },\n\t\t\t9: { name: '其他' },\n\t\t},\n\t},\n\t5: {\n\t\tname: '民政',\n\t\tchildren: {\n\t\t\t1: { name: '社会团体' },\n\t\t\t2: { name: '民办非企业单位' },\n\t\t\t3: { name: '基金会' },\n\t\t\t9: { name: '其他' },\n\t\t},\n\t},\n\t9: {\n\t\tname: '工商',\n\t\tchildren: {\n\t\t\t1: { name: '企业' },\n\t\t\t2: { name: '个体工商户' },\n\t\t\t3: { name: '农民专业合作社' },\n\t\t\t9: { name: '其他' },\n\t\t},\n\t},\n\tY: { name: '其他', children: { 1: { name: '其他' } } },\n};\n\nexport type ParsedUnifiedSocialCreditCode = z.infer<typeof ParsedUnifiedSocialCreditCodeSchema>;\nexport const ParsedUnifiedSocialCreditCodeSchema = z\n\t.object({\n\t\traw: z.string().length(18).describe('统一社会信用代码'),\n\t\tregistrationAuthorityCode: z.string().length(1).describe('登记管理部门代码'),\n\t\tentityCategoryCode: z.string().length(1).describe('机构类别代码'),\n\t\tadminDivisionCode: z.string().length(6).describe('登记管理机关行政区划码 '),\n\t\torganizationCode: z.string().length(9).describe('主体标识码/组织机构代码'),\n\t\tcheckDigit: z.string().length(1).describe('校验码'),\n\n\t\tcodes: z.string().array().describe('代码数组'),\n\t\tnames: z.string().array().describe('代码名称'),\n\t\tvalid: z.boolean().optional().describe('是否有效'),\n\t})\n\t.describe('统一社会信用代码');\n\nexport const UnifiedSocialCreditCodeRegex = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/;\n\nexport function parseUnifiedSocialCreditCode(s: string): ParsedUnifiedSocialCreditCode | undefined {\n\tif (!s || s.length !== 18) return undefined;\n\n\tconst registrationAuthorityCode = s[0];\n\tconst entityCategoryCode = s[1];\n\tconst adminDivisionCode = s.slice(2, 8);\n\tconst organizationCode = s.slice(8, 17);\n\tconst checkDigit = s[17];\n\n\tconst codes = [registrationAuthorityCode, entityCategoryCode, adminDivisionCode, organizationCode, checkDigit];\n\tconst names: string[] = [];\n\n\tconst bureau = CodeNames[registrationAuthorityCode];\n\tif (bureau) {\n\t\tnames.push(bureau.name);\n\t\tconst subject = bureau.children?.[entityCategoryCode];\n\t\tif (subject) {\n\t\t\tnames.push(subject.name);\n\t\t}\n\t}\n\n\treturn {\n\t\traw: s,\n\t\tregistrationAuthorityCode,\n\t\tentityCategoryCode,\n\t\tadminDivisionCode,\n\t\torganizationCode,\n\t\tcheckDigit,\n\t\tcodes,\n\t\tnames,\n\t\tvalid: UnifiedSocialCreditCodeRegex.test(s) && Mod31.validate(s),\n\t};\n}\n\nexport function formatUnifiedSocialCreditCode({\n\tregistrationAuthorityCode,\n\tentityCategoryCode,\n\tadminDivisionCode,\n\torganizationCode,\n\tcheckDigit,\n}: {\n\tregistrationAuthorityCode: string;\n\tentityCategoryCode: string;\n\tadminDivisionCode: string;\n\torganizationCode: string;\n\tcheckDigit?: string;\n}): string {\n\tconst base = `${registrationAuthorityCode}${entityCategoryCode}${adminDivisionCode}${organizationCode}`;\n\tcheckDigit ||= Mod31.compute(base);\n\treturn `${base}${checkDigit}`;\n}\n\nexport function next(s: string, delta: number = 1) {\n\tconst sp = s.split('').map((v) => Mod31.numbers[v]);\n\tfor (let i = sp.length - 1; i >= 0; i--) {\n\t\tif ((delta > 0 && sp[i] < 30) || (delta < 0 && sp[i] > 0)) {\n\t\t\tsp[i] += delta;\n\t\t\tbreak;\n\t\t} else if (delta > 0 && sp[i] === 30) {\n\t\t\tsp[i] = 0;\n\t\t} else if (delta < 0 && sp[i] === 0) {\n\t\t\tsp[i] = 30;\n\t\t}\n\t}\n\treturn sp.map((v) => Mod31.chars[v]).join('');\n}\n\nexport namespace UnifiedSocialCreditCode {\n\texport const regex = UnifiedSocialCreditCodeRegex;\n\texport const parse = parseUnifiedSocialCreditCode;\n\texport const format = formatUnifiedSocialCreditCode;\n\texport type Result = ParsedUnifiedSocialCreditCode;\n\texport const ResultSchema = ParsedUnifiedSocialCreditCodeSchema;\n\texport function test(s: string | undefined | null) {\n\t\tif (!s) {\n\t\t\treturn false;\n\t\t}\n\t\t// fast check\n\t\treturn regex.test(s) && Mod31.validate(s);\n\t}\n}\n"],"names":["z","Mod31","CodeNames","name","children","Y","ParsedUnifiedSocialCreditCodeSchema","object","raw","string","length","describe","registrationAuthorityCode","entityCategoryCode","adminDivisionCode","organizationCode","checkDigit","codes","array","names","valid","boolean","optional","UnifiedSocialCreditCodeRegex","parseUnifiedSocialCreditCode","s","undefined","slice","bureau","push","subject","test","validate","formatUnifiedSocialCreditCode","base","compute","next","delta","sp","split","map","v","numbers","i","chars","join","UnifiedSocialCreditCode","regex","parse","format","ResultSchema"],"mappings":"AAAA,SAASA,CAAC,QAAQ,SAAS;AAC3B,SAASC,KAAK,QAAQ,UAAU;AAOhC,MAAMC,YAAuC;IAC5C,GAAG;QACFC,MAAM;QACNC,UAAU;YACT,GAAG;gBAAED,MAAM;YAAK;YAChB,GAAG;gBAAEA,MAAM;YAAO;YAClB,GAAG;gBAAEA,MAAM;YAAoB;YAC/B,GAAG;gBAAEA,MAAM;YAAK;QACjB;IACD;IACA,GAAG;QACFA,MAAM;QACNC,UAAU;YACT,GAAG;gBAAED,MAAM;YAAO;YAClB,GAAG;gBAAEA,MAAM;YAAU;YACrB,GAAG;gBAAEA,MAAM;YAAM;YACjB,GAAG;gBAAEA,MAAM;YAAK;QACjB;IACD;IACA,GAAG;QACFA,MAAM;QACNC,UAAU;YACT,GAAG;gBAAED,MAAM;YAAK;YAChB,GAAG;gBAAEA,MAAM;YAAQ;YACnB,GAAG;gBAAEA,MAAM;YAAU;YACrB,GAAG;gBAAEA,MAAM;YAAK;QACjB;IACD;IACAE,GAAG;QAAEF,MAAM;QAAMC,UAAU;YAAE,GAAG;gBAAED,MAAM;YAAK;QAAE;IAAE;AAClD;AAGA,OAAO,MAAMG,sCAAsCN,EACjDO,MAAM,CAAC;IACPC,KAAKR,EAAES,MAAM,GAAGC,MAAM,CAAC,IAAIC,QAAQ,CAAC;IACpCC,2BAA2BZ,EAAES,MAAM,GAAGC,MAAM,CAAC,GAAGC,QAAQ,CAAC;IACzDE,oBAAoBb,EAAES,MAAM,GAAGC,MAAM,CAAC,GAAGC,QAAQ,CAAC;IAClDG,mBAAmBd,EAAES,MAAM,GAAGC,MAAM,CAAC,GAAGC,QAAQ,CAAC;IACjDI,kBAAkBf,EAAES,MAAM,GAAGC,MAAM,CAAC,GAAGC,QAAQ,CAAC;IAChDK,YAAYhB,EAAES,MAAM,GAAGC,MAAM,CAAC,GAAGC,QAAQ,CAAC;IAE1CM,OAAOjB,EAAES,MAAM,GAAGS,KAAK,GAAGP,QAAQ,CAAC;IACnCQ,OAAOnB,EAAES,MAAM,GAAGS,KAAK,GAAGP,QAAQ,CAAC;IACnCS,OAAOpB,EAAEqB,OAAO,GAAGC,QAAQ,GAAGX,QAAQ,CAAC;AACxC,GACCA,QAAQ,CAAC,YAAY;AAEvB,OAAO,MAAMY,+BAA+B,oDAAoD;AAEhG,OAAO,SAASC,6BAA6BC,CAAS;IACrD,IAAI,CAACA,KAAKA,EAAEf,MAAM,KAAK,IAAI,OAAOgB;IAElC,MAAMd,4BAA4Ba,CAAC,CAAC,EAAE;IACtC,MAAMZ,qBAAqBY,CAAC,CAAC,EAAE;IAC/B,MAAMX,oBAAoBW,EAAEE,KAAK,CAAC,GAAG;IACrC,MAAMZ,mBAAmBU,EAAEE,KAAK,CAAC,GAAG;IACpC,MAAMX,aAAaS,CAAC,CAAC,GAAG;IAExB,MAAMR,QAAQ;QAACL;QAA2BC;QAAoBC;QAAmBC;QAAkBC;KAAW;IAC9G,MAAMG,QAAkB,EAAE;IAE1B,MAAMS,SAAS1B,SAAS,CAACU,0BAA0B;IACnD,IAAIgB,QAAQ;QACXT,MAAMU,IAAI,CAACD,OAAOzB,IAAI;QACtB,MAAM2B,UAAUF,OAAOxB,QAAQ,EAAE,CAACS,mBAAmB;QACrD,IAAIiB,SAAS;YACZX,MAAMU,IAAI,CAACC,QAAQ3B,IAAI;QACxB;IACD;IAEA,OAAO;QACNK,KAAKiB;QACLb;QACAC;QACAC;QACAC;QACAC;QACAC;QACAE;QACAC,OAAOG,6BAA6BQ,IAAI,CAACN,MAAMxB,MAAM+B,QAAQ,CAACP;IAC/D;AACD;AAEA,OAAO,SAASQ,8BAA8B,EAC7CrB,yBAAyB,EACzBC,kBAAkB,EAClBC,iBAAiB,EACjBC,gBAAgB,EAChBC,UAAU,EAOV;IACA,MAAMkB,OAAO,GAAGtB,4BAA4BC,qBAAqBC,oBAAoBC,kBAAkB;IACvGC,eAAef,MAAMkC,OAAO,CAACD;IAC7B,OAAO,GAAGA,OAAOlB,YAAY;AAC9B;AAEA,OAAO,SAASoB,KAAKX,CAAS,EAAEY,QAAgB,CAAC;IAChD,MAAMC,KAAKb,EAAEc,KAAK,CAAC,IAAIC,GAAG,CAAC,CAACC,IAAMxC,MAAMyC,OAAO,CAACD,EAAE;IAClD,IAAK,IAAIE,IAAIL,GAAG5B,MAAM,GAAG,GAAGiC,KAAK,GAAGA,IAAK;QACxC,IAAI,AAACN,QAAQ,KAAKC,EAAE,CAACK,EAAE,GAAG,MAAQN,QAAQ,KAAKC,EAAE,CAACK,EAAE,GAAG,GAAI;YAC1DL,EAAE,CAACK,EAAE,IAAIN;YACT;QACD,OAAO,IAAIA,QAAQ,KAAKC,EAAE,CAACK,EAAE,KAAK,IAAI;YACrCL,EAAE,CAACK,EAAE,GAAG;QACT,OAAO,IAAIN,QAAQ,KAAKC,EAAE,CAACK,EAAE,KAAK,GAAG;YACpCL,EAAE,CAACK,EAAE,GAAG;QACT;IACD;IACA,OAAOL,GAAGE,GAAG,CAAC,CAACC,IAAMxC,MAAM2C,KAAK,CAACH,EAAE,EAAEI,IAAI,CAAC;AAC3C;UAEiBC;4BACHC,QAAQxB;4BACRyB,QAAQxB;4BACRyB,SAAShB;4BAETiB,eAAe5C;IACrB,SAASyB,KAAKN,CAA4B;QAChD,IAAI,CAACA,GAAG;YACP,OAAO;QACR;QACA,aAAa;QACb,OAAOsB,wBAAAA,MAAMhB,IAAI,CAACN,MAAMxB,MAAM+B,QAAQ,CAACP;IACxC;4BANgBM,OAAAA;AAOjB,GAbiBe,4BAAAA"}
@@ -0,0 +1 @@
1
+ export { UnifiedSocialCreditCodeRegex as regex, ParsedUnifiedSocialCreditCodeSchema as ResultSchema, parseUnifiedSocialCreditCode as parse, formatUnifiedSocialCreditCode as format } from "./UnifiedSocialCreditCode.js";
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { UnifiedSocialCreditCode } from "./UnifiedSocialCreditCode.js";
2
+ import { UnifiedSocialCreditCode } from "./index.js";
3
3
  describe("UnifiedSocialCreditCode", function () {
4
4
  it("should parse", function () {
5
5
  for (var _i = 0, _iter = [
@@ -0,0 +1,77 @@
1
+ /**
2
+ * @see https://gist.github.com/tonyc726/00c829a54a40cf80409f
3
+ * @see https://github.com/Siykt/javascript-algorithms/blob/master/src/algorithms/string/getChinesePrice.ts 人民币金额转中文大写
4
+ */ export function formatChineseAmount(price) {
5
+ if (price === 0) return '零元整';
6
+ if (price >= 1e12) return '整数位已超过最大值';
7
+ const CHINESE_NUMBER_MAP = [
8
+ '零',
9
+ '壹',
10
+ '贰',
11
+ '叁',
12
+ '肆',
13
+ '伍',
14
+ '陆',
15
+ '柒',
16
+ '捌',
17
+ '玖'
18
+ ];
19
+ const CHINESE_UNIT_MAP = [
20
+ '',
21
+ '拾',
22
+ '佰',
23
+ '仟'
24
+ ];
25
+ const CHINESE_BIG_UNIT_MAP = [
26
+ '',
27
+ '万',
28
+ '亿'
29
+ ];
30
+ const CHINESE_SMALL_UNIT_MAP = [
31
+ '角',
32
+ '分',
33
+ '厘',
34
+ '毫'
35
+ ];
36
+ const priceStr = price.toString();
37
+ const priceArr = priceStr.split('.');
38
+ const integer = priceArr[0];
39
+ const decimal = priceArr[1];
40
+ let chineseIntegerPrice = '';
41
+ let zeroCount = 0;
42
+ for(let i = 0; i < integer.length; i++){
43
+ const num = +integer[i];
44
+ const unit = integer.length - i - 1; // 当前数字的单位
45
+ const quotient = Math.floor(unit / 4); // 1w为进位单位, 除 4 即为 万 亿
46
+ const remainder = unit % 4; // 1w为进位单位, 取模 4 即为 个 十 百 千
47
+ if (num === 0) {
48
+ zeroCount++;
49
+ } else {
50
+ // 处理前置的零
51
+ if (zeroCount > 0) chineseIntegerPrice += CHINESE_NUMBER_MAP[0];
52
+ zeroCount = 0;
53
+ chineseIntegerPrice += CHINESE_NUMBER_MAP[num] + CHINESE_UNIT_MAP[remainder];
54
+ }
55
+ if (remainder === 0 && zeroCount < 4) {
56
+ chineseIntegerPrice += CHINESE_BIG_UNIT_MAP[quotient];
57
+ }
58
+ }
59
+ // 价格为小数时,整数部分不显示
60
+ if (price < 1) chineseIntegerPrice = '';
61
+ else chineseIntegerPrice += '元';
62
+ let chineseDecimalPrice = '';
63
+ if (!decimal) {
64
+ chineseDecimalPrice = '整';
65
+ } else {
66
+ let hasZero = false;
67
+ for(let i = 0; i < decimal.length; i++){
68
+ const num = +decimal[i];
69
+ if (num) chineseDecimalPrice += CHINESE_NUMBER_MAP[num] + CHINESE_SMALL_UNIT_MAP[i];
70
+ else hasZero = true;
71
+ }
72
+ if (chineseIntegerPrice && hasZero) chineseIntegerPrice += '零';
73
+ }
74
+ return chineseIntegerPrice + chineseDecimalPrice;
75
+ }
76
+
77
+ //# sourceMappingURL=formatChineseAmount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/formatChineseAmount.ts"],"sourcesContent":["/**\n * @see https://gist.github.com/tonyc726/00c829a54a40cf80409f\n * @see https://github.com/Siykt/javascript-algorithms/blob/master/src/algorithms/string/getChinesePrice.ts 人民币金额转中文大写\n */\nexport function formatChineseAmount(price: number) {\n\tif (price === 0) return '零元整';\n\tif (price >= 1e12) return '整数位已超过最大值';\n\n\tconst CHINESE_NUMBER_MAP = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];\n\tconst CHINESE_UNIT_MAP = ['', '拾', '佰', '仟'];\n\tconst CHINESE_BIG_UNIT_MAP = ['', '万', '亿'];\n\tconst CHINESE_SMALL_UNIT_MAP = ['角', '分', '厘', '毫'];\n\n\tconst priceStr = price.toString();\n\tconst priceArr = priceStr.split('.');\n\tconst integer = priceArr[0];\n\tconst decimal = priceArr[1];\n\n\tlet chineseIntegerPrice = '';\n\tlet zeroCount = 0;\n\n\tfor (let i = 0; i < integer.length; i++) {\n\t\tconst num = +integer[i];\n\t\tconst unit = integer.length - i - 1; // 当前数字的单位\n\t\tconst quotient = Math.floor(unit / 4); // 1w为进位单位, 除 4 即为 万 亿\n\t\tconst remainder = unit % 4; // 1w为进位单位, 取模 4 即为 个 十 百 千\n\n\t\tif (num === 0) {\n\t\t\tzeroCount++;\n\t\t} else {\n\t\t\t// 处理前置的零\n\t\t\tif (zeroCount > 0) chineseIntegerPrice += CHINESE_NUMBER_MAP[0];\n\t\t\tzeroCount = 0;\n\t\t\tchineseIntegerPrice += CHINESE_NUMBER_MAP[num] + CHINESE_UNIT_MAP[remainder];\n\t\t}\n\t\tif (remainder === 0 && zeroCount < 4) {\n\t\t\tchineseIntegerPrice += CHINESE_BIG_UNIT_MAP[quotient];\n\t\t}\n\t}\n\n\t// 价格为小数时,整数部分不显示\n\tif (price < 1) chineseIntegerPrice = '';\n\telse chineseIntegerPrice += '元';\n\n\tlet chineseDecimalPrice = '';\n\n\tif (!decimal) {\n\t\tchineseDecimalPrice = '整';\n\t} else {\n\t\tlet hasZero = false;\n\t\tfor (let i = 0; i < decimal.length; i++) {\n\t\t\tconst num = +decimal[i];\n\t\t\tif (num) chineseDecimalPrice += CHINESE_NUMBER_MAP[num] + CHINESE_SMALL_UNIT_MAP[i];\n\t\t\telse hasZero = true;\n\t\t}\n\n\t\tif (chineseIntegerPrice && hasZero) chineseIntegerPrice += '零';\n\t}\n\n\treturn chineseIntegerPrice + chineseDecimalPrice;\n}\n"],"names":["formatChineseAmount","price","CHINESE_NUMBER_MAP","CHINESE_UNIT_MAP","CHINESE_BIG_UNIT_MAP","CHINESE_SMALL_UNIT_MAP","priceStr","toString","priceArr","split","integer","decimal","chineseIntegerPrice","zeroCount","i","length","num","unit","quotient","Math","floor","remainder","chineseDecimalPrice","hasZero"],"mappings":"AAAA;;;CAGC,GACD,OAAO,SAASA,oBAAoBC,KAAa;IAChD,IAAIA,UAAU,GAAG,OAAO;IACxB,IAAIA,SAAS,MAAM,OAAO;IAE1B,MAAMC,qBAAqB;QAAC;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;QAAK;KAAI;IAC7E,MAAMC,mBAAmB;QAAC;QAAI;QAAK;QAAK;KAAI;IAC5C,MAAMC,uBAAuB;QAAC;QAAI;QAAK;KAAI;IAC3C,MAAMC,yBAAyB;QAAC;QAAK;QAAK;QAAK;KAAI;IAEnD,MAAMC,WAAWL,MAAMM,QAAQ;IAC/B,MAAMC,WAAWF,SAASG,KAAK,CAAC;IAChC,MAAMC,UAAUF,QAAQ,CAAC,EAAE;IAC3B,MAAMG,UAAUH,QAAQ,CAAC,EAAE;IAE3B,IAAII,sBAAsB;IAC1B,IAAIC,YAAY;IAEhB,IAAK,IAAIC,IAAI,GAAGA,IAAIJ,QAAQK,MAAM,EAAED,IAAK;QACxC,MAAME,MAAM,CAACN,OAAO,CAACI,EAAE;QACvB,MAAMG,OAAOP,QAAQK,MAAM,GAAGD,IAAI,GAAG,UAAU;QAC/C,MAAMI,WAAWC,KAAKC,KAAK,CAACH,OAAO,IAAI,sBAAsB;QAC7D,MAAMI,YAAYJ,OAAO,GAAG,2BAA2B;QAEvD,IAAID,QAAQ,GAAG;YACdH;QACD,OAAO;YACN,SAAS;YACT,IAAIA,YAAY,GAAGD,uBAAuBV,kBAAkB,CAAC,EAAE;YAC/DW,YAAY;YACZD,uBAAuBV,kBAAkB,CAACc,IAAI,GAAGb,gBAAgB,CAACkB,UAAU;QAC7E;QACA,IAAIA,cAAc,KAAKR,YAAY,GAAG;YACrCD,uBAAuBR,oBAAoB,CAACc,SAAS;QACtD;IACD;IAEA,iBAAiB;IACjB,IAAIjB,QAAQ,GAAGW,sBAAsB;SAChCA,uBAAuB;IAE5B,IAAIU,sBAAsB;IAE1B,IAAI,CAACX,SAAS;QACbW,sBAAsB;IACvB,OAAO;QACN,IAAIC,UAAU;QACd,IAAK,IAAIT,IAAI,GAAGA,IAAIH,QAAQI,MAAM,EAAED,IAAK;YACxC,MAAME,MAAM,CAACL,OAAO,CAACG,EAAE;YACvB,IAAIE,KAAKM,uBAAuBpB,kBAAkB,CAACc,IAAI,GAAGX,sBAAsB,CAACS,EAAE;iBAC9ES,UAAU;QAChB;QAEA,IAAIX,uBAAuBW,SAASX,uBAAuB;IAC5D;IAEA,OAAOA,sBAAsBU;AAC9B"}
package/lib/cn/index.js CHANGED
@@ -1,3 +1,7 @@
1
- export { ResidentIdentityCardNumber } from "./ResidentIdentityCardNumber.js";
2
- export { DivisionCode } from "./DivisionCode.js";
1
+ export { ChineseResidentIdNo } from "./ChineseResidentIdNo.js";
3
2
  export { UnifiedSocialCreditCode } from "./UnifiedSocialCreditCode.js";
3
+ export { DivisionCode } from "./DivisionCode.js";
4
+ export * from "./formatChineseAmount.js";
5
+ export * from "./parseChineseNumber.js";
6
+ export * from "./pinyin/toPinyinPure.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/index.ts"],"sourcesContent":["export { ChineseResidentIdNo } from './ChineseResidentIdNo';\nexport { UnifiedSocialCreditCode } from './UnifiedSocialCreditCode';\nexport { DivisionCode } from './DivisionCode';\n\nexport * from './formatChineseAmount';\nexport * from './parseChineseNumber';\nexport * from './pinyin/toPinyinPure';\n"],"names":["ChineseResidentIdNo","UnifiedSocialCreditCode","DivisionCode"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ,wBAAwB;AAC5D,SAASC,uBAAuB,QAAQ,4BAA4B;AACpE,SAASC,YAAY,QAAQ,iBAAiB;AAE9C,cAAc,wBAAwB;AACtC,cAAc,uBAAuB;AACrC,cAAc,wBAAwB"}
package/lib/cn/mod.js ADDED
@@ -0,0 +1,6 @@
1
+ import * as _ChineseResidentIdNo from "./ChineseResidentIdNo.mod.js";
2
+ export { _ChineseResidentIdNo as ChineseResidentIdNo };
3
+ import * as _UnifiedSocialCreditCode from "./UnifiedSocialCreditCode.mod.js";
4
+ export { _UnifiedSocialCreditCode as UnifiedSocialCreditCode };
5
+ import * as _DivisionCode from "./DivisionCode.mod.js";
6
+ export { _DivisionCode as DivisionCode };
@@ -0,0 +1,94 @@
1
+ const ToNumber = {
2
+ 〇: 0,
3
+ 一: 1,
4
+ 二: 2,
5
+ 三: 3,
6
+ 四: 4,
7
+ 五: 5,
8
+ 六: 6,
9
+ 七: 7,
10
+ 八: 8,
11
+ 九: 9,
12
+ 十: 10,
13
+ 百: 100,
14
+ 千: 1000,
15
+ 万: 10000,
16
+ 零: 0,
17
+ 壹: 1,
18
+ 贰: 2,
19
+ 叁: 3,
20
+ 肆: 4,
21
+ 伍: 5,
22
+ 陆: 6,
23
+ 柒: 7,
24
+ 捌: 8,
25
+ 玖: 9,
26
+ 拾: 10,
27
+ 佰: 100,
28
+ 仟: 1000,
29
+ 0: 0,
30
+ 1: 1,
31
+ 2: 2,
32
+ 3: 3,
33
+ 4: 4,
34
+ 5: 5,
35
+ 6: 6,
36
+ 7: 7,
37
+ 8: 8,
38
+ 9: 9
39
+ };
40
+ // 一万一 -> 10001
41
+ // 一万一百一 -> 10101
42
+ // 一万 -> 10000
43
+ // 10000 -> 10000
44
+ export function parseChineseNumber(s) {
45
+ if (typeof s === 'number') {
46
+ return s;
47
+ }
48
+ let n = 0;
49
+ let c = 0;
50
+ let base = 0;
51
+ let shouldAddLast = false;
52
+ for (const char of s.split('').reverse()){
53
+ c = ToNumber[char];
54
+ if (c === undefined) {
55
+ throw new Error(`无法解析的数字: ${char}`);
56
+ }
57
+ switch(c){
58
+ case 10:
59
+ {
60
+ base = 1;
61
+ break;
62
+ }
63
+ case 100:
64
+ {
65
+ base = 2;
66
+ break;
67
+ }
68
+ case 1000:
69
+ {
70
+ base = 3;
71
+ break;
72
+ }
73
+ case 10000:
74
+ {
75
+ base = 4;
76
+ break;
77
+ }
78
+ }
79
+ //
80
+ if (c < 10) {
81
+ n += c * 10 ** base;
82
+ base++;
83
+ shouldAddLast = false;
84
+ } else {
85
+ shouldAddLast = true;
86
+ }
87
+ }
88
+ if (shouldAddLast) {
89
+ n += c;
90
+ }
91
+ return n;
92
+ }
93
+
94
+ //# sourceMappingURL=parseChineseNumber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/parseChineseNumber.ts"],"sourcesContent":["const ToNumber: Record<string, number> = {\n\t〇: 0,\n\t一: 1,\n\t二: 2,\n\t三: 3,\n\t四: 4,\n\t五: 5,\n\t六: 6,\n\t七: 7,\n\t八: 8,\n\t九: 9,\n\t十: 10,\n\t百: 100,\n\t千: 1000,\n\t万: 10_000,\n\t零: 0,\n\t壹: 1,\n\t贰: 2,\n\t叁: 3,\n\t肆: 4,\n\t伍: 5,\n\t陆: 6,\n\t柒: 7,\n\t捌: 8,\n\t玖: 9,\n\t拾: 10,\n\t佰: 100,\n\t仟: 1000,\n\t0: 0,\n\t1: 1,\n\t2: 2,\n\t3: 3,\n\t4: 4,\n\t5: 5,\n\t6: 6,\n\t7: 7,\n\t8: 8,\n\t9: 9,\n};\n\n// 一万一 -> 10001\n// 一万一百一 -> 10101\n// 一万 -> 10000\n// 10000 -> 10000\nexport function parseChineseNumber(s: string | number) {\n\tif (typeof s === 'number') {\n\t\treturn s;\n\t}\n\n\tlet n = 0;\n\tlet c = 0;\n\tlet base = 0;\n\tlet shouldAddLast = false;\n\tfor (const char of s.split('').reverse()) {\n\t\tc = ToNumber[char];\n\t\tif (c === undefined) {\n\t\t\tthrow new Error(`无法解析的数字: ${char}`);\n\t\t}\n\n\t\tswitch (c) {\n\t\t\tcase 10: {\n\t\t\t\tbase = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 100: {\n\t\t\t\tbase = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 1000: {\n\t\t\t\tbase = 3;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 10_000: {\n\t\t\t\tbase = 4;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//\n\t\tif (c < 10) {\n\t\t\tn += c * 10 ** base;\n\t\t\tbase++;\n\t\t\tshouldAddLast = false;\n\t\t} else {\n\t\t\tshouldAddLast = true;\n\t\t}\n\t}\n\n\tif (shouldAddLast) {\n\t\tn += c;\n\t}\n\n\treturn n;\n}\n"],"names":["ToNumber","〇","一","二","三","四","五","六","七","八","九","十","百","千","万","零","壹","贰","叁","肆","伍","陆","柒","捌","玖","拾","佰","仟","parseChineseNumber","s","n","c","base","shouldAddLast","char","split","reverse","undefined","Error"],"mappings":"AAAA,MAAMA,WAAmC;IACxCC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACHC,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;IACH,GAAG;AACJ;AAEA,eAAe;AACf,iBAAiB;AACjB,cAAc;AACd,iBAAiB;AACjB,OAAO,SAASC,mBAAmBC,CAAkB;IACpD,IAAI,OAAOA,MAAM,UAAU;QAC1B,OAAOA;IACR;IAEA,IAAIC,IAAI;IACR,IAAIC,IAAI;IACR,IAAIC,OAAO;IACX,IAAIC,gBAAgB;IACpB,KAAK,MAAMC,QAAQL,EAAEM,KAAK,CAAC,IAAIC,OAAO,GAAI;QACzCL,IAAI/B,QAAQ,CAACkC,KAAK;QAClB,IAAIH,MAAMM,WAAW;YACpB,MAAM,IAAIC,MAAM,CAAC,SAAS,EAAEJ,MAAM;QACnC;QAEA,OAAQH;YACP,KAAK;gBAAI;oBACRC,OAAO;oBACP;gBACD;YAEA,KAAK;gBAAK;oBACTA,OAAO;oBACP;gBACD;YAEA,KAAK;gBAAM;oBACVA,OAAO;oBACP;gBACD;YAEA,KAAK;gBAAQ;oBACZA,OAAO;oBACP;gBACD;QACD;QAEA,EAAE;QACF,IAAID,IAAI,IAAI;YACXD,KAAKC,IAAI,MAAMC;YACfA;YACAC,gBAAgB;QACjB,OAAO;YACNA,gBAAgB;QACjB;IACD;IAEA,IAAIA,eAAe;QAClBH,KAAKC;IACN;IAEA,OAAOD;AACR"}