@aastar/sdk 0.14.0 → 0.16.6

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 (656) hide show
  1. package/.eslintrc.cjs +30 -0
  2. package/.gitmodules +9 -0
  3. package/README.md +299 -0
  4. package/aastar-sdk.code-workspace +14 -0
  5. package/abis/BLSAggregator.json +572 -0
  6. package/abis/BLSValidator.json +39 -0
  7. package/abis/DVTValidator.json +383 -0
  8. package/abis/Eip7702Support.json +24 -0
  9. package/abis/EntryPoint.json +1379 -0
  10. package/abis/GToken.json +510 -0
  11. package/abis/GTokenStaking.json +918 -0
  12. package/abis/LegacyAccount.json +625 -0
  13. package/abis/MySBT.json +1547 -0
  14. package/abis/Paymaster.json +1192 -0
  15. package/abis/PaymasterFactory.json +637 -0
  16. package/abis/PaymasterV4_2.json +1193 -0
  17. package/abis/Registry.json +1677 -0
  18. package/abis/ReputationSystem.json +659 -0
  19. package/abis/SenderCreator.json +99 -0
  20. package/abis/Simple7702Account.json +395 -0
  21. package/abis/SimpleAccount.json +625 -0
  22. package/abis/SimpleAccountFactory.json +108 -0
  23. package/abis/SimpleAccountFactoryV08.json +87 -0
  24. package/abis/SimpleAccountV08.json +557 -0
  25. package/abis/SuperPaymaster.json +1568 -0
  26. package/abis/UserOperationLib.json +57 -0
  27. package/abis/aPNTs.json +1160 -0
  28. package/abis/xPNTsFactory.json +715 -0
  29. package/abis/xPNTsToken.json +1160 -0
  30. package/config/networks/README.md +54 -0
  31. package/config/networks/mainnet.env.example +39 -0
  32. package/config/networks/optimism-sepolia.env.example +35 -0
  33. package/config/networks/optimism.env.example +36 -0
  34. package/config/networks/sepolia.env.example +36 -0
  35. package/config.anvil.json +1 -0
  36. package/config.sepolia.json +1 -0
  37. package/config.test.json +27 -0
  38. package/data/experiment_data.csv +36 -0
  39. package/data/industry_baseline_2025-12-23.json +154 -0
  40. package/data/industry_baseline_latest.json +154 -0
  41. package/docs/ABI_Change_Tracking_Workflow.md +41 -0
  42. package/docs/ABI_MAINTENANCE_PLAN.md +132 -0
  43. package/docs/API_REFERENCE.md +956 -0
  44. package/docs/Configuration_Sync.md +47 -0
  45. package/docs/DAO_Mining_Distribution_Plan.md +522 -0
  46. package/docs/DEMO_REFACTOR_PLAN.md +289 -0
  47. package/docs/DOCUMENTATION_PLAN.md +455 -0
  48. package/docs/ENV_SEPOLIA_UPDATE.md +68 -0
  49. package/docs/Faucet_Gasless_Plan.md +56 -0
  50. package/docs/L2_BUSINESS_CLIENTS_PLAN.md +394 -0
  51. package/docs/L4_Manual_Test_CheatSheet.md +215 -0
  52. package/docs/Plan.md +266 -0
  53. package/docs/Regression_Testing_Guide.md +70 -0
  54. package/docs/SDK_ABI_COVERAGE.md +839 -0
  55. package/docs/SDK_COVERAGE_STRATEGY.md +397 -0
  56. package/docs/SDK_Optimization_Evaluation_Plan.md +51 -0
  57. package/docs/SDK_REGRESSION_AND_API_PLAN.md +98 -0
  58. package/docs/SDK_STAGE3_PLAN.md +151 -0
  59. package/docs/SEPOLIA_ENV_REFERENCE.md +51 -0
  60. package/docs/STAGE3.md +191 -0
  61. package/docs/Script_Comparison_Report.md +91 -0
  62. package/docs/Sepolia_Latest_Deployment.md +117 -0
  63. package/docs/TESTER_GUIDE_GASLESS.md +663 -0
  64. package/docs/TEST_COVERAGE_MATRIX.md +72 -0
  65. package/docs/TODO_SDK_COVERAGE.md +55 -0
  66. package/docs/USER_CASE_DESIGN.md +110 -0
  67. package/docs/Verifier_L4_Gasless_Plan.md +454 -0
  68. package/docs/api/@aastar/account.md +235 -0
  69. package/docs/api/@aastar/analytics.md +219 -0
  70. package/docs/api/@aastar/core.md +26830 -0
  71. package/docs/api/@aastar/dapp.md +130 -0
  72. package/docs/api/@aastar/identity.md +482 -0
  73. package/docs/api/@aastar/paymaster.md +1387 -0
  74. package/docs/api/@aastar/sdk/README.md +155 -0
  75. package/docs/api/@aastar/sdk/node.md +4044 -0
  76. package/docs/api/@aastar/tokens.md +1971 -0
  77. package/docs/api/README.md +10 -0
  78. package/docs/changelog.md +99 -0
  79. package/docs/examples/README.md +18 -0
  80. package/docs/examples/community-flow.md +28 -0
  81. package/docs/examples/enduser-flow.md +24 -0
  82. package/docs/examples/index.md +18 -0
  83. package/docs/examples/multi-chain.md +31 -0
  84. package/docs/examples/operator-flow.md +28 -0
  85. package/docs/guide/CLI_GUIDE.md +65 -0
  86. package/docs/guide/DOCUMENTATION_PLAN.md +455 -0
  87. package/docs/guide/Security-solution.md +106 -0
  88. package/docs/guide/TEST_COMMANDS.md +320 -0
  89. package/docs/guide/concepts/account-abstraction.md +95 -0
  90. package/docs/guide/concepts/rainbow-bridge.md +68 -0
  91. package/docs/guide/concepts/reputation.md +95 -0
  92. package/docs/guide/concepts/superpaymaster.md +141 -0
  93. package/docs/guide/getting-started.md +133 -0
  94. package/docs/guide/installation.md +40 -0
  95. package/docs/guide/paper-data-collection.md +69 -0
  96. package/docs/guide/quick-start.md +52 -0
  97. package/docs/guide/task_breakdown.md +121 -0
  98. package/docs/guide/use-cases/community-management.md +141 -0
  99. package/docs/guide/use-cases/gasless-transactions.md +71 -0
  100. package/docs/guide/use-cases/operator-staking.md +84 -0
  101. package/docs/guide/use-cases/yop.md +72 -0
  102. package/docs/old-solution.md +1078 -0
  103. package/docs/paper-data-collection.md +69 -0
  104. package/docs/refactor/2026-01-13-221242-trae-refactor.md +224 -0
  105. package/docs/refactor/2026-01-13-audit-analysis.md +96 -0
  106. package/docs/refactor/2026-01-13-audit-report-v0.16.2.md +76 -0
  107. package/docs/refactor/2026-01-13-audit-report-v0.17.0.md +74 -0
  108. package/docs/refactor/2026-01-13-cursor-refactor.md +511 -0
  109. package/docs/refactor/2026-01-13-refactor-plan.md +88 -0
  110. package/docs/refactor/2026-01-13-refactor-response-plan.md +77 -0
  111. package/docs/refactor/2026-01-13-refactor-review.md +39 -0
  112. package/docs/refactor/2026-01-13-sdk-enhancement-plan.md +120 -0
  113. package/docs/refactor/2026-01-14-audit-response.md +242 -0
  114. package/docs/refactor/2026-01-14-audit-summary.md +133 -0
  115. package/docs/refactor/cursor-2026-01-13-14-00-audit-report.md +267 -0
  116. package/docs/technical_plan.md +510 -0
  117. package/docs/zh/examples/community-flow.md +38 -0
  118. package/docs/zh/examples/complete-workflow.md +10 -0
  119. package/docs/zh/examples/enduser-flow.md +33 -0
  120. package/docs/zh/examples/index.md +18 -0
  121. package/docs/zh/examples/multi-chain.md +46 -0
  122. package/docs/zh/examples/operator-flow.md +37 -0
  123. package/docs/zh/guide/CLI_GUIDE.md +48 -0
  124. package/docs/zh/guide/DOCUMENTATION_PLAN.md +455 -0
  125. package/docs/zh/guide/Plan.md +266 -0
  126. package/docs/zh/guide/SDK_Optimization_Evaluation_Plan.md +51 -0
  127. package/docs/zh/guide/Security-solution.md +106 -0
  128. package/docs/zh/guide/TEST_COMMANDS.md +125 -0
  129. package/docs/zh/guide/TEST_COVERAGE_MATRIX.md +72 -0
  130. package/docs/zh/guide/concepts/account-abstraction.md +95 -0
  131. package/docs/zh/guide/concepts/rainbow-bridge.md +68 -0
  132. package/docs/zh/guide/concepts/reputation.md +95 -0
  133. package/docs/zh/guide/concepts/superpaymaster.md +141 -0
  134. package/docs/zh/guide/getting-started.md +133 -0
  135. package/docs/zh/guide/installation.md +107 -0
  136. package/docs/zh/guide/old-solution.md +1078 -0
  137. package/docs/zh/guide/paper-data-collection.md +69 -0
  138. package/docs/zh/guide/quick-start.md +134 -0
  139. package/docs/zh/guide/sdk-readme.md +253 -0
  140. package/docs/zh/guide/task_breakdown.md +76 -0
  141. package/docs/zh/guide/technical_plan.md +510 -0
  142. package/docs/zh/guide/use-cases/community-management.md +141 -0
  143. package/docs/zh/guide/use-cases/gasless-transactions.md +71 -0
  144. package/docs/zh/guide/use-cases/operator-staking.md +84 -0
  145. package/docs/zh/guide/use-cases/yop.md +72 -0
  146. package/env.template +32 -0
  147. package/examples/l1-api-demo.ts +184 -0
  148. package/examples/l2-clients-demo.ts +138 -0
  149. package/examples/l3-user-onboarding.ts +74 -0
  150. package/examples/prepare-gasless.ts +89 -0
  151. package/examples/sdk-demo/DEVELOPER_GUIDE.md +159 -0
  152. package/examples/sdk-demo/README.md +30 -0
  153. package/examples/sdk-demo/usage.ts +137 -0
  154. package/examples/simple-gasless-demo.ts +80 -0
  155. package/examples/simple-superpaymaster-demo.ts +96 -0
  156. package/ext/aastar-shared-config/.env.example +6 -0
  157. package/ext/aastar-shared-config/.github/workflows/check-secrets.yml +257 -0
  158. package/ext/aastar-shared-config/AGENTS.md +21 -0
  159. package/ext/aastar-shared-config/CHANGELOG.md +99 -0
  160. package/ext/aastar-shared-config/LICENSE +21 -0
  161. package/ext/aastar-shared-config/QUICK_START.md +215 -0
  162. package/ext/aastar-shared-config/README.md +412 -0
  163. package/ext/aastar-shared-config/SHARED_CONFIG_SUMMARY.md +273 -0
  164. package/ext/aastar-shared-config/check-locker-status.mjs +7 -0
  165. package/ext/aastar-shared-config/favicon.ico +0 -0
  166. package/ext/aastar-shared-config/generate-comparison-table.sh +67 -0
  167. package/ext/aastar-shared-config/package.json +46 -0
  168. package/ext/aastar-shared-config/pnpm-lock.yaml +1182 -0
  169. package/ext/aastar-shared-config/src/abis/BLSAggregator.json +1 -0
  170. package/ext/aastar-shared-config/src/abis/DVTValidator.json +1 -0
  171. package/ext/aastar-shared-config/src/abis/GToken.json +1 -0
  172. package/ext/aastar-shared-config/src/abis/GTokenStaking.json +1 -0
  173. package/ext/aastar-shared-config/src/abis/MySBT.json +1 -0
  174. package/ext/aastar-shared-config/src/abis/PaymasterFactory.json +1 -0
  175. package/ext/aastar-shared-config/src/abis/PaymasterV4.json +1098 -0
  176. package/ext/aastar-shared-config/src/abis/Registry.json +1 -0
  177. package/ext/aastar-shared-config/src/abis/SimpleAccount.json +557 -0
  178. package/ext/aastar-shared-config/src/abis/SimpleAccountFactory.json +87 -0
  179. package/ext/aastar-shared-config/src/abis/SuperPaymasterV2.json +1 -0
  180. package/ext/aastar-shared-config/src/abis/index.ts +45 -0
  181. package/ext/aastar-shared-config/src/abis/xPNTsFactory.json +1 -0
  182. package/ext/aastar-shared-config/src/abis/xPNTsToken.json +1 -0
  183. package/ext/aastar-shared-config/src/branding.ts +32 -0
  184. package/ext/aastar-shared-config/src/communities.ts +93 -0
  185. package/ext/aastar-shared-config/src/constants.ts +67 -0
  186. package/ext/aastar-shared-config/src/contract-addresses.ts +95 -0
  187. package/ext/aastar-shared-config/src/contract-versions.ts +374 -0
  188. package/ext/aastar-shared-config/src/contracts.ts +414 -0
  189. package/ext/aastar-shared-config/src/index.ts +14 -0
  190. package/ext/aastar-shared-config/src/networks.ts +117 -0
  191. package/ext/aastar-shared-config/sync-abis.sh +92 -0
  192. package/ext/aastar-shared-config/sync-versions.mjs +150 -0
  193. package/ext/aastar-shared-config/tsconfig.json +18 -0
  194. package/ext/aastar-shared-config/tsup.config.ts +10 -0
  195. package/ext/aastar-shared-config/verify-all.sh +207 -0
  196. package/ext/aastar-shared-config/verify-contracts.sh +85 -0
  197. package/ext/aastar-shared-config/verify-mysbt-v243.mjs +27 -0
  198. package/ext/aastar-shared-config/verify-onchain-versions.mjs +93 -0
  199. package/l4-setup.sh +11 -0
  200. package/lib/SHARED_CONFIG_REFERENCE.md +133 -0
  201. package/lib/shared-config/.env.example +6 -0
  202. package/lib/shared-config/.github/workflows/check-secrets.yml +257 -0
  203. package/lib/shared-config/AGENTS.md +21 -0
  204. package/lib/shared-config/CHANGELOG.md +99 -0
  205. package/lib/shared-config/LICENSE +21 -0
  206. package/lib/shared-config/QUICK_START.md +215 -0
  207. package/lib/shared-config/README.md +412 -0
  208. package/lib/shared-config/SHARED_CONFIG_SUMMARY.md +273 -0
  209. package/lib/shared-config/check-locker-status.mjs +7 -0
  210. package/lib/shared-config/favicon.ico +0 -0
  211. package/lib/shared-config/generate-comparison-table.sh +67 -0
  212. package/lib/shared-config/package.json +46 -0
  213. package/lib/shared-config/pnpm-lock.yaml +1182 -0
  214. package/lib/shared-config/src/abis/BLSAggregator.json +1 -0
  215. package/lib/shared-config/src/abis/DVTValidator.json +1 -0
  216. package/lib/shared-config/src/abis/GToken.json +1 -0
  217. package/lib/shared-config/src/abis/GTokenStaking.json +1 -0
  218. package/lib/shared-config/src/abis/MySBT.json +1 -0
  219. package/lib/shared-config/src/abis/PaymasterFactory.json +1 -0
  220. package/lib/shared-config/src/abis/PaymasterV4.json +1098 -0
  221. package/lib/shared-config/src/abis/Registry.json +1 -0
  222. package/lib/shared-config/src/abis/SimpleAccount.json +557 -0
  223. package/lib/shared-config/src/abis/SimpleAccountFactory.json +87 -0
  224. package/lib/shared-config/src/abis/SuperPaymasterV2.json +1 -0
  225. package/lib/shared-config/src/abis/index.ts +45 -0
  226. package/lib/shared-config/src/abis/xPNTsFactory.json +1 -0
  227. package/lib/shared-config/src/abis/xPNTsToken.json +1 -0
  228. package/lib/shared-config/src/branding.ts +32 -0
  229. package/lib/shared-config/src/communities.ts +93 -0
  230. package/lib/shared-config/src/constants.ts +67 -0
  231. package/lib/shared-config/src/contract-addresses.ts +95 -0
  232. package/lib/shared-config/src/contract-versions.ts +374 -0
  233. package/lib/shared-config/src/contracts.ts +414 -0
  234. package/lib/shared-config/src/index.ts +14 -0
  235. package/lib/shared-config/src/networks.ts +117 -0
  236. package/lib/shared-config/sync-abis.sh +92 -0
  237. package/lib/shared-config/sync-versions.mjs +150 -0
  238. package/lib/shared-config/tsconfig.json +18 -0
  239. package/lib/shared-config/tsup.config.ts +10 -0
  240. package/lib/shared-config/verify-all.sh +207 -0
  241. package/lib/shared-config/verify-contracts.sh +85 -0
  242. package/lib/shared-config/verify-mysbt-v243.mjs +27 -0
  243. package/lib/shared-config/verify-onchain-versions.mjs +93 -0
  244. package/package.json +58 -22
  245. package/packages/account/package.json +23 -0
  246. package/packages/account/src/accounts/simple.test.ts +93 -0
  247. package/packages/account/src/accounts/simple.ts +84 -0
  248. package/packages/account/src/eoa.test.ts +37 -0
  249. package/packages/account/src/eoa.ts +33 -0
  250. package/packages/account/src/index.test.ts +34 -0
  251. package/packages/account/src/index.ts +61 -0
  252. package/packages/account/tsconfig.json +11 -0
  253. package/packages/analytics/package.json +28 -0
  254. package/packages/analytics/src/index.ts +145 -0
  255. package/packages/analytics/tsconfig.json +11 -0
  256. package/packages/core/package.json +32 -0
  257. package/packages/core/scripts/audit-abi-coverage.ts +165 -0
  258. package/packages/core/scripts/debug-regex.ts +36 -0
  259. package/packages/core/src/abis/.abi-hashes.json +26 -0
  260. package/packages/core/src/abis/BLSAggregator.json +686 -0
  261. package/packages/core/src/abis/BLSValidator.json +42 -0
  262. package/packages/core/src/abis/DVTValidator.json +368 -0
  263. package/packages/core/src/abis/Eip7702Support.json +24 -0
  264. package/packages/core/src/abis/EntryPoint.json +1382 -0
  265. package/packages/core/src/abis/GToken.json +513 -0
  266. package/packages/core/src/abis/GTokenStaking.json +949 -0
  267. package/packages/core/src/abis/LegacyAccount.json +625 -0
  268. package/packages/core/src/abis/MySBT.json +1518 -0
  269. package/packages/core/src/abis/Paymaster.json +1143 -0
  270. package/packages/core/src/abis/PaymasterFactory.json +640 -0
  271. package/packages/core/src/abis/Registry.json +1942 -0
  272. package/packages/core/src/abis/ReputationSystem.json +699 -0
  273. package/packages/core/src/abis/SenderCreator.json +99 -0
  274. package/packages/core/src/abis/Simple7702Account.json +395 -0
  275. package/packages/core/src/abis/SimpleAccount.json +560 -0
  276. package/packages/core/src/abis/SimpleAccountFactory.json +111 -0
  277. package/packages/core/src/abis/SimpleAccountFactoryV08.json +87 -0
  278. package/packages/core/src/abis/SimpleAccountV08.json +557 -0
  279. package/packages/core/src/abis/SuperPaymaster.json +1781 -0
  280. package/packages/core/src/abis/UserOperationLib.json +57 -0
  281. package/packages/core/src/abis/abi.config.json +24 -0
  282. package/packages/core/src/abis/index.ts +104 -0
  283. package/packages/core/src/abis/xPNTsFactory.json +718 -0
  284. package/packages/core/src/abis/xPNTsToken.json +1280 -0
  285. package/packages/core/src/actions/StateValidator.test.ts +175 -0
  286. package/packages/core/src/actions/StateValidator.ts +253 -0
  287. package/packages/core/src/actions/account.test.ts +155 -0
  288. package/packages/core/src/actions/account.ts +179 -0
  289. package/packages/core/src/actions/aggregator.test.ts +88 -0
  290. package/packages/core/src/actions/aggregator.ts +41 -0
  291. package/packages/core/src/actions/dvt.test.ts +124 -0
  292. package/packages/core/src/actions/dvt.ts +53 -0
  293. package/packages/core/src/actions/entryPoint.test.ts +176 -0
  294. package/packages/core/src/actions/entryPoint.ts +266 -0
  295. package/packages/core/src/actions/factory.test.ts +250 -0
  296. package/packages/core/src/actions/factory.ts +613 -0
  297. package/packages/core/src/actions/faucet.test.ts +202 -0
  298. package/packages/core/src/actions/faucet.ts +421 -0
  299. package/packages/core/src/actions/gtokenExtended.test.ts +162 -0
  300. package/packages/core/src/actions/gtokenExtended.ts +153 -0
  301. package/packages/core/src/actions/index.ts +18 -0
  302. package/packages/core/src/actions/paymasterV4.test.ts +209 -0
  303. package/packages/core/src/actions/paymasterV4.ts +455 -0
  304. package/packages/core/src/actions/registry.test.ts +443 -0
  305. package/packages/core/src/actions/registry.ts +860 -0
  306. package/packages/core/src/actions/reputation.test.ts +225 -0
  307. package/packages/core/src/actions/reputation.ts +378 -0
  308. package/packages/core/src/actions/sbt.test.ts +322 -0
  309. package/packages/core/src/actions/sbt.ts +681 -0
  310. package/packages/core/src/actions/staking.test.ts +273 -0
  311. package/packages/core/src/actions/staking.ts +421 -0
  312. package/packages/core/src/actions/superPaymaster.test.ts +356 -0
  313. package/packages/core/src/actions/superPaymaster.ts +828 -0
  314. package/packages/core/src/actions/tokens.test.ts +60 -0
  315. package/packages/core/src/actions/tokens.ts +527 -0
  316. package/packages/core/src/actions/validators.test.ts +239 -0
  317. package/packages/core/src/actions/validators.ts +590 -0
  318. package/packages/core/src/branding.ts +32 -0
  319. package/packages/core/src/clients/BaseClient.ts +78 -0
  320. package/packages/core/src/clients/types.ts +69 -0
  321. package/packages/core/src/clients.ts +13 -0
  322. package/packages/core/src/communities.ts +93 -0
  323. package/packages/core/src/config/ContractConfigManager.ts +63 -0
  324. package/packages/core/src/constants.ts +145 -0
  325. package/packages/core/src/contract-addresses.ts +125 -0
  326. package/packages/core/src/contracts.test.ts +58 -0
  327. package/packages/core/src/contracts.ts +414 -0
  328. package/packages/core/src/crypto/blsSigner.ts +124 -0
  329. package/packages/core/src/crypto/index.ts +1 -0
  330. package/packages/core/src/index.ts +22 -0
  331. package/packages/core/src/networks.ts +127 -0
  332. package/packages/core/src/requirementChecker.test.ts +71 -0
  333. package/packages/core/src/requirementChecker.ts +187 -0
  334. package/packages/core/src/roles.test.ts +34 -0
  335. package/packages/core/src/roles.ts +255 -0
  336. package/packages/core/src/utils/validation.test.ts +50 -0
  337. package/packages/core/src/utils/validation.ts +66 -0
  338. package/packages/core/src/utils.ts +23 -0
  339. package/packages/core/tsconfig.json +12 -0
  340. package/packages/core/vitest.config.ts +14 -0
  341. package/packages/dapp/package.json +30 -0
  342. package/packages/dapp/src/index.ts +4 -0
  343. package/packages/dapp/src/ui/components/EvaluationPanel.tsx +40 -0
  344. package/packages/dapp/src/ui/hooks/useCreditScore.ts +44 -0
  345. package/packages/dapp/src/ui/hooks/useSuperPaymaster.ts +31 -0
  346. package/packages/dapp/src/ui/index.ts +22 -0
  347. package/packages/dapp/tsconfig.json +12 -0
  348. package/packages/identity/package.json +25 -0
  349. package/packages/identity/src/index.ts +114 -0
  350. package/packages/identity/src/mysbt.ts +48 -0
  351. package/packages/identity/tsconfig.json +11 -0
  352. package/packages/paymaster/package.json +25 -0
  353. package/packages/paymaster/src/SuperPaymaster/index.ts +168 -0
  354. package/packages/paymaster/src/V4/PaymasterClient.test.ts +114 -0
  355. package/packages/paymaster/src/V4/PaymasterClient.ts +385 -0
  356. package/packages/paymaster/src/V4/PaymasterOperator.test.ts +80 -0
  357. package/packages/paymaster/src/V4/PaymasterOperator.ts +282 -0
  358. package/packages/paymaster/src/V4/PaymasterUtils.test.ts +54 -0
  359. package/packages/paymaster/src/V4/PaymasterUtils.ts +185 -0
  360. package/packages/paymaster/src/V4/SuperPaymasterClient.test.ts +79 -0
  361. package/packages/paymaster/src/V4/SuperPaymasterClient.ts +123 -0
  362. package/packages/paymaster/src/V4/index.ts +4 -0
  363. package/packages/paymaster/src/index.ts +5 -0
  364. package/packages/paymaster/tsconfig.json +11 -0
  365. package/packages/sdk/README.md +150 -0
  366. package/packages/sdk/aastar/package.json +21 -0
  367. package/packages/sdk/aastar/src/index.ts +3 -0
  368. package/packages/sdk/aastar/tsconfig.json +7 -0
  369. package/packages/sdk/coverage_output.txt +393 -0
  370. package/packages/sdk/coverage_output_final.txt +739 -0
  371. package/packages/sdk/coverage_output_final_v2.txt +722 -0
  372. package/packages/sdk/coverage_output_final_v3.txt +722 -0
  373. package/packages/sdk/examples/config.json +1 -0
  374. package/packages/sdk/examples/regression_test.ts +106 -0
  375. package/packages/sdk/package.json +44 -0
  376. package/packages/sdk/src/clients/ExperimentClient.test.ts +65 -0
  377. package/packages/sdk/src/clients/ExperimentClient.ts +80 -0
  378. package/packages/sdk/src/clients/admin.test.ts +98 -0
  379. package/packages/sdk/src/clients/admin.ts +154 -0
  380. package/packages/sdk/src/clients/clients.test.ts +104 -0
  381. package/packages/sdk/src/clients/community.test.ts +118 -0
  382. package/packages/sdk/src/clients/community.ts +337 -0
  383. package/packages/sdk/src/clients/endUser.test.ts +221 -0
  384. package/packages/sdk/src/clients/endUser.ts +551 -0
  385. package/packages/sdk/src/clients/operator.test.ts +162 -0
  386. package/packages/sdk/src/clients/operator.ts +355 -0
  387. package/packages/sdk/src/errors/AAStarError.test.ts +92 -0
  388. package/packages/sdk/src/errors/AAStarError.ts +70 -0
  389. package/packages/sdk/src/errors/decoder.test.ts +107 -0
  390. package/packages/sdk/src/errors/decoder.ts +91 -0
  391. package/packages/sdk/src/index.ts +23 -0
  392. package/packages/sdk/src/node/index.ts +8 -0
  393. package/packages/sdk/src/types/result.ts +29 -0
  394. package/packages/sdk/src/utils/errorHandler.test.ts +102 -0
  395. package/packages/sdk/src/utils/errorHandler.ts +167 -0
  396. package/packages/sdk/src/utils/eventDecoder.test.ts +56 -0
  397. package/packages/sdk/src/utils/eventDecoder.ts +66 -0
  398. package/packages/sdk/src/utils/funding.test.ts +117 -0
  399. package/packages/sdk/src/utils/funding.ts +280 -0
  400. package/packages/sdk/src/utils/keys.test.ts +105 -0
  401. package/packages/sdk/src/utils/keys.ts +174 -0
  402. package/packages/sdk/src/utils/roleData.test.ts +85 -0
  403. package/packages/sdk/src/utils/roleData.ts +140 -0
  404. package/packages/sdk/src/utils/testScenarios.test.ts +79 -0
  405. package/packages/sdk/src/utils/testScenarios.ts +128 -0
  406. package/packages/sdk/src/utils/userOp.test.ts +190 -0
  407. package/packages/sdk/src/utils/userOp.ts +265 -0
  408. package/packages/sdk/tests/scenarios/01_onboard_community.ts +62 -0
  409. package/packages/sdk/tests/scenarios/02_onboard_operator.ts +109 -0
  410. package/packages/sdk/tests/scenarios/03_onboard_user.ts +53 -0
  411. package/packages/sdk/tests/scenarios/04_gasless_tx_flow.ts +68 -0
  412. package/packages/sdk/tests/scenarios/check_entrypoint.ts +19 -0
  413. package/packages/sdk/tests/scenarios/check_initialization.ts +65 -0
  414. package/packages/sdk/tests/scenarios/debug_addresses.ts +26 -0
  415. package/packages/sdk/tests/scenarios/diagnose_scenario4.ts +55 -0
  416. package/packages/sdk/tests/scenarios/setup.ts +33 -0
  417. package/packages/sdk/tests/scenarios/test_entrypoint_nonce.ts +46 -0
  418. package/packages/sdk/tsconfig.json +11 -0
  419. package/packages/tokens/package.json +25 -0
  420. package/packages/tokens/src/index.ts +273 -0
  421. package/packages/tokens/tsconfig.json +11 -0
  422. package/pnpm-workspace.yaml +2 -0
  423. package/run_l4_gasless_regression.sh +79 -0
  424. package/run_sdk_regression.sh +238 -0
  425. package/scripts/00_utils.ts +59 -0
  426. package/scripts/00_verify_phase1.ts +130 -0
  427. package/scripts/01_1_prep_gtoken.ts +81 -0
  428. package/scripts/01_2_register_sbt.ts +88 -0
  429. package/scripts/01_3_prep_tokens_paymaster.ts +102 -0
  430. package/scripts/01_prepare_all.ts +222 -0
  431. package/scripts/02_test_eoa.ts +53 -0
  432. package/scripts/03_test_standard_aa.ts +68 -0
  433. package/scripts/04_0_check_deploy.ts +24 -0
  434. package/scripts/04_1_check_allowance.ts +44 -0
  435. package/scripts/04_2_construct_verify.ts +96 -0
  436. package/scripts/04_3_verify_estimate.ts +66 -0
  437. package/scripts/04_4_verify_pack.ts +74 -0
  438. package/scripts/04_test_paymaster_v4.ts +60 -0
  439. package/scripts/05_1_deposit.ts +48 -0
  440. package/scripts/05_test_superpaymaster.ts +58 -0
  441. package/scripts/06_local_test_v3_admin.ts +163 -0
  442. package/scripts/06_local_test_v3_execution.ts +132 -0
  443. package/scripts/06_local_test_v3_full.ts +490 -0
  444. package/scripts/06_local_test_v3_funding.ts +124 -0
  445. package/scripts/06_local_test_v3_reputation.ts +234 -0
  446. package/scripts/07_local_test_v3_audit.ts +181 -0
  447. package/scripts/08_local_test_registry_lifecycle.ts +382 -0
  448. package/scripts/09_local_test_community_lifecycle.ts +385 -0
  449. package/scripts/09_local_test_community_simple.ts +108 -0
  450. package/scripts/09_scenario_bread_independent.ts +247 -0
  451. package/scripts/10_scenario_super_shared.ts +196 -0
  452. package/scripts/10_test_protocol_admin_full.ts +173 -0
  453. package/scripts/11_scenario_hacker_defense.ts +104 -0
  454. package/scripts/11_test_core_flows_full.ts +157 -0
  455. package/scripts/12_test_slash_mechanism.ts +205 -0
  456. package/scripts/12_test_slash_queries.ts +83 -0
  457. package/scripts/12_test_staking_exit.ts +152 -0
  458. package/scripts/12_test_staking_slash.ts +301 -0
  459. package/scripts/12_test_tier2_slash.ts +139 -0
  460. package/scripts/13_test_sbt_burn_linkage.ts +266 -0
  461. package/scripts/14_test_credit_redesign.ts +266 -0
  462. package/scripts/15_test_bls_full.ts +148 -0
  463. package/scripts/15_test_dvt_bls_full.ts +140 -0
  464. package/scripts/17_test_cross_role_collaboration.ts +95 -0
  465. package/scripts/18_sdk_e2e_verification.ts +67 -0
  466. package/scripts/18_test_dvt_sdk_flow.ts +138 -0
  467. package/scripts/18_test_lifecycle_completion.ts +144 -0
  468. package/scripts/19_sdk_experiment_runner.ts +114 -0
  469. package/scripts/19_sdk_experiment_runner.ts.backup +391 -0
  470. package/scripts/20_sdk_full_capability.ts +93 -0
  471. package/scripts/20_test_superpaymaster_new_apis.ts +193 -0
  472. package/scripts/21_test_paymasterv4_complete.ts +341 -0
  473. package/scripts/22_test_bls_signing.ts +260 -0
  474. package/scripts/23_test_middleware.ts +197 -0
  475. package/scripts/98_edge_reentrancy.ts +85 -0
  476. package/scripts/99_bug_hunting_fast.ts +99 -0
  477. package/scripts/analyze_abi_coverage.ts +169 -0
  478. package/scripts/check-admin.ts +95 -0
  479. package/scripts/check-jason-status.ts +184 -0
  480. package/scripts/check-roles.ts +36 -0
  481. package/scripts/clear-nonce.ts +47 -0
  482. package/scripts/collect_industry_baseline.ts +236 -0
  483. package/scripts/complete-jack-superpaymaster.ts +171 -0
  484. package/scripts/complete_env_config.ts +97 -0
  485. package/scripts/debug-addr.ts +43 -0
  486. package/scripts/debug-community-registration.ts +92 -0
  487. package/scripts/debug-deploy-v4.ts +116 -0
  488. package/scripts/debug-paymaster.ts +127 -0
  489. package/scripts/debug-register-role.ts +101 -0
  490. package/scripts/debug-version.ts +71 -0
  491. package/scripts/debug_account_c.ts +43 -0
  492. package/scripts/debug_bls.ts +58 -0
  493. package/scripts/debug_config_v036.ts +13 -0
  494. package/scripts/debug_contracts.ts +2 -0
  495. package/scripts/debug_env.ts +69 -0
  496. package/scripts/debug_find_paymaster.ts +98 -0
  497. package/scripts/debug_isolated_registration.ts +256 -0
  498. package/scripts/debug_paymaster_config.ts +19 -0
  499. package/scripts/debug_pim_addr.ts +23 -0
  500. package/scripts/debug_pm_status.ts +51 -0
  501. package/scripts/debug_registry.ts +39 -0
  502. package/scripts/debug_registry_setup.ts +129 -0
  503. package/scripts/debug_sanity.ts +32 -0
  504. package/scripts/debug_shared_config.ts +10 -0
  505. package/scripts/debug_token_compat.ts +51 -0
  506. package/scripts/debug_tokens.ts +41 -0
  507. package/scripts/debug_vcheck.ts +33 -0
  508. package/scripts/deploy-sync.ts +104 -0
  509. package/scripts/deploy_and_init_v3.sh +134 -0
  510. package/scripts/deploy_anvil_accounts.ts +144 -0
  511. package/scripts/deploy_paymaster_v4.ts +139 -0
  512. package/scripts/deploy_test_accounts.ts +401 -0
  513. package/scripts/deprecated/check_aa_entrypoint.ts +29 -0
  514. package/scripts/deprecated/check_paymaster_deposits.ts +45 -0
  515. package/scripts/deprecated/debug_aoa_function.ts +28 -0
  516. package/scripts/deprecated/debug_aoa_issue.ts +16 -0
  517. package/scripts/deprecated/debug_pimlico_aa23.ts +40 -0
  518. package/scripts/deprecated/debug_summary.ts +34 -0
  519. package/scripts/deprecated/deploy_v07_aa.ts +99 -0
  520. package/scripts/deprecated/fix_all_issues.ts +61 -0
  521. package/scripts/deprecated/fund_bpnts.ts +52 -0
  522. package/scripts/deprecated/get_factory_addresses.ts +28 -0
  523. package/scripts/deprecated/recheck_pim.ts +34 -0
  524. package/scripts/dev_tools/extract_abis.sh +151 -0
  525. package/scripts/dev_tools/extract_addresses_to_env.sh +67 -0
  526. package/scripts/dev_tools/final_safe_harmonize.py +77 -0
  527. package/scripts/dev_tools/safe_harmonize.py +107 -0
  528. package/scripts/dev_tools/surgical_harmonize.py +83 -0
  529. package/scripts/experiment/stage3/SETUP_GUIDE.md +258 -0
  530. package/scripts/experiment/stage3/archived_scripts/00_token_distribution.ts +78 -0
  531. package/scripts/experiment/stage3/archived_scripts/01_dao_launch.ts +96 -0
  532. package/scripts/experiment/stage3/archived_scripts/01b_bread_launch.ts +112 -0
  533. package/scripts/experiment/stage3/archived_scripts/02_operator_setup.ts +84 -0
  534. package/scripts/experiment/stage3/archived_scripts/02b_operator_b_setup.ts +104 -0
  535. package/scripts/experiment/stage3/archived_scripts/02c_finalize_operators.ts +86 -0
  536. package/scripts/experiment/stage3/archived_scripts/02d_operator_collateral.ts +89 -0
  537. package/scripts/experiment/stage3/archived_scripts/03_user_onboarding.ts +83 -0
  538. package/scripts/experiment/stage3/archived_scripts/03b_deploy_aa_account.ts +61 -0
  539. package/scripts/experiment/stage3/archived_scripts/03c_aa_onboarding.ts +104 -0
  540. package/scripts/experiment/stage3/archived_scripts/03d_mint_points.ts +60 -0
  541. package/scripts/experiment/stage3/archived_scripts/04_benchmarking.ts +100 -0
  542. package/scripts/experiment/stage3/archived_scripts/05_multi_op_setup.ts +149 -0
  543. package/scripts/experiment/stage3/archived_scripts/README.md +58 -0
  544. package/scripts/experiment/stage3/archived_scripts/check_roles.ts +29 -0
  545. package/scripts/experiment/stage3/archived_scripts/decode_error.ts +23 -0
  546. package/scripts/experiment/stage3/archived_scripts/fund_user.ts +51 -0
  547. package/scripts/experiment/stage3/archived_scripts/gen_b_key.ts +3 -0
  548. package/scripts/experiment/stage3/archived_scripts/gen_keys.ts +4 -0
  549. package/scripts/experiment/stage3/archived_scripts/setup.ts +105 -0
  550. package/scripts/experiment/stage3/archived_scripts/test_key.ts +4 -0
  551. package/scripts/experiment/stage3/archived_scripts/verify_state.ts +59 -0
  552. package/scripts/experiment/stage3/refactored/00_token_distribution.ts +46 -0
  553. package/scripts/experiment/stage3/refactored/02_operator_setup.ts +65 -0
  554. package/scripts/experiment/stage3/refactored/03_user_onboarding.ts +68 -0
  555. package/scripts/experiment/stage3/refactored/05_multi_op_setup.ts +63 -0
  556. package/scripts/experiment/stage3/refactored/README.md +71 -0
  557. package/scripts/extract-docs.sh +141 -0
  558. package/scripts/fund-jack.ts +38 -0
  559. package/scripts/generate_env_from_deployment.ts +109 -0
  560. package/scripts/inspect-anni-token.ts +116 -0
  561. package/scripts/inspect-factory.ts +83 -0
  562. package/scripts/l4-paymasterv4-transfer-test.ts +228 -0
  563. package/scripts/l4-setup.ts +453 -0
  564. package/scripts/l4-state.json +80 -0
  565. package/scripts/phase1_verify_contracts.ts +207 -0
  566. package/scripts/pre_test_sync.ts +83 -0
  567. package/scripts/prepare_sepolia_resources.ts +154 -0
  568. package/scripts/publish_all.sh +39 -0
  569. package/scripts/query-jack-token.ts +22 -0
  570. package/scripts/quick_setup.ts +124 -0
  571. package/scripts/quick_setup_account.ts +80 -0
  572. package/scripts/run_automated_experiment.sh +121 -0
  573. package/scripts/run_daily_experiment.ts +70 -0
  574. package/scripts/run_l4_gasless_regression.sh +32 -0
  575. package/scripts/run_sdk_experiment.sh +13 -0
  576. package/scripts/run_sdk_regression-v2.sh +38 -0
  577. package/scripts/sdk_regression_v2.ts +162 -0
  578. package/scripts/security_audit.sh +172 -0
  579. package/scripts/setup-bbq-community.ts +187 -0
  580. package/scripts/setup-dancing-community.ts +223 -0
  581. package/scripts/setup_test_accounts.ts +88 -0
  582. package/scripts/setup_test_environment.ts +147 -0
  583. package/scripts/sync_anvil_config.cjs +44 -0
  584. package/scripts/sync_config_to_env.ts +88 -0
  585. package/scripts/sync_contract_addresses.ts +186 -0
  586. package/scripts/sync_sepolia_config.cjs +90 -0
  587. package/scripts/sync_sepolia_config.mjs +74 -0
  588. package/scripts/test-brown-v4-deploy.ts +90 -0
  589. package/scripts/test-faucet-and-gasless.ts +170 -0
  590. package/scripts/test-jack-gasless.ts +119 -0
  591. package/scripts/test-jack-registration.ts +133 -0
  592. package/scripts/test-jack-superpaymaster-api.ts +112 -0
  593. package/scripts/test-kms-gasless.ts +138 -0
  594. package/scripts/test_groups.ts +138 -0
  595. package/scripts/test_multi_community_anvil.ts +276 -0
  596. package/scripts/test_new_sdk_apis_sepolia.ts +193 -0
  597. package/scripts/test_sdk_join_idempotent.ts +233 -0
  598. package/scripts/test_simple_sepolia.ts +44 -0
  599. package/scripts/update_env_from_config.ts +83 -0
  600. package/scripts/v2_regression/00_validate_env.ts +101 -0
  601. package/scripts/v2_regression/01_setup_and_fund.ts +132 -0
  602. package/scripts/v2_regression/02_operator_onboarding.ts +174 -0
  603. package/scripts/v2_regression/03_community_registry.ts +139 -0
  604. package/scripts/v2_regression/04_enduser_flow.ts +141 -0
  605. package/scripts/v2_regression/05_admin_audit.ts +157 -0
  606. package/scripts/v2_regression/README.md +161 -0
  607. package/scripts/validate_env.ts +112 -0
  608. package/scripts/verify-tx-status.ts +81 -0
  609. package/scripts/verify_onchain_milestone.ts +114 -0
  610. package/scripts/verify_phase1.ts +66 -0
  611. package/scripts/verify_phase2.ts +66 -0
  612. package/sdk_experiment_data.csv +4 -0
  613. package/simple-test-paymaster.sh +2 -0
  614. package/simple-test-superpaymaster.sh +1 -0
  615. package/tests/l1-regression.test.ts +458 -0
  616. package/tests/l4-test-anni-gasless.ts +105 -0
  617. package/tests/l4-test-jason1-gasless.ts +150 -0
  618. package/tests/l4-test-jason2-gasless.ts +174 -0
  619. package/tests/l4-test-pmv4-deposit.ts +111 -0
  620. package/tests/l4-test-pmv4-gasless.ts +166 -0
  621. package/tests/l4-test-pmv4-submit.ts +223 -0
  622. package/tests/regression/README.md +168 -0
  623. package/tests/regression/config.ts +215 -0
  624. package/tests/regression/display-versions.ts +85 -0
  625. package/tests/regression/index.ts +67 -0
  626. package/tests/regression/l1-tests.ts +267 -0
  627. package/tests/regression/l2-tests.ts +171 -0
  628. package/tests/regression/l3-tests.ts +125 -0
  629. package/tests/regression/l4-gasless.ts +897 -0
  630. package/tests/regression/l4-runner.ts +52 -0
  631. package/tests/reports/phase1_contract_verification.md +45 -0
  632. package/tests/utils/contractVerifier.ts +237 -0
  633. package/tests/utils/userOpHelper.ts +194 -0
  634. package/tsconfig.json +41 -0
  635. package/typedoc.json +59 -0
  636. package/vitest.config.ts +16 -0
  637. package/dist/clients/admin.d.ts +0 -12
  638. package/dist/clients/admin.d.ts.map +0 -1
  639. package/dist/clients/admin.js +0 -20
  640. package/dist/clients/admin.js.map +0 -1
  641. package/dist/clients/community.d.ts +0 -12
  642. package/dist/clients/community.d.ts.map +0 -1
  643. package/dist/clients/community.js +0 -18
  644. package/dist/clients/community.js.map +0 -1
  645. package/dist/clients/endUser.d.ts +0 -12
  646. package/dist/clients/endUser.d.ts.map +0 -1
  647. package/dist/clients/endUser.js +0 -20
  648. package/dist/clients/endUser.js.map +0 -1
  649. package/dist/clients/operator.d.ts +0 -18
  650. package/dist/clients/operator.d.ts.map +0 -1
  651. package/dist/clients/operator.js +0 -65
  652. package/dist/clients/operator.js.map +0 -1
  653. package/dist/index.d.ts +0 -11
  654. package/dist/index.d.ts.map +0 -1
  655. package/dist/index.js +0 -12
  656. package/dist/index.js.map +0 -1
@@ -0,0 +1,1078 @@
1
+
2
+ A nodejs sdk for all developers to integrate AAStar's power abilities.
3
+
4
+ AAStar npm packages collection:
5
+ You can use
6
+ ```
7
+ pnpm install @aastar/airaccount
8
+ @aastar/superpaymaster
9
+ @aastar/cometens
10
+ @aastar/openpnts
11
+ @aastar/opencards
12
+ @aastar/arcadia
13
+ @aastar/cos72
14
+ ```
15
+ or
16
+ ```
17
+ pnpm install aastar
18
+ ```
19
+
20
+ ## For developers
21
+ Why do you install this package?
22
+ ### airaccount
23
+ Provide a moveable\self-custody\crypto account with life cycle service.
24
+ Permissionless.
25
+ Trustless.
26
+ Decentralized.
27
+ In 3 steps: bind, send, claim, move(recover)
28
+
29
+ ### superpaymaster
30
+ Embbeded into AirAccount, but provide ERC20 gas token ability for any community individually.
31
+
32
+ ### cometens
33
+ Embbeded into AirAccount, but provide set your own ENS name for your community individually.
34
+
35
+
36
+ # 从零开始开发和发布 npm 包:完整指南
37
+
38
+ ## 目录
39
+
40
+ 1. [前期准备](#前期准备)
41
+ 2. [初始化项目](#初始化项目)
42
+ 3. [配置开发环境](#配置开发环境)
43
+ 4. [开发 SDK](#开发-sdk)
44
+ 5. [测试](#测试)
45
+ 6. [构建和打包](#构建和打包)
46
+ 7. [发布到 npm](#发布到-npm)
47
+ 8. [文档和示例](#文档和示例)
48
+ 9. [版本管理和更新](#版本管理和更新)
49
+ 10. [持续集成和自动发布](#持续集成和自动发布)
50
+ 11. [SDK 开发最佳实践](#sdk-开发最佳实践)
51
+ 12. [问题排查](#问题排查)
52
+
53
+ ## 前期准备
54
+
55
+ ### 1. 安装必要工具
56
+
57
+ ```bash
58
+ # 安装 Node.js (推荐使用 nvm 管理 Node.js 版本)
59
+ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
60
+ nvm install node # 安装最新版
61
+ nvm install --lts # 或安装长期支持版
62
+
63
+ # 确认安装
64
+ node --version
65
+ npm --version
66
+
67
+ # 安装一些全局工具
68
+ npm install -g typescript ts-node np
69
+ ```
70
+
71
+ ### 2. 创建 npm 账号
72
+
73
+ 1. 访问 [npm 官网](https://www.npmjs.com/) 并注册
74
+ 2. 在命令行登录 npm (后续发布时需要)
75
+
76
+ ```bash
77
+ npm login
78
+ ```
79
+
80
+ ### 3. 规划你的 SDK
81
+
82
+ 在开始编码前,确定以下内容:
83
+
84
+ - SDK 的目标和用途
85
+ - 核心功能和 API 设计
86
+ - 依赖关系
87
+ - 支持的平台 (浏览器、Node.js、React Native 等)
88
+ - 命名规范 (包名必须唯一)
89
+ - 核心 API 结构
90
+
91
+ ## 初始化项目
92
+
93
+ ### 1. 创建项目目录
94
+
95
+ ```bash
96
+ # 创建项目目录 (使用你希望的包名)
97
+ mkdir my-awesome-sdk
98
+ cd my-awesome-sdk
99
+ ```
100
+
101
+ ### 2. 初始化 npm 项目
102
+
103
+ ```bash
104
+ npm init
105
+ ```
106
+
107
+ 按照提示填写信息:
108
+
109
+ - `name`: 包名 (可以使用 `@组织名/包名` 格式)
110
+ - `version`: 版本号 (推荐从 0.1.0 开始)
111
+ - `description`: 简短描述
112
+ - `main`: 入口文件 (通常是 `dist/index.js`)
113
+ - `scripts`: 构建脚本
114
+ - `repository`: 代码仓库地址
115
+ - `keywords`: 关键词,帮助用户发现你的包
116
+ - `author`: 作者信息
117
+ - `license`: 许可证 (如 MIT)
118
+
119
+ ### 3. 初始化 Git 仓库
120
+
121
+ ```bash
122
+ git init
123
+ echo "node_modules\ndist\n.env\n*.log" > .gitignore
124
+ ```
125
+
126
+ ### 4. 创建基本目录结构
127
+
128
+ ```bash
129
+ mkdir src tests examples docs
130
+ touch src/index.ts README.md LICENSE
131
+ ```
132
+
133
+ ## 配置开发环境
134
+
135
+ ### 1. 配置 TypeScript
136
+
137
+ ```bash
138
+ # 安装 TypeScript
139
+ npm install typescript --save-dev
140
+
141
+ # 初始化 TypeScript 配置
142
+ npx tsc --init
143
+ ```
144
+
145
+ 编辑 `tsconfig.json`:
146
+
147
+ ```json
148
+ {
149
+ "compilerOptions": {
150
+ "target": "es2018",
151
+ "module": "commonjs",
152
+ "declaration": true,
153
+ "outDir": "./dist",
154
+ "strict": true,
155
+ "esModuleInterop": true,
156
+ "skipLibCheck": true,
157
+ "forceConsistentCasingInFileNames": true,
158
+ "rootDir": "./src"
159
+ },
160
+ "include": ["src"],
161
+ "exclude": ["node_modules", "tests", "examples", "dist"]
162
+ }
163
+ ```
164
+
165
+ ### 2. 配置代码格式化和 Lint
166
+
167
+ ```bash
168
+ # 安装 ESLint 和 Prettier
169
+ npm install eslint @typescript-eslint/parser @typescript-eslint/eslint-plugin prettier eslint-config-prettier eslint-plugin-prettier --save-dev
170
+
171
+ # 创建 ESLint 配置
172
+ ```
173
+
174
+ 创建 `.eslintrc.js`:
175
+
176
+ ```javascript
177
+ module.exports = {
178
+ parser: "@typescript-eslint/parser",
179
+ extends: [
180
+ "plugin:@typescript-eslint/recommended",
181
+ "plugin:prettier/recommended",
182
+ ],
183
+ parserOptions: {
184
+ ecmaVersion: 2018,
185
+ sourceType: "module",
186
+ },
187
+ rules: {
188
+ // 自定义规则
189
+ },
190
+ };
191
+ ```
192
+
193
+ 创建 `.prettierrc`:
194
+
195
+ ```json
196
+ {
197
+ "singleQuote": true,
198
+ "trailingComma": "es5",
199
+ "printWidth": 100,
200
+ "tabWidth": 2,
201
+ "semi": true
202
+ }
203
+ ```
204
+
205
+ ### 3. 配置测试环境
206
+
207
+ ```bash
208
+ # 安装 Jest
209
+ npm install jest ts-jest @types/jest --save-dev
210
+ ```
211
+
212
+ 创建 `jest.config.js`:
213
+
214
+ ```javascript
215
+ module.exports = {
216
+ preset: "ts-jest",
217
+ testEnvironment: "node",
218
+ testMatch: ["**/tests/**/*.test.ts"],
219
+ collectCoverage: true,
220
+ coverageDirectory: "coverage",
221
+ collectCoverageFrom: ["src/**/*.ts"],
222
+ };
223
+ ```
224
+
225
+ ### 4. 更新 package.json 脚本
226
+
227
+ 编辑 `package.json` 添加以下脚本:
228
+
229
+ ```json
230
+ "scripts": {
231
+ "build": "tsc",
232
+ "test": "jest",
233
+ "lint": "eslint 'src/**/*.ts'",
234
+ "format": "prettier --write 'src/**/*.ts'",
235
+ "prepare": "npm run build",
236
+ "prepublishOnly": "npm test && npm run lint",
237
+ "preversion": "npm run lint",
238
+ "version": "npm run format && git add -A src",
239
+ "postversion": "git push && git push --tags"
240
+ }
241
+ ```
242
+
243
+ ## 开发 SDK
244
+
245
+ ### 1. 创建基本结构
246
+
247
+ 在 `src/index.ts` 创建 SDK 的入口点:
248
+
249
+ ```typescript
250
+ // 导出所有公共 API
251
+ export * from "./client";
252
+ export * from "./types";
253
+ // ... 其他导出
254
+
255
+ // 导出默认客户端
256
+ import { Client } from "./client";
257
+ export default Client;
258
+ ```
259
+
260
+ ### 2. 创建核心模块
261
+
262
+ 例如,创建 `src/client.ts` 实现主要客户端类:
263
+
264
+ ```typescript
265
+ import { ApiResponse, ClientOptions } from "./types";
266
+
267
+ export class Client {
268
+ private apiKey: string;
269
+ private baseUrl: string;
270
+
271
+ constructor(options: ClientOptions) {
272
+ this.apiKey = options.apiKey;
273
+ this.baseUrl = options.baseUrl || "https://api.example.com/v1";
274
+ }
275
+
276
+ async makeRequest<T>(
277
+ endpoint: string,
278
+ method: string = "GET",
279
+ data?: any,
280
+ ): Promise<ApiResponse<T>> {
281
+ const url = `${this.baseUrl}/${endpoint}`;
282
+
283
+ try {
284
+ const response = await fetch(url, {
285
+ method,
286
+ headers: {
287
+ "Content-Type": "application/json",
288
+ "Authorization": `Bearer ${this.apiKey}`,
289
+ },
290
+ body: data ? JSON.stringify(data) : undefined,
291
+ });
292
+
293
+ const responseData = await response.json();
294
+
295
+ if (!response.ok) {
296
+ throw new Error(responseData.message || "API request failed");
297
+ }
298
+
299
+ return {
300
+ data: responseData,
301
+ status: response.status,
302
+ headers: response.headers,
303
+ };
304
+ } catch (error) {
305
+ throw error;
306
+ }
307
+ }
308
+
309
+ // 公共 API 方法
310
+ async getUser(userId: string) {
311
+ return this.makeRequest<any>(`users/${userId}`);
312
+ }
313
+
314
+ // 更多 API 方法...
315
+ }
316
+ ```
317
+
318
+ ### 3. 定义类型
319
+
320
+ 创建 `src/types.ts` 定义类型:
321
+
322
+ ```typescript
323
+ export interface ClientOptions {
324
+ apiKey: string;
325
+ baseUrl?: string;
326
+ }
327
+
328
+ export interface ApiResponse<T> {
329
+ data: T;
330
+ status: number;
331
+ headers: Headers;
332
+ }
333
+
334
+ // 更多类型定义...
335
+ ```
336
+
337
+ ### 4. 使用模块化设计
338
+
339
+ 将 SDK 拆分为多个模块,例如:
340
+
341
+ ```
342
+ src/
343
+ index.ts # 主入口
344
+ client.ts # 核心客户端类
345
+ types.ts # 类型定义
346
+ modules/
347
+ auth.ts # 认证相关功能
348
+ users.ts # 用户相关功能
349
+ products.ts # 产品相关功能
350
+ utils/
351
+ request.ts # 请求工具
352
+ validation.ts # 验证工具
353
+ ```
354
+
355
+ ## 测试
356
+
357
+ ### 1. 编写单元测试
358
+
359
+ 在 `tests` 目录中创建测试文件,例如 `tests/client.test.ts`:
360
+
361
+ ```typescript
362
+ import { Client } from "../src/client";
363
+
364
+ // 模拟 fetch API
365
+ global.fetch = jest.fn();
366
+
367
+ describe("Client", () => {
368
+ let client: Client;
369
+
370
+ beforeEach(() => {
371
+ client = new Client({ apiKey: "test-api-key" });
372
+ (global.fetch as jest.Mock).mockClear();
373
+ });
374
+
375
+ test("makeRequest should call fetch with correct parameters", async () => {
376
+ (global.fetch as jest.Mock).mockResolvedValueOnce({
377
+ ok: true,
378
+ status: 200,
379
+ json: async () => ({ id: "123", name: "Test User" }),
380
+ headers: new Headers(),
381
+ });
382
+
383
+ const result = await client.makeRequest("users/123");
384
+
385
+ expect(global.fetch).toHaveBeenCalledWith(
386
+ "https://api.example.com/v1/users/123",
387
+ expect.objectContaining({
388
+ method: "GET",
389
+ headers: expect.objectContaining({
390
+ "Authorization": "Bearer test-api-key",
391
+ }),
392
+ }),
393
+ );
394
+
395
+ expect(result.data).toEqual({ id: "123", name: "Test User" });
396
+ });
397
+
398
+ // 更多测试...
399
+ });
400
+ ```
401
+
402
+ ### 2. 运行测试
403
+
404
+ ```bash
405
+ npm test
406
+ ```
407
+
408
+ ### 3. 编写集成测试
409
+
410
+ 创建与真实 API 交互的集成测试,例如 `tests/integration.test.ts`:
411
+
412
+ ```typescript
413
+ import { Client } from "../src/client";
414
+
415
+ // 这些测试需要一个有效的 API 密钥
416
+ // 通常通过环境变量提供
417
+ const apiKey = process.env.API_KEY;
418
+
419
+ // 只在提供 API 密钥时运行集成测试
420
+ (apiKey ? describe : describe.skip)("Integration tests", () => {
421
+ let client: Client;
422
+
423
+ beforeAll(() => {
424
+ client = new Client({ apiKey });
425
+ });
426
+
427
+ test("can get a user", async () => {
428
+ const result = await client.getUser("test-user-id");
429
+ expect(result.status).toBe(200);
430
+ expect(result.data).toHaveProperty("id");
431
+ });
432
+
433
+ // 更多集成测试...
434
+ });
435
+ ```
436
+
437
+ ## 构建和打包
438
+
439
+ ### 1. 配置 npm 包文件
440
+
441
+ 编辑 `package.json` 指定要包含的文件:
442
+
443
+ ```json
444
+ {
445
+ "main": "dist/index.js",
446
+ "types": "dist/index.d.ts",
447
+ "files": [
448
+ "dist",
449
+ "LICENSE",
450
+ "README.md"
451
+ ]
452
+ }
453
+ ```
454
+
455
+ ### 2. 支持不同的模块格式 (可选)
456
+
457
+ 如果你想同时支持 CommonJS 和 ES 模块,可以使用 `rollup` 或 `tsup` 等工具。
458
+
459
+ 使用 `tsup` 示例:
460
+
461
+ ```bash
462
+ # 安装 tsup
463
+ npm install tsup --save-dev
464
+ ```
465
+
466
+ 更新 `package.json`:
467
+
468
+ ```json
469
+ {
470
+ "main": "dist/index.js",
471
+ "module": "dist/index.mjs",
472
+ "types": "dist/index.d.ts",
473
+ "exports": {
474
+ ".": {
475
+ "require": "./dist/index.js",
476
+ "import": "./dist/index.mjs",
477
+ "types": "./dist/index.d.ts"
478
+ }
479
+ },
480
+ "scripts": {
481
+ "build": "tsup src/index.ts --format cjs,esm --dts --clean"
482
+ }
483
+ }
484
+ ```
485
+
486
+ ## 发布到 npm
487
+
488
+ ### 1. 准备发布
489
+
490
+ 确保你的包名是唯一的,并已登录 npm。如果使用组织名称,确保已创建组织。
491
+
492
+ ```bash
493
+ # 检查是否登录
494
+ npm whoami
495
+
496
+ # 如果未登录
497
+ npm login
498
+ ```
499
+
500
+ ### 2. 测试包
501
+
502
+ 在发布前,使用 `npm pack` 创建一个本地包进行测试:
503
+
504
+ ```bash
505
+ npm pack
506
+ ```
507
+
508
+ 这将创建一个 `.tgz` 文件,可以在另一个项目中使用它进行测试:
509
+
510
+ ```bash
511
+ # 在测试项目中
512
+ npm install ../path/to/your-package-1.0.0.tgz
513
+ ```
514
+
515
+ ### 3. 发布包
516
+
517
+ ```bash
518
+ # 首次发布
519
+ npm publish
520
+
521
+ # 如果是组织包并想设为公共
522
+ npm publish --access public
523
+ ```
524
+
525
+ ### 4. 更新包
526
+
527
+ 修改 `package.json` 中的版本号或使用 `npm version` 命令:
528
+
529
+ ```bash
530
+ # 更新补丁版本 (1.0.0 -> 1.0.1)
531
+ npm version patch
532
+
533
+ # 更新小版本 (1.0.0 -> 1.1.0)
534
+ npm version minor
535
+
536
+ # 更新大版本 (1.0.0 -> 2.0.0)
537
+ npm version major
538
+ ```
539
+
540
+ 然后发布更新:
541
+
542
+ ```bash
543
+ npm publish
544
+ ```
545
+
546
+ ## 文档和示例
547
+
548
+ ### 1. 编写 README
549
+
550
+ 一个好的 README 应包含:
551
+
552
+ - 项目描述
553
+ - 安装指南
554
+ - 基本用法示例
555
+ - API 文档链接
556
+ - 配置选项
557
+ - 常见问题
558
+
559
+ 示例 README 结构:
560
+
561
+ ````markdown
562
+ # My Awesome SDK
563
+
564
+ A JavaScript/TypeScript SDK for interacting with the Example API.
565
+
566
+ ## Installation
567
+
568
+ ```bash
569
+ npm install my-awesome-sdk
570
+ ```
571
+ ````
572
+
573
+ ## Quick Start
574
+
575
+ ```javascript
576
+ import Client from "my-awesome-sdk";
577
+
578
+ const client = new Client({ apiKey: "your-api-key" });
579
+
580
+ // Get a user
581
+ client.getUser("user123")
582
+ .then((response) => console.log(response.data))
583
+ .catch((error) => console.error(error));
584
+ ```
585
+
586
+ ## Documentation
587
+
588
+ For full documentation, visit [docs.example.com](https://docs.example.com).
589
+
590
+ ## Configuration
591
+
592
+ The client accepts the following options:
593
+
594
+ | Option | Type | Required | Default | Description |
595
+ | ------- | ------ | -------- | -------------------------- | ---------------- |
596
+ | apiKey | string | Yes | - | Your API key |
597
+ | baseUrl | string | No | https://api.example.com/v1 | The API base URL |
598
+
599
+ ## License
600
+
601
+ MIT
602
+
603
+ ````
604
+ ### 2. 示例代码
605
+
606
+ 在 `examples` 目录中创建示例代码:
607
+
608
+ ```typescript
609
+ // examples/basic-usage.ts
610
+ import Client from '../src';
611
+
612
+ async function main() {
613
+ const client = new Client({ apiKey: 'your-api-key' });
614
+
615
+ try {
616
+ const user = await client.getUser('user123');
617
+ console.log('User:', user.data);
618
+
619
+ // More examples...
620
+ } catch (error) {
621
+ console.error('Error:', error);
622
+ }
623
+ }
624
+
625
+ main();
626
+ ````
627
+
628
+ ### 3. 生成 API 文档
629
+
630
+ 可以使用 TypeDoc 生成 API 文档:
631
+
632
+ ```bash
633
+ npm install typedoc --save-dev
634
+ ```
635
+
636
+ 添加 `package.json` 脚本:
637
+
638
+ ```json
639
+ "scripts": {
640
+ "docs": "typedoc --out docs src/index.ts"
641
+ }
642
+ ```
643
+
644
+ ## 版本管理和更新
645
+
646
+ ### 1. 遵循语义化版本规范
647
+
648
+ - **补丁版本**(1.0.x):修复 bug,小改进
649
+ - **小版本**(1.x.0):添加向后兼容的新功能
650
+ - **大版本**(x.0.0):不向后兼容的变更
651
+
652
+ ### 2. 维护更新日志
653
+
654
+ 创建 `CHANGELOG.md` 并记录每个版本的变更:
655
+
656
+ ```markdown
657
+ # Changelog
658
+
659
+ ## [1.1.0] - 2023-05-01
660
+
661
+ ### Added
662
+
663
+ - New feature X
664
+ - Support for Y
665
+
666
+ ### Changed
667
+
668
+ - Improved error handling
669
+ - Better performance for Z
670
+
671
+ ### Fixed
672
+
673
+ - Bug in getUser method
674
+
675
+ ## [1.0.0] - 2023-04-01
676
+
677
+ Initial release
678
+ ```
679
+
680
+ ## 持续集成和自动发布
681
+
682
+ ### 1. 设置 GitHub Actions
683
+
684
+ 创建 `.github/workflows/ci.yml`:
685
+
686
+ ```yaml
687
+ name: CI
688
+
689
+ on:
690
+ push:
691
+ branches: [ main ]
692
+ pull_request:
693
+ branches: [ main ]
694
+
695
+ jobs:
696
+ test:
697
+ runs-on: ubuntu-latest
698
+ strategy:
699
+ matrix:
700
+ node-version: [14.x, 16.x, 18.x]
701
+
702
+ steps:
703
+ - uses: actions/checkout@v3
704
+ - name: Use Node.js ${{ matrix.node-version }}
705
+ uses: actions/setup-node@v3
706
+ with:
707
+ node-version: ${{ matrix.node-version }}
708
+ - run: npm ci
709
+ - run: npm run build
710
+ - run: npm test
711
+ - run: npm run lint
712
+ ```
713
+
714
+ ### 2. 设置自动发布
715
+
716
+ 创建 `.github/workflows/publish.yml`:
717
+
718
+ ```yaml
719
+ name: Publish
720
+
721
+ on:
722
+ release:
723
+ types: [created]
724
+
725
+ jobs:
726
+ publish:
727
+ runs-on: ubuntu-latest
728
+ steps:
729
+ - uses: actions/checkout@v3
730
+ - uses: actions/setup-node@v3
731
+ with:
732
+ node-version: '16.x'
733
+ registry-url: 'https://registry.npmjs.org'
734
+ - run: npm ci
735
+ - run: npm run build
736
+ - run: npm test
737
+ - run: npm publish
738
+ env:
739
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
740
+ ```
741
+
742
+ 在 GitHub 仓库设置中,添加 `NPM_TOKEN` 秘密。
743
+
744
+ ## SDK 开发最佳实践
745
+
746
+ ### 1. API 设计原则
747
+
748
+ - **简单直观**:API 应该易于理解和使用
749
+ - **一致性**:保持命名和模式一致
750
+ - **错误处理**:提供清晰的错误信息和类型
751
+ - **文档完善**:每个公共方法都应有文档
752
+ - **链式调用**:考虑支持方法链接
753
+
754
+ ### 2. 错误处理
755
+
756
+ 创建自定义错误类:
757
+
758
+ ```typescript
759
+ // src/errors.ts
760
+ export class ApiError extends Error {
761
+ statusCode: number;
762
+ data: any;
763
+
764
+ constructor(message: string, statusCode: number, data?: any) {
765
+ super(message);
766
+ this.name = "ApiError";
767
+ this.statusCode = statusCode;
768
+ this.data = data;
769
+ Object.setPrototypeOf(this, ApiError.prototype);
770
+ }
771
+ }
772
+
773
+ export class ValidationError extends Error {
774
+ errors: any[];
775
+
776
+ constructor(message: string, errors: any[]) {
777
+ super(message);
778
+ this.name = "ValidationError";
779
+ this.errors = errors;
780
+ Object.setPrototypeOf(this, ValidationError.prototype);
781
+ }
782
+ }
783
+ ```
784
+
785
+ ### 3. 浏览器兼容性
786
+
787
+ 如果 SDK 需要在浏览器中运行,考虑:
788
+
789
+ - 使用 `fetch` 时提供兼容性封装
790
+ - 考虑使用 `axios` 等库处理请求
791
+ - 使用 polyfills 确保兼容性
792
+
793
+ ### 4. 安全性
794
+
795
+ - 不要在客户端代码中存储敏感信息
796
+ - 使用 HTTPS
797
+ - 避免将敏感信息记录到控制台
798
+ - 提供 API 令牌轮换机制
799
+
800
+ ## 问题排查
801
+
802
+ ### 1. 常见问题
803
+
804
+ - **包名冲突**:在 npm 上查找是否已存在同名包
805
+ - **构建错误**:检查 TypeScript 配置和依赖
806
+ - **发布失败**:确保已登录 npm 并有权限发布
807
+
808
+ ### 2. 调试技巧
809
+
810
+ ```typescript
811
+ // 添加调试配置
812
+ export class Client {
813
+ private debug: boolean;
814
+
815
+ constructor(options: ClientOptions) {
816
+ this.debug = options.debug || false;
817
+ // ...
818
+ }
819
+
820
+ private log(...args: any[]) {
821
+ if (this.debug) {
822
+ console.log("[SDK]", ...args);
823
+ }
824
+ }
825
+
826
+ async makeRequest<T>(
827
+ endpoint: string,
828
+ method: string = "GET",
829
+ data?: any,
830
+ ): Promise<ApiResponse<T>> {
831
+ this.log("Request:", method, endpoint, data);
832
+
833
+ // ...请求逻辑...
834
+
835
+ this.log("Response:", responseData);
836
+ return response;
837
+ }
838
+ }
839
+ ```
840
+
841
+ ### 3. 提供用户支持
842
+
843
+ - 在 GitHub 上设置 Issues 模板
844
+ - 提供常见问题和解决方案
845
+ - 考虑设置讨论区或社区渠道
846
+
847
+ # NPM包组织
848
+
849
+ 您想要建立一个名为"aastar"的NPM组织,其中包含多个子包,既可以单独安装也可以整体安装。这是一个非常好的组织方式,类似于许多流行的库如Next.js、Ant
850
+ Design等采用的结构。
851
+
852
+ 要实现这样的结构,您需要采用"Monorepo"(单体仓库)架构,以下是详细的规划和实现步骤:
853
+
854
+ ## 1. 创建Monorepo项目结构
855
+
856
+ 首先,建立基本的项目结构:
857
+
858
+ ```
859
+ aastar/
860
+ ├── packages/
861
+ │ ├── airaccount/ # 子包1
862
+ │ ├── superpaymaster/ # 子包2
863
+ │ └── ... # 其他子包
864
+ ├── package.json # 根项目配置
865
+ ├── pnpm-workspace.yaml # 工作区配置
866
+ ├── lerna.json # (可选)Lerna配置
867
+ └── tsconfig.json # 基础TypeScript配置
868
+ ```
869
+
870
+ ## 2. 配置工作区
871
+
872
+ 在根目录创建`pnpm-workspace.yaml`文件:
873
+
874
+ ```yaml
875
+ packages:
876
+ - 'packages/*'
877
+ ```
878
+
879
+ ## 3. 配置每个子包
880
+
881
+ 在每个子包目录中创建`package.json`,例如`packages/airaccount/package.json`:
882
+
883
+ ```json
884
+ {
885
+ "name": "@aastar/airaccount",
886
+ "version": "0.1.0",
887
+ "description": "AIR账户管理模块",
888
+ "main": "dist/index.js",
889
+ "types": "dist/index.d.ts",
890
+ "scripts": {
891
+ "build": "tsc",
892
+ "test": "jest"
893
+ },
894
+ "dependencies": {
895
+ // 此包的依赖
896
+ },
897
+ "peerDependencies": {
898
+ // 可选的同级依赖
899
+ },
900
+ "publishConfig": {
901
+ "access": "public"
902
+ }
903
+ }
904
+ ```
905
+
906
+ ## 4. 创建主包作为入口点
907
+
908
+ 在`packages`目录下创建一个集合包,例如`packages/aastar/package.json`:
909
+
910
+ ```json
911
+ {
912
+ "name": "aastar",
913
+ "version": "0.1.0",
914
+ "description": "AASTAR SDK全集合",
915
+ "main": "dist/index.js",
916
+ "types": "dist/index.d.ts",
917
+ "scripts": {
918
+ "build": "tsc"
919
+ },
920
+ "dependencies": {
921
+ "@aastar/airaccount": "workspace:*",
922
+ "@aastar/superpaymaster": "workspace:*"
923
+ // 添加其他所有子包作为依赖
924
+ },
925
+ "publishConfig": {
926
+ "access": "public"
927
+ }
928
+ }
929
+ ```
930
+
931
+ 然后创建相应的入口文件`packages/aastar/src/index.ts`,导出所有子包:
932
+
933
+ ```typescript
934
+ export * from "@aastar/airaccount";
935
+ export * from "@aastar/superpaymaster";
936
+ // 导出其他所有子包
937
+ ```
938
+
939
+ ## 5. 使用工具管理版本和发布
940
+
941
+ 您可以使用以下工具之一来管理版本和发布:
942
+
943
+ ### 选项1: 使用pnpm + changesets
944
+
945
+ 1. 安装changesets:
946
+
947
+ ```bash
948
+ pnpm add -D -w @changesets/cli
949
+ pnpm changeset init
950
+ ```
951
+
952
+ 2. 配置发布脚本:在根目录的`package.json`中添加:
953
+
954
+ ```json
955
+ {
956
+ "scripts": {
957
+ "build": "pnpm -r build",
958
+ "version": "changeset version",
959
+ "publish": "pnpm build && changeset publish"
960
+ }
961
+ }
962
+ ```
963
+
964
+ ### 选项2: 使用Lerna
965
+
966
+ 1. 安装Lerna:
967
+
968
+ ```bash
969
+ pnpm add -D -w lerna
970
+ ```
971
+
972
+ 2. 创建`lerna.json`:
973
+
974
+ ```json
975
+ {
976
+ "version": "independent",
977
+ "npmClient": "pnpm",
978
+ "useWorkspaces": true,
979
+ "command": {
980
+ "publish": {
981
+ "ignoreChanges": ["*.md"],
982
+ "message": "chore(release): publish"
983
+ }
984
+ }
985
+ }
986
+ ```
987
+
988
+ ## 6. 处理包之间的依赖关系
989
+
990
+ 如果子包之间有依赖关系,在依赖包的`package.json`中添加:
991
+
992
+ ```json
993
+ {
994
+ "dependencies": {
995
+ "@aastar/some-dependency": "workspace:*"
996
+ }
997
+ }
998
+ ```
999
+
1000
+ ## 7. 统一配置和构建
1001
+
1002
+ 创建一个根目录的`tsconfig.json`作为基础配置:
1003
+
1004
+ ```json
1005
+ {
1006
+ "compilerOptions": {
1007
+ "target": "ES2020",
1008
+ "module": "ESNext",
1009
+ "moduleResolution": "node",
1010
+ "declaration": true,
1011
+ "strict": true,
1012
+ "esModuleInterop": true,
1013
+ "skipLibCheck": true,
1014
+ "forceConsistentCasingInFileNames": true
1015
+ }
1016
+ }
1017
+ ```
1018
+
1019
+ 然后,每个子包可以扩展此配置:
1020
+
1021
+ ```json
1022
+ {
1023
+ "extends": "../../tsconfig.json",
1024
+ "compilerOptions": {
1025
+ "outDir": "./dist",
1026
+ "rootDir": "./src"
1027
+ },
1028
+ "include": ["src/**/*"]
1029
+ }
1030
+ ```
1031
+
1032
+ ## 8. 发布流程
1033
+
1034
+ 1. 创建npm组织:
1035
+ - 在npm网站上注册`aastar`组织
1036
+
1037
+ 2. 发布所有包:
1038
+
1039
+ ```bash
1040
+ # 使用changesets
1041
+ pnpm changeset
1042
+ pnpm version
1043
+ pnpm publish
1044
+
1045
+ # 或使用Lerna
1046
+ pnpm lerna publish
1047
+ ```
1048
+
1049
+ ## 使用示例
1050
+
1051
+ 用户可以按您希望的方式安装和使用SDK:
1052
+
1053
+ ```bash
1054
+ # 安装单个包
1055
+ pnpm install @aastar/airaccount @aastar/superpaymaster
1056
+
1057
+ # 或安装全部功能
1058
+ pnpm install aastar
1059
+ ```
1060
+
1061
+ 使用示例:
1062
+
1063
+ ```javascript
1064
+ // 单个包使用方式
1065
+ import { someFunction } from "@aastar/airaccount";
1066
+
1067
+ // 全部功能使用方式
1068
+ import { airaccount, superpaymaster } from "aastar";
1069
+ ```
1070
+
1071
+ 这种结构的主要优点是:
1072
+
1073
+ 1. 用户可以根据需求选择安装单个包或全部功能
1074
+ 2. 包之间可以共享代码,但又保持独立发布
1075
+ 3. 可以统一管理版本,简化发布流程
1076
+ 4. 便于维护和扩展
1077
+
1078
+ 您对这种结构有什么特别的需求或问题吗?