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,56 @@
|
|
|
1
|
+
import { request, FormData } from 'undici';
|
|
2
|
+
import { Blob } from 'node:buffer';
|
|
3
|
+
export class TEClient {
|
|
4
|
+
opts;
|
|
5
|
+
constructor(opts) {
|
|
6
|
+
this.opts = opts;
|
|
7
|
+
}
|
|
8
|
+
url(p) {
|
|
9
|
+
return this.opts.host.replace(/\/$/, '') + p;
|
|
10
|
+
}
|
|
11
|
+
assertOk(env) {
|
|
12
|
+
if (env.return_code !== 0) {
|
|
13
|
+
if (env.return_code === -1001) {
|
|
14
|
+
throw new Error(`AE token expired or invalid (return_code -1001). Re-login in Chrome, then run: ae-tracking auth login`);
|
|
15
|
+
}
|
|
16
|
+
throw new Error(env.return_message || `AE error ${env.return_code}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async getProgram(projectId) {
|
|
20
|
+
const r = await request(this.url(`/v1/ta/bury/manage/program/query?projectId=${encodeURIComponent(String(projectId))}`), {
|
|
21
|
+
method: 'GET',
|
|
22
|
+
headers: {
|
|
23
|
+
authorization: `bearer ${this.opts.token}`,
|
|
24
|
+
accept: 'application/json',
|
|
25
|
+
},
|
|
26
|
+
});
|
|
27
|
+
const env = (await r.body.json());
|
|
28
|
+
this.assertOk(env);
|
|
29
|
+
return env.data ?? null;
|
|
30
|
+
}
|
|
31
|
+
async deleteProgram(projectId) {
|
|
32
|
+
const r = await request(this.url(`/v1/ta/bury/manage/program/delete?projectId=${encodeURIComponent(String(projectId))}`), {
|
|
33
|
+
method: 'GET',
|
|
34
|
+
headers: {
|
|
35
|
+
authorization: `bearer ${this.opts.token}`,
|
|
36
|
+
accept: 'application/json',
|
|
37
|
+
},
|
|
38
|
+
});
|
|
39
|
+
const env = (await r.body.json());
|
|
40
|
+
this.assertOk(env);
|
|
41
|
+
return { return_code: env.return_code, return_message: env.return_message };
|
|
42
|
+
}
|
|
43
|
+
async uploadProgramExcel(args) {
|
|
44
|
+
const fd = new FormData();
|
|
45
|
+
fd.append('file', new Blob([args.file], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }), args.filename);
|
|
46
|
+
fd.append('projectId', String(args.projectId));
|
|
47
|
+
fd.append('access_token', this.opts.token);
|
|
48
|
+
const r = await request(this.url('/v1/ta/bury/manage/program/excel-save'), {
|
|
49
|
+
method: 'POST',
|
|
50
|
+
body: fd,
|
|
51
|
+
});
|
|
52
|
+
const env = (await r.body.json());
|
|
53
|
+
this.assertOk(env);
|
|
54
|
+
return { return_code: env.return_code, return_message: env.return_message };
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import os from 'node:os';
|
|
4
|
+
export function getConfigDir() {
|
|
5
|
+
return process.env.AE_TRACKING_HOME || path.join(os.homedir(), '.ae-tracking');
|
|
6
|
+
}
|
|
7
|
+
const CONFIG_FILE = () => path.join(getConfigDir(), 'config.json');
|
|
8
|
+
function load() {
|
|
9
|
+
try {
|
|
10
|
+
return JSON.parse(fs.readFileSync(CONFIG_FILE(), 'utf8'));
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return {};
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function save(c) {
|
|
17
|
+
fs.mkdirSync(getConfigDir(), { recursive: true });
|
|
18
|
+
fs.writeFileSync(CONFIG_FILE(), JSON.stringify(c, null, 2));
|
|
19
|
+
}
|
|
20
|
+
export function getActiveHost() { return load().activeHost ?? ''; }
|
|
21
|
+
export function setActiveHost(host) { const c = load(); c.activeHost = host; save(c); }
|
|
22
|
+
export function extractHostname(url) {
|
|
23
|
+
try {
|
|
24
|
+
return new URL(url).hostname;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return url;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Event, SDKType } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* SDK 自动采集事件定义
|
|
4
|
+
* 根据 SDK 类型返回对应的自动采集事件数组
|
|
5
|
+
*/
|
|
6
|
+
export declare const PRESET_PROPERTIES: string[];
|
|
7
|
+
/**
|
|
8
|
+
* 根据 SDK 类型获取对应的自动采集事件
|
|
9
|
+
*/
|
|
10
|
+
export declare function getAutotrackEvents(sdkType: SDKType): Event[];
|
|
11
|
+
/**
|
|
12
|
+
* SDK 类型显示名称
|
|
13
|
+
*/
|
|
14
|
+
export declare const SDK_TYPE_DISPLAY_NAMES: Record<SDKType, string>;
|
|
15
|
+
/**
|
|
16
|
+
* 应用类型 → 可选 SDK 类型映射
|
|
17
|
+
*/
|
|
18
|
+
export declare const APP_TYPE_SDK_OPTIONS: Record<string, SDKType[]>;
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SDK 自动采集事件定义
|
|
3
|
+
* 根据 SDK 类型返回对应的自动采集事件数组
|
|
4
|
+
*/
|
|
5
|
+
// 预置属性列表(由 SDK 自动采集,不需要定义到 event_properties)
|
|
6
|
+
export const PRESET_PROPERTIES = [
|
|
7
|
+
'#duration',
|
|
8
|
+
'#resume_from_background',
|
|
9
|
+
'#screen_name',
|
|
10
|
+
'#title',
|
|
11
|
+
'#url',
|
|
12
|
+
'#referrer',
|
|
13
|
+
'#url_path',
|
|
14
|
+
'#element_id',
|
|
15
|
+
'#element_type',
|
|
16
|
+
'#element_content',
|
|
17
|
+
'#element_position',
|
|
18
|
+
'#element_selector',
|
|
19
|
+
'#element_name',
|
|
20
|
+
'#app_crashed_reason',
|
|
21
|
+
'#scene',
|
|
22
|
+
'#start_reason',
|
|
23
|
+
'#background_duration',
|
|
24
|
+
];
|
|
25
|
+
// Android/iOS 自动采集事件
|
|
26
|
+
const nativeAppEvents = [
|
|
27
|
+
{
|
|
28
|
+
event_name: 'ta_app_install',
|
|
29
|
+
display_name: 'APP 安装',
|
|
30
|
+
event_tag: '系统事件',
|
|
31
|
+
event_desc: 'APP 首次安装时上报,升级不触发,删除重装会触发',
|
|
32
|
+
source: 'autotrack',
|
|
33
|
+
prop_names: [],
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
event_name: 'ta_app_start',
|
|
37
|
+
display_name: 'APP 启动',
|
|
38
|
+
event_tag: '系统事件',
|
|
39
|
+
event_desc: '用户开启 APP 或从后台唤醒时触发',
|
|
40
|
+
source: 'autotrack',
|
|
41
|
+
prop_names: [],
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
event_name: 'ta_app_end',
|
|
45
|
+
display_name: 'APP 关闭',
|
|
46
|
+
event_tag: '系统事件',
|
|
47
|
+
event_desc: '用户关闭 APP 或将 APP 调至后台时触发',
|
|
48
|
+
source: 'autotrack',
|
|
49
|
+
prop_names: [],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
event_name: 'ta_app_view',
|
|
53
|
+
display_name: 'APP 页面浏览',
|
|
54
|
+
event_tag: '系统事件',
|
|
55
|
+
event_desc: '用户浏览页面(Activity/ViewController)时触发',
|
|
56
|
+
source: 'autotrack',
|
|
57
|
+
prop_names: [],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
event_name: 'ta_app_click',
|
|
61
|
+
display_name: 'APP 控件点击',
|
|
62
|
+
event_tag: '系统事件',
|
|
63
|
+
event_desc: '用户点击控件时触发',
|
|
64
|
+
source: 'autotrack',
|
|
65
|
+
prop_names: [],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
event_name: 'ta_app_crash',
|
|
69
|
+
display_name: 'APP 崩溃',
|
|
70
|
+
event_tag: '系统事件',
|
|
71
|
+
event_desc: 'APP 出现未捕获异常时上报',
|
|
72
|
+
source: 'autotrack',
|
|
73
|
+
prop_names: [],
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
// JavaScript (Web/H5) 自动采集事件
|
|
77
|
+
const jsEvents = [
|
|
78
|
+
{
|
|
79
|
+
event_name: 'ta_pageview',
|
|
80
|
+
display_name: '页面浏览',
|
|
81
|
+
event_tag: '系统事件',
|
|
82
|
+
event_desc: '调用 ta.quick("autoTrack") 时上报',
|
|
83
|
+
source: 'autotrack',
|
|
84
|
+
prop_names: [],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
event_name: 'ta_page_show',
|
|
88
|
+
display_name: '页面显示',
|
|
89
|
+
event_tag: '系统事件',
|
|
90
|
+
event_desc: '页面显示时触发(需开启配置)',
|
|
91
|
+
source: 'autotrack',
|
|
92
|
+
prop_names: [],
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
event_name: 'ta_page_hide',
|
|
96
|
+
display_name: '页面隐藏',
|
|
97
|
+
event_tag: '系统事件',
|
|
98
|
+
event_desc: '页面隐藏时触发(需开启配置)',
|
|
99
|
+
source: 'autotrack',
|
|
100
|
+
prop_names: [],
|
|
101
|
+
},
|
|
102
|
+
];
|
|
103
|
+
// 微信小程序自动采集事件
|
|
104
|
+
const wechatMpEvents = [
|
|
105
|
+
{
|
|
106
|
+
event_name: 'ta_mp_launch',
|
|
107
|
+
display_name: '小程序初始化',
|
|
108
|
+
event_tag: '系统事件',
|
|
109
|
+
event_desc: '小程序被首次打开时触发,进程生命周期内只触发一次',
|
|
110
|
+
source: 'autotrack',
|
|
111
|
+
prop_names: [],
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
event_name: 'ta_mp_show',
|
|
115
|
+
display_name: '小程序启动',
|
|
116
|
+
event_tag: '系统事件',
|
|
117
|
+
event_desc: '小程序被启动或从后台调回前台时触发',
|
|
118
|
+
source: 'autotrack',
|
|
119
|
+
prop_names: [],
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
event_name: 'ta_mp_hide',
|
|
123
|
+
display_name: '小程序隐藏',
|
|
124
|
+
event_tag: '系统事件',
|
|
125
|
+
event_desc: '小程序被调入后台时触发',
|
|
126
|
+
source: 'autotrack',
|
|
127
|
+
prop_names: [],
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
event_name: 'ta_mp_view',
|
|
131
|
+
display_name: '小程序页面浏览',
|
|
132
|
+
event_tag: '系统事件',
|
|
133
|
+
event_desc: '页面被打开或从后台调回前台时触发',
|
|
134
|
+
source: 'autotrack',
|
|
135
|
+
prop_names: [],
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
event_name: 'ta_mp_share',
|
|
139
|
+
display_name: '小程序转发分享',
|
|
140
|
+
event_tag: '系统事件',
|
|
141
|
+
event_desc: '转发按钮被点击时触发',
|
|
142
|
+
source: 'autotrack',
|
|
143
|
+
prop_names: [],
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
event_name: 'ta_page_leave',
|
|
147
|
+
display_name: '小程序页面卸载',
|
|
148
|
+
event_tag: '系统事件',
|
|
149
|
+
event_desc: '页面卸载时触发',
|
|
150
|
+
source: 'autotrack',
|
|
151
|
+
prop_names: [],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
event_name: 'ta_add_favorite',
|
|
155
|
+
display_name: '小程序页面收藏',
|
|
156
|
+
event_tag: '系统事件',
|
|
157
|
+
event_desc: '页面被收藏时触发',
|
|
158
|
+
source: 'autotrack',
|
|
159
|
+
prop_names: [],
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
event_name: 'ta_mp_click',
|
|
163
|
+
display_name: '小程序元素点击',
|
|
164
|
+
event_tag: '系统事件',
|
|
165
|
+
event_desc: '页面元素被点击时触发',
|
|
166
|
+
source: 'autotrack',
|
|
167
|
+
prop_names: [],
|
|
168
|
+
},
|
|
169
|
+
];
|
|
170
|
+
// 微信小游戏自动采集事件(精简版)
|
|
171
|
+
const wechatMgEvents = [
|
|
172
|
+
{
|
|
173
|
+
event_name: 'ta_mp_launch',
|
|
174
|
+
display_name: '小游戏初始化',
|
|
175
|
+
event_tag: '系统事件',
|
|
176
|
+
event_desc: '小游戏被首次打开时触发',
|
|
177
|
+
source: 'autotrack',
|
|
178
|
+
prop_names: [],
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
event_name: 'ta_mp_show',
|
|
182
|
+
display_name: '小游戏启动',
|
|
183
|
+
event_tag: '系统事件',
|
|
184
|
+
event_desc: '小游戏被启动或从后台调回前台时触发',
|
|
185
|
+
source: 'autotrack',
|
|
186
|
+
prop_names: [],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
event_name: 'ta_mp_hide',
|
|
190
|
+
display_name: '小游戏隐藏',
|
|
191
|
+
event_tag: '系统事件',
|
|
192
|
+
event_desc: '小游戏被调入后台时触发',
|
|
193
|
+
source: 'autotrack',
|
|
194
|
+
prop_names: [],
|
|
195
|
+
},
|
|
196
|
+
];
|
|
197
|
+
// Unity 自动采集事件
|
|
198
|
+
const unityEvents = [
|
|
199
|
+
{
|
|
200
|
+
event_name: 'ta_app_install',
|
|
201
|
+
display_name: 'APP 安装',
|
|
202
|
+
event_tag: '系统事件',
|
|
203
|
+
event_desc: '首次安装后打开时触发',
|
|
204
|
+
source: 'autotrack',
|
|
205
|
+
prop_names: [],
|
|
206
|
+
},
|
|
207
|
+
{
|
|
208
|
+
event_name: 'ta_app_start',
|
|
209
|
+
display_name: 'APP 启动',
|
|
210
|
+
event_tag: '系统事件',
|
|
211
|
+
event_desc: '游戏进入前台时触发',
|
|
212
|
+
source: 'autotrack',
|
|
213
|
+
prop_names: [],
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
event_name: 'ta_app_end',
|
|
217
|
+
display_name: 'APP 关闭',
|
|
218
|
+
event_tag: '系统事件',
|
|
219
|
+
event_desc: '游戏进入后台时触发',
|
|
220
|
+
source: 'autotrack',
|
|
221
|
+
prop_names: [],
|
|
222
|
+
},
|
|
223
|
+
];
|
|
224
|
+
// Unity 微信小游戏自动采集事件
|
|
225
|
+
const unityWxmgEvents = [
|
|
226
|
+
{
|
|
227
|
+
event_name: 'ta_mg_launch',
|
|
228
|
+
display_name: '小游戏初始化',
|
|
229
|
+
event_tag: '系统事件',
|
|
230
|
+
event_desc: '小游戏首次打开时触发',
|
|
231
|
+
source: 'autotrack',
|
|
232
|
+
prop_names: [],
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
event_name: 'ta_mg_show',
|
|
236
|
+
display_name: '小游戏启动',
|
|
237
|
+
event_tag: '系统事件',
|
|
238
|
+
event_desc: '小游戏进入前台时触发',
|
|
239
|
+
source: 'autotrack',
|
|
240
|
+
prop_names: [],
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
event_name: 'ta_mg_hide',
|
|
244
|
+
display_name: '小游戏隐藏',
|
|
245
|
+
event_tag: '系统事件',
|
|
246
|
+
event_desc: '小游戏进入后台时触发',
|
|
247
|
+
source: 'autotrack',
|
|
248
|
+
prop_names: [],
|
|
249
|
+
},
|
|
250
|
+
];
|
|
251
|
+
// 其他游戏引擎(Cocos2d-x, CocosCreator, LayaAir, Unreal)自动采集事件
|
|
252
|
+
const gameEngineEvents = [
|
|
253
|
+
{
|
|
254
|
+
event_name: 'ta_app_install',
|
|
255
|
+
display_name: 'APP 安装',
|
|
256
|
+
event_tag: '系统事件',
|
|
257
|
+
event_desc: '首次安装时触发',
|
|
258
|
+
source: 'autotrack',
|
|
259
|
+
prop_names: [],
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
event_name: 'ta_app_start',
|
|
263
|
+
display_name: 'APP 启动',
|
|
264
|
+
event_tag: '系统事件',
|
|
265
|
+
event_desc: '游戏进入前台时触发',
|
|
266
|
+
source: 'autotrack',
|
|
267
|
+
prop_names: [],
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
event_name: 'ta_app_end',
|
|
271
|
+
display_name: 'APP 关闭',
|
|
272
|
+
event_tag: '系统事件',
|
|
273
|
+
event_desc: '游戏进入后台时触发',
|
|
274
|
+
source: 'autotrack',
|
|
275
|
+
prop_names: [],
|
|
276
|
+
},
|
|
277
|
+
];
|
|
278
|
+
/**
|
|
279
|
+
* 根据 SDK 类型获取对应的自动采集事件
|
|
280
|
+
*/
|
|
281
|
+
export function getAutotrackEvents(sdkType) {
|
|
282
|
+
switch (sdkType) {
|
|
283
|
+
case 'android':
|
|
284
|
+
case 'ios':
|
|
285
|
+
case 'react_native':
|
|
286
|
+
case 'flutter':
|
|
287
|
+
case 'uniapp_app':
|
|
288
|
+
return nativeAppEvents;
|
|
289
|
+
case 'javascript':
|
|
290
|
+
case 'uniapp_h5':
|
|
291
|
+
return jsEvents;
|
|
292
|
+
case 'wechat_mp':
|
|
293
|
+
case 'douyin_mp':
|
|
294
|
+
case 'alipay_mp':
|
|
295
|
+
case 'other_mp':
|
|
296
|
+
case 'uniapp_mp':
|
|
297
|
+
return wechatMpEvents;
|
|
298
|
+
case 'wechat_mg':
|
|
299
|
+
return wechatMgEvents;
|
|
300
|
+
case 'unity':
|
|
301
|
+
return unityEvents;
|
|
302
|
+
case 'unity_wxmg':
|
|
303
|
+
return unityWxmgEvents;
|
|
304
|
+
case 'cocos2dx':
|
|
305
|
+
case 'cocoscreator':
|
|
306
|
+
case 'layaair':
|
|
307
|
+
case 'unreal':
|
|
308
|
+
return gameEngineEvents;
|
|
309
|
+
default:
|
|
310
|
+
return [];
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* SDK 类型显示名称
|
|
315
|
+
*/
|
|
316
|
+
export const SDK_TYPE_DISPLAY_NAMES = {
|
|
317
|
+
android: 'Android SDK',
|
|
318
|
+
ios: 'iOS SDK',
|
|
319
|
+
openharmony: 'OpenHarmony SDK',
|
|
320
|
+
javascript: 'JavaScript SDK',
|
|
321
|
+
wechat_mp: '微信小程序 SDK',
|
|
322
|
+
wechat_mg: '微信小游戏 SDK',
|
|
323
|
+
douyin_mp: '抖音小程序 SDK',
|
|
324
|
+
alipay_mp: '支付宝小程序 SDK',
|
|
325
|
+
other_mp: '其他小程序 SDK',
|
|
326
|
+
unity: 'Unity SDK',
|
|
327
|
+
unity_wxmg: 'Unity 微信小游戏',
|
|
328
|
+
cocos2dx: 'Cocos2d-x SDK',
|
|
329
|
+
cocoscreator: 'CocosCreator SDK',
|
|
330
|
+
layaair: 'LayaAir SDK',
|
|
331
|
+
unreal: 'Unreal SDK',
|
|
332
|
+
react_native: 'React Native SDK',
|
|
333
|
+
flutter: 'Flutter SDK',
|
|
334
|
+
uniapp_mp: 'uni-app 小程序端',
|
|
335
|
+
uniapp_app: 'uni-app APP端',
|
|
336
|
+
uniapp_h5: 'uni-app H5端',
|
|
337
|
+
};
|
|
338
|
+
/**
|
|
339
|
+
* 应用类型 → 可选 SDK 类型映射
|
|
340
|
+
*/
|
|
341
|
+
export const APP_TYPE_SDK_OPTIONS = {
|
|
342
|
+
'Android': ['android'],
|
|
343
|
+
'iOS': ['ios'],
|
|
344
|
+
'H5': ['javascript'],
|
|
345
|
+
'Web': ['javascript'],
|
|
346
|
+
'小程序': ['wechat_mp', 'wechat_mg', 'douyin_mp', 'alipay_mp', 'other_mp'],
|
|
347
|
+
'Unity': ['unity', 'unity_wxmg'],
|
|
348
|
+
'游戏引擎': ['cocos2dx', 'cocoscreator', 'layaair', 'unreal'],
|
|
349
|
+
'跨平台': ['react_native', 'flutter', 'uniapp_mp', 'uniapp_app', 'uniapp_h5'],
|
|
350
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Draft } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* 冲突检测
|
|
4
|
+
* 在追加模式下,对比新方案与既有方案,检测两类冲突:
|
|
5
|
+
* - A: 同名属性类型不一致(严重)
|
|
6
|
+
* - B: 同名事件已存在(提醒)
|
|
7
|
+
*/
|
|
8
|
+
export interface Conflict {
|
|
9
|
+
type: 'property_type_conflict' | 'event_exists';
|
|
10
|
+
severity: 'error' | 'warning';
|
|
11
|
+
name: string;
|
|
12
|
+
existingType?: string;
|
|
13
|
+
newType?: string;
|
|
14
|
+
existingPropCount?: number;
|
|
15
|
+
newPropCount?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface ConflictResult {
|
|
18
|
+
hasErrors: boolean;
|
|
19
|
+
hasWarnings: boolean;
|
|
20
|
+
conflicts: Conflict[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 检测新方案与既有方案的冲突
|
|
24
|
+
*/
|
|
25
|
+
export declare function detectConflicts(newDraft: Draft, existingDraft: Draft): ConflictResult;
|
|
26
|
+
/**
|
|
27
|
+
* 格式化冲突报告(用于 CLI 输出)
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatConflictReport(result: ConflictResult, existingSummary: {
|
|
30
|
+
events: number;
|
|
31
|
+
eventProps: number;
|
|
32
|
+
commonProps: number;
|
|
33
|
+
userProps: number;
|
|
34
|
+
}): string;
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 检测新方案与既有方案的冲突
|
|
3
|
+
*/
|
|
4
|
+
export function detectConflicts(newDraft, existingDraft) {
|
|
5
|
+
const conflicts = [];
|
|
6
|
+
// 冲突类型 A:同名属性类型不一致
|
|
7
|
+
// 检查三个属性池:event_properties, common_event_properties, user_properties
|
|
8
|
+
// event_properties
|
|
9
|
+
for (const newProp of newDraft.event_properties) {
|
|
10
|
+
const existingProp = existingDraft.event_properties.find(p => p.name === newProp.name);
|
|
11
|
+
if (existingProp && existingProp.type !== newProp.type) {
|
|
12
|
+
conflicts.push({
|
|
13
|
+
type: 'property_type_conflict',
|
|
14
|
+
severity: 'error',
|
|
15
|
+
name: newProp.name,
|
|
16
|
+
existingType: existingProp.type,
|
|
17
|
+
newType: newProp.type,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
// common_event_properties
|
|
22
|
+
for (const newProp of newDraft.common_event_properties) {
|
|
23
|
+
const existingProp = existingDraft.common_event_properties.find(p => p.name === newProp.name);
|
|
24
|
+
if (existingProp && existingProp.type !== newProp.type) {
|
|
25
|
+
conflicts.push({
|
|
26
|
+
type: 'property_type_conflict',
|
|
27
|
+
severity: 'error',
|
|
28
|
+
name: newProp.name,
|
|
29
|
+
existingType: existingProp.type,
|
|
30
|
+
newType: newProp.type,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// user_properties
|
|
35
|
+
for (const newProp of newDraft.user_properties) {
|
|
36
|
+
const existingProp = existingDraft.user_properties.find(p => p.name === newProp.name);
|
|
37
|
+
if (existingProp && existingProp.type !== newProp.type) {
|
|
38
|
+
conflicts.push({
|
|
39
|
+
type: 'property_type_conflict',
|
|
40
|
+
severity: 'error',
|
|
41
|
+
name: newProp.name,
|
|
42
|
+
existingType: existingProp.type,
|
|
43
|
+
newType: newProp.type,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// 冲突类型 B:同名事件已存在
|
|
48
|
+
for (const newEvent of newDraft.events) {
|
|
49
|
+
const existingEvent = existingDraft.events.find(e => e.event_name === newEvent.event_name);
|
|
50
|
+
if (existingEvent) {
|
|
51
|
+
conflicts.push({
|
|
52
|
+
type: 'event_exists',
|
|
53
|
+
severity: 'warning',
|
|
54
|
+
name: newEvent.event_name,
|
|
55
|
+
existingPropCount: existingEvent.prop_names.length,
|
|
56
|
+
newPropCount: newEvent.prop_names.length,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
hasErrors: conflicts.some(c => c.severity === 'error'),
|
|
62
|
+
hasWarnings: conflicts.some(c => c.severity === 'warning'),
|
|
63
|
+
conflicts,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* 格式化冲突报告(用于 CLI 输出)
|
|
68
|
+
*/
|
|
69
|
+
export function formatConflictReport(result, existingSummary) {
|
|
70
|
+
const lines = [];
|
|
71
|
+
lines.push('项目已有埋点方案:');
|
|
72
|
+
lines.push(`- 事件数:${existingSummary.events}`);
|
|
73
|
+
lines.push(`- 事件属性数:${existingSummary.eventProps}`);
|
|
74
|
+
lines.push(`- 公共属性数:${existingSummary.commonProps}`);
|
|
75
|
+
lines.push(`- 用户属性数:${existingSummary.userProps}`);
|
|
76
|
+
lines.push('');
|
|
77
|
+
if (result.hasErrors) {
|
|
78
|
+
lines.push('⚠️ 严重冲突:同名属性类型不一致');
|
|
79
|
+
lines.push('');
|
|
80
|
+
lines.push('以下属性在既有方案和新方案中类型不同,');
|
|
81
|
+
lines.push('追加上传会导致上报数据被抛弃:');
|
|
82
|
+
lines.push('');
|
|
83
|
+
lines.push('| 属性名 | 既有类型 | 新方案类型 |');
|
|
84
|
+
lines.push('|---|---|---|');
|
|
85
|
+
for (const c of result.conflicts.filter(c => c.type === 'property_type_conflict')) {
|
|
86
|
+
lines.push(`| ${c.name} | ${c.existingType} | ${c.newType} |`);
|
|
87
|
+
}
|
|
88
|
+
lines.push('');
|
|
89
|
+
lines.push('建议:');
|
|
90
|
+
lines.push('1. 修改新方案的属性类型,与既有方案一致');
|
|
91
|
+
lines.push('2. 或选择「替换」模式重新定义类型');
|
|
92
|
+
}
|
|
93
|
+
if (result.hasWarnings && !result.hasErrors) {
|
|
94
|
+
lines.push('⚠️ 提醒:以下事件已存在于项目中(追加模式不会覆盖)');
|
|
95
|
+
lines.push('');
|
|
96
|
+
for (const c of result.conflicts.filter(c => c.type === 'event_exists')) {
|
|
97
|
+
lines.push(`- ${c.name}(既有:${c.existingPropCount} 属性,新方案:${c.newPropCount} 属性)`);
|
|
98
|
+
}
|
|
99
|
+
lines.push('');
|
|
100
|
+
lines.push('追加后:');
|
|
101
|
+
lines.push('- 既有事件的属性关联不会改变');
|
|
102
|
+
lines.push('- 既有事件的新属性不会被添加');
|
|
103
|
+
lines.push('- 新事件会正常添加');
|
|
104
|
+
}
|
|
105
|
+
return lines.join('\n');
|
|
106
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { Draft, Event, SDKType, SDKIntegrationMode, ServerLanguage, ClientLanguage, UserIdentity } from './types.js';
|
|
2
|
+
export interface DraftMeta {
|
|
3
|
+
app_type: string;
|
|
4
|
+
sdk_integration_mode: SDKIntegrationMode;
|
|
5
|
+
client_platforms?: SDKType[];
|
|
6
|
+
client_sdk_type?: SDKType;
|
|
7
|
+
client_languages?: ClientLanguage[];
|
|
8
|
+
client_platform_languages?: Record<SDKType, ClientLanguage[]>;
|
|
9
|
+
server_language?: ServerLanguage;
|
|
10
|
+
project_id?: number;
|
|
11
|
+
plan_name: string;
|
|
12
|
+
scenario?: string;
|
|
13
|
+
user_identity?: UserIdentity;
|
|
14
|
+
}
|
|
15
|
+
export declare function emptyDraft(meta: DraftMeta): Draft;
|
|
16
|
+
export declare function emptyDraftLegacy(appType: string, planName: string, sdkType?: SDKType): Draft;
|
|
17
|
+
export declare function loadDraft(p: string): Draft;
|
|
18
|
+
export declare function saveDraft(d: Draft, p: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* 向 draft 注入 SDK 自动采集事件
|
|
21
|
+
* 自动采集事件放在 events 数组末尾,标记 source: "autotrack", platform: "client"
|
|
22
|
+
*/
|
|
23
|
+
export declare function injectAutotrackEvents(draft: Draft): Draft;
|
|
24
|
+
/**
|
|
25
|
+
* 获取 draft 中的业务事件(排除自动采集事件)
|
|
26
|
+
*/
|
|
27
|
+
export declare function getBusinessEvents(draft: Draft): Event[];
|
|
28
|
+
/**
|
|
29
|
+
* 获取 draft 中的自动采集事件
|
|
30
|
+
*/
|
|
31
|
+
export declare function getAutotrackEventsFromDraft(draft: Draft): Event[];
|
|
32
|
+
/**
|
|
33
|
+
* 按 platform 分组获取事件
|
|
34
|
+
*/
|
|
35
|
+
export declare function getEventsByPlatform(draft: Draft): {
|
|
36
|
+
client: Event[];
|
|
37
|
+
server: Event[];
|
|
38
|
+
both: Event[];
|
|
39
|
+
};
|