@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
+ {"version":3,"sources":["../../../src/fs/s3/createS3MiniFileSystem.ts"],"sourcesContent":["import { basename, dirname, normalize } from 'node:path';\nimport { Readable } from 'node:stream';\nimport { formatS3Url, parseS3Url, type ParseS3UrlOptions } from '@wener/common/s3';\nimport { S3mini, sanitizeETag } from 's3mini';\nimport type {\n\tCopyOptions,\n\tCreateReadStreamOptions,\n\tCreateWriteStreamOptions,\n\tIFileStat,\n\tIFileSystem,\n\tMkdirOptions,\n\tReaddirOptions,\n\tReadFileOptions,\n\tRenameOptions,\n\tRmOptions,\n\tStatOptions,\n\tWriteFileOptions,\n} from '../IFileSystem';\n\ntype CreateS3MiniFileSystemOptions = ParseS3UrlOptions & {\n\tclient?: S3mini;\n\t/**\n\t * Optional prefix to scope all operations within a specific folder in the bucket.\n\t * All file operations will be relative to this prefix.\n\t * Should not include leading or trailing slashes.\n\t * Example: 'data/uploads' or 'backups/2024'\n\t */\n\tprefix?: string;\n};\n\nexport function createS3MiniFileSystem(options: CreateS3MiniFileSystemOptions = {}): S3FS {\n\tconst parsed = parseS3Url(options);\n\tif (!parsed) {\n\t\tthrow new Error('S3 URL or connection options are required');\n\t}\n\n\tconst { client, prefix } = options;\n\tif (!client && (!parsed.endpoint || !parsed.bucket)) {\n\t\tthrow new Error('S3 endpoint and bucket are required when client is not provided');\n\t}\n\n\tlet s3mini: S3mini;\n\tlet bucket: string;\n\n\tif (client) {\n\t\ts3mini = client;\n\t\tbucket = client.bucketName || parsed.bucket || '';\n\t} else {\n\t\tbucket = parsed.bucket || '';\n\n\t\t// Construct full endpoint URL with bucket for S3mini\n\t\tconst endpointUrl = formatS3Url(parsed, {\n\t\t\tcredentials: false,\n\t\t\tuseParams: false,\n\t\t});\n\n\t\ts3mini = new S3mini({\n\t\t\taccessKeyId: parsed.accessKeyId || '',\n\t\t\tsecretAccessKey: parsed.secretAccessKey || '',\n\t\t\tendpoint: endpointUrl,\n\t\t\tregion: parsed.region,\n\t\t});\n\t}\n\n\t// Normalize prefix: remove leading/trailing slashes, ensure it ends with / when not empty\n\tconst normalizedPrefix = prefix ? prefix.replace(/^\\/+/, '').replace(/\\/+$/, '') : '';\n\n\treturn new S3FS(s3mini, bucket, normalizedPrefix);\n}\n\nclass S3FS implements IFileSystem {\n\tconstructor(\n\t\treadonly client: S3mini,\n\t\tprivate readonly bucket: string,\n\t\tprivate readonly prefix: string = '',\n\t) {}\n\n\t/**\n\t * Normalize path to S3 key format (remove leading slash, handle relative paths)\n\t * and prepend the prefix if one is set\n\t */\n\tprivate normalizeKey(path: string): string {\n\t\tif (!path || path === '/') {\n\t\t\treturn this.prefix;\n\t\t}\n\t\tconst normalized = normalize(path).replace(/^\\/+/, '').replace(/\\\\/g, '/');\n\n\t\t// Prepend prefix if set\n\t\tif (this.prefix) {\n\t\t\treturn this.prefix + '/' + normalized;\n\t\t}\n\t\treturn normalized;\n\t}\n\n\t/**\n\t * Remove prefix from S3 key to get the file system path\n\t */\n\tprivate stripPrefix(key: string): string {\n\t\tif (!this.prefix || !key.startsWith(this.prefix + '/')) {\n\t\t\t// If key doesn't start with prefix, return as-is (shouldn't happen normally)\n\t\t\treturn key.startsWith('/') ? key : '/' + key;\n\t\t}\n\t\tconst withoutPrefix = key.slice(this.prefix.length);\n\t\treturn withoutPrefix || '/';\n\t}\n\n\t/**\n\t * Convert S3 key back to file system path (strip prefix and add leading slash)\n\t */\n\tprivate keyToPath(key: string): string {\n\t\tif (!key) {\n\t\t\treturn '/';\n\t\t}\n\t\treturn this.stripPrefix(key);\n\t}\n\n\t/**\n\t * Get directory path from a key\n\t */\n\tprivate getDirectory(key: string): string {\n\t\tif (!key) {\n\t\t\treturn '/';\n\t\t}\n\t\tconst dir = dirname(key).replace(/\\\\/g, '/');\n\t\treturn dir === '.' ? '/' : '/' + dir;\n\t}\n\n\t/**\n\t * Check if a key represents a directory (ends with /)\n\t */\n\tprivate isDirectoryKey(key: string): boolean {\n\t\treturn key.endsWith('/');\n\t}\n\n\tprivate toFileStat(\n\t\tkey: string,\n\t\tobj: { Key: string; Size: number | string; LastModified?: Date | string; ETag?: string },\n\t): IFileStat {\n\t\tconst isDir = this.isDirectoryKey(key);\n\t\tconst path = this.keyToPath(key);\n\t\tconst directory = this.getDirectory(key);\n\t\tconst size = typeof obj.Size === 'string' ? parseInt(obj.Size, 10) || 0 : obj.Size || 0;\n\t\tconst mtime = obj.LastModified ? new Date(obj.LastModified).getTime() : Date.now();\n\n\t\treturn {\n\t\t\tdirectory,\n\t\t\tpath,\n\t\t\tname: isDir ? basename(key.slice(0, -1)) || basename(directory) || '/' : basename(key),\n\t\t\tkind: isDir ? 'directory' : 'file',\n\t\t\tmtime,\n\t\t\tsize,\n\t\t\tmeta: obj.ETag ? { etag: sanitizeETag(obj.ETag) } : {},\n\t\t};\n\t}\n\n\tprivate checkAborted(signal?: AbortSignal): void {\n\t\tif (signal?.aborted) {\n\t\t\tthrow new Error('The operation was aborted');\n\t\t}\n\t}\n\n\tasync readdir(dir: string, options: ReaddirOptions = {}): Promise<IFileStat[]> {\n\t\tconst { glob, recursive, depth = 1, kind, hidden = true, signal } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst dirPrefix = this.normalizeKey(dir);\n\t\tconst prefixWithSlash = dirPrefix ? (dirPrefix.endsWith('/') ? dirPrefix : dirPrefix + '/') : '';\n\n\t\ttry {\n\t\t\t// When delimiter is '/', S3 returns:\n\t\t\t// - Files: Key without trailing /, Size > 0\n\t\t\t// - Directories: Key with trailing /, Size: 0\n\t\t\tconst delimiter = recursive ? undefined : '/';\n\n\t\t\tconst objects = await this.client.listObjects(delimiter ?? '', prefixWithSlash, undefined, {\n\t\t\t\tdelimiter,\n\t\t\t\tsignal,\n\t\t\t});\n\n\t\t\tif (!objects || objects.length === 0) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tlet results: IFileStat[] = [];\n\t\t\tconst seenPaths = new Set<string>();\n\n\t\t\tfor (const obj of objects) {\n\t\t\t\tthis.checkAborted(signal);\n\n\t\t\t\tconst key = obj.Key || '';\n\t\t\t\tif (!key) continue;\n\n\t\t\t\t// Skip if not under our prefix\n\t\t\t\tif (prefixWithSlash && !key.startsWith(prefixWithSlash)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Strip the prefix from the key for relative path calculation\n\t\t\t\tconst relativeKey = prefixWithSlash ? key.slice(prefixWithSlash.length) : key;\n\n\t\t\t\t// Skip empty relative keys (the directory itself)\n\t\t\t\tif (!relativeKey || relativeKey === '/') {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Directory: Key ends with '/' (from CommonPrefixes or explicit marker)\n\t\t\t\tconst isDir = key.endsWith('/');\n\n\t\t\t\t// For non-recursive, only show immediate children\n\t\t\t\tif (!recursive && depth === 1) {\n\t\t\t\t\t// For directories, the relative key looks like \"dirname/\"\n\t\t\t\t\t// For files, the relative key looks like \"filename\"\n\t\t\t\t\t// We only want immediate children, so no more slashes in the middle\n\t\t\t\t\tconst keyWithoutTrailingSlash = relativeKey.replace(/\\/$/, '');\n\t\t\t\t\tif (keyWithoutTrailingSlash.includes('/')) {\n\t\t\t\t\t\t// This is deeper than one level, skip\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Deduplicate by path\n\t\t\t\tconst pathKey = key.replace(/\\/$/, ''); // Normalize for deduplication\n\t\t\t\tif (seenPaths.has(pathKey)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tseenPaths.add(pathKey);\n\n\t\t\t\tconst stat = this.toFileStat(key, {\n\t\t\t\t\tKey: key,\n\t\t\t\t\tSize: obj.Size,\n\t\t\t\t\tLastModified: obj.LastModified,\n\t\t\t\t\tETag: obj.ETag,\n\t\t\t\t});\n\n\t\t\t\t// Filter by hidden\n\t\t\t\tif (!hidden && stat.name.startsWith('.')) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Filter by kind\n\t\t\t\tif (kind && stat.kind !== kind) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tresults.push(stat);\n\t\t\t}\n\n\t\t\t// Handle recursive with depth > 1\n\t\t\tif (!recursive && depth > 1) {\n\t\t\t\tconst subdirs = results.filter((entry) => entry.kind === 'directory');\n\t\t\t\tfor (const subdir of subdirs) {\n\t\t\t\t\tthis.checkAborted(signal);\n\t\t\t\t\tconst maxDepth = depth - 1;\n\t\t\t\t\tif (maxDepth > 0) {\n\t\t\t\t\t\tconst subEntries = await this.readdir(subdir.path, {\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\tdepth: maxDepth,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tresults = [...results, ...subEntries];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Handle glob filtering\n\t\t\tif (glob) {\n\t\t\t\tconst { matcher } = await import('micromatch');\n\t\t\t\tconst match = matcher(glob);\n\t\t\t\tresults = results.filter((entry) => match(entry.path));\n\t\t\t}\n\n\t\t\treturn results;\n\t\t} catch (error: any) {\n\t\t\tif (error.code === 'NoSuchKey' || error.message?.includes('404')) {\n\t\t\t\tthrow new Error(`Directory not found: ${dir}`);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync stat(entry: string, options: StatOptions = {}): Promise<IFileStat> {\n\t\tconst { signal } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst key = this.normalizeKey(entry);\n\t\tif (!key) {\n\t\t\t// Root directory\n\t\t\treturn {\n\t\t\t\tdirectory: '/',\n\t\t\t\tpath: '/',\n\t\t\t\tname: '/',\n\t\t\t\tkind: 'directory',\n\t\t\t\tmtime: Date.now(),\n\t\t\t\tsize: 0,\n\t\t\t\tmeta: {},\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\t// Try to check if object exists and get metadata\n\t\t\tconst exists = await this.client.objectExists(key, { signal });\n\t\t\tif (exists === true) {\n\t\t\t\t// Get ETag and size\n\t\t\t\tconst etag = await this.client.getEtag(key, { signal });\n\t\t\t\tconst size = await this.client.getContentLength(key);\n\n\t\t\t\t// Get LastModified from listing (since objectExists doesn't return it)\n\t\t\t\tconst objects = await this.client.listObjects('/', key, 1, { delimiter: '/', signal });\n\t\t\t\tconst obj = objects?.[0];\n\n\t\t\t\treturn this.toFileStat(key, {\n\t\t\t\t\tKey: key,\n\t\t\t\t\tSize: size,\n\t\t\t\t\tLastModified: obj?.LastModified || new Date(),\n\t\t\t\t\tETag: etag || undefined,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// If object not found, try checking if it's a directory (prefix listing)\n\t\t\tconst dirKey = key.endsWith('/') ? key : key + '/';\n\t\t\tconst objects = await this.client.listObjects('/', dirKey, 1, { delimiter: '/', signal });\n\n\t\t\tif (objects && objects.length > 0) {\n\t\t\t\t// It's a directory\n\t\t\t\treturn {\n\t\t\t\t\tdirectory: this.getDirectory(key),\n\t\t\t\t\tpath: this.keyToPath(key),\n\t\t\t\t\tname: basename(key.replace(/\\/$/, '')) || '/',\n\t\t\t\t\tkind: 'directory',\n\t\t\t\t\tmtime: Date.now(),\n\t\t\t\t\tsize: 0,\n\t\t\t\t\tmeta: {},\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tthrow new Error(`File not found: ${entry}`);\n\t\t} catch (error: any) {\n\t\t\tif (error.message?.includes('not found') || error.code === 'NoSuchKey') {\n\t\t\t\tthrow new Error(`File not found: ${entry}`);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync mkdir(path: string, options: MkdirOptions = {}): Promise<void> {\n\t\tconst { recursive = false, signal } = options;\n\t\tthis.checkAborted(signal);\n\n\t\t// In S3, directories don't actually exist - they're just prefixes\n\t\t// Optionally create a marker object (empty object with trailing slash)\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\treturn; // Root directory, nothing to do\n\t\t}\n\n\t\t// Ensure it ends with / to indicate directory\n\t\tconst dirKey = key.endsWith('/') ? key : key + '/';\n\n\t\t// Try to create a marker object (0-byte object)\n\t\ttry {\n\t\t\tawait this.client.putObject(dirKey, '', 'application/x-directory', undefined, undefined);\n\t\t} catch (error: any) {\n\t\t\t// If it already exists or we don't have permission, that's okay for mkdir\n\t\t\tif (!error.message?.includes('409') && !error.message?.includes('403')) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\t}\n\n\tasync readFile(path: string, options?: ReadFileOptions & { encoding: 'text' }): Promise<string>;\n\tasync readFile(path: string, options?: ReadFileOptions): Promise<Uint8Array>;\n\tasync readFile(path: string, options: ReadFileOptions = {}): Promise<string | Uint8Array> {\n\t\tconst { encoding = 'binary', signal, onDownloadProgress } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\tthrow new Error('Cannot read root directory');\n\t\t}\n\n\t\ttry {\n\t\t\t// Use getObjectArrayBuffer for binary data\n\t\t\tconst data = await this.client.getObjectArrayBuffer(key, { signal });\n\n\t\t\tif (!data) {\n\t\t\t\tthrow new Error(`File not found: ${path}`);\n\t\t\t}\n\n\t\t\t// Handle progress reporting if needed\n\t\t\tif (onDownloadProgress) {\n\t\t\t\tonDownloadProgress({ loaded: data.byteLength, total: data.byteLength });\n\t\t\t}\n\n\t\t\tif (encoding === 'text') {\n\t\t\t\treturn new TextDecoder().decode(data);\n\t\t\t}\n\n\t\t\treturn new Uint8Array(data);\n\t\t} catch (error: any) {\n\t\t\tif (error.code === 'NoSuchKey' || error.message?.includes('404')) {\n\t\t\t\tthrow new Error(`File not found: ${path}`);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync writeFile(\n\t\tpath: string,\n\t\tdata: string | Buffer | ArrayBuffer | Readable | ArrayBufferView,\n\t\toptions: WriteFileOptions = {},\n\t): Promise<void> {\n\t\tconst { signal, overwrite = true, onUploadProgress } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\tthrow new Error('Cannot write to root directory');\n\t\t}\n\n\t\t// Check if file exists and overwrite is false\n\t\tif (!overwrite) {\n\t\t\tconst exists = await this.exists(path);\n\t\t\tif (exists) {\n\t\t\t\tthrow new Error(`File already exists: ${path}`);\n\t\t\t}\n\t\t}\n\n\t\t// Convert data to buffer or string\n\t\tlet body: string | Buffer;\n\t\tif (data instanceof Readable) {\n\t\t\t// For streams, we need to read them into a buffer\n\t\t\tconst chunks: Buffer[] = [];\n\t\t\tlet loaded = 0;\n\n\t\t\tif (onUploadProgress) {\n\t\t\t\tdata.on('data', (chunk: Buffer) => {\n\t\t\t\t\tchunks.push(chunk);\n\t\t\t\t\tloaded += chunk.length;\n\t\t\t\t\tonUploadProgress({ loaded, total: -1 });\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tdata.on('data', (chunk: Buffer) => {\n\t\t\t\t\tchunks.push(chunk);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tbody = await new Promise<Buffer>((resolve, reject) => {\n\t\t\t\tconst allChunks: Buffer[] = [];\n\t\t\t\tdata.on('data', (chunk) => allChunks.push(chunk));\n\t\t\t\tdata.on('end', () => resolve(Buffer.concat(allChunks)));\n\t\t\t\tdata.on('error', reject);\n\n\t\t\t\tif (signal) {\n\t\t\t\t\tsignal.addEventListener('abort', () => {\n\t\t\t\t\t\tdata.destroy();\n\t\t\t\t\t\treject(new Error('The operation was aborted'));\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (data instanceof ArrayBuffer) {\n\t\t\tbody = Buffer.from(data);\n\t\t} else if (data instanceof Buffer) {\n\t\t\tbody = data;\n\t\t} else if (typeof data === 'string') {\n\t\t\tbody = data;\n\t\t} else {\n\t\t\t// ArrayBufferView\n\t\t\tbody = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t}\n\n\t\ttry {\n\t\t\tawait this.client.putObject(key, body, undefined, undefined, undefined);\n\t\t} catch (error: any) {\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync rm(path: string, options: RmOptions = {}): Promise<void> {\n\t\tconst { recursive = false, force = false, signal } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\tthrow new Error('Cannot remove root directory');\n\t\t}\n\n\t\ttry {\n\t\t\tif (recursive) {\n\t\t\t\t// List all objects with this prefix (no delimiter = recursive)\n\t\t\t\tconst prefix = key.endsWith('/') ? key : key + '/';\n\t\t\t\tconst objects = await this.client.listObjects('', prefix, undefined, { signal });\n\n\t\t\t\tif (objects) {\n\t\t\t\t\t// Delete all objects\n\t\t\t\t\tconst keys = objects.map((obj) => obj.Key || '').filter(Boolean);\n\t\t\t\t\tif (keys.length > 0) {\n\t\t\t\t\t\tawait this.client.deleteObjects(keys);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Also delete the marker object if it exists\n\t\t\t\tconst markerKey = prefix;\n\t\t\t\ttry {\n\t\t\t\t\tawait this.client.deleteObject(markerKey);\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore if marker doesn't exist\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Delete single object\n\t\t\t\tawait this.client.deleteObject(key);\n\t\t\t}\n\t\t} catch (error: any) {\n\t\t\tif (force && (error.code === 'NoSuchKey' || error.message?.includes('404'))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync rename(oldPath: string, newPath: string, options: RenameOptions = {}): Promise<void> {\n\t\tconst { signal, overwrite = false } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst oldKey = this.normalizeKey(oldPath);\n\t\tconst newKey = this.normalizeKey(newPath);\n\n\t\tif (!oldKey) {\n\t\t\tthrow new Error('Cannot rename root directory');\n\t\t}\n\n\t\t// Check if target exists and overwrite is false\n\t\tif (!overwrite) {\n\t\t\tconst exists = await this.exists(newPath);\n\t\t\tif (exists) {\n\t\t\t\tthrow new Error(`Destination already exists: ${newPath}`);\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\t// Check if it's a directory (has objects with prefix)\n\t\t\tconst isDir = oldKey.endsWith('/');\n\t\t\tconst prefix = isDir ? oldKey : oldKey + '/';\n\n\t\t\tconst objects = await this.client.listObjects('', prefix, undefined, { signal });\n\n\t\t\tif (objects && objects.length > 0) {\n\t\t\t\t// It's a directory or has multiple objects, move all\n\t\t\t\tconst newPrefix = newKey.endsWith('/') ? newKey : newKey + '/';\n\n\t\t\t\t// Move all objects\n\t\t\t\tawait Promise.all(\n\t\t\t\t\tobjects.map(async (obj) => {\n\t\t\t\t\t\tconst objKey = obj.Key || '';\n\t\t\t\t\t\tif (!objKey) return;\n\n\t\t\t\t\t\tconst relativeKey = objKey.slice(prefix.length);\n\t\t\t\t\t\tconst newObjKey = newPrefix + relativeKey;\n\n\t\t\t\t\t\t// Move object (copy + delete)\n\t\t\t\t\t\tawait this.client.moveObject(objKey, newObjKey);\n\t\t\t\t\t}),\n\t\t\t\t);\n\n\t\t\t\t// Move marker object if it exists\n\t\t\t\ttry {\n\t\t\t\t\tawait this.client.moveObject(prefix, newPrefix);\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore if marker doesn't exist\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Single file - use moveObject\n\t\t\t\tawait this.client.moveObject(oldKey, newKey);\n\t\t\t}\n\t\t} catch (error: any) {\n\t\t\tif (error.code === 'NoSuchKey' || error.message?.includes('404')) {\n\t\t\t\tthrow new Error(`Source file not found: ${oldPath}`);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync exists(path: string): Promise<boolean> {\n\t\ttry {\n\t\t\tconst key = this.normalizeKey(path);\n\t\t\tif (!key) {\n\t\t\t\treturn true; // Root always exists\n\t\t\t}\n\n\t\t\tconst exists = await this.client.objectExists(key);\n\t\t\tif (exists === true) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Check if it's a directory\n\t\t\tconst dirKey = key.endsWith('/') ? key : key + '/';\n\t\t\tconst objects = await this.client.listObjects('/', dirKey, 1, { delimiter: '/' });\n\t\t\treturn objects !== null && objects.length > 0;\n\t\t} catch {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tasync copy(src: string, dest: string, options: CopyOptions = {}): Promise<void> {\n\t\tconst { signal, overwrite = true, shallow = false } = options;\n\t\tthis.checkAborted(signal);\n\n\t\tconst srcKey = this.normalizeKey(src);\n\t\tconst destKey = this.normalizeKey(dest);\n\n\t\tif (!srcKey) {\n\t\t\tthrow new Error('Cannot copy root directory');\n\t\t}\n\n\t\t// Check if source exists\n\t\ttry {\n\t\t\tconst srcStat = await this.stat(src);\n\n\t\t\t// Check if destination exists and overwrite is false\n\t\t\tif (!overwrite) {\n\t\t\t\tconst exists = await this.exists(dest);\n\t\t\t\tif (exists) {\n\t\t\t\t\tthrow new Error(`Destination already exists: ${dest}`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (srcStat.kind === 'directory') {\n\t\t\t\t// Copy directory recursively\n\t\t\t\tconst srcPrefix = srcKey.endsWith('/') ? srcKey : srcKey + '/';\n\t\t\t\tconst destPrefix = destKey.endsWith('/') ? destKey : destKey + '/';\n\n\t\t\t\tconst objects = await this.client.listObjects(shallow ? '/' : '', srcPrefix, undefined, {\n\t\t\t\t\t...(shallow ? { delimiter: '/' } : {}),\n\t\t\t\t\tsignal,\n\t\t\t\t});\n\n\t\t\t\tif (objects) {\n\t\t\t\t\t// Copy all objects\n\t\t\t\t\tawait Promise.all(\n\t\t\t\t\t\tobjects.map(async (obj) => {\n\t\t\t\t\t\t\tconst objKey = obj.Key || '';\n\t\t\t\t\t\t\tif (!objKey) return;\n\n\t\t\t\t\t\t\tconst relativeKey = objKey.slice(srcPrefix.length);\n\t\t\t\t\t\t\tconst newObjKey = destPrefix + relativeKey;\n\n\t\t\t\t\t\t\tawait this.client.copyObject(objKey, newObjKey);\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Copy marker object if it exists\n\t\t\t\ttry {\n\t\t\t\t\tawait this.client.copyObject(srcPrefix, destPrefix);\n\t\t\t\t} catch {\n\t\t\t\t\t// Ignore if marker doesn't exist\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Copy single file\n\t\t\t\tawait this.client.copyObject(srcKey, destKey);\n\t\t\t}\n\t\t} catch (error: any) {\n\t\t\tif (error.code === 'NoSuchKey' || error.message?.includes('404')) {\n\t\t\t\tthrow new Error(`Source file not found: ${src}`);\n\t\t\t}\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tcreateReadStream(path: string, options: CreateReadStreamOptions = {}): Readable {\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\tthrow new Error('Cannot read root directory');\n\t\t}\n\n\t\tconst { range, signal } = options;\n\n\t\t// Use getObjectRaw with range support\n\t\tconst responsePromise = this.client.getObjectRaw(key, !range, range?.start, range?.end, { signal }, undefined);\n\n\t\t// Convert Response to Readable stream\n\t\tlet nodeStream: Readable | null = null;\n\n\t\tconst stream = new Readable({\n\t\t\tasync read() {\n\t\t\t\tif (!nodeStream) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tconst response = await responsePromise;\n\t\t\t\t\t\tif (!response.body) {\n\t\t\t\t\t\t\tthis.emit('error', new Error('No response body'));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Convert ReadableStream to Node Readable\n\t\t\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\t\t\tconst decoder = new TextDecoder();\n\n\t\t\t\t\t\tnodeStream = new Readable({\n\t\t\t\t\t\t\tasync read() {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\t\t\t\tthis.push(null);\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.push(Buffer.from(value));\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t\tthis.emit('error', err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tnodeStream.on('data', (chunk) => {\n\t\t\t\t\t\t\tthis.push(chunk);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tnodeStream.on('end', () => {\n\t\t\t\t\t\t\tthis.push(null);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tnodeStream.on('error', (err) => {\n\t\t\t\t\t\t\tthis.emit('error', err);\n\t\t\t\t\t\t});\n\t\t\t\t\t} catch (err: any) {\n\t\t\t\t\t\tthis.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\n\t\tsignal?.addEventListener('abort', () => {\n\t\t\tstream.destroy(new Error('The operation was aborted'));\n\t\t});\n\n\t\treturn stream;\n\t}\n\n\tcreateReadableStream(path: string, options: CreateReadStreamOptions = {}): ReadableStream {\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\tthrow new Error('Cannot read root directory');\n\t\t}\n\n\t\tconst { range, signal } = options;\n\n\t\t// Use getObjectRaw which returns a Response with ReadableStream\n\t\tconst responsePromise = this.client.getObjectRaw(key, !range, range?.start, range?.end, { signal }, undefined);\n\n\t\treturn new ReadableStream({\n\t\t\tasync start(controller) {\n\t\t\t\ttry {\n\t\t\t\t\tconst response = await responsePromise;\n\t\t\t\t\tif (!response.body) {\n\t\t\t\t\t\tcontroller.error(new Error('No response body'));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tconst reader = response.body.getReader();\n\n\t\t\t\t\tsignal?.addEventListener('abort', () => {\n\t\t\t\t\t\treader.cancel(new Error('The operation was aborted'));\n\t\t\t\t\t\tcontroller.error(new Error('The operation was aborted'));\n\t\t\t\t\t});\n\n\t\t\t\t\twhile (true) {\n\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\tcontroller.close();\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontroller.enqueue(value);\n\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\tcontroller.error(err);\n\t\t\t\t}\n\t\t\t},\n\t\t});\n\t}\n\n\tcreateWritableStream(path: string, options: CreateWriteStreamOptions = {}): WritableStream {\n\t\tconst key = this.normalizeKey(path);\n\t\tif (!key) {\n\t\t\tthrow new Error('Cannot write to root directory');\n\t\t}\n\n\t\tconst { signal, overwrite = true } = options;\n\t\tthis.checkAborted(signal);\n\n\t\t// Create a WritableStream that buffers data and uploads when done\n\t\tconst buffer: Uint8Array[] = [];\n\t\tlet controller: WritableStreamDefaultController;\n\t\tconst client = this.client;\n\t\tconst checkAborted = this.checkAborted.bind(this);\n\n\t\treturn new WritableStream({\n\t\t\tstart(ctrl) {\n\t\t\t\tcontroller = ctrl;\n\t\t\t},\n\t\t\tasync write(chunk) {\n\t\t\t\tbuffer.push(chunk);\n\t\t\t},\n\t\t\tasync close() {\n\t\t\t\ttry {\n\t\t\t\t\tcheckAborted(signal);\n\t\t\t\t\tconst data = Buffer.concat(buffer.map((chunk) => Buffer.from(chunk)));\n\t\t\t\t\tawait client.putObject(key, data, undefined, undefined, undefined);\n\t\t\t\t\t// Controller closes automatically when close() completes successfully\n\t\t\t\t} catch (error) {\n\t\t\t\t\tcontroller.error(error);\n\t\t\t\t}\n\t\t\t},\n\t\t\tabort(reason) {\n\t\t\t\tbuffer.length = 0;\n\t\t\t\tcontroller.error(reason);\n\t\t\t},\n\t\t});\n\t}\n\n\tgetUrl(path: IFileStat | string, options?: any): string | undefined {\n\t\tif (typeof path === 'object' && path?.kind !== 'file') {\n\t\t\treturn;\n\t\t}\n\t\tconst key = typeof path === 'string' ? this.normalizeKey(path) : this.normalizeKey(path.path);\n\t\tif (!key) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Construct URL from endpoint - S3mini doesn't provide presigned URLs in basic API\n\t\t// This is a fallback - real implementation would need presigned URLs\n\t\treturn undefined;\n\t}\n}\n"],"names":["basename","dirname","normalize","Readable","formatS3Url","parseS3Url","S3mini","sanitizeETag","createS3MiniFileSystem","options","parsed","Error","client","prefix","endpoint","bucket","s3mini","bucketName","endpointUrl","credentials","useParams","accessKeyId","secretAccessKey","region","normalizedPrefix","replace","S3FS","normalizeKey","path","normalized","stripPrefix","key","startsWith","withoutPrefix","slice","length","keyToPath","getDirectory","dir","isDirectoryKey","endsWith","toFileStat","obj","isDir","directory","size","Size","parseInt","mtime","LastModified","Date","getTime","now","name","kind","meta","ETag","etag","checkAborted","signal","aborted","readdir","glob","recursive","depth","hidden","dirPrefix","prefixWithSlash","delimiter","undefined","objects","listObjects","results","seenPaths","Set","Key","relativeKey","keyWithoutTrailingSlash","includes","pathKey","has","add","stat","push","subdirs","filter","entry","subdir","maxDepth","subEntries","matcher","match","error","code","message","exists","objectExists","getEtag","getContentLength","dirKey","mkdir","putObject","readFile","encoding","onDownloadProgress","data","getObjectArrayBuffer","loaded","byteLength","total","TextDecoder","decode","Uint8Array","writeFile","overwrite","onUploadProgress","body","chunks","on","chunk","Promise","resolve","reject","allChunks","Buffer","concat","addEventListener","destroy","ArrayBuffer","from","buffer","byteOffset","rm","force","keys","map","Boolean","deleteObjects","markerKey","deleteObject","rename","oldPath","newPath","oldKey","newKey","newPrefix","all","objKey","newObjKey","moveObject","copy","src","dest","shallow","srcKey","destKey","srcStat","srcPrefix","destPrefix","copyObject","createReadStream","range","responsePromise","getObjectRaw","start","end","nodeStream","stream","read","response","emit","reader","getReader","decoder","done","value","err","createReadableStream","ReadableStream","controller","cancel","close","enqueue","createWritableStream","bind","WritableStream","ctrl","write","abort","reason","getUrl"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { createS3MiniFileSystem } from "./createS3MiniFileSystem.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/fs/s3/index.ts"],"sourcesContent":["export { createS3MiniFileSystem } from './createS3MiniFileSystem';\n"],"names":["createS3MiniFileSystem"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,2BAA2B"}