@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 @@
1
+ export { SexType, SexTypeSchema } from './SexType';
@@ -0,0 +1,19 @@
1
+ import { SexType } from './SexType';
2
+
3
+ export function parseSexType(s: string | null | undefined): undefined | SexType {
4
+ if (!s) return undefined;
5
+
6
+ switch (s.toLowerCase()) {
7
+ case '♂':
8
+ case '男':
9
+ case 'male':
10
+ case 'man':
11
+ return SexType.Male;
12
+ case '♀':
13
+ case '女':
14
+ case 'female':
15
+ case 'woman':
16
+ return SexType.Female;
17
+ }
18
+ return undefined;
19
+ }
@@ -0,0 +1,8 @@
1
+ import z from 'zod/v4';
2
+
3
+ export const CoordinatesSchema = z
4
+ .object({
5
+ latitude: z.number().min(-90).max(90).describe('纬度'),
6
+ longitude: z.number().min(-180).max(180).describe('经度'),
7
+ })
8
+ .describe('坐标信息');
@@ -0,0 +1,26 @@
1
+ export const FileSystemErrorCode = {
2
+ ENOENT: 'ENOENT',
3
+ ENOTDIR: 'ENOTDIR',
4
+ EEXIST: 'EEXIST',
5
+ EISDIR: 'EISDIR',
6
+ ENOTEMPTY: 'ENOTEMPTY',
7
+ EACCES: 'EACCES',
8
+ EPERM: 'EPERM',
9
+ EINVAL: 'EINVAL',
10
+ } as const;
11
+
12
+ export type FileSystemErrorCode = (typeof FileSystemErrorCode)[keyof typeof FileSystemErrorCode];
13
+
14
+ export class FileSystemError extends Error {
15
+ constructor(
16
+ message: string,
17
+ public readonly code: FileSystemErrorCode | string,
18
+ ) {
19
+ super(message);
20
+ this.name = 'FileSystemError';
21
+ // Maintains proper stack trace for where our error was thrown (only available on V8)
22
+ if (Error.captureStackTrace) {
23
+ Error.captureStackTrace(this, FileSystemError);
24
+ }
25
+ }
26
+ }
@@ -0,0 +1,102 @@
1
+ import type { FileKind, FileUrlOptions } from './types';
2
+
3
+ // Base operation options
4
+ type OperationOptions = {
5
+ signal?: AbortSignal;
6
+ };
7
+
8
+ // Directory operations
9
+ export type ReaddirOptions = OperationOptions & {
10
+ glob?: string;
11
+ recursive?: boolean;
12
+ depth?: number;
13
+ kind?: FileKind;
14
+ hidden?: boolean;
15
+ };
16
+ export type MkdirOptions = OperationOptions & {
17
+ recursive?: boolean;
18
+ };
19
+ // File operations
20
+ export type ReadFileOptions = OperationOptions & {
21
+ encoding?: 'text' | 'binary';
22
+ onDownloadProgress?: (e: { loaded: number; total: number }) => void;
23
+ };
24
+ export type WriteFileOptions = OperationOptions & {
25
+ overwrite?: boolean;
26
+ onUploadProgress?: (e: { loaded: number; total: number }) => void;
27
+ };
28
+ export type RenameOptions = OperationOptions & {
29
+ overwrite?: boolean;
30
+ };
31
+ export type RmOptions = OperationOptions & {
32
+ recursive?: boolean;
33
+ force?: boolean;
34
+ };
35
+ export type CopyOptions = OperationOptions & {
36
+ overwrite?: boolean;
37
+ shallow?: boolean;
38
+ };
39
+ export type CreateReadStreamOptions = OperationOptions & {
40
+ range?: { start: number; end?: number };
41
+ signal?: AbortSignal;
42
+ };
43
+ export type CreateWriteStreamOptions = OperationOptions & {
44
+ overwrite?: boolean;
45
+ };
46
+ export type StatOptions = OperationOptions & {};
47
+
48
+ type WritableData = string | ArrayBuffer | ArrayBufferView | ReadableStream;
49
+
50
+ /**
51
+ * Universal file system interface (browser & server compatible)
52
+ */
53
+ export type IFileSystem = {
54
+ readdir(dir: string, options?: ReaddirOptions): Promise<IFileStat[]>;
55
+ stat(entry: string, options?: StatOptions): Promise<IFileStat>;
56
+ mkdir(path: string, options?: MkdirOptions): Promise<void>;
57
+ readFile(path: string, options?: ReadFileOptions & { encoding: 'text' }): Promise<string>;
58
+ readFile(path: string, options?: ReadFileOptions): Promise<Uint8Array>;
59
+ writeFile(path: string, data: WritableData, options?: WriteFileOptions): Promise<void>;
60
+ rm(path: string, options?: RmOptions): Promise<void>;
61
+ rename(oldPath: string, newPath: string, options?: RenameOptions): Promise<void>;
62
+ exists(path: string): Promise<boolean>;
63
+ copy(src: string, dest: string, options?: CopyOptions): Promise<void>;
64
+
65
+ getUrl?(path: IFileStat | string, options?: FileUrlOptions): string | undefined;
66
+
67
+ createReadableStream?(path: string, options?: CreateReadStreamOptions): ReadableStream;
68
+ createWritableStream?(path: string, options?: CreateWriteStreamOptions): WritableStream;
69
+ };
70
+
71
+ /**
72
+ * Server/Node.js specific file system interface with stream support
73
+ */
74
+ export type IServerFileSystem = IFileSystem & {
75
+ createReadStream(path: string, options?: CreateReadStreamOptions): import('node:stream').Readable;
76
+ createWriteStream(path: string, options?: CreateWriteStreamOptions): import('node:stream').Writable;
77
+ writeFile(
78
+ path: string,
79
+ data: WritableData | Buffer | import('node:stream').Readable,
80
+ options?: WriteFileOptions,
81
+ ): Promise<void>;
82
+ };
83
+
84
+ export type IFileStat = {
85
+ /**
86
+ * parent path
87
+ */
88
+ directory: string;
89
+ /**
90
+ * full path
91
+ */
92
+ path: string;
93
+ /**
94
+ * basename
95
+ */
96
+ name: string;
97
+ kind: 'directory' | 'file';
98
+ mtime: number;
99
+ meta: Record<string, any>;
100
+ size: number;
101
+ };
102
+
@@ -0,0 +1,37 @@
1
+ import { beforeEach, describe, test } from 'vitest';
2
+ import { createMemoryFileSystem } from './createMemoryFileSystem';
3
+ import { runFileSystemTest } from './tests/runFileSystemTest';
4
+
5
+ describe('MemoryFileSystem', () => {
6
+ let fs: ReturnType<typeof createMemoryFileSystem>;
7
+
8
+ beforeEach(() => {
9
+ fs = createMemoryFileSystem({
10
+ root: {
11
+ path: '/',
12
+ directory: '',
13
+ name: '',
14
+ kind: 'directory',
15
+ meta: {},
16
+ mtime: Date.now(),
17
+ size: 0,
18
+ children: [
19
+ {
20
+ path: '/README.txt',
21
+ directory: '/',
22
+ name: 'README.txt',
23
+ kind: 'file',
24
+ content: 'Hello',
25
+ size: 5,
26
+ meta: {},
27
+ mtime: Date.now(),
28
+ },
29
+ ],
30
+ },
31
+ });
32
+ });
33
+
34
+ test('common tests', async () => {
35
+ await runFileSystemTest(fs);
36
+ });
37
+ });
@@ -0,0 +1,291 @@
1
+ import { dirname, join, normalize } from 'pathe';
2
+ import type {
3
+ CopyOptions,
4
+ IFileStat,
5
+ IFileSystem,
6
+ MkdirOptions,
7
+ ReaddirOptions,
8
+ ReadFileOptions,
9
+ RenameOptions,
10
+ RmOptions,
11
+ WriteFileOptions,
12
+ } from './IFileSystem';
13
+ import type { FileUrlOptions } from './types';
14
+
15
+ class BrowserFSError extends Error {
16
+ constructor(
17
+ message: string,
18
+ public code?: string,
19
+ ) {
20
+ super(message);
21
+ this.name = 'BrowserFSError';
22
+ }
23
+ }
24
+
25
+ type BrowserFile = IFileStat & {
26
+ kind: 'file';
27
+ meta: {
28
+ handle: FileSystemFileHandle;
29
+ file: File;
30
+ };
31
+ };
32
+
33
+ type BrowserDirectory = IFileStat & {
34
+ kind: 'directory';
35
+ meta: {
36
+ handle: FileSystemDirectoryHandle;
37
+ };
38
+ };
39
+
40
+ type BrowserNode = BrowserFile | BrowserDirectory;
41
+
42
+ /**
43
+ * Creates an IFileSystem instance backed by the browser's File System Access API.
44
+ * @param root A FileSystemDirectoryHandle, usually obtained from `window.showDirectoryPicker()`.
45
+ */
46
+ export function createBrowserFileSystem(root: FileSystemDirectoryHandle): IFileSystem {
47
+ return new BrowserFS(root);
48
+ }
49
+
50
+ class BrowserFS implements IFileSystem {
51
+ root: FileSystemDirectoryHandle;
52
+ node: BrowserDirectory;
53
+
54
+ constructor(root: FileSystemDirectoryHandle) {
55
+ this.root = root;
56
+ this.node = {
57
+ path: '/',
58
+ name: '',
59
+ directory: '',
60
+ kind: 'directory',
61
+ mtime: 0,
62
+ size: 0,
63
+ meta: {
64
+ handle: root,
65
+ },
66
+ };
67
+ }
68
+
69
+ /**
70
+ * Resolves a path string to a file or directory handle. This is the core navigation logic.
71
+ * @returns A tuple of [handle, parentHandle, name] or [null, parentHandle, name] if not found.
72
+ */
73
+ private async _getHandle(path: string): Promise<[FileSystemHandle | null, FileSystemDirectoryHandle | null, string]> {
74
+ const normalized = normalize(path);
75
+ if (normalized === '/' || normalized === '.') {
76
+ return [this.root, null, this.root.name];
77
+ }
78
+
79
+ const parts = normalized.split('/').filter((p) => p);
80
+ const name = parts.pop()!;
81
+
82
+ let parent: FileSystemDirectoryHandle = this.root;
83
+ for (const part of parts) {
84
+ try {
85
+ parent = await parent.getDirectoryHandle(part);
86
+ } catch (e: any) {
87
+ if (e.name === 'NotFoundError' || e.name === 'TypeMismatchError') {
88
+ return [null, null, name]; // Parent path does not exist or is a file
89
+ }
90
+ throw e;
91
+ }
92
+ }
93
+
94
+ try {
95
+ // Check for file first, then directory
96
+ const handle = await parent.getFileHandle(name).catch(() => parent.getDirectoryHandle(name));
97
+ return [handle, parent, name];
98
+ } catch (e: any) {
99
+ if (e.name === 'NotFoundError') {
100
+ return [null, parent, name]; // Entry not found
101
+ }
102
+ throw e;
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Converts a FileSystemHandle into our standard IFileStat object.
108
+ */
109
+ private async _toFileStat(handle: FileSystemHandle, path: string): Promise<IFileStat> {
110
+ const isFile = handle.kind === 'file';
111
+ const file = isFile ? await (handle as FileSystemFileHandle).getFile() : undefined;
112
+
113
+ return {
114
+ name: handle.name,
115
+ kind: handle.kind,
116
+ path: path,
117
+ directory: dirname(path),
118
+ size: file?.size ?? 0,
119
+ mtime: file?.lastModified ?? Date.now(),
120
+ meta: { handle, file },
121
+ };
122
+ }
123
+
124
+ // --- IFileSystem Implementation ---
125
+
126
+ async stat(path: string): Promise<IFileStat> {
127
+ const [handle] = await this._getHandle(path);
128
+ if (!handle) {
129
+ throw new BrowserFSError(`Path not found: ${path}`, 'ENOENT');
130
+ }
131
+ return this._toFileStat(handle, path);
132
+ }
133
+
134
+ async exists(path: string): Promise<boolean> {
135
+ const [handle] = await this._getHandle(path);
136
+ return !!handle;
137
+ }
138
+
139
+ async readdir(dir: string, options?: ReaddirOptions): Promise<IFileStat[]> {
140
+ const [handle] = await this._getHandle(dir);
141
+ if (!handle) {
142
+ throw new BrowserFSError(`Directory not found: ${dir}`, 'ENOENT');
143
+ }
144
+ if (handle.kind !== 'directory') {
145
+ throw new BrowserFSError(`Not a directory: ${dir}`, 'ENOTDIR');
146
+ }
147
+
148
+ const entries: IFileStat[] = [];
149
+ for await (const entry of (handle as FileSystemDirectoryHandle).values()) {
150
+ entries.push(await this._toFileStat(entry, join(dir, entry.name)));
151
+ }
152
+ return entries;
153
+ }
154
+
155
+ async mkdir(path: string, options: MkdirOptions = {}): Promise<void> {
156
+ const parts = normalize(path)
157
+ .split('/')
158
+ .filter((p) => p);
159
+ let currentDir = this.root;
160
+
161
+ for (const part of parts) {
162
+ try {
163
+ currentDir = await currentDir.getDirectoryHandle(part, { create: options.recursive });
164
+ } catch (e: any) {
165
+ // If recursive is false, getDirectoryHandle throws if a segment is missing.
166
+ // We re-throw a more standard error.
167
+ if (e.name === 'NotFoundError' && !options.recursive) {
168
+ throw new BrowserFSError(`Cannot create directory: Parent does not exist for path ${path}`, 'ENOENT');
169
+ }
170
+ // If it's another error (like a file with the same name), re-throw it.
171
+ throw e;
172
+ }
173
+ }
174
+ }
175
+
176
+ readFile(path: string, options?: ReadFileOptions & { encoding: 'text' }): Promise<string>;
177
+ readFile(path: string, options?: ReadFileOptions): Promise<Uint8Array>;
178
+ async readFile(path: string, options?: ReadFileOptions): Promise<string | Uint8Array> {
179
+ const [handle] = await this._getHandle(path);
180
+ if (!handle || handle.kind !== 'file') {
181
+ throw new BrowserFSError(`File not found: ${path}`, 'ENOENT');
182
+ }
183
+ const file = await (handle as FileSystemFileHandle).getFile();
184
+ return options?.encoding === 'text' ? file.text() : file.bytes();
185
+ }
186
+
187
+ async writeFile(path: string, data: any, options: WriteFileOptions = {}): Promise<void> {
188
+ const { overwrite = true } = options;
189
+ const [handle, parent, name] = await this._getHandle(path);
190
+
191
+ if (!parent) {
192
+ throw new BrowserFSError(`Parent directory does not exist for path: ${path}`, 'ENOENT');
193
+ }
194
+ if (handle && !overwrite) {
195
+ throw new BrowserFSError(`File already exists: ${path}`, 'EEXIST');
196
+ }
197
+
198
+ const fileHandle = await parent.getFileHandle(name, { create: true });
199
+ const writable = await fileHandle.createWritable();
200
+ await writable.write(data);
201
+ await writable.close();
202
+ }
203
+
204
+ async rm(path: string, options: RmOptions = {}): Promise<void> {
205
+ const { recursive = false, force = false } = options;
206
+ const [handle, parent, name] = await this._getHandle(path);
207
+
208
+ if (!handle) {
209
+ if (force) return; // If force is true, do not error on not found.
210
+ throw new BrowserFSError(`Path not found: ${path}`, 'ENOENT');
211
+ }
212
+ if (!parent) {
213
+ throw new BrowserFSError(`Cannot remove root directory`);
214
+ }
215
+
216
+ await parent.removeEntry(name, { recursive });
217
+ }
218
+
219
+ async rename(oldPath: string, newPath: string, options?: RenameOptions): Promise<void> {
220
+ // The File System Access API does NOT have a native move/rename.
221
+ // The standard workaround is to copy, then delete the original.
222
+ await this.copy(oldPath, newPath, options);
223
+ await this.rm(oldPath, { recursive: true });
224
+ }
225
+
226
+ async copy(srcPath: string, destPath: string, options?: CopyOptions): Promise<void> {
227
+ const [srcHandle] = await this._getHandle(srcPath);
228
+ if (!srcHandle) {
229
+ throw new BrowserFSError(`Source not found: ${srcPath}`, 'ENOENT');
230
+ }
231
+
232
+ const [destHandle, destParent, destName] = await this._getHandle(destPath);
233
+ if (!destParent) {
234
+ throw new BrowserFSError(`Destination directory does not exist: ${dirname(destPath)}`, 'ENOENT');
235
+ }
236
+ if (destHandle && !options?.overwrite) {
237
+ throw new BrowserFSError(`Destination already exists: ${destPath}`, 'EEXIST');
238
+ }
239
+ if (destHandle?.kind === 'directory' && srcHandle.kind === 'file') {
240
+ throw new BrowserFSError(`Cannot overwrite a directory with a file: ${destPath}`, 'EISDIR');
241
+ }
242
+
243
+ await this._copyEntry(srcHandle, destParent, destName);
244
+ }
245
+
246
+ private async _copyEntry(
247
+ srcHandle: FileSystemHandle,
248
+ destDirHandle: FileSystemDirectoryHandle,
249
+ newName: string,
250
+ ): Promise<void> {
251
+ if (srcHandle.kind === 'file') {
252
+ const file = await (srcHandle as FileSystemFileHandle).getFile();
253
+ const destFileHandle = await destDirHandle.getFileHandle(newName, { create: true });
254
+ const writable = await destFileHandle.createWritable();
255
+ await writable.write(file);
256
+ await writable.close();
257
+ } else if (srcHandle.kind === 'directory') {
258
+ const newDirHandle = await destDirHandle.getDirectoryHandle(newName, { create: true });
259
+ for await (const entry of (srcHandle as FileSystemDirectoryHandle).values()) {
260
+ await this._copyEntry(entry, newDirHandle, entry.name);
261
+ }
262
+ }
263
+ }
264
+
265
+ async createUrl(stat: IFileStat, options?: FileUrlOptions): Promise<string> {
266
+ // The handle is stored in the meta property in our _toFileStat method
267
+ const handle = stat.meta.handle as FileSystemHandle | undefined;
268
+ if (handle?.kind !== 'file') {
269
+ // Return a placeholder or throw an error for directories
270
+ return '';
271
+ }
272
+ const file = await (handle as FileSystemFileHandle).getFile();
273
+ return URL.createObjectURL(file);
274
+ }
275
+
276
+ createReadStream(): never {
277
+ throw new Error('Streaming is not implemented for BrowserFS. Use readFile instead.');
278
+ }
279
+
280
+ createWriteStream(): never {
281
+ throw new Error('Streaming is not implemented for BrowserFS. Use writeFile instead.');
282
+ }
283
+
284
+ createWritableStream(): never {
285
+ throw new Error('Streaming is not implemented for BrowserFS. Use writeFile instead.');
286
+ }
287
+
288
+ createReadableStream(): never {
289
+ throw new Error('Streaming is not implemented for BrowserFS. Use readFile instead.');
290
+ }
291
+ }