ae-tracking 0.1.0

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 (308) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +50 -0
  3. package/dist/bin/ae-tracking.d.ts +2 -0
  4. package/dist/bin/ae-tracking.js +20 -0
  5. package/dist/scripts/postinstall.d.ts +1 -0
  6. package/dist/scripts/postinstall.js +17 -0
  7. package/dist/src/auth.d.ts +12 -0
  8. package/dist/src/auth.js +215 -0
  9. package/dist/src/cli/auth.d.ts +8 -0
  10. package/dist/src/cli/auth.js +81 -0
  11. package/dist/src/cli/code.d.ts +2 -0
  12. package/dist/src/cli/code.js +85 -0
  13. package/dist/src/cli/debug.d.ts +2 -0
  14. package/dist/src/cli/debug.js +152 -0
  15. package/dist/src/cli/home.d.ts +4 -0
  16. package/dist/src/cli/home.js +15 -0
  17. package/dist/src/cli/init.d.ts +14 -0
  18. package/dist/src/cli/init.js +107 -0
  19. package/dist/src/cli/package-root.d.ts +1 -0
  20. package/dist/src/cli/package-root.js +20 -0
  21. package/dist/src/cli/plan.d.ts +2 -0
  22. package/dist/src/cli/plan.js +242 -0
  23. package/dist/src/cli/wiki.d.ts +2 -0
  24. package/dist/src/cli/wiki.js +20 -0
  25. package/dist/src/client.d.ts +62 -0
  26. package/dist/src/client.js +56 -0
  27. package/dist/src/config.d.ts +4 -0
  28. package/dist/src/config.js +29 -0
  29. package/dist/src/plan/autotrack.d.ts +18 -0
  30. package/dist/src/plan/autotrack.js +350 -0
  31. package/dist/src/plan/conflict.d.ts +34 -0
  32. package/dist/src/plan/conflict.js +106 -0
  33. package/dist/src/plan/draft.d.ts +39 -0
  34. package/dist/src/plan/draft.js +104 -0
  35. package/dist/src/plan/fix.d.ts +32 -0
  36. package/dist/src/plan/fix.js +187 -0
  37. package/dist/src/plan/types.d.ts +57 -0
  38. package/dist/src/plan/types.js +1 -0
  39. package/dist/src/project-detect/detect.d.ts +2 -0
  40. package/dist/src/project-detect/detect.js +120 -0
  41. package/dist/src/project-detect/types.d.ts +9 -0
  42. package/dist/src/project-detect/types.js +1 -0
  43. package/dist/src/te-debug/client.d.ts +12 -0
  44. package/dist/src/te-debug/client.js +54 -0
  45. package/dist/src/te-debug/types.d.ts +16 -0
  46. package/dist/src/te-debug/types.js +1 -0
  47. package/dist/src/te-plan/fetch.d.ts +3 -0
  48. package/dist/src/te-plan/fetch.js +47 -0
  49. package/dist/src/te-plan/types.d.ts +7 -0
  50. package/dist/src/te-plan/types.js +1 -0
  51. package/dist/src/wiki/block-to-md.d.ts +74 -0
  52. package/dist/src/wiki/block-to-md.js +88 -0
  53. package/dist/src/wiki/crawler.d.ts +3 -0
  54. package/dist/src/wiki/crawler.js +71 -0
  55. package/dist/src/wiki/index-writer.d.ts +4 -0
  56. package/dist/src/wiki/index-writer.js +70 -0
  57. package/dist/src/wiki/slugify.d.ts +1 -0
  58. package/dist/src/wiki/slugify.js +11 -0
  59. package/dist/src/wiki/types.d.ts +29 -0
  60. package/dist/src/wiki/types.js +1 -0
  61. package/dist/src/wiki-query/query.d.ts +8 -0
  62. package/dist/src/wiki-query/query.js +32 -0
  63. package/dist/src/xlsx/read.d.ts +2 -0
  64. package/dist/src/xlsx/read.js +457 -0
  65. package/dist/src/xlsx/write.d.ts +3 -0
  66. package/dist/src/xlsx/write.js +251 -0
  67. package/package.json +47 -0
  68. package/skills/generate-tracking-code/SKILL.md +551 -0
  69. package/skills/generate-tracking-code/references/client-sdk-insert.md +92 -0
  70. package/skills/generate-tracking-code/references/datax-config.md +41 -0
  71. package/skills/generate-tracking-code/references/debug-script.md +99 -0
  72. package/skills/generate-tracking-code/references/logbus-config.md +224 -0
  73. package/skills/generate-tracking-code/references/modes.md +81 -0
  74. package/skills/generate-tracking-code/references/restful-call.md +34 -0
  75. package/skills/generate-tracking-code/references/sdk-index.md +123 -0
  76. package/skills/generate-tracking-code/references/server-sdk-insert.md +175 -0
  77. package/skills/generate-tracking-code/references/snippet-delivery.md +240 -0
  78. package/skills/generate-tracking-code/references/te-api.md +181 -0
  79. package/skills/generate-tracking-plan/SKILL.md +826 -0
  80. package/skills/generate-tracking-plan/references/autotrack-events.md +238 -0
  81. package/skills/generate-tracking-plan/references/te-api.md +97 -0
  82. package/skills/generate-tracking-plan/references/xlsx-schema.md +149 -0
  83. package/skills/te-wiki-synthesize/SKILL.md +142 -0
  84. package/wiki/te-docs/index.md +223 -0
  85. package/wiki/te-docs/log.md +28 -0
  86. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234//346/225/260/346/215/256/350/247/204/345/210/231.md +379 -0
  87. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234//347/224/250/346/210/267/350/257/206/345/210/253/350/247/204/345/210/231.md +461 -0
  88. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234//351/242/204/347/275/256/345/261/236/346/200/247/344/270/216/347/263/273/347/273/237/345/255/227/346/256/265.md +634 -0
  89. package/wiki/te-docs/raw//346/216/245/345/205/245/345/211/215/345/207/206/345/244/207/345/267/245/344/275/234.md +190 -0
  90. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227/restful-api-/344/275/277/347/224/250/346/214/207/345/215/227.md +195 -0
  91. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227/sdk-information-collection-rules.md +63 -0
  92. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/205/263/344/272/216-gdpr.md +81 -0
  93. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  94. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//346/233/264/346/226/260/346/227/245/345/277/227.md +502 -0
  95. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +367 -0
  96. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +117 -0
  97. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +96 -0
  98. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +947 -0
  99. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +686 -0
  100. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android//350/277/233/351/230/266/346/214/207/345/215/227.md +1126 -0
  101. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/android.md +461 -0
  102. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227-RCu1wk.md +64 -0
  103. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227.md +167 -0
  104. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225-T57MwB.md +56 -0
  105. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +57 -0
  106. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227-JARDwp.md +455 -0
  107. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227.md +477 -0
  108. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c-Uicgw2.md +145 -0
  109. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/c.md +253 -0
  110. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/h5-/344/270/216-app-sdk-/346/211/223/351/200/232.md +179 -0
  111. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
  112. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//346/233/264/346/226/260/346/227/245/345/277/227.md +491 -0
  113. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +154 -0
  114. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +148 -0
  115. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +92 -0
  116. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +479 -0
  117. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +587 -0
  118. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//350/277/233/351/230/266/346/214/207/345/215/227.md +912 -0
  119. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios//351/232/220/347/247/201/346/270/205/345/215/225.md +183 -0
  120. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/ios.md +397 -0
  121. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//345/220/210/350/247/204/346/214/207/345/215/227.md +39 -0
  122. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//346/233/264/346/226/260/346/227/245/345/277/227.md +239 -0
  123. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +55 -0
  124. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
  125. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +113 -0
  126. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +267 -0
  127. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript//350/277/233/351/230/266/346/214/207/345/215/227.md +455 -0
  128. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/javascript.md +257 -0
  129. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +77 -0
  130. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +249 -0
  131. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos//350/277/233/351/230/266/346/214/207/345/215/227.md +738 -0
  132. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/macos.md +317 -0
  133. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//345/220/210/350/247/204/346/214/207/345/215/227.md +345 -0
  134. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//346/233/264/346/226/260/346/227/245/345/277/227.md +128 -0
  135. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +60 -0
  136. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
  137. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +121 -0
  138. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +286 -0
  139. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony//350/277/233/351/230/266/346/214/207/345/215/227.md +408 -0
  140. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk/openharmony.md +209 -0
  141. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/256/242/346/210/267/347/253/257-sdk-/345/270/270/350/247/201/351/227/256/351/242/230.md +72 -0
  142. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//345/220/210/350/247/204/346/214/207/345/215/227.md +56 -0
  143. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//346/233/264/346/226/260/346/227/245/345/277/227.md +313 -0
  144. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +78 -0
  145. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +58 -0
  146. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +192 -0
  147. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +301 -0
  148. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217//350/277/233/351/230/266/346/214/207/345/215/227.md +644 -0
  149. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//345/260/217/347/250/213/345/272/217/345/260/217/346/270/270/346/210/217.md +440 -0
  150. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//345/220/210/350/247/204/346/214/207/345/215/227.md +35 -0
  151. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//346/233/264/346/226/260/346/227/245/345/277/227.md +49 -0
  152. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +53 -0
  153. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +32 -0
  154. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +65 -0
  155. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua//350/277/233/351/230/266/346/214/207/345/215/227.md +288 -0
  156. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-lua.md +236 -0
  157. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  158. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//346/233/264/346/226/260/346/227/245/345/277/227.md +122 -0
  159. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +27 -0
  160. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +53 -0
  161. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +34 -0
  162. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +177 -0
  163. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x//350/277/233/351/230/266/346/214/207/345/215/227.md +368 -0
  164. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocos2d-x.md +311 -0
  165. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//345/220/210/350/247/204/346/214/207/345/215/227.md +42 -0
  166. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//346/233/264/346/226/260/346/227/245/345/277/227.md +184 -0
  167. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +142 -0
  168. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  169. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +96 -0
  170. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +255 -0
  171. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator//350/277/233/351/230/266/346/214/207/345/215/227.md +659 -0
  172. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/cocoscreator.md +213 -0
  173. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//345/220/210/350/247/204/346/214/207/345/215/227.md +39 -0
  174. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//346/233/264/346/226/260/346/227/245/345/277/227.md +42 -0
  175. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +59 -0
  176. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +37 -0
  177. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +50 -0
  178. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona//350/277/233/351/230/266/346/214/207/345/215/227.md +281 -0
  179. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/corona.md +304 -0
  180. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//346/233/264/346/226/260/346/227/245/345/277/227.md +129 -0
  181. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +74 -0
  182. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  183. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +74 -0
  184. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +228 -0
  185. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret//350/277/233/351/230/266/346/214/207/345/215/227.md +640 -0
  186. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/egret.md +210 -0
  187. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//346/233/264/346/226/260/346/227/245/345/277/227.md +129 -0
  188. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +79 -0
  189. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  190. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +73 -0
  191. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +254 -0
  192. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair//350/277/233/351/230/266/346/214/207/345/215/227.md +626 -0
  193. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/layaair.md +228 -0
  194. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//345/216/206/345/217/262/347/211/210/346/234/254-unity-sdk-/344/275/277/347/224/250/346/214/207/345/215/227.md +503 -0
  195. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  196. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//346/233/264/346/226/260/346/227/245/345/277/227.md +505 -0
  197. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +86 -0
  198. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//345/216/237/347/224/237-sdk-/345/217/257/346/217/222/346/213/224.md +44 -0
  199. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +55 -0
  200. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +53 -0
  201. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +156 -0
  202. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +293 -0
  203. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity//350/277/233/351/230/266/346/214/207/345/215/227.md +667 -0
  204. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unity.md +203 -0
  205. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//345/220/210/350/247/204/346/214/207/345/215/227.md +34 -0
  206. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//346/233/264/346/226/260/346/227/245/345/277/227.md +209 -0
  207. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//344/270/211/346/226/271/346/225/260/346/215/256.md +152 -0
  208. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +41 -0
  209. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +81 -0
  210. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +181 -0
  211. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal//350/277/233/351/230/266/346/214/207/345/215/227.md +346 -0
  212. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216/unreal.md +228 -0
  213. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//346/270/270/346/210/217/345/274/225/346/223/216.md +20 -0
  214. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
  215. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//346/233/264/346/226/260/346/227/245/345/277/227.md +201 -0
  216. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +54 -0
  217. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +139 -0
  218. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +65 -0
  219. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter//350/277/233/351/230/266/346/214/207/345/215/227.md +356 -0
  220. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/flutter.md +176 -0
  221. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//345/220/210/350/247/204/346/214/207/345/215/227.md +37 -0
  222. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//346/233/264/346/226/260/346/227/245/345/277/227.md +162 -0
  223. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +60 -0
  224. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +140 -0
  225. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +23 -0
  226. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native//350/277/233/351/230/266/346/214/207/345/215/227.md +375 -0
  227. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/react-native.md +176 -0
  228. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//346/233/264/346/226/260/346/227/245/345/277/227.md +34 -0
  229. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227/native/346/224/257/346/214/201.md +96 -0
  230. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//345/244/232/345/256/236/344/276/213.md +48 -0
  231. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +57 -0
  232. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//350/207/252/345/212/250/351/207/207/351/233/206.md +68 -0
  233. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +249 -0
  234. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app//350/277/233/351/230/266/346/214/207/345/215/227.md +420 -0
  235. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266/uni-app.md +193 -0
  236. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk//350/267/250/345/271/263/345/217/260/346/241/206/346/236/266.md +15 -0
  237. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//345/256/242/346/210/267/347/253/257-sdk.md +35 -0
  238. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245/filebeat-logstash-/344/275/277/347/224/250/346/214/207/345/215/227.md +638 -0
  239. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245/logbus2-/344/275/277/347/224/250/346/214/207/345/215/227.md +1140 -0
  240. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245/ta-datax-writer-/346/217/222/344/273/266/344/275/277/347/224/250/346/214/207/345/215/227.md +256 -0
  241. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/215/256/345/257/274/345/205/245.md +17 -0
  242. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/225/260/346/225/260/347/247/221/346/212/200sdk/351/232/220/347/247/201/345/243/260/346/230/216.md +298 -0
  243. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227-HZrPwz.md +80 -0
  244. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227-U1zKwj.md +108 -0
  245. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//346/233/264/346/226/260/346/227/245/345/277/227.md +114 -0
  246. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225-LEb9wx.md +46 -0
  247. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225-TfR3wg.md +46 -0
  248. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +93 -0
  249. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247-U1Qvwk.md +75 -0
  250. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247-X08Fw7.md +75 -0
  251. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  252. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227-Jc1dwk.md +245 -0
  253. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227-YGuuwc.md +237 -0
  254. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c//350/277/233/351/230/266/346/214/207/345/215/227.md +242 -0
  255. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c-D4KBwg.md +211 -0
  256. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c-HF7Dwv.md +169 -0
  257. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/c.md +225 -0
  258. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//346/233/264/346/226/260/346/227/245/345/277/227.md +55 -0
  259. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +51 -0
  260. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  261. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang//350/277/233/351/230/266/346/214/207/345/215/227.md +151 -0
  262. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/erlang.md +204 -0
  263. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//346/233/264/346/226/260/346/227/245/345/277/227.md +135 -0
  264. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +46 -0
  265. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  266. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang//350/277/233/351/230/266/346/214/207/345/215/227.md +208 -0
  267. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/golang.md +193 -0
  268. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//346/233/264/346/226/260/346/227/245/345/277/227.md +138 -0
  269. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +52 -0
  270. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  271. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java//350/277/233/351/230/266/346/214/207/345/215/227.md +289 -0
  272. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/java.md +214 -0
  273. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//346/233/264/346/226/260/346/227/245/345/277/227.md +123 -0
  274. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +57 -0
  275. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  276. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua//350/277/233/351/230/266/346/214/207/345/215/227.md +234 -0
  277. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/lua.md +165 -0
  278. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//346/233/264/346/226/260/346/227/245/345/277/227.md +89 -0
  279. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +65 -0
  280. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  281. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs//350/277/233/351/230/266/346/214/207/345/215/227.md +263 -0
  282. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/nodejs.md +161 -0
  283. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//346/233/264/346/226/260/346/227/245/345/277/227.md +86 -0
  284. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +48 -0
  285. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  286. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php//350/277/233/351/230/266/346/214/207/345/215/227.md +269 -0
  287. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/php.md +206 -0
  288. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//346/233/264/346/226/260/346/227/245/345/277/227.md +155 -0
  289. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +47 -0
  290. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  291. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python//350/277/233/351/230/266/346/214/207/345/215/227.md +274 -0
  292. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/python.md +162 -0
  293. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//346/233/264/346/226/260/346/227/245/345/277/227.md +53 -0
  294. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//350/277/233/351/230/266/346/214/207/345/215/227//345/256/236/346/227/266/350/260/203/350/257/225.md +50 -0
  295. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//350/277/233/351/230/266/346/214/207/345/215/227//351/242/204/347/275/256/345/261/236/346/200/247.md +75 -0
  296. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby//350/277/233/351/230/266/346/214/207/345/215/227.md +226 -0
  297. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk/ruby.md +165 -0
  298. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227//346/234/215/345/212/241/347/253/257-sdk.md +23 -0
  299. package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227.md +64 -0
  300. package/wiki/te-docs/raw//350/277/233/351/230/266/346/225/260/346/215/256/347/261/273/345/236/213//345/217/257/346/233/264/346/226/260/344/272/213/344/273/266.md +109 -0
  301. package/wiki/te-docs/raw//350/277/233/351/230/266/346/225/260/346/215/256/347/261/273/345/236/213//351/246/226/346/254/241/344/272/213/344/273/266/346/240/241/351/252/214.md +88 -0
  302. package/wiki/te-docs/raw//350/277/233/351/230/266/346/225/260/346/215/256/347/261/273/345/236/213.md +22 -0
  303. package/wiki/te-docs/schema.md +17 -0
  304. package/wiki/te-docs/synthesis/batch-ingest-comparison.md +117 -0
  305. package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +136 -0
  306. package/wiki/te-docs/synthesis/restful-api-reference.md +142 -0
  307. package/wiki/te-docs/synthesis/sdk-selection.md +79 -0
  308. package/wiki/te-docs/synthesis/server-sdk-overview.md +124 -0
@@ -0,0 +1,152 @@
1
+ import { request } from 'undici';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { getTokenPath } from './home.js';
4
+ import { TEDebugClient } from '../te-debug/client.js';
5
+ const DEFAULT_HOST = 'https://web-ta-demo.thinkingdata.cn';
6
+ function formatTeTime(d) {
7
+ const pad = (n, w = 2) => String(n).padStart(w, '0');
8
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}.${pad(d.getMilliseconds(), 3)}`;
9
+ }
10
+ async function getToken(host) {
11
+ let cache;
12
+ try {
13
+ cache = JSON.parse(await readFile(getTokenPath(), 'utf8'));
14
+ }
15
+ catch {
16
+ throw new Error(`no cached token for ${host}; run 'ae-tracking auth login --host ${host}' first`);
17
+ }
18
+ const tok = cache[host]?.token;
19
+ if (!tok)
20
+ throw new Error(`no cached token for ${host}; run 'ae-tracking auth login --host ${host}' first`);
21
+ return tok;
22
+ }
23
+ function parseProps(prop) {
24
+ const out = {};
25
+ for (const kv of prop) {
26
+ const ix = kv.indexOf('=');
27
+ if (ix > 0)
28
+ out[kv.slice(0, ix)] = kv.slice(ix + 1);
29
+ }
30
+ return out;
31
+ }
32
+ function nowMinusOneHour() {
33
+ const d = new Date(Date.now() - 60 * 60 * 1000);
34
+ // YYYY-MM-DD HH:MM:SS in local time, matching what AE UI sends
35
+ const pad = (n) => String(n).padStart(2, '0');
36
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())} ${pad(d.getHours())}:${pad(d.getMinutes())}:${pad(d.getSeconds())}`;
37
+ }
38
+ export function registerDebug(cmd) {
39
+ cmd.description('AE Debug-mode utilities (devices, test events, watch)');
40
+ // device subgroup
41
+ const device = cmd.command('device').description('manage AE Debug devices');
42
+ device.command('list')
43
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
44
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
45
+ .action(async (opts) => {
46
+ const token = await getToken(opts.host);
47
+ const list = await new TEDebugClient({ host: opts.host, token }).listDevice(opts.project);
48
+ if (list.length === 0) {
49
+ console.log('(no devices)');
50
+ return;
51
+ }
52
+ console.log('deviceId\tdeviceName\tlastClearTime');
53
+ for (const d of list)
54
+ console.log(`${d.deviceId}\t${d.deviceName}\t${d.lastClearTime ?? ''}`);
55
+ });
56
+ device.command('add')
57
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
58
+ .requiredOption('--device-id <id>', 'device identifier (becomes #device_id when sending events)')
59
+ .requiredOption('--device-name <name>', 'human-readable label')
60
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
61
+ .action(async (opts) => {
62
+ const token = await getToken(opts.host);
63
+ await new TEDebugClient({ host: opts.host, token }).addDevice(opts.project, opts.deviceId, opts.deviceName);
64
+ console.log(`ok: device ${opts.deviceId} added`);
65
+ });
66
+ device.command('select')
67
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
68
+ .requiredOption('--device-id <id>')
69
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
70
+ .action(async (opts) => {
71
+ const token = await getToken(opts.host);
72
+ await new TEDebugClient({ host: opts.host, token }).selectDevice(opts.project, opts.deviceId);
73
+ console.log(`ok: device ${opts.deviceId} selected`);
74
+ });
75
+ device.command('remove')
76
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
77
+ .requiredOption('--device-id <id>')
78
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
79
+ .action(async (opts) => {
80
+ const token = await getToken(opts.host);
81
+ await new TEDebugClient({ host: opts.host, token }).removeDevice(opts.project, opts.deviceId);
82
+ console.log(`ok: device ${opts.deviceId} removed`);
83
+ });
84
+ // send: REST API connectivity + format validation (debug=1 for detailed errors)
85
+ // NOTE: REST API events do NOT appear in AE Debug UI — that only shows
86
+ // events from SDK instances initialized with mode:'debug'. This command
87
+ // validates receiver reachability, appId correctness, and data format.
88
+ cmd.command('send')
89
+ .description('validate connectivity: POST a test event via REST API (does NOT appear in Debug UI)')
90
+ .requiredOption('--receiver <url>', 'AE data receiver URL')
91
+ .requiredOption('--appid <id>', 'AE appId')
92
+ .requiredOption('--event <name>', 'event name')
93
+ .option('--distinct-id <id>', '#distinct_id', 'claude-test')
94
+ .option('--prop <kv...>', 'k=v pairs (repeatable)', [])
95
+ .action(async (opts) => {
96
+ const body = {
97
+ appid: opts.appid,
98
+ debug: 1,
99
+ data: {
100
+ '#type': 'track',
101
+ '#event_name': opts.event,
102
+ '#time': formatTeTime(new Date()),
103
+ '#distinct_id': opts.distinctId,
104
+ properties: parseProps(opts.prop),
105
+ },
106
+ };
107
+ const url = opts.receiver.replace(/\/$/, '') + '/sync_json';
108
+ const { statusCode, body: resBody } = await request(url, {
109
+ method: 'POST',
110
+ headers: { 'content-type': 'application/json' },
111
+ body: JSON.stringify(body),
112
+ });
113
+ const text = await resBody.text();
114
+ console.log(`HTTP ${statusCode}`);
115
+ console.log(text);
116
+ if (statusCode === 200) {
117
+ try {
118
+ const r = JSON.parse(text);
119
+ if (r.code === 0)
120
+ console.log('\n✓ validation passed: receiver + appId + data format OK');
121
+ else
122
+ console.log(`\n✗ validation failed: ${r.msg ?? 'unknown error'}`);
123
+ }
124
+ catch { }
125
+ }
126
+ });
127
+ // watch: one-shot snapshot of SDK debug events (requires SDK initialized with mode:'debug')
128
+ cmd.command('watch')
129
+ .description('pull events from a device running SDK in debug mode (one-shot snapshot)')
130
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
131
+ .requiredOption('--device-id <id>')
132
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
133
+ .option('--since <iso>', 'startTime in YYYY-MM-DD HH:MM:SS local time (default: 1 hour ago)')
134
+ .action(async (opts) => {
135
+ const token = await getToken(opts.host);
136
+ const since = opts.since ?? nowMinusOneHour();
137
+ const data = await new TEDebugClient({ host: opts.host, token }).listDeviceData(opts.project, opts.deviceId, since);
138
+ const total = data.eventList.length + data.deviceDataList.length;
139
+ if (total === 0) {
140
+ console.log(`(no events received since ${since})`);
141
+ return;
142
+ }
143
+ console.log(`# eventList (${data.eventList.length}):`);
144
+ for (const e of data.eventList)
145
+ console.log(' ' + JSON.stringify(e));
146
+ console.log(`# deviceDataList (${data.deviceDataList.length}):`);
147
+ for (const e of data.deviceDataList)
148
+ console.log(' ' + JSON.stringify(e));
149
+ console.log('\n# raw');
150
+ console.log(JSON.stringify(data, null, 2));
151
+ });
152
+ }
@@ -0,0 +1,4 @@
1
+ export declare function getHomeDir(): string;
2
+ export declare function getTeTrackingDir(): string;
3
+ export declare function getTokenPath(): string;
4
+ export declare function getClaudeSkillsDir(): string;
@@ -0,0 +1,15 @@
1
+ // src/cli/home.ts
2
+ import { homedir } from 'node:os';
3
+ import { join } from 'node:path';
4
+ export function getHomeDir() {
5
+ return process.env.HOME ?? homedir();
6
+ }
7
+ export function getTeTrackingDir() {
8
+ return join(getHomeDir(), '.ae-tracking');
9
+ }
10
+ export function getTokenPath() {
11
+ return join(getTeTrackingDir(), 'tokens.json');
12
+ }
13
+ export function getClaudeSkillsDir() {
14
+ return join(getHomeDir(), '.claude', 'skills');
15
+ }
@@ -0,0 +1,14 @@
1
+ import { Command } from 'commander';
2
+ export interface InitOptions {
3
+ quiet?: boolean;
4
+ force?: boolean;
5
+ uninstall?: boolean;
6
+ }
7
+ export interface InitReport {
8
+ installed: string[];
9
+ skipped: string[];
10
+ conflicts: string[];
11
+ uninstalled: string[];
12
+ }
13
+ export declare function runInit(opts?: InitOptions): Promise<InitReport>;
14
+ export declare function registerInit(cmd: Command): void;
@@ -0,0 +1,107 @@
1
+ import { mkdir, readlink, lstat, unlink, symlink } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { getPackageRoot } from './package-root.js';
4
+ import { getClaudeSkillsDir, getTeTrackingDir } from './home.js';
5
+ const SKILL_NAMES = ['generate-tracking-plan', 'generate-tracking-code'];
6
+ async function linkTarget(path) {
7
+ try {
8
+ const s = await lstat(path);
9
+ if (!s.isSymbolicLink())
10
+ return 'NOT_SYMLINK';
11
+ return await readlink(path);
12
+ }
13
+ catch {
14
+ return null;
15
+ }
16
+ }
17
+ export async function runInit(opts = {}) {
18
+ const pkg = getPackageRoot();
19
+ const skillsDir = getClaudeSkillsDir();
20
+ await mkdir(skillsDir, { recursive: true });
21
+ const rep = { installed: [], skipped: [], conflicts: [], uninstalled: [] };
22
+ for (const name of SKILL_NAMES) {
23
+ const src = join(pkg, 'skills', name);
24
+ const dst = join(skillsDir, name);
25
+ const expected = src;
26
+ if (opts.uninstall) {
27
+ const t = await linkTarget(dst);
28
+ if (t === expected) {
29
+ await unlink(dst);
30
+ rep.uninstalled.push(name);
31
+ }
32
+ continue;
33
+ }
34
+ const t = await linkTarget(dst);
35
+ if (t === expected) {
36
+ rep.skipped.push(name);
37
+ continue;
38
+ }
39
+ if (t === null) {
40
+ await symlink(src, dst, 'dir');
41
+ rep.installed.push(name);
42
+ continue;
43
+ }
44
+ // Conflict: existing entry (third-party symlink OR real dir)
45
+ if (opts.force && t !== 'NOT_SYMLINK') {
46
+ await unlink(dst);
47
+ await symlink(src, dst, 'dir');
48
+ rep.installed.push(name);
49
+ }
50
+ else {
51
+ rep.conflicts.push(name);
52
+ }
53
+ }
54
+ // Wiki symlink: ~/.ae-tracking/wiki → <packageRoot>/wiki
55
+ const wikiSrc = join(pkg, 'wiki');
56
+ const wikiDst = join(getTeTrackingDir(), 'wiki');
57
+ if (!opts.uninstall) {
58
+ await mkdir(getTeTrackingDir(), { recursive: true });
59
+ const wt = await linkTarget(wikiDst);
60
+ if (wt === wikiSrc) {
61
+ if (!opts.quiet)
62
+ console.log('· skipped wiki (already linked)');
63
+ }
64
+ else if (wt === null) {
65
+ await symlink(wikiSrc, wikiDst, 'dir');
66
+ if (!opts.quiet)
67
+ console.log('✓ installed wiki');
68
+ }
69
+ else if (opts.force && wt !== 'NOT_SYMLINK') {
70
+ await unlink(wikiDst);
71
+ await symlink(wikiSrc, wikiDst, 'dir');
72
+ if (!opts.quiet)
73
+ console.log('✓ installed wiki (forced)');
74
+ }
75
+ else {
76
+ if (!opts.quiet)
77
+ console.warn('! conflict wiki — use --force or remove manually');
78
+ }
79
+ }
80
+ else {
81
+ const wt = await linkTarget(wikiDst);
82
+ if (wt === wikiSrc) {
83
+ await unlink(wikiDst);
84
+ if (!opts.quiet)
85
+ console.log('✗ uninstalled wiki');
86
+ }
87
+ }
88
+ if (!opts.quiet) {
89
+ for (const n of rep.installed)
90
+ console.log(`✓ installed ${n}`);
91
+ for (const n of rep.skipped)
92
+ console.log(`· skipped ${n} (already linked)`);
93
+ for (const n of rep.conflicts)
94
+ console.warn(`! conflict ${n} — use --force or remove manually`);
95
+ for (const n of rep.uninstalled)
96
+ console.log(`✗ uninstalled ${n}`);
97
+ }
98
+ return rep;
99
+ }
100
+ export function registerInit(cmd) {
101
+ cmd.description('install/uninstall Claude Code skills into ~/.claude/skills/')
102
+ .option('--force', 'overwrite conflicting third-party symlinks')
103
+ .option('--uninstall', 'remove symlinks that point to this package')
104
+ .action(async (opts) => {
105
+ await runInit({ force: opts.force, uninstall: opts.uninstall });
106
+ });
107
+ }
@@ -0,0 +1 @@
1
+ export declare function getPackageRoot(): string;
@@ -0,0 +1,20 @@
1
+ // src/cli/package-root.ts
2
+ import { fileURLToPath } from 'node:url';
3
+ import { dirname, join } from 'node:path';
4
+ import { existsSync, readFileSync } from 'node:fs';
5
+ export function getPackageRoot() {
6
+ let cur = dirname(fileURLToPath(import.meta.url));
7
+ while (cur !== dirname(cur)) {
8
+ const pj = join(cur, 'package.json');
9
+ if (existsSync(pj)) {
10
+ try {
11
+ const pkg = JSON.parse(readFileSync(pj, 'utf8'));
12
+ if (pkg.name === 'ae-tracking' || pkg.name === '@thinkingdata/ae-tracking')
13
+ return cur;
14
+ }
15
+ catch { /* keep walking */ }
16
+ }
17
+ cur = dirname(cur);
18
+ }
19
+ throw new Error('getPackageRoot: could not find ae-tracking package.json in ancestor dirs');
20
+ }
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerPlan(cmd: Command): void;
@@ -0,0 +1,242 @@
1
+ import { readFile, writeFile } from 'node:fs/promises';
2
+ import path from 'node:path';
3
+ import { getTokenPath } from './home.js';
4
+ import { refreshToken } from './auth.js';
5
+ import { writeDraftXlsx, validateDraft } from '../xlsx/write.js';
6
+ import { TEClient } from '../client.js';
7
+ import { fetchPlan } from '../te-plan/fetch.js';
8
+ import { injectAutotrackEvents } from '../plan/draft.js';
9
+ import { validateAndFix, fixDraft, extractErrors } from '../plan/fix.js';
10
+ import { detectConflicts, formatConflictReport } from '../plan/conflict.js';
11
+ const DEFAULT_HOST = 'https://web-ta-demo.thinkingdata.cn';
12
+ const MAX_FIX_RETRIES = 3;
13
+ /**
14
+ * 获取 token(支持自动刷新)
15
+ * @param host AE host
16
+ * @param autoRefresh token 过期时自动刷新(macOS 从 Chrome 获取)
17
+ */
18
+ async function getToken(host, autoRefresh = false) {
19
+ let cache = {};
20
+ try {
21
+ cache = JSON.parse(await readFile(getTokenPath(), 'utf8'));
22
+ }
23
+ catch { /* ignore */ }
24
+ const tok = cache[host]?.token;
25
+ if (!tok) {
26
+ if (autoRefresh && process.platform === 'darwin') {
27
+ console.log('[auth] no cached token, attempting auto-refresh...');
28
+ return refreshToken(host);
29
+ }
30
+ throw new Error(`no cached token for ${host}; run 'ae-tracking auth login --host ${host}' first`);
31
+ }
32
+ return tok;
33
+ }
34
+ export function registerPlan(cmd) {
35
+ cmd.description('manage AE tracking plans');
36
+ cmd.command('draft')
37
+ .requiredOption('--in <path>', 'draft JSON input')
38
+ .requiredOption('--out <path>', 'xlsx output')
39
+ .option('--fix', 'auto fix validation errors', false)
40
+ .action(async (opts) => {
41
+ const draft = JSON.parse(await readFile(opts.in, 'utf8'));
42
+ // 注入 SDK 自动采集事件
43
+ injectAutotrackEvents(draft);
44
+ // 校验和自动修复
45
+ if (opts.fix) {
46
+ const fixed = validateAndFix(draft);
47
+ if (fixed.length > 0) {
48
+ console.log(`[plan-draft] auto-fixed: ${fixed.join(', ')}`);
49
+ await writeFile(opts.in, JSON.stringify(draft, null, 2), 'utf8');
50
+ }
51
+ }
52
+ // 尝试校验,如果失败且开启了 fix,尝试修复后重试
53
+ try {
54
+ validateDraft(draft);
55
+ }
56
+ catch (e) {
57
+ if (opts.fix) {
58
+ console.log(`[plan-draft] validation failed, attempting fix...`);
59
+ const fixed = validateAndFix(draft);
60
+ if (fixed.length > 0) {
61
+ console.log(`[plan-draft] fixed: ${fixed.join(', ')}`);
62
+ await writeFile(opts.in, JSON.stringify(draft, null, 2), 'utf8');
63
+ }
64
+ }
65
+ else {
66
+ throw e;
67
+ }
68
+ }
69
+ await writeDraftXlsx(draft, opts.out);
70
+ const counts = `events=${draft.events.length}, event_props=${draft.event_properties.length}, common=${draft.common_event_properties.length}, user=${draft.user_properties.length}`;
71
+ console.log(`wrote ${opts.out} (${counts})`);
72
+ });
73
+ cmd.command('validate')
74
+ .requiredOption('--in <path>', 'draft JSON input')
75
+ .option('--fix', 'auto fix validation errors', false)
76
+ .action(async (opts) => {
77
+ const draft = JSON.parse(await readFile(opts.in, 'utf8'));
78
+ try {
79
+ validateDraft(draft);
80
+ console.log('✅ Draft validation passed');
81
+ }
82
+ catch (e) {
83
+ const errorMsg = e instanceof Error ? e.message : String(e);
84
+ console.log(`❌ Draft validation failed:\n${errorMsg}`);
85
+ if (opts.fix) {
86
+ console.log('\n🔧 Attempting auto-fix...');
87
+ const fixed = validateAndFix(draft);
88
+ if (fixed.length > 0) {
89
+ console.log(`Fixed: ${fixed.join(', ')}`);
90
+ await writeFile(opts.in, JSON.stringify(draft, null, 2), 'utf8');
91
+ console.log(`Updated: ${opts.in}`);
92
+ // 重新校验
93
+ try {
94
+ validateDraft(draft);
95
+ console.log('✅ Validation passed after fix');
96
+ }
97
+ catch (e2) {
98
+ console.log(`❌ Still has errors after fix: ${e2 instanceof Error ? e2.message : e2}`);
99
+ }
100
+ }
101
+ else {
102
+ console.log('No auto-fix available for these errors');
103
+ }
104
+ }
105
+ }
106
+ });
107
+ cmd.command('upload')
108
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
109
+ .requiredOption('--xlsx <path>', 'xlsx file')
110
+ .requiredOption('--draft <path>', 'draft JSON (for auto-fix)')
111
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
112
+ .option('--replace', 'delete existing plan first', false)
113
+ .option('--auto-fix', 'auto fix upload errors and retry', true)
114
+ .action(async (opts) => {
115
+ // 使用自动刷新获取 token
116
+ let token = await getToken(opts.host, true);
117
+ let client = new TEClient({ host: opts.host, token });
118
+ // 追加模式:先检测冲突
119
+ if (!opts.replace) {
120
+ console.log('[plan-upload] checking existing plan for conflicts...');
121
+ try {
122
+ const existingDraft = await fetchPlan({ projectId: opts.project, host: opts.host, token });
123
+ // 有既有方案,进行冲突检测
124
+ const newDraft = JSON.parse(await readFile(opts.draft, 'utf8'));
125
+ const conflictResult = detectConflicts(newDraft, existingDraft);
126
+ if (conflictResult.hasErrors) {
127
+ // 严重冲突:打印报告并退出
128
+ const existingSummary = {
129
+ events: existingDraft.events.length,
130
+ eventProps: existingDraft.event_properties.length,
131
+ commonProps: existingDraft.common_event_properties.length,
132
+ userProps: existingDraft.user_properties.length,
133
+ };
134
+ console.log('\n' + formatConflictReport(conflictResult, existingSummary));
135
+ console.log('\n❌ Cannot proceed with append mode. Use --replace to overwrite, or fix property types in draft.json.');
136
+ return;
137
+ }
138
+ if (conflictResult.hasWarnings) {
139
+ // 仅提醒:打印并继续
140
+ const existingSummary = {
141
+ events: existingDraft.events.length,
142
+ eventProps: existingDraft.event_properties.length,
143
+ commonProps: existingDraft.common_event_properties.length,
144
+ userProps: existingDraft.user_properties.length,
145
+ };
146
+ console.log('\n' + formatConflictReport(conflictResult, existingSummary));
147
+ console.log('\n继续追加(同名事件不会覆盖)...\n');
148
+ }
149
+ }
150
+ catch (e) {
151
+ // 区分 token 过期和项目无方案
152
+ const errorMsg = e instanceof Error ? e.message : String(e);
153
+ if (errorMsg.includes('return_code -1001') || errorMsg.includes('token expired')) {
154
+ // Token 过期:自动刷新后重试一次
155
+ console.log('[auth] token expired, auto-refreshing...');
156
+ token = await refreshToken(opts.host);
157
+ client = new TEClient({ host: opts.host, token });
158
+ // 不需要再检测冲突,直接进入上传流程(后续上传失败会再次检测)
159
+ }
160
+ else {
161
+ // 其他错误(如 404、无数据):项目无既有方案,直接上传
162
+ console.log('[plan-upload] no existing plan found, proceeding with upload');
163
+ }
164
+ }
165
+ }
166
+ if (opts.replace) {
167
+ const del = await client.deleteProgram(opts.project);
168
+ console.log(`[plan-upload] deleted existing plan: ${del.return_message}; waiting 5s for consistency...`);
169
+ await new Promise((resolve) => setTimeout(resolve, 5000));
170
+ }
171
+ // 上传并检查错误
172
+ let retryCount = 0;
173
+ let draft = JSON.parse(await readFile(opts.draft, 'utf8'));
174
+ let tokenRefreshed = false; // 防止无限刷新
175
+ while (retryCount < MAX_FIX_RETRIES) {
176
+ const file = await readFile(opts.xlsx);
177
+ const res = await client.uploadProgramExcel({
178
+ projectId: opts.project,
179
+ file,
180
+ filename: path.basename(opts.xlsx),
181
+ });
182
+ console.log(JSON.stringify(res, null, 2));
183
+ // Token 过期:自动刷新后重试
184
+ if (res.return_code === -1001 && !tokenRefreshed) {
185
+ console.log('[auth] token expired during upload, auto-refreshing...');
186
+ token = await refreshToken(opts.host);
187
+ client = new TEClient({ host: opts.host, token });
188
+ tokenRefreshed = true;
189
+ continue; // 重试上传
190
+ }
191
+ // 检查是否有错误
192
+ const errors = extractErrors(res);
193
+ if (errors.length === 0 || res.return_code !== 0) {
194
+ // 无错误或上传失败(非校验错误)
195
+ break;
196
+ }
197
+ if (!opts.autoFix) {
198
+ console.log('\n❌ Upload has validation errors. Run with --auto-fix to auto-repair.');
199
+ break;
200
+ }
201
+ // 自动修复
202
+ console.log(`\n🔧 Auto-fixing upload errors (attempt ${retryCount + 1}/${MAX_FIX_RETRIES})...`);
203
+ const fixed = fixDraft(draft, res);
204
+ if (fixed.length === 0) {
205
+ console.log('No auto-fix available for these errors');
206
+ break;
207
+ }
208
+ console.log(`Fixed: ${fixed.join(', ')}`);
209
+ // 更新 draft.json 并重新生成 xlsx
210
+ await writeFile(opts.draft, JSON.stringify(draft, null, 2), 'utf8');
211
+ injectAutotrackEvents(draft);
212
+ await writeDraftXlsx(draft, opts.xlsx);
213
+ console.log(`[plan-upload] regenerated: ${opts.xlsx}`);
214
+ retryCount++;
215
+ }
216
+ if (retryCount >= MAX_FIX_RETRIES) {
217
+ console.log('\n⚠️ Max fix retries reached. Manual intervention required.');
218
+ }
219
+ });
220
+ cmd.command('fetch')
221
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
222
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
223
+ .option('--out <path>', 'write to file instead of stdout')
224
+ .action(async (opts) => {
225
+ const token = await getToken(opts.host);
226
+ const draft = await fetchPlan({ projectId: opts.project, host: opts.host, token });
227
+ const s = JSON.stringify(draft, null, 2) + '\n';
228
+ if (opts.out)
229
+ await writeFile(opts.out, s, 'utf8');
230
+ else
231
+ process.stdout.write(s);
232
+ });
233
+ cmd.command('delete')
234
+ .requiredOption('--project <id>', 'AE projectId', (v) => parseInt(v, 10))
235
+ .option('--host <url>', 'AE host', DEFAULT_HOST)
236
+ .action(async (opts) => {
237
+ const token = await getToken(opts.host);
238
+ const client = new TEClient({ host: opts.host, token });
239
+ const res = await client.deleteProgram(opts.project);
240
+ console.log(JSON.stringify(res, null, 2));
241
+ });
242
+ }
@@ -0,0 +1,2 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerWiki(cmd: Command): void;
@@ -0,0 +1,20 @@
1
+ import { searchIndex } from '../wiki-query/query.js';
2
+ export function registerWiki(cmd) {
3
+ cmd.description('AE docs wiki (bundled)');
4
+ cmd.command('query')
5
+ .requiredOption('--keyword <kw>', 'substring to search in index')
6
+ .action((opts) => {
7
+ const hits = searchIndex(opts.keyword);
8
+ for (const h of hits)
9
+ console.log(`${h.name}\t${h.rawPath}\t${h.sourceUrl}`);
10
+ });
11
+ cmd.command('sync')
12
+ .description('refresh wiki from docs-v2 (developer use)')
13
+ .action(async () => {
14
+ // Re-invokes the three existing scripts sequentially. Shipped wiki
15
+ // is read-only for end users; this command mainly exists for maintainers.
16
+ console.error('wiki sync: run in a repo checkout with scripts/wiki-plan.ts available;');
17
+ console.error('this is not supported in the published package.');
18
+ process.exit(2);
19
+ });
20
+ }
@@ -0,0 +1,62 @@
1
+ export interface TEProperty {
2
+ name: string;
3
+ displayName?: string;
4
+ type: 'string' | 'number' | 'bool' | 'datetime' | 'array_row' | 'array_string';
5
+ desc?: string;
6
+ createTime?: string;
7
+ creator?: string;
8
+ lastUpdateAuth?: string;
9
+ lastUpdateTime?: string;
10
+ hasReported?: boolean;
11
+ }
12
+ export interface TEUserProperty extends TEProperty {
13
+ propTag?: string;
14
+ updateType: 'user_set' | 'user_setOnce' | 'user_add';
15
+ updateTypeName?: string;
16
+ }
17
+ export interface TEEvent {
18
+ eventName: string;
19
+ displayName?: string;
20
+ eventDesc?: string;
21
+ eventTag?: string;
22
+ createTime?: string;
23
+ creator?: string;
24
+ lastUpdateAuth?: string;
25
+ lastUpdateTime?: string;
26
+ hasReported?: boolean;
27
+ props: string[];
28
+ propInfosOnEvent?: Array<{
29
+ name: string;
30
+ hasReported?: boolean;
31
+ }>;
32
+ }
33
+ export interface TEProgram {
34
+ projectId: number;
35
+ createTime?: string;
36
+ events: TEEvent[];
37
+ eventProps: TEProperty[];
38
+ commonEventProps: TEProperty[];
39
+ userProps: TEUserProperty[];
40
+ }
41
+ export declare class TEClient {
42
+ private opts;
43
+ constructor(opts: {
44
+ host: string;
45
+ token: string;
46
+ });
47
+ private url;
48
+ private assertOk;
49
+ getProgram(projectId: number): Promise<TEProgram | null>;
50
+ deleteProgram(projectId: number): Promise<{
51
+ return_code: number;
52
+ return_message: string;
53
+ }>;
54
+ uploadProgramExcel(args: {
55
+ projectId: number;
56
+ file: Buffer;
57
+ filename: string;
58
+ }): Promise<{
59
+ return_code: number;
60
+ return_message: string;
61
+ }>;
62
+ }