@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
@@ -1,236 +1,54 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- }
6
- catch (error) {
7
- reject(error);
8
- return;
9
- }
10
- if (info.done) {
11
- resolve(value);
12
- }
13
- else {
14
- Promise.resolve(value).then(_next, _throw);
15
- }
16
- }
17
- function _async_to_generator(fn) {
18
- return function () {
19
- var self = this, args = arguments;
20
- return new Promise(function (resolve, reject) {
21
- var gen = fn.apply(self, args);
22
- function _next(value) {
23
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
24
- }
25
- function _throw(err) {
26
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
27
- }
28
- _next(undefined);
29
- });
30
- };
31
- }
32
- function _instanceof(left, right) {
33
- if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
34
- return !!right[Symbol.hasInstance](left);
35
- }
36
- else {
37
- return left instanceof right;
38
- }
39
- }
40
- function _ts_generator(thisArg, body) {
41
- var f, y, t, _ = {
42
- label: 0,
43
- sent: function () {
44
- if (t[0] & 1)
45
- throw t[1];
46
- return t[1];
47
- },
48
- trys: [],
49
- ops: []
50
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
51
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () {
52
- return this;
53
- }), g;
54
- function verb(n) {
55
- return function (v) {
56
- return step([
57
- n,
58
- v
59
- ]);
60
- };
61
- }
62
- function step(op) {
63
- if (f)
64
- throw new TypeError("Generator is already executing.");
65
- while (g && (g = 0, op[0] && (_ = 0)), _)
66
- try {
67
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
68
- return t;
69
- if (y = 0, t)
70
- op = [
71
- op[0] & 2,
72
- t.value
73
- ];
74
- switch (op[0]) {
75
- case 0:
76
- case 1:
77
- t = op;
78
- break;
79
- case 4:
80
- _.label++;
81
- return {
82
- value: op[1],
83
- done: false
84
- };
85
- case 5:
86
- _.label++;
87
- y = op[1];
88
- op = [
89
- 0
90
- ];
91
- continue;
92
- case 7:
93
- op = _.ops.pop();
94
- _.trys.pop();
95
- continue;
96
- default:
97
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
98
- _ = 0;
99
- continue;
100
- }
101
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
102
- _.label = op[1];
103
- break;
104
- }
105
- if (op[0] === 6 && _.label < t[1]) {
106
- _.label = t[1];
107
- t = op;
108
- break;
109
- }
110
- if (t && _.label < t[2]) {
111
- _.label = t[2];
112
- _.ops.push(op);
113
- break;
114
- }
115
- if (t[2])
116
- _.ops.pop();
117
- _.trys.pop();
118
- continue;
119
- }
120
- op = body.call(thisArg, _);
121
- }
122
- catch (e) {
123
- op = [
124
- 6,
125
- e
126
- ];
127
- y = 0;
128
- }
129
- finally {
130
- f = t = 0;
131
- }
132
- if (op[0] & 5)
133
- throw op[1];
134
- return {
135
- value: op[0] ? op[1] : void 0,
136
- done: true
137
- };
138
- }
139
- }
140
1
  import { Errors } from "@wener/utils";
141
2
  import { PHC } from "./PHC.js";
142
- export function createPBKDF2PasswordAlgorithm(param) {
143
- var id = param.id, digest = param.digest, _param_iterations = param.iterations, iterations = _param_iterations === void 0 ? 100000 : _param_iterations, _param_saltlen = param.saltlen, saltlen = _param_saltlen === void 0 ? 16 : _param_saltlen, _param_keylen = param.keylen, keylen = _param_keylen === void 0 ? digest === "SHA-256" ? 32 : 64 : _param_keylen;
3
+ export function createPBKDF2PasswordAlgorithm({ id, digest, iterations = 100000, saltlen = 16, keylen = digest === "SHA-256" ? 32 : 64 }) {
144
4
  return {
145
5
  name: id,
146
- hash: function hash(password, opts) {
147
- return _async_to_generator(function () {
148
- var salt, _opts_rounds, rounds, key, hash, _opts_id;
149
- return _ts_generator(this, function (_state) {
150
- switch (_state.label) {
151
- case 0:
152
- if (opts === null || opts === void 0 ? void 0 : opts.salt) {
153
- salt = opts.salt;
154
- }
155
- else {
156
- salt = new Uint8Array(saltlen);
157
- crypto.getRandomValues(salt);
158
- }
159
- rounds = (_opts_rounds = opts === null || opts === void 0 ? void 0 : opts.rounds) !== null && _opts_rounds !== void 0 ? _opts_rounds : iterations;
160
- return [
161
- 4,
162
- crypto.subtle.importKey("raw", new TextEncoder().encode(password), "PBKDF2", false, [
163
- "deriveBits"
164
- ])
165
- ];
166
- case 1:
167
- key = _state.sent();
168
- return [
169
- 4,
170
- crypto.subtle.deriveBits({
171
- name: "PBKDF2",
172
- iterations: rounds,
173
- salt: salt,
174
- hash: digest
175
- }, key, keylen * 8)
176
- ];
177
- case 2:
178
- hash = _state.sent();
179
- return [
180
- 2,
181
- PHC.serialize({
182
- id: (_opts_id = opts === null || opts === void 0 ? void 0 : opts.id) !== null && _opts_id !== void 0 ? _opts_id : id,
183
- params: {
184
- rounds: rounds
185
- },
186
- salt: salt,
187
- hash: new Uint8Array(hash)
188
- })
189
- ];
190
- }
191
- });
192
- })();
6
+ async hash(password, opts) {
7
+ let salt;
8
+ if (opts?.salt) {
9
+ salt = opts.salt;
10
+ }
11
+ else {
12
+ salt = new Uint8Array(saltlen);
13
+ crypto.getRandomValues(salt);
14
+ }
15
+ const rounds = opts?.rounds ?? iterations;
16
+ let key = await crypto.subtle.importKey("raw", new TextEncoder().encode(password), "PBKDF2", false, [
17
+ "deriveBits"
18
+ ]);
19
+ let hash = await crypto.subtle.deriveBits({
20
+ name: "PBKDF2",
21
+ iterations: rounds,
22
+ salt: salt,
23
+ hash: digest
24
+ }, key, keylen * 8);
25
+ return PHC.serialize({
26
+ id: opts?.id ?? id,
27
+ params: {
28
+ rounds
29
+ },
30
+ salt,
31
+ hash: new Uint8Array(hash)
32
+ });
193
33
  },
194
- verify: function verify(password, _, opts) {
195
- return _async_to_generator(function () {
196
- var _opts_params, _opts_params_rounds, rounds, salt, storedHash, key, hash;
197
- return _ts_generator(this, function (_state) {
198
- switch (_state.label) {
199
- case 0:
200
- rounds = (_opts_params_rounds = opts === null || opts === void 0 ? void 0 : (_opts_params = opts.params) === null || _opts_params === void 0 ? void 0 : _opts_params.rounds) !== null && _opts_params_rounds !== void 0 ? _opts_params_rounds : iterations;
201
- salt = opts.salt;
202
- storedHash = opts.hash;
203
- Errors.BadRequest.check(typeof rounds === "number", "Invalid rounds");
204
- Errors.BadRequest.check(_instanceof(salt, Uint8Array), "Invalid salt");
205
- Errors.BadRequest.check(_instanceof(storedHash, Uint8Array), "Invalid hash");
206
- return [
207
- 4,
208
- crypto.subtle.importKey("raw", new TextEncoder().encode(password), "PBKDF2", false, [
209
- "deriveBits"
210
- ])
211
- ];
212
- case 1:
213
- key = _state.sent();
214
- return [
215
- 4,
216
- crypto.subtle.deriveBits({
217
- name: "PBKDF2",
218
- iterations: rounds,
219
- salt: salt,
220
- hash: digest
221
- }, key, storedHash.length * 8)
222
- ];
223
- case 2:
224
- hash = _state.sent();
225
- return [
226
- 2,
227
- new Uint8Array(hash).every(function (v, i) {
228
- return v === storedHash[i];
229
- })
230
- ];
231
- }
232
- });
233
- })();
34
+ async verify(password, _, opts) {
35
+ const rounds = opts?.params?.rounds ?? iterations;
36
+ const salt = opts.salt;
37
+ const storedHash = opts.hash;
38
+ Errors.BadRequest.check(typeof rounds === "number", "Invalid rounds");
39
+ Errors.BadRequest.check(salt instanceof Uint8Array, "Invalid salt");
40
+ Errors.BadRequest.check(storedHash instanceof Uint8Array, "Invalid hash");
41
+ let key = await crypto.subtle.importKey("raw", new TextEncoder().encode(password), "PBKDF2", false, [
42
+ "deriveBits"
43
+ ]);
44
+ let hash = await crypto.subtle.deriveBits({
45
+ name: "PBKDF2",
46
+ iterations: rounds,
47
+ salt: salt,
48
+ hash: digest
49
+ }, key, storedHash.length * 8);
50
+ return new Uint8Array(hash).every((v, i) => v === storedHash[i]);
234
51
  }
235
52
  };
236
53
  }
54
+ //# sourceMappingURL=createPBKDF2PasswordAlgorithm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/password/createPBKDF2PasswordAlgorithm.ts"],"sourcesContent":["import { Errors } from '@wener/utils';\nimport { Password } from './Password';\nimport { PHC } from './PHC';\n\nexport function createPBKDF2PasswordAlgorithm({\n\tid,\n\tdigest,\n\titerations = 100000,\n\tsaltlen = 16,\n\tkeylen = digest === 'SHA-256' ? 32 : 64,\n}: {\n\tid: string;\n\tdigest: 'SHA-256' | 'SHA-512';\n\titerations?: number;\n\tkeylen?: number;\n\tsaltlen?: number;\n}): Password.PasswordAlgorithm {\n\treturn {\n\t\tname: id,\n\t\tasync hash(password: string, opts) {\n\t\t\tlet salt: Uint8Array;\n\n\t\t\tif (opts?.salt) {\n\t\t\t\tsalt = opts.salt;\n\t\t\t} else {\n\t\t\t\tsalt = new Uint8Array(saltlen);\n\t\t\t\tcrypto.getRandomValues(salt);\n\t\t\t}\n\n\t\t\tconst rounds = opts?.rounds ?? iterations;\n\n\t\t\tlet key = await crypto.subtle.importKey('raw', new TextEncoder().encode(password), 'PBKDF2', false, [\n\t\t\t\t'deriveBits',\n\t\t\t]);\n\t\t\tlet hash = await crypto.subtle.deriveBits(\n\t\t\t\t{ name: 'PBKDF2', iterations: rounds, salt: salt as BufferSource, hash: digest },\n\t\t\t\tkey,\n\t\t\t\tkeylen * 8,\n\t\t\t);\n\t\t\treturn PHC.serialize({ id: opts?.id ?? id, params: { rounds }, salt, hash: new Uint8Array(hash) });\n\t\t},\n\t\tasync verify(password: string, _: string, opts) {\n\t\t\tconst rounds = opts?.params?.rounds ?? iterations;\n\t\t\tconst salt = opts.salt;\n\t\t\tconst storedHash = opts.hash;\n\t\t\tErrors.BadRequest.check(typeof rounds === 'number', 'Invalid rounds');\n\t\t\tErrors.BadRequest.check(salt instanceof Uint8Array, 'Invalid salt');\n\t\t\tErrors.BadRequest.check(storedHash instanceof Uint8Array, 'Invalid hash');\n\n\t\t\tlet key = await crypto.subtle.importKey('raw', new TextEncoder().encode(password), 'PBKDF2', false, [\n\t\t\t\t'deriveBits',\n\t\t\t]);\n\t\t\tlet hash = await crypto.subtle.deriveBits(\n\t\t\t\t{ name: 'PBKDF2', iterations: rounds, salt: salt as BufferSource, hash: digest },\n\t\t\t\tkey,\n\t\t\t\tstoredHash.length * 8,\n\t\t\t);\n\t\t\treturn new Uint8Array(hash).every((v, i) => v === storedHash![i]);\n\t\t},\n\t};\n}\n"],"names":["Errors","PHC","createPBKDF2PasswordAlgorithm","id","digest","iterations","saltlen","keylen","name","hash","password","opts","salt","Uint8Array","crypto","getRandomValues","rounds","key","subtle","importKey","TextEncoder","encode","deriveBits","serialize","params","verify","_","storedHash","BadRequest","check","length","every","v","i"],"mappings":"AAAA,SAASA,MAAM,QAAQ,eAAe;AAEtC,SAASC,GAAG,QAAQ,QAAQ;AAE5B,OAAO,SAASC,8BAA8B,EAC7CC,EAAE,EACFC,MAAM,EACNC,aAAa,MAAM,EACnBC,UAAU,EAAE,EACZC,SAASH,WAAW,YAAY,KAAK,EAAE,EAOvC;IACA,OAAO;QACNI,MAAML;QACN,MAAMM,MAAKC,QAAgB,EAAEC,IAAI;YAChC,IAAIC;YAEJ,IAAID,MAAMC,MAAM;gBACfA,OAAOD,KAAKC,IAAI;YACjB,OAAO;gBACNA,OAAO,IAAIC,WAAWP;gBACtBQ,OAAOC,eAAe,CAACH;YACxB;YAEA,MAAMI,SAASL,MAAMK,UAAUX;YAE/B,IAAIY,MAAM,MAAMH,OAAOI,MAAM,CAACC,SAAS,CAAC,OAAO,IAAIC,cAAcC,MAAM,CAACX,WAAW,UAAU,OAAO;gBACnG;aACA;YACD,IAAID,OAAO,MAAMK,OAAOI,MAAM,CAACI,UAAU,CACxC;gBAAEd,MAAM;gBAAUH,YAAYW;gBAAQJ,MAAMA;gBAAsBH,MAAML;YAAO,GAC/Ea,KACAV,SAAS;YAEV,OAAON,IAAIsB,SAAS,CAAC;gBAAEpB,IAAIQ,MAAMR,MAAMA;gBAAIqB,QAAQ;oBAAER;gBAAO;gBAAGJ;gBAAMH,MAAM,IAAII,WAAWJ;YAAM;QACjG;QACA,MAAMgB,QAAOf,QAAgB,EAAEgB,CAAS,EAAEf,IAAI;YAC7C,MAAMK,SAASL,MAAMa,QAAQR,UAAUX;YACvC,MAAMO,OAAOD,KAAKC,IAAI;YACtB,MAAMe,aAAahB,KAAKF,IAAI;YAC5BT,OAAO4B,UAAU,CAACC,KAAK,CAAC,OAAOb,WAAW,UAAU;YACpDhB,OAAO4B,UAAU,CAACC,KAAK,CAACjB,gBAAgBC,YAAY;YACpDb,OAAO4B,UAAU,CAACC,KAAK,CAACF,sBAAsBd,YAAY;YAE1D,IAAII,MAAM,MAAMH,OAAOI,MAAM,CAACC,SAAS,CAAC,OAAO,IAAIC,cAAcC,MAAM,CAACX,WAAW,UAAU,OAAO;gBACnG;aACA;YACD,IAAID,OAAO,MAAMK,OAAOI,MAAM,CAACI,UAAU,CACxC;gBAAEd,MAAM;gBAAUH,YAAYW;gBAAQJ,MAAMA;gBAAsBH,MAAML;YAAO,GAC/Ea,KACAU,WAAWG,MAAM,GAAG;YAErB,OAAO,IAAIjB,WAAWJ,MAAMsB,KAAK,CAAC,CAACC,GAAGC,IAAMD,MAAML,UAAW,CAACM,EAAE;QACjE;IACD;AACD"}
@@ -1,222 +1,66 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- }
6
- catch (error) {
7
- reject(error);
8
- return;
9
- }
10
- if (info.done) {
11
- resolve(value);
12
- }
13
- else {
14
- Promise.resolve(value).then(_next, _throw);
15
- }
16
- }
17
- function _async_to_generator(fn) {
18
- return function () {
19
- var self = this, args = arguments;
20
- return new Promise(function (resolve, reject) {
21
- var gen = fn.apply(self, args);
22
- function _next(value) {
23
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
24
- }
25
- function _throw(err) {
26
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
27
- }
28
- _next(undefined);
29
- });
30
- };
31
- }
32
- function _ts_generator(thisArg, body) {
33
- var f, y, t, _ = {
34
- label: 0,
35
- sent: function () {
36
- if (t[0] & 1)
37
- throw t[1];
38
- return t[1];
39
- },
40
- trys: [],
41
- ops: []
42
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
43
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function () {
44
- return this;
45
- }), g;
46
- function verb(n) {
47
- return function (v) {
48
- return step([
49
- n,
50
- v
51
- ]);
52
- };
53
- }
54
- function step(op) {
55
- if (f)
56
- throw new TypeError("Generator is already executing.");
57
- while (g && (g = 0, op[0] && (_ = 0)), _)
58
- try {
59
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
60
- return t;
61
- if (y = 0, t)
62
- op = [
63
- op[0] & 2,
64
- t.value
65
- ];
66
- switch (op[0]) {
67
- case 0:
68
- case 1:
69
- t = op;
70
- break;
71
- case 4:
72
- _.label++;
73
- return {
74
- value: op[1],
75
- done: false
76
- };
77
- case 5:
78
- _.label++;
79
- y = op[1];
80
- op = [
81
- 0
82
- ];
83
- continue;
84
- case 7:
85
- op = _.ops.pop();
86
- _.trys.pop();
87
- continue;
88
- default:
89
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
90
- _ = 0;
91
- continue;
92
- }
93
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
94
- _.label = op[1];
95
- break;
96
- }
97
- if (op[0] === 6 && _.label < t[1]) {
98
- _.label = t[1];
99
- t = op;
100
- break;
101
- }
102
- if (t && _.label < t[2]) {
103
- _.label = t[2];
104
- _.ops.push(op);
105
- break;
106
- }
107
- if (t[2])
108
- _.ops.pop();
109
- _.trys.pop();
110
- continue;
111
- }
112
- op = body.call(thisArg, _);
113
- }
114
- catch (e) {
115
- op = [
116
- 6,
117
- e
118
- ];
119
- y = 0;
120
- }
121
- finally {
122
- f = t = 0;
123
- }
124
- if (op[0] & 5)
125
- throw op[1];
126
- return {
127
- value: op[0] ? op[1] : void 0,
128
- done: true
129
- };
130
- }
131
- }
132
1
  import { randomBytes, scrypt, timingSafeEqual } from "node:crypto";
133
2
  import { Errors } from "@wener/utils";
134
3
  import { PHC } from "./PHC.js";
135
- export function createScryptPasswordAlgorithm() {
136
- var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
137
- var _options, _options1, _options2, _options3, _options4;
138
- var id = options.id || "scrypt";
139
- (_options = options).cost || (_options.cost = Math.pow(2, 14));
140
- (_options1 = options).blocksize || (_options1.blocksize = 8);
141
- (_options2 = options).parallelism || (_options2.parallelism = 1);
142
- (_options3 = options).saltlen || (_options3.saltlen = 16);
143
- (_options4 = options).keylen || (_options4.keylen = 32);
4
+ export function createScryptPasswordAlgorithm(options = {}) {
5
+ let id = options.id || "scrypt";
6
+ options.cost ||= Math.pow(2, 14);
7
+ options.blocksize ||= 8;
8
+ options.parallelism ||= 1;
9
+ options.saltlen ||= 16;
10
+ options.keylen ||= 32;
144
11
  return {
145
12
  name: id,
146
- hash: function hash(password, opts) {
147
- return _async_to_generator(function () {
148
- var salt;
149
- return _ts_generator(this, function (_state) {
150
- salt = (opts === null || opts === void 0 ? void 0 : opts.salt) || randomBytes(options.saltlen);
151
- return [
152
- 2,
153
- new Promise(function (resolve, reject) {
154
- var N = options.cost;
155
- var r = options.blocksize;
156
- var p = options.parallelism;
157
- scrypt(password, salt, options.keylen, {
158
- N: N,
159
- r: r,
160
- p: p
161
- }, function (err, derivedKey) {
162
- if (err)
163
- return reject(err);
164
- var _opts_id;
165
- resolve(PHC.serialize({
166
- id: (_opts_id = opts === null || opts === void 0 ? void 0 : opts.id) !== null && _opts_id !== void 0 ? _opts_id : id,
167
- params: {
168
- ln: N,
169
- r: r,
170
- p: p
171
- },
172
- salt: salt,
173
- hash: derivedKey
174
- }));
175
- });
176
- })
177
- ];
13
+ async hash(password, opts) {
14
+ const salt = opts?.salt || randomBytes(options.saltlen);
15
+ return new Promise((resolve, reject) => {
16
+ let N = options.cost;
17
+ let r = options.blocksize;
18
+ let p = options.parallelism;
19
+ scrypt(password, salt, options.keylen, {
20
+ N,
21
+ r,
22
+ p
23
+ }, (err, derivedKey) => {
24
+ if (err)
25
+ return reject(err);
26
+ resolve(PHC.serialize({
27
+ id: opts?.id ?? id,
28
+ params: {
29
+ ln: N,
30
+ r: r,
31
+ p: p
32
+ },
33
+ salt,
34
+ hash: derivedKey
35
+ }));
178
36
  });
179
- })();
37
+ });
180
38
  },
181
- verify: function verify(password, hash, opts) {
182
- return _async_to_generator(function () {
183
- var _opts_params, _opts_params1, _opts_params2, salt, storedHash, N, r, p, keylen;
184
- return _ts_generator(this, function (_state) {
185
- try {
186
- ;
187
- salt = Errors.BadRequest.require(opts.salt);
188
- storedHash = Errors.BadRequest.require(opts.hash);
189
- N = parseInt((_opts_params = opts.params) === null || _opts_params === void 0 ? void 0 : _opts_params.ln, 10);
190
- r = parseInt((_opts_params1 = opts.params) === null || _opts_params1 === void 0 ? void 0 : _opts_params1.r, 10);
191
- p = parseInt((_opts_params2 = opts.params) === null || _opts_params2 === void 0 ? void 0 : _opts_params2.p, 10);
192
- keylen = storedHash.length;
193
- return [
194
- 2,
195
- new Promise(function (resolve, reject) {
196
- scrypt(password, salt, keylen, {
197
- N: N,
198
- r: r,
199
- p: p
200
- }, function (err, derivedKey) {
201
- if (err)
202
- return reject(err);
203
- var isMatch = timingSafeEqual(derivedKey, storedHash);
204
- resolve(isMatch);
205
- });
206
- })
207
- ];
208
- }
209
- catch (error) {
210
- return [
211
- 2,
212
- Promise.resolve(false)
213
- ];
214
- }
215
- return [
216
- 2
217
- ];
39
+ async verify(password, hash, opts) {
40
+ try {
41
+ const salt = Errors.BadRequest.require(opts.salt);
42
+ const storedHash = Errors.BadRequest.require(opts.hash);
43
+ const N = parseInt(opts.params?.ln, 10);
44
+ const r = parseInt(opts.params?.r, 10);
45
+ const p = parseInt(opts.params?.p, 10);
46
+ const keylen = storedHash.length;
47
+ return new Promise((resolve, reject) => {
48
+ scrypt(password, salt, keylen, {
49
+ N,
50
+ r,
51
+ p
52
+ }, (err, derivedKey) => {
53
+ if (err)
54
+ return reject(err);
55
+ const isMatch = timingSafeEqual(derivedKey, storedHash);
56
+ resolve(isMatch);
57
+ });
218
58
  });
219
- })();
59
+ }
60
+ catch (error) {
61
+ return Promise.resolve(false);
62
+ }
220
63
  }
221
64
  };
222
65
  }
66
+ //# sourceMappingURL=createScryptPasswordAlgorithm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/password/createScryptPasswordAlgorithm.ts"],"sourcesContent":["import { randomBytes, scrypt, timingSafeEqual } from 'node:crypto';\nimport { Errors } from '@wener/utils';\nimport { Password } from './Password';\nimport { PHC } from './PHC';\n\nexport function createScryptPasswordAlgorithm(\n\toptions: {\n\t\tid?: string;\n\t\tcost?: number;\n\t\tblocksize?: number;\n\t\tparallelism?: number;\n\t\tsaltlen?: number;\n\t\tkeylen?: number;\n\t} = {},\n): Password.PasswordAlgorithm {\n\tlet id = options.id || 'scrypt';\n\toptions.cost ||= Math.pow(2, 14);\n\toptions.blocksize ||= 8;\n\toptions.parallelism ||= 1;\n\toptions.saltlen ||= 16;\n\toptions.keylen ||= 32;\n\treturn {\n\t\tname: id,\n\t\tasync hash(password: string, opts): Promise<string> {\n\t\t\tconst salt = opts?.salt || randomBytes(options.saltlen!);\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tlet N = options.cost!;\n\t\t\t\tlet r = options.blocksize!;\n\t\t\t\tlet p = options.parallelism!;\n\t\t\t\tscrypt(password, salt, options.keylen!, { N, r, p }, (err, derivedKey) => {\n\t\t\t\t\tif (err) return reject(err);\n\n\t\t\t\t\tresolve(PHC.serialize({ id: opts?.id ?? id, params: { ln: N!, r: r!, p: p! }, salt, hash: derivedKey }));\n\t\t\t\t});\n\t\t\t});\n\t\t},\n\n\t\tasync verify(password: string, hash: string, opts): Promise<boolean> {\n\t\t\ttry {\n\t\t\t\tconst salt = Errors.BadRequest.require(opts.salt);\n\t\t\t\tconst storedHash = Errors.BadRequest.require(opts.hash);\n\n\t\t\t\tconst N = parseInt(opts.params?.ln as string, 10);\n\t\t\t\tconst r = parseInt(opts.params?.r as string, 10);\n\t\t\t\tconst p = parseInt(opts.params?.p as string, 10);\n\t\t\t\tconst keylen = storedHash.length;\n\n\t\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\t\tscrypt(password, salt, keylen, { N, r, p }, (err, derivedKey) => {\n\t\t\t\t\t\tif (err) return reject(err);\n\n\t\t\t\t\t\tconst isMatch = timingSafeEqual(derivedKey, storedHash);\n\t\t\t\t\t\tresolve(isMatch);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t} catch (error) {\n\t\t\t\treturn Promise.resolve(false);\n\t\t\t}\n\t\t},\n\t};\n}\n"],"names":["randomBytes","scrypt","timingSafeEqual","Errors","PHC","createScryptPasswordAlgorithm","options","id","cost","Math","pow","blocksize","parallelism","saltlen","keylen","name","hash","password","opts","salt","Promise","resolve","reject","N","r","p","err","derivedKey","serialize","params","ln","verify","BadRequest","require","storedHash","parseInt","length","isMatch","error"],"mappings":"AAAA,SAASA,WAAW,EAAEC,MAAM,EAAEC,eAAe,QAAQ,cAAc;AACnE,SAASC,MAAM,QAAQ,eAAe;AAEtC,SAASC,GAAG,QAAQ,QAAQ;AAE5B,OAAO,SAASC,8BACfC,UAOI,CAAC,CAAC;IAEN,IAAIC,KAAKD,QAAQC,EAAE,IAAI;IACvBD,QAAQE,IAAI,KAAKC,KAAKC,GAAG,CAAC,GAAG;IAC7BJ,QAAQK,SAAS,KAAK;IACtBL,QAAQM,WAAW,KAAK;IACxBN,QAAQO,OAAO,KAAK;IACpBP,QAAQQ,MAAM,KAAK;IACnB,OAAO;QACNC,MAAMR;QACN,MAAMS,MAAKC,QAAgB,EAAEC,IAAI;YAChC,MAAMC,OAAOD,MAAMC,QAAQnB,YAAYM,QAAQO,OAAO;YACtD,OAAO,IAAIO,QAAQ,CAACC,SAASC;gBAC5B,IAAIC,IAAIjB,QAAQE,IAAI;gBACpB,IAAIgB,IAAIlB,QAAQK,SAAS;gBACzB,IAAIc,IAAInB,QAAQM,WAAW;gBAC3BX,OAAOgB,UAAUE,MAAMb,QAAQQ,MAAM,EAAG;oBAAES;oBAAGC;oBAAGC;gBAAE,GAAG,CAACC,KAAKC;oBAC1D,IAAID,KAAK,OAAOJ,OAAOI;oBAEvBL,QAAQjB,IAAIwB,SAAS,CAAC;wBAAErB,IAAIW,MAAMX,MAAMA;wBAAIsB,QAAQ;4BAAEC,IAAIP;4BAAIC,GAAGA;4BAAIC,GAAGA;wBAAG;wBAAGN;wBAAMH,MAAMW;oBAAW;gBACtG;YACD;QACD;QAEA,MAAMI,QAAOd,QAAgB,EAAED,IAAY,EAAEE,IAAI;YAChD,IAAI;gBACH,MAAMC,OAAOhB,OAAO6B,UAAU,CAACC,OAAO,CAACf,KAAKC,IAAI;gBAChD,MAAMe,aAAa/B,OAAO6B,UAAU,CAACC,OAAO,CAACf,KAAKF,IAAI;gBAEtD,MAAMO,IAAIY,SAASjB,KAAKW,MAAM,EAAEC,IAAc;gBAC9C,MAAMN,IAAIW,SAASjB,KAAKW,MAAM,EAAEL,GAAa;gBAC7C,MAAMC,IAAIU,SAASjB,KAAKW,MAAM,EAAEJ,GAAa;gBAC7C,MAAMX,SAASoB,WAAWE,MAAM;gBAEhC,OAAO,IAAIhB,QAAQ,CAACC,SAASC;oBAC5BrB,OAAOgB,UAAUE,MAAML,QAAQ;wBAAES;wBAAGC;wBAAGC;oBAAE,GAAG,CAACC,KAAKC;wBACjD,IAAID,KAAK,OAAOJ,OAAOI;wBAEvB,MAAMW,UAAUnC,gBAAgByB,YAAYO;wBAC5Cb,QAAQgB;oBACT;gBACD;YACD,EAAE,OAAOC,OAAO;gBACf,OAAOlB,QAAQC,OAAO,CAAC;YACxB;QACD;IACD;AACD"}
@@ -3,3 +3,4 @@ export { Password } from "./Password.js";
3
3
  export { createArgon2PasswordAlgorithm } from "./createArgon2PasswordAlgorithm.js";
4
4
  export { createBase64PasswordAlgorithm } from "./createBase64PasswordAlgorithm.js";
5
5
  export { createBcryptPasswordAlgorithm } from "./createBcryptPasswordAlgorithm.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/password/index.ts"],"sourcesContent":["export { PHC } from './PHC';\nexport { Password } from './Password';\nexport { createArgon2PasswordAlgorithm } from './createArgon2PasswordAlgorithm';\nexport { createBase64PasswordAlgorithm } from './createBase64PasswordAlgorithm';\nexport { createBcryptPasswordAlgorithm } from './createBcryptPasswordAlgorithm';\n"],"names":["PHC","Password","createArgon2PasswordAlgorithm","createBase64PasswordAlgorithm","createBcryptPasswordAlgorithm"],"mappings":"AAAA,SAASA,GAAG,QAAQ,QAAQ;AAC5B,SAASC,QAAQ,QAAQ,aAAa;AACtC,SAASC,6BAA6B,QAAQ,kCAAkC;AAChF,SAASC,6BAA6B,QAAQ,kCAAkC;AAChF,SAASC,6BAA6B,QAAQ,kCAAkC"}
@@ -1 +1,2 @@
1
1
  export { createScryptPasswordAlgorithm } from "../createScryptPasswordAlgorithm.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/password/server/index.ts"],"sourcesContent":["export { createScryptPasswordAlgorithm } from '../createScryptPasswordAlgorithm';\n"],"names":["createScryptPasswordAlgorithm"],"mappings":"AAAA,SAASA,6BAA6B,QAAQ,mCAAmC"}
@@ -1 +1,3 @@
1
1
  export { };
2
+
3
+ //# sourceMappingURL=Identifiable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/resource/Identifiable.ts"],"sourcesContent":["export type Identifiable = {\n\tid: string;\n};\n"],"names":[],"mappings":"AAAA,WAEE"}