@pluve/logger-sdk 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/README.md +60 -20
  2. package/dist/cjs/capture/jsError.js +48 -0
  3. package/dist/cjs/capture/promiseError.js +49 -0
  4. package/dist/cjs/capture/resourceError.js +48 -0
  5. package/dist/cjs/capture/wechatError.js +95 -0
  6. package/dist/cjs/compress/compression.js +84 -0
  7. package/dist/cjs/config/index.js +55 -0
  8. package/dist/cjs/core/fingerprint.js +36 -0
  9. package/dist/cjs/core/httpClient.js +96 -0
  10. package/dist/cjs/core/loggerSDK.js +641 -0
  11. package/dist/cjs/core/queueManager.js +249 -0
  12. package/dist/cjs/core/retryManager.js +127 -0
  13. package/dist/cjs/index.js +29 -0
  14. package/dist/cjs/logger-sdk.mermaid +84 -0
  15. package/dist/cjs/logger-sdk.svg +1 -0
  16. package/dist/cjs/stack/stacktrace.js +48 -0
  17. package/dist/cjs/transport/beaconTransport.js +64 -0
  18. package/dist/cjs/transport/pixelImageTransport.js +100 -0
  19. package/dist/cjs/transport/transport.js +17 -0
  20. package/dist/cjs/transport/transportAdapter.js +56 -0
  21. package/dist/cjs/transport/wechatTransport.js +103 -0
  22. package/dist/cjs/types/api.js +17 -0
  23. package/dist/cjs/types/env.js +17 -0
  24. package/dist/cjs/types/external.d.ts +21 -0
  25. package/dist/cjs/types/logEvent.js +17 -0
  26. package/dist/cjs/types/logEventLevel.js +17 -0
  27. package/dist/cjs/types/sdkOptions.js +17 -0
  28. package/dist/cjs/types/trackOptions.js +17 -0
  29. package/dist/cjs/utils/environment.js +183 -0
  30. package/dist/cjs/utils/session.js +31 -0
  31. package/dist/cjs/utils/tools.js +82 -0
  32. package/dist/cjs/utils/uuid.js +35 -0
  33. package/dist/esm/capture/jsError.js +45 -0
  34. package/dist/esm/capture/promiseError.js +46 -0
  35. package/dist/esm/capture/resourceError.js +24 -0
  36. package/dist/esm/capture/wechatError.js +92 -0
  37. package/dist/esm/compress/compression.js +82 -0
  38. package/dist/esm/config/index.js +28 -0
  39. package/dist/esm/core/fingerprint.js +12 -0
  40. package/dist/esm/core/httpClient.js +95 -0
  41. package/dist/esm/core/loggerSDK.js +650 -0
  42. package/dist/esm/core/queueManager.js +269 -0
  43. package/dist/esm/core/retryManager.js +129 -0
  44. package/dist/esm/index.js +5 -0
  45. package/dist/esm/logger-sdk.mermaid +84 -0
  46. package/dist/esm/logger-sdk.svg +1 -0
  47. package/dist/esm/stack/stacktrace.js +37 -0
  48. package/dist/esm/transport/beaconTransport.js +81 -0
  49. package/dist/esm/transport/pixelImageTransport.js +99 -0
  50. package/dist/esm/transport/transport.js +0 -0
  51. package/dist/esm/transport/transportAdapter.js +32 -0
  52. package/dist/esm/transport/wechatTransport.js +120 -0
  53. package/dist/esm/types/api.js +0 -0
  54. package/dist/esm/types/env.js +0 -0
  55. package/dist/esm/types/external.d.ts +21 -0
  56. package/dist/esm/types/logEvent.js +0 -0
  57. package/dist/esm/types/logEventLevel.js +0 -0
  58. package/dist/esm/types/sdkOptions.js +0 -0
  59. package/dist/esm/types/trackOptions.js +0 -0
  60. package/dist/esm/utils/environment.js +154 -0
  61. package/dist/esm/utils/session.js +7 -0
  62. package/dist/esm/utils/tools.js +76 -0
  63. package/dist/esm/utils/uuid.js +11 -0
  64. package/dist/types/capture/jsError.d.ts +2 -0
  65. package/dist/types/capture/promiseError.d.ts +2 -0
  66. package/dist/types/capture/resourceError.d.ts +2 -0
  67. package/dist/types/capture/wechatError.d.ts +3 -0
  68. package/dist/types/compress/compression.d.ts +10 -0
  69. package/dist/types/config/index.d.ts +9 -0
  70. package/dist/types/core/fingerprint.d.ts +8 -0
  71. package/dist/types/core/httpClient.d.ts +11 -0
  72. package/dist/{loggerSDK.d.ts → types/core/loggerSDK.d.ts} +27 -2
  73. package/dist/{queueManager.d.ts → types/core/queueManager.d.ts} +9 -1
  74. package/dist/{retryManager.d.ts → types/core/retryManager.d.ts} +0 -4
  75. package/dist/types/index.d.ts +1 -0
  76. package/dist/types/stack/stacktrace.d.ts +2 -0
  77. package/dist/types/transport/beaconTransport.d.ts +11 -0
  78. package/dist/types/transport/pixelImageTransport.d.ts +11 -0
  79. package/dist/types/transport/transport.d.ts +14 -0
  80. package/dist/types/transport/transportAdapter.d.ts +10 -0
  81. package/dist/types/transport/wechatTransport.d.ts +11 -0
  82. package/dist/types/types/api.d.ts +12 -0
  83. package/dist/types/types/env.d.ts +14 -0
  84. package/dist/types/types/logEvent.d.ts +57 -0
  85. package/dist/types/types/logEventLevel.d.ts +2 -0
  86. package/dist/{types.d.ts → types/types/sdkOptions.d.ts} +23 -42
  87. package/dist/types/types/trackOptions.d.ts +7 -0
  88. package/dist/types/utils/environment.d.ts +21 -0
  89. package/dist/types/utils/session.d.ts +1 -0
  90. package/dist/types/utils/tools.d.ts +12 -0
  91. package/dist/types/utils/uuid.d.ts +7 -0
  92. package/dist/umd/logger-sdk.min.js +1 -0
  93. package/package.json +29 -5
  94. package/dist/index.d.ts +0 -10
  95. package/dist/index.js +0 -13
  96. package/dist/loggerSDK.js +0 -560
  97. package/dist/queueManager.js +0 -186
  98. package/dist/retryManager.js +0 -224
  99. package/dist/transportAdapter.d.ts +0 -51
  100. package/dist/transportAdapter.js +0 -315
  101. package/dist/types.js +0 -1
  102. package/dist/utils.d.ts +0 -52
  103. package/dist/utils.js +0 -348
@@ -0,0 +1 @@
1
+ <svg aria-roledescription="flowchart-v2" role="graphics-document document" viewBox="-8 -8 5231.60546875 3178.265625" style="max-width: 5231.61px; background-color: transparent;" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="http://www.w3.org/2000/svg" width="100%" id="my-svg"><style>#my-svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#my-svg .error-icon{fill:#552222;}#my-svg .error-text{fill:#552222;stroke:#552222;}#my-svg .edge-thickness-normal{stroke-width:2px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333333;stroke:#333333;}#my-svg .marker.cross{stroke:#333333;}#my-svg svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#my-svg .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#my-svg .cluster-label text{fill:#333;}#my-svg .cluster-label span,#my-svg p{color:#333;}#my-svg .label text,#my-svg span,#my-svg p{fill:#333;color:#333;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#my-svg .flowchart-label text{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .node .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .arrowheadPath{fill:#333333;}#my-svg .edgePath .path{stroke:#333333;stroke-width:2.0px;}#my-svg .flowchart-link{stroke:#333333;fill:none;}#my-svg .edgeLabel{background-color:#e8e8e8;text-align:center;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#my-svg .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#my-svg .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#my-svg .cluster text{fill:#333;}#my-svg .cluster span,#my-svg p{color:#333;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}</style><g><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="6" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointEnd"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 0 L 10 5 L 0 10 z"/></marker><marker orient="auto" markerHeight="12" markerWidth="12" markerUnits="userSpaceOnUse" refY="5" refX="4.5" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-pointStart"><path style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 0 5 L 10 10 L 10 0 z"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="11" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleEnd"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5" refX="-1" viewBox="0 0 10 10" class="marker flowchart" id="my-svg_flowchart-circleStart"><circle style="stroke-width: 1; stroke-dasharray: 1, 0;" class="arrowMarkerPath" r="5" cy="5" cx="5"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="12" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossEnd"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><marker orient="auto" markerHeight="11" markerWidth="11" markerUnits="userSpaceOnUse" refY="5.2" refX="-1" viewBox="0 0 11 11" class="marker cross flowchart" id="my-svg_flowchart-crossStart"><path style="stroke-width: 2; stroke-dasharray: 1, 0;" class="arrowMarkerPath" d="M 1,1 l 9,9 M 10,1 l -9,9"/></marker><g class="root"><g class="clusters"><g id="存储兼容" class="cluster default flowchart-label"><rect height="1070.859375" width="787.55078125" y="1032.65625" x="0" ry="0" rx="0" style=""/><g transform="translate(361.775390625, 1032.65625)" class="cluster-label"><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">存储兼容</span></div></foreignObject></g></g><g id="重试策略" class="cluster default flowchart-label"><rect height="280.875" width="1034.93359375" y="2769.390625" x="3861.875" ry="0" rx="0" style=""/><g transform="translate(4347.341796875, 2769.390625)" class="cluster-label"><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">重试策略</span></div></foreignObject></g></g><g id="定时与卸载" class="cluster default flowchart-label"><rect height="1081.78125" width="684.515625" y="1304.609375" x="1281.078125" ry="0" rx="0" style=""/><g transform="translate(1583.3359375, 1304.609375)" class="cluster-label"><foreignObject height="22" width="80"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">定时与卸载</span></div></foreignObject></g></g><g id="传输细节" class="cluster default flowchart-label"><rect height="838.640625" width="1557.00390625" y="1547.75" x="2228.734375" ry="0" rx="0" style=""/><g transform="translate(2975.236328125, 1547.75)" class="cluster-label"><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">传输细节</span></div></foreignObject></g></g><g id="批量刷新" class="cluster default flowchart-label"><rect height="591.875" width="298.796875" y="2570.390625" x="4916.80859375" ry="0" rx="0" style=""/><g transform="translate(5034.20703125, 2570.390625)" class="cluster-label"><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">批量刷新</span></div></foreignObject></g></g><g id="采集与上报" class="cluster default flowchart-label"><rect height="2520.390625" width="1314.90625" y="0" x="3836.46484375" ry="0" rx="0" style=""/><g transform="translate(4453.91796875, 0)" class="cluster-label"><foreignObject height="22" width="80"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">采集与上报</span></div></foreignObject></g></g></g><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-A LE-B" id="L-A-B-0" d="M2406.23,284.258L2406.23,325.467C2406.23,366.677,2406.23,449.096,2406.23,505.996C2406.23,562.895,2406.23,594.274,2406.23,609.964L2406.23,625.653"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-B LE-C" id="L-B-C-0" d="M2259.59,660.185L1990.397,679.886C1721.204,699.587,1182.819,738.989,913.701,765.922C644.582,792.856,644.731,807.321,644.805,814.554L644.879,821.786"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-C LE-D" id="L-C-D-0" d="M613.211,917.238L598.665,930.475C584.119,943.711,555.026,970.184,540.48,989.42C525.934,1008.656,525.934,1020.656,525.934,1041.436C525.934,1062.215,525.934,1091.774,525.934,1106.553L525.934,1121.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-C LE-E" id="L-C-E-0" d="M686.911,906.984L720.101,921.929C753.291,936.874,819.671,966.765,852.861,987.711C886.051,1008.656,886.051,1020.656,886.051,1041.436C886.051,1062.215,886.051,1091.774,886.051,1106.553L886.051,1121.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-B LE-F" id="L-B-F-0" d="M2259.59,665.096L2082.577,683.978C1905.565,702.861,1551.54,740.626,1374.602,766.741C1197.664,792.856,1197.813,807.321,1197.887,814.554L1197.961,821.786"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-F LE-G" id="L-F-G-0" d="M1164.378,915.324L1147.49,928.879C1130.603,942.435,1096.827,969.545,1079.939,989.101C1063.051,1008.656,1063.051,1020.656,1063.051,1041.436C1063.051,1062.215,1063.051,1091.774,1063.051,1106.553L1063.051,1121.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-F LE-H" id="L-F-H-0" d="M1215.105,931.871L1219.263,942.669C1223.421,953.466,1231.736,975.061,1235.893,991.859C1240.051,1008.656,1240.051,1020.656,1240.051,1041.436C1240.051,1062.215,1240.051,1091.774,1240.051,1106.553L1240.051,1121.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-B LE-I" id="L-B-I-0" d="M2507.669,667.953L2608.594,686.359C2709.519,704.766,2911.369,741.578,3012.294,774.207C3113.219,806.835,3113.219,835.279,3113.219,849.501L3113.219,863.723"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-I LE-J" id="L-I-J-0" d="M3113.219,906.023L3113.219,921.129C3113.219,936.234,3113.219,966.445,3113.219,987.551C3113.219,1008.656,3113.219,1020.656,3113.294,1034.936C3113.369,1049.215,3113.52,1065.774,3113.595,1074.054L3113.671,1082.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-J LE-K" id="L-J-K-0" d="M3065.049,1154.964L2965.735,1173.905C2866.421,1192.845,2667.793,1230.727,2568.478,1255.668C2469.164,1280.609,2469.164,1292.609,2469.164,1314.954C2469.164,1337.299,2469.164,1369.99,2469.164,1404.513C2469.164,1439.036,2469.164,1475.393,2469.164,1499.572C2469.164,1523.75,2469.164,1535.75,2469.164,1558.295C2469.164,1580.84,2469.164,1613.93,2469.164,1630.475L2469.164,1647.02"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-J LE-L" id="L-J-L-0" d="M3147.309,1170.043L3169.946,1186.471C3192.583,1202.898,3237.858,1235.754,3260.495,1258.182C3283.133,1280.609,3283.133,1292.609,3283.199,1301.976C3283.265,1311.343,3283.397,1318.077,3283.463,1321.444L3283.529,1324.81"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-L LE-M" id="L-L-M-0" d="M3231.295,1423.913L3194.046,1438.552C3156.797,1453.192,3082.299,1482.471,3045.05,1503.11C3007.801,1523.75,3007.801,1535.75,3007.801,1558.295C3007.801,1580.84,3007.801,1613.93,3007.801,1630.475L3007.801,1647.02"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-L LE-N" id="L-L-N-0" d="M3329.255,1430.627L3351.784,1444.148C3374.312,1457.668,3419.369,1484.709,3441.897,1504.23C3464.426,1523.75,3464.426,1535.75,3464.426,1558.295C3464.426,1580.84,3464.426,1613.93,3464.426,1630.475L3464.426,1647.02"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-B LE-O" id="L-B-O-0" d="M2552.871,665.374L2726.365,684.21C2899.858,703.046,3246.845,740.718,3420.339,773.777C3593.832,806.835,3593.832,835.279,3593.832,849.501L3593.832,863.723"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-B LE-P" id="L-B-P-0" d="M2552.871,663.566L2751.72,682.703C2950.569,701.841,3348.267,740.116,3547.116,773.475C3745.965,806.835,3745.965,835.279,3745.965,849.501L3745.965,863.723"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-B LE-Q" id="L-B-Q-0" d="M2274.309,667.953L2143.057,686.359C2011.804,704.766,1749.298,741.578,1618.046,774.207C1486.793,806.835,1486.793,835.279,1486.793,849.501L1486.793,863.723"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Q LE-R" id="L-Q-R-0" d="M1486.793,906.023L1486.793,921.129C1486.793,936.234,1486.793,966.445,1486.793,987.551C1486.793,1008.656,1486.793,1020.656,1486.793,1041.436C1486.793,1062.215,1486.793,1091.774,1486.793,1106.553L1486.793,1121.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-R LE-S" id="L-R-S-0" d="M1441.598,1163.633L1398.855,1181.129C1356.112,1198.625,1270.626,1233.617,1227.883,1257.113C1185.141,1280.609,1185.141,1292.609,1185.212,1303.998C1185.284,1315.387,1185.427,1326.165,1185.499,1331.554L1185.57,1336.943"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-S LE-T" id="L-S-T-0" d="M1226.566,1423.192L1256.838,1437.951C1287.109,1452.711,1347.652,1482.231,1377.924,1502.99C1408.195,1523.75,1408.195,1535.75,1408.195,1558.045C1408.195,1580.34,1408.195,1612.93,1408.195,1629.225L1408.195,1645.52"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-R LE-U" id="L-R-U-0" d="M1528.432,1163.633L1567.812,1181.129C1607.192,1198.625,1685.951,1233.617,1725.331,1257.113C1764.711,1280.609,1764.711,1292.609,1764.711,1310.988C1764.711,1329.366,1764.711,1354.123,1764.711,1366.501L1764.711,1378.88"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-U LE-V" id="L-U-V-0" d="M1782.064,1421.18L1796.223,1436.275C1810.383,1451.37,1838.701,1481.56,1852.86,1502.655C1867.02,1523.75,1867.02,1535.75,1894.148,1556.118C1921.276,1576.487,1975.533,1605.223,2002.661,1619.592L2029.79,1633.96"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-V LE-V1" id="L-V-V1-0" d="M2027.259,1695.986L1979.458,1713.637C1931.657,1731.288,1836.055,1766.589,1788.254,1806.325C1740.453,1846.061,1740.453,1890.232,1740.453,1912.318L1740.453,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-V LE-V2" id="L-V-V2-0" d="M2097.664,1766.391L2097.581,1772.307C2097.497,1778.224,2097.331,1790.057,2097.247,1818.059C2097.164,1846.061,2097.164,1890.232,2097.164,1912.318L2097.164,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-W LE-X" id="L-W-X-0" d="M4446.039,284.258L4446.039,325.467C4446.039,366.677,4446.039,449.096,4446.105,493.673C4446.171,538.249,4446.303,544.983,4446.369,548.35L4446.435,551.717"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-X LE-X1" id="L-X-X1-0" d="M4372.172,668.523L4298.424,686.834C4224.676,705.146,4077.18,741.768,4003.432,774.302C3929.684,806.835,3929.684,835.279,3929.684,849.501L3929.684,863.723"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-X LE-X2" id="L-X-X2-0" d="M4480.229,709.201L4486.75,720.733C4493.271,732.264,4506.313,755.327,4512.906,772.059C4519.498,788.791,4519.64,799.191,4519.712,804.391L4519.783,809.591"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-X2 LE-X3" id="L-X2-X3-0" d="M4459.483,900.783L4383.402,916.762C4307.322,932.741,4155.161,964.699,4079.08,986.677C4003,1008.656,4003,1020.656,4003,1041.436C4003,1062.215,4003,1091.774,4003,1106.553L4003,1121.333"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-X2 LE-Y" id="L-X2-Y-0" d="M4550.898,930.114L4559.056,941.204C4567.213,952.295,4583.529,974.475,4591.686,991.566C4599.844,1008.656,4599.844,1020.656,4599.91,1030.023C4599.976,1039.39,4600.108,1046.124,4600.174,1049.49L4600.24,1052.857"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Y LE-Y1" id="L-Y-Y1-0" d="M4529.962,1162.728L4456.883,1180.375C4383.804,1198.022,4237.646,1233.316,4164.567,1256.962C4091.488,1280.609,4091.488,1292.609,4091.488,1310.988C4091.488,1329.366,4091.488,1354.123,4091.488,1366.501L4091.488,1378.88"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Y LE-Z" id="L-Y-Z-0" d="M4601.561,1231.892L4601.565,1238.012C4601.569,1244.131,4601.578,1256.37,4601.582,1268.49C4601.586,1280.609,4601.586,1292.609,4601.586,1310.988C4601.586,1329.366,4601.586,1354.123,4601.586,1366.501L4601.586,1378.88"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-Z LE-AA" id="L-Z-AA-0" d="M4601.586,1421.18L4601.586,1436.275C4601.586,1451.37,4601.586,1481.56,4601.586,1502.655C4601.586,1523.75,4601.586,1535.75,4601.662,1551.055C4601.738,1566.361,4601.89,1584.972,4601.966,1594.277L4602.043,1603.583"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AA LE-AB" id="L-AA-AB-0" d="M4646.429,1686.414L4697.998,1705.66C4749.567,1724.907,4852.706,1763.399,4904.275,1804.73C4955.844,1846.061,4955.844,1890.232,4955.844,1912.318L4955.844,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AB LE-AC" id="L-AB-AC-0" d="M4955.844,1976.703L4955.844,1997.839C4955.844,2018.974,4955.844,2061.245,4955.844,2088.38C4955.844,2115.516,4955.844,2127.516,4955.915,2138.716C4955.986,2149.916,4956.129,2160.316,4956.2,2165.516L4956.271,2170.716"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AC LE-AD" id="L-AC-AD-0" d="M4997.184,2321.051L5005.703,2331.941C5014.221,2342.831,5031.259,2364.611,5039.778,2381.501C5048.297,2398.391,5048.297,2410.391,5048.297,2421.507C5048.297,2432.624,5048.297,2442.857,5048.297,2447.974L5048.297,2453.091"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AC LE-AE" id="L-AC-AE-0" d="M4891.788,2297.335L4857.754,2312.177C4823.721,2327.02,4755.653,2356.705,4721.62,2377.548C4687.586,2398.391,4687.586,2410.391,4687.586,2421.507C4687.586,2432.624,4687.586,2442.857,4687.586,2447.974L4687.586,2453.091"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AA LE-AF" id="L-AA-AF-0" d="M4555.857,1684.529L4494.032,1704.089C4432.207,1723.649,4308.556,1762.77,4246.731,1808.382C4184.906,1853.995,4184.906,1906.099,4184.906,1956.37C4184.906,2006.641,4184.906,2055.078,4184.906,2085.297C4184.906,2115.516,4184.906,2127.516,4184.906,2155.005C4184.906,2182.495,4184.906,2225.474,4184.906,2266.62C4184.906,2307.766,4184.906,2347.078,4184.906,2372.734C4184.906,2398.391,4184.906,2410.391,4184.906,2421.507C4184.906,2432.624,4184.906,2442.857,4184.906,2447.974L4184.906,2453.091"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AD LE-AG" id="L-AD-AG-0" d="M5048.297,2495.391L5048.297,2499.557C5048.297,2503.724,5048.297,2512.057,5048.297,2520.391C5048.297,2528.724,5048.297,2537.057,5048.297,2545.391C5048.297,2553.724,5048.297,2562.057,5048.297,2569.507C5048.297,2576.957,5048.297,2583.524,5048.297,2586.807L5048.297,2590.091"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AG LE-AH" id="L-AG-AH-0" d="M5048.297,2632.391L5048.297,2636.557C5048.297,2640.724,5048.297,2649.057,5048.297,2656.507C5048.297,2663.957,5048.297,2670.524,5048.297,2673.807L5048.297,2677.091"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AH LE-AI" id="L-AH-AI-0" d="M5055.914,2719.391L5057.629,2723.557C5059.345,2727.724,5062.776,2736.057,5064.491,2744.391C5066.207,2752.724,5066.207,2761.057,5066.207,2775.58C5066.207,2790.103,5066.207,2810.816,5066.207,2821.172L5066.207,2831.528"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AI LE-AJ" id="L-AI-AJ-0" d="M5066.207,2873.828L5066.207,2886.901C5066.207,2899.974,5066.207,2926.12,5066.207,2944.309C5066.207,2962.499,5066.207,2972.732,5066.207,2977.849L5066.207,2982.966"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AJ LE-AK" id="L-AJ-AK-0" d="M5066.207,3025.266L5066.207,3029.432C5066.207,3033.599,5066.207,3041.932,5066.207,3050.266C5066.207,3058.599,5066.207,3066.932,5066.207,3074.382C5066.207,3081.832,5066.207,3088.399,5066.207,3091.682L5066.207,3094.966"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-K LE-K1" id="L-K-K1-0" d="M2469.164,1686.32L2469.164,1705.582C2469.164,1724.844,2469.164,1763.367,2469.164,1804.714C2469.164,1846.061,2469.164,1890.232,2469.164,1912.318L2469.164,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-M LE-M1" id="L-M-M1-0" d="M3007.801,1686.32L3007.801,1705.582C3007.801,1724.844,3007.801,1763.367,3007.872,1787.829C3007.943,1812.291,3008.086,1822.691,3008.157,1827.891L3008.228,1833.091"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-M1 LE-M2" id="L-M1-M2-0" d="M2928.896,1999.611L2895.037,2016.929C2861.178,2034.246,2793.46,2068.881,2759.601,2092.198C2725.742,2115.516,2725.742,2127.516,2725.742,2151.039C2725.742,2174.561,2725.742,2209.607,2725.742,2227.13L2725.742,2244.653"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-M1 LE-M3" id="L-M1-M3-0" d="M3088.063,1999.253L3122.325,2016.63C3156.586,2034.007,3225.11,2068.761,3259.371,2092.139C3293.633,2115.516,3293.633,2127.516,3293.633,2151.039C3293.633,2174.561,3293.633,2209.607,3293.633,2227.13L3293.633,2244.653"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-N LE-N1" id="L-N-N1-0" d="M3464.426,1686.32L3464.426,1705.582C3464.426,1724.844,3464.426,1763.367,3464.426,1804.714C3464.426,1846.061,3464.426,1890.232,3464.426,1912.318L3464.426,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-T LE-T1" id="L-T-T1-0" d="M1408.195,1687.82L1408.195,1706.832C1408.195,1725.844,1408.195,1763.867,1408.195,1804.964C1408.195,1846.061,1408.195,1890.232,1408.195,1912.318L1408.195,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-U LE-U1" id="L-U-U1-0" d="M1758.169,1421.18L1752.832,1436.275C1747.494,1451.37,1736.82,1481.56,1731.482,1502.655C1726.145,1523.75,1726.145,1535.75,1726.145,1558.045C1726.145,1580.34,1726.145,1612.93,1726.145,1629.225L1726.145,1645.52"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-V1 LE-U2" id="L-V1-U2-0" d="M1740.453,1976.703L1740.453,1997.839C1740.453,2018.974,1740.453,2061.245,1740.453,2088.38C1740.453,2115.516,1740.453,2127.516,1740.453,2151.039C1740.453,2174.561,1740.453,2209.607,1740.453,2227.13L1740.453,2244.653"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AF LE-R1" id="L-AF-R1-0" d="M4184.906,2495.391L4184.906,2499.557C4184.906,2503.724,4184.906,2512.057,4184.906,2520.391C4184.906,2528.724,4184.906,2537.057,4184.906,2545.391C4184.906,2553.724,4184.906,2562.057,4184.906,2573.474C4184.906,2584.891,4184.906,2599.391,4184.906,2613.891C4184.906,2628.391,4184.906,2642.891,4184.906,2657.391C4184.906,2671.891,4184.906,2686.391,4184.906,2700.891C4184.906,2715.391,4184.906,2729.891,4184.906,2741.307C4184.906,2752.724,4184.906,2761.057,4184.972,2768.591C4185.038,2776.124,4185.17,2782.858,4185.236,2786.225L4185.302,2789.592"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-R1 LE-R2" id="L-R1-R2-0" d="M4150.539,2881.898L4134.659,2893.626C4118.779,2905.354,4087.018,2928.81,4071.138,2945.654C4055.258,2962.499,4055.258,2972.732,4055.258,2977.849L4055.258,2982.966"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-R1 LE-R3" id="L-R1-R3-0" d="M4220.274,2881.898L4235.987,2893.626C4251.701,2905.354,4283.128,2928.81,4298.841,2945.654C4314.555,2962.499,4314.555,2972.732,4314.555,2977.849L4314.555,2982.966"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-AH LE-R4" id="L-AH-R4-0" d="M5020.781,2719.391L5014.584,2723.557C5008.387,2727.724,4995.992,2736.057,4989.795,2744.391C4983.598,2752.724,4983.598,2761.057,4942.337,2777.127C4901.075,2793.197,4818.553,2817.003,4777.292,2828.906L4736.031,2840.809"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-R4 LE-R5" id="L-R4-R5-0" d="M4649.492,2882.707L4634.613,2894.3C4619.734,2905.893,4589.977,2929.079,4575.098,2945.789C4560.219,2962.499,4560.219,2972.732,4560.219,2977.849L4560.219,2982.966"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-R4 LE-R6" id="L-R4-R6-0" d="M4717.61,2882.707L4732.322,2894.3C4747.034,2905.893,4776.458,2929.079,4791.171,2945.789C4805.883,2962.499,4805.883,2972.732,4805.883,2977.849L4805.883,2982.966"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-D LE-D1" id="L-D-D1-0" d="M525.934,1163.633L525.934,1181.129C525.934,1198.625,525.934,1233.617,525.934,1257.113C525.934,1280.609,525.934,1292.609,526.009,1307.154C526.085,1321.7,526.236,1338.79,526.311,1347.335L526.387,1355.88"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-D1 LE-D2" id="L-D1-D2-0" d="M496.978,1415.724L459.12,1431.729C421.261,1447.733,345.545,1479.741,307.686,1501.746C269.828,1523.75,269.828,1535.75,269.828,1558.045C269.828,1580.34,269.828,1612.93,269.828,1629.225L269.828,1645.52"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-D2 LE-D2a" id="L-D2-D2a-0" d="M269.828,1687.82L269.828,1706.832C269.828,1725.844,269.828,1763.867,269.828,1804.964C269.828,1846.061,269.828,1890.232,269.828,1912.318L269.828,1934.403"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-D1 LE-D3" id="L-D1-D3-0" d="M548.959,1422.655L566.147,1437.504C583.334,1452.353,617.71,1482.052,634.898,1502.901C652.086,1523.75,652.086,1535.75,652.086,1558.045C652.086,1580.34,652.086,1612.93,652.086,1629.225L652.086,1645.52"/></g><g class="edgeLabels"><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(525.93359375, 996.65625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(886.05078125, 996.65625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(1063.05078125, 996.65625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(1240.05078125, 996.65625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(2469.1640625, 1402.6796875)" class="edgeLabel"><g transform="translate(-40, -11)" class="label"><foreignObject height="22" width="80"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">微信小程序</span></div></foreignObject></g></g><g transform="translate(3283.1328125, 1268.609375)" class="edgeLabel"><g transform="translate(-24, -11)" class="label"><foreignObject height="22" width="48"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">浏览器</span></div></foreignObject></g></g><g transform="translate(3007.80078125, 1511.75)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(3464.42578125, 1511.75)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(1408.1953125, 1511.75)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(1740.453125, 1801.890625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(2097.1640625, 1801.890625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(3929.68359375, 778.390625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g transform="translate(4519.35546875, 778.390625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(4003, 996.65625)" class="edgeLabel"><g transform="translate(-16, -11)" class="label"><foreignObject height="22" width="32"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">重复</span></div></foreignObject></g></g><g transform="translate(4599.84375, 996.65625)" class="edgeLabel"><g transform="translate(-24, -11)" class="label"><foreignObject height="22" width="48"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">非重复</span></div></foreignObject></g></g><g transform="translate(4091.48828125, 1268.609375)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g transform="translate(4601.5859375, 1268.609375)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(4955.84375, 1801.890625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(5048.296875, 2422.390625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(4687.5859375, 2422.390625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g transform="translate(4184.90625, 2139.515625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(2725.7421875, 2139.515625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(3293.6328125, 2139.515625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(4055.2578125, 2952.265625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(4314.5546875, 2952.265625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(4560.21875, 2952.265625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(4805.8828125, 2952.265625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(269.828125, 1511.75)" class="edgeLabel"><g transform="translate(-24, -11)" class="label"><foreignObject height="22" width="48"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">浏览器</span></div></foreignObject></g></g><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(652.0859375, 1511.75)" class="edgeLabel"><g transform="translate(-40, -11)" class="label"><foreignObject height="22" width="80"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">微信小程序</span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(525.93359375, 1402.6796875)" data-id="D1" data-node="true" id="flowchart-D1-117" class="node default default flowchart-label"><polygon style="" transform="translate(-42,42)" class="label-container" points="42,0 84,-42 42,-84 0,-42"/><g transform="translate(-16, -11)" style="" class="label"><rect/><foreignObject height="22" width="32"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">环境</span></div></foreignObject></g></g><g transform="translate(525.93359375, 1145.1328125)" data-id="D" data-node="true" id="flowchart-D-5" class="node default default flowchart-label"><rect height="37" width="207" y="-18.5" x="-103.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-96, -11)" style="" class="label"><rect/><foreignObject height="22" width="192"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">创建队列管理器并加载存储</span></div></foreignObject></g></g><g transform="translate(269.828125, 1669.3203125)" data-id="D2" data-node="true" id="flowchart-D2-119" class="node default default flowchart-label"><rect height="37" width="469.65625" y="-18.5" x="-234.828125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-227.328125, -11)" style="" class="label"><rect/><foreignObject height="22" width="454.65625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">动态 import localforage 使用 IndexedDB; 失败回退 localStorage</span></div></foreignObject></g></g><g transform="translate(269.828125, 1958.203125)" data-id="D2a" data-node="true" id="flowchart-D2a-121" class="node default default flowchart-label"><rect height="37" width="301.078125" y="-18.5" x="-150.5390625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-143.0390625, -11)" style="" class="label"><rect/><foreignObject height="22" width="286.078125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">如解析失败: 回退 globalThis.localforage</span></div></foreignObject></g></g><g transform="translate(652.0859375, 1669.3203125)" data-id="D3" data-node="true" id="flowchart-D3-123" class="node default default flowchart-label"><rect height="37" width="194.859375" y="-18.5" x="-97.4296875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-89.9296875, -11)" style="" class="label"><rect/><foreignObject height="22" width="179.859375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">使用 wx.storage 同步 API</span></div></foreignObject></g></g><g transform="translate(4184.90625, 2855.328125)" data-id="R1" data-node="true" id="flowchart-R1-105" class="node default default flowchart-label"><polygon style="" transform="translate(-60.9375,60.9375)" class="label-container" points="60.9375,0 121.875,-60.9375 60.9375,-121.875 0,-60.9375"/><g transform="translate(-34.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="69.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用重试?</span></div></foreignObject></g></g><g transform="translate(4055.2578125, 3006.765625)" data-id="R2" data-node="true" id="flowchart-R2-107" class="node default default flowchart-label"><rect height="37" width="316.765625" y="-18.5" x="-158.3828125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-150.8828125, -11)" style="" class="label"><rect/><foreignObject height="22" width="301.765625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">executeWithRetry(event.logId, sendFn)</span></div></foreignObject></g></g><g transform="translate(4314.5546875, 3006.765625)" data-id="R3" data-node="true" id="flowchart-R3-109" class="node default default flowchart-label"><rect height="37" width="101.828125" y="-18.5" x="-50.9140625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-43.4140625, -11)" style="" class="label"><rect/><foreignObject height="22" width="86.828125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">直接 sendFn</span></div></foreignObject></g></g><g transform="translate(4683.05078125, 2855.328125)" data-id="R4" data-node="true" id="flowchart-R4-111" class="node default default flowchart-label"><polygon style="" transform="translate(-60.9375,60.9375)" class="label-container" points="60.9375,0 121.875,-60.9375 60.9375,-121.875 0,-60.9375"/><g transform="translate(-34.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="69.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用重试?</span></div></foreignObject></g></g><g transform="translate(4560.21875, 3006.765625)" data-id="R5" data-node="true" id="flowchart-R5-113" class="node default default flowchart-label"><rect height="37" width="289.5" y="-18.5" x="-144.75" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-137.25, -11)" style="" class="label"><rect/><foreignObject height="22" width="274.5"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">executeWithRetry(batchId, sendFn)</span></div></foreignObject></g></g><g transform="translate(4805.8828125, 3006.765625)" data-id="R6" data-node="true" id="flowchart-R6-115" class="node default default flowchart-label"><rect height="37" width="101.828125" y="-18.5" x="-50.9140625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-43.4140625, -11)" style="" class="label"><rect/><foreignObject height="22" width="86.828125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">直接 sendFn</span></div></foreignObject></g></g><g transform="translate(1408.1953125, 1958.203125)" data-id="T1" data-node="true" id="flowchart-T1-99" class="node default default flowchart-label"><rect height="37" width="184.234375" y="-18.5" x="-92.1171875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-84.6171875, -11)" style="" class="label"><rect/><foreignObject height="22" width="169.234375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">setInterval 周期性 flush</span></div></foreignObject></g></g><g transform="translate(1408.1953125, 1669.3203125)" data-id="T" data-node="true" id="flowchart-T-37" class="node default default flowchart-label"><rect height="37" width="127" y="-18.5" x="-63.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-56, -11)" style="" class="label"><rect/><foreignObject height="22" width="112"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启动批量定时器</span></div></foreignObject></g></g><g transform="translate(1726.14453125, 1669.3203125)" data-id="U1" data-node="true" id="flowchart-U1-101" class="node default default flowchart-label"><rect height="37" width="379.234375" y="-18.5" x="-189.6171875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-182.1171875, -11)" style="" class="label"><rect/><foreignObject height="22" width="364.234375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">visibilitychange/pagehide/beforeunload 触发 flush</span></div></foreignObject></g></g><g transform="translate(1764.7109375, 1402.6796875)" data-id="U" data-node="true" id="flowchart-U-39" class="node default default flowchart-label"><rect height="37" width="199.390625" y="-18.5" x="-99.6953125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-92.1953125, -11)" style="" class="label"><rect/><foreignObject height="22" width="184.390625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">挂载卸载/可见性事件处理</span></div></foreignObject></g></g><g transform="translate(1740.453125, 2268.453125)" data-id="U2" data-node="true" id="flowchart-U2-103" class="node default default flowchart-label"><rect height="37" width="360.1875" y="-18.5" x="-180.09375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-172.59375, -11)" style="" class="label"><rect/><foreignObject height="22" width="345.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">销毁时统一 off(js/promise/resource/wechat)</span></div></foreignObject></g></g><g transform="translate(1740.453125, 1958.203125)" data-id="V1" data-node="true" id="flowchart-V1-43" class="node default default flowchart-label"><rect height="37" width="380.28125" y="-18.5" x="-190.140625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-182.640625, -11)" style="" class="label"><rect/><foreignObject height="22" width="365.28125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">按 autoCapture: 注册 js/promise/resource/wechat</span></div></foreignObject></g></g><g transform="translate(1514.16015625, 17)" class="root"><g class="clusters"><g id="压缩流程" class="cluster default flowchart-label"><rect height="481.515625" width="787.296875" y="8" x="8" ry="0" rx="0" style=""/><g transform="translate(369.6484375, 8)" class="cluster-label"><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">压缩流程</span></div></foreignObject></g></g></g><g class="edgePaths"><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-C1 LE-C2" id="L-C1-C2-0" d="M415.379,70L415.379,74.167C415.379,78.333,415.379,86.667,415.445,94.2C415.511,101.734,415.643,108.467,415.709,111.834L415.775,115.201"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-C2 LE-C3" id="L-C2-C3-0" d="M350.514,290.651L329.354,307.462C308.194,324.273,265.875,357.894,244.715,379.822C223.555,401.749,223.555,411.982,223.555,417.099L223.555,422.216"/><path marker-end="url(#my-svg_flowchart-pointEnd)" style="fill:none;" class="edge-thickness-normal edge-pattern-solid flowchart-link LS-C2 LE-C4" id="L-C2-C4-0" d="M481.243,290.651L502.237,307.462C523.23,324.273,565.217,357.894,586.21,380.072C607.203,402.249,607.203,412.982,607.203,418.349L607.203,423.716"/></g><g class="edgeLabels"><g class="edgeLabel"><g transform="translate(0, 0)" class="label"><foreignObject height="0" width="0"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel"></span></div></foreignObject></g></g><g transform="translate(223.5546875, 391.515625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">是</span></div></foreignObject></g></g><g transform="translate(607.203125, 391.515625)" class="edgeLabel"><g transform="translate(-8, -11)" class="label"><foreignObject height="22" width="16"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="edgeLabel">否</span></div></foreignObject></g></g></g><g class="nodes"><g transform="translate(415.37890625, 237.7578125)" data-id="C2" data-node="true" id="flowchart-C2-93" class="node default default flowchart-label"><polygon style="" transform="translate(-117.7578125,117.7578125)" class="label-container" points="117.7578125,0 235.515625,-117.7578125 117.7578125,-235.515625 0,-117.7578125"/><g transform="translate(-91.7578125, -11)" style="" class="label"><rect/><foreignObject height="22" width="183.515625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">支持 CompressionStream?</span></div></foreignObject></g></g><g transform="translate(415.37890625, 51.5)" data-id="C1" data-node="true" id="flowchart-C1-92" class="node default default flowchart-label"><rect height="37" width="176.421875" y="-18.5" x="-88.2109375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-80.7109375, -11)" style="" class="label"><rect/><foreignObject height="22" width="161.421875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">gzipCompress(data)</span></div></foreignObject></g></g><g transform="translate(223.5546875, 446.015625)" data-id="C3" data-node="true" id="flowchart-C3-95" class="node default default flowchart-label"><rect height="37" width="361.109375" y="-18.5" x="-180.5546875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-173.0546875, -11)" style="" class="label"><rect/><foreignObject height="22" width="346.109375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">CompressionStream('gzip') 流式压缩后 Base64</span></div></foreignObject></g></g><g transform="translate(607.203125, 446.015625)" data-id="C4" data-node="true" id="flowchart-C4-97" class="node default default flowchart-label"><rect height="34" width="306.1875" y="-17" x="-153.09375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-145.59375, -9.5)" style="" class="label"><rect/><foreignObject height="19" width="291.1875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">fflate.gzipSync + Base64.fromUint8Array</span></div></foreignObject></g></g></g></g><g transform="translate(2469.1640625, 1958.203125)" data-id="K1" data-node="true" id="flowchart-K1-83" class="node default default flowchart-label"><rect height="37" width="410.859375" y="-18.5" x="-205.4296875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-197.9296875, -11)" style="" class="label"><rect/><foreignObject height="22" width="395.859375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">字符串化; 启用 gzip 时压缩成 Base64; wx.request POST</span></div></foreignObject></g></g><g transform="translate(2469.1640625, 1669.3203125)" data-id="K" data-node="true" id="flowchart-K-19" class="node default default flowchart-label"><rect height="34" width="135.484375" y="-17" x="-67.7421875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-60.2421875, -9.5)" style="" class="label"><rect/><foreignObject height="19" width="120.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">WechatTransport</span></div></foreignObject></g></g><g transform="translate(3007.80078125, 1958.203125)" data-id="M1" data-node="true" id="flowchart-M1-85" class="node default default flowchart-label"><polygon style="" transform="translate(-120.3125,120.3125)" class="label-container" points="120.3125,0 240.625,-120.3125 120.3125,-240.625 0,-120.3125"/><g transform="translate(-94.3125, -11)" style="" class="label"><rect/><foreignObject height="22" width="188.625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用 gzip? 且满足批量条件</span></div></foreignObject></g></g><g transform="translate(3007.80078125, 1669.3203125)" data-id="M" data-node="true" id="flowchart-M-23" class="node default default flowchart-label"><rect height="34" width="133.875" y="-17" x="-66.9375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-59.4375, -9.5)" style="" class="label"><rect/><foreignObject height="19" width="118.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">BeaconTransport</span></div></foreignObject></g></g><g transform="translate(2725.7421875, 2268.453125)" data-id="M2" data-node="true" id="flowchart-M2-87" class="node default default flowchart-label"><rect height="37" width="685.6875" y="-18.5" x="-342.84375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-335.34375, -11)" style="" class="label"><rect/><foreignObject height="22" width="670.6875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">压缩 items 为 Base64 字符串; 替换 body 为 「...payload, items: Base64」; 设置 Content-Type</span></div></foreignObject></g></g><g transform="translate(3293.6328125, 2268.453125)" data-id="M3" data-node="true" id="flowchart-M3-89" class="node default default flowchart-label"><rect height="37" width="342.546875" y="-18.5" x="-171.2734375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-163.7734375, -11)" style="" class="label"><rect/><foreignObject height="22" width="327.546875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">直接 JSON body; Blob 包裹; sendBeacon POST</span></div></foreignObject></g></g><g transform="translate(3464.42578125, 1958.203125)" data-id="N1" data-node="true" id="flowchart-N1-91" class="node default default flowchart-label"><rect height="37" width="572.625" y="-18.5" x="-286.3125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-278.8125, -11)" style="" class="label"><rect/><foreignObject height="22" width="557.625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">字符串化 items; gzip: Base64 / btoa / encodeURIComponent 回退; Image GET</span></div></foreignObject></g></g><g transform="translate(3464.42578125, 1669.3203125)" data-id="N" data-node="true" id="flowchart-N-25" class="node default default flowchart-label"><rect height="34" width="159.53125" y="-17" x="-79.765625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-72.265625, -9.5)" style="" class="label"><rect/><foreignObject height="19" width="144.53125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">PixelImageTransport</span></div></foreignObject></g></g><g transform="translate(5048.296875, 2613.890625)" data-id="AG" data-node="true" id="flowchart-AG-73" class="node default default flowchart-label"><rect height="37" width="150.265625" y="-18.5" x="-75.1328125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-67.6328125, -11)" style="" class="label"><rect/><foreignObject height="22" width="135.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">peek 读取待发事件</span></div></foreignObject></g></g><g transform="translate(5048.296875, 2700.890625)" data-id="AH" data-node="true" id="flowchart-AH-75" class="node default default flowchart-label"><rect height="37" width="157.15625" y="-18.5" x="-78.578125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-71.078125, -11)" style="" class="label"><rect/><foreignObject height="22" width="142.15625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">sendBatch 批量发送</span></div></foreignObject></g></g><g transform="translate(5066.20703125, 2855.328125)" data-id="AI" data-node="true" id="flowchart-AI-77" class="node default default flowchart-label"><rect height="37" width="219.171875" y="-18.5" x="-109.5859375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-102.0859375, -11)" style="" class="label"><rect/><foreignObject height="22" width="204.171875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">按 appId &amp; stage 分组并分块</span></div></foreignObject></g></g><g transform="translate(5066.20703125, 3006.765625)" data-id="AJ" data-node="true" id="flowchart-AJ-79" class="node default default flowchart-label"><rect height="37" width="228.796875" y="-18.5" x="-114.3984375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-106.8984375, -11)" style="" class="label"><rect/><foreignObject height="22" width="213.796875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">transporter.send(并发收集)</span></div></foreignObject></g></g><g transform="translate(5066.20703125, 3118.765625)" data-id="AK" data-node="true" id="flowchart-AK-81" class="node default default flowchart-label"><rect height="37" width="161.3125" y="-18.5" x="-80.65625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-73.15625, -11)" style="" class="label"><rect/><foreignObject height="22" width="146.3125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">dequeue 成功后出队</span></div></foreignObject></g></g><g transform="translate(4446.0390625, 649.453125)" data-id="X" data-node="true" id="flowchart-X-47" class="node default default flowchart-label"><polygon style="" transform="translate(-92.9375,92.9375)" class="label-container" points="92.9375,0 185.875,-92.9375 92.9375,-185.875 0,-92.9375"/><g transform="translate(-66.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="133.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">已初始化且未关闭?</span></div></foreignObject></g></g><g transform="translate(4446.0390625, 265.7578125)" data-id="W" data-node="true" id="flowchart-W-46" class="node default default flowchart-label"><rect height="37" width="173.609375" y="-18.5" x="-86.8046875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-79.3046875, -11)" style="" class="label"><rect/><foreignObject height="22" width="158.609375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">调用 track 或自动采集</span></div></foreignObject></g></g><g transform="translate(3929.68359375, 887.5234375)" data-id="X1" data-node="true" id="flowchart-X1-49" class="node default default flowchart-label"><rect height="37" width="47" y="-18.5" x="-23.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-16, -11)" style="" class="label"><rect/><foreignObject height="22" width="32"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">跳过</span></div></foreignObject></g></g><g transform="translate(4519.35546875, 887.5234375)" data-id="X2" data-node="true" id="flowchart-X2-51" class="node default default flowchart-label"><polygon style="" transform="translate(-73.1328125,73.1328125)" class="label-container" points="73.1328125,0 146.265625,-73.1328125 73.1328125,-146.265625 0,-73.1328125"/><g transform="translate(-47.1328125, -11)" style="" class="label"><rect/><foreignObject height="22" width="94.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">3秒去重窗口?</span></div></foreignObject></g></g><g transform="translate(4003, 1145.1328125)" data-id="X3" data-node="true" id="flowchart-X3-53" class="node default default flowchart-label"><rect height="37" width="47" y="-18.5" x="-23.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-16, -11)" style="" class="label"><rect/><foreignObject height="22" width="32"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">跳过</span></div></foreignObject></g></g><g transform="translate(4599.84375, 1145.1328125)" data-id="Y" data-node="true" id="flowchart-Y-55" class="node default default flowchart-label"><polygon style="" transform="translate(-87.4765625,87.4765625)" class="label-container" points="87.4765625,0 174.953125,-87.4765625 87.4765625,-174.953125 0,-87.4765625"/><g transform="translate(-61.4765625, -11)" style="" class="label"><rect/><foreignObject height="22" width="122.953125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">shouldSend 采样?</span></div></foreignObject></g></g><g transform="translate(4091.48828125, 1402.6796875)" data-id="Y1" data-node="true" id="flowchart-Y1-57" class="node default default flowchart-label"><rect height="37" width="79" y="-18.5" x="-39.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-32, -11)" style="" class="label"><rect/><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">采样丢弃</span></div></foreignObject></g></g><g transform="translate(4601.5859375, 1402.6796875)" data-id="Z" data-node="true" id="flowchart-Z-59" class="node default default flowchart-label"><rect height="37" width="116.765625" y="-18.5" x="-58.3828125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-50.8828125, -11)" style="" class="label"><rect/><foreignObject height="22" width="101.765625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">构建 LogEvent</span></div></foreignObject></g></g><g transform="translate(4601.5859375, 1669.3203125)" data-id="AA" data-node="true" id="flowchart-AA-61" class="node default default flowchart-label"><polygon style="" transform="translate(-60.9375,60.9375)" class="label-container" points="60.9375,0 121.875,-60.9375 60.9375,-121.875 0,-60.9375"/><g transform="translate(-34.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="69.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用批量?</span></div></foreignObject></g></g><g transform="translate(4955.84375, 1958.203125)" data-id="AB" data-node="true" id="flowchart-AB-63" class="node default default flowchart-label"><rect height="37" width="113.140625" y="-18.5" x="-56.5703125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-49.0703125, -11)" style="" class="label"><rect/><foreignObject height="22" width="98.140625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">enqueue 入队</span></div></foreignObject></g></g><g transform="translate(4955.84375, 2268.453125)" data-id="AC" data-node="true" id="flowchart-AC-65" class="node default default flowchart-label"><polygon style="" transform="translate(-92.9375,92.9375)" class="label-container" points="92.9375,0 185.875,-92.9375 92.9375,-185.875 0,-92.9375"/><g transform="translate(-66.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="133.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">队列达到批量阈值?</span></div></foreignObject></g></g><g transform="translate(5048.296875, 2476.890625)" data-id="AD" data-node="true" id="flowchart-AD-67" class="node default default flowchart-label"><rect height="37" width="86.421875" y="-18.5" x="-43.2109375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-35.7109375, -11)" style="" class="label"><rect/><foreignObject height="22" width="71.421875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">flush 刷新</span></div></foreignObject></g></g><g transform="translate(4687.5859375, 2476.890625)" data-id="AE" data-node="true" id="flowchart-AE-69" class="node default default flowchart-label"><rect height="37" width="183.390625" y="-18.5" x="-91.6953125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-84.1953125, -11)" style="" class="label"><rect/><foreignObject height="22" width="168.390625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">等待定时器/下一次触发</span></div></foreignObject></g></g><g transform="translate(4184.90625, 2476.890625)" data-id="AF" data-node="true" id="flowchart-AF-71" class="node default default flowchart-label"><rect height="37" width="156.90625" y="-18.5" x="-78.453125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-70.953125, -11)" style="" class="label"><rect/><foreignObject height="22" width="141.90625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">sendEvent 直接发送</span></div></foreignObject></g></g><g transform="translate(2406.23046875, 265.7578125)" data-id="A" data-node="true" id="flowchart-A-0" class="node default default flowchart-label"><rect height="37" width="94.546875" y="-18.5" x="-47.2734375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-39.7734375, -11)" style="" class="label"><rect/><foreignObject height="22" width="79.546875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">初始化 SDK</span></div></foreignObject></g></g><g transform="translate(2406.23046875, 649.453125)" data-id="B" data-node="true" id="flowchart-B-1" class="node default default flowchart-label"><rect height="37" width="293.28125" y="-18.5" x="-146.640625" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-139.140625, -11)" style="" class="label"><rect/><foreignObject height="22" width="278.28125"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">设置选项(批量/重试/gzip/自动采集)</span></div></foreignObject></g></g><g transform="translate(644.43359375, 887.5234375)" data-id="C" data-node="true" id="flowchart-C-3" class="node default default flowchart-label"><polygon style="" transform="translate(-60.9375,60.9375)" class="label-container" points="60.9375,0 121.875,-60.9375 60.9375,-121.875 0,-60.9375"/><g transform="translate(-34.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="69.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用批量?</span></div></foreignObject></g></g><g transform="translate(886.05078125, 1145.1328125)" data-id="E" data-node="true" id="flowchart-E-7" class="node default default flowchart-label"><rect height="37" width="127" y="-18.5" x="-63.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-56, -11)" style="" class="label"><rect/><foreignObject height="22" width="112"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">跳过队列管理器</span></div></foreignObject></g></g><g transform="translate(1197.515625, 887.5234375)" data-id="F" data-node="true" id="flowchart-F-9" class="node default default flowchart-label"><polygon style="" transform="translate(-60.9375,60.9375)" class="label-container" points="60.9375,0 121.875,-60.9375 60.9375,-121.875 0,-60.9375"/><g transform="translate(-34.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="69.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用重试?</span></div></foreignObject></g></g><g transform="translate(1063.05078125, 1145.1328125)" data-id="G" data-node="true" id="flowchart-G-11" class="node default default flowchart-label"><rect height="37" width="127" y="-18.5" x="-63.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-56, -11)" style="" class="label"><rect/><foreignObject height="22" width="112"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">创建重试管理器</span></div></foreignObject></g></g><g transform="translate(1240.05078125, 1145.1328125)" data-id="H" data-node="true" id="flowchart-H-13" class="node default default flowchart-label"><rect height="37" width="127" y="-18.5" x="-63.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-56, -11)" style="" class="label"><rect/><foreignObject height="22" width="112"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">跳过重试管理器</span></div></foreignObject></g></g><g transform="translate(3113.21875, 887.5234375)" data-id="I" data-node="true" id="flowchart-I-15" class="node default default flowchart-label"><rect height="37" width="127" y="-18.5" x="-63.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-56, -11)" style="" class="label"><rect/><foreignObject height="22" width="112"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">选择传输适配器</span></div></foreignObject></g></g><g transform="translate(3113.21875, 1145.1328125)" data-id="J" data-node="true" id="flowchart-J-17" class="node default default flowchart-label"><polygon style="" transform="translate(-58,58)" class="label-container" points="58,0 116,-58 58,-116 0,-58"/><g transform="translate(-32, -11)" style="" class="label"><rect/><foreignObject height="22" width="64"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">运行环境</span></div></foreignObject></g></g><g transform="translate(3283.1328125, 1402.6796875)" data-id="L" data-node="true" id="flowchart-L-21" class="node default default flowchart-label"><polygon style="" transform="translate(-73.0703125,73.0703125)" class="label-container" points="73.0703125,0 146.140625,-73.0703125 73.0703125,-146.140625 0,-73.0703125"/><g transform="translate(-47.0703125, -11)" style="" class="label"><rect/><foreignObject height="22" width="94.140625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">支持 Beacon?</span></div></foreignObject></g></g><g transform="translate(3593.83203125, 887.5234375)" data-id="O" data-node="true" id="flowchart-O-27" class="node default default flowchart-label"><rect height="37" width="93.265625" y="-18.5" x="-46.6328125" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-39.1328125, -11)" style="" class="label"><rect/><foreignObject height="22" width="78.265625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">生成会话ID</span></div></foreignObject></g></g><g transform="translate(3745.96484375, 887.5234375)" data-id="P" data-node="true" id="flowchart-P-29" class="node default default flowchart-label"><rect height="37" width="111" y="-18.5" x="-55.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-48, -11)" style="" class="label"><rect/><foreignObject height="22" width="96"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">收集环境标签</span></div></foreignObject></g></g><g transform="translate(1486.79296875, 887.5234375)" data-id="Q" data-node="true" id="flowchart-Q-31" class="node default default flowchart-label"><rect height="37" width="78.546875" y="-18.5" x="-39.2734375" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-31.7734375, -11)" style="" class="label"><rect/><foreignObject height="22" width="63.546875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">注册 SDK</span></div></foreignObject></g></g><g transform="translate(1486.79296875, 1145.1328125)" data-id="R" data-node="true" id="flowchart-R-33" class="node default default flowchart-label"><rect height="37" width="266.484375" y="-18.5" x="-133.2421875" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-125.7421875, -11)" style="" class="label"><rect/><foreignObject height="22" width="251.484375"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">接收初始化数据: 开关/等级/采样率</span></div></foreignObject></g></g><g transform="translate(1185.140625, 1402.6796875)" data-id="S" data-node="true" id="flowchart-S-35" class="node default default flowchart-label"><polygon style="" transform="translate(-60.9375,60.9375)" class="label-container" points="60.9375,0 121.875,-60.9375 60.9375,-121.875 0,-60.9375"/><g transform="translate(-34.9375, -11)" style="" class="label"><rect/><foreignObject height="22" width="69.875"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">启用批量?</span></div></foreignObject></g></g><g transform="translate(2097.1640625, 1669.3203125)" data-id="V" data-node="true" id="flowchart-V-41" class="node default default flowchart-label"><polygon style="" transform="translate(-96.5703125,96.5703125)" class="label-container" points="96.5703125,0 193.140625,-96.5703125 96.5703125,-193.140625 0,-96.5703125"/><g transform="translate(-72.0703125, -9.5)" style="" class="label"><rect/><foreignObject height="19" width="144.140625"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">enableAutoCapture?</span></div></foreignObject></g></g><g transform="translate(2097.1640625, 1958.203125)" data-id="V2" data-node="true" id="flowchart-V2-45" class="node default default flowchart-label"><rect height="37" width="111" y="-18.5" x="-55.5" ry="0" rx="0" style="" class="basic label-container"/><g transform="translate(-48, -11)" style="" class="label"><rect/><foreignObject height="22" width="96"><div style="display: inline-block; white-space: nowrap;" xmlns="http://www.w3.org/1999/xhtml"><span class="nodeLabel">跳过自动采集</span></div></foreignObject></g></g></g></g></g></svg>
@@ -0,0 +1,37 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+
22
+ // src/stack/stacktrace.ts
23
+ import StackTrace from "stacktrace-js";
24
+ function parseStack(error) {
25
+ return __async(this, null, function* () {
26
+ const frames = yield StackTrace.fromError(error);
27
+ return frames.slice(0, 5).map((f) => ({
28
+ file: f.fileName || "",
29
+ line: f.lineNumber || 0,
30
+ column: f.columnNumber || 0,
31
+ function: f.functionName || void 0
32
+ }));
33
+ });
34
+ }
35
+ export {
36
+ parseStack
37
+ };
@@ -0,0 +1,81 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __defProps = Object.defineProperties;
3
+ var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
+ var __spreadValues = (a, b) => {
9
+ for (var prop in b || (b = {}))
10
+ if (__hasOwnProp.call(b, prop))
11
+ __defNormalProp(a, prop, b[prop]);
12
+ if (__getOwnPropSymbols)
13
+ for (var prop of __getOwnPropSymbols(b)) {
14
+ if (__propIsEnum.call(b, prop))
15
+ __defNormalProp(a, prop, b[prop]);
16
+ }
17
+ return a;
18
+ };
19
+ var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
+ var __async = (__this, __arguments, generator) => {
21
+ return new Promise((resolve, reject) => {
22
+ var fulfilled = (value) => {
23
+ try {
24
+ step(generator.next(value));
25
+ } catch (e) {
26
+ reject(e);
27
+ }
28
+ };
29
+ var rejected = (value) => {
30
+ try {
31
+ step(generator.throw(value));
32
+ } catch (e) {
33
+ reject(e);
34
+ }
35
+ };
36
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
37
+ step((generator = generator.apply(__this, __arguments)).next());
38
+ });
39
+ };
40
+
41
+ // src/transport/beaconTransport.ts
42
+ import { gzipCompress } from "../compress/compression";
43
+ import { getReportApi } from "../config";
44
+ import { isBrowser } from "../utils/environment";
45
+ import { logDebug, safeStringify } from "../utils/tools";
46
+ var BeaconTransport = class {
47
+ constructor(opts) {
48
+ /** 传输器名称 */
49
+ this.name = "beacon";
50
+ this.opts = opts;
51
+ }
52
+ // eslint-disable-next-line class-methods-use-this
53
+ isSupported() {
54
+ return isBrowser() && typeof navigator !== "undefined" && navigator.sendBeacon && typeof navigator.sendBeacon === "function";
55
+ }
56
+ send(payload) {
57
+ return __async(this, null, function* () {
58
+ var _a, _b, _c, _d, _e;
59
+ let body = typeof payload === "string" ? payload : safeStringify(payload);
60
+ const endpoint = getReportApi(((_a = this.opts) == null ? void 0 : _a.env) || "develop");
61
+ let contentType = "application/json";
62
+ if (((_b = this.opts) == null ? void 0 : _b.enableGzip) && (!((_c = this.opts) == null ? void 0 : _c.gzipOnlyInBatchMode) || payload.items.length > 0)) {
63
+ const compressedItems = yield gzipCompress(safeStringify(payload.items));
64
+ body = safeStringify(__spreadProps(__spreadValues({}, payload), {
65
+ items: compressedItems
66
+ }));
67
+ contentType = "application/json; charset=utf-8";
68
+ }
69
+ const blob = new Blob([body], { type: contentType });
70
+ const success = navigator.sendBeacon(endpoint, blob);
71
+ logDebug(!!((_d = this.opts) == null ? void 0 : _d.debug), "sendBeacon result", success);
72
+ if (!success) {
73
+ logDebug(!!((_e = this.opts) == null ? void 0 : _e.debug), "sendBeacon failed (queue full or other error)");
74
+ }
75
+ return Promise.resolve();
76
+ });
77
+ }
78
+ };
79
+ export {
80
+ BeaconTransport
81
+ };
@@ -0,0 +1,99 @@
1
+ var __async = (__this, __arguments, generator) => {
2
+ return new Promise((resolve, reject) => {
3
+ var fulfilled = (value) => {
4
+ try {
5
+ step(generator.next(value));
6
+ } catch (e) {
7
+ reject(e);
8
+ }
9
+ };
10
+ var rejected = (value) => {
11
+ try {
12
+ step(generator.throw(value));
13
+ } catch (e) {
14
+ reject(e);
15
+ }
16
+ };
17
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
18
+ step((generator = generator.apply(__this, __arguments)).next());
19
+ });
20
+ };
21
+
22
+ // src/transport/pixelImageTransport.ts
23
+ import { Base64 } from "js-base64";
24
+ import { isBrowser } from "../utils/environment";
25
+ import { logDebug, now, safeStringify } from "../utils/tools";
26
+ import { getPixelBatchApi } from "../config";
27
+ import { gzipCompress } from "../compress/compression";
28
+ var PixelImageTransport = class {
29
+ constructor(opts) {
30
+ /** 传输器名称 */
31
+ this.name = "image";
32
+ this.opts = opts;
33
+ }
34
+ // eslint-disable-next-line class-methods-use-this
35
+ isSupported() {
36
+ return isBrowser() && typeof Image !== "undefined";
37
+ }
38
+ send(payload) {
39
+ return __async(this, null, function* () {
40
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
41
+ const body = safeStringify(payload.items);
42
+ const endpoint = getPixelBatchApi(((_a = this.opts) == null ? void 0 : _a.env) || "develop");
43
+ const param = "items";
44
+ const maxLen = ((_b = this.opts) == null ? void 0 : _b.maxPixelUrlLen) || 8192;
45
+ let compressedBody;
46
+ if (((_c = this.opts) == null ? void 0 : _c.enableGzip) && (!((_d = this.opts) == null ? void 0 : _d.gzipOnlyInBatchMode) || payload.items.length > 0)) {
47
+ const t = now();
48
+ logDebug(!!((_e = this.opts) == null ? void 0 : _e.debug), "PixelImage request gzip compress body: ", body);
49
+ compressedBody = yield gzipCompress(body);
50
+ logDebug(!!((_f = this.opts) == null ? void 0 : _f.debug), "PixelImage request gzip compress cost: ", now() - t);
51
+ logDebug(!!((_g = this.opts) == null ? void 0 : _g.debug), `original body size: ${body.length}, compressed body size: ${compressedBody.length}`);
52
+ logDebug(!!((_h = this.opts) == null ? void 0 : _h.debug), "PixelImage request gzip compress body: ", compressedBody);
53
+ } else {
54
+ compressedBody = Base64.encode(body, false);
55
+ }
56
+ const cacheBuster = `_=${Date.now()}`;
57
+ const qs = `appId=${((_i = this.opts) == null ? void 0 : _i.appId) || ""}&appStage=${((_j = this.opts) == null ? void 0 : _j.logStage) || ""}&${param}=${encodeURIComponent(compressedBody)}&gzip=${((_k = this.opts) == null ? void 0 : _k.enableGzip) ? 1 : 0}&${cacheBuster}`;
58
+ const url = endpoint.includes("?") ? `${endpoint}&${qs}` : `${endpoint}?${qs}`;
59
+ if (url.length > maxLen) {
60
+ logDebug(!!((_l = this.opts) == null ? void 0 : _l.debug), `URL too long (${url.length} > ${maxLen})`);
61
+ }
62
+ return new Promise((resolve, reject) => {
63
+ const img = new Image();
64
+ let timeoutId = null;
65
+ let settled = false;
66
+ timeoutId = setTimeout(() => {
67
+ if (!settled) {
68
+ settled = true;
69
+ img.src = "";
70
+ reject(new Error("Image request timeout after 5000ms"));
71
+ }
72
+ }, 5e3);
73
+ img.onload = () => {
74
+ if (timeoutId)
75
+ clearTimeout(timeoutId);
76
+ if (!settled) {
77
+ settled = true;
78
+ resolve();
79
+ }
80
+ };
81
+ img.onerror = (event, source, lineno, colno, error) => {
82
+ var _a2, _b2;
83
+ logDebug(!!((_a2 = this.opts) == null ? void 0 : _a2.debug), "Image request failed", event, source, lineno, colno, error);
84
+ if (timeoutId)
85
+ clearTimeout(timeoutId);
86
+ if (!settled) {
87
+ settled = true;
88
+ logDebug(!!((_b2 = this.opts) == null ? void 0 : _b2.debug), "Image request failed", event, source, lineno, colno, error);
89
+ resolve();
90
+ }
91
+ };
92
+ img.src = url;
93
+ });
94
+ });
95
+ }
96
+ };
97
+ export {
98
+ PixelImageTransport
99
+ };
File without changes
@@ -0,0 +1,32 @@
1
+ // src/transport/transportAdapter.ts
2
+ import { isWeChatMiniProgram } from "../utils/environment";
3
+ import { BeaconTransport } from "./beaconTransport";
4
+ import { PixelImageTransport } from "./pixelImageTransport";
5
+ import { WechatTransport } from "./wechatTransport";
6
+ var TransportAdapter = class {
7
+ constructor(opts) {
8
+ this.beaconTransport = new BeaconTransport(opts);
9
+ this.pixelImageTransport = new PixelImageTransport(opts);
10
+ this.wechatTransport = new WechatTransport(opts);
11
+ }
12
+ static getInstance(opts) {
13
+ if (!TransportAdapter.instance) {
14
+ TransportAdapter.instance = new TransportAdapter(opts);
15
+ }
16
+ return TransportAdapter.instance;
17
+ }
18
+ getTransporter() {
19
+ if (isWeChatMiniProgram()) {
20
+ return this.wechatTransport;
21
+ }
22
+ const transports = [this.beaconTransport, this.pixelImageTransport];
23
+ const transporter = transports.find((t) => t.isSupported());
24
+ if (!transporter) {
25
+ return this.pixelImageTransport;
26
+ }
27
+ return transporter;
28
+ }
29
+ };
30
+ export {
31
+ TransportAdapter
32
+ };