@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,201 +1,43 @@
1
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
2
- try {
3
- var info = gen[key](arg);
4
- var value = info.value;
5
- } catch (error) {
6
- reject(error);
7
- return;
1
+ import { exec } from "node:child_process";
2
+ import fs from "node:fs/promises";
3
+ import path from "node:path";
4
+ import * as Codegen from "@sinclair/typebox-codegen";
5
+ export async function generateSchema({ file, dir = path.dirname(file) }) {
6
+ const fn = path.basename(file).replace(/\.d\.ts$/, '.ts');
7
+ const types = await fs.readFile(file, 'utf-8');
8
+ const typeboxDir = path.join(dir, 'typebox');
9
+ const zodDir = path.join(dir, 'zod');
10
+ await fs.mkdir(typeboxDir, {
11
+ recursive: true
12
+ });
13
+ await fs.mkdir(zodDir, {
14
+ recursive: true
15
+ });
16
+ const typeBoxFile = path.join(typeboxDir, fn);
17
+ const zodFile = path.join(zodDir, fn);
18
+ {
19
+ // avoid import type error
20
+ let out = Codegen.TypeScriptToTypeBox.Generate(types);
21
+ out = out.replace(/^import \{ Type, Static\b/, `import { Type, type Static`);
22
+ await fs.writeFile(typeBoxFile, out);
8
23
  }
9
- if (info.done) {
10
- resolve(value);
11
- } else {
12
- Promise.resolve(value).then(_next, _throw);
13
- }
14
- }
15
- function _async_to_generator(fn) {
16
- return function() {
17
- var self = this, args = arguments;
18
- return new Promise(function(resolve, reject) {
19
- var gen = fn.apply(self, args);
20
- function _next(value) {
21
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
22
- }
23
- function _throw(err) {
24
- asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
25
- }
26
- _next(undefined);
27
- });
28
- };
29
- }
30
- function _ts_generator(thisArg, body) {
31
- var f, y, t, _ = {
32
- label: 0,
33
- sent: function() {
34
- if (t[0] & 1) throw t[1];
35
- return t[1];
36
- },
37
- trys: [],
38
- ops: []
39
- }, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
40
- return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() {
41
- return this;
42
- }), g;
43
- function verb(n) {
44
- return function(v) {
45
- return step([
46
- n,
47
- v
48
- ]);
49
- };
50
- }
51
- function step(op) {
52
- if (f) throw new TypeError("Generator is already executing.");
53
- while(g && (g = 0, op[0] && (_ = 0)), _)try {
54
- 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) return t;
55
- if (y = 0, t) op = [
56
- op[0] & 2,
57
- t.value
58
- ];
59
- switch(op[0]){
60
- case 0:
61
- case 1:
62
- t = op;
63
- break;
64
- case 4:
65
- _.label++;
66
- return {
67
- value: op[1],
68
- done: false
69
- };
70
- case 5:
71
- _.label++;
72
- y = op[1];
73
- op = [
74
- 0
75
- ];
76
- continue;
77
- case 7:
78
- op = _.ops.pop();
79
- _.trys.pop();
80
- continue;
81
- default:
82
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
83
- _ = 0;
84
- continue;
85
- }
86
- if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
87
- _.label = op[1];
88
- break;
89
- }
90
- if (op[0] === 6 && _.label < t[1]) {
91
- _.label = t[1];
92
- t = op;
93
- break;
94
- }
95
- if (t && _.label < t[2]) {
96
- _.label = t[2];
97
- _.ops.push(op);
98
- break;
99
- }
100
- if (t[2]) _.ops.pop();
101
- _.trys.pop();
102
- continue;
103
- }
104
- op = body.call(thisArg, _);
105
- } catch (e) {
106
- op = [
107
- 6,
108
- e
109
- ];
110
- y = 0;
111
- } finally{
112
- f = t = 0;
113
- }
114
- if (op[0] & 5) throw op[1];
115
- return {
116
- value: op[0] ? op[1] : void 0,
117
- done: true
118
- };
119
- }
120
- }
121
- import { exec } from 'node:child_process';
122
- import fs from 'node:fs/promises';
123
- import path from 'node:path';
124
- import * as Codegen from '@sinclair/typebox-codegen';
125
- export function generateSchema(_0) {
126
- return _async_to_generator(function(param) {
127
- var file, _param_dir, dir, fn, types, typeboxDir, zodDir, typeBoxFile, zodFile, out, model;
128
- return _ts_generator(this, function(_state) {
129
- switch(_state.label){
130
- case 0:
131
- file = param.file, _param_dir = param.dir, dir = _param_dir === void 0 ? path.dirname(file) : _param_dir;
132
- fn = path.basename(file).replace(/\.d\.ts$/, '.ts');
133
- return [
134
- 4,
135
- fs.readFile(file, 'utf-8')
136
- ];
137
- case 1:
138
- types = _state.sent();
139
- typeboxDir = path.join(dir, 'typebox');
140
- zodDir = path.join(dir, 'zod');
141
- return [
142
- 4,
143
- fs.mkdir(typeboxDir, {
144
- recursive: true
145
- })
146
- ];
147
- case 2:
148
- _state.sent();
149
- return [
150
- 4,
151
- fs.mkdir(zodDir, {
152
- recursive: true
153
- })
154
- ];
155
- case 3:
156
- _state.sent();
157
- typeBoxFile = path.join(typeboxDir, fn);
158
- zodFile = path.join(zodDir, fn);
159
- // avoid import type error
160
- out = Codegen.TypeScriptToTypeBox.Generate(types);
161
- out = out.replace(/^import \{ Type, Static\b/, "import { Type, type Static");
162
- return [
163
- 4,
164
- fs.writeFile(typeBoxFile, out)
165
- ];
166
- case 4:
167
- _state.sent();
168
- model = Codegen.TypeScriptToModel.Generate(types);
169
- return [
170
- 4,
171
- fs.writeFile(zodFile, Codegen.ModelToZod.Generate(model))
172
- ];
173
- case 5:
174
- _state.sent();
175
- return [
176
- 4,
177
- new Promise(function(resolve, reject) {
178
- exec('pnpm prettier --write "'.concat(dir, '/{typebox,zod}/*.ts"'), function(error, stdout, stderr) {
179
- if (error) {
180
- console.error("exec error: ".concat(error));
181
- reject(error);
182
- return;
183
- }
184
- resolve({
185
- stderr: stderr,
186
- stdout: stdout
187
- });
188
- stdout && console.log("prettier:stdout: ".concat(stdout));
189
- stderr && console.error("prettier:stderr: ".concat(stderr));
190
- });
191
- })
192
- ];
193
- case 6:
194
- _state.sent();
195
- return [
196
- 2
197
- ];
24
+ const model = Codegen.TypeScriptToModel.Generate(types);
25
+ await fs.writeFile(zodFile, Codegen.ModelToZod.Generate(model));
26
+ await new Promise((resolve, reject)=>{
27
+ exec(`pnpm prettier --write "${dir}/{typebox,zod}/*.ts"`, (error, stdout, stderr)=>{
28
+ if (error) {
29
+ console.error(`exec error: ${error}`);
30
+ reject(error);
31
+ return;
198
32
  }
33
+ resolve({
34
+ stderr,
35
+ stdout
36
+ });
37
+ stdout && console.log(`prettier:stdout: ${stdout}`);
38
+ stderr && console.error(`prettier:stderr: ${stderr}`);
199
39
  });
200
- }).apply(this, arguments);
40
+ });
201
41
  }
42
+
43
+ //# sourceMappingURL=generateSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tools/generateSchema.ts"],"sourcesContent":["import { exec } from 'node:child_process';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport * as Codegen from '@sinclair/typebox-codegen';\n\nexport async function generateSchema({ file, dir = path.dirname(file) }: { file: string; dir?: string }) {\n\tconst fn = path.basename(file).replace(/\\.d\\.ts$/, '.ts');\n\tconst types = await fs.readFile(file, 'utf-8');\n\n\tconst typeboxDir = path.join(dir, 'typebox');\n\tconst zodDir = path.join(dir, 'zod');\n\n\tawait fs.mkdir(typeboxDir, { recursive: true });\n\tawait fs.mkdir(zodDir, { recursive: true });\n\n\tconst typeBoxFile = path.join(typeboxDir, fn);\n\tconst zodFile = path.join(zodDir, fn);\n\t{\n\t\t// avoid import type error\n\t\tlet out = Codegen.TypeScriptToTypeBox.Generate(types);\n\t\tout = out.replace(/^import \\{ Type, Static\\b/, `import { Type, type Static`);\n\t\tawait fs.writeFile(typeBoxFile, out);\n\t}\n\tconst model = Codegen.TypeScriptToModel.Generate(types);\n\tawait fs.writeFile(zodFile, Codegen.ModelToZod.Generate(model));\n\n\tawait new Promise((resolve, reject) => {\n\t\texec(`pnpm prettier --write \"${dir}/{typebox,zod}/*.ts\"`, (error, stdout, stderr) => {\n\t\t\tif (error) {\n\t\t\t\tconsole.error(`exec error: ${error}`);\n\t\t\t\treject(error);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresolve({ stderr, stdout });\n\t\t\tstdout && console.log(`prettier:stdout: ${stdout}`);\n\t\t\tstderr && console.error(`prettier:stderr: ${stderr}`);\n\t\t});\n\t});\n}\n"],"names":["exec","fs","path","Codegen","generateSchema","file","dir","dirname","fn","basename","replace","types","readFile","typeboxDir","join","zodDir","mkdir","recursive","typeBoxFile","zodFile","out","TypeScriptToTypeBox","Generate","writeFile","model","TypeScriptToModel","ModelToZod","Promise","resolve","reject","error","stdout","stderr","console","log"],"mappings":"AAAA,SAASA,IAAI,QAAQ,qBAAqB;AAC1C,OAAOC,QAAQ,mBAAmB;AAClC,OAAOC,UAAU,YAAY;AAC7B,YAAYC,aAAa,4BAA4B;AAErD,OAAO,eAAeC,eAAe,EAAEC,IAAI,EAAEC,MAAMJ,KAAKK,OAAO,CAACF,KAAK,EAAkC;IACtG,MAAMG,KAAKN,KAAKO,QAAQ,CAACJ,MAAMK,OAAO,CAAC,YAAY;IACnD,MAAMC,QAAQ,MAAMV,GAAGW,QAAQ,CAACP,MAAM;IAEtC,MAAMQ,aAAaX,KAAKY,IAAI,CAACR,KAAK;IAClC,MAAMS,SAASb,KAAKY,IAAI,CAACR,KAAK;IAE9B,MAAML,GAAGe,KAAK,CAACH,YAAY;QAAEI,WAAW;IAAK;IAC7C,MAAMhB,GAAGe,KAAK,CAACD,QAAQ;QAAEE,WAAW;IAAK;IAEzC,MAAMC,cAAchB,KAAKY,IAAI,CAACD,YAAYL;IAC1C,MAAMW,UAAUjB,KAAKY,IAAI,CAACC,QAAQP;IAClC;QACC,0BAA0B;QAC1B,IAAIY,MAAMjB,QAAQkB,mBAAmB,CAACC,QAAQ,CAACX;QAC/CS,MAAMA,IAAIV,OAAO,CAAC,6BAA6B,CAAC,0BAA0B,CAAC;QAC3E,MAAMT,GAAGsB,SAAS,CAACL,aAAaE;IACjC;IACA,MAAMI,QAAQrB,QAAQsB,iBAAiB,CAACH,QAAQ,CAACX;IACjD,MAAMV,GAAGsB,SAAS,CAACJ,SAAShB,QAAQuB,UAAU,CAACJ,QAAQ,CAACE;IAExD,MAAM,IAAIG,QAAQ,CAACC,SAASC;QAC3B7B,KAAK,CAAC,uBAAuB,EAAEM,IAAI,oBAAoB,CAAC,EAAE,CAACwB,OAAOC,QAAQC;YACzE,IAAIF,OAAO;gBACVG,QAAQH,KAAK,CAAC,CAAC,YAAY,EAAEA,OAAO;gBACpCD,OAAOC;gBACP;YACD;YACAF,QAAQ;gBAAEI;gBAAQD;YAAO;YACzBA,UAAUE,QAAQC,GAAG,CAAC,CAAC,iBAAiB,EAAEH,QAAQ;YAClDC,UAAUC,QAAQH,KAAK,CAAC,CAAC,iBAAiB,EAAEE,QAAQ;QACrD;IACD;AACD"}
@@ -1,173 +1,85 @@
1
- function _array_like_to_array(arr, len) {
2
- if (len == null || len > arr.length) len = arr.length;
3
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
4
- return arr2;
5
- }
6
- function _array_with_holes(arr) {
7
- if (Array.isArray(arr)) return arr;
8
- }
9
- function _iterable_to_array_limit(arr, i) {
10
- var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
11
- if (_i == null) return;
12
- var _arr = [];
13
- var _n = true;
14
- var _d = false;
15
- var _s, _e;
16
- try {
17
- for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
18
- _arr.push(_s.value);
19
- if (i && _arr.length === i) break;
20
- }
21
- } catch (err) {
22
- _d = true;
23
- _e = err;
24
- } finally{
25
- try {
26
- if (!_n && _i["return"] != null) _i["return"]();
27
- } finally{
28
- if (_d) throw _e;
29
- }
30
- }
31
- return _arr;
32
- }
33
- function _non_iterable_rest() {
34
- throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
35
- }
36
- function _sliced_to_array(arr, i) {
37
- return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
38
- }
39
- function _unsupported_iterable_to_array(o, minLen) {
40
- if (!o) return;
41
- if (typeof o === "string") return _array_like_to_array(o, minLen);
42
- var n = Object.prototype.toString.call(o).slice(8, -1);
43
- if (n === "Object" && o.constructor) n = o.constructor.name;
44
- if (n === "Map" || n === "Set") return Array.from(n);
45
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
46
- }
47
1
  export function renderJsonSchemaToMarkdownDoc(rootSchema) {
48
2
  // markdown
49
- var out = [];
50
- var all = new Set();
51
- var pending = [];
52
- var addObject = function(o) {
3
+ const out = [];
4
+ const all = new Set();
5
+ const pending = [];
6
+ const addObject = (o)=>{
53
7
  if (all.has(o.$id)) {
54
8
  return;
55
9
  }
56
10
  all.add(o.$id);
57
11
  pending.push(o);
58
12
  };
59
- var writeObjectProps = function(T) {
60
- var _ref = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, _ref_prefix = _ref.prefix, prefix = _ref_prefix === void 0 ? '' : _ref_prefix;
61
- if (!(T === null || T === void 0 ? void 0 : T.properties)) {
13
+ const writeObjectProps = (T, { prefix = '' } = {})=>{
14
+ if (!T?.properties) {
62
15
  return;
63
16
  }
64
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
65
- try {
66
- for(var _iterator = Object.entries(T.properties)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
67
- var _step_value = _sliced_to_array(_step.value, 2), name = _step_value[0], schema = _step_value[1];
68
- var typ = schema.$id || schema.type;
69
- if (typ === 'array') {
70
- typ = "".concat(schema.items.$id || schema.items.type, "[]");
71
- if (schema.items.$id) {
72
- addObject(schema.items);
73
- }
74
- } else if (schema.$id) {
75
- addObject(schema);
76
- }
77
- if (!typ) {
78
- if ('anyOf' in schema) {
79
- typ = 'enum';
80
- }
81
- }
82
- out.push("| ".concat(prefix).concat(name, " | ").concat(typ, " | ").concat(schema.title || schema.description || '', " |"));
83
- if (typ === 'object') {
84
- writeObjectProps(schema, {
85
- prefix: "".concat(prefix).concat(name, ".")
86
- });
87
- } else if (schema.type === 'array') {
88
- if (schema.items.type === 'object' && !schema.items.$id) {
89
- writeObjectProps(schema.items, {
90
- prefix: "".concat(prefix).concat(name, "[].")
91
- });
92
- }
17
+ for (const [name, schema] of Object.entries(T.properties)){
18
+ let typ = schema.$id || schema.type;
19
+ if (typ === 'array') {
20
+ typ = `${schema.items.$id || schema.items.type}[]`;
21
+ if (schema.items.$id) {
22
+ addObject(schema.items);
93
23
  }
24
+ } else if (schema.$id) {
25
+ addObject(schema);
94
26
  }
95
- } catch (err) {
96
- _didIteratorError = true;
97
- _iteratorError = err;
98
- } finally{
99
- try {
100
- if (!_iteratorNormalCompletion && _iterator.return != null) {
101
- _iterator.return();
27
+ if (!typ) {
28
+ if ('anyOf' in schema) {
29
+ typ = 'enum';
102
30
  }
103
- } finally{
104
- if (_didIteratorError) {
105
- throw _iteratorError;
31
+ }
32
+ out.push(`| ${prefix}${name} | ${typ} | ${schema.title || schema.description || ''} |`);
33
+ if (typ === 'object') {
34
+ writeObjectProps(schema, {
35
+ prefix: `${prefix}${name}.`
36
+ });
37
+ } else if (schema.type === 'array') {
38
+ if (schema.items.type === 'object' && !schema.items.$id) {
39
+ writeObjectProps(schema.items, {
40
+ prefix: `${prefix}${name}[].`
41
+ });
106
42
  }
107
43
  }
108
44
  }
109
45
  };
110
- var writeObject = function(T) {
111
- out.push("### ".concat(T.title || T.$id));
112
- out.push("\n| $id | 名字 |\n| --- | --- |\n| ".concat(T.$id || '', " | ").concat(T.title || '', " | \n "));
46
+ const writeObject = (T)=>{
47
+ out.push(`### ${T.title || T.$id}`);
48
+ out.push(`
49
+ | $id | 名字 |
50
+ | --- | --- |
51
+ | ${T.$id || ''} | ${T.title || ''} |
52
+ `);
113
53
  if (T.description) {
114
54
  out.push('');
115
- out.push("> ".concat(T.description));
55
+ out.push(`> ${T.description}`);
116
56
  out.push('');
117
57
  }
118
- out.push("| 名字 | 类型 | 说明 |");
119
- out.push("| --- | --- | --- |");
58
+ out.push(`| 名字 | 类型 | 说明 |`);
59
+ out.push(`| --- | --- | --- |`);
120
60
  writeObjectProps(T);
121
61
  out.push('');
122
62
  };
123
63
  writeObject(rootSchema);
124
- var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
125
- try {
126
- for(var _iterator = pending[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
127
- var schema = _step.value;
128
- if (schema.type === 'object') {
129
- writeObject(schema);
130
- } else if ('anyOf' in schema) {
131
- out.push("### ".concat(schema.$id || schema.title));
132
- out.push("\n| $id | 名字 |\n| --- | --- |\n| ".concat(schema.$id || '', " | ").concat(schema.title || '', " | \n "));
133
- out.push("| 值 | 说明 |");
134
- out.push("| --- | --- |");
135
- var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
136
- try {
137
- for(var _iterator1 = schema.anyOf[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
138
- var item = _step1.value;
139
- out.push("| ".concat(item.const, " | ").concat(item.title || item.description || '', " |"));
140
- }
141
- } catch (err) {
142
- _didIteratorError1 = true;
143
- _iteratorError1 = err;
144
- } finally{
145
- try {
146
- if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
147
- _iterator1.return();
148
- }
149
- } finally{
150
- if (_didIteratorError1) {
151
- throw _iteratorError1;
152
- }
153
- }
154
- }
155
- out.push('');
156
- }
157
- }
158
- } catch (err) {
159
- _didIteratorError = true;
160
- _iteratorError = err;
161
- } finally{
162
- try {
163
- if (!_iteratorNormalCompletion && _iterator.return != null) {
164
- _iterator.return();
165
- }
166
- } finally{
167
- if (_didIteratorError) {
168
- throw _iteratorError;
64
+ for (const schema of pending){
65
+ if (schema.type === 'object') {
66
+ writeObject(schema);
67
+ } else if ('anyOf' in schema) {
68
+ out.push(`### ${schema.$id || schema.title}`);
69
+ out.push(`
70
+ | $id | 名字 |
71
+ | --- | --- |
72
+ | ${schema.$id || ''} | ${schema.title || ''} |
73
+ `);
74
+ out.push(`| | 说明 |`);
75
+ out.push(`| --- | --- |`);
76
+ for (const item of schema.anyOf){
77
+ out.push(`| ${item.const} | ${item.title || item.description || ''} |`);
169
78
  }
79
+ out.push('');
170
80
  }
171
81
  }
172
82
  return out.join('\n');
173
83
  }
84
+
85
+ //# sourceMappingURL=renderJsonSchemaToMarkdownDoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tools/renderJsonSchemaToMarkdownDoc.ts"],"sourcesContent":["import type { TObject, TSchema } from '@sinclair/typebox';\n\nexport function renderJsonSchemaToMarkdownDoc(rootSchema: any) {\n\t// markdown\n\tconst out: string[] = [];\n\tconst all = new Set();\n\tconst pending: TSchema[] = [];\n\n\tconst addObject = (o: TSchema) => {\n\t\tif (all.has(o.$id)) {\n\t\t\treturn;\n\t\t}\n\t\tall.add(o.$id);\n\t\tpending.push(o);\n\t};\n\n\tconst writeObjectProps = (T: TObject, { prefix = '' }: { prefix?: string } = {}) => {\n\t\tif (!T?.properties) {\n\t\t\treturn;\n\t\t}\n\t\tfor (const [name, schema] of Object.entries(T.properties)) {\n\t\t\tlet typ = schema.$id || schema.type;\n\n\t\t\tif (typ === 'array') {\n\t\t\t\ttyp = `${schema.items.$id || schema.items.type}[]`;\n\t\t\t\tif (schema.items.$id) {\n\t\t\t\t\taddObject(schema.items);\n\t\t\t\t}\n\t\t\t} else if (schema.$id) {\n\t\t\t\taddObject(schema);\n\t\t\t}\n\t\t\tif (!typ) {\n\t\t\t\tif ('anyOf' in schema) {\n\t\t\t\t\ttyp = 'enum';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tout.push(`| ${prefix}${name} | ${typ} | ${schema.title || schema.description || ''} |`);\n\n\t\t\tif (typ === 'object') {\n\t\t\t\twriteObjectProps(schema as TObject, { prefix: `${prefix}${name}.` });\n\t\t\t} else if (schema.type === 'array') {\n\t\t\t\tif (schema.items.type === 'object' && !schema.items.$id) {\n\t\t\t\t\twriteObjectProps(schema.items as TObject, { prefix: `${prefix}${name}[].` });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tconst writeObject = (T: TObject) => {\n\t\tout.push(`### ${T.title || T.$id}`);\n\t\tout.push(`\n| $id | 名字 |\n| --- | --- |\n| ${T.$id || ''} | ${T.title || ''} | \n `);\n\t\tif (T.description) {\n\t\t\tout.push('');\n\t\t\tout.push(`> ${T.description}`);\n\t\t\tout.push('');\n\t\t}\n\n\t\tout.push(`| 名字 | 类型 | 说明 |`);\n\t\tout.push(`| --- | --- | --- |`);\n\n\t\twriteObjectProps(T);\n\n\t\tout.push('');\n\t};\n\n\twriteObject(rootSchema);\n\n\tfor (const schema of pending) {\n\t\tif (schema.type === 'object') {\n\t\t\twriteObject(schema as TObject);\n\t\t} else if ('anyOf' in schema) {\n\t\t\tout.push(`### ${schema.$id || schema.title}`);\n\t\t\tout.push(`\n| $id | 名字 |\n| --- | --- |\n| ${schema.$id || ''} | ${schema.title || ''} | \n `);\n\n\t\t\tout.push(`| 值 | 说明 |`);\n\t\t\tout.push(`| --- | --- |`);\n\t\t\tfor (const item of schema.anyOf) {\n\t\t\t\tout.push(`| ${item.const} | ${item.title || item.description || ''} |`);\n\t\t\t}\n\t\t\tout.push('');\n\t\t}\n\t}\n\n\treturn out.join('\\n');\n}\n"],"names":["renderJsonSchemaToMarkdownDoc","rootSchema","out","all","Set","pending","addObject","o","has","$id","add","push","writeObjectProps","T","prefix","properties","name","schema","Object","entries","typ","type","items","title","description","writeObject","item","anyOf","const","join"],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ function joinUrl(baseUrl, maybeUrl) {
2
+ const sanitizedBase = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;
3
+ const sanitizedEndpoint = maybeUrl.startsWith('/') ? maybeUrl.slice(1) : maybeUrl;
4
+ return `${sanitizedBase}/${sanitizedEndpoint}`;
5
+ }
6
+ export function buildBaseUrl(url, baseUrl) {
7
+ if (!baseUrl || /^https?:/.test(url)) {
8
+ return url;
9
+ }
10
+ return joinUrl(baseUrl, url);
11
+ }
12
+
13
+ //# sourceMappingURL=buildBaseUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/buildBaseUrl.ts"],"sourcesContent":["function joinUrl(baseUrl: string, maybeUrl: string): string {\n\tconst sanitizedBase = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl;\n\tconst sanitizedEndpoint = maybeUrl.startsWith('/') ? maybeUrl.slice(1) : maybeUrl;\n\treturn `${sanitizedBase}/${sanitizedEndpoint}`;\n}\n\nexport function buildBaseUrl(url: string, baseUrl: string | undefined | null): string {\n\tif (!baseUrl || /^https?:/.test(url)) {\n\t\treturn url;\n\t}\n\treturn joinUrl(baseUrl, url);\n}\n"],"names":["joinUrl","baseUrl","maybeUrl","sanitizedBase","endsWith","slice","sanitizedEndpoint","startsWith","buildBaseUrl","url","test"],"mappings":"AAAA,SAASA,QAAQC,OAAe,EAAEC,QAAgB;IACjD,MAAMC,gBAAgBF,QAAQG,QAAQ,CAAC,OAAOH,QAAQI,KAAK,CAAC,GAAG,CAAC,KAAKJ;IACrE,MAAMK,oBAAoBJ,SAASK,UAAU,CAAC,OAAOL,SAASG,KAAK,CAAC,KAAKH;IACzE,OAAO,GAAGC,cAAc,CAAC,EAAEG,mBAAmB;AAC/C;AAEA,OAAO,SAASE,aAAaC,GAAW,EAAER,OAAkC;IAC3E,IAAI,CAACA,WAAW,WAAWS,IAAI,CAACD,MAAM;QACrC,OAAOA;IACR;IACA,OAAOT,QAAQC,SAASQ;AACzB"}
@@ -0,0 +1,59 @@
1
+ import { forEachJsonSchema } from "../jsonschema/index.js";
2
+ import { toJsonSchema } from "../schema/index.js";
3
+ export const RedactedText = "[redacted]";
4
+ export function buildRedactorFormSchema(ts, { shouldRedact = (schema) => schema["x-sensitive"] === true, replacer = () => RedactedText }) {
5
+ let js = toJsonSchema(ts);
6
+ let paths = [];
7
+ forEachJsonSchema(js, (js, { path }) => {
8
+ if (shouldRedact(js)) {
9
+ paths.push(path);
10
+ }
11
+ });
12
+ const vis = (root, path) => {
13
+ switch (root) {
14
+ case null:
15
+ case undefined:
16
+ return;
17
+ }
18
+ let c = root;
19
+ for (let i = 0; i < path.length; i++) {
20
+ let k = path[i];
21
+ if (c && typeof c === "object" && k in c) {
22
+ let v = c[k];
23
+ if (path.length === 1) {
24
+ c[k] = replacer(k, v);
25
+ }
26
+ else if (Array.isArray(v)) {
27
+ for (let vv of v) {
28
+ vis(vv, path.slice(i + 1));
29
+ }
30
+ }
31
+ else {
32
+ vis(v, path.slice(i + 1));
33
+ }
34
+ }
35
+ }
36
+ };
37
+ return (root) => {
38
+ if (!paths.length) {
39
+ return root;
40
+ }
41
+ paths.forEach((path) => {
42
+ vis(root, path);
43
+ });
44
+ return root;
45
+ };
46
+ }
47
+ function buildReversibleRedactText({ id, type, key, timestamp } = {}) {
48
+ if (!id) {
49
+ return RedactedText;
50
+ }
51
+ if (timestamp === true) {
52
+ timestamp = Date.now();
53
+ }
54
+ return `[redacted ${id}]`;
55
+ }
56
+ export function isRedactedText(v) {
57
+ return v === RedactedText || typeof v === "string" && v.startsWith("[redacted ") && v.endsWith("]");
58
+ }
59
+ //# sourceMappingURL=buildRedactorFormSchema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/buildRedactorFormSchema.ts"],"sourcesContent":["import { forEachJsonSchema, type JsonSchemaDef } from '../jsonschema';\nimport { toJsonSchema, type TypeSchema } from '../schema';\n\nexport const RedactedText = '[redacted]';\n\nexport function buildRedactorFormSchema(\n\tts: TypeSchema,\n\t{\n\t\tshouldRedact = (schema) => schema['x-sensitive'] === true,\n\t\treplacer = () => RedactedText,\n\t}: {\n\t\tshouldRedact?: (schema: JsonSchemaDef) => boolean;\n\t\treplacer?: (key: string, value: any) => any;\n\t},\n) {\n\tlet js = toJsonSchema(ts);\n\n\tlet paths: string[][] = [];\n\n\tforEachJsonSchema(js, (js, { path }) => {\n\t\tif (shouldRedact(js)) {\n\t\t\tpaths.push(path);\n\t\t}\n\t});\n\tconst vis = (root: any, path: string[]) => {\n\t\tswitch (root) {\n\t\t\tcase null:\n\t\t\tcase undefined:\n\t\t\t\treturn;\n\t\t}\n\n\t\tlet c = root;\n\t\tfor (let i = 0; i < path.length; i++) {\n\t\t\tlet k = path[i];\n\t\t\tif (c && typeof c === 'object' && k in c) {\n\t\t\t\tlet v = c[k];\n\t\t\t\tif (path.length === 1) {\n\t\t\t\t\tc[k] = replacer(k, v);\n\t\t\t\t} else if (Array.isArray(v)) {\n\t\t\t\t\tfor (let vv of v) {\n\t\t\t\t\t\tvis(vv, path.slice(i + 1));\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tvis(v, path.slice(i + 1));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\n\treturn (root: any) => {\n\t\tif (!paths.length) {\n\t\t\treturn root;\n\t\t}\n\n\t\tpaths.forEach((path) => {\n\t\t\tvis(root, path);\n\t\t});\n\n\t\treturn root;\n\t};\n}\n\nfunction buildReversibleRedactText({\n\tid,\n\ttype,\n\tkey,\n\ttimestamp,\n}: {\n\tid?: string | number;\n\ttype?: string;\n\tkey?: string;\n\ttimestamp?: number | boolean;\n} = {}) {\n\tif (!id) {\n\t\treturn RedactedText;\n\t}\n\tif (timestamp === true) {\n\t\ttimestamp = Date.now();\n\t}\n\treturn `[redacted ${id}]`;\n}\n\nexport function isRedactedText(v: any) {\n\treturn v === RedactedText || (typeof v === 'string' && v.startsWith('[redacted ') && v.endsWith(']'));\n}\n"],"names":["forEachJsonSchema","toJsonSchema","RedactedText","buildRedactorFormSchema","ts","shouldRedact","schema","replacer","js","paths","path","push","vis","root","undefined","c","i","length","k","v","Array","isArray","vv","slice","forEach","buildReversibleRedactText","id","type","key","timestamp","Date","now","isRedactedText","startsWith","endsWith"],"mappings":"AAAA,SAASA,iBAAiB,QAA4B,gBAAgB;AACtE,SAASC,YAAY,QAAyB,YAAY;AAE1D,OAAO,MAAMC,eAAe,aAAa;AAEzC,OAAO,SAASC,wBACfC,EAAc,EACd,EACCC,eAAe,CAACC,SAAWA,MAAM,CAAC,cAAc,KAAK,IAAI,EACzDC,WAAW,IAAML,YAAY,EAI7B;IAED,IAAIM,KAAKP,aAAaG;IAEtB,IAAIK,QAAoB,EAAE;IAE1BT,kBAAkBQ,IAAI,CAACA,IAAI,EAAEE,IAAI,EAAE;QAClC,IAAIL,aAAaG,KAAK;YACrBC,MAAME,IAAI,CAACD;QACZ;IACD;IACA,MAAME,MAAM,CAACC,MAAWH;QACvB,OAAQG;YACP,KAAK;YACL,KAAKC;gBACJ;QACF;QAEA,IAAIC,IAAIF;QACR,IAAK,IAAIG,IAAI,GAAGA,IAAIN,KAAKO,MAAM,EAAED,IAAK;YACrC,IAAIE,IAAIR,IAAI,CAACM,EAAE;YACf,IAAID,KAAK,OAAOA,MAAM,YAAYG,KAAKH,GAAG;gBACzC,IAAII,IAAIJ,CAAC,CAACG,EAAE;gBACZ,IAAIR,KAAKO,MAAM,KAAK,GAAG;oBACtBF,CAAC,CAACG,EAAE,GAAGX,SAASW,GAAGC;gBACpB,OAAO,IAAIC,MAAMC,OAAO,CAACF,IAAI;oBAC5B,KAAK,IAAIG,MAAMH,EAAG;wBACjBP,IAAIU,IAAIZ,KAAKa,KAAK,CAACP,IAAI;oBACxB;gBACD,OAAO;oBACNJ,IAAIO,GAAGT,KAAKa,KAAK,CAACP,IAAI;gBACvB;YACD;QACD;IACD;IAEA,OAAO,CAACH;QACP,IAAI,CAACJ,MAAMQ,MAAM,EAAE;YAClB,OAAOJ;QACR;QAEAJ,MAAMe,OAAO,CAAC,CAACd;YACdE,IAAIC,MAAMH;QACX;QAEA,OAAOG;IACR;AACD;AAEA,SAASY,0BAA0B,EAClCC,EAAE,EACFC,IAAI,EACJC,GAAG,EACHC,SAAS,EAMT,GAAG,CAAC,CAAC;IACL,IAAI,CAACH,IAAI;QACR,OAAOxB;IACR;IACA,IAAI2B,cAAc,MAAM;QACvBA,YAAYC,KAAKC,GAAG;IACrB;IACA,OAAO,CAAC,UAAU,EAAEL,GAAG,CAAC,CAAC;AAC1B;AAEA,OAAO,SAASM,eAAeb,CAAM;IACpC,OAAOA,MAAMjB,gBAAiB,OAAOiB,MAAM,YAAYA,EAAEc,UAAU,CAAC,iBAAiBd,EAAEe,QAAQ,CAAC;AACjG"}
@@ -1,20 +1,21 @@
1
- export function getEstimateProcessTime(param) {
2
- var total = param.total, processed = param.processed, startTime = param.startTime, _param_elapsed = param.elapsed, elapsed = _param_elapsed === void 0 ? startTime ? (Date.now() - startTime.getTime()) / 1000 : undefined : _param_elapsed;
1
+ export function getEstimateProcessTime({ total, processed, startTime, elapsed = startTime ? (Date.now() - startTime.getTime()) / 1000 : undefined }) {
3
2
  if (typeof total !== 'number' || typeof processed !== 'number' || !elapsed || processed === 0 || processed >= total) {
4
3
  return undefined;
5
4
  }
6
- var now = new Date();
7
- var rate = processed / elapsed;
5
+ const now = new Date();
6
+ const rate = processed / elapsed;
8
7
  if (rate === 0) {
9
8
  return undefined;
10
9
  }
11
- var remaining = total - processed;
12
- var eta = Math.round(remaining / rate);
13
- var endTime = new Date(now.getTime() + eta * 1000);
10
+ const remaining = total - processed;
11
+ const eta = Math.round(remaining / rate);
12
+ const endTime = new Date(now.getTime() + eta * 1000);
14
13
  return {
15
- eta: eta,
16
- elapsed: elapsed,
17
- endTime: endTime,
18
- rate: rate
14
+ eta,
15
+ elapsed,
16
+ endTime,
17
+ rate
19
18
  };
20
19
  }
20
+
21
+ //# sourceMappingURL=getEstimateProcessTime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/getEstimateProcessTime.ts"],"sourcesContent":["type EstimateProcessTimeResult = {\n\teta: number; // estimated time of arrival in seconds\n\telapsed: number; // in seconds\n\tendTime: Date; // estimated end time\n\trate: number; // rate of processing in items per second\n};\n\nexport function getEstimateProcessTime({\n\ttotal,\n\tprocessed,\n\tstartTime,\n\telapsed = startTime ? (Date.now() - startTime.getTime()) / 1000 : undefined,\n}: {\n\ttotal?: number;\n\tprocessed?: number;\n\tstartTime?: Date;\n\telapsed?: number; // in seconds\n}): EstimateProcessTimeResult | undefined {\n\tif (typeof total !== 'number' || typeof processed !== 'number' || !elapsed || processed === 0 || processed >= total) {\n\t\treturn undefined;\n\t}\n\tconst now = new Date();\n\tconst rate = processed / elapsed;\n\tif (rate === 0) {\n\t\treturn undefined;\n\t}\n\tconst remaining = total - processed;\n\tconst eta = Math.round(remaining / rate);\n\tconst endTime = new Date(now.getTime() + eta * 1000);\n\treturn {\n\t\teta,\n\t\telapsed,\n\t\tendTime,\n\t\trate,\n\t};\n}\n"],"names":["getEstimateProcessTime","total","processed","startTime","elapsed","Date","now","getTime","undefined","rate","remaining","eta","Math","round","endTime"],"mappings":"AAOA,OAAO,SAASA,uBAAuB,EACtCC,KAAK,EACLC,SAAS,EACTC,SAAS,EACTC,UAAUD,YAAY,AAACE,CAAAA,KAAKC,GAAG,KAAKH,UAAUI,OAAO,EAAC,IAAK,OAAOC,SAAS,EAM3E;IACA,IAAI,OAAOP,UAAU,YAAY,OAAOC,cAAc,YAAY,CAACE,WAAWF,cAAc,KAAKA,aAAaD,OAAO;QACpH,OAAOO;IACR;IACA,MAAMF,MAAM,IAAID;IAChB,MAAMI,OAAOP,YAAYE;IACzB,IAAIK,SAAS,GAAG;QACf,OAAOD;IACR;IACA,MAAME,YAAYT,QAAQC;IAC1B,MAAMS,MAAMC,KAAKC,KAAK,CAACH,YAAYD;IACnC,MAAMK,UAAU,IAAIT,KAAKC,IAAIC,OAAO,KAAKI,MAAM;IAC/C,OAAO;QACNA;QACAP;QACAU;QACAL;IACD;AACD"}
@@ -1 +1,4 @@
1
1
  export { getEstimateProcessTime } from "./getEstimateProcessTime.js";
2
+ export { buildRedactorFormSchema } from "./buildRedactorFormSchema.js";
3
+ export { buildBaseUrl } from "./buildBaseUrl.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/index.ts"],"sourcesContent":["export { getEstimateProcessTime } from './getEstimateProcessTime';\n\nexport { buildRedactorFormSchema } from './buildRedactorFormSchema';\n\nexport { buildBaseUrl } from './buildBaseUrl';\n"],"names":["getEstimateProcessTime","buildRedactorFormSchema","buildBaseUrl"],"mappings":"AAAA,SAASA,sBAAsB,QAAQ,2BAA2B;AAElE,SAASC,uBAAuB,QAAQ,4BAA4B;AAEpE,SAASC,YAAY,QAAQ,iBAAiB"}
@@ -0,0 +1,12 @@
1
+ import { maybeFunction } from "@wener/utils";
2
+ export function resolveFeatureOptions(value, defaultValue) {
3
+ if (value === false) {
4
+ return undefined;
5
+ }
6
+ if (value === true || value === undefined || value === null) {
7
+ return maybeFunction(defaultValue);
8
+ }
9
+ return value;
10
+ }
11
+
12
+ //# sourceMappingURL=resolveFeatureOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/utils/resolveFeatureOptions.ts"],"sourcesContent":["import { maybeFunction, type MaybeFunction } from '@wener/utils';\n\nexport function resolveFeatureOptions<T>(\n\tvalue: boolean | T | undefined | null,\n\tdefaultValue: MaybeFunction<T>,\n): T | undefined {\n\tif (value === false) {\n\t\treturn undefined;\n\t}\n\tif (value === true || value === undefined || value === null) {\n\t\treturn maybeFunction(defaultValue);\n\t}\n\treturn value;\n}\n"],"names":["maybeFunction","resolveFeatureOptions","value","defaultValue","undefined"],"mappings":"AAAA,SAASA,aAAa,QAA4B,eAAe;AAEjE,OAAO,SAASC,sBACfC,KAAqC,EACrCC,YAA8B;IAE9B,IAAID,UAAU,OAAO;QACpB,OAAOE;IACR;IACA,IAAIF,UAAU,QAAQA,UAAUE,aAAaF,UAAU,MAAM;QAC5D,OAAOF,cAAcG;IACtB;IACA,OAAOD;AACR"}