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.
- package/CHANGELOG.md +43 -0
- package/README.md +50 -0
- package/dist/bin/ae-tracking.d.ts +2 -0
- package/dist/bin/ae-tracking.js +20 -0
- package/dist/scripts/postinstall.d.ts +1 -0
- package/dist/scripts/postinstall.js +17 -0
- package/dist/src/auth.d.ts +12 -0
- package/dist/src/auth.js +215 -0
- package/dist/src/cli/auth.d.ts +8 -0
- package/dist/src/cli/auth.js +81 -0
- package/dist/src/cli/code.d.ts +2 -0
- package/dist/src/cli/code.js +85 -0
- package/dist/src/cli/debug.d.ts +2 -0
- package/dist/src/cli/debug.js +152 -0
- package/dist/src/cli/home.d.ts +4 -0
- package/dist/src/cli/home.js +15 -0
- package/dist/src/cli/init.d.ts +14 -0
- package/dist/src/cli/init.js +107 -0
- package/dist/src/cli/package-root.d.ts +1 -0
- package/dist/src/cli/package-root.js +20 -0
- package/dist/src/cli/plan.d.ts +2 -0
- package/dist/src/cli/plan.js +242 -0
- package/dist/src/cli/wiki.d.ts +2 -0
- package/dist/src/cli/wiki.js +20 -0
- package/dist/src/client.d.ts +62 -0
- package/dist/src/client.js +56 -0
- package/dist/src/config.d.ts +4 -0
- package/dist/src/config.js +29 -0
- package/dist/src/plan/autotrack.d.ts +18 -0
- package/dist/src/plan/autotrack.js +350 -0
- package/dist/src/plan/conflict.d.ts +34 -0
- package/dist/src/plan/conflict.js +106 -0
- package/dist/src/plan/draft.d.ts +39 -0
- package/dist/src/plan/draft.js +104 -0
- package/dist/src/plan/fix.d.ts +32 -0
- package/dist/src/plan/fix.js +187 -0
- package/dist/src/plan/types.d.ts +57 -0
- package/dist/src/plan/types.js +1 -0
- package/dist/src/project-detect/detect.d.ts +2 -0
- package/dist/src/project-detect/detect.js +120 -0
- package/dist/src/project-detect/types.d.ts +9 -0
- package/dist/src/project-detect/types.js +1 -0
- package/dist/src/te-debug/client.d.ts +12 -0
- package/dist/src/te-debug/client.js +54 -0
- package/dist/src/te-debug/types.d.ts +16 -0
- package/dist/src/te-debug/types.js +1 -0
- package/dist/src/te-plan/fetch.d.ts +3 -0
- package/dist/src/te-plan/fetch.js +47 -0
- package/dist/src/te-plan/types.d.ts +7 -0
- package/dist/src/te-plan/types.js +1 -0
- package/dist/src/wiki/block-to-md.d.ts +74 -0
- package/dist/src/wiki/block-to-md.js +88 -0
- package/dist/src/wiki/crawler.d.ts +3 -0
- package/dist/src/wiki/crawler.js +71 -0
- package/dist/src/wiki/index-writer.d.ts +4 -0
- package/dist/src/wiki/index-writer.js +70 -0
- package/dist/src/wiki/slugify.d.ts +1 -0
- package/dist/src/wiki/slugify.js +11 -0
- package/dist/src/wiki/types.d.ts +29 -0
- package/dist/src/wiki/types.js +1 -0
- package/dist/src/wiki-query/query.d.ts +8 -0
- package/dist/src/wiki-query/query.js +32 -0
- package/dist/src/xlsx/read.d.ts +2 -0
- package/dist/src/xlsx/read.js +457 -0
- package/dist/src/xlsx/write.d.ts +3 -0
- package/dist/src/xlsx/write.js +251 -0
- package/package.json +47 -0
- package/skills/generate-tracking-code/SKILL.md +551 -0
- package/skills/generate-tracking-code/references/client-sdk-insert.md +92 -0
- package/skills/generate-tracking-code/references/datax-config.md +41 -0
- package/skills/generate-tracking-code/references/debug-script.md +99 -0
- package/skills/generate-tracking-code/references/logbus-config.md +224 -0
- package/skills/generate-tracking-code/references/modes.md +81 -0
- package/skills/generate-tracking-code/references/restful-call.md +34 -0
- package/skills/generate-tracking-code/references/sdk-index.md +123 -0
- package/skills/generate-tracking-code/references/server-sdk-insert.md +175 -0
- package/skills/generate-tracking-code/references/snippet-delivery.md +240 -0
- package/skills/generate-tracking-code/references/te-api.md +181 -0
- package/skills/generate-tracking-plan/SKILL.md +826 -0
- package/skills/generate-tracking-plan/references/autotrack-events.md +238 -0
- package/skills/generate-tracking-plan/references/te-api.md +97 -0
- package/skills/generate-tracking-plan/references/xlsx-schema.md +149 -0
- package/skills/te-wiki-synthesize/SKILL.md +142 -0
- package/wiki/te-docs/index.md +223 -0
- package/wiki/te-docs/log.md +28 -0
- 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
- 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
- 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
- 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
- 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
- package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227/sdk-information-collection-rules.md +63 -0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- package/wiki/te-docs/raw//346/216/245/345/205/245/346/214/207/345/215/227.md +64 -0
- 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
- 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
- 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
- package/wiki/te-docs/schema.md +17 -0
- package/wiki/te-docs/synthesis/batch-ingest-comparison.md +117 -0
- package/wiki/te-docs/synthesis/js-sdk-cheatsheet.md +136 -0
- package/wiki/te-docs/synthesis/restful-api-reference.md +142 -0
- package/wiki/te-docs/synthesis/sdk-selection.md +79 -0
- package/wiki/te-docs/synthesis/server-sdk-overview.md +124 -0
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { getAutotrackEvents } from './autotrack.js';
|
|
4
|
+
export function emptyDraft(meta) {
|
|
5
|
+
return {
|
|
6
|
+
meta: {
|
|
7
|
+
app_type: meta.app_type,
|
|
8
|
+
sdk_integration_mode: meta.sdk_integration_mode,
|
|
9
|
+
client_platforms: meta.client_platforms,
|
|
10
|
+
client_sdk_type: meta.client_sdk_type,
|
|
11
|
+
client_languages: meta.client_languages,
|
|
12
|
+
client_platform_languages: meta.client_platform_languages,
|
|
13
|
+
server_language: meta.server_language,
|
|
14
|
+
project_id: meta.project_id,
|
|
15
|
+
plan_name: meta.plan_name,
|
|
16
|
+
scenario: meta.scenario,
|
|
17
|
+
user_identity: meta.user_identity,
|
|
18
|
+
},
|
|
19
|
+
events: [],
|
|
20
|
+
event_properties: [],
|
|
21
|
+
common_event_properties: [],
|
|
22
|
+
user_properties: [],
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
// 兼容旧接口
|
|
26
|
+
export function emptyDraftLegacy(appType, planName, sdkType) {
|
|
27
|
+
return emptyDraft({
|
|
28
|
+
app_type: appType,
|
|
29
|
+
sdk_integration_mode: 'client_only',
|
|
30
|
+
client_sdk_type: sdkType,
|
|
31
|
+
plan_name: planName,
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export function loadDraft(p) {
|
|
35
|
+
return JSON.parse(fs.readFileSync(p, 'utf8'));
|
|
36
|
+
}
|
|
37
|
+
export function saveDraft(d, p) {
|
|
38
|
+
fs.mkdirSync(path.dirname(p), { recursive: true });
|
|
39
|
+
fs.writeFileSync(p, JSON.stringify(d, null, 2));
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* 向 draft 注入 SDK 自动采集事件
|
|
43
|
+
* 自动采集事件放在 events 数组末尾,标记 source: "autotrack", platform: "client"
|
|
44
|
+
*/
|
|
45
|
+
export function injectAutotrackEvents(draft) {
|
|
46
|
+
const mode = draft.meta.sdk_integration_mode;
|
|
47
|
+
// 仅 client_only 或 both 模式才注入自动采集事件
|
|
48
|
+
if (mode === 'server_only') {
|
|
49
|
+
return draft; // 服务端 SDK 无自动采集事件
|
|
50
|
+
}
|
|
51
|
+
// 兼容:优先使用 client_sdk_type,fallback 到旧字段 sdk_type
|
|
52
|
+
const sdkType = draft.meta.client_sdk_type || draft.meta.sdk_type;
|
|
53
|
+
if (!sdkType) {
|
|
54
|
+
return draft; // 未指定客户端 SDK 类型,不注入
|
|
55
|
+
}
|
|
56
|
+
// 支持数组类型(多平台场景):合并去重
|
|
57
|
+
let autotrackEvents = [];
|
|
58
|
+
if (Array.isArray(sdkType)) {
|
|
59
|
+
const allEvents = sdkType.map(t => getAutotrackEvents(t)).flat();
|
|
60
|
+
// 去重(Android 和 iOS 的自动采集事件相同)
|
|
61
|
+
const seen = new Set();
|
|
62
|
+
autotrackEvents = allEvents.filter(e => {
|
|
63
|
+
if (seen.has(e.event_name))
|
|
64
|
+
return false;
|
|
65
|
+
seen.add(e.event_name);
|
|
66
|
+
return true;
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
autotrackEvents = getAutotrackEvents(sdkType);
|
|
71
|
+
}
|
|
72
|
+
// 过滤掉已存在的自动采集事件(避免重复注入)
|
|
73
|
+
const existingAutotrackNames = new Set(draft.events.filter(e => e.source === 'autotrack').map(e => e.event_name));
|
|
74
|
+
const newEvents = autotrackEvents.filter(e => !existingAutotrackNames.has(e.event_name));
|
|
75
|
+
// 将自动采集事件追加到末尾,并设置 platform: "client"
|
|
76
|
+
const eventsWithPlatform = newEvents.map(e => ({
|
|
77
|
+
...e,
|
|
78
|
+
platform: 'client',
|
|
79
|
+
}));
|
|
80
|
+
draft.events.push(...eventsWithPlatform);
|
|
81
|
+
return draft;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* 获取 draft 中的业务事件(排除自动采集事件)
|
|
85
|
+
*/
|
|
86
|
+
export function getBusinessEvents(draft) {
|
|
87
|
+
return draft.events.filter(e => e.source !== 'autotrack');
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 获取 draft 中的自动采集事件
|
|
91
|
+
*/
|
|
92
|
+
export function getAutotrackEventsFromDraft(draft) {
|
|
93
|
+
return draft.events.filter(e => e.source === 'autotrack');
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 按 platform 分组获取事件
|
|
97
|
+
*/
|
|
98
|
+
export function getEventsByPlatform(draft) {
|
|
99
|
+
return {
|
|
100
|
+
client: draft.events.filter(e => e.platform === 'client'),
|
|
101
|
+
server: draft.events.filter(e => e.platform === 'server'),
|
|
102
|
+
both: draft.events.filter(e => e.platform === 'both'),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Draft } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 埋点方案自动修复
|
|
4
|
+
* 根据 AE API 返回的错误自动修复 draft.json
|
|
5
|
+
*/
|
|
6
|
+
export interface TEUploadError {
|
|
7
|
+
errorType: string;
|
|
8
|
+
errorTypeDesc: string;
|
|
9
|
+
cellName: string;
|
|
10
|
+
row: number;
|
|
11
|
+
value: string;
|
|
12
|
+
}
|
|
13
|
+
export interface TEUploadResponse {
|
|
14
|
+
return_code: number;
|
|
15
|
+
return_message: string;
|
|
16
|
+
data?: {
|
|
17
|
+
eventErrorMap?: Record<string, TEUploadError[]>;
|
|
18
|
+
userErrorMap?: Record<string, TEUploadError[]>;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 从 AE API 响应中提取错误
|
|
23
|
+
*/
|
|
24
|
+
export declare function extractErrors(response: TEUploadResponse): TEUploadError[];
|
|
25
|
+
/**
|
|
26
|
+
* 自动修复 draft.json
|
|
27
|
+
*/
|
|
28
|
+
export declare function fixDraft(draft: Draft, response: TEUploadResponse): string[];
|
|
29
|
+
/**
|
|
30
|
+
* 内部校验修复(在生成 xlsx 前执行)
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateAndFix(draft: Draft): string[];
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 从 AE API 响应中提取错误
|
|
3
|
+
*/
|
|
4
|
+
export function extractErrors(response) {
|
|
5
|
+
const errors = [];
|
|
6
|
+
if (response.data?.eventErrorMap) {
|
|
7
|
+
for (const [errorType, items] of Object.entries(response.data.eventErrorMap)) {
|
|
8
|
+
for (const item of items) {
|
|
9
|
+
errors.push({ ...item, errorType });
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
if (response.data?.userErrorMap) {
|
|
14
|
+
for (const [errorType, items] of Object.entries(response.data.userErrorMap)) {
|
|
15
|
+
for (const item of items) {
|
|
16
|
+
errors.push({ ...item, errorType });
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return errors;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 修复显示名重复错误
|
|
24
|
+
*/
|
|
25
|
+
function fixDisplayDuplicate(draft, errors) {
|
|
26
|
+
// 收集重复的显示名
|
|
27
|
+
const duplicateDisplayNames = new Map();
|
|
28
|
+
for (const error of errors) {
|
|
29
|
+
if (error.errorType === 'event_prop_display_duplicate') {
|
|
30
|
+
const names = duplicateDisplayNames.get(error.value) || [];
|
|
31
|
+
names.push(error.value);
|
|
32
|
+
duplicateDisplayNames.set(error.value, names);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
// 修复:给重复的显示名添加区分前缀
|
|
36
|
+
for (const prop of draft.event_properties) {
|
|
37
|
+
if (duplicateDisplayNames.has(prop.display_name || '')) {
|
|
38
|
+
// 找到这个属性在哪些事件中被引用
|
|
39
|
+
const eventsUsingProp = draft.events.filter(e => e.prop_names.includes(prop.name));
|
|
40
|
+
// 根据属性类型添加前缀
|
|
41
|
+
if (prop.name.includes('.')) {
|
|
42
|
+
// 子属性:添加"明细"前缀
|
|
43
|
+
prop.display_name = `明细${prop.display_name}`;
|
|
44
|
+
}
|
|
45
|
+
else if (eventsUsingProp.length > 0) {
|
|
46
|
+
// 根据事件类型添加前缀
|
|
47
|
+
prop.display_name = `${prop.display_name}(详情)`;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 修复对象组子属性不一致
|
|
54
|
+
*/
|
|
55
|
+
function fixArrayRowConsistency(draft, errors) {
|
|
56
|
+
// 收集每个 array_row 的完整子属性
|
|
57
|
+
const arrayRowChildren = new Map();
|
|
58
|
+
for (const prop of draft.event_properties) {
|
|
59
|
+
if (prop.type === 'array_row') {
|
|
60
|
+
arrayRowChildren.set(prop.name, []);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (const prop of draft.event_properties) {
|
|
64
|
+
if (prop.name.includes('.')) {
|
|
65
|
+
const parent = prop.name.split('.')[0];
|
|
66
|
+
const children = arrayRowChildren.get(parent);
|
|
67
|
+
if (children) {
|
|
68
|
+
children.push(prop.name);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// 对每个事件,确保引用的 array_row 包含完整子属性
|
|
73
|
+
for (const event of draft.events) {
|
|
74
|
+
const propNamesSet = new Set(event.prop_names);
|
|
75
|
+
for (const [arrayRow, children] of arrayRowChildren) {
|
|
76
|
+
if (propNamesSet.has(arrayRow)) {
|
|
77
|
+
// 检查是否包含所有子属性
|
|
78
|
+
for (const child of children) {
|
|
79
|
+
if (!propNamesSet.has(child)) {
|
|
80
|
+
// 添加缺失的子属性
|
|
81
|
+
event.prop_names.push(child);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// 重新排序:先父属性,再子属性(按顺序)
|
|
85
|
+
const arrayRowProps = event.prop_names.filter(p => p === arrayRow || p.startsWith(arrayRow + '.'));
|
|
86
|
+
// 排序:父属性在前,子属性按 children 顺序
|
|
87
|
+
const sorted = [arrayRow, ...children.filter(c => event.prop_names.includes(c))];
|
|
88
|
+
// 移除旧的 array_row 相关属性,插入排序后的
|
|
89
|
+
event.prop_names = event.prop_names.filter(p => !p.startsWith(arrayRow) || p === arrayRow);
|
|
90
|
+
// 在 arrayRow 位置插入排序后的属性
|
|
91
|
+
const idx = event.prop_names.indexOf(arrayRow);
|
|
92
|
+
if (idx >= 0) {
|
|
93
|
+
event.prop_names.splice(idx, 1, ...sorted);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* 修复事件名重复
|
|
101
|
+
*/
|
|
102
|
+
function fixEventNameDuplicate(draft, errors) {
|
|
103
|
+
const duplicateEvents = new Set();
|
|
104
|
+
for (const error of errors) {
|
|
105
|
+
if (error.errorType === 'event_name_duplicate') {
|
|
106
|
+
duplicateEvents.add(error.value);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// 移除重复的事件(保留第一个)
|
|
110
|
+
const seen = new Set();
|
|
111
|
+
draft.events = draft.events.filter(event => {
|
|
112
|
+
if (duplicateEvents.has(event.event_name)) {
|
|
113
|
+
if (seen.has(event.event_name)) {
|
|
114
|
+
return false; // 移除后续重复
|
|
115
|
+
}
|
|
116
|
+
seen.add(event.event_name);
|
|
117
|
+
}
|
|
118
|
+
return true;
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* 自动修复 draft.json
|
|
123
|
+
*/
|
|
124
|
+
export function fixDraft(draft, response) {
|
|
125
|
+
const errors = extractErrors(response);
|
|
126
|
+
const fixed = [];
|
|
127
|
+
if (errors.length === 0) {
|
|
128
|
+
return fixed;
|
|
129
|
+
}
|
|
130
|
+
// 按错误类型分类
|
|
131
|
+
const errorTypes = new Set(errors.map(e => e.errorType));
|
|
132
|
+
// 修复显示名重复
|
|
133
|
+
if (errorTypes.has('event_prop_display_duplicate')) {
|
|
134
|
+
fixDisplayDuplicate(draft, errors);
|
|
135
|
+
fixed.push('修复显示名重复');
|
|
136
|
+
}
|
|
137
|
+
// 修复对象组子属性不一致
|
|
138
|
+
if (errorTypes.has('complex_event_property_should_has_same_child_property')) {
|
|
139
|
+
fixArrayRowConsistency(draft, errors);
|
|
140
|
+
fixed.push('修复对象组子属性不一致');
|
|
141
|
+
}
|
|
142
|
+
// 修复事件名重复
|
|
143
|
+
if (errorTypes.has('event_name_duplicate')) {
|
|
144
|
+
fixEventNameDuplicate(draft, errors);
|
|
145
|
+
fixed.push('移除重复事件');
|
|
146
|
+
}
|
|
147
|
+
return fixed;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 内部校验修复(在生成 xlsx 前执行)
|
|
151
|
+
*/
|
|
152
|
+
export function validateAndFix(draft) {
|
|
153
|
+
const fixed = [];
|
|
154
|
+
// 修复对象组子属性不一致
|
|
155
|
+
const arrayRowChildren = new Map();
|
|
156
|
+
for (const prop of draft.event_properties) {
|
|
157
|
+
if (prop.type === 'array_row') {
|
|
158
|
+
arrayRowChildren.set(prop.name, []);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
for (const prop of draft.event_properties) {
|
|
162
|
+
if (prop.name.includes('.')) {
|
|
163
|
+
const parent = prop.name.split('.')[0];
|
|
164
|
+
const children = arrayRowChildren.get(parent);
|
|
165
|
+
if (children) {
|
|
166
|
+
children.push(prop.name);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
let needFix = false;
|
|
171
|
+
for (const event of draft.events) {
|
|
172
|
+
for (const [arrayRow, children] of arrayRowChildren) {
|
|
173
|
+
if (event.prop_names.includes(arrayRow)) {
|
|
174
|
+
for (const child of children) {
|
|
175
|
+
if (!event.prop_names.includes(child)) {
|
|
176
|
+
needFix = true;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
if (needFix) {
|
|
183
|
+
fixArrayRowConsistency(draft, []);
|
|
184
|
+
fixed.push('修复对象组子属性不一致');
|
|
185
|
+
}
|
|
186
|
+
return fixed;
|
|
187
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export type PropType = 'string' | 'number' | 'bool' | 'datetime' | 'array_row' | 'array_string';
|
|
2
|
+
export type UpdateType = 'user_set' | 'user_setOnce' | 'user_add';
|
|
3
|
+
export type Source = 'template' | 'prd' | 'chat' | 'autotrack';
|
|
4
|
+
export type SDKIntegrationMode = 'client_only' | 'server_only' | 'both';
|
|
5
|
+
export type EventPlatform = 'client' | 'server' | 'both';
|
|
6
|
+
export type ServerLanguage = 'java' | 'python' | 'go' | 'nodejs' | 'php' | 'csharp' | 'cpp' | 'ruby' | 'lua' | 'other';
|
|
7
|
+
export type ClientLanguage = 'java' | 'kotlin' | 'objc' | 'swift' | 'javascript' | 'typescript' | 'csharp' | 'cpp' | 'lua' | 'dart' | 'vue' | 'other';
|
|
8
|
+
export type SDKType = 'android' | 'ios' | 'openharmony' | 'javascript' | 'wechat_mp' | 'wechat_mg' | 'douyin_mp' | 'alipay_mp' | 'other_mp' | 'unity' | 'unity_wxmg' | 'cocos2dx' | 'cocoscreator' | 'layaair' | 'unreal' | 'react_native' | 'flutter' | 'uniapp_mp' | 'uniapp_app' | 'uniapp_h5';
|
|
9
|
+
export interface Property {
|
|
10
|
+
name: string;
|
|
11
|
+
display_name?: string;
|
|
12
|
+
type: PropType;
|
|
13
|
+
desc?: string;
|
|
14
|
+
source: Source;
|
|
15
|
+
}
|
|
16
|
+
export interface UserProperty extends Property {
|
|
17
|
+
update_type?: UpdateType;
|
|
18
|
+
prop_tag?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface Event {
|
|
21
|
+
event_name: string;
|
|
22
|
+
display_name?: string;
|
|
23
|
+
event_tag?: string;
|
|
24
|
+
event_desc?: string;
|
|
25
|
+
platform?: EventPlatform;
|
|
26
|
+
source: Source;
|
|
27
|
+
prop_names: string[];
|
|
28
|
+
}
|
|
29
|
+
export type AccountIdSource = 'user_account' | 'role_id' | 'none';
|
|
30
|
+
export type DistinctIdStrategy = 'auto' | 'device_id' | 'custom';
|
|
31
|
+
export interface UserIdentity {
|
|
32
|
+
account_id_source: AccountIdSource;
|
|
33
|
+
account_id_field?: string;
|
|
34
|
+
distinct_id_strategy: DistinctIdStrategy;
|
|
35
|
+
distinct_id_custom_value?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface Draft {
|
|
38
|
+
meta: {
|
|
39
|
+
app_type: string;
|
|
40
|
+
sdk_integration_mode: SDKIntegrationMode;
|
|
41
|
+
client_platforms?: SDKType[];
|
|
42
|
+
client_sdk_type?: SDKType;
|
|
43
|
+
client_languages?: ClientLanguage[];
|
|
44
|
+
client_platform_languages?: Record<SDKType, ClientLanguage[]>;
|
|
45
|
+
server_language?: ServerLanguage;
|
|
46
|
+
project_id?: number;
|
|
47
|
+
host?: string;
|
|
48
|
+
plan_name: string;
|
|
49
|
+
scenario?: string;
|
|
50
|
+
user_identity?: UserIdentity;
|
|
51
|
+
sdk_type?: SDKType;
|
|
52
|
+
};
|
|
53
|
+
events: Event[];
|
|
54
|
+
event_properties: Property[];
|
|
55
|
+
common_event_properties: Property[];
|
|
56
|
+
user_properties: UserProperty[];
|
|
57
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { readFile, readdir, stat } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
async function exists(p) {
|
|
4
|
+
try {
|
|
5
|
+
await stat(p);
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
catch {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
async function readJson(p) {
|
|
13
|
+
try {
|
|
14
|
+
return JSON.parse(await readFile(p, 'utf8'));
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/** Classify a single directory (no recursive walk). Returns 'unknown' if unrecognised. */
|
|
21
|
+
async function classifyDir(cwd) {
|
|
22
|
+
if (await exists(join(cwd, 'project.config.json'))) {
|
|
23
|
+
const cfg = await readJson(join(cwd, 'project.config.json'));
|
|
24
|
+
if (cfg && 'miniprogramRoot' in cfg)
|
|
25
|
+
return 'mini-program';
|
|
26
|
+
}
|
|
27
|
+
if (await exists(join(cwd, 'ProjectSettings/ProjectVersion.txt')))
|
|
28
|
+
return 'unity';
|
|
29
|
+
if (await exists(join(cwd, 'Podfile')))
|
|
30
|
+
return 'ios';
|
|
31
|
+
if (await exists(join(cwd, 'build.gradle')) || await exists(join(cwd, 'settings.gradle')))
|
|
32
|
+
return 'android';
|
|
33
|
+
const pkg = await readJson(join(cwd, 'package.json'));
|
|
34
|
+
if (pkg) {
|
|
35
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
36
|
+
if (deps.astro)
|
|
37
|
+
return 'web-astro';
|
|
38
|
+
if (deps.next)
|
|
39
|
+
return 'web-nextjs';
|
|
40
|
+
if (deps.react)
|
|
41
|
+
return 'web-react';
|
|
42
|
+
if (deps.vue)
|
|
43
|
+
return 'web-vue';
|
|
44
|
+
if (deps.express || deps.fastify || deps.koa)
|
|
45
|
+
return 'node-server';
|
|
46
|
+
return 'web-vanilla';
|
|
47
|
+
}
|
|
48
|
+
if (await exists(join(cwd, 'go.mod')))
|
|
49
|
+
return 'go-server';
|
|
50
|
+
if (await exists(join(cwd, 'pom.xml')))
|
|
51
|
+
return 'java-server';
|
|
52
|
+
if (await exists(join(cwd, 'pyproject.toml')) || await exists(join(cwd, 'requirements.txt')))
|
|
53
|
+
return 'python-server';
|
|
54
|
+
return 'unknown';
|
|
55
|
+
}
|
|
56
|
+
/** Classify cwd, walking 1 level into subdirs if cwd itself is unrecognised (monorepo support). */
|
|
57
|
+
async function classify(cwd) {
|
|
58
|
+
// 1. Try cwd directly
|
|
59
|
+
const direct = await classifyDir(cwd);
|
|
60
|
+
if (direct !== 'unknown')
|
|
61
|
+
return { appType: direct, subPath: undefined };
|
|
62
|
+
// 2. Walk direct children (max 20 to avoid huge monorepos)
|
|
63
|
+
let entries;
|
|
64
|
+
try {
|
|
65
|
+
entries = await readdir(cwd, { withFileTypes: true });
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return { appType: 'unknown', subPath: undefined };
|
|
69
|
+
}
|
|
70
|
+
const dirs = entries
|
|
71
|
+
.filter(e => e.isDirectory() && !e.name.startsWith('.') && e.name !== 'node_modules')
|
|
72
|
+
.slice(0, 20);
|
|
73
|
+
// During monorepo walk, prefer specific types over 'web-vanilla' (which is a
|
|
74
|
+
// catch-all for any package.json with no recognised framework).
|
|
75
|
+
let vanillaMatch;
|
|
76
|
+
for (const d of dirs) {
|
|
77
|
+
const sub = await classifyDir(join(cwd, d.name));
|
|
78
|
+
if (sub !== 'unknown' && sub !== 'web-vanilla') {
|
|
79
|
+
return { appType: sub, subPath: d.name };
|
|
80
|
+
}
|
|
81
|
+
if (sub === 'web-vanilla' && !vanillaMatch) {
|
|
82
|
+
vanillaMatch = { appType: sub, subPath: d.name };
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (vanillaMatch)
|
|
86
|
+
return vanillaMatch;
|
|
87
|
+
return { appType: 'unknown', subPath: undefined };
|
|
88
|
+
}
|
|
89
|
+
function recommend(appType) {
|
|
90
|
+
switch (appType) {
|
|
91
|
+
case 'web-react':
|
|
92
|
+
case 'web-vue':
|
|
93
|
+
case 'web-nextjs':
|
|
94
|
+
case 'web-vanilla':
|
|
95
|
+
case 'web-astro':
|
|
96
|
+
case 'ios':
|
|
97
|
+
case 'android':
|
|
98
|
+
case 'mini-program':
|
|
99
|
+
case 'unity':
|
|
100
|
+
return ['A', 'F'];
|
|
101
|
+
case 'node-server':
|
|
102
|
+
case 'python-server':
|
|
103
|
+
case 'go-server':
|
|
104
|
+
case 'java-server':
|
|
105
|
+
return ['E', 'F'];
|
|
106
|
+
case 'unknown':
|
|
107
|
+
default:
|
|
108
|
+
return ['B', 'E'];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
export async function detectProject(cwd) {
|
|
112
|
+
const { appType, subPath } = await classify(cwd);
|
|
113
|
+
return {
|
|
114
|
+
appType,
|
|
115
|
+
subPath,
|
|
116
|
+
entryFiles: [],
|
|
117
|
+
existingTracking: [],
|
|
118
|
+
recommendedModes: recommend(appType),
|
|
119
|
+
};
|
|
120
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type AppType = 'web-react' | 'web-vue' | 'web-nextjs' | 'web-vanilla' | 'web-astro' | 'ios' | 'android' | 'mini-program' | 'unity' | 'node-server' | 'python-server' | 'go-server' | 'java-server' | 'unknown';
|
|
2
|
+
export type Mode = 'A' | 'B' | 'C' | 'D' | 'E' | 'F';
|
|
3
|
+
export interface DetectResult {
|
|
4
|
+
appType: AppType;
|
|
5
|
+
subPath?: string;
|
|
6
|
+
entryFiles: string[];
|
|
7
|
+
existingTracking: string[];
|
|
8
|
+
recommendedModes: Mode[];
|
|
9
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DebugClientOpts, DeviceInfo, DeviceDataResponse } from './types.js';
|
|
2
|
+
export declare class TEDebugClient {
|
|
3
|
+
private opts;
|
|
4
|
+
constructor(opts: DebugClientOpts);
|
|
5
|
+
private url;
|
|
6
|
+
private get;
|
|
7
|
+
listDevice(projectId: number): Promise<DeviceInfo[]>;
|
|
8
|
+
addDevice(projectId: number, deviceId: string, deviceName: string): Promise<void>;
|
|
9
|
+
selectDevice(projectId: number, deviceId: string): Promise<void>;
|
|
10
|
+
removeDevice(projectId: number, deviceId: string): Promise<void>;
|
|
11
|
+
listDeviceData(projectId: number, deviceId: string, startTime: string): Promise<DeviceDataResponse>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { request } from 'undici';
|
|
2
|
+
const BASE = '/v1/ta/bury/manage/debug';
|
|
3
|
+
export class TEDebugClient {
|
|
4
|
+
opts;
|
|
5
|
+
constructor(opts) {
|
|
6
|
+
this.opts = opts;
|
|
7
|
+
}
|
|
8
|
+
url(path, params) {
|
|
9
|
+
const parts = [`@t=${Date.now()}`];
|
|
10
|
+
for (const [k, v] of Object.entries(params)) {
|
|
11
|
+
parts.push(`${encodeURIComponent(k)}=${encodeURIComponent(String(v))}`);
|
|
12
|
+
}
|
|
13
|
+
return this.opts.host.replace(/\/$/, '') + BASE + path + '?' + parts.join('&');
|
|
14
|
+
}
|
|
15
|
+
async get(path, params) {
|
|
16
|
+
const r = await request(this.url(path, params), {
|
|
17
|
+
method: 'GET',
|
|
18
|
+
headers: {
|
|
19
|
+
authorization: `bearer ${this.opts.token}`,
|
|
20
|
+
'x-requested-with': 'XMLHttpRequest',
|
|
21
|
+
accept: 'application/json',
|
|
22
|
+
},
|
|
23
|
+
});
|
|
24
|
+
const env = (await r.body.json());
|
|
25
|
+
if (env.return_code !== 0) {
|
|
26
|
+
if (env.return_code === -1001) {
|
|
27
|
+
throw new Error(`AE token expired or invalid (return_code -1001). Re-login in Chrome, then run: ae-tracking auth login`);
|
|
28
|
+
}
|
|
29
|
+
throw new Error(env.return_message || `AE error ${env.return_code}`);
|
|
30
|
+
}
|
|
31
|
+
return env.data;
|
|
32
|
+
}
|
|
33
|
+
async listDevice(projectId) {
|
|
34
|
+
const data = await this.get('/listDevice', { projectId });
|
|
35
|
+
return data?.deviceList ?? [];
|
|
36
|
+
}
|
|
37
|
+
async addDevice(projectId, deviceId, deviceName) {
|
|
38
|
+
await this.get('/saveDevice', { deviceId, deviceName, projectId });
|
|
39
|
+
}
|
|
40
|
+
async selectDevice(projectId, deviceId) {
|
|
41
|
+
await this.get('/chooseDevice', { deviceId, projectId });
|
|
42
|
+
}
|
|
43
|
+
async removeDevice(projectId, deviceId) {
|
|
44
|
+
await this.get('/deleteDevice', { deviceId, projectId });
|
|
45
|
+
}
|
|
46
|
+
async listDeviceData(projectId, deviceId, startTime) {
|
|
47
|
+
const data = await this.get('/listDeviceData', {
|
|
48
|
+
deviceID: deviceId, // NB uppercase D — matches AE backend
|
|
49
|
+
projectId,
|
|
50
|
+
startTime,
|
|
51
|
+
});
|
|
52
|
+
return data ?? { eventList: [], deviceDataList: [] };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface DebugClientOpts {
|
|
2
|
+
host: string;
|
|
3
|
+
token: string;
|
|
4
|
+
}
|
|
5
|
+
export interface DeviceInfo {
|
|
6
|
+
deviceId: string;
|
|
7
|
+
deviceName: string;
|
|
8
|
+
lastClearTime?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface DeviceDataItem {
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
export interface DeviceDataResponse {
|
|
14
|
+
eventList: DeviceDataItem[];
|
|
15
|
+
deviceDataList: DeviceDataItem[];
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { request } from 'undici';
|
|
2
|
+
const PLAN_PATH = '/v1/ta/bury/manage/program/query';
|
|
3
|
+
export async function fetchPlan({ projectId, host, token }) {
|
|
4
|
+
const url = `${host.replace(/\/$/, '')}${PLAN_PATH}?@t=${Date.now()}&projectId=${projectId}`;
|
|
5
|
+
const { statusCode, body } = await request(url, {
|
|
6
|
+
method: 'GET',
|
|
7
|
+
headers: {
|
|
8
|
+
authorization: `bearer ${token}`,
|
|
9
|
+
'x-requested-with': 'XMLHttpRequest',
|
|
10
|
+
},
|
|
11
|
+
});
|
|
12
|
+
if (statusCode !== 200) {
|
|
13
|
+
const text = await body.text();
|
|
14
|
+
throw new Error(`AE plan fetch failed (${statusCode}): ${text.slice(0, 200)}`);
|
|
15
|
+
}
|
|
16
|
+
const payload = (await body.json());
|
|
17
|
+
if (payload.return_code !== 0) {
|
|
18
|
+
if (payload.return_code === -1001) {
|
|
19
|
+
throw new Error(`AE token expired or invalid (return_code -1001). Re-login in Chrome, then run: ae-tracking auth login`);
|
|
20
|
+
}
|
|
21
|
+
throw new Error(`AE plan fetch return_code ${payload.return_code}: ${payload.return_message ?? ''}`);
|
|
22
|
+
}
|
|
23
|
+
return normalize(payload.data);
|
|
24
|
+
}
|
|
25
|
+
function normalize(data) {
|
|
26
|
+
return {
|
|
27
|
+
meta: { app_type: 'unknown', sdk_integration_mode: 'client_only', plan_name: 'from-te' },
|
|
28
|
+
events: (data.events ?? []).map((e) => ({
|
|
29
|
+
event_name: e.eventName,
|
|
30
|
+
display_name: e.displayName,
|
|
31
|
+
event_tag: e.eventTag,
|
|
32
|
+
event_desc: e.eventDesc,
|
|
33
|
+
source: 'chat',
|
|
34
|
+
prop_names: e.props ?? [],
|
|
35
|
+
})),
|
|
36
|
+
event_properties: (data.eventProps ?? []).map((p) => ({
|
|
37
|
+
name: p.name, display_name: p.displayName, type: (p.type?.toLowerCase() ?? 'string'), desc: p.desc, source: 'chat',
|
|
38
|
+
})),
|
|
39
|
+
common_event_properties: (data.commonEventProps ?? []).map((p) => ({
|
|
40
|
+
name: p.name, display_name: p.displayName, type: (p.type?.toLowerCase() ?? 'string'), desc: p.desc, source: 'chat',
|
|
41
|
+
})),
|
|
42
|
+
user_properties: (data.userProps ?? []).map((p) => ({
|
|
43
|
+
name: p.name, display_name: p.displayName, type: (p.type?.toLowerCase() ?? 'string'), desc: p.desc,
|
|
44
|
+
update_type: (p.updateType ?? 'user_set'), prop_tag: p.propTag, source: 'chat',
|
|
45
|
+
})),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|