@wener/common 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/lib/ai/qwen3vl/index.js +2 -0
  2. package/lib/ai/qwen3vl/index.js.map +1 -0
  3. package/lib/ai/qwen3vl/utils.js +31 -0
  4. package/lib/ai/qwen3vl/utils.js.map +1 -0
  5. package/lib/ai/vision/DocLayoutElementTypeSchema.js +28 -0
  6. package/lib/ai/vision/DocLayoutElementTypeSchema.js.map +1 -0
  7. package/lib/ai/vision/ImageAnnotationSchema.js +50 -0
  8. package/lib/ai/vision/ImageAnnotationSchema.js.map +1 -0
  9. package/lib/ai/vision/index.js +3 -0
  10. package/lib/ai/vision/index.js.map +1 -0
  11. package/lib/ai/vision/resolveImageAnnotation.js +105 -0
  12. package/lib/ai/vision/resolveImageAnnotation.js.map +1 -0
  13. package/lib/cn/ChineseResidentIdNo.js +21 -14
  14. package/lib/cn/ChineseResidentIdNo.js.map +1 -0
  15. package/lib/cn/ChineseResidentIdNo.test.js +1 -1
  16. package/lib/cn/DivisionCode.js +30 -25
  17. package/lib/cn/DivisionCode.js.map +1 -0
  18. package/lib/cn/DivisionCode.test.js +1 -1
  19. package/lib/cn/Mod11.js +38 -81
  20. package/lib/cn/Mod11.js.map +1 -0
  21. package/lib/cn/Mod31.js +41 -90
  22. package/lib/cn/Mod31.js.map +1 -0
  23. package/lib/cn/UnifiedSocialCreditCode.js +43 -34
  24. package/lib/cn/UnifiedSocialCreditCode.js.map +1 -0
  25. package/lib/cn/UnifiedSocialCreditCode.test.js +1 -1
  26. package/lib/cn/formatChineseAmount.js +77 -0
  27. package/lib/cn/formatChineseAmount.js.map +1 -0
  28. package/lib/cn/index.js +7 -1
  29. package/lib/cn/index.js.map +1 -0
  30. package/lib/cn/parseChineseNumber.js +94 -0
  31. package/lib/cn/parseChineseNumber.js.map +1 -0
  32. package/lib/cn/parseChineseNumber.test.js +278 -0
  33. package/lib/cn/pinyin/cartesianProduct.js +22 -0
  34. package/lib/cn/pinyin/cartesianProduct.js.map +1 -0
  35. package/lib/cn/pinyin/cartesianProduct.test.js +179 -0
  36. package/lib/cn/pinyin/data.json +23573 -0
  37. package/lib/cn/pinyin/loader.js +14 -0
  38. package/lib/cn/pinyin/loader.js.map +1 -0
  39. package/lib/cn/pinyin/preload.js +3 -0
  40. package/lib/cn/pinyin/preload.js.map +1 -0
  41. package/lib/cn/pinyin/toPinyin.test.js +167 -0
  42. package/lib/cn/pinyin/toPinyinPure.js +33 -0
  43. package/lib/cn/pinyin/toPinyinPure.js.map +1 -0
  44. package/lib/cn/pinyin/transform.js +14 -0
  45. package/lib/cn/pinyin/transform.js.map +1 -0
  46. package/lib/cn/types.d.js +2 -0
  47. package/lib/cn/types.d.js.map +1 -0
  48. package/lib/consola/createStandardConsolaReporter.js +6 -6
  49. package/lib/consola/createStandardConsolaReporter.js.map +1 -0
  50. package/lib/consola/formatLogObject.js +65 -145
  51. package/lib/consola/formatLogObject.js.map +1 -0
  52. package/lib/consola/formatLogObject.test.js +184 -0
  53. package/lib/consola/index.js +1 -0
  54. package/lib/consola/index.js.map +1 -0
  55. package/lib/data/formatSort.js +6 -5
  56. package/lib/data/formatSort.js.map +1 -0
  57. package/lib/data/index.js +1 -0
  58. package/lib/data/index.js.map +1 -0
  59. package/lib/data/maybeNumber.js +5 -7
  60. package/lib/data/maybeNumber.js.map +1 -0
  61. package/lib/data/parseSort.js +22 -28
  62. package/lib/data/parseSort.js.map +1 -0
  63. package/lib/data/resolvePagination.js +13 -17
  64. package/lib/data/resolvePagination.js.map +1 -0
  65. package/lib/data/types.d.js +2 -0
  66. package/lib/data/types.d.js.map +1 -0
  67. package/lib/dayjs/dayjs.js +21 -19
  68. package/lib/dayjs/dayjs.js.map +1 -0
  69. package/lib/dayjs/formatDuration.js +15 -14
  70. package/lib/dayjs/formatDuration.js.map +1 -0
  71. package/lib/dayjs/index.js +2 -0
  72. package/lib/dayjs/index.js.map +1 -0
  73. package/lib/dayjs/parseDuration.js +5 -8
  74. package/lib/dayjs/parseDuration.js.map +1 -0
  75. package/lib/dayjs/parseRelativeTime.js +90 -0
  76. package/lib/dayjs/parseRelativeTime.js.map +1 -0
  77. package/lib/dayjs/parseRelativeTime.test.js +247 -0
  78. package/lib/dayjs/resolveRelativeTime.js +158 -0
  79. package/lib/dayjs/resolveRelativeTime.js.map +1 -0
  80. package/lib/dayjs/resolveRelativeTime.test.js +310 -0
  81. package/lib/decimal/index.js +1 -0
  82. package/lib/decimal/index.js.map +1 -0
  83. package/lib/decimal/parseDecimal.js +3 -1
  84. package/lib/decimal/parseDecimal.js.map +1 -0
  85. package/lib/emittery/emitter.js +10 -0
  86. package/lib/emittery/emitter.js.map +1 -0
  87. package/lib/emittery/index.js +2 -0
  88. package/lib/emittery/index.js.map +1 -0
  89. package/lib/foundation/schema/SexType.js +5 -3
  90. package/lib/foundation/schema/SexType.js.map +1 -0
  91. package/lib/foundation/schema/index.js +1 -0
  92. package/lib/foundation/schema/index.js.map +1 -0
  93. package/lib/foundation/schema/parseSexType.js +1 -0
  94. package/lib/foundation/schema/parseSexType.js.map +1 -0
  95. package/lib/foundation/schema/types.js +4 -2
  96. package/lib/foundation/schema/types.js.map +1 -0
  97. package/lib/fs/FileSystemError.js +23 -0
  98. package/lib/fs/FileSystemError.js.map +1 -0
  99. package/lib/fs/IFileSystem.d.js +3 -0
  100. package/lib/fs/IFileSystem.d.js.map +1 -0
  101. package/lib/fs/MemoryFileSystem.test.js +188 -0
  102. package/lib/fs/createBrowserFileSystem.js +248 -0
  103. package/lib/fs/createBrowserFileSystem.js.map +1 -0
  104. package/lib/fs/createMemoryFileSystem.js +516 -0
  105. package/lib/fs/createMemoryFileSystem.js.map +1 -0
  106. package/lib/fs/createSandboxFileSystem.js +108 -0
  107. package/lib/fs/createSandboxFileSystem.js.map +1 -0
  108. package/lib/fs/createWebDavFileSystem.js +137 -0
  109. package/lib/fs/createWebDavFileSystem.js.map +1 -0
  110. package/lib/fs/findMimeType.js +17 -0
  111. package/lib/fs/findMimeType.js.map +1 -0
  112. package/lib/fs/index.js +8 -0
  113. package/lib/fs/index.js.map +1 -0
  114. package/lib/fs/orpc/FileSystemContract.js +93 -0
  115. package/lib/fs/orpc/FileSystemContract.js.map +1 -0
  116. package/lib/fs/orpc/createContractClientFileSystem.js +93 -0
  117. package/lib/fs/orpc/createContractClientFileSystem.js.map +1 -0
  118. package/lib/fs/orpc/index.js +3 -0
  119. package/lib/fs/orpc/index.js.map +1 -0
  120. package/lib/fs/orpc/server/createFileSystemContractImpl.js +63 -0
  121. package/lib/fs/orpc/server/createFileSystemContractImpl.js.map +1 -0
  122. package/lib/fs/orpc/server/index.js +2 -0
  123. package/lib/fs/orpc/server/index.js.map +1 -0
  124. package/lib/fs/s3/createS3MiniFileSystem.js +705 -0
  125. package/lib/fs/s3/createS3MiniFileSystem.js.map +1 -0
  126. package/lib/fs/s3/index.js +2 -0
  127. package/lib/fs/s3/index.js.map +1 -0
  128. package/lib/fs/s3/s3mini.test.js +584 -0
  129. package/lib/fs/scandir.js +59 -0
  130. package/lib/fs/scandir.js.map +1 -0
  131. package/lib/fs/server/createDatabaseFileSystem.js +750 -0
  132. package/lib/fs/server/createDatabaseFileSystem.js.map +1 -0
  133. package/lib/fs/server/createNodeFileSystem.js +401 -0
  134. package/lib/fs/server/createNodeFileSystem.js.map +1 -0
  135. package/lib/fs/server/dbfs.test.js +221 -0
  136. package/lib/fs/server/index.js +2 -0
  137. package/lib/fs/server/index.js.map +1 -0
  138. package/lib/fs/server/loadTestDatabase.js +127 -0
  139. package/lib/fs/server/loadTestDatabase.js.map +1 -0
  140. package/lib/fs/tests/runFileSystemTest.js +318 -0
  141. package/lib/fs/tests/runFileSystemTest.js.map +1 -0
  142. package/lib/fs/types.js +27 -0
  143. package/lib/fs/types.js.map +1 -0
  144. package/lib/fs/utils/getFileUrl.js +35 -0
  145. package/lib/fs/utils/getFileUrl.js.map +1 -0
  146. package/lib/fs/utils.js +22 -0
  147. package/lib/fs/utils.js.map +1 -0
  148. package/lib/index.js +1 -0
  149. package/lib/index.js.map +1 -0
  150. package/lib/jsonschema/JsonSchema.js +146 -172
  151. package/lib/jsonschema/JsonSchema.js.map +1 -0
  152. package/lib/jsonschema/forEachJsonSchema.js +44 -0
  153. package/lib/jsonschema/forEachJsonSchema.js.map +1 -0
  154. package/lib/jsonschema/index.js +2 -0
  155. package/lib/jsonschema/index.js.map +1 -0
  156. package/lib/jsonschema/types.d.js +2 -0
  157. package/lib/jsonschema/types.d.js.map +1 -0
  158. package/lib/meta/defineFileType.js +20 -103
  159. package/lib/meta/defineFileType.js.map +1 -0
  160. package/lib/meta/defineInit.js +31 -250
  161. package/lib/meta/defineInit.js.map +1 -0
  162. package/lib/meta/defineMetadata.js +24 -140
  163. package/lib/meta/defineMetadata.js.map +1 -0
  164. package/lib/meta/index.js +1 -0
  165. package/lib/meta/index.js.map +1 -0
  166. package/lib/orpc/createOpenApiContractClient.js +27 -0
  167. package/lib/orpc/createOpenApiContractClient.js.map +1 -0
  168. package/lib/orpc/createRpcContractClient.js +34 -0
  169. package/lib/orpc/createRpcContractClient.js.map +1 -0
  170. package/lib/orpc/index.js +3 -0
  171. package/lib/orpc/index.js.map +1 -0
  172. package/lib/orpc/resolveLinkPlugins.js +28 -0
  173. package/lib/orpc/resolveLinkPlugins.js.map +1 -0
  174. package/lib/password/PHC.js +63 -87
  175. package/lib/password/PHC.js.map +1 -0
  176. package/lib/password/PHC.test.js +11 -3
  177. package/lib/password/Password.js +29 -294
  178. package/lib/password/Password.js.map +1 -0
  179. package/lib/password/Password.test.js +35 -22
  180. package/lib/password/createArgon2PasswordAlgorithm.js +35 -191
  181. package/lib/password/createArgon2PasswordAlgorithm.js.map +1 -0
  182. package/lib/password/createBase64PasswordAlgorithm.js +8 -141
  183. package/lib/password/createBase64PasswordAlgorithm.js.map +1 -0
  184. package/lib/password/createBcryptPasswordAlgorithm.js +13 -168
  185. package/lib/password/createBcryptPasswordAlgorithm.js.map +1 -0
  186. package/lib/password/createPBKDF2PasswordAlgorithm.js +46 -228
  187. package/lib/password/createPBKDF2PasswordAlgorithm.js.map +1 -0
  188. package/lib/password/createScryptPasswordAlgorithm.js +55 -211
  189. package/lib/password/createScryptPasswordAlgorithm.js.map +1 -0
  190. package/lib/password/index.js +1 -0
  191. package/lib/password/index.js.map +1 -0
  192. package/lib/password/server/index.js +1 -0
  193. package/lib/password/server/index.js.map +1 -0
  194. package/lib/resource/Identifiable.js +2 -0
  195. package/lib/resource/Identifiable.js.map +1 -0
  196. package/lib/resource/ListQuery.js +21 -93
  197. package/lib/resource/ListQuery.js.map +1 -0
  198. package/lib/resource/getTitleOfResource.js +3 -5
  199. package/lib/resource/getTitleOfResource.js.map +1 -0
  200. package/lib/resource/index.js +1 -0
  201. package/lib/resource/index.js.map +1 -0
  202. package/lib/resource/schema/AnyResourceSchema.js +2 -1
  203. package/lib/resource/schema/AnyResourceSchema.js.map +1 -0
  204. package/lib/resource/schema/BaseResourceSchema.js +2 -1
  205. package/lib/resource/schema/BaseResourceSchema.js.map +1 -0
  206. package/lib/resource/schema/ResourceActionType.js +6 -4
  207. package/lib/resource/schema/ResourceActionType.js.map +1 -0
  208. package/lib/resource/schema/ResourceStatus.js +5 -3
  209. package/lib/resource/schema/ResourceStatus.js.map +1 -0
  210. package/lib/resource/schema/ResourceType.js +5 -3
  211. package/lib/resource/schema/ResourceType.js.map +1 -0
  212. package/lib/resource/schema/index.js +1 -0
  213. package/lib/resource/schema/index.js.map +1 -0
  214. package/lib/resource/schema/types.js +16 -20
  215. package/lib/resource/schema/types.js.map +1 -0
  216. package/lib/s3/formatS3Url.js +65 -0
  217. package/lib/s3/formatS3Url.js.map +1 -0
  218. package/lib/s3/formatS3Url.test.js +262 -0
  219. package/lib/s3/index.js +3 -0
  220. package/lib/s3/index.js.map +1 -0
  221. package/lib/s3/parseS3Url.js +65 -0
  222. package/lib/s3/parseS3Url.js.map +1 -0
  223. package/lib/s3/parseS3Url.test.js +270 -0
  224. package/lib/schema/SchemaRegistry.js +38 -38
  225. package/lib/schema/SchemaRegistry.js.map +1 -0
  226. package/lib/schema/TypeSchema.d.js +2 -0
  227. package/lib/schema/TypeSchema.d.js.map +1 -0
  228. package/lib/schema/createSchemaData.js +26 -125
  229. package/lib/schema/createSchemaData.js.map +1 -0
  230. package/lib/schema/findJsonSchemaByPath.js +13 -36
  231. package/lib/schema/findJsonSchemaByPath.js.map +1 -0
  232. package/lib/schema/formatZodError.js +140 -0
  233. package/lib/schema/formatZodError.js.map +1 -0
  234. package/lib/schema/formatZodError.test.js +196 -0
  235. package/lib/schema/getSchemaCache.js +5 -5
  236. package/lib/schema/getSchemaCache.js.map +1 -0
  237. package/lib/schema/getSchemaOptions.js +8 -11
  238. package/lib/schema/getSchemaOptions.js.map +1 -0
  239. package/lib/schema/index.js +2 -1
  240. package/lib/schema/index.js.map +1 -0
  241. package/lib/schema/toJsonSchema.js +47 -290
  242. package/lib/schema/toJsonSchema.js.map +1 -0
  243. package/lib/schema/validate.js +33 -45
  244. package/lib/schema/validate.js.map +1 -0
  245. package/lib/tools/generateSchema.js +39 -197
  246. package/lib/tools/generateSchema.js.map +1 -0
  247. package/lib/tools/renderJsonSchemaToMarkdownDoc.js +55 -143
  248. package/lib/tools/renderJsonSchemaToMarkdownDoc.js.map +1 -0
  249. package/lib/utils/buildBaseUrl.js +13 -0
  250. package/lib/utils/buildBaseUrl.js.map +1 -0
  251. package/lib/utils/buildRedactorFormSchema.js +59 -0
  252. package/lib/utils/buildRedactorFormSchema.js.map +1 -0
  253. package/lib/utils/getEstimateProcessTime.js +12 -11
  254. package/lib/utils/getEstimateProcessTime.js.map +1 -0
  255. package/lib/utils/index.js +3 -0
  256. package/lib/utils/index.js.map +1 -0
  257. package/lib/utils/resolveFeatureOptions.js +12 -0
  258. package/lib/utils/resolveFeatureOptions.js.map +1 -0
  259. package/package.json +61 -13
  260. package/src/ai/qwen3vl/index.ts +1 -0
  261. package/src/ai/qwen3vl/utils.ts +36 -0
  262. package/src/ai/vision/DocLayoutElementTypeSchema.ts +30 -0
  263. package/src/ai/vision/ImageAnnotationSchema.ts +60 -0
  264. package/src/ai/vision/index.ts +2 -0
  265. package/src/ai/vision/resolveImageAnnotation.ts +135 -0
  266. package/src/cn/ChineseResidentIdNo.test.ts +1 -1
  267. package/src/cn/ChineseResidentIdNo.ts +8 -0
  268. package/src/cn/DivisionCode.test.ts +1 -1
  269. package/src/cn/DivisionCode.ts +8 -0
  270. package/src/cn/UnifiedSocialCreditCode.test.ts +1 -1
  271. package/src/cn/UnifiedSocialCreditCode.ts +15 -0
  272. package/src/cn/__snapshots__/UnifiedSocialCreditCode.test.ts.snap +23 -0
  273. package/src/cn/formatChineseAmount.ts +61 -0
  274. package/src/cn/index.ts +7 -1
  275. package/src/cn/parseChineseNumber.test.ts +159 -0
  276. package/src/cn/parseChineseNumber.ts +97 -0
  277. package/src/cn/pinyin/cartesianProduct.test.ts +64 -0
  278. package/src/cn/pinyin/cartesianProduct.ts +24 -0
  279. package/src/cn/pinyin/data.json +23573 -0
  280. package/src/cn/pinyin/loader.ts +12 -0
  281. package/src/cn/pinyin/preload.ts +3 -0
  282. package/src/cn/pinyin/toPinyin.test.ts +12 -0
  283. package/src/cn/pinyin/toPinyinPure.ts +43 -0
  284. package/src/cn/pinyin/transform.ts +12 -0
  285. package/src/consola/formatLogObject.test.ts +27 -0
  286. package/src/consola/formatLogObject.ts +34 -6
  287. package/src/dayjs/dayjs.ts +18 -18
  288. package/src/dayjs/index.ts +3 -1
  289. package/src/dayjs/parseRelativeTime.test.ts +185 -0
  290. package/src/dayjs/parseRelativeTime.ts +115 -0
  291. package/src/dayjs/resolveRelativeTime.test.ts +357 -0
  292. package/src/dayjs/resolveRelativeTime.ts +167 -0
  293. package/src/emittery/emitter.ts +9 -0
  294. package/src/emittery/index.ts +1 -0
  295. package/src/fs/FileSystemError.ts +26 -0
  296. package/src/fs/IFileSystem.d.ts +102 -0
  297. package/src/fs/MemoryFileSystem.test.ts +37 -0
  298. package/src/fs/createBrowserFileSystem.ts +291 -0
  299. package/src/fs/createMemoryFileSystem.ts +604 -0
  300. package/src/fs/createSandboxFileSystem.ts +136 -0
  301. package/src/fs/createWebDavFileSystem.ts +172 -0
  302. package/src/fs/findMimeType.ts +23 -0
  303. package/src/fs/index.ts +8 -0
  304. package/src/fs/orpc/FileSystemContract.ts +92 -0
  305. package/src/fs/orpc/createContractClientFileSystem.ts +115 -0
  306. package/src/fs/orpc/index.ts +2 -0
  307. package/src/fs/orpc/server/createFileSystemContractImpl.ts +64 -0
  308. package/src/fs/orpc/server/index.ts +1 -0
  309. package/src/fs/s3/createS3MiniFileSystem.ts +830 -0
  310. package/src/fs/s3/index.ts +1 -0
  311. package/src/fs/s3/s3mini.test.ts +264 -0
  312. package/src/fs/scandir.ts +75 -0
  313. package/src/fs/server/createDatabaseFileSystem.ts +668 -0
  314. package/src/fs/server/createNodeFileSystem.ts +499 -0
  315. package/src/fs/server/dbfs.test.ts +47 -0
  316. package/src/fs/server/index.ts +1 -0
  317. package/src/fs/server/loadTestDatabase.ts +131 -0
  318. package/src/fs/tests/runFileSystemTest.ts +288 -0
  319. package/src/fs/types.ts +29 -0
  320. package/src/fs/utils/getFileUrl.ts +44 -0
  321. package/src/fs/utils.ts +23 -0
  322. package/src/jsonschema/JsonSchema.ts +118 -110
  323. package/src/jsonschema/forEachJsonSchema.ts +50 -0
  324. package/src/jsonschema/index.ts +1 -0
  325. package/src/orpc/createOpenApiContractClient.ts +52 -0
  326. package/src/orpc/createRpcContractClient.ts +50 -0
  327. package/src/orpc/index.ts +2 -0
  328. package/src/orpc/resolveLinkPlugins.ts +29 -0
  329. package/src/password/PHC.ts +3 -3
  330. package/src/password/Password.test.ts +1 -1
  331. package/src/password/createPBKDF2PasswordAlgorithm.ts +2 -2
  332. package/src/resource/schema/AnyResourceSchema.ts +16 -2
  333. package/src/s3/formatS3Url.test.ts +254 -0
  334. package/src/s3/formatS3Url.ts +84 -0
  335. package/src/s3/index.ts +2 -0
  336. package/src/s3/parseS3Url.test.ts +258 -0
  337. package/src/s3/parseS3Url.ts +88 -0
  338. package/src/schema/SchemaRegistry.ts +35 -33
  339. package/src/schema/formatZodError.test.ts +196 -0
  340. package/src/schema/formatZodError.ts +151 -0
  341. package/src/schema/getSchemaOptions.ts +2 -2
  342. package/src/schema/index.ts +1 -1
  343. package/src/utils/buildBaseUrl.ts +12 -0
  344. package/src/utils/buildRedactorFormSchema.ts +85 -0
  345. package/src/utils/index.ts +4 -0
  346. package/src/utils/resolveFeatureOptions.ts +14 -0
  347. package/src/cn/ChineseResidentIdNo.mod.ts +0 -7
  348. package/src/cn/DivisionCode.mod.ts +0 -7
  349. package/src/cn/UnifiedSocialCreditCode.mod.ts +0 -7
  350. package/src/cn/mod.ts +0 -3
  351. package/src/schema/SchemaRegistry.mod.ts +0 -1
package/lib/cn/Mod11.js CHANGED
@@ -1,86 +1,43 @@
1
1
  /**
2
2
  * ISO 7064:1983, MOD 11-2.
3
- */ function _class_call_check(instance, Constructor) {
4
- if (!(instance instanceof Constructor)) {
5
- throw new TypeError("Cannot call a class as a function");
3
+ */ export class Mod11Checksum {
4
+ weights = [
5
+ 7,
6
+ 9,
7
+ 10,
8
+ 5,
9
+ 8,
10
+ 4,
11
+ 2,
12
+ 1,
13
+ 6,
14
+ 3,
15
+ 7,
16
+ 9,
17
+ 10,
18
+ 5,
19
+ 8,
20
+ 4,
21
+ 2,
22
+ 1
23
+ ];
24
+ validate(s) {
25
+ return s.at(-1) === this.compute(s.slice(0, s.length - 1));
6
26
  }
7
- }
8
- function _defineProperties(target, props) {
9
- for(var i = 0; i < props.length; i++){
10
- var descriptor = props[i];
11
- descriptor.enumerable = descriptor.enumerable || false;
12
- descriptor.configurable = true;
13
- if ("value" in descriptor) descriptor.writable = true;
14
- Object.defineProperty(target, descriptor.key, descriptor);
15
- }
16
- }
17
- function _create_class(Constructor, protoProps, staticProps) {
18
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
19
- if (staticProps) _defineProperties(Constructor, staticProps);
20
- return Constructor;
21
- }
22
- function _define_property(obj, key, value) {
23
- if (key in obj) {
24
- Object.defineProperty(obj, key, {
25
- value: value,
26
- enumerable: true,
27
- configurable: true,
28
- writable: true
29
- });
30
- } else {
31
- obj[key] = value;
27
+ compute(s) {
28
+ const { weights } = this;
29
+ let sum = 0;
30
+ for(let i = 0; i < s.length; i++){
31
+ sum += parseInt(s[i]) * weights[i];
32
+ }
33
+ const num = (12 - sum % 11) % 11;
34
+ if (num < 10) {
35
+ return num.toString();
36
+ } else {
37
+ return 'X';
38
+ }
32
39
  }
33
- return obj;
34
40
  }
35
- export var Mod11Checksum = /*#__PURE__*/ function() {
36
- "use strict";
37
- function Mod11Checksum() {
38
- _class_call_check(this, Mod11Checksum);
39
- _define_property(this, "weights", [
40
- 7,
41
- 9,
42
- 10,
43
- 5,
44
- 8,
45
- 4,
46
- 2,
47
- 1,
48
- 6,
49
- 3,
50
- 7,
51
- 9,
52
- 10,
53
- 5,
54
- 8,
55
- 4,
56
- 2,
57
- 1
58
- ]);
59
- }
60
- _create_class(Mod11Checksum, [
61
- {
62
- key: "validate",
63
- value: function validate(s) {
64
- return s.at(-1) === this.compute(s.slice(0, s.length - 1));
65
- }
66
- },
67
- {
68
- key: "compute",
69
- value: function compute(s) {
70
- var weights = this.weights;
71
- var sum = 0;
72
- for(var i = 0; i < s.length; i++){
73
- sum += parseInt(s[i]) * weights[i];
74
- }
75
- var num = (12 - sum % 11) % 11;
76
- if (num < 10) {
77
- return num.toString();
78
- } else {
79
- return 'X';
80
- }
81
- }
82
- }
83
- ]);
84
- return Mod11Checksum;
85
- }();
86
- export var Mod11 = new Mod11Checksum();
41
+ export const Mod11 = new Mod11Checksum();
42
+
43
+ //# sourceMappingURL=Mod11.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/cn/Mod11.ts"],"sourcesContent":["/**\n * ISO 7064:1983, MOD 11-2.\n */\nexport class Mod11Checksum {\n\tprotected weights = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1];\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\tconst { weights } = this;\n\t\tlet sum = 0;\n\t\tfor (let i = 0; i < s.length; i++) {\n\t\t\tsum += parseInt(s[i]) * weights[i];\n\t\t}\n\t\tconst num = (12 - (sum % 11)) % 11;\n\t\tif (num < 10) {\n\t\t\treturn num.toString();\n\t\t} else {\n\t\t\treturn 'X';\n\t\t}\n\t}\n}\n\nexport const Mod11 = new Mod11Checksum();\n"],"names":["Mod11Checksum","weights","validate","s","at","compute","slice","length","sum","i","parseInt","num","toString","Mod11"],"mappings":"AAAA;;CAEC,GACD,OAAO,MAAMA;IACFC,UAAU;QAAC;QAAG;QAAG;QAAI;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAG;QAAI;QAAG;QAAG;QAAG;QAAG;KAAE,CAAC;IAE7EC,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,MAAM,EAAEF,OAAO,EAAE,GAAG,IAAI;QACxB,IAAIO,MAAM;QACV,IAAK,IAAIC,IAAI,GAAGA,IAAIN,EAAEI,MAAM,EAAEE,IAAK;YAClCD,OAAOE,SAASP,CAAC,CAACM,EAAE,IAAIR,OAAO,CAACQ,EAAE;QACnC;QACA,MAAME,MAAM,AAAC,CAAA,KAAMH,MAAM,EAAE,IAAK;QAChC,IAAIG,MAAM,IAAI;YACb,OAAOA,IAAIC,QAAQ;QACpB,OAAO;YACN,OAAO;QACR;IACD;AACD;AAEA,OAAO,MAAMC,QAAQ,IAAIb,gBAAgB"}
package/lib/cn/Mod31.js CHANGED
@@ -2,97 +2,48 @@
2
2
  * GB/T 17710(采ISO 7064)的模31校验码
3
3
  *
4
4
  * Mod31-3
5
- */ function _class_call_check(instance, Constructor) {
6
- if (!(instance instanceof Constructor)) {
7
- throw new TypeError("Cannot call a class as a function");
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];
8
32
  }
9
- }
10
- function _defineProperties(target, props) {
11
- for(var i = 0; i < props.length; i++){
12
- var descriptor = props[i];
13
- descriptor.enumerable = descriptor.enumerable || false;
14
- descriptor.configurable = true;
15
- if ("value" in descriptor) descriptor.writable = true;
16
- Object.defineProperty(target, descriptor.key, descriptor);
33
+ toNumber(c) {
34
+ return this.numbers[c];
17
35
  }
18
- }
19
- function _create_class(Constructor, protoProps, staticProps) {
20
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
21
- if (staticProps) _defineProperties(Constructor, staticProps);
22
- return Constructor;
23
- }
24
- function _define_property(obj, key, value) {
25
- if (key in obj) {
26
- Object.defineProperty(obj, key, {
27
- value: value,
28
- enumerable: true,
29
- configurable: true,
30
- writable: true
31
- });
32
- } else {
33
- obj[key] = value;
36
+ validate(s) {
37
+ return s.at(-1) === this.compute(s.slice(0, s.length - 1));
34
38
  }
35
- return obj;
36
- }
37
- export var Mod31Checksum = /*#__PURE__*/ function() {
38
- "use strict";
39
- function Mod31Checksum() {
40
- _class_call_check(this, Mod31Checksum);
41
- _define_property(this, "weights", [
42
- 1,
43
- 3,
44
- 9,
45
- 27,
46
- 19,
47
- 26,
48
- 16,
49
- 17,
50
- 20,
51
- 29,
52
- 25,
53
- 13,
54
- 8,
55
- 24,
56
- 10,
57
- 30,
58
- 28
59
- ]);
60
- _define_property(this, "chars", '0123456789ABCDEFGHJKLMNPQRTUWXY');
61
- _define_property(this, "numbers", this.chars.split('').reduce(function(acc, cur, i) {
62
- acc[cur] = i;
63
- return acc;
64
- }, {}));
65
- }
66
- _create_class(Mod31Checksum, [
67
- {
68
- key: "toChar",
69
- value: function toChar(n) {
70
- return this.chars[n];
71
- }
72
- },
73
- {
74
- key: "toNumber",
75
- value: function toNumber(c) {
76
- return this.numbers[c];
77
- }
78
- },
79
- {
80
- key: "validate",
81
- value: function validate(s) {
82
- return s.at(-1) === this.compute(s.slice(0, s.length - 1));
83
- }
84
- },
85
- {
86
- key: "compute",
87
- value: function compute(s) {
88
- var sum = 0;
89
- for(var i = 0; i < s.length; i++){
90
- sum += this.numbers[s[i]] * this.weights[i];
91
- }
92
- return this.toChar(31 - sum % 31);
93
- }
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];
94
43
  }
95
- ]);
96
- return Mod31Checksum;
97
- }();
98
- export var Mod31 = new Mod31Checksum();
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,6 +1,6 @@
1
1
  import { z } from "zod/v4";
2
2
  import { Mod31 } from "./Mod31.js";
3
- var CodeNames = {
3
+ const CodeNames = {
4
4
  1: {
5
5
  name: "\u673A\u6784\u7F16\u5236",
6
6
  children: {
@@ -61,7 +61,7 @@ var CodeNames = {
61
61
  }
62
62
  }
63
63
  };
64
- export var ParsedUnifiedSocialCreditCodeSchema = z.object({
64
+ export const ParsedUnifiedSocialCreditCodeSchema = z.object({
65
65
  raw: z.string().length(18).describe("\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801"),
66
66
  registrationAuthorityCode: z.string().length(1).describe("\u767B\u8BB0\u7BA1\u7406\u90E8\u95E8\u4EE3\u7801"),
67
67
  entityCategoryCode: z.string().length(1).describe("\u673A\u6784\u7C7B\u522B\u4EE3\u7801"),
@@ -72,56 +72,51 @@ export var ParsedUnifiedSocialCreditCodeSchema = z.object({
72
72
  names: z.string().array().describe("\u4EE3\u7801\u540D\u79F0"),
73
73
  valid: z.boolean().optional().describe("\u662F\u5426\u6709\u6548")
74
74
  }).describe("\u7EDF\u4E00\u793E\u4F1A\u4FE1\u7528\u4EE3\u7801");
75
- export var UnifiedSocialCreditCodeRegex = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/;
75
+ export const UnifiedSocialCreditCodeRegex = /^([159][1239]|Y1)[0-9]{6}[0-9A-HJ-NP-RTUWXY]{10}$/;
76
76
  export function parseUnifiedSocialCreditCode(s) {
77
77
  if (!s || s.length !== 18)
78
78
  return undefined;
79
- var registrationAuthorityCode = s[0];
80
- var entityCategoryCode = s[1];
81
- var adminDivisionCode = s.slice(2, 8);
82
- var organizationCode = s.slice(8, 17);
83
- var checkDigit = s[17];
84
- var codes = [
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
85
  registrationAuthorityCode,
86
86
  entityCategoryCode,
87
87
  adminDivisionCode,
88
88
  organizationCode,
89
89
  checkDigit
90
90
  ];
91
- var names = [];
92
- var bureau = CodeNames[registrationAuthorityCode];
91
+ const names = [];
92
+ const bureau = CodeNames[registrationAuthorityCode];
93
93
  if (bureau) {
94
- var _bureau_children;
95
94
  names.push(bureau.name);
96
- var subject = (_bureau_children = bureau.children) === null || _bureau_children === void 0 ? void 0 : _bureau_children[entityCategoryCode];
95
+ const subject = bureau.children?.[entityCategoryCode];
97
96
  if (subject) {
98
97
  names.push(subject.name);
99
98
  }
100
99
  }
101
100
  return {
102
101
  raw: s,
103
- registrationAuthorityCode: registrationAuthorityCode,
104
- entityCategoryCode: entityCategoryCode,
105
- adminDivisionCode: adminDivisionCode,
106
- organizationCode: organizationCode,
107
- checkDigit: checkDigit,
108
- codes: codes,
109
- names: names,
102
+ registrationAuthorityCode,
103
+ entityCategoryCode,
104
+ adminDivisionCode,
105
+ organizationCode,
106
+ checkDigit,
107
+ codes,
108
+ names,
110
109
  valid: UnifiedSocialCreditCodeRegex.test(s) && Mod31.validate(s)
111
110
  };
112
111
  }
113
- export function formatUnifiedSocialCreditCode(param) {
114
- var registrationAuthorityCode = param.registrationAuthorityCode, entityCategoryCode = param.entityCategoryCode, adminDivisionCode = param.adminDivisionCode, organizationCode = param.organizationCode, checkDigit = param.checkDigit;
115
- var base = "".concat(registrationAuthorityCode).concat(entityCategoryCode).concat(adminDivisionCode).concat(organizationCode);
116
- checkDigit || (checkDigit = Mod31.compute(base));
117
- return "".concat(base).concat(checkDigit);
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}`;
118
116
  }
119
- export function next(s) {
120
- var delta = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 1;
121
- var sp = s.split("").map(function (v) {
122
- return Mod31.numbers[v];
123
- });
124
- for (var i = sp.length - 1; i >= 0; i--) {
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--) {
125
120
  if (delta > 0 && sp[i] < 30 || delta < 0 && sp[i] > 0) {
126
121
  sp[i] += delta;
127
122
  break;
@@ -133,7 +128,21 @@ export function next(s) {
133
128
  sp[i] = 30;
134
129
  }
135
130
  }
136
- return sp.map(function (v) {
137
- return Mod31.chars[v];
138
- }).join("");
131
+ return sp.map((v) => Mod31.chars[v]).join("");
139
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;
141
+ }
142
+ // fast check
143
+ return UnifiedSocialCreditCode.regex.test(s) && Mod31.validate(s);
144
+ }
145
+ UnifiedSocialCreditCode.test = test;
146
+ })(UnifiedSocialCreditCode || (UnifiedSocialCreditCode = {}));
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":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it } from "vitest";
2
- import { UnifiedSocialCreditCode } from "./mod.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 +1,7 @@
1
- export { ChineseResidentIdNo, UnifiedSocialCreditCode, DivisionCode } from "./mod.js";
1
+ export { ChineseResidentIdNo } from "./ChineseResidentIdNo.js";
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"}
@@ -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"}